List of all members | Public Member Functions | Friends
casadi::SerializingStream Class Reference

Helper class for Serialization. More...

#include <serializing_stream.hpp>

Detailed Description

Author
Joris Gillis
Date
2018

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

Definition at line 219 of file serializing_stream.hpp.

Public Member Functions

 SerializingStream (std::ostream &out)
 Constructor. More...
 
 SerializingStream (std::ostream &out, const Dict &opts)
 
void pack (const Sparsity &e)
 Serializes an object to the output stream. More...
 
void pack (const MX &e)
 
void pack (const SXElem &e)
 
void pack (const Linsol &e)
 
template<class T >
void pack (const Matrix< T > &e)
 
void pack (const Function &e)
 
void pack (const Importer &e)
 
void pack (const Resource &e)
 
void pack (const Fmu &e)
 
void pack (const Slice &e)
 
void pack (const GenericType &e)
 
void pack (std::istream &s)
 
void pack (int e)
 
void pack (bool e)
 
void pack (casadi_int e)
 
void pack (size_t e)
 
void pack (double e)
 
void pack (const std::string &e)
 
void pack (char e)
 
template<class T >
void pack (const std::vector< T > &e)
 
template<class K , class V >
void pack (const std::map< K, V > &e)
 
template<class A , class B >
void pack (const std::pair< A, B > &e)
 
template<class T >
void pack (const std::string &descr, const T &e)
 
template<class T >
void pack (const std::string &descr, T &e)
 
void version (const std::string &name, int v)
 
void connect (DeserializingStream &s)
 
void reset ()
 

Friends

class DeserializingStream
 

Constructor & Destructor Documentation

◆ SerializingStream() [1/2]

casadi::SerializingStream::SerializingStream ( std::ostream &  out)

Definition at line 79 of file serializing_stream.cpp.

79  :
80  SerializingStream(out_s, Dict()) {
81  }
SerializingStream(std::ostream &out)
Constructor.
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.

◆ SerializingStream() [2/2]

casadi::SerializingStream::SerializingStream ( std::ostream &  out,
const Dict opts 
)

Definition at line 83 of file serializing_stream.cpp.

83  :
84  out(out_s), debug_(false) {
85  // Sanity check
87  // API version check
89 
90  bool debug = false;
91 
92  // Read options
93  for (auto&& op : opts) {
94  if (op.first=="debug") {
95  debug = op.second;
96  } else {
97  casadi_error("Unknown option: '" + op.first + "'.");
98  }
99  }
100 
101  pack(debug);
102  debug_ = debug;
103  }
void pack(const Sparsity &e)
Serializes an object to the output stream.
static casadi_int serialization_check
static casadi_int serialization_protocol_version

References pack(), casadi::serialization_check, and casadi::serialization_protocol_version.

Member Function Documentation

◆ connect()

void casadi::SerializingStream::connect ( DeserializingStream s)

Definition at line 442 of file serializing_stream.cpp.

442  {
443  nodes_ = &s.nodes_;
444  }

◆ pack() [1/24]

void casadi::SerializingStream::pack ( bool  e)

Definition at line 190 of file serializing_stream.cpp.

190  {
191  decorate('b');
192  pack(static_cast<char>(e));
193  }

References pack().

◆ pack() [2/24]

void casadi::SerializingStream::pack ( casadi_int  e)

Definition at line 126 of file serializing_stream.cpp.

126  {
127  decorate('J');
128  int64_t n = e;
129  const char* c = reinterpret_cast<const char*>(&n);
130  for (int j=0;j<8;++j) pack(c[j]);
131  }

References pack().

◆ pack() [3/24]

void casadi::SerializingStream::pack ( char  e)

Definition at line 204 of file serializing_stream.cpp.

204  {
205  unsigned char ref = 'a';
206  // Note: outputstreams work neatly with std::hex,
207  // but inputstreams don't
208  out.put(ref + (reinterpret_cast<unsigned char&>(e) % 16));
209  out.put(ref + (reinterpret_cast<unsigned char&>(e) >> 4));
210  }

◆ pack() [4/24]

void casadi::SerializingStream::pack ( const Fmu e)

Definition at line 290 of file serializing_stream.cpp.

290  {
291  decorate('F');
292  shared_pack(e);
293  }

◆ pack() [5/24]

void casadi::SerializingStream::pack ( const Function e)

Definition at line 260 of file serializing_stream.cpp.

260  {
261  decorate('F');
262  shared_pack(e);
263  }

◆ pack() [6/24]

void casadi::SerializingStream::pack ( const GenericType e)

Definition at line 310 of file serializing_stream.cpp.

310  {
311  decorate('G');
312  shared_pack(e);
313  }

◆ pack() [7/24]

void casadi::SerializingStream::pack ( const Importer e)

Definition at line 270 of file serializing_stream.cpp.

270  {
271  decorate('M');
272  shared_pack(e);
273  }

◆ pack() [8/24]

void casadi::SerializingStream::pack ( const Linsol e)

Definition at line 300 of file serializing_stream.cpp.

300  {
301  decorate('L');
302  shared_pack(e);
303  }

◆ pack() [9/24]

template<class T >
void casadi::SerializingStream::pack ( const Matrix< T > &  e)
inline

Definition at line 235 of file serializing_stream.hpp.

235  {
236  e.serialize(*this);
237  }

References casadi::Matrix< Scalar >::serialize().

◆ pack() [10/24]

void casadi::SerializingStream::pack ( const MX e)

Definition at line 250 of file serializing_stream.cpp.

250  {
251  decorate('X');
252  shared_pack(e);
253  }

◆ pack() [11/24]

void casadi::SerializingStream::pack ( const Resource e)

Definition at line 280 of file serializing_stream.cpp.

280  {
281  decorate('R');
282  shared_pack(e);
283  }

◆ pack() [12/24]

void casadi::SerializingStream::pack ( const Slice e)

Definition at line 348 of file serializing_stream.cpp.

348  {
349  decorate('S');
350  e.serialize(*this);
351  }

References casadi::Slice::serialize().

◆ pack() [13/24]

void casadi::SerializingStream::pack ( const Sparsity e)

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

Definition at line 240 of file serializing_stream.cpp.

240  {
241  decorate('S');
242  shared_pack(e);
243  }

Referenced by casadi::XFunction< DerivedType, MatType, NodeType >::delayed_serialize_members(), pack(), casadi::SerializerBase::pack(), casadi::Function::serialize(), casadi::GenericType::serialize(), casadi::Slice::serialize(), casadi::Sparsity::serialize(), casadi::SXNode::serialize(), casadi::GenericTypeInternal< ID, T >::serialize(), casadi::Conic::serialize(), casadi::Convexify::serialize(), casadi::FmuInternal::serialize_body(), casadi::ProtoFunction::serialize_body(), casadi::ImporterInternal::serialize_body(), casadi::MXNode::serialize_body(), casadi::ResourceInternal::serialize_body(), casadi::Assertion::serialize_body(), casadi::BinaryMX< ScX, ScY >::serialize_body(), casadi::BlazingSplineFunction::serialize_body(), casadi::BSplineCommon::serialize_body(), casadi::BSpline::serialize_body(), casadi::Call::serialize_body(), casadi::Low::serialize_body(), casadi::Conic::serialize_body(), casadi::ConstantDM::serialize_body(), casadi::ConstantFile::serialize_body(), casadi::ConstantPool::serialize_body(), casadi::External::serialize_body(), casadi::Fmu2::serialize_body(), casadi::Fmu3::serialize_body(), casadi::FmuFunction::serialize_body(), casadi::FunctionInternal::serialize_body(), casadi::GetNonzerosVector::serialize_body(), casadi::GetNonzerosSlice::serialize_body(), casadi::GetNonzerosSlice2::serialize_body(), casadi::GetNonzerosSliceParam::serialize_body(), casadi::GetNonzerosParamSlice::serialize_body(), casadi::Integrator::serialize_body(), casadi::FixedStepIntegrator::serialize_body(), casadi::Interpolant::serialize_body(), casadi::IOInstruction::serialize_body(), casadi::LinsolInternal::serialize_body(), casadi::Map::serialize_body(), casadi::MapSum::serialize_body(), casadi::Monitor::serialize_body(), casadi::OutputNode::serialize_body(), casadi::MXFunction::serialize_body(), casadi::Nlpsol::serialize_body(), casadi::OracleFunction::serialize_body(), casadi::HorzRepmat::serialize_body(), casadi::HorzRepsum::serialize_body(), casadi::DirResource::serialize_body(), casadi::ZipResource::serialize_body(), casadi::ZipMemResource::serialize_body(), casadi::Rootfinder::serialize_body(), casadi::SetNonzerosVector< Add >::serialize_body(), casadi::SetNonzerosSlice< Add >::serialize_body(), casadi::SetNonzerosSlice2< Add >::serialize_body(), casadi::SetNonzerosParamSlice< Add >::serialize_body(), casadi::SetNonzerosSliceParam< Add >::serialize_body(), casadi::LinsolCall< Tr >::serialize_body(), casadi::Split::serialize_body(), casadi::Switch::serialize_body(), casadi::SXFunction::serialize_body(), casadi::SymbolicMX::serialize_body(), casadi::UnaryMX::serialize_body(), casadi::XFunction< DerivedType, MatType, NodeType >::serialize_body(), casadi::AlpaqaInterface::serialize_body(), casadi::Blocksqp::serialize_body(), casadi::BonminInterface::serialize_body(), casadi::CbcInterface::serialize_body(), casadi::ClarabelInterface::serialize_body(), casadi::ClpInterface::serialize_body(), casadi::CplexInterface::serialize_body(), casadi::DaqpInterface::serialize_body(), casadi::FatropInterface::serialize_body(), casadi::GurobiInterface::serialize_body(), casadi::HighsInterface::serialize_body(), casadi::IpoptInterface::serialize_body(), casadi::KnitroInterface::serialize_body(), casadi::LapackLu::serialize_body(), casadi::LapackQr::serialize_body(), casadi::MadnlpInterface::serialize_body(), casadi::MumpsInterface::serialize_body(), casadi::OoqpInterface::serialize_body(), casadi::OsqpInterface::serialize_body(), casadi::ProxqpInterface::serialize_body(), casadi::QpoasesInterface::serialize_body(), casadi::SLEQPInterface::serialize_body(), casadi::SnoptInterface::serialize_body(), casadi::CvodesInterface::serialize_body(), casadi::IdasInterface::serialize_body(), casadi::SundialsInterface::serialize_body(), casadi::SuperscsInterface::serialize_body(), casadi::WorhpInterface::serialize_body(), casadi::BSplineInterpolant::serialize_body(), casadi::Collocation::serialize_body(), casadi::FastNewton::serialize_body(), casadi::Feasiblesqpmethod::serialize_body(), casadi::Ipqp::serialize_body(), casadi::LinearInterpolant::serialize_body(), casadi::LinsolLdl::serialize_body(), casadi::LinsolQr::serialize_body(), casadi::Newton::serialize_body(), casadi::QpToNlp::serialize_body(), casadi::Qrqp::serialize_body(), casadi::Sqpmethod::serialize_body(), casadi::SymbolicQr::serialize_body(), casadi::BinarySX::serialize_node(), casadi::CallSX::serialize_node(), casadi::RealtypeSX::serialize_node(), casadi::IntegerSX::serialize_node(), casadi::ZeroSX::serialize_node(), casadi::OneSX::serialize_node(), casadi::MinusOneSX::serialize_node(), casadi::InfSX::serialize_node(), casadi::MinusInfSX::serialize_node(), casadi::NanSX::serialize_node(), casadi::OutputSX::serialize_node(), casadi::SymbolicSX::serialize_node(), casadi::UnarySX::serialize_node(), casadi::RuntimeConst< T >::serialize_type(), casadi::FmuInternal::serialize_type(), casadi::ImporterInternal::serialize_type(), casadi::MXNode::serialize_type(), casadi::PluginInterface< Derived >::serialize_type(), casadi::ResourceInternal::serialize_type(), casadi::BinaryMX< ScX, ScY >::serialize_type(), casadi::BSpline::serialize_type(), casadi::BSplineParametric::serialize_type(), casadi::ConstantDM::serialize_type(), casadi::ConstantFile::serialize_type(), casadi::ConstantPool::serialize_type(), casadi::ZeroByZero::serialize_type(), casadi::Constant< Value >::serialize_type(), casadi::GenericExternal::serialize_type(), casadi::FunctionInternal::serialize_type(), casadi::GetNonzerosVector::serialize_type(), casadi::GetNonzerosSlice::serialize_type(), casadi::GetNonzerosSlice2::serialize_type(), casadi::GetNonzerosParamVector::serialize_type(), casadi::GetNonzerosSliceParam::serialize_type(), casadi::GetNonzerosParamSlice::serialize_type(), casadi::GetNonzerosParamParam::serialize_type(), casadi::Map::serialize_type(), casadi::MapSum::serialize_type(), casadi::Multiplication::serialize_type(), casadi::DenseMultiplication::serialize_type(), casadi::Project::serialize_type(), casadi::Densify::serialize_type(), casadi::Sparsify::serialize_type(), casadi::DirResource::serialize_type(), casadi::ZipResource::serialize_type(), casadi::SetNonzerosVector< Add >::serialize_type(), casadi::SetNonzerosSlice< Add >::serialize_type(), casadi::SetNonzerosSlice2< Add >::serialize_type(), casadi::SetNonzerosParamVector< Add >::serialize_type(), casadi::SetNonzerosParamSlice< Add >::serialize_type(), casadi::SetNonzerosSliceParam< Add >::serialize_type(), casadi::SetNonzerosParamParam< Add >::serialize_type(), casadi::Solve< Tr >::serialize_type(), casadi::Transpose::serialize_type(), casadi::DenseTranspose::serialize_type(), casadi::LinearInterpolant::serialize_type(), casadi::LinearInterpolantJac::serialize_type(), SerializingStream(), and version().

◆ pack() [14/24]

template<class K , class V >
void casadi::SerializingStream::pack ( const std::map< K, V > &  e)
inline

Definition at line 262 of file serializing_stream.hpp.

262  {
263  decorate('D');
264  pack(static_cast<casadi_int>(e.size()));
265  for (const auto & i : e) {
266  pack(i.first);
267  pack(i.second);
268  }
269  }

◆ pack() [15/24]

template<class A , class B >
void casadi::SerializingStream::pack ( const std::pair< A, B > &  e)
inline

Definition at line 271 of file serializing_stream.hpp.

271  {
272  decorate('p');
273  pack(e.first);
274  pack(e.second);
275  }

◆ pack() [16/24]

template<class T >
void casadi::SerializingStream::pack ( const std::string &  descr,
const T &  e 
)
inline

Definition at line 277 of file serializing_stream.hpp.

277  {
278  if (debug_) pack(descr);
279  pack(e);
280  }

◆ pack() [17/24]

template<class T >
void casadi::SerializingStream::pack ( const std::string &  descr,
T &  e 
)
inline

Definition at line 282 of file serializing_stream.hpp.

282  {
283  if (debug_) pack(descr);
284  pack(e);
285  }

◆ pack() [18/24]

void casadi::SerializingStream::pack ( const std::string &  e)

Definition at line 212 of file serializing_stream.cpp.

212  {
213  decorate('s');
214  int s = static_cast<int>(e.size());
215  pack(s);
216  const char* c = e.c_str();
217  for (int j = 0; j < s; ++j) pack(c[j]);
218  }

References pack().

◆ pack() [19/24]

template<class T >
void casadi::SerializingStream::pack ( const std::vector< T > &  e)
inline

Definition at line 256 of file serializing_stream.hpp.

256  {
257  decorate('V');
258  pack(static_cast<casadi_int>(e.size()));
259  for (auto&& i : e) pack(i);
260  }

◆ pack() [20/24]

void casadi::SerializingStream::pack ( const SXElem e)

Definition at line 358 of file serializing_stream.cpp.

358  {
359  decorate('E');
360  shared_pack(e);
361  }

◆ pack() [21/24]

void casadi::SerializingStream::pack ( double  e)

Definition at line 234 of file serializing_stream.cpp.

234  {
235  decorate('d');
236  const char* c = reinterpret_cast<const char*>(&e);
237  for (int j=0;j<8;++j) pack(c[j]);
238  }

References pack().

◆ pack() [22/24]

void casadi::SerializingStream::pack ( int  e)

Definition at line 158 of file serializing_stream.cpp.

158  {
159  decorate('i');
160  int32_t n = e;
161  const char* c = reinterpret_cast<const char*>(&n);
162  for (int j=0;j<4;++j) pack(c[j]);
163  }

References pack().

◆ pack() [23/24]

void casadi::SerializingStream::pack ( size_t  e)

Definition at line 133 of file serializing_stream.cpp.

133  {
134  decorate('K');
135  uint64_t n = e;
136  const char* c = reinterpret_cast<const char*>(&n);
137  for (int j=0;j<8;++j) pack(c[j]);
138  }

References pack().

◆ pack() [24/24]

void casadi::SerializingStream::pack ( std::istream &  s)

Definition at line 320 of file serializing_stream.cpp.

320  {
321  decorate('B');
322  s.seekg(0, std::ios::end);
323  size_t len = s.tellg();
324  s.seekg(0, std::ios::beg);
325  pack(len);
326  char buffer[1024];
327  while (true) {
328  s.read(buffer, 1024);
329  size_t c = s.gcount();
330  for (size_t j=0;j<c;++j) {
331  pack(buffer[j]);
332  }
333  if (s.eof()) break;
334  }
335  }

References pack().

◆ reset()

void casadi::SerializingStream::reset ( )

Definition at line 450 of file serializing_stream.cpp.

450  {
451  shared_map_.clear();
452  }

◆ version()

void casadi::SerializingStream::version ( const std::string &  name,
int  v 
)

Definition at line 404 of file serializing_stream.cpp.

404  {
405  pack(name+"::serialization::version", v);
406  }

References pack().

Referenced by casadi::ResourceInternal::serialize(), casadi::Convexify::serialize(), casadi::FmuInternal::serialize_body(), casadi::ProtoFunction::serialize_body(), casadi::ImporterInternal::serialize_body(), casadi::BlazingSplineFunction::serialize_body(), casadi::Conic::serialize_body(), casadi::External::serialize_body(), casadi::Fmu2::serialize_body(), casadi::Fmu3::serialize_body(), casadi::FmuFunction::serialize_body(), casadi::FunctionInternal::serialize_body(), casadi::Integrator::serialize_body(), casadi::FixedStepIntegrator::serialize_body(), casadi::ImplicitFixedStepIntegrator::serialize_body(), casadi::Interpolant::serialize_body(), casadi::MXFunction::serialize_body(), casadi::Nlpsol::serialize_body(), casadi::OracleFunction::serialize_body(), casadi::DirResource::serialize_body(), casadi::ZipResource::serialize_body(), casadi::ZipMemResource::serialize_body(), casadi::Rootfinder::serialize_body(), casadi::Switch::serialize_body(), casadi::SXFunction::serialize_body(), casadi::XFunction< DerivedType, MatType, NodeType >::serialize_body(), casadi::AlpaqaInterface::serialize_body(), casadi::Blocksqp::serialize_body(), casadi::BonminInterface::serialize_body(), casadi::CbcInterface::serialize_body(), casadi::ClarabelInterface::serialize_body(), casadi::ClpInterface::serialize_body(), casadi::CplexInterface::serialize_body(), casadi::DaqpInterface::serialize_body(), casadi::FatropConicInterface::serialize_body(), casadi::FatropInterface::serialize_body(), casadi::GurobiInterface::serialize_body(), casadi::HighsInterface::serialize_body(), casadi::HpipmInterface::serialize_body(), casadi::IpoptInterface::serialize_body(), casadi::KnitroInterface::serialize_body(), casadi::LapackLu::serialize_body(), casadi::MadnlpInterface::serialize_body(), casadi::MumpsInterface::serialize_body(), casadi::OoqpInterface::serialize_body(), casadi::OsqpInterface::serialize_body(), casadi::ProxqpInterface::serialize_body(), casadi::QpoasesInterface::serialize_body(), casadi::SLEQPInterface::serialize_body(), casadi::SnoptInterface::serialize_body(), casadi::CvodesInterface::serialize_body(), casadi::IdasInterface::serialize_body(), casadi::SundialsInterface::serialize_body(), casadi::SuperscsInterface::serialize_body(), casadi::WorhpInterface::serialize_body(), casadi::BSplineInterpolant::serialize_body(), casadi::Collocation::serialize_body(), casadi::FastNewton::serialize_body(), casadi::Feasiblesqpmethod::serialize_body(), casadi::Ipqp::serialize_body(), casadi::LinsolLdl::serialize_body(), casadi::LinsolQr::serialize_body(), casadi::Newton::serialize_body(), casadi::QpToNlp::serialize_body(), casadi::Qrqp::serialize_body(), casadi::RungeKutta::serialize_body(), casadi::Sqpmethod::serialize_body(), casadi::SymbolicQr::serialize_body(), casadi::GenericExternal::serialize_type(), casadi::LinearInterpolant::serialize_type(), and casadi::LinearInterpolantJac::serialize_type().

Friends And Related Function Documentation

◆ DeserializingStream

friend class DeserializingStream
friend

Definition at line 220 of file serializing_stream.hpp.


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