A template parsing library and tool written in C.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

66 lines
1.3 KiB

#ifndef _BBTREE_H_
#define _BBTREE_H_
/* this is only here for testing. In final version
* it should be in bbtree.c */
typedef
struct bbTreeNode
{
void * value;
long height;
struct bbTreeNode * left;
struct bbTreeNode * right;
} s_bbTreeNode;
#define BBTREE_LEFT_HEIGHT(t) ((t)->left ? (t)->left->height : -1)
#define BBTREE_RIGHT_HEIGHT(t) ((t)->right ? (t)->right->height : -1)
#define BBTREE_AVL(t) (BBTREE_RIGHT_HEIGHT ((t)) - \
BBTREE_LEFT_HEIGHT ((t)))
/*
* comparison for tree-node values.
* Has to be defined by user and set
* with bbTreeNew.
*
* params:
* left: pointer to left value
* right: pointer to right value
*
* returns:
* 0: if values equal
* 1: if right greater left
* -1: if left greater right
*/
typedef int (* t_bbTreeCmp) (void *, void *);
typedef
struct bbTree
{
struct bbTreeNode * root;
t_bbTreeCmp cmp;
} s_bbTree;
/* constructor, destructor */
s_bbTree * bbTreeNew (t_bbTreeCmp);
void bbTreeFree (s_bbTree *);
/* data manipulation */
void * bbTreeInsert (s_bbTree *, void *);
void * bbTreeSeek (s_bbTree *, void *);
void * bbTreeRemove (s_bbTree *, void *);
/* analysation */
void * bbTreeMin (s_bbTree *);
void * bbTreeMax (s_bbTree *);
int bbTreeSize (s_bbTree *);
/* bbTree to other Datastructure */
void ** bbTreeInOrder (s_bbTree *, void **);
#endif /* _BBTREE_H_ */