}
int bitmap_set(Bitmap *b, unsigned n) {
- long long bitmask;
+ long long unsigned bitmask;
unsigned offset;
assert(b);
b->n_bitmaps = offset + 1;
}
- bitmask = 1 << BITMAP_NUM_TO_REM(n);
+ bitmask = 1ULL << BITMAP_NUM_TO_REM(n);
b->bitmaps[offset] |= bitmask;
}
void bitmap_unset(Bitmap *b, unsigned n) {
- long long bitmask;
+ long long unsigned bitmask;
unsigned offset;
assert(b);
if (offset >= b->n_bitmaps)
return;
- bitmask = 1 << BITMAP_NUM_TO_REM(n);
+ bitmask = 1ULL << BITMAP_NUM_TO_REM(n);
b->bitmaps[offset] &= ~bitmask;
}
bool bitmap_isset(Bitmap *b, unsigned n) {
- long long bitmask;
+ long long unsigned bitmask;
unsigned offset;
if (!b || !b->bitmaps)
if (offset >= b->n_bitmaps)
return false;
- bitmask = 1 << BITMAP_NUM_TO_REM(n);
+ bitmask = 1ULL << BITMAP_NUM_TO_REM(n);
return !!(b->bitmaps[offset] & bitmask);
}
}
bool bitmap_iterate(Bitmap *b, Iterator *i, unsigned *n) {
- long long bitmask;
+ long long unsigned bitmask;
unsigned offset, rem;
if (!b || i->idx == BITMAP_END)
assert_se(bitmap_isset(b, 256) == false);
assert_se(bitmap_isclear(b) == true);
+ assert_se(bitmap_set(b, 32) == 0);
+ bitmap_unset(b, 0);
+ assert_se(bitmap_isset(b, 32) == true);
+ bitmap_unset(b, 32);
+
+ BITMAP_FOREACH(n, NULL, it)
+ assert_not_reached("NULL bitmap");
+
assert_se(bitmap_set(b, 0) == 0);
assert_se(bitmap_set(b, 1) == 0);
assert_se(bitmap_set(b, 256) == 0);