BitArray.cppm 990 B

123456789101112131415161718192021222324252627282930313233
  1. export module Core.BitArray;
  2. import Core.Types;
  3. export import Core.ToString;
  4. export namespace Core {
  5. class BitArray final {
  6. u64 length : 56;
  7. u64 bits : 8;
  8. u64* data;
  9. public:
  10. BitArray() noexcept;
  11. BitArray(const BitArray& other) noexcept;
  12. BitArray(BitArray&& other) noexcept;
  13. ~BitArray() noexcept;
  14. BitArray& operator=(BitArray other) noexcept;
  15. BitArray& set(size_t index, u64 value) noexcept;
  16. u64 get(size_t index) const noexcept;
  17. size_t getLength() const noexcept;
  18. size_t getBits() const noexcept;
  19. size_t getInternalByteSize() const noexcept;
  20. i64 select(size_t index) const noexcept;
  21. void resize(size_t newLength, size_t newBits) noexcept;
  22. void fill(u64 value) noexcept;
  23. size_t toString(StringBase& b) const noexcept;
  24. void swap(BitArray& other) noexcept;
  25. };
  26. static_assert(sizeof(BitArray) == 16, "invalid bit array size");
  27. }