25#include <boost/serialization/array.hpp>
26#include <boost/serialization/nvp.hpp>
27#include <boost/serialization/split_free.hpp>
30namespace serialization {
48template <
class Archive,
typename Scalar_,
int Rows_,
int Cols_,
int Ops_,
49 int MaxRows_,
int MaxCols_>
52 const Eigen::Matrix<Scalar_, Rows_, Cols_, Ops_, MaxRows_, MaxCols_>& m,
53 const unsigned int ) {
54 const size_t rows = m.rows(), cols = m.cols();
55 ar << BOOST_SERIALIZATION_NVP(rows);
56 ar << BOOST_SERIALIZATION_NVP(cols);
57 ar << make_nvp(
"data", make_array(m.data(), m.size()));
60template <
class Archive,
typename Scalar_,
int Rows_,
int Cols_,
int Ops_,
61 int MaxRows_,
int MaxCols_>
63 Eigen::Matrix<Scalar_, Rows_, Cols_, Ops_, MaxRows_, MaxCols_>& m,
64 const unsigned int ) {
66 ar >> BOOST_SERIALIZATION_NVP(rows);
67 ar >> BOOST_SERIALIZATION_NVP(cols);
69 ar >> make_nvp(
"data", make_array(m.data(), m.size()));
73template <
class Archive,
typename Scalar_,
int Rows_,
int Cols_,
int Ops_,
74 int MaxRows_,
int MaxCols_>
77 Eigen::Matrix<Scalar_, Rows_, Cols_, Ops_, MaxRows_, MaxCols_>& m,
78 const unsigned int version) {
79 split_free(ar, m, version);
83template <
class Archive>
84void serialize(Archive& ar, gtsam::Matrix& m,
const unsigned int version) {
85 split_free(ar, m, version);
typedef and functions to augment Eigen's MatrixXd