BitArray.h 610 B

12345678910111213141516171819202122
  1. #ifndef CORE_BIT_ARRAY_H
  2. #define CORE_BIT_ARRAY_H
  3. #include "core/Types.h"
  4. struct BitArrayT {
  5. u64 length : 56;
  6. u64 bits : 8;
  7. u64* data;
  8. };
  9. typedef struct BitArrayT BitArray;
  10. static_assert(sizeof(BitArray) == 16, "invalid bit array size");
  11. void initBitArray(BitArray* a, size_t length, size_t bits);
  12. void destroyBitArray(BitArray* a);
  13. void setBits(BitArray* a, size_t index, u64 value);
  14. void setAllBits(BitArray* a, u64 value);
  15. u64 getBits(const BitArray* a, size_t index);
  16. i64 selectBits(const BitArray* a, size_t index);
  17. void setBitLength(BitArray* a, size_t newLength, size_t newBits);
  18. #endif