Browse Source

bitset

master
Martin Dørum 3 years ago
parent
commit
b55fc6e44e
2 changed files with 13 additions and 12 deletions
  1. 1
    1
      src/bitset.c
  2. 12
    11
      src/main.c

+ 1
- 1
src/bitset.c View File

@@ -75,7 +75,7 @@ size_t l2_bitset_set_next(struct l2_bitset *bs) {
return ret;
}

// Ok, this entry is full then...
// Ok, this table is full then...
l2_bitset_entry *dir = &bs->dirs[bs->currdir];
*dir |= (l2_bitset_entry)1 << (bs->currtable % ENTSIZ);


+ 12
- 11
src/main.c View File

@@ -1,31 +1,32 @@
#include "vm/vm.h"
#include "bitmap.h"
#include "bitset.h"

#include <stdio.h>
#include <assert.h>

int main() {
struct l2_bitmap bm;
l2_bitmap_init(&bm);
struct l2_bitset bs;
l2_bitset_init(&bs);

for (size_t i = 0; i < 8191; ++i) {
size_t id = l2_bitmap_set_next(&bm);
size_t id = l2_bitset_set_next(&bs);
assert(id == i);
assert(l2_bitmap_get(&bm, i));
assert(l2_bitset_get(&bs, i));
}

for (size_t i = 0; i < 10000; ++i) {
if (i < 8191) {
assert(l2_bitmap_get(&bm, i));
assert(l2_bitset_get(&bs, i));
} else {
assert(!l2_bitmap_get(&bm, i));
assert(!l2_bitset_get(&bs, i));
}
}

l2_bitmap_unset(&bm, 100);
assert(l2_bitmap_set_next(&bm) == 8191);
assert(l2_bitmap_set_next(&bm) == 100);
l2_bitset_unset(&bs, 100);
assert(l2_bitset_set_next(&bs) == 8191);
assert(l2_bitset_set_next(&bs) == 100);

l2_bitmap_free(&bm);
l2_bitset_free(&bs);
}

/*

Loading…
Cancel
Save