export module Core.BitArray; import Core.Types; export import Core.ToString; export namespace Core { class BitArray final { u64 length : 56; u64 bits : 8; u64* data; public: BitArray() noexcept; BitArray(const BitArray& other) noexcept; BitArray(BitArray&& other) noexcept; ~BitArray() noexcept; BitArray& operator=(BitArray other) noexcept; BitArray& set(size_t index, u64 value) noexcept; u64 get(size_t index) const noexcept; size_t getLength() const noexcept; size_t getBits() const noexcept; size_t getInternalByteSize() const noexcept; i64 select(size_t index) const noexcept; void resize(size_t newLength, size_t newBits) noexcept; void fill(u64 value) noexcept; size_t toString(StringBase& b) const noexcept; void swap(BitArray& other) noexcept; }; static_assert(sizeof(BitArray) == 16, "invalid bit array size"); }