Added probe function

pull/2/head v0.2.0
tidwall 4 years ago
parent 01fb55d13a
commit 3db84f0b0a

@ -238,6 +238,19 @@ void *hashmap_get(struct hashmap *map, void *key) {
} }
} }
// hashmap_probe returns the item in the bucket at position or NULL if an item
// is not set for that bucket. The position is 'moduloed' by the number of
// buckets in the hashmap.
void *hashmap_probe(struct hashmap *map, uint64_t position) {
size_t i = position & map->mask;
struct bucket *bucket = bucket_at(map, i);
if (!bucket->dib) {
return NULL;
}
return bucket_item(bucket);
}
// hashmap_delete removes an item from the hash map and returns it. If the // hashmap_delete removes an item from the hash map and returns it. If the
// item is not found then NULL is returned. // item is not found then NULL is returned.
void *hashmap_delete(struct hashmap *map, void *key) { void *hashmap_delete(struct hashmap *map, void *key) {

@ -24,6 +24,7 @@ bool hashmap_oom(struct hashmap *map);
void *hashmap_get(struct hashmap *map, void *item); void *hashmap_get(struct hashmap *map, void *item);
void *hashmap_set(struct hashmap *map, void *item); void *hashmap_set(struct hashmap *map, void *item);
void *hashmap_delete(struct hashmap *map, void *item); void *hashmap_delete(struct hashmap *map, void *item);
void *hashmap_probe(struct hashmap *map, uint64_t position);
bool hashmap_scan(struct hashmap *map, bool hashmap_scan(struct hashmap *map,
bool (*iter)(const void *item, void *udata), void *udata); bool (*iter)(const void *item, void *udata), void *udata);
void hashmap_set_allocator(void *(*malloc)(size_t), void (*free)(void*)); void hashmap_set_allocator(void *(*malloc)(size_t), void (*free)(void*));

Loading…
Cancel
Save