Use cache in dict - not in bfile.
[idzebra-moved-to-github.git] / include / dict.h
index 42431a0..8ca8378 100644 (file)
@@ -4,7 +4,10 @@
  * Sebastian Hammer, Adam Dickmeiss
  *
  * $Log: dict.h,v $
- * Revision 1.1  1994-08-16 16:26:53  adam
+ * Revision 1.2  1994-08-17 13:32:33  adam
+ * Use cache in dict - not in bfile.
+ *
+ * Revision 1.1  1994/08/16  16:26:53  adam
  * Added dict.
  *
  */
@@ -23,11 +26,43 @@ struct Dict_head {
     Dict_ptr free_list, last;
 };
 
-typedef struct Dict_struct {
+struct Dict_file_block
+{
+    struct Dict_file_block *h_next, **h_prev;
+    struct Dict_file_block *lru_next, *lru_prev;
+    void *data;
+    int dirty;
+    int no;
+};
+
+typedef struct Dict_file_struct
+{
+    int cache;
     BFile bf;
+
+    struct Dict_file_block *all_blocks;
+    struct Dict_file_block *free_list;
+    struct Dict_file_block **hash_array;
+
+    struct Dict_file_block *lru_back, *lru_front;
+    int hash_size;
+    void *all_data;
+
+    int  hits;
+    int  misses;
+} *Dict_BFile;
+
+typedef struct Dict_struct {
+    Dict_BFile dbf;
     struct Dict_head head;
 } *Dict;
 
+int dict_bf_readp (Dict_BFile bf, int no, void **bufp);
+int dict_bf_newp (Dict_BFile bf, int no, void **bufp);
+int dict_bf_touch (Dict_BFile bf, int no);
+void dict_bf_flush_blocks (Dict_BFile bf, int no_to_flush);
+Dict_BFile dict_bf_open (const char *name, int block_size, int cache, int rw);
+int dict_bf_close (Dict_BFile dbf);
 #define DICT_MAGIC "dict00"
 
 typedef int Dict_info;
@@ -51,7 +86,6 @@ int dict_strlen (const Dict_char *s);
 
 #define DICT_to_str(x)  sizeof(Dict_info)+sizeof(Dict_ptr)
 
-
 /*
    type            type of page
    backptr         pointer to parent