19 #ifndef HPP_PINOCCHIO_SERIALIZATION_HH
20 # define HPP_PINOCCHIO_SERIALIZATION_HH
22 # include <boost/serialization/split_free.hpp>
23 # include <boost/serialization/shared_ptr.hpp>
24 # include <boost/serialization/weak_ptr.hpp>
29 namespace serialization {
39 BOOST_SERIALIZATION_SPLIT_FREE(hpp::pinocchio::DeviceWkPtr_t)
42 namespace serialization {
43 template<
class Archive>
46 load<Archive, hpp::pinocchio::Device> (ar, d, version);
48 archive_device_wrapper* adw =
dynamic_cast<archive_device_wrapper*
>(&ar);
51 template<
class Archive>
52 inline void load (Archive& ar, hpp::pinocchio::DeviceWkPtr_t& d,
const unsigned int version)
54 load<Archive, hpp::pinocchio::Device> (ar, d, version);
56 archive_device_wrapper* adw =
dynamic_cast<archive_device_wrapper*
>(&ar);
59 template<
class Archive>
62 load<Archive, hpp::pinocchio::HumanoidRobot> (ar, d, version);
64 archive_device_wrapper* adw =
dynamic_cast<archive_device_wrapper*
>(&ar);
65 if (adw) d = boost::dynamic_pointer_cast<hpp::pinocchio::HumanoidRobot>(adw->device);
67 template<
class Archive>
68 inline void load (Archive& ar, hpp::pinocchio::HumanoidRobotWkPtr_t& d,
const unsigned int version)
70 load<Archive, hpp::pinocchio::HumanoidRobot> (ar, d, version);
72 archive_device_wrapper* adw =
dynamic_cast<archive_device_wrapper*
>(&ar);
73 if (adw) d = boost::dynamic_pointer_cast<hpp::pinocchio::HumanoidRobot>(adw->device);
76 template <
class Archive,
typename _Scalar,
int _Rows,
int _Cols,
int _Options,
int _MaxRows,
int _MaxCols>
77 inline void serialize(Archive & ar, Eigen::Array<_Scalar,_Rows,_Cols,_Options,_MaxRows,_MaxCols> & m,
const unsigned int version)
80 Eigen::DenseIndex rows(m.rows()), cols(m.cols());
81 ar & BOOST_SERIALIZATION_NVP(rows);
82 ar & BOOST_SERIALIZATION_NVP(cols);
83 if (!Archive::is_saving::value)
86 ar & make_nvp(
"data",make_array(m.data(), (
size_t)m.size()));
92 #endif // HPP_PINOCCHIO_SERIALIZATION_HH