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

#include <resource_internal.hpp>

Detailed Description

Definition at line 66 of file resource_internal.hpp.

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

Public Types

using weak_ref_type = WeakRefInternal
 

Public Member Functions

 DirResource (const std::string &path)
 Initialize with a path. More...
 
 ~DirResource () override
 
const std::string & path () const override
 Get path for a consumer. More...
 
std::string class_name () const override
 Get type name. More...
 
void disp (std::ostream &stream, bool more) const override
 Print description. More...
 
void serialize_type (SerializingStream &s) const override
 
void serialize_body (SerializingStream &s) const override
 
void serialize (SerializingStream &s) const
 
void change_option (const std::string &option_name, const GenericType &option_value)
 
casadi_int getCount () const
 Get the reference count. More...
 
std::string debug_repr (const SharedObjectInternal *) const
 
GenericWeakRef< SharedObject, SharedObjectInternal > * weak ()
 Get a weak reference to the object. More...
 

Static Public Member Functions

static ResourceInternaldeserialize (DeserializingStream &s)
 

Protected Member Functions

 DirResource (DeserializingStream &s)
 
void initSingleton ()
 
void destroySingleton ()
 
shared_from_this ()
 Get a shared object from the current internal object. More...
 
const B shared_from_this () const
 Get a shared object from the current internal object. More...
 

Protected Attributes

std::string serialize_mode_
 

Member Typedef Documentation

◆ weak_ref_type

Definition at line 152 of file shared_object.hpp.

Constructor & Destructor Documentation

◆ DirResource() [1/2]

casadi::DirResource::DirResource ( const std::string &  path)

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

Definition at line 40 of file resource_internal.cpp.

41  : ResourceInternal(),
42  path_(path) {
43  path_ = path;
44 }
const std::string & path() const override
Get path for a consumer.
ResourceInternal()
Initialize with a path.

References path().

Referenced by deserialize().

◆ ~DirResource()

casadi::DirResource::~DirResource ( )
override

Definition at line 50 of file resource_internal.cpp.

50  {
51 }

◆ DirResource() [2/2]

casadi::DirResource::DirResource ( DeserializingStream s)
explicitprotected

Definition at line 209 of file resource_internal.cpp.

209  : ResourceInternal(s) {
210  s.version("DirResource", 1);
211  s.unpack("DirResource::path", path_);
212 }

References casadi::DeserializingStream::unpack(), and casadi::DeserializingStream::version().

Member Function Documentation

◆ change_option()

void casadi::ResourceInternal::change_option ( const std::string &  option_name,
const GenericType option_value 
)
inherited

Definition at line 53 of file resource_internal.cpp.

54  {
55  if (option_name=="serialize_mode") {
56  serialize_mode_ = option_value.to_string();
57  casadi_assert(serialize_mode_=="embed" || serialize_mode_=="link",
58  "Invalid serialization mode: " + serialize_mode_ + ". Pick 'link' or 'embed'.");
59  } else {
60  casadi_error("Option '" + option_name + "' does not exist");
61  }
62 }

References casadi::ResourceInternal::serialize_mode_, and casadi::GenericType::to_string().

◆ class_name()

std::string casadi::DirResource::class_name ( ) const
inlineoverridevirtual

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

Implements casadi::SharedObjectInternal.

Definition at line 79 of file resource_internal.hpp.

79 {return "DirResource";}

Referenced by serialize_type().

◆ debug_repr()

std::string casadi::GenericSharedInternal< SharedObject , SharedObjectInternal >::debug_repr ( const Internal *  i) const
inherited

Definition at line 62 of file generic_shared_internal.hpp.

162  {
163  // Note: i != this because of something something multiple inheritance
164  return str( (casadi_int)(i)) + "/" + static_cast<const Internal*>(this)->class_name();
165  }
std::string str(const T &v)
String representation, any type.

◆ deserialize()

ResourceInternal * casadi::DirResource::deserialize ( DeserializingStream s)
static

Definition at line 189 of file resource_internal.cpp.

189  {
190  DirResource* ret = new DirResource(s);
191  return ret;
192 }
DirResource(const std::string &path)
Initialize with a path.

References DirResource().

Referenced by casadi::ResourceInternal::deserialize().

◆ destroySingleton()

void casadi::GenericSharedInternal< SharedObject , SharedObjectInternal >::destroySingleton ( )
inlineprotectedinherited

Called in the destructor of singletons

Definition at line 77 of file generic_shared_internal.hpp.

77  {
78  static_cast<Internal*>(this)->count--;
79  }

◆ disp()

void casadi::DirResource::disp ( std::ostream &  stream,
bool  more 
) const
overridevirtual

Implements casadi::SharedObjectInternal.

Definition at line 46 of file resource_internal.cpp.

46  {
47  stream << "DirResource(\"" << path_ << "\")";
48 }

◆ getCount()

Definition at line 60 of file generic_shared_internal.hpp.

186  {
187  return static_cast<const Internal*>(this)->count;
188  }

◆ initSingleton()

void casadi::GenericSharedInternal< SharedObject , SharedObjectInternal >::initSingleton ( )
inlineprotectedinherited

Called in the constructor of singletons to avoid that the counter reaches zero

Definition at line 71 of file generic_shared_internal.hpp.

71  {
72  casadi_assert_dev(static_cast<Internal*>(this)->count==0);
73  static_cast<Internal*>(this)->count++;
74  }

◆ path()

const std::string& casadi::DirResource::path ( ) const
inlineoverridevirtual

Implements casadi::ResourceInternal.

Definition at line 74 of file resource_internal.hpp.

74 {return path_;}

Referenced by DirResource().

◆ serialize()

void casadi::ResourceInternal::serialize ( SerializingStream s) const
inherited

Definition at line 145 of file resource_internal.cpp.

145  {
146  s.version("ResourceInternal", 1);
147  serialize_type(s);
148  serialize_body(s);
149 }
virtual void serialize_body(SerializingStream &s) const
virtual void serialize_type(SerializingStream &s) const

References casadi::ResourceInternal::serialize_body(), casadi::ResourceInternal::serialize_type(), and casadi::SerializingStream::version().

◆ serialize_body()

void casadi::DirResource::serialize_body ( SerializingStream s) const
overridevirtual

Reimplemented from casadi::ResourceInternal.

Definition at line 255 of file resource_internal.cpp.

255  {
257  s.version("DirResource", 1);
258  if (serialize_mode_=="embed") {
259  // Decay into ZipMemResource
260  std::stringstream ss;
261  Archiver::getPlugin("libzip").exposed.pack_to_stream(path_, ss);
262  ss.clear();
263  ss.seekg(0, std::ios::beg);
264  s.pack("ZipMemResource::blob", ss);
265  } else {
266  s.pack("DirResource::path", path_);
267  }
268 }
static Plugin & getPlugin(const std::string &pname)
Load and get the creator function.

References casadi::PluginInterface< Archiver >::getPlugin(), casadi::SerializingStream::pack(), casadi::ResourceInternal::serialize_body(), casadi::ResourceInternal::serialize_mode_, and casadi::SerializingStream::version().

◆ serialize_type()

void casadi::DirResource::serialize_type ( SerializingStream s) const
overridevirtual

Reimplemented from casadi::ResourceInternal.

Definition at line 227 of file resource_internal.cpp.

227  {
228  if (serialize_mode_=="embed") {
229  // Decay into ZipMemResource
230  std::string class_name = "ZipMemResource";
231  s.pack("ResourceInternal::type", class_name);
232  } else if (serialize_mode_=="link") {
233  std::string class_name = "DirResource";
234  s.pack("ResourceInternal::type", class_name);
235  } else {
236  casadi_error("Unknown serialization mode: " + serialize_mode_);
237  }
238 }
std::string class_name() const override
Get type name.

References class_name(), casadi::SerializingStream::pack(), and casadi::ResourceInternal::serialize_mode_.

◆ shared_from_this() [1/2]

B casadi::GenericSharedInternal< SharedObject , SharedObjectInternal >::shared_from_this ( )
inlineprotectedinherited

Definition at line 83 of file generic_shared_internal.hpp.

83  {
84  casadi_assert_dev(B::test_cast(static_cast<Internal*>(this)));
85  B ret;
86  ret.own(static_cast<Internal*>(this));
87  return ret;
88  }

◆ shared_from_this() [2/2]

const B casadi::GenericSharedInternal< SharedObject , SharedObjectInternal >::shared_from_this ( ) const
inlineprotectedinherited

Definition at line 92 of file generic_shared_internal.hpp.

92  {
93  casadi_assert_dev(B::test_cast(static_cast<const Internal*>(this)));
94  B ret;
95  ret.own(const_cast<Internal*>(static_cast<const Internal*>(this)));
96  return ret;
97  }

◆ weak()

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

Definition at line 67 of file generic_shared_internal.hpp.

191  {
192  if (weak_ref_==nullptr) {
193  weak_ref_ = new GenericWeakRef<Shared, Internal>(static_cast<Internal*>(this));
194  }
195  return weak_ref_;
196  }

Member Data Documentation

◆ serialize_mode_

std::string casadi::ResourceInternal::serialize_mode_
protectedinherited

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