ALib C++ Library
Library Version: 2312 R0
Documentation generated by doxygen
Functions
aworx::lib::enums::bitwise Namespace Reference

Operators available to elements of enumerations if T_EnumIsBitwise is specialized.

Note
This namespace exits only in the documentation to collect the operators. When parsed by a C++ compiler, the operators reside in the global namespace and functions HasBits, CountElements, ToBitwiseEnumeration and ToSequentialEnumeration reside in namespace aworx.

As required, when parsed by a C++ compiler, the operators reside in the global namespace.

Functions

template<typename TEnum >
static constexpr int CountElements (TEnum value)
 
template<typename TEnum >
constexpr bool HasBits (TEnum element, TEnum selection) noexcept
 
template<typename TEnum >
constexpr TEnum operator& (TEnum lhs, TEnum rhs) noexcept(true)
 
template<typename TEnum >
constexpr TEnum operator&= (TEnum &lhs, TEnum rhs) noexcept(true)
 
template<typename TEnum >
constexpr TEnum operator+ (TEnum lhs, TEnum rhs) noexcept(true)
 
template<typename TEnum >
constexpr TEnum operator+= (TEnum &lhs, TEnum rhs) noexcept(true)
 
template<typename TEnum >
constexpr TEnum operator- (TEnum lhs, TEnum rhs) noexcept(true)
 
template<typename TEnum >
constexpr TEnum operator-= (TEnum &lhs, TEnum rhs) noexcept(true)
 
template<typename TEnum >
constexpr TEnum operator^ (TEnum lhs, TEnum rhs) noexcept(true)
 
template<typename TEnum >
constexpr TEnum operator^= (TEnum &lhs, TEnum rhs) noexcept(true)
 
template<typename TEnum >
constexpr TEnum operator| (TEnum lhs, TEnum rhs) noexcept(true)
 
template<typename TEnum >
constexpr bool operator|= (TEnum &lhs, TEnum rhs) noexcept(true)
 
template<typename TEnum >
constexpr TEnum operator~ (TEnum op) noexcept(true)
 
template<typename TEnum >
constexpr TEnum ToBitwiseEnumeration (typename std::underlying_type< TEnum >::type number)
 
template<typename TEnum >
static constexpr std::underlying_type< TEnum >::type ToSequentialEnumeration (TEnum element)
 

Function Documentation

◆ CountElements()

static constexpr int aworx::lib::enums::bitwise::CountElements ( TEnum  value)
staticconstexpr

Returns the number of bitwise enumeration elements set in the given value. In other words, the bits given in value are counted and the number is returned.

Selected by the compiler only if T_EnumIsBitwise is specialized for template enum type TEnum to inherit std::true_type.

Parameters
valueA single or composite selection of bits.
Returns
The result of a call to aworx::lib::BitCount().

◆ HasBits()

constexpr bool aworx::lib::enums::bitwise::HasBits ( TEnum  element,
TEnum  selection 
)
constexprnoexcept

Tests if the integral value of the given enum element contains all bits set in selection. In other words, returns result of:

  ( element & selection ) == selection

Selected by the compiler only if T_EnumIsBitwise is specialized for template enum type TEnum to inherit std::true_type.

Template Parameters
TEnumEnumeration type. Deduced by the compiler.
Parameters
elementBitset to be tested.
selectionSecond operand.
Returns
true if all bits of selection are set in element.

◆ operator&()

constexpr TEnum aworx::lib::enums::bitwise::operator& ( TEnum  lhs,
TEnum  rhs 
)
constexprnoexcept

Bitwise and operator useable with scoped enum types.

Selected by the compiler only if T_EnumIsBitwise is specialized for template enum type TEnum to inherit std::true_type.

Template Parameters
TEnumEnumeration type.
Parameters
lhsFirst operand.
rhsSecond operand.
Returns
The result of a bitwise and operation of the underlying enum values.

Definition at line 175 of file bitwise.hpp.

◆ operator&=()

constexpr TEnum aworx::lib::enums::bitwise::operator&= ( TEnum &  lhs,
TEnum  rhs 
)
constexprnoexcept

Bitwise assignment operator useable with scoped enum types.

Selected by the compiler only if T_EnumIsBitwise is specialized for template enum type TEnum to inherit std::true_type.

Template Parameters
TEnumEnumeration type.
Parameters
[in,out]lhsReference to the first operand. Receives the result.
rhsSecond operand.
Returns
The new value of lhs which is set to lhs & rhs.

Definition at line 199 of file bitwise.hpp.

◆ operator+()

constexpr TEnum aworx::lib::enums::bitwise::operator+ ( TEnum  lhs,
TEnum  rhs 
)
constexprnoexcept

Alias to bitwise or operator useable with scoped enum types.

Selected by the compiler only if T_EnumIsBitwise is specialized for template enum type TEnum to inherit std::true_type and if T_EnumIsArithmetical is not specialized to inherit std::true_type. The latter is to avoid ambiguities in situations where an enum is both, arithmetical and bitwise.

Template Parameters
TEnumEnumeration type.
Parameters
lhsFirst operand.
rhsSecond operand.
Returns
The result of a bitwise or operation of the underlying enum values.

Definition at line 350 of file bitwise.hpp.

◆ operator+=()

constexpr TEnum aworx::lib::enums::bitwise::operator+= ( TEnum &  lhs,
TEnum  rhs 
)
constexprnoexcept

Alias for bitwise or assignment operator useable with scoped enum types.

Selected by the compiler only if T_EnumIsBitwise is specialized for template enum type TEnum to inherit std::true_type and if T_EnumIsArithmetical is not specialized to inherit std::true_type. The latter is to avoid ambiguities in situations where an enum is both, arithmetical and bitwise.

Template Parameters
TEnumEnumeration type.
Parameters
[in,out]lhsReference to the first operand. Receives the result.
rhsSecond operand.
Returns
The new value of lhs which is set to lhs | rhs.

Definition at line 377 of file bitwise.hpp.

◆ operator-()

constexpr TEnum aworx::lib::enums::bitwise::operator- ( TEnum  lhs,
TEnum  rhs 
)
constexprnoexcept

Removes bit(s) found in rhs from lhs an returns result. This is a shortcut to:

 lhs & !rhs

Selected by the compiler only if T_EnumIsBitwise is specialized for template enum type TEnum to inherit std::true_type and if T_EnumIsArithmetical is not specialized to inherit std::true_type. The latter is to avoid ambiguities in situations where an enum is both, arithmetical and bitwise.

Template Parameters
TEnumEnumeration type.
Parameters
lhsFirst operand.
rhsSecond operand.
Returns
The result of lhs & !rhs.

Definition at line 406 of file bitwise.hpp.

◆ operator-=()

constexpr TEnum aworx::lib::enums::bitwise::operator-= ( TEnum &  lhs,
TEnum  rhs 
)
constexprnoexcept

Removes bit(s) found in rhs from lhs. This is a shortcut to:

 lhs &= !rhs

Selected by the compiler only if T_EnumIsBitwise is specialized for template enum type TEnum to inherit std::true_type and if T_EnumIsArithmetical is not specialized to inherit std::true_type. The latter is to avoid ambiguities in situations where an enum is both, arithmetical and bitwise.

Template Parameters
TEnumEnumeration type.
Parameters
[in,out]lhsReference to the first operand. Receives the result.
rhsSecond operand.
Returns
The new value of lhs which is set to lhs & ( ~rhs ).

Definition at line 435 of file bitwise.hpp.

◆ operator^()

constexpr TEnum aworx::lib::enums::bitwise::operator^ ( TEnum  lhs,
TEnum  rhs 
)
constexprnoexcept

Bitwise xor operator useable with scoped enum types.

Selected by the compiler only if T_EnumIsBitwise is specialized for template enum type TEnum to inherit std::true_type.

Template Parameters
TEnumEnumeration type.
Parameters
lhsFirst operand.
rhsSecond operand.
Returns
The result of a bitwise xor operation of the underlying enum values.

Definition at line 271 of file bitwise.hpp.

◆ operator^=()

constexpr TEnum aworx::lib::enums::bitwise::operator^= ( TEnum &  lhs,
TEnum  rhs 
)
constexprnoexcept

Bitwise xor assignment operator useable with scoped enum types.

Selected by the compiler only if T_EnumIsBitwise is specialized for template enum type TEnum to inherit std::true_type.

Template Parameters
TEnumEnumeration type.
Parameters
[in,out]lhsReference to the first operand. Receives the result.
rhsSecond operand.
Returns
The new value of lhs which is set to lhs ^ rhs.

Definition at line 295 of file bitwise.hpp.

◆ operator|()

constexpr TEnum aworx::lib::enums::bitwise::operator| ( TEnum  lhs,
TEnum  rhs 
)
constexprnoexcept

Bitwise or operator useable with scoped enum types.

Selected by the compiler only if T_EnumIsBitwise is specialized for template enum type TEnum to inherit std::true_type.

Template Parameters
TEnumEnumeration type.
Parameters
lhsFirst operand.
rhsSecond operand.
Returns
The result of a bitwise or operation of the underlying enum values.

Definition at line 223 of file bitwise.hpp.

◆ operator|=()

constexpr bool aworx::lib::enums::bitwise::operator|= ( TEnum &  lhs,
TEnum  rhs 
)
constexprnoexcept

Bitwise or assignment operator useable with scoped enum types.

Selected by the compiler only if T_EnumIsBitwise is specialized for template enum type TEnum to inherit std::true_type.

Template Parameters
TEnumEnumeration type.
Parameters
[in,out]lhsReference to the first operand. Receives the result.
rhsSecond operand.
Returns
The new value of lhs which is set to lhs | rhs.

Definition at line 247 of file bitwise.hpp.

◆ operator~()

constexpr TEnum aworx::lib::enums::bitwise::operator~ ( TEnum  op)
constexprnoexcept

Bitwise not operator useable with scoped enum types.

Selected by the compiler only if T_EnumIsBitwise is specialized for template enum type TEnum to inherit std::true_type.

Note
To remove one or more bits from a scoped enum value, operator &= with this operator applied to op can be used. A shortcut to this is given with operator-=.
Template Parameters
TEnumEnumeration type.
Parameters
opThe operand to be negated.
Returns
The result of a bitwise negation of op.

Definition at line 322 of file bitwise.hpp.

◆ ToBitwiseEnumeration()

constexpr TEnum aworx::lib::enums::bitwise::ToBitwiseEnumeration ( typename std::underlying_type< TEnum >::type  number)
constexpr

Returns the bitwise enumeration element of TEnum from a given sequential enumeration.

Selected by the compiler only if T_EnumIsBitwise is specialized for template enum type TEnum to inherit std::true_type.

See also
The reverse function ToSequentialEnumeration.
Template Parameters
TEnumAn enumeration type which is defined to be "bitwise".
Parameters
numberA sequentially enumerated number, for which the corresponding bitwise enumeration element is requested. bitwise enumeration.
Returns
Returns 1 << number.

◆ ToSequentialEnumeration()

static constexpr std::underlying_type<TEnum>::type aworx::lib::enums::bitwise::ToSequentialEnumeration ( TEnum  element)
staticconstexpr

Returns the sequentially enumerated number derived from the given bitwise enumeration value. In other words, the positon of the most significant bit set in the underlying integral of the given enum element is returned.
In debug-compilations an ALib assertion is raised in case that the given value is not a single enum element but a combination of bits.

Selected by the compiler only if T_EnumIsBitwise is specialized for template enum type TEnum to inherit std::true_type.

See also
The reverse function ToBitwiseEnumeration.
Template Parameters
TEnumA bitwise defined enumeration type. Deduced by the compiler.
Parameters
elementAn enumeration value.
Returns
The sequential number of an element of an enum type which is defined bitwise.