Lines Matching defs:map
4 * Generic non-thread safe hash map implementation.
73 void hashmap__init(struct hashmap *map, hashmap_hash_fn hash_fn,
78 void hashmap__clear(struct hashmap *map);
79 void hashmap__free(struct hashmap *map);
81 size_t hashmap__size(const struct hashmap *map);
82 size_t hashmap__capacity(const struct hashmap *map);
112 int hashmap__insert(struct hashmap *map, const void *key, void *value,
116 static inline int hashmap__add(struct hashmap *map,
119 return hashmap__insert(map, key, value, HASHMAP_ADD, NULL, NULL);
122 static inline int hashmap__set(struct hashmap *map,
126 return hashmap__insert(map, key, value, HASHMAP_SET,
130 static inline int hashmap__update(struct hashmap *map,
134 return hashmap__insert(map, key, value, HASHMAP_UPDATE,
138 static inline int hashmap__append(struct hashmap *map,
141 return hashmap__insert(map, key, value, HASHMAP_APPEND, NULL, NULL);
144 bool hashmap__delete(struct hashmap *map, const void *key,
147 bool hashmap__find(const struct hashmap *map, const void *key, void **value);
151 * @map: hashmap to iterate
155 #define hashmap__for_each_entry(map, cur, bkt) \
156 for (bkt = 0; bkt < map->cap; bkt++) \
157 for (cur = map->buckets[bkt]; cur; cur = cur->next)
162 * @map: hashmap to iterate
167 #define hashmap__for_each_entry_safe(map, cur, tmp, bkt) \
168 for (bkt = 0; bkt < map->cap; bkt++) \
169 for (cur = map->buckets[bkt]; \
175 * @map: hashmap to iterate
179 #define hashmap__for_each_key_entry(map, cur, _key) \
180 for (cur = map->buckets \
181 ? map->buckets[hash_bits(map->hash_fn((_key), map->ctx), map->cap_bits)] \
185 if (map->equal_fn(cur->key, (_key), map->ctx))
187 #define hashmap__for_each_key_entry_safe(map, cur, tmp, _key) \
188 for (cur = map->buckets \
189 ? map->buckets[hash_bits(map->hash_fn((_key), map->ctx), map->cap_bits)] \
193 if (map->equal_fn(cur->key, (_key), map->ctx))