19 #ifndef HPP_MANIPULATION_SERIALIZATION_HH 20 # define HPP_MANIPULATION_SERIALIZATION_HH 22 # include <boost/serialization/split_free.hpp> 23 # include <boost/serialization/shared_ptr.hpp> 24 # include <boost/serialization/weak_ptr.hpp> 26 # include <hpp/util/serialization.hh> 27 # include <hpp/pinocchio/serialization.hh> 36 namespace serialization {
37 template<
typename Archive>
40 auto* har = hpp::serialization::cast(&ar);
41 if (!har || !har->contains(name))
42 throw std::runtime_error(
"Cannot deserialize edges with a provided graph with correct name.");
43 return har->template get<manipulation::graph::Graph>(name,
true)->
self();
46 template<
class Archive,
class GraphCompT>
53 if (Archive::is_saving::value) {
54 id = (c ? c->id() : -1);
55 if (c && c->parentGraph()) name = c->parentGraph()->name();
57 ar & BOOST_SERIALIZATION_NVP(
id);
58 ar & BOOST_SERIALIZATION_NVP(name);
59 if (!Archive::is_saving::value) {
61 c = HPP_DYNAMIC_PTR_CAST(GraphCompT, graph->get(
id).lock());
73 namespace serialization {
74 template<
class Archive>
81 if (Archive::is_saving::value) name = g->name();
82 ar & BOOST_SERIALIZATION_NVP(name);
83 if (!Archive::is_saving::value)
87 template<
class Archive>
93 template<
class Archive>
99 template<
class Archive>
100 inline void serialize(Archive & ar, hpp::manipulation::graph::EdgeWkPtr_t& e,
const unsigned int version)
107 template<
class Archive>
108 inline void serialize(Archive & ar, hpp::manipulation::graph::StateWkPtr_t& s,
const unsigned int version)
115 template<
class Archive>
118 load<Archive, hpp::manipulation::Device> (ar, d, version);
119 auto* har = hpp::serialization::cast(&ar);
120 if (d && har && har->contains(d->name()))
121 d = har->template getChildClass<hpp::pinocchio::Device, hpp::manipulation::Device>(d->name(),
true)->
self();
124 template<
class Archive>
125 inline void load (Archive& ar, hpp::manipulation::DeviceWkPtr_t& d,
const unsigned int version)
127 load<Archive, hpp::manipulation::Device> (ar, d, version);
128 auto* har = hpp::serialization::cast(&ar);
131 if (har && har->contains(dd->name()))
132 d = har->template getChildClass<hpp::pinocchio::Device, hpp::manipulation::Device>(dd->name(),
true)->
self();
137 #endif // HPP_MANIPULATION_SERIALIZATION_HH manipulation::graph::GraphPtr_t getGraphFromArchive(Archive &ar, const std::string &name)
Definition: serialization.hh:38
Definition: connected-component.hh:32
Definition: serialization.hh:72
void serializeGraphComponent(Archive &ar, shared_ptr< GraphCompT > &c, const unsigned int version)
Definition: serialization.hh:47
void load(Archive &ar, hpp::manipulation::DeviceWkPtr_t &d, const unsigned int version)
Definition: serialization.hh:125
shared_ptr< Graph > GraphPtr_t
Definition: fwd.hh:35
void serialize(Archive &ar, hpp::manipulation::graph::StateWkPtr_t &s, const unsigned int version)
Definition: serialization.hh:108
Definition: roadmap.hh:35
shared_ptr< State > StatePtr_t
Definition: fwd.hh:36
shared_ptr< Device > DevicePtr_t
Definition: fwd.hh:29
shared_ptr< Edge > EdgePtr_t
Definition: fwd.hh:37
Definition: leaf-connected-comp.hh:116
Definition: roadmap-node.hh:32