Propogate colors to new windows on opening (744294)
[nedit.git] / source / rbTree.h
blob8980f5601e5ac3164eae74fc3bfe8e1a35381a12
1 /* $Id: rbTree.h,v 1.3 2002/07/11 21:18:10 slobasso Exp $ */
3 #ifndef NEDIT_RBTREE_H_INCLUDED
4 #define NEDIT_RBTREE_H_INCLUDED
6 typedef struct rbTreeNode {
7 struct rbTreeNode *left; /* left child */
8 struct rbTreeNode *right; /* right child */
9 struct rbTreeNode *parent; /* parent */
10 int color; /* node color (rbTreeNodeBlack, rbTreeNodeRed) */
11 } rbTreeNode;
13 typedef int (*rbTreeCompareNodeCB)(rbTreeNode *left, rbTreeNode *right);
14 typedef rbTreeNode *(*rbTreeAllocateNodeCB)(rbTreeNode *src);
15 typedef rbTreeNode *(*rbTreeAllocateEmptyNodeCB)(void);
16 typedef void (*rbTreeDisposeNodeCB)(rbTreeNode *src);
17 typedef int (*rbTreeCopyToNodeCB)(rbTreeNode *dst, rbTreeNode *src);
19 rbTreeNode *rbTreeBegin(rbTreeNode *base);
20 rbTreeNode *rbTreeReverseBegin(rbTreeNode *base);
21 rbTreeNode *rbTreeFind(rbTreeNode *base, rbTreeNode *searchNode,
22 rbTreeCompareNodeCB compareRecords);
23 rbTreeNode *rbTreeInsert(rbTreeNode *base, rbTreeNode *searchNode,
24 rbTreeCompareNodeCB compareRecords,
25 rbTreeAllocateNodeCB allocateNode,
26 rbTreeCopyToNodeCB copyToNode);
27 rbTreeNode *rbTreeUnlinkNode(rbTreeNode *base, rbTreeNode *z);
28 void rbTreeDeleteNode(rbTreeNode *base, rbTreeNode *foundNode,
29 rbTreeDisposeNodeCB disposeNode);
30 int rbTreeDelete(rbTreeNode *base, rbTreeNode *searchNode,
31 rbTreeCompareNodeCB compareRecords,
32 rbTreeDisposeNodeCB disposeNode);
33 rbTreeNode *rbTreeNext(rbTreeNode *x);
34 rbTreeNode *rbTreePrevious(rbTreeNode *x);
35 int rbTreeSize(rbTreeNode *base);
36 rbTreeNode *rbTreeNew(rbTreeAllocateEmptyNodeCB allocateEmptyNode);
37 void rbTreeDispose(rbTreeNode *base, rbTreeDisposeNodeCB disposeNode);
39 #endif /* NEDIT_RBTREE_H_INCLUDED */