12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- #ifndef CORE_BIT_ARRAY_H
- #define CORE_BIT_ARRAY_H
- #include "core/Types.h"
- typedef struct {
- u64 length : 56;
- u64 bits : 8;
- u64* data;
- } CoreBitArray;
- static_assert(sizeof(CoreBitArray) == 16, "invalid bit array size");
- #define CORE_BIT_ARRAY ((CoreBitArray){0, 0, nullptr})
- void coreCopyBitArray(CoreBitArray* a, const CoreBitArray* other);
- void coreMoveBitArray(CoreBitArray* a, CoreBitArray* other);
- void coreDestroyBitArray(CoreBitArray* a);
- CoreBitArray* coreSetBitsBitArray(CoreBitArray* a, size_t index, u64 value);
- u64 coreGetBitsBitArray(const CoreBitArray* a, size_t index);
- size_t coreGetBytesBitArray(const CoreBitArray* a);
- i64 coreSelectBitsBitArray(const CoreBitArray* a, size_t index);
- void coreResizeBitArray(CoreBitArray* a, size_t newLength, size_t newBits);
- void coreFillBitArray(CoreBitArray* a, u64 value);
- size_t coreToStringBitArray(const CoreBitArray* a, char* buffer, size_t n);
- void coreSwapBitArray(CoreBitArray* a, CoreBitArray* b);
- #ifdef IMPORT_CORE
- #define BitArray CoreBitArray
- #define BIT_ARRAY CORE_BIT_ARRAY
- #define copyBitArray coreCopyBitArray
- #define moveBitArray coreMoveBitArray
- #define destroyBitArray coreDestroyBitArray
- #define setBitsBitArray coreSetBitsBitArray
- #define getBitsBitArray coreGetBitsBitArray
- #define getBytesBitArray coreGetBytesBitArray
- #define selectBitsBitArray coreSelectBitsBitArray
- #define resizeBitArray coreResizeBitArray
- #define fillBitArray coreFillBitArray
- #define toStringBitArray coreToStringBitArray
- #define swapBitArray coreSwapBitArray
- #endif
- #endif
|