X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=bit-vector.cpp;h=986e09811a8bac59d627823ab39fb7470fb5ada9;hb=a6ceb9addec9be126c967821d278153b43e948e4;hp=5450989c742eec7f927c0dd5783f0caf62da2eaf;hpb=9b8afc78da8be3f210cf204b732d4c84ca5080d5;p=SXSI%2FXMLTree.git diff --git a/bit-vector.cpp b/bit-vector.cpp index 5450989..986e098 100644 --- a/bit-vector.cpp +++ b/bit-vector.cpp @@ -146,17 +146,29 @@ void bit_vector::pack() //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) @@ -222,3 +234,12 @@ uint32_t * bit_vector::get_vector() const 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"); + + +}