10 #ifndef HPP_FCL_SERIALIZATION_EIGEN_H
11 #define HPP_FCL_SERIALIZATION_EIGEN_H
13 #include <Eigen/Dense>
15 #include <boost/serialization/split_free.hpp>
16 #include <boost/serialization/vector.hpp>
17 #include <boost/serialization/array.hpp>
22 #if __GNUC__ >= 7 && __cplusplus >= 201703L
23 namespace boost {
namespace serialization {
struct U; } }
24 namespace Eigen {
namespace internal {
25 template<>
struct traits<
boost::serialization::U> {
enum {Flags=0};};
33 namespace serialization
36 #ifndef HPP_FCL_SKIP_EIGEN_BOOST_SERIALIZATION
38 template <
class Archive,
typename Scalar,
int Rows,
int Cols,
int Options,
int MaxRows,
int MaxCols>
39 void save(Archive & ar,
const Eigen::Matrix<Scalar,Rows,Cols,Options,MaxRows,MaxCols> & m,
const unsigned int )
41 Eigen::DenseIndex rows(m.rows()), cols(m.cols());
42 if (Rows == Eigen::Dynamic)
43 ar & BOOST_SERIALIZATION_NVP(rows);
44 if (Cols == Eigen::Dynamic)
45 ar & BOOST_SERIALIZATION_NVP(cols);
46 ar & make_nvp(
"data",make_array(m.data(), (
size_t)m.size()));
49 template <
class Archive,
typename Scalar,
int Rows,
int Cols,
int Options,
int MaxRows,
int MaxCols>
50 void load(Archive & ar, Eigen::Matrix<Scalar,Rows,Cols,Options,MaxRows,MaxCols> & m,
const unsigned int )
52 Eigen::DenseIndex rows = Rows, cols = Cols;
53 if (Rows == Eigen::Dynamic)
54 ar >> BOOST_SERIALIZATION_NVP(rows);
55 if (Cols == Eigen::Dynamic)
56 ar >> BOOST_SERIALIZATION_NVP(cols);
58 ar >> make_nvp(
"data",make_array(m.data(), (
size_t)m.size()));
61 template <
class Archive,
typename Scalar,
int Rows,
int Cols,
int Options,
int MaxRows,
int MaxCols>
62 void serialize(Archive & ar, Eigen::Matrix<Scalar,Rows,Cols,Options,MaxRows,MaxCols> & m,
const unsigned int version)
64 split_free(ar,m,version);
67 template <
class Archive,
typename PlainObjectBase,
int MapOptions,
typename Str
ideType>
68 void save(Archive & ar,
const Eigen::Map<PlainObjectBase,MapOptions,StrideType> & m,
const unsigned int )
70 Eigen::DenseIndex rows(m.rows()), cols(m.cols());
71 if (PlainObjectBase::RowsAtCompileTime == Eigen::Dynamic)
72 ar & BOOST_SERIALIZATION_NVP(rows);
73 if (PlainObjectBase::ColsAtCompileTime == Eigen::Dynamic)
74 ar & BOOST_SERIALIZATION_NVP(cols);
75 ar & make_nvp(
"data",make_array(m.data(), (
size_t)m.size()));
78 template <
class Archive,
typename PlainObjectBase,
int MapOptions,
typename Str
ideType>
79 void load(Archive & ar, Eigen::Map<PlainObjectBase,MapOptions,StrideType> & m,
const unsigned int )
81 Eigen::DenseIndex rows = PlainObjectBase::RowsAtCompileTime, cols = PlainObjectBase::ColsAtCompileTime;
82 if (PlainObjectBase::RowsAtCompileTime == Eigen::Dynamic)
83 ar >> BOOST_SERIALIZATION_NVP(rows);
84 if (PlainObjectBase::ColsAtCompileTime == Eigen::Dynamic)
85 ar >> BOOST_SERIALIZATION_NVP(cols);
87 ar >> make_nvp(
"data",make_array(m.data(), (
size_t)m.size()));
90 template <
class Archive,
typename PlainObjectBase,
int MapOptions,
typename Str
ideType>
91 void serialize(Archive & ar, Eigen::Map<PlainObjectBase,MapOptions,StrideType> & m,
const unsigned int version)
93 split_free(ar,m,version);
void save(Archive &ar, const hpp::fcl::BVSplitter< BV > &splitter_, const unsigned int)
Definition: BV_splitter.h:34
void load(Archive &ar, hpp::fcl::BVSplitter< BV > &splitter_, const unsigned int)
Definition: BV_splitter.h:50
void serialize(Archive &ar, hpp::fcl::AABB &aabb, const unsigned int)
Definition: AABB.h:17