alfC wrote:
Hi, I am serializing a bunch of object that contains boost.units quantities. Boost.Units provides serialization for quantities already. By default, the output file looks ok but I would like to add a class name to the object description.
Current, serializing quantitysi::length q produces:
<q class_id="0" tracking_level="1" version="0" object_id="_0"> <value>5</value> </q>
Which doesn't give any information about the quantity at hand, not even for the human reading it. So, I tried to use BOOST_CLASS_EXPORT_GUID to register a name for the serialized class, but it is ignored. Ideally I would like to have something like this, with a class_name description for example:
<q class_id="0" class_name = "quantity_si_length" tracking_level="1" version="0" object_id="_0"> <value>5</value> </q>
Is something like this possible? Below is the working code:
#include <fstream> #include
#include #include #include using namespace boost::units; BOOST_CLASS_EXPORT_GUID(quantitysi::length, "quantity_si_length") //ignored int main(int argc, char *argv[]) { std::ofstream ofs("filename.xml"); boost::archive::xml_oarchive oa(ofs);
quantitysi::length q = 5.*si::meter;
oa << BOOST_SERIALIZATION_NVP(q);
return 0; }
This is a feature of the xml_?archive implementation. In general, the archive implementations include the minimum information required to re-constitute the original data - and no more. Robert Ramey