Describe dummy test model. Work on OpenFlow intro.
[openvswitch] / lib / smap.c
index e612ac7bad7749bf1a8212cf98af2e91ad177704..b81ac09c2509c46878c4c46eec1023ece877690f 100644 (file)
@@ -125,6 +125,31 @@ smap_remove_node(struct smap *smap, struct smap_node *node)
     free(node);
 }
 
+/* Deletes 'node' from 'smap'.
+ *
+ * If 'keyp' is nonnull, stores the node's key in '*keyp' and transfers
+ * ownership to the caller.  Otherwise, frees the node's key.  Similarly for
+ * 'valuep' and the node's value. */
+void
+smap_steal(struct smap *smap, struct smap_node *node,
+           char **keyp, char **valuep)
+{
+    if (keyp) {
+        *keyp = node->key;
+    } else {
+        free(node->key);
+    }
+
+    if (valuep) {
+        *valuep = node->value;
+    } else {
+        free(node->value);
+    }
+
+    hmap_remove(&smap->map, &node->node);
+    free(node);
+}
+
 /* Removes all key-value pairs from 'smap'. */
 void
 smap_clear(struct smap *smap)