5 #ifndef HAKA_CONTAINER_BITFIELD_H 6 #define HAKA_CONTAINER_BITFIELD_H 8 #include <haka/compiler.h> 25 #define BITFIELD_STATIC(size, name) \ 27 struct bitfield bitfield; \ 28 int32 data[(size+31) / 32]; \ 31 #define BITFIELD_STATIC_INIT(n) { { size: n }, {0} } 36 INLINE
bool bitfield_get(
struct bitfield *bf,
int off)
38 assert(off < bf->size);
39 return (bf->data[off >> 5] & (1L << (off & 0x1f))) != 0;
45 INLINE
void bitfield_set(
struct bitfield *bf,
int off,
bool val)
47 int32 *
const ptr = bf->data + (off >> 5);
48 const int32 mask = off & 0x1f;
50 assert(off < bf->size);
52 *ptr = (*ptr & ~(1L << mask)) | (val << mask);
HAKA_32BIT_TYPE int32
Definition: types.h:24