1 #pragma once 2 3 #include <stdbool.h> 4 5 struct hash; 6 7 struct hash_iter { 8 const struct hash *hash; 9 unsigned int bucket; 10 unsigned int entry; 11 }; 12 13 struct hash *hash_new(unsigned int n_buckets, void (*free_value)(void *value)); 14 void hash_free(struct hash *hash); 15 int hash_add(struct hash *hash, const char *key, const void *value); 16 int hash_add_unique(struct hash *hash, const char *key, const void *value); 17 int hash_del(struct hash *hash, const char *key); 18 void *hash_find(const struct hash *hash, const char *key); 19 unsigned int hash_get_count(const struct hash *hash); 20 void hash_iter_init(const struct hash *hash, struct hash_iter *iter); 21 bool hash_iter_next(struct hash_iter *iter, const char **key, 22 const void **value); 23