Class PlannerDataStorage
Defined in File PlannerDataStorage.h
Inheritance Relationships
Base Type
public ompl::base::PlannerDataStorage
(Class PlannerDataStorage)
Class Documentation
-
class PlannerDataStorage : public ompl::base::PlannerDataStorage
Object that handles loading/storing a PlannerData object to/from a binary stream. Serialization of vertices and edges is performed using the Boost archive method serialize. Derived vertex/edge classes are handled, presuming those classes implement the serialize method.
It is assumed that the edges in stored/loaded PlannerData can be cast to PlannerDataEdgeControl in this class. If this is not the case, see ompl::base::PlannerDataStorage.
Remark
Since the serialize method for vertices and edges is templated, it cannot be virtual. To serialize a derived class AND the base class data, a special call can be invoked inside of serialize that instructs the serializer to also serialize the base class. The derived class must also have a GUID exposed to the serializer for proper deserialization at runtime. This is performed with the BOOST_CLASS_EXPORT macro. An example of these items is given below:
#include <boost/serialization/export.hpp> class MyVertexClass : public ompl::base::PlannerDataVertex { // ---SNIP--- template <class Archive> void serialize(Archive & ar, const unsigned int version) { ar & boost::serialization::base_object<ompl::base::PlannerDataVertex>(*this); // ... (The other members of MyVertexClass) } }; BOOST_CLASS_EXPORT(MyVertexClass);
Public Functions
-
PlannerDataStorage() = default
Default constructor.
-
virtual ~PlannerDataStorage() override = default
Destructor.
-
virtual bool load(const char *filename, base::PlannerData &pd) override
Load the PlannerData structure from the given filename.
-
virtual bool load(std::istream &in, base::PlannerData &pd) override
Deserializes the structure from the given stream.
-
virtual bool store(const base::PlannerData &pd, const char *filename) override
Store (serialize) the structure to the given filename. The StateSpace and ControlSpace that was used to store the data must match those inside of the argument PlannerData.
-
virtual bool store(const base::PlannerData &pd, std::ostream &out) override
Load the PlannerData structure from the given stream. The StateSpace and ControlSpace that was used to store the data must match those inside of the argument PlannerData.
Protected Functions
-
inline virtual void loadEdges(base::PlannerData &pd, unsigned int numEdges, boost::archive::binary_iarchive &ia) override
Read numEdges from the binary input ia and store them as PlannerData. It is assumed that the edges can be cast to ompl::control::PlannerDataEdgeControl.
-
inline virtual void storeEdges(const base::PlannerData &pd, boost::archive::binary_oarchive &oa) override
Serialize and store all edges in pd to the binary archive. It is assumed that the edges can be cast to ompl::control::PlannerDataEdgeControl.
-
PlannerDataStorage() = default