BitArray.h 650 B

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