From 1a709ceb3d1d4e995303f1f32954fb0a648ff21c Mon Sep 17 00:00:00 2001 From: Heng Li Date: Thu, 17 Sep 2015 19:43:01 -0400 Subject: [PATCH] simplified the kbtree iter a bit --- kbtree.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/kbtree.h b/kbtree.h index 4eff10e..79ab121 100644 --- a/kbtree.h +++ b/kbtree.h @@ -317,11 +317,11 @@ typedef struct { return kb_delp_##name(b, &k); \ } -#define kb_itr_key(type, itr) __KB_KEY(type, (itr)->p->x)[(itr)->p->i] - #define __KB_ITR(name, key_t) \ static inline void kb_itr_first_##name(kbtree_##name##_t *b, kbitr_t *itr) \ { \ + itr->p = 0; \ + if (b->n_keys == 0) return; \ itr->p = itr->stack; \ itr->p->x = b->root; itr->p->i = 0; \ while (itr->p->x->is_internal && __KB_PTR(b, itr->p->x)[0] != 0) { \ @@ -388,6 +388,8 @@ typedef struct { #define kb_itr_first(name, b, i) kb_itr_first_##name(b, i) #define kb_itr_get(name, b, k, i) kb_itr_get_##name(b, k, i) #define kb_itr_next(name, b, i) kb_itr_next_##name(b, i) +#define kb_itr_key(type, itr) __KB_KEY(type, (itr)->p->x)[(itr)->p->i] +#define kb_itr_valid(itr) ((itr)->p >= (itr)->stack) #define kb_size(b) ((b)->n_keys) -- 2.47.3