#ifndef _LLOOKUP_H_
#define _LLOOKUP_H_
-#define LOADFACTOR 0.75
+#include <stdlib.h>
+#include <stdio.h>
+#include <pthread.h>
+
+#define SIMPLE_LLOOKUP
+
+#define LOADFACTOR 0.5
#define HASH_SIZE 100
-typedef struct hashlistnode {
+typedef struct lhashlistnode {
unsigned int oid;
unsigned int mid;
- struct hashlistnode *next;
+ struct lhashlistnode *next;
} lhashlistnode_t;
-typedef struct hashtable {
+typedef struct lhashtable {
lhashlistnode_t *table; // points to beginning of hash table
unsigned int size;
unsigned int numelements;
float loadfactor;
+ pthread_mutex_t locktable;
} lhashtable_t;
-/* Prototypes for hash*/
-lhashtable_t *lhashCreate(unsigned int size, float loadfactor);
-unsigned int lhashFunction(lhashtable_t *table, unsigned int oid);
-void lhashInsert(lhashtable_t *table, unsigned int oid, unsigned int mid);
-int lhashSearch(lhashtable_t *table, unsigned int oid); //returns val, NULL if not found
-int lhashRemove(lhashtable_t *table, unsigned int oid); //returns -1 if not found
-void lhashResize(lhashtable_t *table, unsigned int newsize);
-/* end hash */
+//returns 0 for success and 1 for failure
+unsigned int lhashCreate(unsigned int size, float loadfactor);
+//returns 0 for success and 1 for failure
+unsigned int lhashInsert(unsigned int oid, unsigned int mid);
+//returns mid, 0 if not found
+unsigned int lhashSearch(unsigned int oid);
+//returns 0 for success and 1 for failure
+unsigned int lhashRemove(unsigned int oid);
-#endif
+//helper functions
+unsigned int lhashResize(unsigned int newsize);
+unsigned int lhashFunction(unsigned int oid);
+#endif