
I've just finished documenting a small library, available here:
I took (brief) look and have question about feasibility of other idea: - would it be possible to combine format_lite functionality with Boost.Serialization to take advantage of both libs? Imagine solution like: // the formatting info is provided via boost::archive compatible object formatted_text_oarchive arch(a_ostream, default_formatting_settings ....); arch << my_data; class MyObject { template<class Archive> void serialize(Archive& ar, const unsigned) { .... normal serialization code, used when we DO NOT do formatting output } // specialization for debug formatting template<> void serialize<formatted_text_oarchive>(....) { ar << my_vector; // default formatting will apply ar << "some info text..."; ar.increase_indentation(); // use different formatting for next vector punctuate<vector<...>(ar)(....); ar << my_other_vector; } }; The advantages I see: - the whole infrastructure of Boost.Serialization is available and ready and it handles all situations like cycles. format_lite could concentrate on just formatting. - the debugging output can be separated from other serialization types (but doesn't need to be) - formatting directives can be "inherited" from "higher level of data" to "lower levels". Newly added data would not need formatting of its own by default. Change on higher level would propagate itself "down". - indentation for pretty printing could be handled (semi)automatically by formatting archive. - multiple formatting styles could be provided for any class. My experience is that Serialization is quite easy to use and lightweight enough so I do not consider it any disadvantage for practical use. /Pavel