My Project
Main Page
Modules
Data Structures
Files
File List
Globals
All
Data Structures
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Modules
rbtree_iterator.c
Go to the documentation of this file.
1
#include <
3ds/util/rbtree.h
>
2
#include "
rbtree_internal.h
"
3
4
static
inline
rbtree_node_t
*
5
do_iterate(
const
rbtree_node_t
*
node
,
6
int
next)
7
{
8
rbtree_node_t
*it = (
rbtree_node_t
*)node;
9
10
if
(it->
child
[next] != NULL)
11
{
12
it = it->
child
[next];
13
while
(it->
child
[!next] != NULL)
14
it = it->
child
[!next];
15
}
16
else
17
{
18
rbtree_node_t
*parent = get_parent(node);
19
while
(parent != NULL && it == parent->
child
[next])
20
{
21
it = parent;
22
parent = get_parent(it);
23
}
24
25
it = parent;
26
}
27
28
return
it;
29
}
30
31
rbtree_node_t
*
32
rbtree_node_next
(
const
rbtree_node_t
*node)
33
{
34
return
do_iterate(node,
RIGHT
);
35
}
36
37
rbtree_node_t
*
38
rbtree_node_prev
(
const
rbtree_node_t
*node)
39
{
40
return
do_iterate(node,
LEFT
);
41
}
rbtree_node_prev
rbtree_node_t * rbtree_node_prev(const rbtree_node_t *node)
Definition:
rbtree_iterator.c:38
node
rbtree_node_t * node
Definition:
rbtree.h:45
RIGHT
#define RIGHT
Definition:
rbtree_internal.h:4
rbtree_internal.h
rbtree.h
rbtree_node
Definition:
rbtree.h:15
rbtree_node_next
rbtree_node_t * rbtree_node_next(const rbtree_node_t *node)
Definition:
rbtree_iterator.c:32
LEFT
#define LEFT
Definition:
rbtree_internal.h:3
rbtree_node::child
rbtree_node_t * child[2]
Definition:
rbtree.h:18
source
util
rbtree_iterator.c
Generated on Mon Nov 24 2014 23:37:59 for My Project by
1.8.8