26 #ifndef CASADI_SWITCH_HPP
27 #define CASADI_SWITCH_HPP
29 #include "function_internal.hpp"
45 Switch(
const std::string& name,
46 const std::vector<Function>& f,
const Function& f_def);
56 std::string
class_name()
const override {
return "Switch";}
62 size_t get_n_in()
override;
63 size_t get_n_out()
override;
70 Sparsity get_sparsity_in(casadi_int i)
override;
71 Sparsity get_sparsity_out(casadi_int i)
override;
77 void init(
const Dict& opts)
override;
82 int eval(
const double** arg,
double** res, casadi_int* iw,
double* w,
void* mem)
const override;
88 casadi_int* iw,
SXElem* w,
void* mem,
89 bool always_inline,
bool never_inline)
const override;
95 bool has_forward(casadi_int nfwd)
const override {
return true;}
96 Function get_forward(casadi_int nfwd,
const std::string& name,
97 const std::vector<std::string>& inames,
98 const std::vector<std::string>& onames,
99 const Dict& opts)
const override;
107 Function get_reverse(casadi_int nadj,
const std::string& name,
108 const std::vector<std::string>& inames,
109 const std::vector<std::string>& onames,
110 const Dict& opts)
const override;
116 void disp_more(std::ostream& stream)
const override;
134 std::vector<Function>
f_;
153 Dict info()
const override;
156 void find(std::map<FunctionInternal*, Function>& all_fun, casadi_int max_depth)
const override;
Helper class for C code generation.
Helper class for Serialization.
Internal class for Function.
Base class for FunctionInternal and LinsolInternal.
The basic scalar symbolic class of CasADi.
Helper class for Serialization.
bool has_codegen() const override
Is codegen supported?
static ProtoFunction * deserialize(DeserializingStream &s)
Deserialize without type information.
std::string class_name() const override
Get type name.
std::vector< Function > f_
bool has_forward(casadi_int nfwd) const override
Generate a function that calculates nfwd forward derivatives.
bool has_reverse(casadi_int nadj) const override
Generate a function that calculates nadj adjoint derivatives.
std::vector< casadi_int > find(const std::vector< T > &v)
find nonzeros
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.