// make it work piece by piece
-const uint8_t bins::SPLIT[16] =
+const uint8_t binmap_t::SPLIT[16] =
{0, 3, 12, 15, 48, 51, 60, 63, 192, 195, 204, 207, 240, 243, 252, 255};
-const uint8_t bins::JOIN[16] =
+const uint8_t binmap_t::JOIN[16] =
{0, 1, 4, 5, 2, 3, 6, 7, 8, 9, 12, 13, 10, 11, 14, 15};
-const int bins::NOJOIN = 0x10000;
+const int binmap_t::NOJOIN = 0x10000;
-void bins::extend () {
+void binmap_t::extend () {
uint16_t nblocks = blocks_allocated ? (blocks_allocated<<1) : 1;
size_t had_bytes = blocks_allocated<<6;
size_t need_bytes = nblocks<<6;
blocks_allocated = nblocks;
}
-bins::bins() : height(4), blocks_allocated(0), cells(NULL),
+binmap_t::binmap_t() : height(4), blocks_allocated(0), cells(NULL),
ap(0), cells_allocated(0), twist_mask(0) {
extend();
assert(!alloc_cell());
}
-void bins::twist (uint64_t mask) {
+void binmap_t::twist (uint64_t mask) {
while ( (1<<height) <= mask )
extend_range();
twist_mask = mask;
}
-bins::bins (const bins& b) : height(b.height), ap(b.ap),
+binmap_t::binmap_t (const binmap_t& b) : height(b.height), ap(b.ap),
blocks_allocated(b.blocks_allocated), cells_allocated(b.cells_allocated) {
size_t memsz = blocks_allocated*16*32;
cells = (uint32_t*) malloc(memsz);
memcpy(cells,b.cells,memsz);
}
-void bins::dump (const char* note) {
+void binmap_t::dump (const char* note) {
printf("%s\t",note);
for(int i=0; i<(blocks_allocated<<5); i++) {
if ( (i&0x1f)>29 )
printf("\n");
}
-uint32_t bins::split16to32(uint16_t halfval) {
+uint32_t binmap_t::split16to32(uint16_t halfval) {
uint32_t nval = 0;
for(int i=0; i<4; i++) {
nval >>= 8;
}
-int bins::join32to16(uint32_t cval) {
+int binmap_t::join32to16(uint32_t cval) {
union { uint32_t i; uint8_t a[4]; } uvar;
uvar.i = cval & (cval>>1) & 0x55555555;
if ( (uvar.i|(uvar.i<<1)) != cval )
}
-void bins::split (uint32_t half) {
+void binmap_t::split (uint32_t half) {
if (deep(half))
return;
uint32_t cell = alloc_cell(), left=cell<<1, right=left+1;
}
-bool bins::join (uint32_t half) {
+bool binmap_t::join (uint32_t half) {
uint32_t cellno = halves[half];
int left = cellno<<1, right=left+1;
if (deep(left) || deep(right))
return true;
}
-void bins::free_cell (uint16_t cell) {
+void binmap_t::free_cell (uint16_t cell) {
cells[cell] = 0;
int left = cell<<1, right=left+1;
mark(left);
}
/** Get a free cell. */
-uint16_t bins::alloc_cell () {
+uint16_t binmap_t::alloc_cell () {
uint16_t ap1 = ap;
cells_allocated++;
for(; ap<(blocks_allocated<<4); ap++) {
}
-iterator::iterator(bins* host_, bin64_t start, bool split) {
+iterator::iterator(binmap_t* host_, bin64_t start, bool split) {
host = host_;
half = 0;
for(int i=0; i<64; i++)
}
-void bins::extend_range () {
+void binmap_t::extend_range () {
assert(height<62);
height++;
uint16_t newroot = alloc_cell();
}
-bin64_t bins::find (const bin64_t range, fill_t seek) {
+bin64_t binmap_t::find (const bin64_t range, fill_t seek) {
iterator i(this,range,true);
fill_t stop = seek==EMPTY ? FILLED : EMPTY;
while (true) {
}
-uint16_t bins::get (bin64_t bin) {
+uint16_t binmap_t::get (bin64_t bin) {
if (bin==bin64_t::NONE)
return EMPTY;
iterator i(this,bin,true);
}
-void bins::clear () {
+void binmap_t::clear () {
set(bin64_t(height,0),EMPTY);
}
-uint64_t bins::mass () {
+uint64_t binmap_t::mass () {
iterator i(this,bin64_t(0,0),false);
uint64_t ret = 0;
while (!i.solid())
i.left();
while (!i.end()) {
- if (*i==bins::FILLED)
+ if (*i==binmap_t::FILLED)
ret += i.pos.width();
i.next(true);
}
}
-void bins::set (bin64_t bin, fill_t val) {
+void binmap_t::set (bin64_t bin, fill_t val) {
if (bin==bin64_t::NONE)
return;
assert(val==FILLED || val==EMPTY);
}
-uint64_t* bins::get_stripes (int& count) {
+uint64_t* binmap_t::get_stripes (int& count) {
int size = 32;
uint64_t *stripes = (uint64_t*) malloc(32*8);
count = 0;
- uint16_t cur = bins::EMPTY;
+ uint16_t cur = binmap_t::EMPTY;
stripes[count++] = 0;
iterator i(this,bin64_t(0,0),false);
while (!i.solid())
}
-void bins::remove (bins& b) {
+void binmap_t::remove (binmap_t& b) {
uint8_t start_lr = b.height>height ? b.height : height;
bin64_t top(start_lr,0);
iterator zis(this,top), zat(&b,top);
}
-bin64_t bins::cover(bin64_t val) {
+bin64_t binmap_t::cover(bin64_t val) {
if (val==bin64_t::NONE)
return val;
iterator i(this,val,false);
}
-bin64_t bins::find_filtered
- (bins& filter, bin64_t range, fill_t seek)
+bin64_t binmap_t::find_filtered
+ (binmap_t& filter, bin64_t range, fill_t seek)
{
if (range==bin64_t::ALL)
range = bin64_t ( height>filter.height ? height : filter.height, 0 );
}
// FIXME unite with remove(); do bitwise()
-void bins::copy_range (bins& origin, bin64_t range) {
+void binmap_t::copy_range (binmap_t& origin, bin64_t range) {
if (range==bin64_t::ALL)
range = bin64_t ( height>origin.height ? height : origin.height, 0 );
iterator zis(this,range,true), zat(&origin,range,true);
}
}
-uint64_t bins::seq_length () {
+uint64_t binmap_t::seq_length () {
iterator i(this);
if (!i.deep() && *i==FILLED)
return i.pos.width();
}
-bool bins::is_solid (bin64_t range, fill_t val) {
+bool binmap_t::is_solid (bin64_t range, fill_t val) {
if (range==bin64_t::ALL)
return !deep(0) && (is_mixed(val) || halves[0]==val);
iterator i(this,range,false);
uint32_t cell = (3<<10) | (3<<14) | (3<<0);
uint16_t correct = (1<<5) | (1<<7) | (1<<0);
- uint16_t joined = bins::join32to16(cell);
+ uint16_t joined = binmap_t::join32to16(cell);
EXPECT_EQ(correct,joined);
- uint32_t split = bins::split16to32(correct);
+ uint32_t split = binmap_t::split16to32(correct);
EXPECT_EQ(cell,split);
- EXPECT_EQ(bins::NOJOIN,bins::join32to16(cell|4));
+ EXPECT_EQ(binmap_t::NOJOIN,binmap_t::join32to16(cell|4));
}
TEST(BinsTest,SetGet) {
- bins bs;
+ binmap_t bs;
bin64_t b3(1,0), b2(0,1), b4(0,2), b6(1,1), b7(2,0);
bs.set(b3);
//bs.dump("set done");
- EXPECT_EQ(bins::FILLED,bs.get(b3));
+ EXPECT_EQ(binmap_t::FILLED,bs.get(b3));
//bs.dump("set checkd");
- EXPECT_EQ(bins::FILLED,bs.get(b2));
+ EXPECT_EQ(binmap_t::FILLED,bs.get(b2));
//bs.dump("get b2 done");
- EXPECT_EQ(bins::FILLED,bs.get(b3));
+ EXPECT_EQ(binmap_t::FILLED,bs.get(b3));
//bs.dump("get b3 done");
- EXPECT_EQ(bins::EMPTY,bs.get(b4));
- EXPECT_EQ(bins::EMPTY,bs.get(b6));
- EXPECT_NE(bins::FILLED,bs.get(b7));
- EXPECT_NE(bins::EMPTY,bs.get(b7));
- EXPECT_EQ(bins::FILLED,bs.get(b3));
+ EXPECT_EQ(binmap_t::EMPTY,bs.get(b4));
+ EXPECT_EQ(binmap_t::EMPTY,bs.get(b6));
+ EXPECT_NE(binmap_t::FILLED,bs.get(b7));
+ EXPECT_NE(binmap_t::EMPTY,bs.get(b7));
+ EXPECT_EQ(binmap_t::FILLED,bs.get(b3));
bs.set(bin64_t(1,1));
- EXPECT_EQ(bins::FILLED,bs.get(bin64_t(2,0)));
+ EXPECT_EQ(binmap_t::FILLED,bs.get(bin64_t(2,0)));
}
TEST(BinsTest,Iterator) {
- bins b;
+ binmap_t b;
b.set(bin64_t(3,1));
iterator i(&b,bin64_t(0,0),false);
while (!i.solid())
EXPECT_EQ(bin64_t(3,0),i.bin());
EXPECT_EQ(false,i.deep());
EXPECT_EQ(true,i.solid());
- EXPECT_EQ(bins::EMPTY,*i);
+ EXPECT_EQ(binmap_t::EMPTY,*i);
i.next();
EXPECT_EQ(bin64_t(3,1),i.bin());
EXPECT_EQ(false,i.deep());
EXPECT_EQ(true,i.solid());
- EXPECT_EQ(bins::FILLED,*i);
+ EXPECT_EQ(binmap_t::FILLED,*i);
i.next();
EXPECT_TRUE(i.end());
}
TEST(BinsTest,Chess) {
- bins chess16;
+ binmap_t chess16;
for(int i=0; i<15; i++)
- chess16.set(bin64_t(0,i), (i&1)?bins::FILLED:bins::EMPTY);
- chess16.set(bin64_t(0,15), bins::FILLED);
+ chess16.set(bin64_t(0,i), (i&1)?binmap_t::FILLED:binmap_t::EMPTY);
+ chess16.set(bin64_t(0,15), binmap_t::FILLED);
for(int i=0; i<16; i++)
- EXPECT_EQ((i&1)?bins::FILLED:bins::EMPTY, chess16.get(bin64_t(0,i)));
- EXPECT_NE(bins::FILLED,chess16.get(bin64_t(4,0)));
- EXPECT_NE(bins::EMPTY,chess16.get(bin64_t(4,0)));
+ EXPECT_EQ((i&1)?binmap_t::FILLED:binmap_t::EMPTY, chess16.get(bin64_t(0,i)));
+ EXPECT_NE(binmap_t::FILLED,chess16.get(bin64_t(4,0)));
+ EXPECT_NE(binmap_t::EMPTY,chess16.get(bin64_t(4,0)));
for(int i=0; i<16; i+=2)
- chess16.set(bin64_t(0,i), bins::FILLED);
- EXPECT_EQ(bins::FILLED,chess16.get(bin64_t(4,0)));
- EXPECT_EQ(bins::FILLED,chess16.get(bin64_t(2,3)));
+ chess16.set(bin64_t(0,i), binmap_t::FILLED);
+ EXPECT_EQ(binmap_t::FILLED,chess16.get(bin64_t(4,0)));
+ EXPECT_EQ(binmap_t::FILLED,chess16.get(bin64_t(2,3)));
- chess16.set(bin64_t(4,1),bins::FILLED);
- EXPECT_EQ(bins::FILLED,chess16.get(bin64_t(5,0)));
+ chess16.set(bin64_t(4,1),binmap_t::FILLED);
+ EXPECT_EQ(binmap_t::FILLED,chess16.get(bin64_t(5,0)));
}
TEST(BinsTest,Staircase) {
const int TOPLAYR = 44;
- bins staircase;
+ binmap_t staircase;
for(int i=0;i<TOPLAYR;i++)
- staircase.set(bin64_t(i,1),bins::FILLED);
+ staircase.set(bin64_t(i,1),binmap_t::FILLED);
- EXPECT_NE(bins::FILLED,staircase.get(bin64_t(TOPLAYR,0)));
- EXPECT_NE(bins::EMPTY,staircase.get(bin64_t(TOPLAYR,0)));
+ EXPECT_NE(binmap_t::FILLED,staircase.get(bin64_t(TOPLAYR,0)));
+ EXPECT_NE(binmap_t::EMPTY,staircase.get(bin64_t(TOPLAYR,0)));
- staircase.set(bin64_t(0,0),bins::FILLED);
- EXPECT_EQ(bins::FILLED,staircase.get(bin64_t(TOPLAYR,0)));
+ staircase.set(bin64_t(0,0),binmap_t::FILLED);
+ EXPECT_EQ(binmap_t::FILLED,staircase.get(bin64_t(TOPLAYR,0)));
}
TEST(BinsTest,Hole) {
- bins hole;
- hole.set(bin64_t(8,0),bins::FILLED);
- hole.set(bin64_t(6,1),bins::EMPTY);
- hole.set(bin64_t(6,2),bins::EMPTY);
- EXPECT_EQ(bins::FILLED,hole.get(bin64_t(6,0)));
- EXPECT_EQ(bins::FILLED,hole.get(bin64_t(6,3)));
- EXPECT_NE(bins::FILLED,hole.get(bin64_t(8,0)));
- EXPECT_NE(bins::EMPTY,hole.get(bin64_t(8,0)));
- EXPECT_EQ(bins::EMPTY,hole.get(bin64_t(6,1)));
+ binmap_t hole;
+ hole.set(bin64_t(8,0),binmap_t::FILLED);
+ hole.set(bin64_t(6,1),binmap_t::EMPTY);
+ hole.set(bin64_t(6,2),binmap_t::EMPTY);
+ EXPECT_EQ(binmap_t::FILLED,hole.get(bin64_t(6,0)));
+ EXPECT_EQ(binmap_t::FILLED,hole.get(bin64_t(6,3)));
+ EXPECT_NE(binmap_t::FILLED,hole.get(bin64_t(8,0)));
+ EXPECT_NE(binmap_t::EMPTY,hole.get(bin64_t(8,0)));
+ EXPECT_EQ(binmap_t::EMPTY,hole.get(bin64_t(6,1)));
}
TEST(BinsTest,Find){
- bins hole;
- hole.set(bin64_t(4,0),bins::FILLED);
- hole.set(bin64_t(1,1),bins::EMPTY);
- hole.set(bin64_t(0,7),bins::EMPTY);
+ binmap_t hole;
+ hole.set(bin64_t(4,0),binmap_t::FILLED);
+ hole.set(bin64_t(1,1),binmap_t::EMPTY);
+ hole.set(bin64_t(0,7),binmap_t::EMPTY);
bin64_t f = hole.find(bin64_t(4,0)).left_foot();
EXPECT_EQ(bin64_t(0,2),f);
TEST(BinsTest,Stripes) {
- bins zebra;
+ binmap_t zebra;
zebra.set(bin64_t(5,0));
- zebra.set(bin64_t(3,1),bins::EMPTY);
- zebra.set(bin64_t(1,12),bins::EMPTY);
- zebra.set(bin64_t(1,14),bins::EMPTY);
+ zebra.set(bin64_t(3,1),binmap_t::EMPTY);
+ zebra.set(bin64_t(1,12),binmap_t::EMPTY);
+ zebra.set(bin64_t(1,14),binmap_t::EMPTY);
int count;
uint64_t *stripes = zebra.get_stripes(count);
EXPECT_EQ(9,count);
TEST(BinsTest,StripesAgg) {
- bins zebra;
+ binmap_t zebra;
zebra.set(bin64_t(0,1));
zebra.set(bin64_t(0,2));
int count;
TEST(BinsTest,Alloc) {
- bins b;
+ binmap_t b;
b.set(bin64_t(1,0));
b.set(bin64_t(1,1));
- b.set(bin64_t(1,0),bins::EMPTY);
- b.set(bin64_t(1,1),bins::EMPTY);
+ b.set(bin64_t(1,0),binmap_t::EMPTY);
+ b.set(bin64_t(1,1),binmap_t::EMPTY);
EXPECT_EQ(1,b.size());
}
TEST(BinsTest,Remove) {
- bins b;
+ binmap_t b;
b.set(bin64_t(5,0));
- bins c;
+ binmap_t c;
c.set(bin64_t(2,0));
c.set(bin64_t(2,2));
b.remove(c);
- EXPECT_EQ(bins::EMPTY,b.get(bin64_t(2,0)));
- EXPECT_EQ(bins::FILLED,b.get(bin64_t(2,1)));
- EXPECT_EQ(bins::EMPTY,b.get(bin64_t(2,2)));
- EXPECT_EQ(bins::FILLED,b.get(bin64_t(2,3)));
- EXPECT_EQ(bins::FILLED,b.get(bin64_t(4,1)));
+ EXPECT_EQ(binmap_t::EMPTY,b.get(bin64_t(2,0)));
+ EXPECT_EQ(binmap_t::FILLED,b.get(bin64_t(2,1)));
+ EXPECT_EQ(binmap_t::EMPTY,b.get(bin64_t(2,2)));
+ EXPECT_EQ(binmap_t::FILLED,b.get(bin64_t(2,3)));
+ EXPECT_EQ(binmap_t::FILLED,b.get(bin64_t(4,1)));
- bins b16, b1024, b8192;
+ binmap_t b16, b1024, b8192;
b16.set(bin64_t(3,1));
b1024.set(bin64_t(3,1));
b1024.set(bin64_t(4,2));
b1024.remove(b16);
b1024.remove(b8192);
- EXPECT_EQ(bins::EMPTY,b1024.get(bin64_t(3,1)));
- EXPECT_EQ(bins::EMPTY,b1024.get(bin64_t(5,0)));
- EXPECT_EQ(bins::EMPTY,b1024.get(bin64_t(9,1)));
- EXPECT_EQ(bins::EMPTY,b1024.get(bin64_t(12,1)));
- EXPECT_EQ(bins::FILLED,b1024.get(bin64_t(4,2)));
+ EXPECT_EQ(binmap_t::EMPTY,b1024.get(bin64_t(3,1)));
+ EXPECT_EQ(binmap_t::EMPTY,b1024.get(bin64_t(5,0)));
+ EXPECT_EQ(binmap_t::EMPTY,b1024.get(bin64_t(9,1)));
+ EXPECT_EQ(binmap_t::EMPTY,b1024.get(bin64_t(12,1)));
+ EXPECT_EQ(binmap_t::FILLED,b1024.get(bin64_t(4,2)));
b8192.set(bin64_t(2,3));
b16.remove(b8192);
- EXPECT_EQ(bins::EMPTY,b16.get(bin64_t(2,3)));
- EXPECT_EQ(bins::FILLED,b16.get(bin64_t(2,2)));
+ EXPECT_EQ(binmap_t::EMPTY,b16.get(bin64_t(2,3)));
+ EXPECT_EQ(binmap_t::FILLED,b16.get(bin64_t(2,2)));
}
TEST(BinsTest,FindFiltered) {
- bins data, filter;
+ binmap_t data, filter;
data.set(bin64_t(2,0));
data.set(bin64_t(2,2));
data.set(bin64_t(1,7));
TEST(BinsTest, Cover) {
- bins b;
+ binmap_t b;
b.set(bin64_t(2,0));
b.set(bin64_t(4,1));
EXPECT_EQ(bin64_t(4,1),b.cover(bin64_t(0,30)));
EXPECT_EQ(bin64_t(2,0),b.cover(bin64_t(0,3)));
EXPECT_EQ(bin64_t(2,0),b.cover(bin64_t(2,0)));
- //bins c;
+ //binmap_t c;
//EXPECT_EQ(bin64_t::ALL,b.cover(bin64_t(0,30)));
}
TEST(BinsTest,FindFiltered2) {
- bins data, filter;
+ binmap_t data, filter;
for(int i=0; i<1024; i+=2)
data.set(bin64_t(0,i));
for(int j=1; j<1024; j+=2)
filter.set(bin64_t(0,j));
- filter.set(bin64_t(0,501),bins::EMPTY);
+ filter.set(bin64_t(0,501),binmap_t::EMPTY);
EXPECT_EQ(bin64_t(0,501),data.find_filtered(filter,bin64_t(10,0)).left_foot());
data.set(bin64_t(0,501));
EXPECT_EQ(bin64_t::NONE,data.find_filtered(filter,bin64_t(10,0)).left_foot());
}
TEST(BinsTest,CopyRange) {
- bins data, add;
+ binmap_t data, add;
data.set(bin64_t(2,0));
data.set(bin64_t(2,2));
data.set(bin64_t(1,7));
add.set(bin64_t(0,13));
add.set(bin64_t(5,118));
data.copy_range(add, bin64_t(3,0));
- EXPECT_TRUE(bins::is_mixed(data.get(bin64_t(3,0))));
- EXPECT_EQ(bins::EMPTY,data.get(bin64_t(2,0)));
- EXPECT_EQ(bins::FILLED,data.get(bin64_t(2,1)));
- EXPECT_EQ(bins::EMPTY,data.get(bin64_t(1,6)));
- EXPECT_EQ(bins::FILLED,data.get(bin64_t(1,7)));
+ EXPECT_TRUE(binmap_t::is_mixed(data.get(bin64_t(3,0))));
+ EXPECT_EQ(binmap_t::EMPTY,data.get(bin64_t(2,0)));
+ EXPECT_EQ(binmap_t::FILLED,data.get(bin64_t(2,1)));
+ EXPECT_EQ(binmap_t::EMPTY,data.get(bin64_t(1,6)));
+ EXPECT_EQ(binmap_t::FILLED,data.get(bin64_t(1,7)));
}
TEST(BinsTest, Mass) {
- bins b;
- b.set(bin64_t(6,0),bins::FILLED);
- b.set(bin64_t(0,0),bins::EMPTY);
+ binmap_t b;
+ b.set(bin64_t(6,0),binmap_t::FILLED);
+ b.set(bin64_t(0,0),binmap_t::EMPTY);
EXPECT_EQ(63,b.mass());
EXPECT_FALSE(b.is_empty());
b.clear();
EXPECT_TRUE(b.is_empty());
EXPECT_EQ(0,b.mass());
- bins b50;
+ binmap_t b50;
for(int i=0; i<50; i++)
b50.set(bin64_t(4,i*2));
EXPECT_EQ(50<<4,b50.mass());
}
TEST(BinsTest,Twist) {
- bins b;
+ binmap_t b;
b.set(bin64_t(3,2));
- EXPECT_EQ(bins::FILLED,b.get(bin64_t(3,2)));
- EXPECT_EQ(bins::EMPTY,b.get(bin64_t(3,3)));
+ EXPECT_EQ(binmap_t::FILLED,b.get(bin64_t(3,2)));
+ EXPECT_EQ(binmap_t::EMPTY,b.get(bin64_t(3,3)));
b.twist(1<<3);
- EXPECT_EQ(bins::FILLED,b.get(bin64_t(3,3)));
- EXPECT_EQ(bins::EMPTY,b.get(bin64_t(3,2)));
- bin64_t tw = b.find(bin64_t(5,0),bins::FILLED);
+ EXPECT_EQ(binmap_t::FILLED,b.get(bin64_t(3,3)));
+ EXPECT_EQ(binmap_t::EMPTY,b.get(bin64_t(3,2)));
+ bin64_t tw = b.find(bin64_t(5,0),binmap_t::FILLED);
while (tw.width()>(1<<3))
tw = tw.left();
tw = tw.twisted(1<<3);
EXPECT_EQ(bin64_t(3,2),tw);
b.twist(0);
- EXPECT_EQ(bins::FILLED,b.get(bin64_t(3,2)));
- EXPECT_EQ(bins::EMPTY,b.get(bin64_t(3,3)));
+ EXPECT_EQ(binmap_t::FILLED,b.get(bin64_t(3,2)));
+ EXPECT_EQ(binmap_t::EMPTY,b.get(bin64_t(3,3)));
}
TEST(BinsTest,SeqLength) {
- bins b;
+ binmap_t b;
b.set(bin64_t(3,0));
b.set(bin64_t(1,4));
b.set(bin64_t(0,10));
TEST(BinsTest,EmptyFilled) {
// 1112 3312 2111 ....
- bins b;
+ binmap_t b;
EXPECT_TRUE(b.is_empty(bin64_t::ALL));
EXPECT_TRUE(b.is_empty(bin64_t(2,3)));
EXPECT_FALSE(b.is_filled(bin64_t(2,3)));
- EXPECT_TRUE(b.is_solid(bin64_t(2,3),bins::MIXED));
+ EXPECT_TRUE(b.is_solid(bin64_t(2,3),binmap_t::MIXED));
EXPECT_TRUE(b.is_filled(bin64_t(1,0)));
EXPECT_TRUE(b.is_filled(bin64_t(1,5)));
EXPECT_FALSE(b.is_filled(bin64_t(1,3)));
}
/*TEST(BinsTest,AddSub) {
- bins b;
+ binmap_t b;
b|=15;
b-=1;
ASSERT_TRUE(b.contains(2));
}
TEST(BinsTest,Performance) {
- bins b;
+ binmap_t b;
std::set<int> s;
clock_t start, end;
double b_time, s_time;