diff options
Diffstat (limited to 'include/utils/BitSet.h')
| -rw-r--r-- | include/utils/BitSet.h | 6 | 
1 files changed, 6 insertions, 0 deletions
diff --git a/include/utils/BitSet.h b/include/utils/BitSet.h index f5dbcd9422..f03825ae0f 100644 --- a/include/utils/BitSet.h +++ b/include/utils/BitSet.h @@ -61,6 +61,12 @@ struct BitSet32 {      // Result is undefined if all bits are marked.      inline uint32_t firstUnmarkedBit() const { return __builtin_clz(~ value); } +    // Gets the index of the specified bit in the set, which is the number of +    // marked bits that appear before the specified bit. +    inline uint32_t getIndexOfBit(uint32_t n) const { +        return __builtin_popcount(value & ~(0xffffffffUL >> n)); +    } +      inline bool operator== (const BitSet32& other) const { return value == other.value; }      inline bool operator!= (const BitSet32& other) const { return value != other.value; }  };  |