34 template <
typename BASE_CLASS,
49 : BASE_CLASS( graph_data, node_id )
55 {
return BASE_CLASS::graphData(); }
57 {
return BASE_CLASS::constGraphData(); }
62 {
return UN_NodeID( BASE_CLASS::dataID() ); }
66 {
return UN_NodeUtils::isValid(
70 explicit operator bool()
const
218 port_kind, port_name ));
412 auto node_range = UN_NodeUtils::childNodeRange(
graphData(),
nodeID() );
458 auto wire_range = UN_NodeUtils::childWireRange(
graphData(),
nodeID() );
505 return UNhandleArray<STICKY_NOTE>(
graphData(),
525 UN_GraphData, UN_Node, UN_Parm, UN_Port, UN_StickyNote, UN_Wire >
610 template <
typename OP>
626 UN_NodeUtils::setMetadata(
graphData(),
nodeID(), std::move(metadata) );
638 template <
typename OP>
648 UN_NodeUtils::updateMetadata(
664 UN_UNDEFINED_PARM_TYPE_NAME.asRef())
const
668 parm_name, parm_type_name ));
678 UN_UNDEFINED_PORT_TYPE_NAME.asRef(),
684 port_kind, port_name, port_type_name, port_label,
693 UN_UNDEFINED_PORT_TYPE_NAME.asRef(),
698 port_kind, port_name, port_type_name, port_label ));
708 UN_UNDEFINED_PORT_TYPE_NAME.asRef(),
713 port_name, port_type_name, port_label,
index );
721 UN_UNDEFINED_PORT_TYPE_NAME.asRef(),
725 port_name, port_type_name, port_label );
735 UN_UNDEFINED_PORT_TYPE_NAME.asRef(),
740 port_name, port_type_name, port_label,
index );
748 UN_UNDEFINED_PORT_TYPE_NAME.asRef(),
752 port_name, port_type_name, port_label );
764 child_name, child_type, child_category ));
780 note_name, note_text ));
806 const UN_GraphData, UN_ConstNode, UN_ConstParm, UN_ConstPort,
807 UN_ConstStickyNote, UN_ConstWire >
PortReverseRange inputPortReverseRange() const
void setFromOptions(const UN_Options &node_opts) const
Configure the node based on the given options.
UN_ConstNode(const UN_GraphData *graph_data, UN_NodeID node_id)
Constructs a handle referencing the given node in the given graph.
UN_HandleIterator< PORT, GRAPH_DATA, UN_NodeUtils::PortIterator > PortIterator
And iterator and a range for ports that belong to this node.
UN_WireIDList::const_iterator ChildWireIterator
A range for traversing the wires contained directly inside a node.
UN_API UN_OptionsPtr asOptions(const UN_GraphData *graph_data, UN_NodeID node_id)
UT_Array< NODE > childNodes() const
Returns the children nodes directly inside this node.
bool isSubnet() const
Returns true if the node can have child nodes inside.
PortRange outputPortRange() const
UT_Array< PORT > outputPorts() const
Returns this node's output ports of the given kind.
void setComment(const UT_StringRef &comment) const
Sets the comment on the node. The comment can show up in network editor.
UN_API void deleteChildStickyNote(UN_GraphData *graph_data, UN_NodeID parent_id, const UT_StringRef &child_sticky_note_name)
bool operator!=(const UN_ConstNode &other) const
Comparison operators.
UT_Array< STICKY_NOTE > childStickyNotes() const
Returns the child sticky notes directly inside this node.
GLsizei const GLfloat * value
UT_IteratorRange< ChildNodeIterator > ChildNodeRange
void setPosition(const UT_Vector2D &position) const
Sets the node's location. Used for the node position in network editor.
UN_Port createOutputPort(const UT_StringRef &port_name=UT_StringRef(), const UT_StringRef &port_type_name=UN_UNDEFINED_PORT_TYPE_NAME.asRef(), const UT_StringRef &port_label=UT_StringRef(), const UT_Optional< exint > &index=std::nullopt) const
GRAPH_DATA * graphData() const
Returns the owner of the underlying graph data structures.
UT_Array< UT_StringHolder > outputPortTypeNames() const
Returns the type names of the node output ports.
UT_StringHolder findValidUniqueChildNodeName(const UT_StringRef &child_name) const
Returns a node name that is not taken by any of this nodes' children.
GLboolean GLboolean GLboolean GLboolean a
PORT findInputPort(const UT_StringRef &port_name) const
UT_Array< UT_StringHolder > parmTypeNames() const
Returns the type names of the node parameters.
UT_Array< UT_StringHolder > inputPortTypeNames() const
Returns the type names of the node input ports.
UN_HandleIterator< NODE, GRAPH_DATA, UN_NodeUtils::ChildNodeIterator > ChildNodeIterator
An iterator and a range for the children of this parent node.
bool operator!=(const UN_Node &other) const
Comparison operators.
UT_Array< UT_StringHolder > childNodeNames() const
Returns the names of the node children nodes.
UT_IteratorRange< PortReverseIterator > PortReverseRange
UT_Array< UT_StringHolder > portNames(UN_PortKind port_kind) const
Returns the names of the node ports of a given kind.
UT_Array< PORT > ports(UN_PortKind port_kind) const
Returns this node's ports of the given kind.
void setTags(const UT_StringArray &tags) const
Sets the tags for the node (copy-assignment).
bool isAnyInputPortConnectedToSrc() const
std::optional< T > UT_Optional
UN_API UT_Array< UT_StringHolder > childNodeNames(const UN_GraphData *graph_data, UN_NodeID node_id)
Returns the names of the children nodes of the given parent node.
UT_IteratorRange< ChildWireIterator > ChildWireRange
UN_API void setFromOptions(UN_GraphData *graph_data, UN_NodeID node_id, const UN_Options &node_opts)
Load and set the node based on the given options.
void setTags(UT_StringArray &&tags) const
Sets the tags for the node (move-assignment).
UN_HandleIterator< NODE, GRAPH_DATA, UN_NodeUtils::DescendantNodeIterator > DescendantNodeIterator
UT_IteratorRange< PortIterator > PortRange
UN_API bool isAnyOutputPortConnectedToDst(const UN_GraphData *graph_data, UN_NodeID node_id)
UN_HandleIterator< WIRE, GRAPH_DATA, UN_NodeUtils::ChildWireIterator > ChildWireIterator
void updateMetadata(const OP &op) const
UN_API UN_PortID createPort(UN_GraphData *graph_data, UN_NodeID node_id, UN_PortKind port_kind, const UT_StringRef &port_name, const UT_StringRef &port_type_name=UN_UNDEFINED_PORT_TYPE_NAME.asRef(), const UT_StringRef &port_label=UT_StringRef(), const UT_Optional< exint > &index=std::nullopt)
UN_ParmIDList::const_iterator ParmIterator
UN_Port findOrCreateInputPort(const UT_StringRef &port_name, const UT_StringRef &port_type_name=UN_UNDEFINED_PORT_TYPE_NAME.asRef(), const UT_StringRef &port_label=UT_StringRef()) const
UT_IteratorRange< DescendantNodeIterator > DescendantNodeRange
UN_Port createInputPort(const UT_StringRef &port_name=UT_StringRef(), const UT_StringRef &port_type_name=UN_UNDEFINED_PORT_TYPE_NAME.asRef(), const UT_StringRef &port_label=UT_StringRef(), const UT_Optional< exint > &index=std::nullopt) const
UN_NodeBase(GRAPH_DATA *graph_data, UN_NodeID node_id)
Constructs a handle that references the given node in the given graph.
UN_API UT_StringHolder path(const UN_GraphData *graph_data, UN_NodeID node_id)
Returns the node path.
const UT_StringHolder & comment() const
Returns the comment for the node.
UN_API UN_NodeID createChildNode(UN_GraphData *graph_data, UN_NodeID parent_id, const UT_StringRef &child_name=UT_StringRef(), const UT_StringRef &child_type=UT_StringRef(), const UT_StringRef &child_category=UT_StringRef())
Creates and returns a new node that is a child of this node.
UN_OptionsPtr asOptions() const
UT_Array< UT_StringHolder > parmNames() const
Returns the names of the node parameters.
constexpr std::enable_if< I< type_count_base< T >::value, int >::type tuple_type_size(){return subtype_count< typename std::tuple_element< I, T >::type >::value+tuple_type_size< T, I+1 >);}template< typename T > struct type_count< T, typename std::enable_if< is_tuple_like< T >::value >::type >{static constexpr int value{tuple_type_size< T, 0 >)};};template< typename T > struct subtype_count{static constexpr int value{is_mutable_container< T >::value?expected_max_vector_size:type_count< T >::value};};template< typename T, typename Enable=void > struct type_count_min{static const int value{0};};template< typename T >struct type_count_min< T, typename std::enable_if<!is_mutable_container< T >::value &&!is_tuple_like< T >::value &&!is_wrapper< T >::value &&!is_complex< T >::value &&!std::is_void< T >::value >::type >{static constexpr int value{type_count< T >::value};};template< typename T > struct type_count_min< T, typename std::enable_if< is_complex< T >::value >::type >{static constexpr int value{1};};template< typename T >struct type_count_min< T, typename std::enable_if< is_wrapper< T >::value &&!is_complex< T >::value &&!is_tuple_like< T >::value >::type >{static constexpr int value{subtype_count_min< typename T::value_type >::value};};template< typename T, std::size_t I >constexpr typename std::enable_if< I==type_count_base< T >::value, int >::type tuple_type_size_min(){return 0;}template< typename T, std::size_t I > constexpr typename std::enable_if< I< type_count_base< T >::value, int >::type tuple_type_size_min(){return subtype_count_min< typename std::tuple_element< I, T >::type >::value+tuple_type_size_min< T, I+1 >);}template< typename T > struct type_count_min< T, typename std::enable_if< is_tuple_like< T >::value >::type >{static constexpr int value{tuple_type_size_min< T, 0 >)};};template< typename T > struct subtype_count_min{static constexpr int value{is_mutable_container< T >::value?((type_count< T >::value< expected_max_vector_size)?type_count< T >::value:0):type_count_min< T >::value};};template< typename T, typename Enable=void > struct expected_count{static const int value{0};};template< typename T >struct expected_count< T, typename std::enable_if<!is_mutable_container< T >::value &&!is_wrapper< T >::value &&!std::is_void< T >::value >::type >{static constexpr int value{1};};template< typename T > struct expected_count< T, typename std::enable_if< is_mutable_container< T >::value >::type >{static constexpr int value{expected_max_vector_size};};template< typename T >struct expected_count< T, typename std::enable_if<!is_mutable_container< T >::value &&is_wrapper< T >::value >::type >{static constexpr int value{expected_count< typename T::value_type >::value};};enum class object_category:int{char_value=1, integral_value=2, unsigned_integral=4, enumeration=6, boolean_value=8, floating_point=10, number_constructible=12, double_constructible=14, integer_constructible=16, string_assignable=23, string_constructible=24, other=45, wrapper_value=50, complex_number=60, tuple_value=70, container_value=80,};template< typename T, typename Enable=void > struct classify_object{static constexpr object_category value{object_category::other};};template< typename T >struct classify_object< T, typename std::enable_if< std::is_integral< T >::value &&!std::is_same< T, char >::value &&std::is_signed< T >::value &&!is_bool< T >::value &&!std::is_enum< T >::value >::type >{static constexpr object_category value{object_category::integral_value};};template< typename T >struct classify_object< T, typename std::enable_if< std::is_integral< T >::value &&std::is_unsigned< T >::value &&!std::is_same< T, char >::value &&!is_bool< T >::value >::type >{static constexpr object_category value{object_category::unsigned_integral};};template< typename T >struct classify_object< T, typename std::enable_if< std::is_same< T, char >::value &&!std::is_enum< T >::value >::type >{static constexpr object_category value{object_category::char_value};};template< typename T > struct classify_object< T, typename std::enable_if< is_bool< T >::value >::type >{static constexpr object_category value{object_category::boolean_value};};template< typename T > struct classify_object< T, typename std::enable_if< std::is_floating_point< T >::value >::type >{static constexpr object_category value{object_category::floating_point};};template< typename T >struct classify_object< T, typename std::enable_if<!std::is_floating_point< T >::value &&!std::is_integral< T >::value &&std::is_assignable< T &, std::string >::value >::type >{static constexpr object_category value{object_category::string_assignable};};template< typename T >struct classify_object< T, typename std::enable_if<!std::is_floating_point< T >::value &&!std::is_integral< T >::value &&!std::is_assignable< T &, std::string >::value &&(type_count< T >::value==1)&&std::is_constructible< T, std::string >::value >::type >{static constexpr object_category value{object_category::string_constructible};};template< typename T > struct classify_object< T, typename std::enable_if< std::is_enum< T >::value >::type >{static constexpr object_category value{object_category::enumeration};};template< typename T > struct classify_object< T, typename std::enable_if< is_complex< T >::value >::type >{static constexpr object_category value{object_category::complex_number};};template< typename T > struct uncommon_type{using type=typename std::conditional<!std::is_floating_point< T >::value &&!std::is_integral< T >::value &&!std::is_assignable< T &, std::string >::value &&!std::is_constructible< T, std::string >::value &&!is_complex< T >::value &&!is_mutable_container< T >::value &&!std::is_enum< T >::value, std::true_type, std::false_type >::type;static constexpr bool value=type::value;};template< typename T >struct classify_object< T, typename std::enable_if<(!is_mutable_container< T >::value &&is_wrapper< T >::value &&!is_tuple_like< T >::value &&uncommon_type< T >::value)>::type >{static constexpr object_category value{object_category::wrapper_value};};template< typename T >struct classify_object< T, typename std::enable_if< uncommon_type< T >::value &&type_count< T >::value==1 &&!is_wrapper< T >::value &&is_direct_constructible< T, double >::value &&is_direct_constructible< T, int >::value >::type >{static constexpr object_category value{object_category::number_constructible};};template< typename T >struct classify_object< T, typename std::enable_if< uncommon_type< T >::value &&type_count< T >::value==1 &&!is_wrapper< T >::value &&!is_direct_constructible< T, double >::value &&is_direct_constructible< T, int >::value >::type >{static constexpr object_category value{object_category::integer_constructible};};template< typename T >struct classify_object< T, typename std::enable_if< uncommon_type< T >::value &&type_count< T >::value==1 &&!is_wrapper< T >::value &&is_direct_constructible< T, double >::value &&!is_direct_constructible< T, int >::value >::type >{static constexpr object_category value{object_category::double_constructible};};template< typename T >struct classify_object< T, typename std::enable_if< is_tuple_like< T >::value &&((type_count< T >::value >=2 &&!is_wrapper< T >::value)||(uncommon_type< T >::value &&!is_direct_constructible< T, double >::value &&!is_direct_constructible< T, int >::value)||(uncommon_type< T >::value &&type_count< T >::value >=2))>::type >{static constexpr object_category value{object_category::tuple_value};};template< typename T > struct classify_object< T, typename std::enable_if< is_mutable_container< T >::value >::type >{static constexpr object_category value{object_category::container_value};};template< typename T, enable_if_t< classify_object< T >::value==object_category::char_value, detail::enabler >=detail::dummy >constexpr const char *type_name(){return"CHAR";}template< typename T, enable_if_t< classify_object< T >::value==object_category::integral_value||classify_object< T >::value==object_category::integer_constructible, detail::enabler >=detail::dummy >constexpr const char *type_name(){return"INT";}template< typename T, enable_if_t< classify_object< T >::value==object_category::unsigned_integral, detail::enabler >=detail::dummy >constexpr const char *type_name(){return"UINT";}template< typename T, enable_if_t< classify_object< T >::value==object_category::floating_point||classify_object< T >::value==object_category::number_constructible||classify_object< T >::value==object_category::double_constructible, detail::enabler >=detail::dummy >constexpr const char *type_name(){return"FLOAT";}template< typename T, enable_if_t< classify_object< T >::value==object_category::enumeration, detail::enabler >=detail::dummy >constexpr const char *type_name(){return"ENUM";}template< typename T, enable_if_t< classify_object< T >::value==object_category::boolean_value, detail::enabler >=detail::dummy >constexpr const char *type_name(){return"BOOLEAN";}template< typename T, enable_if_t< classify_object< T >::value==object_category::complex_number, detail::enabler >=detail::dummy >constexpr const char *type_name(){return"COMPLEX";}template< typename T, enable_if_t< classify_object< T >::value >=object_category::string_assignable &&classify_object< T >::value<=object_category::other, detail::enabler >=detail::dummy >constexpr const char *type_name(){return"TEXT";}template< typename T, enable_if_t< classify_object< T >::value==object_category::tuple_value &&type_count_base< T >::value >=2, detail::enabler >=detail::dummy >std::string type_name();template< typename T, enable_if_t< classify_object< T >::value==object_category::container_value||classify_object< T >::value==object_category::wrapper_value, detail::enabler >=detail::dummy >std::string type_name();template< typename T, enable_if_t< classify_object< T >::value==object_category::tuple_value &&type_count_base< T >::value==1, detail::enabler >=detail::dummy >inline std::string type_name(){return type_name< typename std::decay< typename std::tuple_element< 0, T >::type >::type >);}template< typename T, std::size_t I >inline typename std::enable_if< I==type_count_base< T >::value, std::string >::type tuple_name(){return std::string{};}template< typename T, std::size_t I >inline typename std::enable_if<(I< type_count_base< T >::value), std::string >::type tuple_name(){auto str=std::string{type_name< typename std::decay< typename std::tuple_element< I, T >::type >::type >)}+ ','+tuple_name< T, I+1 >);if(str.back()== ',') str.pop_back();return str;}template< typename T, enable_if_t< classify_object< T >::value==object_category::tuple_value &&type_count_base< T >::value >=2, detail::enabler > > std::string type_name()
Recursively generate the tuple type name.
void setColor(const UT_Color &color) const
Sets the node's color. The color is used in network editor.
const UT_StringHolder & signatureName() const
Returns the signature for the node.
UN_Node(UN_GraphData *graph_data, UN_NodeID node_id)
Constructs a handle referencing the given node in the given graph.
UN_API UT_Array< UT_StringHolder > parmTypeNames(const UN_GraphData *graph_data, UN_NodeID node_id)
Returns the type names of the node parameters.
void deleteChildStickyNote(const UT_StringRef &sticky_note_name) const
void setTypeName(const UT_StringRef &type_name) const
Sets the node's type that determines its functional behavour.
UN_Port createPort(UN_PortKind port_kind, const UT_StringRef &port_name=UT_StringRef(), const UT_StringRef &port_type_name=UN_UNDEFINED_PORT_TYPE_NAME.asRef(), const UT_StringRef &port_label=UT_StringRef(), const UT_Optional< exint > &index=std::nullopt) const
void setMetadata(const UN_MetadataHolder &metadata) const
Sets the metadata for the node (copy-assignment).
PortRange inputPortRange() const
bool operator!=(const Mat3< T0 > &m0, const Mat3< T1 > &m1)
Inequality operator, does exact floating point comparisons.
UNI_PortKind
Specifies the port kind, ie, wheter it is an input or an output port.
UT_StringHolder path() const
Returns the node path.
const UT_Color & color() const
Returns the node's color.
PortRange portRange(UN_PortKind port_kind) const
UN_NodeBase()=default
Constructs a handle for an invalid node.
UN_API UT_Array< UT_StringHolder > parmNames(const UN_GraphData *graph_data, UN_NodeID node_id)
Returns the names of the node parameters.
UN_API UT_Array< UT_StringHolder > portTypeNames(const UN_GraphData *graph_data, UN_NodeID node_id, UN_PortKind port_kind)
Returns the type names of the node ports of a given kind.
bool operator==(const UN_ConstNode &other) const
Comparison operators.
GLuint const GLchar * name
bool isAnyOutputPortConnectedToDst() const
ParmRange parmRange() const
Returns a range for iterating over node parameters.
const UT_StringArray & tags() const
Returns the node's tags.
UT_Array< PARM > parms() const
Returns the parameters of this node.
GLboolean GLboolean GLboolean b
UT_Array< UT_StringHolder > outputPortNames() const
Returns the names of the node output ports.
void setName(const UT_StringRef &name) const
Sets the node name that differentiates it among its siblings.
STICKY_NOTE findChildStickyNote(const UT_StringRef &child_name) const
UN_Parm createParm(const UT_StringRef &parm_name, const UT_StringRef &parm_type_name=UN_UNDEFINED_PARM_TYPE_NAME.asRef()) const
UT_Array< PORT > inputPorts() const
Returns this node's input ports of the given kind.
const UN_MetadataHolder & metadata() const
Returns the node's metadata.
const UT_StringHolder & categoryName() const
PortReverseRange outputPortReverseRange() const
ChildWireRange childWireRange() const
A map of string to various well defined value types.
UN_HandleIterator< PORT, GRAPH_DATA, UN_NodeUtils::PortReverseIterator > PortReverseIterator
And iterator and a range for ports that belong to this node.
UN_NodeID nodeID() const
Returns the unique ID of the node this handle refers to.
UT_Array< WIRE > childWires() const
void setSignature(const UT_StringRef &signature_name) const
Sets the signature on the node.
const UT_Vector2D & position() const
Returns the node's position in the node editor.
void updateTags(const OP &op) const
UN_API bool isAnyInputPortConnectedToSrc(const UN_GraphData *graph_data, UN_NodeID node_id)
UT_StringArray stealTags() const
const UT_StringHolder & name() const
Returns the node name that differentiates it among its siblings.
void destroy() const
Deletes this node from the graph.
UT_IteratorRange< ParmIterator > ParmRange
PARM findParm(const UT_StringRef &parm_name) const
Returns a parameter by the given name, or an invalid parm if not found.
void setMetadata(UN_MetadataHolder &&metadata) const
Sets the metadata for the node (move-assignment).
NODE findNode(const UT_StringRef &node_path) const
UN_Port findOrCreateOutputPort(const UT_StringRef &port_name, const UT_StringRef &port_type_name=UN_UNDEFINED_PORT_TYPE_NAME.asRef(), const UT_StringRef &port_label=UT_StringRef()) const
bool operator!=(const UN_ConstHandle &other) const
bool operator==(const UN_ConstHandle &other) const
bool isValid() const
Returns true if this node is valid within the graph; false otherwise.
NODE nonRootParent() const
SIM_API const UT_StringHolder position
UN_API void deleteChildNode(UN_GraphData *graph_data, UN_NodeID parent_id, const UT_StringRef &child_name)
Deletes the child node from the graph (removing it from this network).
UN_HandleIterator< PARM, GRAPH_DATA, UN_NodeUtils::ParmIterator > ParmIterator
An iterator and a range for parameters that belong to this node.
bool operator==(const UN_Node &other) const
Comparison operators.
UN_API UT_StringHolder findValidUniqueChildNodeName(const UN_GraphData *graph_data, UN_NodeID node_id, const UT_StringRef &child_name=UT_StringRef())
const UT_StringHolder & typeName() const
Returns the node's type that determines its functional behavour.
DescendantNodeRange descendantNodeRange() const
UN_PortIDList::const_reverse_iterator PortReverseIterator
PORT findOutputPort(const UT_StringRef &port_name) const
UN_API UN_StickyNoteID createChildStickyNote(UN_GraphData *graph_data, UN_NodeID parent_id, const UT_StringRef &sticky_note_name=UT_StringRef(), const UT_StringRef &sticky_note_text=UT_StringRef())
Creates and returns a new sticky note that is a child of this node.
UN_NodeIDList::const_iterator ChildNodeIterator
An iterator and a range for iterating over child node IDs.
PORT findPort(UN_PortKind port_kind, const UT_StringRef &port_name) const
UN_Node createChildNode(const UT_StringRef &child_name=UT_StringRef(), const UT_StringRef &child_type=UT_StringRef(), const UT_StringRef &child_category=UT_StringRef()) const
Creates and returns a new node that is a child of this node.
ChildNodeRange childNodeRange() const
Returns a range for iterating over node's immediate children.
UN_Port findOrCreatePort(UN_PortKind port_kind, const UT_StringRef &port_name, const UT_StringRef &port_type_name=UN_UNDEFINED_PORT_TYPE_NAME.asRef(), const UT_StringRef &port_label=UT_StringRef()) const
UN_StickyNote createChildStickyNote(const UT_StringRef ¬e_name=UT_StringRef(), const UT_StringRef ¬e_text=UT_StringRef()) const
Creates and returns a new sticky note that is a child of this node.
UN_PortIDList::const_iterator PortIterator
An iterator and a range for iterating over node port IDs.
UT_Array< UT_StringHolder > inputPortNames() const
Returns the names of the node input ports.
PortReverseRange portReverseRange(UN_PortKind port_kind) const
void updateMetadata(const UT_StringHolder &key, UT_OptionEntryPtr &&value)
Simpler method to update a single metadata value in-place.
DescendantWireRange descendantWireRange() const
const UN_GraphData * constGraphData() const
Returns the owner of the underlying graph data structures.
NODE findChildNode(const UT_StringRef &child_name) const
void deleteChildNode(const UT_StringRef &child_name) const
Deletes the child node from the graph (removing it from this network).
bool operator==(const Mat3< T0 > &m0, const Mat3< T1 > &m1)
Equality operator, does exact floating point comparisons.
An iterator for traversing the wires deep inside the given node.
UN_ConstNode(const UN_Node &node)
Constructs a const handle from a mutable node handle.
UT_UniquePtr< UT_OptionEntry > UT_OptionEntryPtr
UN_HandleIterator< WIRE, GRAPH_DATA, UN_NodeUtils::DescendantWireIterator > DescendantWireIterator
UT_IteratorRange< DescendantWireIterator > DescendantWireRange
UN_API UT_Array< UT_StringHolder > portNames(const UN_GraphData *graph_data, UN_NodeID node_id, UN_PortKind port_kind)
Returns the names of the node ports of a given kind.
UT_UniquePtr< UN_Options > UN_OptionsPtr
UN_API UN_ParmID createParm(UN_GraphData *graph_data, UN_NodeID node_id, const UT_StringRef &parm_name, const UT_StringRef &parm_type_name=UN_UNDEFINED_PARM_TYPE_NAME.asRef())
UN_MetadataHolder stealMetadata() const
Returns the metadata moved out of the node.
UT_Array< UT_StringHolder > portTypeNames(UN_PortKind port_kind) const
Returns the type names of the node ports of a given kind.