* Sebastian Hammer, Adam Dickmeiss
*
* $Log: isamc-p.h,v $
- * Revision 1.4 1996-11-08 11:15:28 adam
+ * Revision 1.7 1999-05-26 07:49:14 adam
+ * C++ compilation.
+ *
+ * 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.
*
#include <bfile.h>
#include <isamc.h>
+#ifdef __cplusplus
+extern "C" {
+#endif
+
typedef struct {
int lastblock;
int freelist;
} ISAMC_head;
+typedef unsigned ISAMC_BLOCK_SIZE;
+
typedef struct ISAMC_file_s {
ISAMC_head head;
BFile bf;
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;
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;
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);
int isc_write_block (ISAMC is, int cat, int pos, char *src);
+
+#ifdef __cplusplus
+}
+#endif
+