Expand the buffers implementation.
Reporter: fundies | Status: open | Last Modified: March 05, 2023, 05:36:16 amThe ENIGMA project uses a hierarchy of objects starting with object_basic
, and
ending with the object the user creates to be used in-game to represent
entities. These objects have (de)serialization routines implemented for them,
with the compiler automatically generating the routines for the auto-generated objects
as well as user-defined ones. As it stands, the serialization framework
supports the builtin types (like int
, bool
, long
, float
) and a few custom
ones (like string
, var
and variant
). However, the method used to implement
support for these is not very clean as it checks at compile time the type of each
argument against an if-else ladder, which is difficult to read and extend.
- The project would make the serialization framework easier to use and extend by
changing the way theserialize
,serialize_into
anddeserialize
functions
work to dispatch to supported types implicitly without the need for an if-else
ladder. This would mean that adding support for types would be as simple as
implementing the three functions for them which would then be picked up by the
system automatically. - The contributor would then implement support for additional data types like
generic routines formap
,vector
and complex numbers. This would enable
more easily serializing ENIGMA's internal state for use in sending state
either across a network or into a file.
Mentors: Greg, Robert
Difficulty: Medium
Expected size: 175h
Skills required: C++ fundamentals (especially familiarity with templates and
template metaprogramming)
@fundies I am interested in it...