From: Yu Watanabe Date: Sat, 12 Apr 2025 19:21:46 +0000 (+0900) Subject: hashmap: drop hashmap_free_with_destructor() and friends X-Git-Tag: v258-rc1~783^2~1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4cbc25ab4ce3b8d6b388d374f5a9124b3b96ab57;p=thirdparty%2Fsystemd.git hashmap: drop hashmap_free_with_destructor() and friends --- diff --git a/src/basic/hashmap.h b/src/basic/hashmap.h index eb810e1e072..8ced7e6a990 100644 --- a/src/basic/hashmap.h +++ b/src/basic/hashmap.h @@ -331,27 +331,6 @@ static inline void *ordered_hashmap_first_key(OrderedHashmap *h) { return _hashmap_first_key(HASHMAP_BASE(h), false); } -#define hashmap_clear_with_destructor(h, f) \ - ({ \ - Hashmap *_h = (h); \ - void *_item; \ - while ((_item = hashmap_steal_first(_h))) \ - f(_item); \ - _h; \ - }) -#define hashmap_free_with_destructor(h, f) \ - hashmap_free(hashmap_clear_with_destructor(h, f)) -#define ordered_hashmap_clear_with_destructor(h, f) \ - ({ \ - OrderedHashmap *_h = (h); \ - void *_item; \ - while ((_item = ordered_hashmap_steal_first(_h))) \ - f(_item); \ - _h; \ - }) -#define ordered_hashmap_free_with_destructor(h, f) \ - ordered_hashmap_free(ordered_hashmap_clear_with_destructor(h, f)) - /* no hashmap_next */ void* ordered_hashmap_next(OrderedHashmap *h, const void *key); diff --git a/src/basic/ordered-set.h b/src/basic/ordered-set.h index 5f2b45309f9..b7113ad918c 100644 --- a/src/basic/ordered-set.h +++ b/src/basic/ordered-set.h @@ -83,17 +83,6 @@ void ordered_set_print(FILE *f, const char *field, OrderedSet *s); #define ORDERED_SET_FOREACH(e, s) \ _ORDERED_SET_FOREACH(e, s, UNIQ_T(i, UNIQ)) -#define ordered_set_clear_with_destructor(s, f) \ - ({ \ - OrderedSet *_s = (s); \ - void *_item; \ - while ((_item = ordered_set_steal_first(_s))) \ - f(_item); \ - _s; \ - }) -#define ordered_set_free_with_destructor(s, f) \ - ordered_set_free(ordered_set_clear_with_destructor(s, f)) - DEFINE_TRIVIAL_CLEANUP_FUNC(OrderedSet*, ordered_set_free); #define _cleanup_ordered_set_free_ _cleanup_(ordered_set_freep) diff --git a/src/basic/set.h b/src/basic/set.h index 6e6b3866879..c7b84e0a54b 100644 --- a/src/basic/set.h +++ b/src/basic/set.h @@ -78,17 +78,6 @@ static inline void *set_steal_first(Set *s) { return _hashmap_first_key_and_value(HASHMAP_BASE(s), true, NULL); } -#define set_clear_with_destructor(s, f) \ - ({ \ - Set *_s = (s); \ - void *_item; \ - while ((_item = set_steal_first(_s))) \ - f(_item); \ - _s; \ - }) -#define set_free_with_destructor(s, f) \ - set_free(set_clear_with_destructor(s, f)) - /* no set_steal_first_key */ /* no set_first_key */ diff --git a/src/test/test-hashmap-plain.c b/src/test/test-hashmap-plain.c index 3c75be30e57..fd70978037d 100644 --- a/src/test/test-hashmap-plain.c +++ b/src/test/test-hashmap-plain.c @@ -764,29 +764,6 @@ TEST(hashmap_free) { } } -typedef struct Item { - int seen; -} Item; -static void item_seen(Item *item) { - item->seen++; -} - -TEST(hashmap_free_with_destructor) { - Hashmap *m; - struct Item items[4] = {}; - unsigned i; - - assert_se(m = hashmap_new(NULL)); - for (i = 0; i < ELEMENTSOF(items) - 1; i++) - assert_se(hashmap_put(m, INT_TO_PTR(i), items + i) == 1); - - m = hashmap_free_with_destructor(m, item_seen); - assert_se(items[0].seen == 1); - assert_se(items[1].seen == 1); - assert_se(items[2].seen == 1); - assert_se(items[3].seen == 0); -} - TEST(hashmap_first) { _cleanup_hashmap_free_ Hashmap *m = NULL; diff --git a/src/test/test-set.c b/src/test/test-set.c index 8411e478eb3..f2e2e946292 100644 --- a/src/test/test-set.c +++ b/src/test/test-set.c @@ -32,21 +32,6 @@ static void item_seen(Item *item) { item->seen++; } -TEST(set_free_with_destructor) { - Set *m; - struct Item items[4] = {}; - - assert_se(m = set_new(NULL)); - FOREACH_ARRAY(item, items, ELEMENTSOF(items) - 1) - assert_se(set_put(m, item) == 1); - - m = set_free_with_destructor(m, item_seen); - assert_se(items[0].seen == 1); - assert_se(items[1].seen == 1); - assert_se(items[2].seen == 1); - assert_se(items[3].seen == 0); -} - DEFINE_PRIVATE_HASH_OPS_WITH_VALUE_DESTRUCTOR(item_hash_ops, void, trivial_hash_func, trivial_compare_func, Item, item_seen); TEST(set_free_with_hash_ops) {