add .gitignore
[tedtools.git] / tbtree.h
index 0df6381..28d8837 100644 (file)
--- a/tbtree.h
+++ b/tbtree.h
 
 
 #include <sys/types.h>
-
-/* C-utils */
-#ifndef offsetof
-#define offsetof(type, field)   ((int) &((type *)0)->field)
-#endif   /* offsetof */
+#include "tools.h" 
 
 #define HASHSIZE(LEN)  ( (LEN)<<1 )
 /* end utils */
@@ -67,16 +63,16 @@ typedef struct {
 #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;
 
@@ -151,7 +147,6 @@ typedef struct {
 } 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);