bitset_utils.hpp
A set of simple functions to manipulate bitsets.
Note
Status: BETA
Typedefs
- 
using bits_field_t = size_t
- Use size_t as the default bits field type. 
Functions
- 
static constexpr size_t NumBitFields(size_t num_bits) noexcept
- Convert a bit count to the number of fields needed to store them. 
- 
static std::string BitFieldToString(bits_field_t field)
- Convert a single bit field to a string. - Parameters:
- field – A single bit field to convert to a string. 
 
- 
static std::string BitFieldsToString(Ptr<bits_field_t> bits, size_t count)
- Convert a series of bit fields to a string. - Parameters:
- field – A single bit field to convert to a string. 
 
- 
template<int NUM_BITS>
 constexpr uint32_t UIntMaskFirst()
- Create a series of a specified number of ones (at compile time) in a uint. 
- 
template<>
 constexpr uint32_t UIntMaskFirst<0>()
- Create an empty bit mask (all zeros) 
- 
template<typename T>
 inline constexpr size_t count_bits(T val)
- Count the number of bits in an unsigned integer. 
- 
template<typename T>
 inline constexpr size_t find_bit(const T val)
- Return the position of the first one bit. 
- 
template<typename T>
 inline constexpr size_t find_last_bit(T val)
- Return the position of the first one bit. 
- 
template<typename T>
 inline size_t pop_bit(T &val)
- Return the position of the first one bit AND REMOVE IT. 
- 
template<typename TYPE = size_t>
 static constexpr TYPE MaskLow(std::size_t num_bits)
- Quick bit-mask generator for low bits. 
Variables
- 
static constexpr size_t NUM_FIELD_BITS = sizeof(bits_field_t) * 8
- Track the number of bits in a single bit field. 
- 
constexpr size_t ByteCount[256] = {0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 1, 2, 2, 3, 2, 3, 3, 4, 2, 3, 3, 4, 3, 4, 4, 5, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 2, 3, 3, 4, 3, 4, 4, 5, 3, 4, 4, 5, 4, 5, 5, 6, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 3, 4, 4, 5, 4, 5, 5, 6, 4, 5, 5, 6, 5, 6, 6, 7, 4, 5, 5, 6, 5, 6, 6, 7, 5, 6, 6, 7, 6, 7, 7, 8}
- How many bits are set to one in each possible byte?