![]() |
LArSoft
v10_06_00
Liquid Argon Software toolkit - https://larsoft.org/
|
Classes and functions to manage bit masks and flags. More...
Namespaces | |
| details | |
| errors | |
| Namespace enclosing BitMask exceptions. | |
Classes | |
| class | BitMask |
| A class containing a set of flags. More... | |
| struct | BitMaskFromValuesTag |
| Type for constructor tag from values. More... | |
| struct | Bits_t |
| Type identifying a set of bits. More... | |
| struct | Flag_t |
| Type identifying a flag. Operations are implemented as free functions. More... | |
| class | FlagSet |
| A class containing a set of flags. More... | |
Typedefs | |
| using | Index_t = unsigned int |
| Type to denote the index of the flag. More... | |
Functions | |
| template<typename Storage > | |
| std::ostream & | operator<< (std::ostream &out, Flag_t< Storage > flag) |
| Output of a flag into a stream (prints its index). More... | |
| template<typename Storage > | |
| std::string | to_string (Flag_t< Storage > const flag) |
| Convert a flag into a stream (shows its index). More... | |
| template<typename Stream , typename Storage > | |
| Stream & | operator<< (Stream &&out, BitMask< Storage > const &mask) |
| Output of a bit mask into a stream. More... | |
| template<typename Storage > | |
| constexpr BitMask< Storage > | makeMask (Bits_t< Storage > bits) |
| Constructs a mask from bits. More... | |
| template<unsigned int NBits, typename Storage > | |
| std::ostream & | operator<< (std::ostream &out, FlagSet< NBits, Storage > const &flags) |
| Output of a flag set into a stream. More... | |
Comparison operators for flags (based on the index) | |
| template<typename Storage > | |
| constexpr bool | operator== (Index_t left, Flag_t< Storage > right) |
| template<typename Storage > | |
| constexpr bool | operator== (Flag_t< Storage > left, Index_t right) |
| template<typename Storage > | |
| constexpr bool | operator!= (Index_t left, Flag_t< Storage > right) |
| template<typename Storage > | |
| constexpr bool | operator!= (Flag_t< Storage > left, Index_t right) |
| template<typename Storage > | |
| constexpr bool | operator< (Index_t left, Flag_t< Storage > right) |
| template<typename Storage > | |
| constexpr bool | operator< (Flag_t< Storage > left, Index_t right) |
| template<typename Storage > | |
| constexpr bool | operator> (Index_t left, Flag_t< Storage > right) |
| template<typename Storage > | |
| constexpr bool | operator> (Flag_t< Storage > left, Index_t right) |
| template<typename Storage > | |
| constexpr bool | operator<= (Index_t left, Flag_t< Storage > right) |
| template<typename Storage > | |
| constexpr bool | operator<= (Flag_t< Storage > left, Index_t right) |
| template<typename Storage > | |
| constexpr bool | operator>= (Index_t left, Flag_t< Storage > right) |
| template<typename Storage > | |
| constexpr bool | 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 > | 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 > | 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 > | 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 > | 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 > | 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 > | 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 > | 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 > | 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 > | operator| (BitMask< Storage > left, BitMask< Storage > right) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | operator| (BitMask< Storage > left, typename BitMask< Storage >::Bits_t right) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | operator| (typename BitMask< Storage >::Bits_t left, BitMask< Storage > right) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | operator& (BitMask< Storage > left, BitMask< Storage > right) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | operator& (BitMask< Storage > left, typename BitMask< Storage >::Bits_t right) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | operator& (typename BitMask< Storage >::Bits_t left, BitMask< Storage > right) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | operator& (Bits_t< Storage > left, Bits_t< Storage > right) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | operator+ (BitMask< Storage > baseMask, BitMask< Storage > mask) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | operator+ (BitMask< Storage > baseMask, typename BitMask< Storage >::Bits_t bits) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | operator+ (typename BitMask< Storage >::Bits_t baseBits, BitMask< Storage > mask) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | operator- (BitMask< Storage > baseMask, BitMask< Storage > mask) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | operator- (BitMask< Storage > baseMask, typename BitMask< Storage >::Bits_t bits) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | operator- (typename BitMask< Storage >::Bits_t baseBits, BitMask< Storage > mask) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | operator- (Bits_t< Storage > baseBits, Bits_t< Storage > bits) |
| template<typename Storage > | |
| constexpr BitMask< Storage > | operator+ (BitMask< Storage > mask) |
| Returns a copy of the mask. More... | |
| template<typename Storage > | |
| constexpr BitMask< Storage > | operator+ (Bits_t< Storage > bits) |
| Returns a mask with the specified bits set. More... | |
| template<typename Storage > | |
| constexpr BitMask< Storage > | 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 > | 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 > | operator~ (BitMask< Storage > mask) |
| Returns a bit set which unsets the specified bits. More... | |
| template<typename Storage > | |
| constexpr BitMask< Storage > | Set (Flag_t< Storage > flag) |
| Returns a bit mask which sets the specified flag. More... | |
| template<typename Storage > | |
| constexpr BitMask< Storage > | Unset (Flag_t< Storage > flag) |
| Returns a bit mask which unsets the specified flag. More... | |
Variables | |
| constexpr BitMaskFromValuesTag | maskFromValues {} |
Value useful for BitMask constructors from value. More... | |
Classes and functions to manage bit masks and flags.
In this namespace a "hierarchy" of classes are defined:
Flag_t: a single bit; it can be initialized with the bit index, but it is stored as a bit mask. A flag has two states: set and unset.Bits_t: a set of flags (represented as a bit mask).BitMask: a set of flags which can have one of three states each: set, unset or undefined.FlagSet: a set of flags (like BitMask), with the knowledge of a total number of supported flags.The first three classes manage exactly how many bits they have storage for. FlagSet instead has also the notion of how many flags are actually supported. A number of flag-wise operations are defined. The result of an operation between two classes might be a class of a superior level in the hierarchy. In this sense, the lower objects should be intended as shortcut representations of Bits_t. More specifically:
Bits_t can be created out of a Flag_tBitMask can be created out of a Bits_t (or a Flag_t)~Flag_t is not definedBits_t | Bits_t and Bits_t + Bits_t are still Bits_t (and they are equivalent)Bits_t & Bits_t and Bits_t - Bits_t are BitMask, to preserve the information of bits that are defined and unset~Bits_t is a BitMask as well | using util::flags::Index_t = typedef unsigned int |
| constexpr BitMask<Storage> util::flags::makeMask | ( | Bits_t< Storage > | bits | ) |
Constructs a mask from bits.
Referenced by recob::TrajectoryPointFlags::DefaultFlagsMask(), recob::TrajectoryPointFlags::dump(), and operator<<().
| constexpr bool util::flags::operator!= | ( | Index_t | left, |
| Flag_t< Storage > | right | ||
| ) |
Definition at line 138 of file BitMask.h.
References util::flags::Flag_t< Storage >::index().
| constexpr bool util::flags::operator!= | ( | Flag_t< Storage > | left, |
| Index_t | right | ||
| ) |
Definition at line 143 of file BitMask.h.
References util::flags::Flag_t< Storage >::index(), and art::right().
| constexpr BitMask<Storage> util::flags::operator& | ( | BitMask< Storage > | left, |
| BitMask< Storage > | right | ||
| ) |
Returns a mask which intersects two of them.
BitMask<Storage>::intersectWithMask() Referenced by operator<<().
| constexpr BitMask<Storage> util::flags::operator& | ( | BitMask< Storage > | left, |
| typename BitMask< Storage >::Bits_t | right | ||
| ) |
Returns a mask which intersects two of them.
BitMask<Storage>::intersectWithMask() | constexpr BitMask<Storage> util::flags::operator& | ( | typename BitMask< Storage >::Bits_t | left, |
| BitMask< Storage > | right | ||
| ) |
Returns a mask which intersects two of them.
BitMask<Storage>::intersectWithMask() | constexpr BitMask<Storage> util::flags::operator& | ( | Bits_t< Storage > | left, |
| Bits_t< Storage > | right | ||
| ) |
Returns a mask which intersects two of them.
BitMask<Storage>::intersectWithMask() | 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.
Referenced by operator<<(), and util::flags::Bits_t< Storage_t >::unsetBits().
| 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.
| 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.
| 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.
| constexpr BitMask<Storage> util::flags::operator+ | ( | BitMask< Storage > | baseMask, |
| BitMask< Storage > | mask | ||
| ) |
Returns a mask which merges two of them.
BitMask<Storage>::mergeIntoMask() | constexpr BitMask<Storage> util::flags::operator+ | ( | BitMask< Storage > | baseMask, |
| typename BitMask< Storage >::Bits_t | bits | ||
| ) |
Returns a mask which merges two of them
BitMask<Storage>::mergeIntoMask() | constexpr BitMask<Storage> util::flags::operator+ | ( | typename BitMask< Storage >::Bits_t | baseBits, |
| BitMask< Storage > | mask | ||
| ) |
Returns a mask which merges two of them
BitMask<Storage>::mergeIntoMask() | constexpr BitMask<Storage> util::flags::operator+ | ( | BitMask< Storage > | mask | ) |
Returns a copy of the mask.
| constexpr BitMask<Storage> util::flags::operator+ | ( | Bits_t< Storage > | bits | ) |
Returns a mask with the specified bits set.
| constexpr BitMask<Storage> util::flags::operator- | ( | BitMask< Storage > | baseMask, |
| BitMask< Storage > | mask | ||
| ) |
Returns a mask set which defines and unsets the bits set in the mask.
BitMask<Storage>::unsetMask() Referenced by operator<<().
| constexpr BitMask<Storage> util::flags::operator- | ( | BitMask< Storage > | baseMask, |
| typename BitMask< Storage >::Bits_t | bits | ||
| ) |
Returns a mask set which defines and unsets the specified bits.
BitMask<Storage>::unsetMask() | constexpr BitMask<Storage> util::flags::operator- | ( | typename BitMask< Storage >::Bits_t | baseBits, |
| BitMask< Storage > | mask | ||
| ) |
Returns a mask set which defines and unsets the bits set in the mask.
BitMask<Storage>::unsetMask() | constexpr BitMask<Storage> util::flags::operator- | ( | Bits_t< Storage > | baseBits, |
| Bits_t< Storage > | bits | ||
| ) |
Returns a mask which defines and unsets the specified bits.
BitMask<Storage>::unsetMask() | constexpr BitMask<Storage> util::flags::operator- | ( | Bits_t< Storage > | bits | ) |
Returns a mask M = -B so that A + M is equivalent to A - B.
| constexpr BitMask<Storage> util::flags::operator- | ( | Flag_t< Storage > | flag | ) |
Returns a mask M = -B so that A + M is equivalent to A - B.
| constexpr bool util::flags::operator< | ( | Index_t | left, |
| Flag_t< Storage > | right | ||
| ) |
Definition at line 149 of file BitMask.h.
References art::left(), and art::right().
| constexpr bool util::flags::operator< | ( | Flag_t< Storage > | left, |
| Index_t | right | ||
| ) |
Definition at line 154 of file BitMask.h.
References art::right().
| std::ostream& util::flags::operator<< | ( | std::ostream & | out, |
| FlagSet< NBits, Storage > const & | flags | ||
| ) |
| std::ostream& util::flags::operator<< | ( | std::ostream & | out, |
| Flag_t< Storage > | flag | ||
| ) |
| Stream& util::flags::operator<< | ( | Stream && | out, |
| BitMask< Storage > const & | mask | ||
| ) |
Output of a bit mask into a stream.
Definition at line 1187 of file BitMask.h.
References makeMask(), operator&(), operator+(), operator-(), operator|(), operator~(), Set(), and Unset().
| constexpr bool util::flags::operator<= | ( | Index_t | left, |
| Flag_t< Storage > | right | ||
| ) |
Definition at line 171 of file BitMask.h.
References art::right().
| constexpr bool util::flags::operator<= | ( | Flag_t< Storage > | left, |
| Index_t | right | ||
| ) |
Definition at line 176 of file BitMask.h.
References art::right().
| constexpr bool util::flags::operator== | ( | Index_t | left, |
| Flag_t< Storage > | right | ||
| ) |
Definition at line 127 of file BitMask.h.
References util::flags::Flag_t< Storage >::index().
| constexpr bool util::flags::operator== | ( | Flag_t< Storage > | left, |
| Index_t | right | ||
| ) |
Definition at line 132 of file BitMask.h.
References util::flags::Flag_t< Storage >::index(), and art::right().
| constexpr bool util::flags::operator> | ( | Index_t | left, |
| Flag_t< Storage > | right | ||
| ) |
Definition at line 160 of file BitMask.h.
References util::flags::Flag_t< Storage >::index().
| constexpr bool util::flags::operator> | ( | Flag_t< Storage > | left, |
| Index_t | right | ||
| ) |
Definition at line 165 of file BitMask.h.
References util::flags::Flag_t< Storage >::index(), and art::right().
| constexpr bool util::flags::operator>= | ( | Index_t | left, |
| Flag_t< Storage > | right | ||
| ) |
Definition at line 182 of file BitMask.h.
References util::flags::Flag_t< Storage >::index().
| constexpr bool util::flags::operator>= | ( | Flag_t< Storage > | left, |
| Index_t | right | ||
| ) |
Definition at line 187 of file BitMask.h.
References util::flags::Flag_t< Storage >::index(), and art::right().
| 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.
Referenced by operator<<(), and util::flags::Bits_t< Storage_t >::unsetBits().
| 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.
| 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.
| 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.
| constexpr BitMask<Storage> util::flags::operator| | ( | BitMask< Storage > | left, |
| BitMask< Storage > | right | ||
| ) |
Returns a mask which combines two of them.
BitMask<Storage>::combineWithMask() | constexpr BitMask<Storage> util::flags::operator| | ( | BitMask< Storage > | left, |
| typename BitMask< Storage >::Bits_t | right | ||
| ) |
Returns a mask which merges two of them.
BitMask<Storage>::combineWithMask() | constexpr BitMask<Storage> util::flags::operator| | ( | typename BitMask< Storage >::Bits_t | left, |
| BitMask< Storage > | right | ||
| ) |
Returns a mask which merges two of them.
BitMask<Storage>::combineWithMask() | constexpr BitMask<Storage> util::flags::operator~ | ( | BitMask< Storage > | mask | ) |
Returns a bit set which unsets the specified bits.
Referenced by operator<<().
Returns a bit mask which sets the specified flag.
Referenced by operator<<().
| std::string util::flags::to_string | ( | Flag_t< Storage > const | flag | ) |
Convert a flag into a stream (shows its index).
Definition at line 204 of file BitMask.h.
References util::flags::Flag_t< Storage >::index().
Returns a bit mask which unsets the specified flag.
Referenced by operator<<().
| constexpr BitMaskFromValuesTag util::flags::maskFromValues {} |