PostgreSQL Source Code: src/include/lib/rbtree.h Source File (original) (raw)

1

2

3

4

5

6

7

8

9

10

11

12

13#ifndef RBTREE_H

14#define RBTREE_H

15

16

17

18

19

20

21

22

24{

25 char color;

26 struct RBTNode *left;

27 struct RBTNode *right;

28 struct RBTNode *parent;

30

31

33

34

36{

37 LeftRightWalk,

38 RightLeftWalk

40

41

42

43

44

45

47

49{

54};

55

56

61

67 void *arg);

68

73

76

80

81#endif

RBTNode * rbt_find_great(RBTree *rbt, const RBTNode *data, bool equal_match)

RBTNode * rbt_iterate(RBTreeIterator *iter)

RBTNode * rbt_insert(RBTree *rbt, const RBTNode *data, bool *isNew)

void rbt_begin_iterate(RBTree *rbt, RBTOrderControl ctrl, RBTreeIterator *iter)

void(* rbt_freefunc)(RBTNode *x, void *arg)

void(* rbt_combiner)(RBTNode *existing, const RBTNode *newdata, void *arg)

RBTNode * rbt_find_less(RBTree *rbt, const RBTNode *data, bool equal_match)

RBTree * rbt_create(Size node_size, rbt_comparator comparator, rbt_combiner combiner, rbt_allocfunc allocfunc, rbt_freefunc freefunc, void *arg)

RBTNode * rbt_find(RBTree *rbt, const RBTNode *data)

RBTNode *(* rbt_allocfunc)(void *arg)

int(* rbt_comparator)(const RBTNode *a, const RBTNode *b, void *arg)

RBTNode * rbt_leftmost(RBTree *rbt)

void rbt_delete(RBTree *rbt, RBTNode *node)