27 #include <boost/serialization/export.hpp> 28 #include <boost/serialization/optional.hpp> 29 #include <boost/serialization/shared_ptr.hpp> 30 #include <boost/serialization/vector.hpp> 31 #include <boost/serialization/map.hpp> 32 #include <boost/serialization/list.hpp> 33 #include <boost/serialization/deque.hpp> 34 #include <boost/serialization/weak_ptr.hpp> 36 #include <boost/archive/text_oarchive.hpp> 37 #include <boost/archive/text_iarchive.hpp> 38 #include <boost/archive/xml_iarchive.hpp> 39 #include <boost/archive/xml_oarchive.hpp> 40 #include <boost/archive/binary_iarchive.hpp> 41 #include <boost/archive/binary_oarchive.hpp> 47 std::string serialize(
const T& input) {
48 std::ostringstream out_archive_stream;
49 boost::archive::text_oarchive out_archive(out_archive_stream);
51 return out_archive_stream.str();
55 void deserialize(
const std::string& serialized, T& output) {
56 std::istringstream in_archive_stream(serialized);
57 boost::archive::text_iarchive in_archive(in_archive_stream);
62 bool serializeToFile(
const T& input,
const std::string& filename) {
63 std::ofstream out_archive_stream(filename.c_str());
64 if (!out_archive_stream.is_open())
66 boost::archive::text_oarchive out_archive(out_archive_stream);
68 out_archive_stream.close();
73 bool deserializeFromFile(
const std::string& filename, T& output) {
74 std::ifstream in_archive_stream(filename.c_str());
75 if (!in_archive_stream.is_open())
77 boost::archive::text_iarchive in_archive(in_archive_stream);
79 in_archive_stream.close();
85 std::string serializeXML(
const T& input,
const std::string& name=
"data") {
86 std::ostringstream out_archive_stream;
87 boost::archive::xml_oarchive out_archive(out_archive_stream);
88 out_archive << boost::serialization::make_nvp(name.c_str(), input);
89 return out_archive_stream.str();
93 void deserializeXML(
const std::string& serialized, T& output,
const std::string& name=
"data") {
94 std::istringstream in_archive_stream(serialized);
95 boost::archive::xml_iarchive in_archive(in_archive_stream);
96 in_archive >> boost::serialization::make_nvp(name.c_str(), output);
100 bool serializeToXMLFile(
const T& input,
const std::string& filename,
const std::string& name=
"data") {
101 std::ofstream out_archive_stream(filename.c_str());
102 if (!out_archive_stream.is_open())
104 boost::archive::xml_oarchive out_archive(out_archive_stream);
105 out_archive << boost::serialization::make_nvp(name.c_str(), input);;
106 out_archive_stream.close();
111 bool deserializeFromXMLFile(
const std::string& filename, T& output,
const std::string& name=
"data") {
112 std::ifstream in_archive_stream(filename.c_str());
113 if (!in_archive_stream.is_open())
115 boost::archive::xml_iarchive in_archive(in_archive_stream);
116 in_archive >> boost::serialization::make_nvp(name.c_str(), output);
117 in_archive_stream.close();
123 std::string serializeBinary(
const T& input,
const std::string& name=
"data") {
124 std::ostringstream out_archive_stream;
125 boost::archive::binary_oarchive out_archive(out_archive_stream);
126 out_archive << boost::serialization::make_nvp(name.c_str(), input);
127 return out_archive_stream.str();
131 void deserializeBinary(
const std::string& serialized, T& output,
const std::string& name=
"data") {
132 std::istringstream in_archive_stream(serialized);
133 boost::archive::binary_iarchive in_archive(in_archive_stream);
134 in_archive >> boost::serialization::make_nvp(name.c_str(), output);
138 bool serializeToBinaryFile(
const T& input,
const std::string& filename,
const std::string& name=
"data") {
139 std::ofstream out_archive_stream(filename.c_str());
140 if (!out_archive_stream.is_open())
142 boost::archive::binary_oarchive out_archive(out_archive_stream);
143 out_archive << boost::serialization::make_nvp(name.c_str(), input);
144 out_archive_stream.close();
149 bool deserializeFromBinaryFile(
const std::string& filename, T& output,
const std::string& name=
"data") {
150 std::ifstream in_archive_stream(filename.c_str());
151 if (!in_archive_stream.is_open())
153 boost::archive::binary_iarchive in_archive(in_archive_stream);
154 in_archive >> boost::serialization::make_nvp(name.c_str(), output);
155 in_archive_stream.close();
Global functions in a separate testing namespace.
Definition: chartTesting.h:28