Browse Source

fill for bit arrays

Kajetan Johannes Hammerle 3 years ago
parent
commit
b090b812bc
2 changed files with 11 additions and 2 deletions
  1. 8 1
      utils/BitArray.cpp
  2. 3 1
      utils/BitArray.h

+ 8 - 1
utils/BitArray.cpp

@@ -40,8 +40,9 @@ static void setBits(int* data, int index, int bits, int value) {
     }
 }
 
-BitArray::BitArray(int length, int bits)
+BitArray::BitArray(int length, int bits, int value)
     : length(length), bits(bits), data(new int[roundUpDivide(length * bits, sizeof(int))]) {
+    fill(value);
 }
 
 BitArray::~BitArray() {
@@ -100,6 +101,12 @@ int BitArray::getBits() const {
     return bits;
 }
 
+void BitArray::fill(int value) {
+    for(int i = 0; i < length; i++) {
+        set(i, value);
+    }
+}
+
 void BitArray::resize(int newBits) {
     int* newData = new int[roundUpDivide(length * newBits, sizeof(int))];
     for(int i = 0; i < length; i++) {

+ 3 - 1
utils/BitArray.h

@@ -9,7 +9,7 @@ class BitArray final {
     int* data;
 
 public:
-    BitArray(int length, int bits);
+    BitArray(int length, int bits, int value = 0);
     ~BitArray();
     BitArray(const BitArray& other);
     BitArray(BitArray&& other);
@@ -24,6 +24,8 @@ public:
 
     void resize(int newBits);
 
+    void fill(int value);
+
     template<int L>
     void toString(StringBuffer<L>& s) const {
         s.append("[");