]> CyberLeo.Net >> Repos - FreeBSD/releng/9.2.git/blob - usr.bin/grep/regex/hashtable.h
- Copy stable/9 to releng/9.2 as part of the 9.2-RELEASE cycle.
[FreeBSD/releng/9.2.git] / usr.bin / grep / regex / hashtable.h
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 */