Class holding flags. More...
#include <ostream>#include <string>#include <exception>#include "lardataobj/Utilities/BitMask.tcc"Go to the source code of this file.
Classes | |
| struct | util::flags::details::SmallestUIntType< NBits > |
| struct | util::flags::Flag_t< Storage > |
| Type identifying a flag. Operations are implemented as free functions. More... | |
| struct | util::flags::Bits_t< Storage > |
| Type identifying a set of bits. More... | |
| struct | util::flags::errors::Exception |
| Base class for exceptions thrown by flag-related utilities. More... | |
| struct | util::flags::errors::FlagNotDefined |
| Exception thrown to convey that an undefined flag index was tested. More... | |
| struct | util::flags::errors::OutOfRange |
| Exception thrown to convey that an invalid flag index was used. More... | |
| struct | util::flags::BitMaskFromValuesTag |
| Type for constructor tag from values. More... | |
| class | util::flags::BitMask< Storage > |
| A class containing a set of flags. More... | |
Namespaces | |
| util | |
| Namespace for general, non-LArSoft-specific utilities. | |
| util::flags | |
| Classes and functions to manage bit masks and flags. | |
| util::flags::details | |
| util::flags::errors | |
| Namespace enclosing BitMask exceptions. | |
Typedefs | |
| using | util::flags::Index_t = unsigned int |
| Type to denote the index of the flag. More... | |
| template<unsigned int NBits> | |
| using | util::flags::details::smallestUInt_t = typename SmallestUIntType< NBits >::type |
The smallest integral type accommodating NBits bits. More... | |
Functions | |
| template<typename Storage > | |
| constexpr unsigned int | util::flags::details::computePages (unsigned int bits) |
| Returns the number of Storage variables needed to hold that many bits. More... | |
| template<typename Storage > | |
| constexpr Storage | util::flags::details::makeBits (Index_t index) |
| Returns a set of bits with only the one at the specified index set. More... | |
| template<typename Storage > | |
| std::ostream & | util::flags::operator<< (std::ostream &out, Flag_t< Storage > flag) |
| Output of a flag into a stream (prints its index). More... | |
| template<typename Storage > | |
| std::string | util::flags::to_string (Flag_t< Storage > const flag) |
| Convert a flag into a stream (shows its index). More... | |
| template<typename Stream , typename Storage > | |
| Stream & | util::flags::operator<< (Stream &&out, BitMask< Storage > const &mask) |
| Output of a bit mask into a stream. More... | |
| template<typename Storage > | |
| constexpr BitMask< Storage > | util::flags::makeMask (Bits_t< Storage > bits) |
| Constructs a mask from bits. More... | |
Comparison operators for flags (based on the index) | |
| template<typename Storage > | |
| constexpr bool | util::flags::operator== (Index_t left, Flag_t< Storage > right) |
| template<typename Storage > | |
| constexpr bool | util::flags::operator== (Flag_t< Storage > left, Index_t right) |
| template<typename Storage > | |
| constexpr bool | util::flags::operator!= (Index_t left, Flag_t< Storage > right) |
| template<typename Storage > | |
| constexpr bool | util::flags::operator!= (Flag_t< Storage > left, Index_t right) |
| template<typename Storage > | |
| constexpr bool | util::flags::operator< (Index_t left, Flag_t< Storage > right) |
| template<typename Storage > | |
| constexpr bool | util::flags::operator< (Flag_t< Storage > left, Index_t right) |
| template<typename Storage > | |
| constexpr bool | util::flags::operator> (Index_t left, Flag_t< Storage > right) |
| template<typename Storage > | |
| constexpr bool | util::flags::operator> (Flag_t< Storage > left, Index_t right) |
| template<typename Storage > | |
| constexpr bool | util::flags::operator<= (Index_t left, Flag_t< Storage > right) |
| template<typename Storage > | |
| constexpr bool | util::flags::operator<= (Flag_t< Storage > left, Index_t right) |
| template<typename Storage > | |
| constexpr bool | util::flags::operator>= (Index_t left, Flag_t< Storage > right) |
| template<typename Storage > | |
| constexpr bool | util::flags::operator>= (Flag_t< Storage > left, Index_t right) |
Flag and bit operations. | |
Any bitwise operation with a flag returns a | |
| template<typename Storage > | |
| constexpr Bits_t< Storage > | util::flags::operator| (Bits_t< Storage > left, Bits_t< Storage > right) |
| Returns a new Bits_t with all the bits from both arguments set. More... | |
| template<typename Storage > | |
| constexpr Bits_t< Storage > | util::flags::operator| (Bits_t< Storage > left, typename Bits_t< Storage >::Flag_t right) |
| Returns a new Bits_t with all the bits from both arguments set. More... | |
| template<typename Storage > | |
| constexpr Bits_t< Storage > | util::flags::operator| (typename Bits_t< Storage >::Flag_t left, Bits_t< Storage > right) |
| Returns a new Bits_t with all the bits from both arguments set. More... | |
| template<typename Storage > | |
| constexpr Bits_t< Storage > | util::flags::operator| (Flag_t< Storage > left, Flag_t< Storage > right) |
| Returns a new Bits_t with all the bits from both arguments set. More... | |
| template<typename Storage > | |
| constexpr Bits_t< Storage > | util::flags::operator+ (Bits_t< Storage > left, Bits_t< Storage > right) |
| Returns a new Bits_t with all the bits from both arguments set. More... | |
| template<typename Storage > | |
| constexpr Bits_t< Storage > | util::flags::operator+ (Bits_t< Storage > left, typename Bits_t< Storage >::Flag_t right) |
| Returns a new Bits_t with all the bits from both arguments set. More... | |
| template<typename Storage > | |
| constexpr Bits_t< Storage > | util::flags::operator+ (typename Bits_t< Storage >::Flag_t left, Bits_t< Storage > right) |
| Returns a new Bits_t with all the bits from both arguments set. More... | |
| template<typename Storage > | |
| constexpr Bits_t< Storage > | util::flags::operator+ (Flag_t< Storage > left, Flag_t< Storage > right) |
| Returns a new Bits_t with all the bits from both arguments set. More... | |
Flag and mask management | |
The operations use the first operand as the starting point for the result. The binary operations in this group are:
The unary operations are:
| |
| template<typename Storage > | |
| constexpr BitMask< Storage > | util::flags::operator| (BitMask< Storage > left, BitMask< Storage > right) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | util::flags::operator| (BitMask< Storage > left, typename BitMask< Storage >::Bits_t right) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | util::flags::operator| (typename BitMask< Storage >::Bits_t left, BitMask< Storage > right) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | util::flags::operator& (BitMask< Storage > left, BitMask< Storage > right) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | util::flags::operator& (BitMask< Storage > left, typename BitMask< Storage >::Bits_t right) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | util::flags::operator& (typename BitMask< Storage >::Bits_t left, BitMask< Storage > right) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | util::flags::operator& (Bits_t< Storage > left, Bits_t< Storage > right) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | util::flags::operator+ (BitMask< Storage > baseMask, BitMask< Storage > mask) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | util::flags::operator+ (BitMask< Storage > baseMask, typename BitMask< Storage >::Bits_t bits) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | util::flags::operator+ (typename BitMask< Storage >::Bits_t baseBits, BitMask< Storage > mask) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | util::flags::operator- (BitMask< Storage > baseMask, BitMask< Storage > mask) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | util::flags::operator- (BitMask< Storage > baseMask, typename BitMask< Storage >::Bits_t bits) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | util::flags::operator- (typename BitMask< Storage >::Bits_t baseBits, BitMask< Storage > mask) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | util::flags::operator- (Bits_t< Storage > baseBits, Bits_t< Storage > bits) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | util::flags::operator+ (BitMask< Storage > mask) |
| Returns a copy of the mask. More... | |
| template<typename Storage > | |
| constexpr BitMask< Storage > | util::flags::operator+ (Bits_t< Storage > bits) |
| Returns a mask with the specified bits set. More... | |
| template<typename Storage > | |
| constexpr BitMask< Storage > | util::flags::operator- (Bits_t< Storage > bits) |
Returns a mask M = -B so that A + M is equivalent to A - B. More... | |
| template<typename Storage > | |
| constexpr BitMask< Storage > | util::flags::operator- (Flag_t< Storage > flag) |
Returns a mask M = -B so that A + M is equivalent to A - B. More... | |
| template<typename Storage > | |
| constexpr BitMask< Storage > | util::flags::operator~ (BitMask< Storage > mask) |
| Returns a bit set which unsets the specified bits. More... | |
| template<typename Storage > | |
| constexpr BitMask< Storage > | util::flags::Set (Flag_t< Storage > flag) |
| Returns a bit mask which sets the specified flag. More... | |
| template<typename Storage > | |
| constexpr BitMask< Storage > | util::flags::Unset (Flag_t< Storage > flag) |
| Returns a bit mask which unsets the specified flag. More... | |
Variables | |
| constexpr BitMaskFromValuesTag | util::flags::maskFromValues {} |
Value useful for BitMask constructors from value. More... | |
Class holding flags.
This pure header defines the template class util::flags::BitMask, which is used in util::flags::FlagSet, and a few auxiliary classes and types (util::flags::Index_t, util::flags::Flag_t).
Definition in file BitMask.h.
1.8.5