Bitset
This commit is contained in:
parent
7012521d08
commit
7ffb1f122e
1 changed files with 15 additions and 0 deletions
15
bitset2.c
Normal file
15
bitset2.c
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#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;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue