shash: New function shash_find_and_delete().
authorBen Pfaff <blp@nicira.com>
Wed, 28 Oct 2009 18:10:36 +0000 (11:10 -0700)
committerBen Pfaff <blp@nicira.com>
Wed, 4 Nov 2009 23:01:02 +0000 (15:01 -0800)
lib/shash.c
lib/shash.h

index da33fe8b6fab4b994ffc2c0ee3793c56f171cf7c..5d8ecfa6cf6f72a7c9f93a01c56ef92b491acc65 100644 (file)
@@ -100,6 +100,19 @@ shash_find_data(const struct shash *sh, const char *name)
     return node ? node->data : NULL;
 }
 
+void *
+shash_find_and_delete(struct shash *sh, const char *name)
+{
+    struct shash_node *node = shash_find(sh, name);
+    if (node) {
+        void *data = node->data;
+        shash_delete(sh, node);
+        return data;
+    } else {
+        return NULL;
+    }
+}
+
 struct shash_node *
 shash_first(const struct shash *shash)
 {
index 5794a20f4d3b0659e3bf7533fff228e734327459..56f13bc7164ba4283ff97c3df18940d130f98d1a 100644 (file)
@@ -46,6 +46,7 @@ struct shash_node *shash_add(struct shash *, const char *, void *);
 void shash_delete(struct shash *, struct shash_node *);
 struct shash_node *shash_find(const struct shash *, const char *);
 void *shash_find_data(const struct shash *, const char *);
+void *shash_find_and_delete(struct shash *, const char *);
 struct shash_node *shash_first(const struct shash *);
 
 #endif /* shash.h */