#define TBTPOINTERSIZE(db) PTRALIGN( (db->keylen) ? TBTPOINTERHRDSZ + db->keylen : sizeof(TBTPointer) )
#define ISINFPOINTER(db, page, ptr) ( (page)->isleaf==0 && (page)->rightlink == 0 && (char*)(ptr) == (page)->data + ((page)->npointer-1) * TBTPOINTERSIZE(db) )
+/* can changed up to 65536 */
#define TBTREEPAGESIZE 8192
#define TBTPAGEHDRSZ (2*sizeof(u_int32_t))
typedef struct {
u_int32_t rightlink;
u_int32_t
- freespace:13, /* correlate to BTREEPAGESIZE */
- npointer:10,
- isleaf:1,
- unused: 8;
+ freespace:16, /* correlate to TBTREEPAGESIZE */
+ npointer:15,
+ isleaf:1;
char data[TBTREEPAGESIZE-TBTPAGEHDRSZ];
} TBTPage;
} TBTIterator;
int TBTInitIterator(TBTree *db, TBTIterator *iterator );
-int TBTInitPrefixIterator(TBTree *db, TBTIterator *iterator, TBTValue *key );
int TBTIterate(TBTree *db, TBTIterator *iterator, TBTValue *key, TBTValue *value );
void TBTFreeIterator(TBTree *db, TBTIterator *iterator);