X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=isamc%2Fisamc-p.h;h=d9275b65e1f4edd90c95e5a4271a0c104bbf5c6c;hb=85a2a0b28cb516d28ac70b7824f2b7d4b07e56ae;hp=0d4d021e46414ae871515078ca29ca2e4f58816e;hpb=7af74fb4a98eb4baeffb6a1a648e837563fe7b4f;p=idzebra-moved-to-github.git diff --git a/isamc/isamc-p.h b/isamc/isamc-p.h index 0d4d021..d9275b6 100644 --- a/isamc/isamc-p.h +++ b/isamc/isamc-p.h @@ -4,7 +4,14 @@ * Sebastian Hammer, Adam Dickmeiss * * $Log: isamc-p.h,v $ - * Revision 1.4 1996-11-08 11:15:28 adam + * Revision 1.6 1998-03-18 09:23:55 adam + * Blocks are stored in chunks on free list - up to factor 2 in speed. + * Fixed bug that could occur in block category rearrangemen. + * + * Revision 1.5 1998/03/16 10:37:24 adam + * Added more statistics. + * + * Revision 1.4 1996/11/08 11:15:28 adam * Number of keys in chain are stored in first block and the function * to retrieve this information, isc_pp_num is implemented. * @@ -27,6 +34,8 @@ typedef struct { int freelist; } ISAMC_head; +typedef unsigned ISAMC_BLOCK_SIZE; + typedef struct ISAMC_file_s { ISAMC_head head; BFile bf; @@ -39,6 +48,17 @@ typedef struct ISAMC_file_s { int no_released; int no_remap; + int no_forward; + int no_backward; + int sum_forward; + int sum_backward; + int no_next; + int no_prev; + + char *alloc_buf; + int alloc_entries_num; + int alloc_entries_max; + int fc_max; int *fc_list; } *ISAMC_file; @@ -53,8 +73,8 @@ struct ISAMC_s { struct ISAMC_PP_s { char *buf; - unsigned offset; - unsigned short size; + ISAMC_BLOCK_SIZE offset; + ISAMC_BLOCK_SIZE size; int cat; int pos; int next; @@ -64,9 +84,8 @@ struct ISAMC_PP_s { int numKeys; }; -#define ISAMC_BLOCK_OFFSET_N (sizeof(int)+sizeof(short)) -#define ISAMC_BLOCK_OFFSET_1 (sizeof(int)+sizeof(short)+sizeof(int)) - +#define ISAMC_BLOCK_OFFSET_N (sizeof(int)+sizeof(ISAMC_BLOCK_SIZE)) +#define ISAMC_BLOCK_OFFSET_1 (sizeof(int)+sizeof(ISAMC_BLOCK_SIZE)+sizeof(int)) int isc_alloc_block (ISAMC is, int cat); void isc_release_block (ISAMC is, int cat, int pos); int isc_read_block (ISAMC is, int cat, int pos, char *dst);