26 #ifndef CASADI_MULTIPLE_OUTPUT_HPP
27 #define CASADI_MULTIPLE_OUTPUT_HPP
29 #include "mx_node.hpp"
30 #include "function.hpp"
44 class CASADI_EXPORT MultipleOutput :
public MXNode {
45 friend class OutputNode;
56 ~MultipleOutput()
override;
61 casadi_int nout()
const override=0;
66 MX get_output(casadi_int oind)
const override;
71 const Sparsity& sparsity(casadi_int oind)
const override=0;
76 bool has_output()
const override {
return true;}
82 explicit MultipleOutput(DeserializingStream& s) : MXNode(s) {}
85 class CASADI_EXPORT OutputNode :
public MXNode {
91 OutputNode(
const MX& parent, casadi_int oind);
96 ~OutputNode()
override;
101 std::string disp(
const std::vector<std::string>& arg)
const override;
106 bool is_output()
const override {
return true;}
111 casadi_int which_output()
const override {
return oind_;}
116 casadi_int op()
const override {
return -1;}
119 MX get_horzcat(
const std::vector<MX>& x)
const override {
return dep()->get_horzcat(x);}
122 MX get_vertcat(
const std::vector<MX>& x)
const override {
return dep()->get_vertcat(x);}
125 Dict info()
const override {
return {{
"oind", oind_}}; }
135 void serialize_body(SerializingStream& s)
const override;
140 static MXNode* deserialize(DeserializingStream& s) {
return new OutputNode(s); }
146 explicit OutputNode(DeserializingStream& s);
GenericType::Dict Dict
C++ equivalent of Python's dict or MATLAB's struct.