X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fsimap.c;h=9c30f6886b2f0001784cc6a7596ab64a00281f7a;hb=HEAD;hp=cc8ddb81fee3001c0bc7691ad58f5de435538a61;hpb=d1673b006d53fdea72c0744e835362ed1917f879;p=sliver-openvswitch.git diff --git a/lib/simap.c b/lib/simap.c index cc8ddb81f..9c30f6886 100644 --- a/lib/simap.c +++ b/lib/simap.c @@ -147,6 +147,19 @@ simap_delete(struct simap *simap, struct simap_node *node) free(node); } +/* Searches for 'name' in 'simap'. If found, deletes it and returns true. If + * not found, returns false without modifying 'simap'. */ +bool +simap_find_and_delete(struct simap *simap, const char *name) +{ + struct simap_node *node = simap_find(simap, name); + if (node) { + simap_delete(simap, node); + return true; + } + return false; +} + /* Searches 'simap' for a mapping with the given 'name'. Returns it, if found, * or a null pointer if not. */ struct simap_node * @@ -172,6 +185,13 @@ simap_get(const struct simap *simap, const char *name) return node ? node->data : 0; } +/* Returns true if 'simap' contains a copy of 'name', false otherwise. */ +bool +simap_contains(const struct simap *simap, const char *name) +{ + return simap_find(simap, name) != NULL; +} + /* Returns an array that contains a pointer to each mapping in 'simap', * ordered alphabetically by name. The returned array has simap_count(simap) * elements.