#include <boost/filesystem/fstream.hpp>
#include <boost/serialization/base_object.hpp>
+#include <boost/serialization/export.hpp>
#include <boost/serialization/list.hpp>
#include <boost/serialization/nvp.hpp>
#include <boost/serialization/string.hpp>
#include <boost/serialization/shared_ptr.hpp>
#include <boost/serialization/utility.hpp>
-#include <boost/serialization/export.hpp>
+#include <boost/serialization/version.hpp>
+#include <boost/serialization/vector.hpp>
#include <boost/shared_ptr.hpp>
-#include <list>
-#include <string>
-#include <vector>
#include <iostream>
// Sequence data class
};
BOOST_CLASS_EXPORT(motif);
+//! the only purpose of this class is that the shared_ptr template
+//! functions need the serialization support to be in-class.
+class seq_string : public std::string
+{
+private:
+ friend class boost::serialization::access;
+ template<class Archive>
+ void serialize(Archive& ar, const unsigned int /*version*/) {
+ //ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(std::string);
+ ar & boost::serialization::make_nvp("bases",
+ boost::serialization::base_object<std::string>(*this)
+ );
+ }
+};
+
//! sequence track for mussa.
class Sequence
{
void load_museq(boost::filesystem::path load_file_path, int seq_num);
private:
- boost::shared_ptr<const std::string> seq;
+ boost::shared_ptr<seq_string> seq;
std::string header;
std::string species;
ar & BOOST_SERIALIZATION_NVP(motif_list);
}
};
-//BOOST_CLASS_EXPORT(Sequence);
+BOOST_CLASS_EXPORT(Sequence);
#endif