Generic Eigen::Matrix serialization for boost
parent
0f0752fd1f
commit
018e6ba68c
|
@ -549,16 +549,32 @@ namespace boost {
|
||||||
namespace serialization {
|
namespace serialization {
|
||||||
|
|
||||||
// split version - sends sizes ahead
|
// split version - sends sizes ahead
|
||||||
template<class Archive>
|
template<class Archive,
|
||||||
void save(Archive & ar, const gtsam::Matrix & m, unsigned int /*version*/) {
|
typename Scalar_,
|
||||||
|
int Rows_,
|
||||||
|
int Cols_,
|
||||||
|
int Ops_,
|
||||||
|
int MaxRows_,
|
||||||
|
int MaxCols_>
|
||||||
|
void save(Archive & ar,
|
||||||
|
const Eigen::Matrix<Scalar_, Rows_, Cols_, Ops_, MaxRows_, MaxCols_> & m,
|
||||||
|
const unsigned int /*version*/) {
|
||||||
const size_t rows = m.rows(), cols = m.cols();
|
const size_t rows = m.rows(), cols = m.cols();
|
||||||
ar << BOOST_SERIALIZATION_NVP(rows);
|
ar << BOOST_SERIALIZATION_NVP(rows);
|
||||||
ar << BOOST_SERIALIZATION_NVP(cols);
|
ar << BOOST_SERIALIZATION_NVP(cols);
|
||||||
ar << make_nvp("data", make_array(m.data(), m.size()));
|
ar << make_nvp("data", make_array(m.data(), m.size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
template<class Archive>
|
template<class Archive,
|
||||||
void load(Archive & ar, gtsam::Matrix & m, unsigned int /*version*/) {
|
typename Scalar_,
|
||||||
|
int Rows_,
|
||||||
|
int Cols_,
|
||||||
|
int Ops_,
|
||||||
|
int MaxRows_,
|
||||||
|
int MaxCols_>
|
||||||
|
void load(Archive & ar,
|
||||||
|
Eigen::Matrix<Scalar_, Rows_, Cols_, Ops_, MaxRows_, MaxCols_> & m,
|
||||||
|
const unsigned int /*version*/) {
|
||||||
size_t rows, cols;
|
size_t rows, cols;
|
||||||
ar >> BOOST_SERIALIZATION_NVP(rows);
|
ar >> BOOST_SERIALIZATION_NVP(rows);
|
||||||
ar >> BOOST_SERIALIZATION_NVP(cols);
|
ar >> BOOST_SERIALIZATION_NVP(cols);
|
||||||
|
@ -566,8 +582,19 @@ namespace boost {
|
||||||
ar >> make_nvp("data", make_array(m.data(), m.size()));
|
ar >> make_nvp("data", make_array(m.data(), m.size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// templated version of BOOST_SERIALIZATION_SPLIT_FREE(Eigen::Matrix);
|
||||||
|
template<class Archive,
|
||||||
|
typename Scalar_,
|
||||||
|
int Rows_,
|
||||||
|
int Cols_,
|
||||||
|
int Ops_,
|
||||||
|
int MaxRows_,
|
||||||
|
int MaxCols_>
|
||||||
|
void serialize(Archive & ar,
|
||||||
|
Eigen::Matrix<Scalar_, Rows_, Cols_, Ops_, MaxRows_, MaxCols_> & m,
|
||||||
|
const unsigned int version) {
|
||||||
|
split_free(ar, m, version);
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace serialization
|
} // namespace serialization
|
||||||
} // namespace boost
|
} // namespace boost
|
||||||
|
|
||||||
BOOST_SERIALIZATION_SPLIT_FREE(gtsam::Matrix);
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue