GSoC Final Evaluation Part1: Implementing (de)serialization routines for generic data types

Reporter: FaresAtef1  |  Status: open  |  Last Modified: September 09, 2023, 12:47:56 am

Final GSoC Part1 Update

Closes #2326.
This pull request contains updates for my Google Summer of Code (GSoC) project at the Final evaluation stage.

First PR (Midterm Evaluation Part): Changing the way the serialize, serialize_into and deserialize functions work
Third PR(Final Evaluation Part2): Adding support for JSON format

Feature Implementation

  • Adding support for std::vector.
  • Adding support for std::map.
  • Adding support for std::complex.
  • Adding support for std::set.
  • Adding support for std::tuple.
  • Adding support for std::queue.
  • Adding support for std::stack.
  • Adding support for std::pair.

Testing Functions (unit tests)

  • Testing std::vector functions.
  • Testing std::map functions.
  • Testing std::complex functions.
  • Testing std::set functions.
  • Testing std::tuple functions.
  • Testing std::queue functions.
  • Testing std::stack functions.
  • Testing std::pair functions.


  • Seperate file for each type.
  • type_traits.h for all the is_std_type.
  • Move insert_back to a better place.
  • Types_Implementation new directory.
  • Clean serialization_fwd_decl.h.

To Be Done Before Merging

  • Update byte_size for std::vector and std::map.
  • Update byte_size for lua_table.
  • Get rid of enigma_internal_sizeof_type and replace with byte_size directly.
  • Replace enable_if<is_same_v<>> with is_type_t.
  • Replace all r-value refs.

Adding new types

See Adding new types for the bytes format section here.

Sample game that is compatible with the AST_Generation branch

Balloon_Pop (It is the same game in the ENIGMA site but with modified scripts).

Ongoing Work

What's Next

GSoC Final Evaluation 2: Adding support for other serialization formats

Please sign in to post comments, or you can view this issue on GitHub.