reflective-rapidjson/TODOs.md

1.8 KiB

  • Test with (multiple) inheritance
  • Test multiple input files
  • Add appropriate error handling for de-serialization
  • Add reflector based on Boost.Hana
  • Add another generator to prove expandability: maybe for getting members by name in general, similar to one of the proposals
  • Add documentation (install instructions, usage)
  • Allow making 3rdparty classes/structs reflectable
    • Add additional parameter for code generator to allow specifying relevant classes explicitly
    • Fix traits currently relying on JsonSerializable being base class
  • Allow exporting symbols
  • Fix the massive number of warnings which are currently being created by the code generator (missing -resource-dir was the problem)
  • Test with libc++ (currently only tested with libstdc++)
  • Support templated classes
  • Allow (de)serialization of static members (if that makes sense?)
  • Allow ignoring particular members or selecting specifically which member variables should be considered
    • This could work similar to Qt's Signals & Slots macros.
    • but there should also be a way to do this for 3rdparty types.
    • Note that currently, all public member variables are (de)serialized.
  • Allow using getter and setter methods
    • Allow to serialize the result of methods.
    • Allow to pass a deserialized value to a method.
  • Validate enum values when deserializing
    • Likely undoable with Boost.Hana
  • Untie serialization and deserialization

Library-only

  • Support std::unique_ptr and std::shared_ptr
  • Support std::map and std::unordered_map
  • Support std::any
  • Support std::optional
  • Support/document customized (de)serialization (eg. serialize some DateTime object to ISO string representation)