9425102f717959ab6be837c4fe7e75dc29bf6b00
[IRC.git] / Robust / src / Runtime / DSTM / interface / clookup.h
1 #ifndef _CLOOKUP_H_
2 #define _CLOOKUP_H_
3
4 #include <stdlib.h>
5 #include <stdio.h>
6
7 #define LOADFACTOR 0.75
8 #define HASH_SIZE 100
9
10 typedef struct cachehashlistnode {
11         unsigned int key;
12         void *val; //this can be cast to another type or used to point to a larger structure
13         struct cachehashlistnode *next;
14 } cachehashlistnode_t;
15
16 typedef struct cashehashtable {
17         cachehashlistnode_t *table;     // points to beginning of hash table
18         unsigned int size;
19         unsigned int numelements;
20         float loadfactor;
21 } cachehashtable_t;
22
23 /* Prototypes for hash*/
24 cachehashtable_t *cachehashCreate(unsigned int size, float loadfactor);
25 unsigned int cachehashFunction(cachehashtable_t *table, unsigned int key);
26 unsigned int cachehashInsert(cachehashtable_t *table, unsigned int key, void *val);
27 void *cachehashSearch(cachehashtable_t *table, unsigned int key); //returns val, NULL if not found
28 unsigned int cachehashRemove(cachehashtable_t *table, unsigned int key); //returns -1 if not found
29 unsigned int cachehashResize(cachehashtable_t *table, unsigned int newsize);
30 void cachehashDelete(cachehashtable_t *table);
31 /* end hash */
32
33 #endif
34