123456789101112131415161718192021222324252627 |
- #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, "wusi");
- #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* coreBitArraySet(CoreBitArray* a, size_t index, u64 value);
- u64 coreBitArrayGet(const CoreBitArray* a, size_t index);
- size_t coreBitArrayBytes(const CoreBitArray* a);
- i64 coreBitArraySelect(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);
- #endif
|