Fix a libcds bug:
[SXSI/XMLTree.git] / bit-vector.cpp
index 5450989..986e098 100644 (file)
@@ -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");
+  
+
+}