tree - N-ary tree ================= Genaric N-ary tree, it is designed to be wrapped in more high level and specialized datastructure. Data structures --------------- * `tree` + -- Represents a tree node. `next`:: Pointer to the next node. `parent`:: Pointer to the parent node. `child`:: Pointer to the first child. NOTE: Only members related to the tree are defined, no pointer to the associated data. + That is because it is designed to be flexible and expected to be built upon (included in another structure). -- Functions --------- `tree_new()`:: allocates memory of a `tree` structure. `tree_link()`:: Links the root of 'tree' to be a child of 'parent'. + Those linking the two tree's togheter. `tree_unlink()`:: Removes the node 'tree' from the entire tree. + The children of 'tree' is relinked to exist under 'tree'->parent. `tree_move()`:: Moves the subtree 'src' to exist as a child to 'dst'. `tree_detach()`:: Detaches the subtree pointed by 'tree'. and creates two tree's. `tree_traverse()`:: Traverses the tree applying 'fn' on every node. `tree_parent_count()`:: Returns the number of parent 'tree' has. `tree_is_root()`:: Returns nonzero if node is root (has no parent and no next), zero otherwise. + NOTE: this may be implemented as a macro. `tree_is_leaf()`:: Returns nonzero if node is leaf (has no children), zero othersize. + NOTE: this may be implemented as a macro.