Main Page | Class List | File List | Class Members | File Members | Related Pages

tree.h File Reference

Recursive tree data structure. More...

Go to the source code of this file.

Classes

struct  _tree_node
struct  Tree

Typedefs

typedef _tree_node TreeNode
typedef int(* TreeNodeCompare )(void *a, void *b)
typedef void(* TreeForeach )(TreeNode *node, void *udata, int depth)

Functions

EXTERN_C_BEGIN LIBGIFT_EXPORT
TreeNode
tree_insert (Tree **tree, TreeNode *parent, TreeNode *sibling, void *data)
LIBGIFT_EXPORT void tree_remove (Tree **tree, TreeNode *node)
LIBGIFT_EXPORT void tree_destroy (Tree **tree)
LIBGIFT_EXPORT void tree_destroy_free (Tree **tree)
LIBGIFT_EXPORT TreeNodetree_find (Tree **tree, TreeNode *start, int recurse, TreeNodeCompare func, void *data)
LIBGIFT_EXPORT void tree_foreach (Tree **tree, TreeNode *start, int depth, int recurse, TreeForeach func, void *data)


Detailed Description

Recursive tree data structure.


Typedef Documentation

typedef void(* TreeForeach)(TreeNode *node, void *udata, int depth)
 

Tree iterator callback.

Parameters:
node 
udata User-supplied data
depth Depth in tree

typedef struct _tree_node TreeNode
 

Tree node structure.

typedef int(* TreeNodeCompare)(void *a, void *b)
 

Tree node comparison.


Function Documentation

LIBGIFT_EXPORT void tree_destroy Tree **  tree  ) 
 

Unallocate a tree object. Sets the storage pointed to by tree to NULL.

LIBGIFT_EXPORT void tree_destroy_free Tree **  tree  ) 
 

Wrapper around tree_destroy which calls free for all user-supplied data values.

LIBGIFT_EXPORT TreeNode* tree_find Tree **  tree,
TreeNode start,
int  recurse,
TreeNodeCompare  func,
void *  data
 

Locate a node through iteration.

LIBGIFT_EXPORT void tree_foreach Tree **  tree,
TreeNode start,
int  depth,
int  recurse,
TreeForeach  func,
void *  data
 

Iterate a tree.

EXTERN_C_BEGIN LIBGIFT_EXPORT TreeNode* tree_insert Tree **  tree,
TreeNode parent,
TreeNode sibling,
void *  data
 

Insert a new tree node.

Parameters:
tree 
parent Insert beneath the supplied parent.
sibling Insert after the subling sibling.
data User-supplied data for insertion.
Return values:
Reference to the inserted node.

LIBGIFT_EXPORT void tree_remove Tree **  tree,
TreeNode node
 

Remove a tree node.


Generated on Sun Aug 22 08:07:11 2004 by doxygen 1.3.7