basic: Introduce ordered_hashmap_ensure_put
This commit is contained in:
parent
0419dae715
commit
b7847e05f5
|
@ -848,6 +848,16 @@ int _set_ensure_allocated(Set **s, const struct hash_ops *hash_ops HASHMAP_DEBU
|
||||||
return hashmap_base_ensure_allocated((HashmapBase**)s, hash_ops, HASHMAP_TYPE_SET HASHMAP_DEBUG_PASS_ARGS);
|
return hashmap_base_ensure_allocated((HashmapBase**)s, hash_ops, HASHMAP_TYPE_SET HASHMAP_DEBUG_PASS_ARGS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int _ordered_hashmap_ensure_put(OrderedHashmap **h, const struct hash_ops *hash_ops, const void *key, void *value HASHMAP_DEBUG_PARAMS) {
|
||||||
|
int r;
|
||||||
|
|
||||||
|
r = _ordered_hashmap_ensure_allocated(h, hash_ops HASHMAP_DEBUG_PASS_ARGS);
|
||||||
|
if (r < 0)
|
||||||
|
return r;
|
||||||
|
|
||||||
|
return ordered_hashmap_put(*h, key, value);
|
||||||
|
}
|
||||||
|
|
||||||
static void hashmap_free_no_clear(HashmapBase *h) {
|
static void hashmap_free_no_clear(HashmapBase *h) {
|
||||||
assert(!h->has_indirect);
|
assert(!h->has_indirect);
|
||||||
assert(h->n_direct_entries == 0);
|
assert(h->n_direct_entries == 0);
|
||||||
|
|
|
@ -137,6 +137,9 @@ int _ordered_hashmap_ensure_allocated(OrderedHashmap **h, const struct hash_ops
|
||||||
#define hashmap_ensure_allocated(h, ops) _hashmap_ensure_allocated(h, ops HASHMAP_DEBUG_SRC_ARGS)
|
#define hashmap_ensure_allocated(h, ops) _hashmap_ensure_allocated(h, ops HASHMAP_DEBUG_SRC_ARGS)
|
||||||
#define ordered_hashmap_ensure_allocated(h, ops) _ordered_hashmap_ensure_allocated(h, ops HASHMAP_DEBUG_SRC_ARGS)
|
#define ordered_hashmap_ensure_allocated(h, ops) _ordered_hashmap_ensure_allocated(h, ops HASHMAP_DEBUG_SRC_ARGS)
|
||||||
|
|
||||||
|
int _ordered_hashmap_ensure_put(OrderedHashmap **h, const struct hash_ops *hash_ops, const void *key, void *value HASHMAP_DEBUG_PARAMS);
|
||||||
|
#define ordered_hashmap_ensure_put(s, ops, key, value) _ordered_hashmap_ensure_put(s, ops, key, value HASHMAP_DEBUG_SRC_ARGS)
|
||||||
|
|
||||||
IteratedCache *_hashmap_iterated_cache_new(HashmapBase *h);
|
IteratedCache *_hashmap_iterated_cache_new(HashmapBase *h);
|
||||||
static inline IteratedCache *hashmap_iterated_cache_new(Hashmap *h) {
|
static inline IteratedCache *hashmap_iterated_cache_new(Hashmap *h) {
|
||||||
return (IteratedCache*) _hashmap_iterated_cache_new(HASHMAP_BASE(h));
|
return (IteratedCache*) _hashmap_iterated_cache_new(HASHMAP_BASE(h));
|
||||||
|
|
Loading…
Reference in a new issue