9 TAILQ_ENTRY(hnode
) hn_next
;
12 typedef struct htable
{
13 size_t ht_size
; /* size must be a power of 2 */
15 unsigned int ht_factor
;
16 unsigned int ht_limit
;
17 unsigned int (*ht_hashf
)(const void *key
);
18 int (*ht_cmpf
)(const void *arg1
, const void *arg2
);
19 void (*ht_printf
)(const void *key
, const void *data
);
20 TAILQ_HEAD(htablehead
, hnode
) *ht_table
;
23 typedef struct htablehead hhead_t
;
31 /* Function prototypes */
32 htret_t
htable_init(htable_t
*htable
, size_t size
, unsigned int factor
);
33 void htable_free(htable_t
*htable
);
34 htret_t
htable_grow(htable_t
*htable
);
35 htret_t
htable_insert(htable_t
*htable
, const void *key
, void *data
);
36 htret_t
htable_remove(htable_t
*htable
, const void *key
);
37 void *htable_search(const htable_t
*htable
, const void *key
);
38 void htable_print(const htable_t
*htable
);