26 #ifndef CASADI_SX_NODE_HPP
27 #define CASADI_SX_NODE_HPP
37 #include "sx_elem.hpp"
72 virtual bool is_zero()
const {
return false; }
73 virtual bool is_op(casadi_int
op)
const {
return false; }
75 virtual bool is_one()
const {
return false; }
77 virtual bool is_nan()
const {
return false; }
78 virtual bool is_inf()
const {
return false; }
80 virtual bool is_call()
const {
return false; }
90 virtual casadi_int
to_int()
const;
94 virtual const std::string&
name()
const;
104 virtual casadi_int
op()
const=0;
119 virtual bool is_equal(
const SXNode* node, casadi_int depth)
const;
124 virtual casadi_int
n_dep()
const {
return 0;}
134 virtual const SXElem&
dep(casadi_int i)
const;
149 virtual void disp(std::ostream& stream,
bool more)
const;
154 void can_inline(std::map<const SXNode*, casadi_int>& nodeind)
const;
159 std::string
print_compact(std::map<const SXNode*, casadi_int>& nodeind,
160 std::vector<std::string>& intermed)
const;
165 virtual std::string
print(
const std::string& arg1,
const std::string& arg2)
const = 0;
194 #ifdef CASADI_WITH_THREADSAFE_SYMBOLICS
195 std::atomic<unsigned int>
count;
Helper class for Serialization.
Sparse matrix class. SX and DM are specializations.
The basic scalar symbolic class of CasADi.
Internal node class for SX.
void serialize(SerializingStream &s) const
Serialize an object.
virtual SXElem get_output(casadi_int oind) const
Get an output.
virtual const SXElem & dep(casadi_int i) const
get the reference of a child
virtual Function which_function() const
Get called function.
SXElem shared_from_this()
Get a shared object from the current internal object.
static std::map< casadi_int, SXNode *(*)(DeserializingStream &)> deserialize_map
virtual bool is_zero() const
check properties of a node
virtual bool is_minus_one() const
check properties of a node
static SXNode * deserialize(DeserializingStream &s)
virtual bool is_almost_zero(double tol) const
check properties of a node
virtual bool is_one() const
check properties of a node
virtual casadi_int n_dep() const
Number of dependencies.
static void safe_delete(SXNode *n)
Non-recursive delete.
virtual bool is_nan() const
check properties of a node
virtual casadi_int to_int() const
Get value of a constant node.
virtual bool is_call() const
check properties of a node
virtual bool is_equal(const SXNode *node, casadi_int depth) const
Check if two nodes are equivalent up to a given depth.
virtual const std::string & name() const
virtual std::string print(const std::string &arg1, const std::string &arg2) const =0
Print expression.
virtual ~SXNode()
destructor
virtual bool is_integer() const
check properties of a node
virtual double to_double() const
Get value of a constant node.
virtual bool is_inf() const
check properties of a node
virtual bool is_symbolic() const
check properties of a node
virtual bool is_smooth() const
Check if smooth.
virtual bool is_op(casadi_int op) const
check properties of a node
virtual bool is_output() const
check properties of a node
static casadi_int eq_depth_
virtual casadi_int op() const =0
get the operation
virtual bool has_output() const
check properties of a node
virtual void serialize_node(SerializingStream &s) const
std::string print_compact(std::map< const SXNode *, casadi_int > &nodeind, std::vector< std::string > &intermed) const
Print compact.
virtual bool is_constant() const
check properties of a node
void can_inline(std::map< const SXNode *, casadi_int > &nodeind) const
Find out which nodes can be inlined.
virtual bool is_minus_inf() const
check properties of a node
virtual void disp(std::ostream &stream, bool more) const
print
virtual casadi_int which_output() const
Get function output.
virtual std::string class_name() const =0
Get type name.
Helper class for Serialization.