30 #ifndef HPP_MANIPULATION_SERIALIZATION_HH
31 #define HPP_MANIPULATION_SERIALIZATION_HH
33 #include <boost/serialization/shared_ptr.hpp>
34 #include <boost/serialization/split_free.hpp>
35 #include <boost/serialization/weak_ptr.hpp>
40 #include <hpp/pinocchio/serialization.hh>
41 #include <hpp/util/serialization.hh>
44 namespace serialization {
45 template <
typename Archive>
47 const std::string& name) {
48 auto* har = hpp::serialization::cast(&ar);
49 if (!har || !har->contains(name))
50 throw std::runtime_error(
51 "Cannot deserialize edges with a provided graph with correct name.");
52 return har->template get<manipulation::graph::Graph>(name,
true)->self();
55 template <
class Archive,
class GraphCompT>
57 const unsigned int version) {
62 if (Archive::is_saving::value) {
63 id = (c ? c->id() : -1);
64 if (c && c->parentGraph()) name = c->parentGraph()->name();
66 ar& BOOST_SERIALIZATION_NVP(
id);
67 ar& BOOST_SERIALIZATION_NVP(name);
68 if (!Archive::is_saving::value) {
70 c = HPP_DYNAMIC_PTR_CAST(GraphCompT, graph->get(
id).lock());
82 namespace serialization {
83 template <
class Archive>
85 const unsigned int version) {
90 if (Archive::is_saving::value) name = g->name();
91 ar& BOOST_SERIALIZATION_NVP(name);
95 template <
class Archive>
97 const unsigned int version) {
101 template <
class Archive>
103 const unsigned int version) {
107 template <
class Archive>
108 inline void serialize(Archive& ar, hpp::manipulation::graph::EdgeWkPtr_t& e,
109 const unsigned int version) {
115 template <
class Archive>
116 inline void serialize(Archive& ar, hpp::manipulation::graph::StateWkPtr_t& s,
117 const unsigned int version) {
123 template <
class Archive>
125 const unsigned int version) {
126 load<Archive, hpp::manipulation::Device>(ar, d, version);
127 auto* har = hpp::serialization::cast(&ar);
128 if (d && har && har->contains(d->name()))
129 d = har->template getChildClass<hpp::pinocchio::Device,
134 template <
class Archive>
135 inline void load(Archive& ar, hpp::manipulation::DeviceWkPtr_t& d,
136 const unsigned int version) {
137 load<Archive, hpp::manipulation::Device>(ar, d, version);
138 auto* har = hpp::serialization::cast(&ar);
141 if (har && har->contains(dd->name()))
142 d = har->template getChildClass<hpp::pinocchio::Device,
Definition: connected-component.hh:44
Definition: roadmap-node.hh:42
Definition: roadmap.hh:47
Definition: leaf-connected-comp.hh:110
void serialize(Archive &ar, hpp::manipulation::graph::StateWkPtr_t &s, const unsigned int version)
Definition: serialization.hh:116
void load(Archive &ar, hpp::manipulation::DeviceWkPtr_t &d, const unsigned int version)
Definition: serialization.hh:135
Definition: serialization.hh:81
shared_ptr< Edge > EdgePtr_t
Definition: fwd.hh:49
shared_ptr< State > StatePtr_t
Definition: fwd.hh:48
shared_ptr< Graph > GraphPtr_t
Definition: fwd.hh:47
shared_ptr< Device > DevicePtr_t
Definition: fwd.hh:40
manipulation::graph::GraphPtr_t getGraphFromArchive(Archive &ar, const std::string &name)
Definition: serialization.hh:46
void serializeGraphComponent(Archive &ar, shared_ptr< GraphCompT > &c, const unsigned int version)
Definition: serialization.hh:56