[ovs-dev] [PATCH 1/3] simap: New function simap_equal().

Ben Pfaff blp at ovn.org
Wed May 3 21:53:50 UTC 2017


This will acquire a user in an upcoming commit.

Signed-off-by: Ben Pfaff <blp at ovn.org>
---
 lib/simap.c | 21 ++++++++++++++++++++-
 lib/simap.h |  4 +++-
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/lib/simap.c b/lib/simap.c
index 9c30f6886b2f..157819ea3970 100644
--- a/lib/simap.c
+++ b/lib/simap.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, 2011, 2012 Nicira, Inc.
+ * Copyright (c) 2009, 2010, 2011, 2012, 2017 Nicira, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -222,6 +222,25 @@ simap_sort(const struct simap *simap)
         return nodes;
     }
 }
+
+/* Returns true if the two maps are equal, meaning that they have the same set
+ * of key-value pairs, otherwise false. */
+bool
+simap_equal(const struct simap *a, const struct simap *b)
+{
+    if (simap_count(a) != simap_count(b)) {
+        return false;
+    }
+
+    const struct simap_node *an;
+    SIMAP_FOR_EACH (an, a) {
+        const struct simap_node *bn = simap_find(b, an->name);
+        if (!bn || an->data != bn->data) {
+            return false;
+        }
+    }
+    return true;
+}
 
 static size_t
 hash_name(const char *name, size_t length)
diff --git a/lib/simap.h b/lib/simap.h
index 9486080f4ded..76203740e1a2 100644
--- a/lib/simap.h
+++ b/lib/simap.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, 2011, 2012, 2016 Nicira, Inc.
+ * Copyright (c) 2009, 2010, 2011, 2012, 2016, 2017 Nicira, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -70,6 +70,8 @@ bool simap_find_and_delete(struct simap *, const char *);
 
 const struct simap_node **simap_sort(const struct simap *);
 
+bool simap_equal(const struct simap *, const struct simap *);
+
 #ifdef  __cplusplus
 }
 #endif
-- 
2.10.2



More information about the dev mailing list