BitArray.h 951 B

123456789101112131415161718192021222324252627
  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. } CoreBitArray;
  9. static_assert(sizeof(CoreBitArray) == 16, "wusi");
  10. #define CORE_BIT_ARRAY ((CoreBitArray){0, 0, nullptr})
  11. void coreCopyBitArray(CoreBitArray* a, const CoreBitArray* other);
  12. void coreMoveBitArray(CoreBitArray* a, CoreBitArray* other);
  13. void coreDestroyBitArray(CoreBitArray* a);
  14. CoreBitArray* coreBitArraySet(CoreBitArray* a, size_t index, u64 value);
  15. u64 coreBitArrayGet(const CoreBitArray* a, size_t index);
  16. size_t coreBitArrayBytes(const CoreBitArray* a);
  17. i64 coreBitArraySelect(const CoreBitArray* a, size_t index);
  18. void coreResizeBitArray(CoreBitArray* a, size_t newLength, size_t newBits);
  19. void coreFillBitArray(CoreBitArray* a, u64 value);
  20. size_t coreToStringBitArray(const CoreBitArray* a, char* buffer, size_t n);
  21. void coreSwapBitArray(CoreBitArray* a, CoreBitArray* b);
  22. #endif