26 #ifndef CASADI_BLAZING_SPLINE_IMPL_HPP
27 #define CASADI_BLAZING_SPLINE_IMPL_HPP
29 #include "blazing_spline.hpp"
30 #include "function_internal.hpp"
35 class CASADI_EXPORT BlazingSplineFunction :
public FunctionInternal {
40 BlazingSplineFunction(
41 const std::string& name,
42 const std::vector< std::vector<double> >& knots,
43 casadi_int diff_order);
48 std::string class_name()
const override {
return "BlazingSplineFunction";}
53 ~BlazingSplineFunction()
override;
58 void merge(
const std::vector<MX>& arg,
59 std::vector<MX>& subs_from, std::vector<MX>& subs_to)
const override;
65 static const Options options_;
66 const Options& get_options()
const override {
return options_;}
72 void init(
const Dict& opts)
override;
74 void init_derived_members();
79 bool has_codegen()
const override {
return true;}
84 void codegen_body(CodeGenerator& g)
const override;
90 bool has_jacobian()
const override;
91 Function get_jacobian(
const std::string& name,
92 const std::vector<std::string>& inames,
93 const std::vector<std::string>& onames,
94 const Dict& opts)
const override;
97 casadi_int diff_order_;
98 std::vector< std::vector<double> > knots_;
101 std::vector<casadi_int> knots_offset_;
102 std::vector<double> knots_stacked_;
105 casadi_int nc_, ndc_, nddc_;
111 size_t get_n_in()
override;
112 size_t get_n_out()
override;
118 bool get_diff_in(casadi_int i)
override;
124 Sparsity get_sparsity_in(casadi_int i)
override;
125 Sparsity get_sparsity_out(casadi_int i)
override;
132 std::string get_name_in(casadi_int i)
override;
133 std::string get_name_out(casadi_int i)
override;
139 void serialize_body(SerializingStream &s)
const override;
144 static ProtoFunction* deserialize(DeserializingStream& s);
149 std::string serialize_base_function()
const override {
return "BlazingSplineFunction"; }
155 explicit BlazingSplineFunction(DeserializingStream& s);
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.