//sets the idxth bit to b
void bit_vector::set(size_t idx, bool b)
{
-
- size_t i = idx / W;
- size_t j = idx % W;
- grow(allocforsize(idx+1));
- if (idx >= _size)
- _size = idx+1;
- uint32_t mask = 1 << (W - 1 - j);
- if (b)
- _vector[i] |= mask;
- else
- _vector[i] &= ~mask;
+ size_t i = idx / W;
+ size_t j = idx % W;
+ grow(allocforsize(idx+1));
+ if (idx >= _size)
+ _size = idx+1;
+ uint32_t mask = 1 << (W - 1 - j);
+ if (b)
+ _vector[i] |= mask;
+ else
+ _vector[i] &= ~mask;
+}
+void bit_vector::set_le(size_t idx, bool b)
+{
+ size_t i = idx / W;
+ size_t j = idx % W;
+ grow(allocforsize(idx+1));
+ if (idx >= _size)
+ _size = idx+1;
+ uint32_t mask = 1 << j;
+ if (b)
+ _vector[i] |= mask;
+ else
+ _vector[i] &= ~mask;
}
void bit_vector::push_back(bool b)
array_copy(_vector,vector,_alloc);
return vector;
}
+
+void bit_vector::debug(void) const
+{
+ for(size_t i = 0; i < _size; i++)
+ fprintf(stderr, "%i ", get(i));
+ fprintf(stderr, "\n");
+
+
+}