/*
- * Copyright (c) 2009 Nicira Networks.
+ * Copyright (c) 2009, 2010 Nicira Networks.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
}
}
+void
+shash_swap(struct shash *a, struct shash *b)
+{
+ hmap_swap(&a->map, &b->map);
+}
+
+void
+shash_moved(struct shash *sh)
+{
+ hmap_moved(&sh->map);
+}
+
void
shash_clear(struct shash *sh)
{
return node;
}
+bool
+shash_add_once(struct shash *sh, const char *name, const void *data)
+{
+ if (!shash_find(sh, name)) {
+ shash_add(sh, name, data);
+ return true;
+ } else {
+ return false;
+ }
+}
+
+void
+shash_add_assert(struct shash *sh, const char *name, const void *data)
+{
+ bool added OVS_UNUSED = shash_add_once(sh, name, data);
+ assert(added);
+}
+
void
shash_delete(struct shash *sh, struct shash_node *node)
{
}
}
+void *
+shash_find_and_delete_assert(struct shash *sh, const char *name)
+{
+ void *data = shash_find_and_delete(sh, name);
+ assert(data != NULL);
+ return data;
+}
+
struct shash_node *
shash_first(const struct shash *shash)
{
return nodes;
}
}
+
+/* Returns true if 'a' and 'b' contain the same keys (regardless of their
+ * values), false otherwise. */
+bool
+shash_equal_keys(const struct shash *a, const struct shash *b)
+{
+ struct shash_node *node;
+
+ if (hmap_count(&a->map) != hmap_count(&b->map)) {
+ return false;
+ }
+ SHASH_FOR_EACH (node, a) {
+ if (!shash_find(b, node->name)) {
+ return false;
+ }
+ }
+ return true;
+}