2 * Copyright (c) 1995-1996, Index Data.
3 * See the file LICENSE for details.
21 typedef unsigned ISAMD_BLOCK_SIZE;
23 typedef struct ISAMD_file_s {
28 int no_writes; /* statistics, to be used properly... */
42 char *alloc_buf; /* free-list handling (?) */
43 int alloc_entries_num;
44 int alloc_entries_max;
58 typedef struct ISAMD_DIFF_s *ISAMD_DIFF;
61 char *buf; /* buffer for read/write operations */
62 ISAMD_BLOCK_SIZE offset; /* position for next read/write */
63 ISAMD_BLOCK_SIZE size; /* size of actual pointer data */
64 int cat; /* category of this block */
65 int pos; /* block number of this block */
66 int next; /* number of the next block */
67 int diffs; /* either block or offset (in head) of start of diffs */
69 void *decodeClientData;
71 char *diffbuf; /* buffer for the diff block, only when reading */
75 #define ISAMD_BLOCK_OFFSET_N (sizeof(int) + \
76 sizeof(ISAMD_BLOCK_SIZE))
78 #define ISAMD_BLOCK_OFFSET_1 (sizeof(int) + \
79 sizeof(ISAMD_BLOCK_SIZE) + \
81 sizeof(ISAMD_BLOCK_SIZE))
85 int isamd_alloc_block (ISAMD is, int cat);
86 void isamd_release_block (ISAMD is, int cat, int pos);
87 int isamd_read_block (ISAMD is, int cat, int pos, char *dst);
88 int isamd_write_block (ISAMD is, int cat, int pos, char *src);
89 void isamd_free_diffs(ISAMD_PP pp);
99 * Revision 1.4 1999-07-21 14:24:50 heikki
100 * isamd write and read functions ok, except when diff block full.
101 * (merge not yet done)
103 * Revision 1.3 1999/07/14 15:05:30 heikki
104 * slow start on isam-d
106 * Revision 1.1 1999/07/14 12:34:43 heikki
107 * Copied from isamh, starting to change things...