26 #ifndef CASADI_GRAPH_BUILDER_INTERNAL_HPP
27 #define CASADI_GRAPH_BUILDER_INTERNAL_HPP
29 #include "graph_builder.hpp"
30 #include "graph_model_impl.hpp"
31 #include "shared_object.hpp"
42 struct CASADI_EXPORT Node
43 :
public SWIG_IF_ELSE(PrintableCommon, Printable<Node>) {
47 std::vector<casadi_int> dimension;
48 std::vector<std::string> dim_params;
49 std::vector<double> value;
52 std::string type_name()
const {
return "Node"; }
53 void disp(std::ostream& stream,
bool more=
false)
const;
54 std::string get_str(
bool more=
false)
const;
65 class CASADI_EXPORT GraphBuilderInternal :
public SharedObjectInternal {
68 GraphBuilderInternal(
const std::string& name,
const std::vector<uint8_t>& model_data,
69 const std::string& format,
const Dict& opts);
71 GraphBuilderInternal(
const std::string& name,
const Function& f,
const Dict& opts);
72 ~GraphBuilderInternal()
override;
74 std::string class_name()
const override {
return "GraphBuilderInternal"; }
75 void disp(std::ostream& stream,
bool more)
const override;
77 casadi_int n_in()
const;
78 casadi_int n_out()
const;
79 std::vector<std::string> name_in()
const;
80 std::vector<std::string> name_out()
const;
81 std::vector<casadi_int> input_shape(
const std::string& name)
const;
82 std::vector<casadi_int> output_shape(
const std::string& name)
const;
83 std::vector<std::string> dynamic_params()
const;
84 Node node(
const std::string& name)
const;
85 std::vector<Node> nodes()
const {
return nodes_; }
87 void bind_dim(
const std::string& param, casadi_int value) { dim_bindings_[param] = value; }
88 void bind_shape(
const std::string& input_name,
const std::vector<casadi_int>& shape);
89 void set_value(
const std::string& input_name,
const std::vector<double>& value);
91 Function create_function(
const std::string& name,
92 const std::vector<std::string>& name_in,
93 const std::vector<std::string>& name_out,
94 const Dict& opts)
const;
95 void export_onnx(
const std::string& filename,
const Dict& opts);
98 void add_node(
const Node& n) { nodes_.push_back(n); }
100 void clear_nodes() { nodes_.clear(); }
104 const std::vector<Node>& node_list()
const {
return nodes_; }
105 const std::map<std::string, casadi_int>& dim_bindings()
const {
return dim_bindings_; }
110 std::vector<casadi_int> resolved_shape(
const Node& n)
const;
113 const Node& find(
const std::string& name,
const std::string& io)
const;
117 std::vector<uint8_t> model_data_;
125 std::vector<Node> nodes_;
128 std::map<std::string, casadi_int> dim_bindings_;
129 std::map<std::string, std::vector<casadi_int>> input_shapes_;
130 std::map<std::string, std::vector<double>> input_values_;
134 void populate_from_function();
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.