xref: /aosp_15_r20/external/kmod/shared/hash.h (revision cc4ad7da8cefe208cb129ac2aa9a357c7c72deb2)
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