xref: /trueos/usr.bin/grep/regex/hashtable.h (revision 6608b60465ff680d8774363c5efb950503d6cde5)
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