1
#ifndef hashtab_h_included
2
#define hashtab_h_included
5
A simple hash table whose keys are strings and values are HVALUE (void *)
6
Hash table copies & manages its own copies of keys
10
typedef struct tag_hashtab *HASHTAB;
11
typedef struct tag_hashtab_iter * HASHTAB_ITER;
13
typedef void (*DELFUNC)(HVALUE val);
15
/* create and destroy hash table */
16
HASHTAB create_hashtab(void);
17
void destroy_hashtab(HASHTAB tab, DELFUNC func);
19
/* add and remove elements */
20
HVALUE insert_hashtab(HASHTAB tab, CNSTRING key, HVALUE val);
21
HVALUE remove_hashtab(HASHTAB tab, CNSTRING key);
23
/* count of elements */
24
INT get_hashtab_count(HASHTAB tab);
27
HVALUE find_hashtab(HASHTAB tab, CNSTRING key, BOOLEAN * present);
28
BOOLEAN in_hashtab(HASHTAB tab, CNSTRING key);
31
HASHTAB_ITER begin_hashtab(HASHTAB tab);
32
BOOLEAN next_hashtab(HASHTAB_ITER tabit, CNSTRING *pkey, HVALUE *pval);
33
HVALUE change_hashtab(HASHTAB_ITER tabit, HVALUE newval);
34
void end_hashtab(HASHTAB_ITER * ptabit);
37
#endif /* hashtab_h_included */