MIRA
Serialization Framework (Implementation Details)


Requirements

  1. Code Portability - Has to work on Linux, Windows, etc.
  2. Data Portability - Serialized data must be readable on different systems. For binary data it should be possible to use Network-Byte-Order etc.
  3. Easy to use - The overhead to add serialization to a class must be small
  4. Light weight - Serialization should not require to inherit a certain class, and if a class must be inherited it should not add any members or other overhead to the classes.
  5. "Deep" serialization of pointers - the framework has to "follow" pointers in order to serialize/deserialize the underlying objects. It must be possible the restore multiple pointers that point to the same single object
  6. Serialization of STL-containers, boost-shared-pointers, etc.
  7. Non-Intrusive: It must be possible to serialize a class without needing to make any changes to the existing code of the class, e.g. classes that are provied by external libraries
  8. Support of versioning, default values, etc
  9. Must be able to read and write in human-readable formats
  10. Should support properties, i.e. changing member values at runtime.