#include <boost/serialization/base_object.hpp>
#include <boost/serialization/list.hpp>
+#include <boost/serialization/nvp.hpp>
#include <boost/serialization/string.hpp>
#include <boost/serialization/utility.hpp>
#include <boost/serialization/export.hpp>
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive& ar, const unsigned int /*version*/) {
- ar & begin;
- ar & end;
- ar & type;
- ar & name;
+ ar & BOOST_SERIALIZATION_NVP(begin);
+ ar & BOOST_SERIALIZATION_NVP(end);
+ ar & BOOST_SERIALIZATION_NVP(type);
+ ar & BOOST_SERIALIZATION_NVP(name);
}
};
BOOST_CLASS_EXPORT(annot);
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive& ar, const unsigned int /*version*/) {
- ar & boost::serialization::base_object<annot>(*this);
- ar & sequence;
+ ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(annot);
+ ar & BOOST_SERIALIZATION_NVP(sequence);
}
};
BOOST_CLASS_EXPORT(motif);
friend class boost::serialization::access;
template<class Archive>
void serialize(Archive& ar, const unsigned int /*version*/) {
- ar & boost::serialization::base_object<std::string>(*this);
- ar & header;
- ar & species;
- ar & annots;
- ar & motif_list;
+ ar & boost::serialization::make_nvp(
+ "seq_text",
+ boost::serialization::base_object<std::string >(*this)
+ );
+ ar & BOOST_SERIALIZATION_NVP(header);
+ ar & BOOST_SERIALIZATION_NVP(species);
+ ar & BOOST_SERIALIZATION_NVP(annots);
+ ar & BOOST_SERIALIZATION_NVP(motif_list);
}
public:
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
+#include <boost/archive/xml_oarchive.hpp>
+#include <boost/archive/xml_iarchive.hpp>
#include "alg/sequence.hpp"
#include "mussa_exceptions.hpp"
{
std::string seq_string = "AAGGCCTT";
Sequence seq(seq_string);
+ seq.set_species("ribbet");
+ std::ostringstream oss;
+ // allocate/deallocate serialization components
+ {
+ boost::archive::text_oarchive oarchive(oss);
+ const Sequence& const_seq(seq);
+ BOOST_CHECK_EQUAL(seq, const_seq);
+ oarchive << const_seq;
+ }
+
+ Sequence seq_loaded;
+ {
+ std::istringstream iss(oss.str());
+ boost::archive::text_iarchive iarchive(iss);
+ iarchive >> seq_loaded;
+ }
+ BOOST_CHECK_EQUAL(seq_loaded, seq);
+ BOOST_CHECK_EQUAL(seq.get_species(), "ribbet");
+}
+
+BOOST_AUTO_TEST_CASE( serialize_tree )
+{
+ std::string seq_string = "AAGGCCTT";
+ Sequence seq(seq_string);
+ seq.set_species("ribbet");
+ seq.add_motif("AA");
+ seq.add_motif("GC");
+ annot a1(6,7,"t","t");
+ seq.add_annotation(a1);
std::ostringstream oss;
// allocate/deallocate serialization components
boost::archive::text_iarchive iarchive(iss);
iarchive >> seq_loaded;
}
+ BOOST_CHECK_EQUAL(seq_loaded, seq);
+}
+
+BOOST_AUTO_TEST_CASE( serialize_xml_tree )
+{
+ std::string seq_string = "AAGGCCTT";
+ Sequence seq(seq_string);
+ seq.set_species("ribbet");
+ seq.add_motif("AA");
+ seq.add_motif("GC");
+ annot a1(6,7,"t","t");
+ seq.add_annotation(a1);
+
+ std::ostringstream oss;
+ // allocate/deallocate serialization components
+ {
+ boost::archive::xml_oarchive oarchive(oss);
+ const Sequence& const_seq(seq);
+ BOOST_CHECK_EQUAL(seq, const_seq);
+ oarchive << boost::serialization::make_nvp("seq", const_seq);
+ }
+
+ Sequence seq_loaded;
+ {
+ std::istringstream iss(oss.str());
+ boost::archive::xml_iarchive iarchive(iss);
+ iarchive >> boost::serialization::make_nvp("seq", seq_loaded);
+ }
+ BOOST_CHECK_EQUAL(seq_loaded, seq);
}