#define TINDEX_WALK(ti, twp) \
for (struct tindex_walk *_ti_ctx = tindex_walk_init(ti, twp); _ti_ctx; _ti_ctx = NULL) \
- for (u64 idx; idx = tindex_walk_next(ti, _ti_ctx); )
+ for (u64 idx; idx = tindex_walk_next(_ti_ctx); )
/**
* Dump the index. Useful for debugging.
test_trie_get(&tt, i * mul + add, 1);
}
+ u32 data[2];
+ uint dlen;
+ struct tindex_walk_params twp = {
+ .begin = 1,
+ .maxlen = TINDEX_WALK_NOMAXLEN,
+ .data = data,
+ .dlen = &dlen,
+ };
+
+ uint cnt = 0;
+ u32 seen[max / 32];
+ memset(seen, 0, sizeof(seen));
+
+ TINDEX_WALK(tt.ti, &twp) {
+
+ bt_assert(dlen == 64);
+ u64 num = ((u64) data[0] << 32) + ((u64) data[1]);
+
+ if (num < max) {
+ bt_assert((seen[num / 32] & (1 << (num % 32))) == 0);
+ seen[num / 32] |= 1 << (num % 32);
+ } else
+ cnt++;
+
+ dlen = 42; /* Mess it for testing purposes. */
+ }
+
+ bt_assert(cnt == max);
+ for (u64 i=0; i<sizeof(seen)/sizeof(u32); i++)
+ bt_assert(!~seen[i]);
+
/*
for (u64 i = 0; i < 20; i++)
test_trie_remove(&tt, i);