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
|