Go to the source code of this file.
|
gru_export gru_tree_node_t * | gru_tree_new (const void *data) |
| Creates a new tree and returns a pointer to the root node. More...
|
|
gru_export void | gru_tree_destroy (gru_tree_node_t **ptr) |
| Destroys a tree node and all it's descendants. More...
|
|
gru_export gru_tree_node_t * | gru_tree_add_child (gru_tree_node_t *node, const void *data) |
| Adds a child node to a given node. More...
|
|
gru_export const gru_tree_node_t * | gru_tree_search (gru_tree_node_t *node, compare_function_t comparable, const void *other) |
| Searches the tree using DFS. More...
|
|
gru_export const gru_tree_node_t * | gru_tree_search_child (gru_tree_node_t *node, compare_function_t comparable, const void *other) |
| Searches only the immediate children of the node. More...
|
|
gru_export bool | gru_tree_remove_child (gru_tree_node_t *node, compare_function_t comparable, const void *other) |
| Removes a direct descendant of a node. More...
|
|
gru_export const gru_tree_node_t * | gru_tree_for_each (gru_tree_node_t *node, tree_callback_fn callback, void *payload) |
| Traverses the tree executing a set of operations. More...
|
|
gru_export void | gru_tree_for_each_child (gru_tree_node_t *node, tree_callback_fn callback, void *payload) |
| Executes an operation on each child of the given node. More...
|
|
gru_export uint32_t | gru_tree_count_children (gru_tree_node_t *node) |
| Returns the number of children of a node. More...
|
|
gru_export uint32_t | gru_tree_count (gru_tree_node_t *node) |
| Returns the number of children of a tree. More...
|
|
◆ gru_tree_node_t
◆ gru_tree_add_child()
Adds a child node to a given node.
- Parameters
-
node | The node to add the child to |
data | The data to add to the child |
- Returns
- A pointer to the newly added node. This node does NOT need to be free'd. It will be free'd along with its parent
◆ gru_tree_count()
Returns the number of children of a tree.
- Parameters
-
node | The node to count the number of children |
- Returns
- The number of items
- Note
- The node must not be NULL, otherwise it returns 0
◆ gru_tree_count_children()
Returns the number of children of a node.
- Parameters
-
node | The node to count the number of children |
- Returns
- The number of items
- Note
- The node must not be NULL, otherwise it returns 0
◆ gru_tree_destroy()
Destroys a tree node and all it's descendants.
- Parameters
-
ptr | A pointer-to-pointer for the node to destroy |
◆ gru_tree_for_each()
Traverses the tree executing a set of operations.
- Parameters
-
node | The starting node for the search |
callback | A callback function to be executed for all the nodes |
payload | Payload data to be passed to the passed to the callback |
- Returns
- A pointer to the node or NULL if not found
◆ gru_tree_for_each_child()
Executes an operation on each child of the given node.
- Parameters
-
node | The starting node for the search |
callback | A callback function to be executed for all the nodes |
payload | Payload data to be passed to the passed to the callback |
◆ gru_tree_new()
Creates a new tree and returns a pointer to the root node.
- Parameters
-
data | The data for the root node |
- Returns
- A pointer to the root node
◆ gru_tree_remove_child()
Removes a direct descendant of a node.
- Parameters
-
node | The parent node |
comparable | A comparator function |
other | The data to compare to |
- Returns
- true if removed or false otherwise
◆ gru_tree_search()
Searches the tree using DFS.
- Parameters
-
node | The starting node for the search |
comparable | A comparator function |
other | The data to compare to |
- Returns
- A pointer to the node or NULL if not found
◆ gru_tree_search_child()
Searches only the immediate children of the node.
- Parameters
-
node | The starting node for the search |
comparable | A comparator function |
other | The data to compare to |
- Returns
- A pointer to the node or NULL if not found