1234567891011121314151617181920212223242526272829303132 |
- #include <grass/btree.h>
- int btree_next(BTREE * B, void **key, void **data)
- {
- int q;
- if (B->N <= 0)
- return 0;
- /* if rewound, start at root and go all the way to the left */
- if (B->cur == 0)
- B->cur = 1;
- /* go to the right */
- else
- B->cur = B->node[B->cur].right;
- if (B->cur == 0) /* no more */
- return 0;
- if (B->cur < 0) /* thread. stop here */
- B->cur = -(B->cur);
- else /* go all the way left */
- while ((q = B->node[B->cur].left))
- B->cur = q;
- *key = B->node[B->cur].key;
- *data = B->node[B->cur].data;
- return 1;
- }
|