moved osrf_hash code to osrf_big_hash as the Judy big hash implementation
[Evergreen.git] / OpenSRF / src / libstack / osrf_hash.h
index 0290e23..e176b51 100644 (file)
@@ -1,25 +1,41 @@
 #ifndef OSRF_HASH_H
 #define OSRF_HASH_H
 
-#include <Judy.h>
 #include "opensrf/utils.h"
 #include "opensrf/string_array.h"
+#include "osrf_list.h"
 
 #define OSRF_HASH_MAXKEY 256
 
+#define OSRF_HASH_KEY_MASK 0x7FF  /* hash keys are a maximun of 2047 in size */
+#define OSRF_HASH_KEY_SIZE 2048  /* size of the container list for the keys */
+
+
 struct __osrfHashStruct {
-       Pvoid_t hash;                                                   /* the hash */
+       osrfList* hash; /* this hash */
        void (*freeItem) (char* key, void* item);       /* callback for freeing stored items */
+       unsigned int size;
 };
 typedef struct __osrfHashStruct osrfHash;
 
+struct _osrfHashNodeStruct {
+       char* key;
+       void* item;
+};
+typedef struct _osrfHashNodeStruct osrfHashNode;
+
 
 struct __osrfHashIteratorStruct {
        char* current;
+       int currentIdx;
        osrfHash* hash;
+       osrfStringArray* keys;
 };
 typedef struct __osrfHashIteratorStruct osrfHashIterator;
 
+osrfHashNode* osrfNewHashNode(char* key, void* item);
+void osrfHashNodeFree(osrfHashNode*);
+
 /**
   Allocates a new hash object
   */