From 7ffb1f122e6e5bf22be2e5398e92c39f7c8f7842 Mon Sep 17 00:00:00 2001 From: Imbus <> Date: Sat, 27 Dec 2025 02:08:14 +0100 Subject: [PATCH] Bitset --- bitset2.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 bitset2.c diff --git a/bitset2.c b/bitset2.c new file mode 100644 index 0000000..212fcbe --- /dev/null +++ b/bitset2.c @@ -0,0 +1,15 @@ +#include +#include + +#define BITSET_WORD_BITS (sizeof(bitset_word_t) * 8U) +#define BITSET_WORD(idx) ((uintptr_t *)(bits))[(idx) / BITSET_WORD_BITS] +#define BITSET_MASK(idx) ((uintptr_t)1 << ((idx) % BITSET_WORD_BITS)) + +#define BITSET_SET(bits, idx) (BITSET_WORD(idx) |= BITSET_MASK(idx)) +#define BITSET_CLEAR(bits, idx) (BITSET_WORD(idx) &= ~BITSET_MASK(idx)) +#define BITSET_FLIP(bits, idx) (BITSET_WORD(idx) ^= BITSET_MASK(idx)) +#define BITSET_TEST(bits, idx) (!!((BITSET_WORD(idx) & BITSET_MASK(idx)))) /* forces 0/1 */ +// #define BITSET_PUT(bits, idx, v) do { if (v) BITSET_SET(bits,idx); else BITSET_CLEAR(bits,idx); } while(0) +int main(void) { + return 0; +}