]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
hashmap: introduce HASHMAP_BASE_FOREACH() and friend
authorYu Watanabe <watanabe.yu+github@gmail.com>
Thu, 7 Sep 2023 19:39:15 +0000 (04:39 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Fri, 8 Sep 2023 03:55:44 +0000 (12:55 +0900)
src/basic/hashmap.h

index ad85093d69a8bbe810daae8eee207f6c9d2e14ed..233f1d7a1ee2dd7902e700a38ce68affcef2590b 100644 (file)
@@ -415,6 +415,11 @@ static inline int set_dump_sorted(Set *h, void ***ret, size_t *ret_n) {
  * the entries were inserted.
  * It is safe to remove the current entry.
  */
+#define _HASHMAP_BASE_FOREACH(e, h, i) \
+        for (Iterator i = ITERATOR_FIRST; _hashmap_iterate((h), &i, (void**)&(e), NULL); )
+#define HASHMAP_BASE_FOREACH(e, h) \
+        _HASHMAP_BASE_FOREACH(e, h, UNIQ_T(i, UNIQ))
+
 #define _HASHMAP_FOREACH(e, h, i) \
         for (Iterator i = ITERATOR_FIRST; hashmap_iterate((h), &i, (void**)&(e), NULL); )
 #define HASHMAP_FOREACH(e, h) \
@@ -425,6 +430,11 @@ static inline int set_dump_sorted(Set *h, void ***ret, size_t *ret_n) {
 #define ORDERED_HASHMAP_FOREACH(e, h) \
         _ORDERED_HASHMAP_FOREACH(e, h, UNIQ_T(i, UNIQ))
 
+#define _HASHMAP_BASE_FOREACH_KEY(e, k, h, i) \
+        for (Iterator i = ITERATOR_FIRST; _hashmap_iterate((h), &i, (void**)&(e), (const void**) &(k)); )
+#define HASHMAP_BASE_FOREACH_KEY(e, k, h) \
+        _HASHMAP_BASE_FOREACH_KEY(e, k, h, UNIQ_T(i, UNIQ))
+
 #define _HASHMAP_FOREACH_KEY(e, k, h, i) \
         for (Iterator i = ITERATOR_FIRST; hashmap_iterate((h), &i, (void**)&(e), (const void**) &(k)); )
 #define HASHMAP_FOREACH_KEY(e, k, h) \