adding a test case
[IRC.git] / Robust / src / Runtime / DSTM / interface / mlookup.h
1 #ifndef _MLOOKUP_H_
2 #define _MLOOKUP_H_
3
4 #include <stdlib.h>
5 #include <stdio.h>
6 #include <pthread.h>
7
8 #define MLOADFACTOR 0.25
9 #define MHASH_SIZE 1024
10
11 typedef struct mhashlistnode {
12   unsigned int key;
13   void *val;       //this can be cast to another type or used to point to a larger structure
14   struct mhashlistnode *next;
15 } mhashlistnode_t;
16
17 typedef struct mhashtable {
18   mhashlistnode_t *table;       // points to beginning of hash table
19   unsigned int size;
20   unsigned int mask;
21   unsigned int numelements;
22   unsigned int threshold;
23   double loadfactor;
24   pthread_mutex_t locktable;
25 } mhashtable_t;
26
27 unsigned int mhashCreate(unsigned int size, double loadfactor);
28 unsigned int mhashFunction(unsigned int key);
29 void mhashInsert(unsigned int key, void *val);
30 void *mhashSearch(unsigned int key); //returns val, NULL if not found
31 unsigned int mhashRemove(unsigned int key); //returns -1 if not found
32 unsigned int mhashResize(unsigned int newsize);
33 unsigned int *mhashGetKeys(unsigned int *numKeys);
34 void mhashPrint();
35
36 #endif
37