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 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 
49  casadi_assert(in_s.good(), "Invalid input stream. If you specified an input file, "
50  "make sure it exists relative to the current directory.");
51 
52  // Sanity check
53  casadi_int check;
54  unpack(check);
55  casadi_assert(check==serialization_check,
56  "DeserializingStream sanity check failed. "
57  "Expected " + str(serialization_check) + ", but got " + str(check) + ".");
58 
59  // API version check
60  casadi_int v;
61  unpack(v);
62  casadi_assert(v==serialization_protocol_version,
63  "Serialization protocol is not compatible. "
64  "Got version " + str(v) + ", while " +
65  str(serialization_protocol_version) + " was expected.");
66 
67  bool debug;
68  unpack(debug);
69  debug_ = debug;
70 
71  }
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().

◆ DeserializingStream() [2/2]

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

Member Function Documentation

◆ connect()

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

Definition at line 440 of file serializing_stream.cpp.

440  {
441  shared_map_ = &s.shared_map_;
442  }

◆ reset()

void casadi::DeserializingStream::reset ( )

Definition at line 448 of file serializing_stream.cpp.

448  {
449  nodes_.clear();
450  }

◆ unpack() [1/24]

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

Definition at line 177 of file serializing_stream.cpp.

177  {
178  assert_decoration('b');
179  char n;
180  unpack(n);
181  e = n;
182  }

References unpack().

◆ unpack() [2/24]

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

Definition at line 111 of file serializing_stream.cpp.

111  {
112  assert_decoration('J');
113  int64_t n;
114  char* c = reinterpret_cast<char*>(&n);
115 
116  for (int j=0;j<8;++j) unpack(c[j]);
117  e = n;
118  }

References unpack().

◆ unpack() [3/24]

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

Definition at line 189 of file serializing_stream.cpp.

189  {
190  unsigned char ref = 'a';
191  in.get(e);
192  char t;
193  in.get(t);
194  e = (reinterpret_cast<unsigned char&>(e)-ref) +
195  ((reinterpret_cast<unsigned char&>(t)-ref) << 4);
196  }

◆ unpack() [4/24]

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

Definition at line 145 of file serializing_stream.hpp.

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

◆ unpack() [5/24]

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

Definition at line 222 of file serializing_stream.cpp.

222  {
223  assert_decoration('d');
224  char* c = reinterpret_cast<char*>(&e);
225  for (int j=0;j<8;++j) unpack(c[j]);
226  }

References unpack().

◆ unpack() [6/24]

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

Definition at line 289 of file serializing_stream.cpp.

289  {
290  assert_decoration('F');
291  shared_unpack<Fmu, FmuInternal>(e);
292  }

◆ unpack() [7/24]

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

Definition at line 259 of file serializing_stream.cpp.

259  {
260  assert_decoration('F');
261  shared_unpack<Function, FunctionInternal>(e);
262  }

◆ unpack() [8/24]

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

Definition at line 309 of file serializing_stream.cpp.

309  {
310  assert_decoration('G');
311  shared_unpack<GenericType, SharedObjectInternal>(e);
312  }

◆ unpack() [9/24]

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

Definition at line 269 of file serializing_stream.cpp.

269  {
270  assert_decoration('M');
271  shared_unpack<Importer, ImporterInternal>(e);
272  }

◆ unpack() [10/24]

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

Definition at line 143 of file serializing_stream.cpp.

143  {
144  assert_decoration('i');
145  int32_t n;
146  char* c = reinterpret_cast<char*>(&n);
147 
148  for (int j=0;j<4;++j) unpack(c[j]);
149  e = n;
150  }

References unpack().

◆ unpack() [11/24]

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

Definition at line 299 of file serializing_stream.cpp.

299  {
300  assert_decoration('L');
301  shared_unpack<Linsol, LinsolInternal>(e);
302  }

◆ unpack() [12/24]

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

Definition at line 92 of file serializing_stream.hpp.

92  {
93  e = Matrix<T>::deserialize(*this);
94  }
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 249 of file serializing_stream.cpp.

249  {
250  assert_decoration('X');
251  shared_unpack<MX, MXNode>(e);
252  }

◆ unpack() [14/24]

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

Definition at line 279 of file serializing_stream.cpp.

279  {
280  assert_decoration('R');
281  shared_unpack<Resource, ResourceInternal>(e);
282  }

◆ unpack() [15/24]

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

Definition at line 134 of file serializing_stream.cpp.

134  {
135  assert_decoration('K');
136  uint64_t n;
137  char* c = reinterpret_cast<char*>(&n);
138 
139  for (int j=0;j<8;++j) unpack(c[j]);
140  e = n;
141  }

References unpack().

◆ unpack() [16/24]

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

Definition at line 347 of file serializing_stream.cpp.

347  {
348  assert_decoration('S');
349  e = Slice::deserialize(*this);
350  }
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 239 of file serializing_stream.cpp.

239  {
240  assert_decoration('S');
241  shared_unpack<Sparsity, SparsityInternal>(e);
242  }

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(), DeserializingStream(), casadi::DirResource::DirResource(), casadi::External::External(), casadi::FastNewton::FastNewton(), casadi::FatropInterface::FatropInterface(), casadi::Feasiblesqpmethod::Feasiblesqpmethod(), casadi::FixedStepIntegrator::FixedStepIntegrator(), casadi::Fmu2::Fmu2(), 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(), 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 123 of file serializing_stream.hpp.

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

◆ unpack() [19/24]

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

Definition at line 331 of file serializing_stream.cpp.

331  {
332  assert_decoration('B');
333  size_t len;
334  unpack(len);
335  for (size_t i=0;i<len;++i) {
336  char c;
337  unpack(c);
338  s.put(c);
339  }
340  }

References unpack().

◆ unpack() [20/24]

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

Definition at line 138 of file serializing_stream.hpp.

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

◆ unpack() [21/24]

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

Definition at line 214 of file serializing_stream.cpp.

214  {
215  assert_decoration('s');
216  int s;
217  unpack(s);
218  e.resize(s);
219  for (int j=0;j<s;++j) unpack(e[j]);
220  }

References unpack().

◆ unpack() [22/24]

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

Definition at line 363 of file serializing_stream.cpp.

363  {
364  assert_decoration('V');
365  casadi_int s;
366  unpack(s);
367  e.resize(s);
368  for (casadi_int i=0;i<s;++i) {
369  bool b;
370  unpack(b);
371  e[i] = b;
372  }
373  }

References unpack().

◆ unpack() [23/24]

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

Definition at line 114 of file serializing_stream.hpp.

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

References casadi::T.

◆ unpack() [24/24]

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

Definition at line 357 of file serializing_stream.cpp.

357  {
358  assert_decoration('E');
359  shared_unpack<SXElem, SXNode>(e);
360  }

◆ version() [1/3]

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

Definition at line 375 of file serializing_stream.cpp.

375  {
376  int load_version;
377  unpack(name+"::serialization::version", load_version);
378  return load_version;
379  }

References unpack().

◆ version() [2/3]

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

Definition at line 381 of file serializing_stream.cpp.

381  {
382  int load_version = version(name);
383  casadi_assert(load_version>=min && load_version<=max,
384  "DeSerialization of " + name + " failed. "
385  "Object written in version " + str(load_version) +
386  " but can only read version " + str(min) + "..." + str(max) + ".");
387  return load_version;
388  }
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 390 of file serializing_stream.cpp.

390  {
391  int load_version = version(name);
392  casadi_assert(load_version==v,
393  "DeSerialization of " + name + " failed. "
394  "Object written in version " + str(load_version) +
395  " but can only read in version " + str(v) + ".");
396  }

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::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: