void BitSet::set(uint32 bitIndex) { uint32 wordIdx = WORD_INDEX(bitIndex); expandTo(wordIdx); words[wordIdx] |= (((uint64)1) << WORD_OFFSET(bitIndex)); }
void BitSet::flip(uint32 bitIndex) { uint32 wordIdx = WORD_INDEX(bitIndex); expandTo(wordIdx); words[wordIdx] ^= (((uint64)1) << WORD_OFFSET(bitIndex)); recalculateWordsInUse(); }
BitSet& BitSet::clear(uint32 bitIndex) { uint32 wordIdx = WORD_INDEX(bitIndex); if (wordIdx < words.size()) { words[wordIdx] &= ~(((uint64)1) << WORD_OFFSET(bitIndex)); recalculateWordsInUse(); } return *this; }
void BitSet::clear(uint32 bitIndex) { uint32 wordIdx = WORD_INDEX(bitIndex); if (wordIdx >= words.size()) return; words[wordIdx] &= ~(((uint64)1) << WORD_OFFSET(bitIndex)); recalculateWordsInUse(); }
bool BitSet::get(uint32 bitIndex) const { uint32 wordIdx = WORD_INDEX(bitIndex); return ((wordIdx < words.size()) && ((words[wordIdx] & (((uint64)1) << WORD_OFFSET(bitIndex))) != 0)); }