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 215 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 73 of file serializing_stream.cpp.

73  :
74  SerializingStream(out_s, Dict()) {
75  }
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 77 of file serializing_stream.cpp.

77  :
78  out(out_s), debug_(false) {
79  // Sanity check
81  // API version check
83 
84  bool debug = false;
85 
86  // Read options
87  for (auto&& op : opts) {
88  if (op.first=="debug") {
89  debug = op.second;
90  } else {
91  casadi_error("Unknown option: '" + op.first + "'.");
92  }
93  }
94 
95  pack(debug);
96  debug_ = debug;
97  }
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 436 of file serializing_stream.cpp.

436  {
437  nodes_ = &s.nodes_;
438  }

◆ pack() [1/24]

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

Definition at line 184 of file serializing_stream.cpp.

184  {
185  decorate('b');
186  pack(static_cast<char>(e));
187  }

References pack().

◆ pack() [2/24]

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

Definition at line 120 of file serializing_stream.cpp.

120  {
121  decorate('J');
122  int64_t n = e;
123  const char* c = reinterpret_cast<const char*>(&n);
124  for (int j=0;j<8;++j) pack(c[j]);
125  }

References pack().

◆ pack() [3/24]

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

Definition at line 198 of file serializing_stream.cpp.

198  {
199  unsigned char ref = 'a';
200  // Note: outputstreams work neatly with std::hex,
201  // but inputstreams don't
202  out.put(ref + (reinterpret_cast<unsigned char&>(e) % 16));
203  out.put(ref + (reinterpret_cast<unsigned char&>(e) >> 4));
204  }

◆ pack() [4/24]

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

Definition at line 284 of file serializing_stream.cpp.

284  {
285  decorate('F');
286  shared_pack(e);
287  }

◆ pack() [5/24]

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

Definition at line 254 of file serializing_stream.cpp.

254  {
255  decorate('F');
256  shared_pack(e);
257  }

◆ pack() [6/24]

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

Definition at line 304 of file serializing_stream.cpp.

304  {
305  decorate('G');
306  shared_pack(e);
307  }

◆ pack() [7/24]

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

Definition at line 264 of file serializing_stream.cpp.

264  {
265  decorate('M');
266  shared_pack(e);
267  }

◆ pack() [8/24]

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

Definition at line 294 of file serializing_stream.cpp.

294  {
295  decorate('L');
296  shared_pack(e);
297  }

◆ pack() [9/24]

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

Definition at line 231 of file serializing_stream.hpp.

231  {
232  e.serialize(*this);
233  }

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

◆ pack() [10/24]

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

Definition at line 244 of file serializing_stream.cpp.

244  {
245  decorate('X');
246  shared_pack(e);
247  }

◆ pack() [11/24]

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

Definition at line 274 of file serializing_stream.cpp.

274  {
275  decorate('R');
276  shared_pack(e);
277  }

◆ pack() [12/24]

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

Definition at line 342 of file serializing_stream.cpp.

342  {
343  decorate('S');
344  e.serialize(*this);
345  }

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 234 of file serializing_stream.cpp.

234  {
235  decorate('S');
236  shared_pack(e);
237  }

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::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 258 of file serializing_stream.hpp.

258  {
259  decorate('D');
260  pack(static_cast<casadi_int>(e.size()));
261  for (const auto & i : e) {
262  pack(i.first);
263  pack(i.second);
264  }
265  }

◆ pack() [15/24]

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

Definition at line 267 of file serializing_stream.hpp.

267  {
268  decorate('p');
269  pack(e.first);
270  pack(e.second);
271  }

◆ pack() [16/24]

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

Definition at line 273 of file serializing_stream.hpp.

273  {
274  if (debug_) pack(descr);
275  pack(e);
276  }

◆ pack() [17/24]

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

Definition at line 278 of file serializing_stream.hpp.

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

◆ pack() [18/24]

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

Definition at line 206 of file serializing_stream.cpp.

206  {
207  decorate('s');
208  int s = static_cast<int>(e.size());
209  pack(s);
210  const char* c = e.c_str();
211  for (int j = 0; j < s; ++j) pack(c[j]);
212  }

References pack().

◆ pack() [19/24]

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

Definition at line 252 of file serializing_stream.hpp.

252  {
253  decorate('V');
254  pack(static_cast<casadi_int>(e.size()));
255  for (auto&& i : e) pack(i);
256  }

◆ pack() [20/24]

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

Definition at line 352 of file serializing_stream.cpp.

352  {
353  decorate('E');
354  shared_pack(e);
355  }

◆ pack() [21/24]

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

Definition at line 228 of file serializing_stream.cpp.

228  {
229  decorate('d');
230  const char* c = reinterpret_cast<const char*>(&e);
231  for (int j=0;j<8;++j) pack(c[j]);
232  }

References pack().

◆ pack() [22/24]

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

Definition at line 152 of file serializing_stream.cpp.

152  {
153  decorate('i');
154  int32_t n = e;
155  const char* c = reinterpret_cast<const char*>(&n);
156  for (int j=0;j<4;++j) pack(c[j]);
157  }

References pack().

◆ pack() [23/24]

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

Definition at line 127 of file serializing_stream.cpp.

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

References pack().

◆ pack() [24/24]

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

Definition at line 314 of file serializing_stream.cpp.

314  {
315  decorate('B');
316  s.seekg(0, std::ios::end);
317  size_t len = s.tellg();
318  s.seekg(0, std::ios::beg);
319  pack(len);
320  char buffer[1024];
321  for (size_t i=0;i<len;++i) {
322  s.read(buffer, 1024);
323  size_t c = s.gcount();
324  for (size_t j=0;j<c;++j) {
325  pack(buffer[j]);
326  }
327  if (s.rdstate() & std::ifstream::eofbit) break;
328  }
329  }

References pack().

◆ reset()

void casadi::SerializingStream::reset ( )

Definition at line 444 of file serializing_stream.cpp.

444  {
445  shared_map_.clear();
446  }

◆ version()

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

Definition at line 398 of file serializing_stream.cpp.

398  {
399  pack(name+"::serialization::version", v);
400  }

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::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 216 of file serializing_stream.hpp.


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