123456789101112131415161718192021222324252627282930313233 |
- #ifndef CORE_BIT_ARRAY_H
- #define CORE_BIT_ARRAY_H
- #include "core/Types.h"
- struct CoreBitArrayT {
- u64 length : 56;
- u64 bits : 8;
- u64* data;
- };
- typedef struct CoreBitArrayT CoreBitArray;
- static_assert(sizeof(CoreBitArray) == 16, "invalid bit array size");
- void coreInitBitArray(CoreBitArray* a, size_t length, size_t bits);
- void coreDestroyBitArray(CoreBitArray* a);
- void coreSetBits(CoreBitArray* a, size_t index, u64 value);
- void coreSetAllBits(CoreBitArray* a, u64 value);
- u64 coreGetBits(const CoreBitArray* a, size_t index);
- i64 coreSelectBits(const CoreBitArray* a, size_t index);
- void coreSetBitLength(CoreBitArray* a, size_t newLength, size_t newBits);
- #ifdef IMPORT_CORE
- #define BitArray CoreBitArray
- #define initBitArray coreInitBitArray
- #define destroyBitArray coreDestroyBitArray
- #define setBits coreSetBits
- #define setAllBits coreSetAllBits
- #define getBits coreGetBits
- #define selectBits coreSelectBits
- #define setBitLength coreSetBitLength
- #endif
- #endif
|