]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
basic: pass allocation info for ordered_set_new() and introduce ordered_set_ensure_put()
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 1 Sep 2020 10:42:35 +0000 (12:42 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Tue, 1 Sep 2020 10:42:35 +0000 (12:42 +0200)
src/basic/ordered-set.c
src/basic/ordered-set.h

index 7fdb47e064dce5d35ac3b59da7a6c6ae182a4f09..fb82c17b5a81ecb4bb94caff948783fa5d8d2a18 100644 (file)
@@ -4,6 +4,27 @@
 #include "ordered-set.h"
 #include "strv.h"
 
+int _ordered_set_ensure_allocated(OrderedSet **s, const struct hash_ops *ops  HASHMAP_DEBUG_PARAMS) {
+        if (*s)
+                return 0;
+
+        *s = _ordered_set_new(ops  HASHMAP_DEBUG_PASS_ARGS);
+        if (!*s)
+                return -ENOMEM;
+
+        return 0;
+}
+
+int _ordered_set_ensure_put(OrderedSet **s, const struct hash_ops *ops, void *p  HASHMAP_DEBUG_PARAMS) {
+        int r;
+
+        r = _ordered_set_ensure_allocated(s, ops  HASHMAP_DEBUG_PASS_ARGS);
+        if (r < 0)
+                return r;
+
+        return ordered_set_put(*s, p);
+}
+
 int ordered_set_consume(OrderedSet *s, void *p) {
         int r;
 
index a42a57eb49232c66172637798aa856806aa0a0ef..2c241a808bba5b9e58cf94e9f9a13e4ba7fe71a1 100644 (file)
@@ -7,20 +7,16 @@
 
 typedef struct OrderedSet OrderedSet;
 
-static inline OrderedSet* ordered_set_new(const struct hash_ops *ops) {
-        return (OrderedSet*) ordered_hashmap_new(ops);
+static inline OrderedSet* _ordered_set_new(const struct hash_ops *ops  HASHMAP_DEBUG_PARAMS) {
+        return (OrderedSet*) _ordered_hashmap_new(ops  HASHMAP_DEBUG_PASS_ARGS);
 }
+#define ordered_set_new(ops) _ordered_set_new(ops  HASHMAP_DEBUG_SRC_ARGS)
 
-static inline int ordered_set_ensure_allocated(OrderedSet **s, const struct hash_ops *ops) {
-        if (*s)
-                return 0;
+int _ordered_set_ensure_allocated(OrderedSet **s, const struct hash_ops *ops  HASHMAP_DEBUG_PARAMS);
+#define ordered_set_ensure_allocated(s, ops) _ordered_set_ensure_allocated(s, ops  HASHMAP_DEBUG_SRC_ARGS)
 
-        *s = ordered_set_new(ops);
-        if (!*s)
-                return -ENOMEM;
-
-        return 0;
-}
+int _ordered_set_ensure_put(OrderedSet **s, const struct hash_ops *ops, void *p  HASHMAP_DEBUG_PARAMS);
+#define ordered_set_ensure_put(s, hash_ops, key) _ordered_set_ensure_put(s, hash_ops, key  HASHMAP_DEBUG_SRC_ARGS)
 
 static inline OrderedSet* ordered_set_free(OrderedSet *s) {
         return (OrderedSet*) ordered_hashmap_free((OrderedHashmap*) s);