#ifndef TLHASH_H #define TLHASH_H #include typedef struct el { void *key, *value; size_t key_length; struct el *next; } tlhash_element_t; typedef struct { size_t n_buckets, size; tlhash_element_t **buckets; } tlhash_t; int tlhash_init ( tlhash_t *tab, size_t n_buckets ); int tlhash_finalize ( tlhash_t *tab ); int tlhash_insert ( tlhash_t *tab, void *key, size_t keylen, void *val ); int tlhash_lookup ( tlhash_t *tab, void *key, size_t keylen, void **val ); int tlhash_remove ( tlhash_t *tab, void *key, size_t key_length ); size_t tlhash_size ( tlhash_t *tab ); void tlhash_keys ( tlhash_t *tab, void **keys ); void tlhash_values ( tlhash_t *tab, void **values ); #define TLHASH_SUCCESS 0 /* Success */ #define TLHASH_ENOMEM 1 /* No memory available */ #define TLHASH_ENOENT 2 /* No such table entry */ #define TLHASH_EEXIST 3 /* Table entry already exists */ #endif