1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #ifndef CORE_BIT_ARRAY_HPP
- #define CORE_BIT_ARRAY_HPP
- #include "core/utils/ArrayString.hpp"
- namespace Core {
- class BitArray final {
- u64 lengthBits;
- u64* data;
- public:
- BitArray();
- BitArray(const BitArray& other);
- BitArray(BitArray&& other);
- ~BitArray();
- BitArray& operator=(BitArray other);
- BitArray& set(size_t index, u64 value);
- u64 get(size_t index) const;
- size_t getLength() const;
- size_t getBits() const;
- size_t getInternalByteSize() const;
- i64 select(size_t index) const;
- CError resize(size_t newLength, size_t newBits);
- void fill(u64 value);
- void toString(BufferString& s) const {
- s.append("[");
- size_t length = getLength();
- if(length > 0) {
- length--;
- for(size_t i = 0; i < length; i++) {
- s.append(get(i)).append(", ");
- }
- s.append(get(length));
- }
- s.append("]");
- }
- void swap(BitArray& other);
- };
- }
- #endif
|