@@ -24,7 +24,26 @@ namespace casadi {
24
24
// / Designed to match (part of) the `casadi::Function` API.
25
25
class CASADI_LOADER_EXPORT Function {
26
26
public:
27
+ struct Functions {
28
+ fname_incref::signature_t *incref = nullptr ;
29
+ fname_decref::signature_t *decref = nullptr ;
30
+ fname_n_in::signature_t *n_in = nullptr ;
31
+ fname_n_out::signature_t *n_out = nullptr ;
32
+ fname_name_in::signature_t *name_in = nullptr ;
33
+ fname_name_out::signature_t *name_out = nullptr ;
34
+ fname_sparsity_in::signature_t *sparsity_in = nullptr ;
35
+ fname_sparsity_out::signature_t *sparsity_out = nullptr ;
36
+ fname_alloc_mem::signature_t *alloc_mem = nullptr ;
37
+ fname_init_mem::signature_t *init_mem = nullptr ;
38
+ fname_free_mem::signature_t *free_mem = nullptr ;
39
+ fname_work::signature_t *work = nullptr ;
40
+ fname::signature_t *call = nullptr ;
41
+ };
42
+
43
+ public:
44
+ Function ();
27
45
Function (std::shared_ptr<void > so_handle, const std::string &func_name);
46
+ Function (const Functions &functions);
28
47
Function (const Function &);
29
48
Function (Function &&) noexcept ;
30
49
~Function ();
@@ -80,29 +99,15 @@ class CASADI_LOADER_EXPORT Function {
80
99
81
100
private:
82
101
std::shared_ptr<void > so_handle;
83
- struct Functions {
84
- fname_incref::signature_t *incref = nullptr ;
85
- fname_decref::signature_t *decref = nullptr ;
86
- fname_n_in::signature_t *n_in = nullptr ;
87
- fname_n_out::signature_t *n_out = nullptr ;
88
- fname_name_in::signature_t *name_in = nullptr ;
89
- fname_name_out::signature_t *name_out = nullptr ;
90
- fname_sparsity_in::signature_t *sparsity_in = nullptr ;
91
- fname_sparsity_out::signature_t *sparsity_out = nullptr ;
92
- fname_alloc_mem::signature_t *alloc_mem = nullptr ;
93
- fname_init_mem::signature_t *init_mem = nullptr ;
94
- fname_free_mem::signature_t *free_mem = nullptr ;
95
- fname_work::signature_t *work = nullptr ;
96
- fname::signature_t *call = nullptr ;
97
- } functions;
102
+ Functions functions;
98
103
struct Work {
99
104
std::vector<const casadi_real *> arg;
100
105
std::vector<casadi_real *> res;
101
106
std::vector<casadi_int> iw;
102
107
std::vector<casadi_real> w;
103
108
};
104
109
std::optional<Work> work;
105
- void * mem = nullptr ;
110
+ int mem = 0 ;
106
111
};
107
112
108
113
inline std::pair<casadi_int, casadi_int> Function::Sparsity::size () const {
0 commit comments