GRASS GIS 8 Programmer's Manual 8.4.1(2025)-45ca3179ab
Loading...
Searching...
No Matches
btree/next.c
Go to the documentation of this file.
1#include <grass/btree.h>
2
3int btree_next(BTREE *B, void **key, void **data)
4{
5 int q;
6
7 if (B->N <= 0)
8 return 0;
9
10 /* if rewound, start at root and go all the way to the left */
11 if (B->cur == 0)
12 B->cur = 1;
13
14 /* go to the right */
15 else
16 B->cur = B->node[B->cur].right;
17
18 if (B->cur == 0) /* no more */
19 return 0;
20
21 if (B->cur < 0) /* thread. stop here */
22 B->cur = -(B->cur);
23 else /* go all the way left */
24 while ((q = B->node[B->cur].left))
25 B->cur = q;
26
27 *key = B->node[B->cur].key;
28 *data = B->node[B->cur].data;
29
30 return 1;
31}
int btree_next(BTREE *B, void **key, void **data)
Definition btree/next.c:3