29template <
typename EnumType_>
81 constexpr void set(
const BitField& other) { m_bits |= other.m_bits; }
88 constexpr void clear(
const BitField& other) { m_bits &= ~other.m_bits; }
104 return (m_bits & other.m_bits) == other.m_bits;
114 constexpr bool test_any(
const BitField& other)
const {
return (m_bits & other.m_bits) != 0; }
170 return BitField(m_bits | other.m_bits);
182 return BitField(m_bits & other.m_bits);
194 return BitField(m_bits ^ other.m_bits);
205 static_assert(std::is_enum_v<EnumType>);
constexpr BitField operator^(const BitField &other) const
Bitwise 'exclusive or' operator.
Definition BitField.h:192
constexpr BitField(EnumType value)
Constructor.
Definition BitField.h:49
std::underlying_type_t< EnumType > UnderlyingType
Underlying integral type representing the enum type.
Definition BitField.h:37
constexpr void set_bit(const BitField &other, bool is_set)
Allow to set the value of a bit.
Definition BitField.h:122
constexpr BitField(UnderlyingType bits)
Constructor.
Definition BitField.h:58
constexpr const UnderlyingType & get_value() const
Gets the underlying integral value.
Definition BitField.h:141
constexpr bool operator!=(const BitField &other) const
Different operator.
Definition BitField.h:159
constexpr void set(const BitField &other)
Set to 1 the specified bit.
Definition BitField.h:81
constexpr BitField operator&(const BitField &other) const
Bitwise 'and' operator.
Definition BitField.h:180
constexpr bool test_any(const BitField &other) const
Test if any bits are set.
Definition BitField.h:114
constexpr bool test(const BitField &other) const
Test the specified bit.
Definition BitField.h:102
constexpr void clear(const BitField &other)
Set to 0 the specified Bit.
Definition BitField.h:88
constexpr void clear_all()
Set all bits to 0.
Definition BitField.h:93
static constexpr BitField all()
Named constructor returning a bitfield set to 1.
Definition BitField.h:74
constexpr bool operator==(const BitField &other) const
Equal operator.
Definition BitField.h:150
constexpr BitField()
Default Constructor.
Definition BitField.h:40
constexpr BitField operator~() const
Bitwise 'one's complement' operator.
Definition BitField.h:202
EnumType_ EnumType
Enum type on top of which the bit field is built.
Definition BitField.h:34
constexpr BitField operator|(const BitField &other) const
Bitwise 'or' operator.
Definition BitField.h:168
static constexpr BitField none()
Named constructor returning a bitfield set to 0.
Definition BitField.h:67
Main namespace for Lagrange.