While looking for a serialization framework, I came across cereal, which looks pretty capable and modern. Adding support for Juce data types doesn’t even require Juce to be changed. Cereal supports class versioning and polymorphic hierarchies. It looks like it is easily maintainable and extensible by template specialisation.
The only point to dislike, at least for me, is the use of ancient XML and JSON libraries (rapidxml, rapidjson) with method arguments like const char* filename
, for example. Cereal itself however is making extensive use of C++11.
A quick and dirty Juce module for cereal that I just fired up compiles fine. Not tested much yet.
Has anyone used cereal before? Is this a path worth going down?