Program Listing for File serializable.hpp

Return to documentation for file (include/pinocchio/serialization/serializable.hpp)

//
// Copyright (c) 2017-2021 CNRS INRIA
//

#ifndef __pinocchio_serialization_serializable_hpp__
#define __pinocchio_serialization_serializable_hpp__

#include "pinocchio/serialization/archive.hpp"

namespace pinocchio
{
  namespace serialization
  {

    template<class Derived>
    struct Serializable
    {
    private:
      Derived & derived()
      {
        return *static_cast<Derived *>(this);
      }
      const Derived & derived() const
      {
        return *static_cast<const Derived *>(this);
      }

    public:
      void loadFromText(const std::string & filename)
      {
        pinocchio::serialization::loadFromText(derived(), filename);
      }

      void saveToText(const std::string & filename) const
      {
        pinocchio::serialization::saveToText(derived(), filename);
      }

      void loadFromStringStream(std::istringstream & is)
      {
        pinocchio::serialization::loadFromStringStream(derived(), is);
      }

      void saveToStringStream(std::stringstream & ss) const
      {
        pinocchio::serialization::saveToStringStream(derived(), ss);
      }

      void loadFromString(const std::string & str)
      {
        pinocchio::serialization::loadFromString(derived(), str);
      }

      std::string saveToString() const
      {
        return pinocchio::serialization::saveToString(derived());
      }

      void loadFromXML(const std::string & filename, const std::string & tag_name)
      {
        pinocchio::serialization::loadFromXML(derived(), filename, tag_name);
      }

      void saveToXML(const std::string & filename, const std::string & tag_name) const
      {
        pinocchio::serialization::saveToXML(derived(), filename, tag_name);
      }

      void loadFromBinary(const std::string & filename)
      {
        pinocchio::serialization::loadFromBinary(derived(), filename);
      }

      void saveToBinary(const std::string & filename) const
      {
        pinocchio::serialization::saveToBinary(derived(), filename);
      }

      void loadFromBinary(boost::asio::streambuf & container)
      {
        pinocchio::serialization::loadFromBinary(derived(), container);
      }

      void saveToBinary(boost::asio::streambuf & container) const
      {
        pinocchio::serialization::saveToBinary(derived(), container);
      }

      void loadFromBinary(StaticBuffer & container)
      {
        pinocchio::serialization::loadFromBinary(derived(), container);
      }

      void saveToBinary(StaticBuffer & container) const
      {
        pinocchio::serialization::saveToBinary(derived(), container);
      }
    };

  } // namespace serialization
} // namespace pinocchio

#endif // ifndef __pinocchio_serialization_serializable_hpp__