My Project
Main Page
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Modules
rbtree_internal.h
Go to the documentation of this file.
1
#pragma once
2
3
#define LEFT 0
4
#define RIGHT 1
5
6
typedef
enum
rbtree_color
7
{
8
RED
= 0,
9
BLACK
= 1,
10
}
rbtree_color_t
;
11
12
#define COLOR_MASK (RED|BLACK)
13
14
static
inline
void
15
set_black(
rbtree_node_t
*
node
)
16
{
17
node->
parent_color
&= ~
COLOR_MASK
;
18
node->
parent_color
|=
BLACK
;
19
}
20
21
static
inline
void
22
set_red(
rbtree_node_t
*
node
)
23
{
24
node->
parent_color
&= ~
COLOR_MASK
;
25
node->
parent_color
|=
RED
;
26
}
27
28
static
inline
rbtree_color_t
29
get_color(
const
rbtree_node_t
*
node
)
30
{
31
if
(node == NULL)
32
return
BLACK
;
33
return
(
rbtree_color_t
)(node->
parent_color
&
COLOR_MASK
);
34
}
35
36
static
inline
int
37
is_black(
const
rbtree_node_t
*node)
38
{
39
return
get_color(node) ==
BLACK
;
40
}
41
42
static
inline
int
43
is_red(
const
rbtree_node_t
*node)
44
{
45
return
get_color(node) ==
RED
;
46
}
47
48
static
inline
rbtree_node_t
*
49
get_parent(
const
rbtree_node_t
*node)
50
{
51
return
(
rbtree_node_t
*)(node->
parent_color
& ~
COLOR_MASK
);
52
}
53
54
static
inline
void
55
set_parent(
rbtree_node_t
*node,
56
const
rbtree_node_t
*parent)
57
{
58
node->
parent_color
= (get_color(node)) | ((uintptr_t)parent);
59
}
60
61
void
62
rbtree_rotate
(
rbtree_t
*tree,
63
rbtree_node_t
*node,
64
int
left);
node
rbtree_node_t * node
Definition:
rbtree.h:45
rbtree_color
rbtree_color
Definition:
rbtree_internal.h:6
BLACK
Definition:
rbtree_internal.h:9
rbtree_rotate
void rbtree_rotate(rbtree_t *tree, rbtree_node_t *node, int left)
Definition:
rbtree_rotate.c:5
rbtree_node::parent_color
uintptr_t parent_color
Definition:
rbtree.h:17
rbtree_node
Definition:
rbtree.h:15
rbtree
Definition:
rbtree.h:21
rbtree_color_t
enum rbtree_color rbtree_color_t
RED
Definition:
rbtree_internal.h:8
COLOR_MASK
#define COLOR_MASK
Definition:
rbtree_internal.h:12
source
util
rbtree_internal.h
Generated on Mon Nov 24 2014 23:37:59 for My Project by
1.8.8