bool bitset_test(BitSet *b, size_t i) { size_t index = bitset_index(i); size_t mask = bitset_mask(i); size_t *w = &b[index].word; return (*w & mask) != 0; }
void bitset_unset(BitSet *b, size_t i) { size_t index = bitset_index(i); size_t mask = bitset_mask(i); size_t *w = &b[index].word; *w &= ~mask; }
int bitset_set(void *ptr, int bit){ unsigned char *b = (unsigned char *)ptr + (bit / CHAR_BIT); unsigned char m = bitset_mask(bit); if ((*b & m)) return 0; *b |= m; return 1; }
int bitset_isset(void *ptr, int bit){ return (bitset_elem(ptr,bit) & bitset_mask(bit)) != 0; }
void bitset_set(bitset *bits, uint64_t bit) { *bitset_elem(bits, bit) |= bitset_mask(bits, bit); }
int bitset_isset(bitset *bits, uint64_t bit) { return (*bitset_elem(bits, bit) & bitset_mask(bits, bit)) != 0; }