#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