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

return ret; return ret;
} }


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



+ 12
- 11
src/main.c View File

#include "vm/vm.h" #include "vm/vm.h"
#include "bitmap.h"
#include "bitset.h"


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


int main() { 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) { 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(id == i);
assert(l2_bitmap_get(&bm, i));
assert(l2_bitset_get(&bs, i));
} }


for (size_t i = 0; i < 10000; ++i) { for (size_t i = 0; i < 10000; ++i) {
if (i < 8191) { if (i < 8191) {
assert(l2_bitmap_get(&bm, i));
assert(l2_bitset_get(&bs, i));
} else { } 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