26 #ifndef CASADI_RESOURCE_INTERNAL_HPP
27 #define CASADI_RESOURCE_INTERNAL_HPP
29 #include "resource.hpp"
30 #include "shared_object.hpp"
31 #include "serializing_stream.hpp"
40 class CASADI_EXPORT ResourceInternal :
public SharedObjectInternal {
50 explicit ResourceInternal();
52 virtual const std::string& path()
const = 0;
53 void serialize(SerializingStream& s)
const;
55 virtual void serialize_type(SerializingStream& s)
const;
56 virtual void serialize_body(SerializingStream& s)
const;
58 static ResourceInternal* deserialize(DeserializingStream& s);
59 void change_option(
const std::string& option_name,
60 const GenericType& option_value);
62 explicit ResourceInternal(DeserializingStream& s);
63 std::string serialize_mode_;
66 class CASADI_EXPORT DirResource :
public ResourceInternal {
71 DirResource(
const std::string& path);
72 ~DirResource()
override;
74 const std::string& path()
const override {
return path_;}
79 std::string class_name()
const override {
return "DirResource";}
82 void disp(std::ostream& stream,
bool more)
const override;
84 void serialize_type(SerializingStream& s)
const override;
85 void serialize_body(SerializingStream& s)
const override;
87 static ResourceInternal* deserialize(DeserializingStream& s);
91 explicit DirResource(DeserializingStream& s);
97 class CASADI_EXPORT ZipResource :
public ResourceInternal {
107 ZipResource(
const std::string& path);
108 ~ZipResource()
override;
110 const std::string& path()
const override {
return dir_;}
117 std::string class_name()
const override {
return "ZipResource";}
120 void disp(std::ostream& stream,
bool more)
const override;
125 void serialize_type(SerializingStream& s)
const override;
126 void serialize_body(SerializingStream& s)
const override;
128 static ResourceInternal* deserialize(DeserializingStream& s);
130 std::string lock_file_;
134 explicit ZipResource(DeserializingStream& s);
141 class CASADI_EXPORT ZipMemResource :
public ResourceInternal {
143 ZipMemResource(
const std::istream& src);
144 ~ZipMemResource()
override;
146 const std::string& path()
const override {
return dir_;}
152 std::string class_name()
const override {
return "ZipMemResource";}
155 void disp(std::ostream& stream,
bool more)
const override;
157 void serialize_body(SerializingStream& s)
const override;
159 static ResourceInternal* deserialize(DeserializingStream& s);
161 std::string lock_file_;
163 mutable std::stringstream blob_;
164 #ifdef CASADI_WITH_THREADSAFE_SYMBOLICS
165 mutable std::mutex mutex_blob_;
168 explicit ZipMemResource(DeserializingStream& s);