#ifndef _HASHTBL_H_ #define _HASHTBL_H_ #include #include #include typedef struct hashtbl { size_t size; struct hashnode_s **nodes; unsigned int (*hashfunc)(const char *); } HASHTBL; struct hashnode_s { char *key; void *data; struct hashnode_s *next; }; /* function prototypes */ char *strdup(const char *); HASHTBL *hashtbl_create(size_t, unsigned int (*hashfunc)(const char *)); void hashtbl_destroy(HASHTBL *); int hashtbl_insert(HASHTBL *, const char *, void *); int hashtbl_remove(HASHTBL *, const char *); void *hashtbl_get(HASHTBL *, const char *); int hashtbl_resize(HASHTBL *, size_t); #endif