1 /* $FreeBSD$ */ 2 3 #ifndef HASHTABLE_H 4 #define HASHTABLE_H 1 5 6 #include <sys/types.h> 7 8 #define HASH_OK 0 9 #define HASH_UPDATED 1 10 #define HASH_FAIL 2 11 #define HASH_FULL 3 12 #define HASH_NOTFOUND 4 13 14 #define HASHSTEP(x,c) (((x << 5) + x) + (c)) 15 16 typedef struct { 17 void *key; 18 void *value; 19 } hashtable_entry; 20 21 typedef struct { 22 size_t key_size; 23 size_t table_size; 24 size_t usage; 25 size_t value_size; 26 hashtable_entry **entries; 27 } hashtable; 28 29 void hashtable_free(hashtable *); 30 int hashtable_get(hashtable *, const void *, void *); 31 hashtable *hashtable_init(size_t, size_t, size_t); 32 int hashtable_put(hashtable *, const void *, const void *); 33 int hashtable_remove(hashtable *, const void *); 34 35 #endif /* HASHTABLE.H */ 36