X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fsset.h;h=1e864efce6d5a71e0bbcb902c287485ca8a6ed87;hb=003ce655b7116d18c86a74c50391e54990346931;hp=327074c9f6c17a68948e813727bebbaae309baef;hpb=6822daf20693ae6b6b98bb4a5c44b67793e16792;p=sliver-openvswitch.git diff --git a/lib/sset.h b/lib/sset.h index 327074c9f..1e864efce 100644 --- a/lib/sset.h +++ b/lib/sset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012 Nicira, Inc. + * Copyright (c) 2011, 2012, 2013 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -70,22 +70,26 @@ struct sset_node *sset_at_position(const struct sset *, /* Iteration macros. */ #define SSET_FOR_EACH(NAME, SSET) \ for ((NAME) = SSET_FIRST(SSET); \ - SSET_NODE_FROM_NAME(NAME) != NULL; \ + NAME != NULL; \ (NAME) = SSET_NEXT(SSET, NAME)) #define SSET_FOR_EACH_SAFE(NAME, NEXT, SSET) \ for ((NAME) = SSET_FIRST(SSET); \ - (SSET_NODE_FROM_NAME(NAME) != NULL \ + (NAME != NULL \ ? (NEXT) = SSET_NEXT(SSET, NAME), true \ : false); \ (NAME) = (NEXT)) + +const char **sset_sort(const struct sset *); /* Implementation helper macros. */ #define SSET_NODE_FROM_HMAP_NODE(HMAP_NODE) \ CONTAINER_OF(HMAP_NODE, struct sset_node, hmap_node) #define SSET_NAME_FROM_HMAP_NODE(HMAP_NODE) \ - (CONST_CAST(const char *, (SSET_NODE_FROM_HMAP_NODE(HMAP_NODE)->name))) + HMAP_NODE == NULL \ + ? NULL \ + : (CONST_CAST(const char *, (SSET_NODE_FROM_HMAP_NODE(HMAP_NODE)->name))) #define SSET_NODE_FROM_NAME(NAME) CONTAINER_OF(NAME, struct sset_node, name) #define SSET_FIRST(SSET) SSET_NAME_FROM_HMAP_NODE(hmap_first(&(SSET)->map)) #define SSET_NEXT(SSET, NAME) \