X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fsset.h;h=327074c9f6c17a68948e813727bebbaae309baef;hb=ea7655d9f9d38a3af7250de8ba0b89115b5f4a5e;hp=88100673ff0aa25934a966c502b5907639ff69d1;hpb=f391294fde05ecae7c9a1ff8752f872a1db94f3a;p=sliver-openvswitch.git diff --git a/lib/sset.h b/lib/sset.h index 88100673f..327074c9f 100644 --- a/lib/sset.h +++ b/lib/sset.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011 Nicira Networks. + * Copyright (c) 2011, 2012 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,6 +18,11 @@ #define SSET_H #include "hmap.h" +#include "util.h" + +#ifdef __cplusplus +extern "C" { +#endif struct sset_node { struct hmap_node hmap_node; @@ -59,6 +64,8 @@ char *sset_pop(struct sset *); struct sset_node *sset_find(const struct sset *, const char *); bool sset_contains(const struct sset *, const char *); bool sset_equals(const struct sset *, const struct sset *); +struct sset_node *sset_at_position(const struct sset *, + uint32_t *bucketp, uint32_t *offsetp); /* Iteration macros. */ #define SSET_FOR_EACH(NAME, SSET) \ @@ -78,11 +85,15 @@ bool sset_equals(const struct sset *, const struct sset *); #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 char *) (SSET_NODE_FROM_HMAP_NODE(HMAP_NODE)->name)) + (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) \ SSET_NAME_FROM_HMAP_NODE( \ hmap_next(&(SSET)->map, &SSET_NODE_FROM_NAME(NAME)->hmap_node)) +#ifdef __cplusplus +} +#endif + #endif /* sset.h */