Copied from isamh, starting to change things...
[idzebra-moved-to-github.git] / isamc / isamd-p.h
diff --git a/isamc/isamd-p.h b/isamc/isamd-p.h
new file mode 100644 (file)
index 0000000..0c62419
--- /dev/null
@@ -0,0 +1,99 @@
+/*
+ * Copyright (c) 1995-1996, Index Data.
+ * See the file LICENSE for details.
+ * Heikki Levanto
+ *
+ *
+ */
+
+#include <bfile.h>
+#include <isamd.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct {
+    int lastblock;
+    int freelist;
+} ISAMH_head;
+
+typedef unsigned ISAMH_BLOCK_SIZE;
+
+typedef struct ISAMH_file_s {
+    ISAMH_head head;
+    BFile bf;
+    int head_is_dirty;
+    
+    int no_writes;
+    int no_reads;
+    int no_skip_writes;
+    int no_allocated;
+    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;
+} *ISAMH_file;
+
+struct ISAMH_s {
+    int no_files;
+    int max_cat;
+  //  char *merge_buf;
+    char *startblock; /* start of the chain, update lastptr and numKeys here */
+    char *lastblock;  /* end of the chain, append here */
+    ISAMH_M method;
+    ISAMH_file files;
+}; 
+
+struct ISAMH_PP_s {
+    char *buf;
+    ISAMH_BLOCK_SIZE offset;
+    ISAMH_BLOCK_SIZE size;
+    int cat;  /* category of this block */
+    int pos;  /* block number of this block */
+    int next; /* number of the next block */
+    ISAMH is;
+    void *decodeClientData;
+    int deleteFlag;
+    int numKeys;
+    ISAMH_BLOCK_SIZE lastblock;  /* last block in chain */
+};
+
+#define ISAMH_BLOCK_OFFSET_N (sizeof(int) +  \
+                              sizeof(ISAMH_BLOCK_SIZE)) 
+/* == 8 */
+#define ISAMH_BLOCK_OFFSET_1 (sizeof(int) + \
+                              sizeof(ISAMH_BLOCK_SIZE) + \
+                              sizeof(int) + \
+                              sizeof(ISAMH_BLOCK_SIZE)) 
+/* == 16 */
+int isamd_alloc_block (ISAMH is, int cat);
+void isamd_release_block (ISAMH is, int cat, int pos);
+int isamd_read_block (ISAMH is, int cat, int pos, char *dst);
+int isamd_write_block (ISAMH is, int cat, int pos, char *src);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
+/*
+ * $Log: isamd-p.h,v $
+ * Revision 1.1  1999-07-14 12:34:43  heikki
+ * Copied from isamh, starting to change things...
+ *
+ *
+ */
\ No newline at end of file