template <class T, int SignificantBits, int Shift = 0, bool NullifyBitsOnIteration = false>

class BitMask

Defined at line 438 of file ../../third_party/abseil-cpp/absl/container/internal/raw_hash_set.h

Mask that can be iterable

For example, when `SignificantBits` is 16 and `Shift` is zero, this is just

an ordinary 16-bit bitset occupying the low 16 bits of `mask`. When

`SignificantBits` is 8 and `Shift` is 3, abstract bits are represented as

the bytes `0x00` and `0x80`, and it occupies all 64 bits of the bitmask.

If NullifyBitsOnIteration is true (only allowed for Shift == 3),

non zero abstract bit is allowed to have additional bits

(e.g., `0xff`, `0x83` and `0x9c` are ok, but `0x6f` is not).

For example:

for (int i : BitMask

<uint32

_t, 16>(0b101)) -> yields 0, 2

for (int i : BitMask

<uint64

_t, 8, 3>(0x0000000080800000)) -> yields 2, 3

Public Methods

void BitMask<T, SignificantBits, Shift, NullifyBitsOnIteration> (T mask)

Defined at line 445 of file ../../third_party/abseil-cpp/absl/container/internal/raw_hash_set.h

BitMask<T, SignificantBits, Shift, NullifyBitsOnIteration> & operator++ ()

Defined at line 455 of file ../../third_party/abseil-cpp/absl/container/internal/raw_hash_set.h

uint32_t operator* ()

Defined at line 463 of file ../../third_party/abseil-cpp/absl/container/internal/raw_hash_set.h

BitMask<T, SignificantBits, Shift, NullifyBitsOnIteration> begin ()

Defined at line 465 of file ../../third_party/abseil-cpp/absl/container/internal/raw_hash_set.h

BitMask<T, SignificantBits, Shift, NullifyBitsOnIteration> end ()

Defined at line 466 of file ../../third_party/abseil-cpp/absl/container/internal/raw_hash_set.h

Friends

template <class T, int SignificantBits, int Shift = 0, bool NullifyBitsOnIteration = false>
bool BitMask (const BitMask<T, SignificantBits, Shift, NullifyBitsOnIteration> & a, const BitMask<T, SignificantBits, Shift, NullifyBitsOnIteration> & b)
template <class Tint SignificantBitsint Shift = 0bool NullifyBitsOnIteration = false>
bool BitMask (const BitMask<T, SignificantBits, Shift, NullifyBitsOnIteration> & aconst BitMask<T, SignificantBits, Shift, NullifyBitsOnIteration> & b)