summaryrefslogtreecommitdiff
path: root/src/shared/hashmap.h
diff options
context:
space:
mode:
authorMichal Schmidt <mschmidt@redhat.com>2014-10-25 18:18:26 -0400
committerAnthony G. Basile <blueness@gentoo.org>2014-10-25 18:18:26 -0400
commit4531818f12221fdedba9f6f4913d22228628328c (patch)
tree60bed7efe713cce5a840914938bef998e0c9ae0c /src/shared/hashmap.h
parentac2d134b8c27629754463d505b2aaab3c99c71c6 (diff)
hashmap: introduce hashmap_reserve()
With the current hashmap implementation that uses chaining, placing a reservation can serve two purposes: - To optimize putting of entries if the number of entries to put is known. The reservation allocates buckets, so later resizing can be avoided. - To avoid having very long bucket chains after using hashmap_move(_one). In an alternative hashmap implementation it will serve an additional purpose: - To guarantee a subsequent hashmap_move(_one) will not fail with -ENOMEM (this never happens in the current implementation). Signed-off-by: Anthony G. Basile <blueness@gentoo.org>
Diffstat (limited to 'src/shared/hashmap.h')
-rw-r--r--src/shared/hashmap.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/shared/hashmap.h b/src/shared/hashmap.h
index 53b04eb033..22bda37437 100644
--- a/src/shared/hashmap.h
+++ b/src/shared/hashmap.h
@@ -65,6 +65,7 @@ int hashmap_put(Hashmap *h, const void *key, void *value);
void *hashmap_get(Hashmap *h, const void *key);
void *hashmap_get2(Hashmap *h, const void *key, void **rkey);
bool hashmap_contains(Hashmap *h, const void *key);
+int hashmap_reserve(Hashmap *h, unsigned entries_add);
unsigned hashmap_size(Hashmap *h) _pure_;