12 #ifndef __UN_GraphUtils_h__
13 #define __UN_GraphUtils_h__
21 namespace UN_GraphUtils
25 static inline UN_NodeID
28 return graph_data ? graph_data->
rootNode() : UN_NodeID();
46 graph_data, rootNode(graph_data), name );
56 static inline UN_NodeID
60 ? graph_data->
findNode( rootNode(graph_data), node_path )
65 static inline UN_NodeID
74 UN_NodeID parent_id = parent_path
75 ? findNode( graph_data, parent_path )
76 : rootNode( graph_data );
78 if( graph_data && parent_id )
80 child_name, node_type_name, node_category_name );
89 UN_NodeID node_id = findNode( graph_data, node_path );
90 if( graph_data && node_id )
95 static inline const UN_NodeIDList &
98 return UN_NodeUtils::childNodes( graph_data, rootNode(graph_data) );
112 return UN_NodeUtils::childNodeRange( graph_data, rootNode(graph_data) );
131 return UN_NodeUtils::descendantNodeRange(
132 graph_data, rootNode(graph_data) );
136 static inline const UN_WireIDList &
139 return UN_NodeUtils::childWires( graph_data, rootNode(graph_data) );
152 return UN_NodeUtils::childWireRange( graph_data, rootNode(graph_data) );
165 return UN_NodeUtils::descendantWireRange(
166 graph_data, rootNode(graph_data));
170 static inline UN_StickyNoteID
178 UN_NodeID parent_id = parent_path
179 ? findNode( graph_data, parent_path )
180 : rootNode( graph_data );
182 if( graph_data && parent_id )
184 sticky_note_path, sticky_note_text );
186 return UN_StickyNoteID();
198 static inline UN_StickyNoteID
203 ? graph_data->
findStickyNote(rootNode(graph_data), sticky_note_path)
212 auto note_id = findStickyNote( graph_data, sticky_note_path );
213 if( graph_data && note_id )
UN_StickyNoteID createStickyNote(UN_NodeID parent_node, const UT_StringRef &name=UT_StringRef(), const UT_StringRef &text=UT_StringRef())
Creates and adds a new sticky note to the graph.
UN_NodeID rootNode() const
UN_WireIDList::const_iterator ChildWireIterator
A range for traversing the wires contained directly inside a node.
OIIO_UTIL_API std::string parent_path(string_view filepath) noexcept
bool isValidNodeName(const UT_StringRef &name) const
Returns true if the given name can be used for naming a node.
UN_StickyNoteID findStickyNote(UN_NodeID current_node, const UT_StringRef &sticky_note_path) const
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.
UN_NodeID createNode(UN_NodeID parent_node, const UT_StringRef &name=UT_StringRef(), const UT_StringRef &type=UT_StringRef(), const UT_StringRef &category=UT_StringRef(), const UT_StringRef &signature=UT_StringRef())
Creates a new node by the given name with the given parent.
UN_API void setFromOptions(UN_GraphData *graph_data, const UN_Options &graph_opts)
Load and set the graph based on the given options.
GLuint const GLchar * name
UN_API UN_OptionsPtr asOptions(const UN_GraphData *graph_data)
UN_NodeID findNode(UN_NodeID current_node, const UT_StringRef &node_path) const
void deleteStickyNote(UN_StickyNoteID sticky_note)
Deletes the node given its index.
A map of string to various well defined value types.
UN_NodeUtils::ChildWireIterator TopWireIterator
UN_API UT_StringHolder findValidUniqueChildNodeName(const UN_GraphData *graph_data, UN_NodeID node_id, const UT_StringRef &child_name=UT_StringRef())
UN_NodeIDList::const_iterator ChildNodeIterator
An iterator and a range for iterating over child node IDs.
void deleteNode(UN_NodeID node)
Deletes the node given its index.
UN_NodeUtils::ChildNodeIterator TopNodeIterator
An iterator and a range for iterating over the IDs of graph's top nodes.
void splitPath(UT_String &dir_name, UT_String &file_name) const
An iterator for traversing the wires deep inside the given node.
UT_UniquePtr< UN_Options > UN_OptionsPtr