2 * Copyright (c) 1995-1996, Index Data.
3 * See the file LICENSE for details.
4 * Sebastian Hammer, Adam Dickmeiss
7 * Revision 1.6 1998-03-18 09:23:55 adam
8 * Blocks are stored in chunks on free list - up to factor 2 in speed.
9 * Fixed bug that could occur in block category rearrangemen.
11 * Revision 1.5 1998/03/16 10:37:24 adam
12 * Added more statistics.
14 * Revision 1.4 1996/11/08 11:15:28 adam
15 * Number of keys in chain are stored in first block and the function
16 * to retrieve this information, isc_pp_num is implemented.
18 * Revision 1.3 1996/11/04 14:08:55 adam
19 * Optimized free block usage.
21 * Revision 1.2 1996/11/01 08:59:13 adam
22 * First version of isc_merge that supports update/delete.
24 * Revision 1.1 1996/10/29 13:40:47 adam
37 typedef unsigned ISAMC_BLOCK_SIZE;
39 typedef struct ISAMC_file_s {
59 int alloc_entries_num;
60 int alloc_entries_max;
76 ISAMC_BLOCK_SIZE offset;
77 ISAMC_BLOCK_SIZE size;
82 void *decodeClientData;
87 #define ISAMC_BLOCK_OFFSET_N (sizeof(int)+sizeof(ISAMC_BLOCK_SIZE))
88 #define ISAMC_BLOCK_OFFSET_1 (sizeof(int)+sizeof(ISAMC_BLOCK_SIZE)+sizeof(int))
89 int isc_alloc_block (ISAMC is, int cat);
90 void isc_release_block (ISAMC is, int cat, int pos);
91 int isc_read_block (ISAMC is, int cat, int pos, char *dst);
92 int isc_write_block (ISAMC is, int cat, int pos, char *src);