BitArray.h 956 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #ifndef BITARRAY_H
  2. #define BITARRAY_H
  3. #include "utils/StringBuffer.h"
  4. class BitArray final {
  5. int length;
  6. int bits;
  7. int* data;
  8. public:
  9. BitArray();
  10. BitArray(int length, int bits);
  11. BitArray(const BitArray& other);
  12. BitArray(BitArray&& other);
  13. ~BitArray();
  14. BitArray& operator=(BitArray other);
  15. BitArray& set(int index, int value);
  16. int get(int index) const;
  17. int getLength() const;
  18. int getBits() const;
  19. int getInternalByteSize() const;
  20. int select(int index) const;
  21. void resize(int newLength, int newBits);
  22. void fill(int value);
  23. template<int L>
  24. void toString(StringBuffer<L>& s) const {
  25. s.append("[");
  26. for(int i = 0; i < length - 1; i++) {
  27. s.append(get(i));
  28. s.append(", ");
  29. }
  30. if(length > 0) {
  31. s.append(get(length - 1));
  32. }
  33. s.append("]");
  34. }
  35. private:
  36. void swap(BitArray& other);
  37. };
  38. #endif