X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=libopkg%2Fhash_table.h;h=9fa926fa4cd8ece8d6d3eba1dec2c2ae20898a6a;hb=5161628bdab57405a6fa6eec0366439d6d375c63;hp=388a9669171fe77a7ca3637ad2d1029e0c954f31;hpb=4b0b7ca249bfa4ecc099c2ca56527eb91776f198;p=oweals%2Fopkg-lede.git diff --git a/libopkg/hash_table.h b/libopkg/hash_table.h index 388a966..9fa926f 100644 --- a/libopkg/hash_table.h +++ b/libopkg/hash_table.h @@ -22,7 +22,7 @@ typedef struct hash_entry hash_entry_t; typedef struct hash_table hash_table_t; struct hash_entry { - const char * key; + char * key; void * data; struct hash_entry * next; }; @@ -30,15 +30,22 @@ struct hash_entry { struct hash_table { const char *name; hash_entry_t * entries; - int n_entries; /* number of buckets */ - int n_elements; - const char * (*hash_entry_key)(void * data); + unsigned int n_buckets; + unsigned int n_elements; + + /* useful stats */ + unsigned int n_used_buckets; + unsigned int n_collisions; + unsigned int max_bucket_len; + unsigned int n_hits, n_misses; }; -int hash_table_init(const char *name, hash_table_t *hash, int len); +void hash_table_init(const char *name, hash_table_t *hash, int len); void hash_table_deinit(hash_table_t *hash); +void hash_print_stats(hash_table_t *hash); void *hash_table_get(hash_table_t *hash, const char *key); int hash_table_insert(hash_table_t *hash, const char *key, void *value); +int hash_table_remove(hash_table_t *has, const char *key); void hash_table_foreach(hash_table_t *hash, void (*f)(const char *key, void *entry, void *data), void *data); #endif /* _HASH_TABLE_H_ */