| 12345678910111213141516171819202122 | #ifndef CORE_BIT_ARRAY_H#define CORE_BIT_ARRAY_H#include "core/Types.h"typedef struct {    u64 length : 56;    u64 bits : 8;    u64* data;} BitArray;static_assert(sizeof(BitArray) == 16, "invalid bit array size");void initBitArray(BitArray* a, size_t length, size_t bits);void destroyBitArray(BitArray* a);void setBits(BitArray* a, size_t index, u64 value);void setAllBits(BitArray* a, u64 value);u64 getBits(const BitArray* a, size_t index);i64 selectBits(const BitArray* a, size_t index);void setBitLength(BitArray* a, size_t newLength, size_t newBits);size_t toStringBitArray(const BitArray* a, char* buffer, size_t n);#endif
 |