List of all members | Public Types | Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes
casadi::StringSerializer Class Reference

#include <serializer.hpp>

Detailed Description

Definition at line 181 of file serializer.hpp.

Inheritance diagram for casadi::StringSerializer:
Inheritance graph
[legend]
Collaboration diagram for casadi::StringSerializer:
Collaboration graph
[legend]

Public Types

enum  SerializationType {
  SERIALIZED_SPARSITY , SERIALIZED_MX_v1 , SERIALIZED_DM , SERIALIZED_SX_v1 ,
  SERIALIZED_LINSOL , SERIALIZED_FUNCTION , SERIALIZED_GENERICTYPE , SERIALIZED_INT ,
  SERIALIZED_DOUBLE , SERIALIZED_STRING , SERIALIZED_SPARSITY_VECTOR , SERIALIZED_MX_VECTOR_v1 ,
  SERIALIZED_DM_VECTOR , SERIALIZED_SX_VECTOR_v1 , SERIALIZED_LINSOL_VECTOR , SERIALIZED_FUNCTION_VECTOR ,
  SERIALIZED_GENERICTYPE_VECTOR , SERIALIZED_INT_VECTOR , SERIALIZED_DOUBLE_VECTOR , SERIALIZED_STRING_VECTOR ,
  SERIALIZED_MX , SERIALIZED_SX , SERIALIZED_MX_VECTOR , SERIALIZED_SX_VECTOR
}
 

Public Member Functions

 StringSerializer (const Dict &opts=Dict())
 Advanced serialization of CasADi objects. More...
 
 ~StringSerializer ()
 
std::string encode ()
 Returns a string that holds the serialized objects. More...
 
void pack (const Sparsity &e)
 
void pack (const MX &e)
 
void pack (const Matrix< double > &e)
 
void pack (const Matrix< SXElem > &e)
 
void pack (const Linsol &e)
 
void pack (const Function &e)
 
void pack (const GenericType &e)
 
void pack (const casadi_int &e)
 
void pack (const double &e)
 
void pack (const std::string &e)
 
void pack (const std::vector< Sparsity > &e)
 
void pack (const std::vector< MX > &e)
 
void pack (const std::vector< Matrix< double > > &e)
 
void pack (const std::vector< Matrix< SXElem > > &e)
 
void pack (const std::vector< Linsol > &e)
 
void pack (const std::vector< Function > &e)
 
void pack (const std::vector< GenericType > &e)
 
void pack (const std::vector< casadi_int > &e)
 
void pack (const std::vector< double > &e)
 
void pack (const std::vector< std::string > &e)
 
void connect (DeserializerBase &s)
 
void reset ()
 

Static Public Member Functions

static std::string type_to_string (SerializationType type)
 

Protected Member Functions

SerializingStreamserializer ()
 

Protected Attributes

std::unique_ptr< std::ostream > sstream_
 
std::unique_ptr< SerializingStreamserializer_
 

Member Enumeration Documentation

◆ SerializationType

Enumerator
SERIALIZED_SPARSITY 
SERIALIZED_MX_v1 
SERIALIZED_DM 
SERIALIZED_SX_v1 
SERIALIZED_LINSOL 
SERIALIZED_FUNCTION 
SERIALIZED_GENERICTYPE 
SERIALIZED_INT 
SERIALIZED_DOUBLE 
SERIALIZED_STRING 
SERIALIZED_SPARSITY_VECTOR 
SERIALIZED_MX_VECTOR_v1 
SERIALIZED_DM_VECTOR 
SERIALIZED_SX_VECTOR_v1 
SERIALIZED_LINSOL_VECTOR 
SERIALIZED_FUNCTION_VECTOR 
SERIALIZED_GENERICTYPE_VECTOR 
SERIALIZED_INT_VECTOR 
SERIALIZED_DOUBLE_VECTOR 
SERIALIZED_STRING_VECTOR 
SERIALIZED_MX 
SERIALIZED_SX 
SERIALIZED_MX_VECTOR 
SERIALIZED_SX_VECTOR 

Definition at line 78 of file serializer.hpp.

78  {
103  };

Constructor & Destructor Documentation

◆ StringSerializer()

casadi::StringSerializer::StringSerializer ( const Dict opts = Dict())

This class is intended for advanced users that want to circumvent the restrictions of standard pickling/matlab save load, ie no raw SX/MX symbols allowed.

x = SX.sym('x');
s = StringSerializer();
s.pack(x);
s.pack(sin(x));
 
data = s.encode();

s = StringDeserializer(data);
a = s.unpack();
b = s.unpack();

Note: Saving SX/MX objects individually has a substantial overhead (both time and length of encoded string). You are encouraged to use the vector/list variants of 'save' for SX/MX to reduce the overhead.

See also
Function::save, Function::serialize, StringDeserializer, FileSerializer

Extra doc: https://github.com/casadi/casadi/wiki/L_7o

Definition at line 38 of file serializer.cpp.

38  :
39  SerializerBase(std::unique_ptr<std::ostream>(new std::stringstream()), opts) {
40  }
SerializerBase(std::unique_ptr< std::ostream > stream, const Dict &opts=Dict())
Definition: serializer.cpp:49

◆ ~StringSerializer()

casadi::StringSerializer::~StringSerializer ( )

Definition at line 101 of file serializer.cpp.

101 { }

Member Function Documentation

◆ connect()

void casadi::SerializerBase::connect ( DeserializerBase s)
inherited

Definition at line 295 of file serializer.cpp.

295  {
296  serializer_->connect(*s.deserializer_);
297  }
std::unique_ptr< SerializingStream > serializer_
Definition: serializer.hpp:113

References casadi::SerializerBase::connect().

Referenced by casadi::SerializerBase::connect().

◆ encode()

std::string casadi::StringSerializer::encode ( )

As a side effect, this method clears the internal buffer

Extra doc: https://github.com/casadi/casadi/wiki/L_7p

Definition at line 87 of file serializer.cpp.

87  {
88  std::string ret = static_cast<std::stringstream*>(sstream_.get())->str();
89  static_cast<std::stringstream*>(sstream_.get())->str("");
90  sstream_->clear();
91  return ret;
92  }
std::unique_ptr< std::ostream > sstream_
Definition: serializer.hpp:112
std::string str(const T &v)
String representation, any type.

References casadi::SerializerBase::sstream_, and casadi::str().

Referenced by casadi::external_transform().

◆ pack() [1/20]

void casadi::SerializerBase::pack ( const casadi_int &  e)
inherited

◆ pack() [2/20]

void casadi::SerializerBase::pack ( const double &  e)
inherited

◆ pack() [3/20]

void casadi::SerializerBase::pack ( const Function e)
inherited

◆ pack() [4/20]

void casadi::SerializerBase::pack ( const GenericType e)
inherited

◆ pack() [5/20]

void casadi::SerializerBase::pack ( const Linsol e)
inherited

◆ pack() [6/20]

void casadi::SerializerBase::pack ( const Matrix< double > &  e)
inherited

◆ pack() [7/20]

void casadi::SerializerBase::pack ( const Matrix< SXElem > &  e)
inherited

◆ pack() [8/20]

void casadi::SerializerBase::pack ( const MX e)
inherited

Definition at line 141 of file serializer.cpp.

141  {
142  serializer().pack(static_cast<char>(SERIALIZED_MX));
144  serializer().pack(e);
145  }
static std::vector< SX > order(const std::vector< SX > &expr)
Definition: function.cpp:1938
SerializingStream & serializer()
Definition: serializer.cpp:125
void pack(const Sparsity &e)
Serializes an object to the output stream.

References casadi::Function::order(), casadi::SerializingStream::pack(), casadi::SerializerBase::SERIALIZED_MX, and casadi::SerializerBase::serializer().

◆ pack() [9/20]

void casadi::SerializerBase::pack ( const Sparsity e)
inherited

◆ pack() [10/20]

void casadi::SerializerBase::pack ( const std::string &  e)
inherited

◆ pack() [11/20]

void casadi::SerializerBase::pack ( const std::vector< casadi_int > &  e)
inherited

◆ pack() [12/20]

void casadi::SerializerBase::pack ( const std::vector< double > &  e)
inherited

◆ pack() [13/20]

void casadi::SerializerBase::pack ( const std::vector< Function > &  e)
inherited

◆ pack() [14/20]

void casadi::SerializerBase::pack ( const std::vector< GenericType > &  e)
inherited

◆ pack() [15/20]

void casadi::SerializerBase::pack ( const std::vector< Linsol > &  e)
inherited

◆ pack() [16/20]

void casadi::SerializerBase::pack ( const std::vector< Matrix< double > > &  e)
inherited

◆ pack() [17/20]

void casadi::SerializerBase::pack ( const std::vector< Matrix< SXElem > > &  e)
inherited

◆ pack() [18/20]

void casadi::SerializerBase::pack ( const std::vector< MX > &  e)
inherited

◆ pack() [19/20]

void casadi::SerializerBase::pack ( const std::vector< Sparsity > &  e)
inherited

◆ pack() [20/20]

void casadi::SerializerBase::pack ( const std::vector< std::string > &  e)
inherited

◆ reset()

void casadi::SerializerBase::reset ( )
inherited

Definition at line 298 of file serializer.cpp.

298  {
299  serializer_->reset();
300  }

References casadi::SerializerBase::serializer_.

◆ serializer()

SerializingStream & casadi::SerializerBase::serializer ( )
protectedinherited

Definition at line 125 of file serializer.cpp.

125  {
126  return *serializer_;
127  }

References casadi::SerializerBase::serializer_.

Referenced by casadi::SerializerBase::pack().

◆ type_to_string()

std::string casadi::SerializerBase::type_to_string ( SerializationType  type)
staticinherited

Definition at line 54 of file serializer.cpp.

54  {
55  switch (type) {
56  case SERIALIZED_SPARSITY: return "sparsity";
57  case SERIALIZED_MX: return "mx";
58  case SERIALIZED_MX_v1: return "mx_v1";
59  case SERIALIZED_DM: return "dm";
60  case SERIALIZED_SX: return "sx";
61  case SERIALIZED_SX_v1: return "sx_v1";
62  case SERIALIZED_LINSOL: return "linsol";
63  case SERIALIZED_FUNCTION: return "function";
64  case SERIALIZED_GENERICTYPE: return "generictype";
65  case SERIALIZED_INT: return "int";
66  case SERIALIZED_DOUBLE: return "double";
67  case SERIALIZED_STRING: return "string";
68  case SERIALIZED_SPARSITY_VECTOR: return "sparsity_vector";
69  case SERIALIZED_MX_VECTOR: return "mx_vector";
70  case SERIALIZED_MX_VECTOR_v1: return "mx_vector_v1";
71  case SERIALIZED_DM_VECTOR: return "dm_vector";
72  case SERIALIZED_SX_VECTOR: return "sx_vector";
73  case SERIALIZED_SX_VECTOR_v1: return "sx_vector_v1";
74  case SERIALIZED_LINSOL_VECTOR: return "linsol_vector";
75  case SERIALIZED_FUNCTION_VECTOR: return "function_vector";
76  case SERIALIZED_GENERICTYPE_VECTOR: return "generictype_vector";
77  case SERIALIZED_INT_VECTOR: return "int_vector";
78  case SERIALIZED_DOUBLE_VECTOR: return "double_vector";
79  case SERIALIZED_STRING_VECTOR: return "string_vector";
80  default: casadi_error("Unknown type" + str(type));
81  }
82  }

References casadi::SerializerBase::SERIALIZED_DM, casadi::SerializerBase::SERIALIZED_DM_VECTOR, casadi::SerializerBase::SERIALIZED_DOUBLE, casadi::SerializerBase::SERIALIZED_DOUBLE_VECTOR, casadi::SerializerBase::SERIALIZED_FUNCTION, casadi::SerializerBase::SERIALIZED_FUNCTION_VECTOR, casadi::SerializerBase::SERIALIZED_GENERICTYPE, casadi::SerializerBase::SERIALIZED_GENERICTYPE_VECTOR, casadi::SerializerBase::SERIALIZED_INT, casadi::SerializerBase::SERIALIZED_INT_VECTOR, casadi::SerializerBase::SERIALIZED_LINSOL, casadi::SerializerBase::SERIALIZED_LINSOL_VECTOR, casadi::SerializerBase::SERIALIZED_MX, casadi::SerializerBase::SERIALIZED_MX_v1, casadi::SerializerBase::SERIALIZED_MX_VECTOR, casadi::SerializerBase::SERIALIZED_MX_VECTOR_v1, casadi::SerializerBase::SERIALIZED_SPARSITY, casadi::SerializerBase::SERIALIZED_SPARSITY_VECTOR, casadi::SerializerBase::SERIALIZED_STRING, casadi::SerializerBase::SERIALIZED_STRING_VECTOR, casadi::SerializerBase::SERIALIZED_SX, casadi::SerializerBase::SERIALIZED_SX_v1, casadi::SerializerBase::SERIALIZED_SX_VECTOR, casadi::SerializerBase::SERIALIZED_SX_VECTOR_v1, and casadi::str().

Referenced by casadi::DeserializerBase::unpack_mx(), casadi::DeserializerBase::unpack_mx_vector(), casadi::DeserializerBase::unpack_sx(), and casadi::DeserializerBase::unpack_sx_vector().

Member Data Documentation

◆ serializer_

std::unique_ptr<SerializingStream> casadi::SerializerBase::serializer_
protectedinherited

◆ sstream_

std::unique_ptr<std::ostream> casadi::SerializerBase::sstream_
protectedinherited

Definition at line 112 of file serializer.hpp.

Referenced by encode().


The documentation for this class was generated from the following files: