-#include <Judy.h>
+#ifndef OSRF_HASH_H
+#define OSRF_HASH_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
*/
void osrfHashIteratorReset( osrfHashIterator* itr );
+#endif