List of all members | Public Member Functions | Friends
casadi::DeserializingStream 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_ak

Definition at line 73 of file serializing_stream.hpp.

Public Member Functions

 DeserializingStream (std::istream &in_s)
 Constructor. More...
 
 DeserializingStream (const DeserializingStream &)=delete
 
void setup ()
 
void unpack (Sparsity &e)
 Reconstruct an object from the input stream. More...
 
void unpack (MX &e)
 
void unpack (SXElem &e)
 
void unpack (Linsol &e)
 
template<class T >
void unpack (Matrix< T > &e)
 
void unpack (Function &e)
 
void unpack (Importer &e)
 
void unpack (Resource &e)
 
void unpack (Fmu &e)
 
void unpack (GenericType &e)
 
void unpack (std::ostream &s)
 
void unpack (Slice &e)
 
void unpack (int &e)
 
void unpack (bool &e)
 
void unpack (casadi_int &e)
 
void unpack (size_t &e)
 
void unpack (std::string &e)
 
void unpack (double &e)
 
void unpack (char &e)
 
template<class T >
void unpack (std::vector< T > &e)
 
template<class K , class V >
void unpack (std::map< K, V > &e)
 
template<class A , class B >
void unpack (std::pair< A, B > &e)
 
template<class T >
void unpack (const std::string &descr, T &e)
 
void version (const std::string &name, int v)
 
int version (const std::string &name)
 
int version (const std::string &name, int min, int max)
 
void connect (SerializingStream &s)
 
void reset ()
 
template<>
void unpack (std::vector< bool > &e)
 

Friends

class SerializingStream
 

Constructor & Destructor Documentation

◆ DeserializingStream() [1/2]

casadi::DeserializingStream::DeserializingStream ( std::istream &  in_s)

Definition at line 47 of file serializing_stream.cpp.

47  : in(in_s), debug_(false) {
48  casadi_assert(in_s.good(), "Invalid input stream. If you specified an input file, "
49  "make sure it exists relative to the current directory.");
50 
51  if (in_s.peek() != std::char_traits<char>::eof()) {
52  setup();
53  }
54  }

References setup().

◆ DeserializingStream() [2/2]

casadi::DeserializingStream::DeserializingStream ( const DeserializingStream )
delete

Member Function Documentation

◆ connect()

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

Definition at line 446 of file serializing_stream.cpp.

446  {
447  shared_map_ = &s.shared_map_;
448  }

◆ reset()

void casadi::DeserializingStream::reset ( )

Definition at line 454 of file serializing_stream.cpp.

454  {
455  nodes_.clear();
456  }

◆ setup()

void casadi::DeserializingStream::setup ( )

Definition at line 56 of file serializing_stream.cpp.

56  {
57  if (set_up_) return;
58  // Sanity check
59  casadi_int check;
60  unpack(check);
61  casadi_assert(check==serialization_check,
62  "DeserializingStream sanity check failed. "
63  "Expected " + str(serialization_check) + ", but got " + str(check) + ".");
64 
65  // API version check
66  casadi_int v;
67  unpack(v);
68  casadi_assert(v==serialization_protocol_version,
69  "Serialization protocol is not compatible. "
70  "Got version " + str(v) + ", while " +
71  str(serialization_protocol_version) + " was expected.");
72 
73  bool debug;
74  unpack(debug);
75  debug_ = debug;
76  set_up_ = true;
77  }
void unpack(Sparsity &e)
Reconstruct an object from the input stream.
static casadi_int serialization_check
static casadi_int serialization_protocol_version
std::string str(const T &v)
String representation, any type.

References casadi::serialization_check, casadi::serialization_protocol_version, casadi::str(), and unpack().

Referenced by DeserializingStream().

◆ unpack() [1/24]

void casadi::DeserializingStream::unpack ( bool &  e)

Definition at line 183 of file serializing_stream.cpp.

183  {
184  assert_decoration('b');
185  char n;
186  unpack(n);
187  e = n;
188  }

References unpack().

◆ unpack() [2/24]

void casadi::DeserializingStream::unpack ( casadi_int &  e)

Definition at line 117 of file serializing_stream.cpp.

117  {
118  assert_decoration('J');
119  int64_t n;
120  char* c = reinterpret_cast<char*>(&n);
121 
122  for (int j=0;j<8;++j) unpack(c[j]);
123  e = n;
124  }

References unpack().

◆ unpack() [3/24]

void casadi::DeserializingStream::unpack ( char &  e)

Definition at line 195 of file serializing_stream.cpp.

195  {
196  unsigned char ref = 'a';
197  in.get(e);
198  char t;
199  in.get(t);
200  e = (reinterpret_cast<unsigned char&>(e)-ref) +
201  ((reinterpret_cast<unsigned char&>(t)-ref) << 4);
202  }

◆ unpack() [4/24]

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

Definition at line 147 of file serializing_stream.hpp.

147  {
148  if (debug_) {
149  std::string d;
150  unpack(d);
151  casadi_assert(d==descr, "Mismatch: '" + descr + "' expected, got '" + d + "'.");
152  }
153  unpack(e);
154  }

◆ unpack() [5/24]

void casadi::DeserializingStream::unpack ( double &  e)

Definition at line 228 of file serializing_stream.cpp.

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

References unpack().

◆ unpack() [6/24]

void casadi::DeserializingStream::unpack ( Fmu e)

Definition at line 295 of file serializing_stream.cpp.

295  {
296  assert_decoration('F');
297  shared_unpack<Fmu, FmuInternal>(e);
298  }

◆ unpack() [7/24]

void casadi::DeserializingStream::unpack ( Function e)

Definition at line 265 of file serializing_stream.cpp.

265  {
266  assert_decoration('F');
267  shared_unpack<Function, FunctionInternal>(e);
268  }

◆ unpack() [8/24]

void casadi::DeserializingStream::unpack ( GenericType e)

Definition at line 315 of file serializing_stream.cpp.

315  {
316  assert_decoration('G');
317  shared_unpack<GenericType, SharedObjectInternal>(e);
318  }

◆ unpack() [9/24]

void casadi::DeserializingStream::unpack ( Importer e)

Definition at line 275 of file serializing_stream.cpp.

275  {
276  assert_decoration('M');
277  shared_unpack<Importer, ImporterInternal>(e);
278  }

◆ unpack() [10/24]

void casadi::DeserializingStream::unpack ( int &  e)

Definition at line 149 of file serializing_stream.cpp.

149  {
150  assert_decoration('i');
151  int32_t n;
152  char* c = reinterpret_cast<char*>(&n);
153 
154  for (int j=0;j<4;++j) unpack(c[j]);
155  e = n;
156  }

References unpack().

◆ unpack() [11/24]

void casadi::DeserializingStream::unpack ( Linsol e)

Definition at line 305 of file serializing_stream.cpp.

305  {
306  assert_decoration('L');
307  shared_unpack<Linsol, LinsolInternal>(e);
308  }

◆ unpack() [12/24]

template<class T >
void casadi::DeserializingStream::unpack ( Matrix< T > &  e)
inline

Definition at line 94 of file serializing_stream.hpp.

94  {
95  e = Matrix<T>::deserialize(*this);
96  }
static Matrix< Scalar > deserialize(std::istream &stream)
Build Sparsity from serialization.

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

◆ unpack() [13/24]

void casadi::DeserializingStream::unpack ( MX e)

Definition at line 255 of file serializing_stream.cpp.

255  {
256  assert_decoration('X');
257  shared_unpack<MX, MXNode>(e);
258  }

◆ unpack() [14/24]

void casadi::DeserializingStream::unpack ( Resource e)

Definition at line 285 of file serializing_stream.cpp.

285  {
286  assert_decoration('R');
287  shared_unpack<Resource, ResourceInternal>(e);
288  }

◆ unpack() [15/24]

void casadi::DeserializingStream::unpack ( size_t &  e)

Definition at line 140 of file serializing_stream.cpp.

140  {
141  assert_decoration('K');
142  uint64_t n;
143  char* c = reinterpret_cast<char*>(&n);
144 
145  for (int j=0;j<8;++j) unpack(c[j]);
146  e = n;
147  }

References unpack().

◆ unpack() [16/24]

void casadi::DeserializingStream::unpack ( Slice e)

Definition at line 353 of file serializing_stream.cpp.

353  {
354  assert_decoration('S');
355  e = Slice::deserialize(*this);
356  }
static Slice deserialize(DeserializingStream &s)
Deserialize without type information.
Definition: slice.cpp:298

References casadi::Slice::deserialize().

◆ unpack() [17/24]

void casadi::DeserializingStream::unpack ( Sparsity e)

If the reference is not of the same type as the object encoded in the stream. an error will be raised.

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

Definition at line 245 of file serializing_stream.cpp.

245  {
246  assert_decoration('S');
247  shared_unpack<Sparsity, SparsityInternal>(e);
248  }

Referenced by casadi::AlpaqaInterface::AlpaqaInterface(), casadi::Assertion::Assertion(), casadi::BinaryMX< ScX, ScY >::BinaryMX(), casadi::BlazingSplineFunction::BlazingSplineFunction(), casadi::DeserializerBase::blind_unpack_mx(), casadi::DeserializerBase::blind_unpack_mx_v1(), casadi::DeserializerBase::blind_unpack_mx_vector(), casadi::DeserializerBase::blind_unpack_mx_vector_v1(), casadi::DeserializerBase::blind_unpack_sx(), casadi::DeserializerBase::blind_unpack_sx_v1(), casadi::DeserializerBase::blind_unpack_sx_vector(), casadi::DeserializerBase::blind_unpack_sx_vector_v1(), casadi::Blocksqp::Blocksqp(), casadi::BonminInterface::BonminInterface(), casadi::BSpline::BSpline(), casadi::BSplineCommon::BSplineCommon(), casadi::BSplineInterpolant::BSplineInterpolant(), casadi::Call::Call(), casadi::CbcInterface::CbcInterface(), casadi::ClarabelInterface::ClarabelInterface(), casadi::ClpInterface::ClpInterface(), casadi::Collocation::Collocation(), casadi::Conic::Conic(), casadi::ConstantDM::ConstantDM(), casadi::ConstantFile::ConstantFile(), casadi::ConstantPool::ConstantPool(), casadi::ConstantSX_deserialize(), casadi::CplexInterface::CplexInterface(), casadi::CvodesInterface::CvodesInterface(), casadi::DaqpInterface::DaqpInterface(), casadi::XFunction< DerivedType, MatType, NodeType >::delayed_deserialize_members(), casadi::BinaryMX< ScX, ScY >::deserialize(), casadi::BSplineCommon::deserialize(), casadi::CallSX::deserialize(), casadi::ConstantMX::deserialize(), casadi::RuntimeConst< T >::deserialize(), casadi::External::deserialize(), casadi::FmuInternal::deserialize(), casadi::Function::deserialize(), casadi::FunctionInternal::deserialize(), casadi::GenericType::deserialize(), casadi::GenericTypeInternal< ID, T >::deserialize(), casadi::GetNonzeros::deserialize(), casadi::GetNonzerosParam::deserialize(), casadi::ImporterInternal::deserialize(), casadi::Map::deserialize(), casadi::MapSum::deserialize(), casadi::Multiplication::deserialize(), casadi::MXNode::deserialize(), casadi::OutputSX::deserialize(), casadi::PluginInterface< Derived >::deserialize(), casadi::Project::deserialize(), casadi::ResourceInternal::deserialize(), casadi::SetNonzeros< Add >::deserialize(), casadi::SetNonzerosParam< Add >::deserialize(), casadi::Slice::deserialize(), casadi::Solve< Tr >::deserialize(), casadi::LinsolCall< Tr >::deserialize(), casadi::Sparsity::deserialize(), casadi::SXNode::deserialize(), casadi::SymbolicSX::deserialize(), casadi::Transpose::deserialize(), casadi::LinearInterpolant::deserialize(), casadi::BinarySX::deserialize(), casadi::UnarySX::deserialize(), casadi::Convexify::deserialize(), casadi::Conic::deserialize(), casadi::DirResource::DirResource(), casadi::External::External(), casadi::FastNewton::FastNewton(), casadi::FatropInterface::FatropInterface(), casadi::Feasiblesqpmethod::Feasiblesqpmethod(), casadi::FixedStepIntegrator::FixedStepIntegrator(), casadi::Fmu2::Fmu2(), casadi::Fmu3::Fmu3(), casadi::FmuFunction::FmuFunction(), casadi::FmuInternal::FmuInternal(), casadi::FunctionInternal::FunctionInternal(), casadi::GetNonzerosParamSlice::GetNonzerosParamSlice(), casadi::GetNonzerosSlice::GetNonzerosSlice(), casadi::GetNonzerosSlice2::GetNonzerosSlice2(), casadi::GetNonzerosSliceParam::GetNonzerosSliceParam(), casadi::GetNonzerosVector::GetNonzerosVector(), casadi::GurobiInterface::GurobiInterface(), casadi::HighsInterface::HighsInterface(), casadi::HorzRepmat::HorzRepmat(), casadi::HorzRepsum::HorzRepsum(), casadi::IdasInterface::IdasInterface(), casadi::ImporterInternal::ImporterInternal(), casadi::Integrator::Integrator(), casadi::Interpolant::Interpolant(), casadi::IOInstruction::IOInstruction(), casadi::IpoptInterface::IpoptInterface(), casadi::Ipqp::Ipqp(), casadi::KnitroInterface::KnitroInterface(), casadi::LapackLu::LapackLu(), casadi::LapackQr::LapackQr(), casadi::LinearInterpolant::LinearInterpolant(), casadi::LinsolCall< Tr >::LinsolCall(), casadi::LinsolInternal::LinsolInternal(), casadi::LinsolLdl::LinsolLdl(), casadi::LinsolQr::LinsolQr(), casadi::Low::Low(), casadi::MadnlpInterface::MadnlpInterface(), casadi::Map::Map(), casadi::MapSum::MapSum(), casadi::Monitor::Monitor(), casadi::MumpsInterface::MumpsInterface(), casadi::MXFunction::MXFunction(), casadi::MXNode::MXNode(), casadi::Newton::Newton(), casadi::Nlpsol::Nlpsol(), casadi::OoqpInterface::OoqpInterface(), casadi::OracleFunction::OracleFunction(), casadi::OsqpInterface::OsqpInterface(), casadi::OutputNode::OutputNode(), casadi::DeserializerBase::pop_type(), casadi::ProtoFunction::ProtoFunction(), casadi::ProxqpInterface::ProxqpInterface(), casadi::QpoasesInterface::QpoasesInterface(), casadi::QpToNlp::QpToNlp(), casadi::Qrqp::Qrqp(), casadi::ResourceInternal::ResourceInternal(), casadi::Rootfinder::Rootfinder(), casadi::SetNonzerosParamSlice< Add >::SetNonzerosParamSlice(), casadi::SetNonzerosSlice< Add >::SetNonzerosSlice(), casadi::SetNonzerosSlice2< Add >::SetNonzerosSlice2(), casadi::SetNonzerosSliceParam< Add >::SetNonzerosSliceParam(), casadi::SetNonzerosVector< Add >::SetNonzerosVector(), setup(), casadi::SLEQPInterface::SLEQPInterface(), casadi::SnoptInterface::SnoptInterface(), casadi::Split::Split(), casadi::Sqpmethod::Sqpmethod(), casadi::SundialsInterface::SundialsInterface(), casadi::SuperscsInterface::SuperscsInterface(), casadi::Switch::Switch(), casadi::SXFunction::SXFunction(), casadi::SymbolicMX::SymbolicMX(), casadi::SymbolicQr::SymbolicQr(), casadi::UnaryMX::UnaryMX(), unpack(), version(), casadi::WorhpInterface::WorhpInterface(), casadi::XFunction< DerivedType, MatType, NodeType >::XFunction(), casadi::ZipMemResource::ZipMemResource(), and casadi::ZipResource::ZipResource().

◆ unpack() [18/24]

template<class K , class V >
void casadi::DeserializingStream::unpack ( std::map< K, V > &  e)
inline

Definition at line 125 of file serializing_stream.hpp.

125  {
126  assert_decoration('D');
127  casadi_int s;
128  unpack(s);
129  e.clear();
130  for (casadi_int i=0;i<s;++i) {
131  K k;
132  V v;
133  unpack(k);
134  unpack(v);
135  e[k] = v;
136  }
137  }

◆ unpack() [19/24]

void casadi::DeserializingStream::unpack ( std::ostream &  s)

Definition at line 337 of file serializing_stream.cpp.

337  {
338  assert_decoration('B');
339  size_t len;
340  unpack(len);
341  for (size_t i=0;i<len;++i) {
342  char c;
343  unpack(c);
344  s.put(c);
345  }
346  }

References unpack().

◆ unpack() [20/24]

template<class A , class B >
void casadi::DeserializingStream::unpack ( std::pair< A, B > &  e)
inline

Definition at line 140 of file serializing_stream.hpp.

140  {
141  assert_decoration('p');
142  unpack(e.first);
143  unpack(e.second);
144  }

◆ unpack() [21/24]

void casadi::DeserializingStream::unpack ( std::string &  e)

Definition at line 220 of file serializing_stream.cpp.

220  {
221  assert_decoration('s');
222  int s;
223  unpack(s);
224  e.resize(s);
225  for (int j=0;j<s;++j) unpack(e[j]);
226  }

References unpack().

◆ unpack() [22/24]

template<>
CASADI_EXPORT void casadi::DeserializingStream::unpack ( std::vector< bool > &  e)

Definition at line 369 of file serializing_stream.cpp.

369  {
370  assert_decoration('V');
371  casadi_int s;
372  unpack(s);
373  e.resize(s);
374  for (casadi_int i=0;i<s;++i) {
375  bool b;
376  unpack(b);
377  e[i] = b;
378  }
379  }

References unpack().

◆ unpack() [23/24]

template<class T >
void casadi::DeserializingStream::unpack ( std::vector< T > &  e)
inline

Definition at line 116 of file serializing_stream.hpp.

116  {
117  assert_decoration('V');
118  casadi_int s;
119  unpack(s);
120  e.resize(s);
121  for (T& i : e) unpack(i);
122  }

References casadi::T.

◆ unpack() [24/24]

void casadi::DeserializingStream::unpack ( SXElem e)

Definition at line 363 of file serializing_stream.cpp.

363  {
364  assert_decoration('E');
365  shared_unpack<SXElem, SXNode>(e);
366  }

◆ version() [1/3]

int casadi::DeserializingStream::version ( const std::string &  name)

Definition at line 381 of file serializing_stream.cpp.

381  {
382  int load_version;
383  unpack(name+"::serialization::version", load_version);
384  return load_version;
385  }

References unpack().

◆ version() [2/3]

int casadi::DeserializingStream::version ( const std::string &  name,
int  min,
int  max 
)

Definition at line 387 of file serializing_stream.cpp.

387  {
388  int load_version = version(name);
389  casadi_assert(load_version>=min && load_version<=max,
390  "DeSerialization of " + name + " failed. "
391  "Object written in version " + str(load_version) +
392  " but can only read version " + str(min) + "..." + str(max) + ".");
393  return load_version;
394  }
void version(const std::string &name, int v)

References casadi::str(), and version().

◆ version() [3/3]

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

Definition at line 396 of file serializing_stream.cpp.

396  {
397  int load_version = version(name);
398  casadi_assert(load_version==v,
399  "DeSerialization of " + name + " failed. "
400  "Object written in version " + str(load_version) +
401  " but can only read in version " + str(v) + ".");
402  }

References casadi::str().

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

Friends And Related Function Documentation

◆ SerializingStream

friend class SerializingStream
friend

Definition at line 74 of file serializing_stream.hpp.


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