10 #ifndef LARDATAOBJ_UTILITIES_FLAGSET_H
11 #define LARDATAOBJ_UTILITIES_FLAGSET_H
40 <
unsigned int NFlags,
typename Storage = details::smallestUInt_t<NFlags>>
43 static_assert(details::computePages<Storage>(NFlags) <= 1,
44 "Too many flags for this storage type.");
160 template <
typename Stream>
181 template <
typename... Args>
194 template <
unsigned int NBits,
typename Storage>
195 std::ostream&
operator<<
197 { flags.dump(out);
return out; }
208 #include "FlagSet.tcc"
213 #endif // LARDATAOBJ_UTILITIES_FLAGSET_H
typename Bits_t::Flag_t Flag_t
Type identifying a single flag.
void dump(Stream &&out, unsigned int nBits) const
Prints into the specified stream the least nBits significant bits.
errors::OutOfRange OutOfRangeError
Out-of-range flag index.
then echo unknown compiler flag
errors::Exception Exception
Generic BitMask exception.
Base class for exceptions thrown by flag-related utilities.
Type identifying a flag. Operations are implemented as free functions.
errors::FlagNotDefined FlagNotDefinedError
Flag not defined.
util::flags::Bits_t< Storage_t > Bits_t
Set of bits.
A class containing a set of flags.
constexpr Mask_t const & mask() const
Returns all the flags in the form of a mask.
static constexpr Mask_t create(Args...args)
Creates a new BitMask.
util::flags::Index_t FlagIndex_t
Type of index of flag.
A class containing a set of flags.
static constexpr Mask_t createMask(Args...args)
Creates a new BitMask.
bool test(Flag_t flag) const
Returns if the specified flag is set.
FlagSet & operator=(This_t const &)=default
constexpr FlagSet(Mask_t const &from)
Constructor: copy the specified mask.
typename Mask_t::FlagIndex_t FlagIndex_t
Type of index of flag.
constexpr bool isFlag(FlagIndex_t flagIndex) const
Returns whether the flag index is valid.
void dump(Stream &&out) const
Dumps on screen only the "official" flags (see size()).
Exception thrown to convey that an invalid flag index was used.
bool testImpl(Flag_t flag) const
Implementation detail of test()
Exception thrown to convey that an undefined flag index was tested.
BitMask< Storage > Mask_t
Type of bit mask for this flag set.
static constexpr size_t size()
Returns the number of flags the set supports.