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