BitArray.h 983 B

123456789101112131415161718192021222324252627282930313233
  1. #ifndef CORE_BIT_ARRAY_H
  2. #define CORE_BIT_ARRAY_H
  3. #include "core/Types.h"
  4. struct CoreBitArrayT {
  5. u64 length : 56;
  6. u64 bits : 8;
  7. u64* data;
  8. };
  9. typedef struct CoreBitArrayT CoreBitArray;
  10. static_assert(sizeof(CoreBitArray) == 16, "invalid bit array size");
  11. void coreInitBitArray(CoreBitArray* a, size_t length, size_t bits);
  12. void coreDestroyBitArray(CoreBitArray* a);
  13. void coreSetBits(CoreBitArray* a, size_t index, u64 value);
  14. void coreSetAllBits(CoreBitArray* a, u64 value);
  15. u64 coreGetBits(const CoreBitArray* a, size_t index);
  16. i64 coreSelectBits(const CoreBitArray* a, size_t index);
  17. void coreSetBitLength(CoreBitArray* a, size_t newLength, size_t newBits);
  18. #ifdef IMPORT_CORE
  19. #define BitArray CoreBitArray
  20. #define initBitArray coreInitBitArray
  21. #define destroyBitArray coreDestroyBitArray
  22. #define setBits coreSetBits
  23. #define setAllBits coreSetAllBits
  24. #define getBits coreGetBits
  25. #define selectBits coreSelectBits
  26. #define setBitLength coreSetBitLength
  27. #endif
  28. #endif