bitmap: use external iterator
Reuse the Iterator object from hashmap.h and expose a similar API.
This allows us to do
{
Iterator i;
unsigned n;
BITMAP_FOREACH(n, b, i) {
Iterator j;
unsigned m;
BITMAP_FOREACH(m, b, j) {
...
}
}
}
without getting confused. Requested by David.
This commit is contained in:
+4
-4
@@ -22,6 +22,7 @@
|
||||
***/
|
||||
|
||||
#include "macro.h"
|
||||
#include "hashmap.h"
|
||||
|
||||
typedef struct Bitmap Bitmap;
|
||||
|
||||
@@ -37,13 +38,12 @@ bool bitmap_isset(Bitmap *b, unsigned n);
|
||||
bool bitmap_isclear(Bitmap *b);
|
||||
void bitmap_clear(Bitmap *b);
|
||||
|
||||
void bitmap_rewind(Bitmap *b);
|
||||
bool bitmap_next(Bitmap *b, unsigned *n);
|
||||
bool bitmap_iterate(Bitmap *b, Iterator *i, unsigned *n);
|
||||
|
||||
bool bitmap_equal(Bitmap *a, Bitmap *b);
|
||||
|
||||
#define BITMAP_FOREACH(n, b) \
|
||||
for (bitmap_rewind(b); bitmap_next((b), &(n)); )
|
||||
#define BITMAP_FOREACH(n, b, i) \
|
||||
for ((i).idx = 0; bitmap_iterate((b), &(i), (unsigned*)&(n)); )
|
||||
|
||||
DEFINE_TRIVIAL_CLEANUP_FUNC(Bitmap*, bitmap_free);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user