blob: 25b9ba01c01e305bab5e1cb92683f94fae1c3f2f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#pragma once
/*
* Private definitions
* This file contains private definitions for the RB-Tree implementation, but
* which are used by our test-suite.
*/
#include <stddef.h>
#include "c-rbtree.h"
/*
* Macros
*/
#define _public_ __attribute__((__visibility__("default")))
/*
* Nodes
*/
static inline void *c_rbnode_raw(CRBNode *n) {
return (void *)(n->__parent_and_flags & ~C_RBNODE_FLAG_MASK);
}
static inline unsigned long c_rbnode_flags(CRBNode *n) {
return n->__parent_and_flags & C_RBNODE_FLAG_MASK;
}
static inline _Bool c_rbnode_is_red(CRBNode *n) {
return c_rbnode_flags(n) & C_RBNODE_RED;
}
static inline _Bool c_rbnode_is_black(CRBNode *n) {
return !(c_rbnode_flags(n) & C_RBNODE_RED);
}
static inline _Bool c_rbnode_is_root(CRBNode *n) {
return c_rbnode_flags(n) & C_RBNODE_ROOT;
}
|