19 #ifndef CEBLBOOSTSERIALIZATION_H
20 #define CEBLBOOSTSERIALIZATION_H
24 #define BOOST_NO_INTRINSIC_INT64_T
26 #include <boost/archive/text_iarchive.hpp>
27 #include <boost/archive/text_oarchive.hpp>
28 #include <boost/serialization/base_object.hpp>
29 #include <boost/serialization/utility.hpp>
31 #include <boost/serialization/vector.hpp>
32 #include <boost/serialization/map.hpp>
33 #include <boost/serialization/string.hpp>
36 #include <boost/numeric/ublas/vector.hpp>
37 #include <boost/numeric/ublas/matrix.hpp>
38 #include <boost/static_assert.hpp>
42 namespace ublas = boost::numeric::ublas;
45 template <>
struct STATIC_ASSERTION_FAILURE<false> {
enum { value = 0 }; };
49 namespace serialization {
51 template<
class Archive,
class T>
52 void save(Archive & ar,
const ublas::matrix<T> & mat,
const unsigned int version)
54 std::vector<std::vector<T> > newmat;
58 for(
unsigned row=0;row < mat.size1(); row++)
60 std::vector<T> row_vec;
61 newmat.push_back(row_vec);
62 for(
unsigned col=0;col < mat.size2(); col++)
64 newmat.at(row).push_back(mat(row,col));
72 template<
class Archive,
class T>
73 void load(Archive & ar, ublas::matrix<T> & mat,
const unsigned int version)
76 std::vector<std::vector<T> > loadedmat;
78 if(loadedmat.size() > 0)
80 int nrows = loadedmat.size();
81 int ncols = loadedmat.at(0).size();
82 mat.resize(nrows,ncols);
83 for(
unsigned row=0; row<mat.size1(); row++)
85 for(
unsigned col=0;col < mat.size2(); col++)
87 mat(row,col) = loadedmat.at(row).at(col);
95 template<
class Archive,
class T>
96 void serialize(Archive & ar, ublas::matrix<T> & mat,
const unsigned int file_version)
98 boost::serialization::split_free(ar, mat, file_version);
102 template<
class Archive,
class T>
103 void save(Archive & ar,
const ublas::vector<T> & vec,
const unsigned int version)
110 template<
class Archive,
class T>
111 void load(Archive & ar, ublas::vector<T> & vec,
const unsigned int version)
113 std::vector<T> newvec;
119 template<
class Archive,
class T>
120 void serialize(Archive & ar, ublas::vector<T> & vec,
const unsigned int file_version)
122 boost::serialization::split_free(ar, vec, file_version);