diff options
| author | Ben Pfaff <blp@nicira.com> | 2009-07-22 16:33:43 -0700 |
|---|---|---|
| committer | Ben Pfaff <blp@nicira.com> | 2009-07-30 16:07:13 -0700 |
| commit | fd30311c8701d297f31f6dd92c628d1d9112911e (patch) | |
| tree | 27de9fd70be4174712d4d3539e079ebc2c74d5f9 | |
| parent | 78299b0a6871a31c8b0cce5ef3f67ab465ab094f (diff) | |
| download | openvswitch-fd30311c8701d297f31f6dd92c628d1d9112911e.tar.gz | |
shash: Introduce new macros SHASH_FOR_EACH, SHASH_FOR_EACH_SAFE.
This is both more convenient and cleaner than using HMAP_FOR_EACH(_SAFE)
directly.
| -rw-r--r-- | lib/shash.c | 2 | ||||
| -rw-r--r-- | lib/shash.h | 7 | ||||
| -rw-r--r-- | lib/unixctl.c | 2 |
3 files changed, 9 insertions, 2 deletions
diff --git a/lib/shash.c b/lib/shash.c index f1785139d..7bb8cd70b 100644 --- a/lib/shash.c +++ b/lib/shash.c @@ -44,7 +44,7 @@ shash_clear(struct shash *sh) { struct shash_node *node, *next; - HMAP_FOR_EACH_SAFE (node, next, struct shash_node, node, &sh->map) { + SHASH_FOR_EACH_SAFE (node, next, sh) { hmap_remove(&sh->map, &node->node); free(node->name); free(node); diff --git a/lib/shash.h b/lib/shash.h index 72d830200..5794a20f4 100644 --- a/lib/shash.h +++ b/lib/shash.h @@ -31,6 +31,13 @@ struct shash { #define SHASH_INITIALIZER(SHASH) { HMAP_INITIALIZER(&(SHASH)->map) } +#define SHASH_FOR_EACH(SHASH_NODE, SHASH) \ + HMAP_FOR_EACH (SHASH_NODE, struct shash_node, node, &(SHASH)->map) + +#define SHASH_FOR_EACH_SAFE(SHASH_NODE, NEXT, SHASH) \ + HMAP_FOR_EACH_SAFE (SHASH_NODE, NEXT, struct shash_node, node, \ + &(SHASH)->map) + void shash_init(struct shash *); void shash_destroy(struct shash *); void shash_clear(struct shash *); diff --git a/lib/unixctl.c b/lib/unixctl.c index 526c3fe35..17bd6cb56 100644 --- a/lib/unixctl.c +++ b/lib/unixctl.c @@ -82,7 +82,7 @@ unixctl_help(struct unixctl_conn *conn, const char *args UNUSED) struct shash_node *node; ds_put_cstr(&ds, "The available commands are:\n"); - HMAP_FOR_EACH (node, struct shash_node, node, &commands.map) { + SHASH_FOR_EACH (node, &commands) { ds_put_format(&ds, "\t%s\n", node->name); } unixctl_command_reply(conn, 214, ds_cstr(&ds)); |
