4 #ifndef __multicontact_api_python_serialization_archive_hpp__
5 #define __multicontact_api_python_serialization_archive_hpp__
7 #include <boost/archive/text_iarchive.hpp>
8 #include <boost/archive/text_oarchive.hpp>
15 namespace bp = boost::python;
17 template <
typename Derived>
19 static bp::object
getstate(
const Derived& cs) {
20 std::ostringstream os;
21 boost::archive::text_oarchive oa(os);
23 return bp::str(os.str());
26 static void setstate(Derived& cs, bp::object entries) {
27 bp::str s = bp::extract<bp::str>(entries)();
28 std::string st = bp::extract<std::string>(s)();
29 std::istringstream is(st);
30 boost::archive::text_iarchive ia(is);
35 template <
typename Derived>
37 :
public boost::python::def_visitor<SerializableVisitor<Derived> > {
38 template <
class PyClass>
40 cl.def(
"saveAsText", &Derived::saveAsText, bp::args(
"filename"),
41 "Saves *this inside a text file.")
42 .def(
"loadFromText", &Derived::loadFromText, bp::args(
"filename"),
43 "Loads *this from a text file.")
44 .def(
"saveAsXML", &Derived::saveAsXML, bp::args(
"filename",
"tag_name"),
45 "Saves *this inside a XML file.")
46 .def(
"loadFromXML", &Derived::loadFromXML,
47 bp::args(
"filename",
"tag_name"),
"Loads *this from a XML file.")
48 .def(
"saveAsBinary", &Derived::saveAsBinary, bp::args(
"filename"),
49 "Saves *this inside a binary file.")
50 .def(
"loadFromBinary", &Derived::loadFromBinary, bp::args(
"filename"),
51 "Loads *this from a binary file.")
58 #endif // ifndef __multicontact_api_python_serialization_archive_hpp__