Project
Loading...
Searching...
No Matches
o2::utils::EnumFlags< E > Class Template Reference

Class to aggregate and manage enum-based on-off flags. More...

#include <EnumFlags.h>

Public Member Functions

constexpr EnumFlags ()=default
 
constexpr EnumFlags (E e)
 
constexpr EnumFlags (const EnumFlags &)=default
 
constexpr EnumFlags (EnumFlags &&)=default
 
constexpr EnumFlags (U u)
 
constexpr EnumFlags (std::initializer_list< E > flags) noexcept
 
 EnumFlags (const std::string &str, int base=DefaultBase)
 
constexpr ~EnumFlags ()=default
 
void set (const std::string &s, int base=DefaultBase)
 
constexpr auto value () const noexcept
 
constexpr void reset () noexcept
 
template<std::same_as< E > T>
constexpr void reset (T t)
 
template<std::same_as< E > T>
constexpr bool test (T t) const noexcept
 
template<std::same_as< E >... Ts>
constexpr bool test (Ts... flags) const noexcept
 
template<std::same_as< E > T>
constexpr void set (T t) noexcept
 
template<std::same_as< E >... Ts>
constexpr void set (Ts... flags) noexcept
 
template<std::same_as< E > T>
constexpr void toggle (T t) noexcept
 
constexpr bool any () const noexcept
 
constexpr bool all () const noexcept
 
std::string string () const
 
std::string pstring (bool withNewline=false) const
 
constexpr operator bool () const noexcept
 
template<std::same_as< E > T>
constexpr bool operator[] (const T t) const noexcept
 
constexpr bool operator== (const EnumFlags &o) const noexcept
 
constexpr bool operator!= (const EnumFlags &o) const noexcept
 
constexpr EnumFlagsoperator= (const EnumFlags &o)=default
 
constexpr EnumFlagsoperator= (EnumFlags &&o)=default
 
template<std::same_as< E > T>
constexpr EnumFlagsoperator|= (T t) noexcept
 
template<std::same_as< E > T>
constexpr EnumFlagsoperator&= (T t) noexcept
 
template<std::same_as< E > T>
constexpr EnumFlags operator& (T t) const noexcept
 
constexpr EnumFlags operator~ () const noexcept
 
constexpr EnumFlags operator| (const EnumFlags &o) const noexcept
 
constexpr EnumFlagsoperator|= (const EnumFlags &o) noexcept
 
constexpr EnumFlags operator^ (const EnumFlags &o) const noexcept
 
constexpr EnumFlags operator& (const EnumFlags &o) const noexcept
 
constexpr EnumFlagsoperator^= (const EnumFlags &o) noexcept
 
template<typename... Ts>
constexpr bool all_of (Ts... flags) const noexcept
 
template<typename... Ts>
constexpr bool none_of (Ts... flags) const noexcept
 
std::string serialize () const
 
void deserialize (const std::string &data)
 
constexpr size_t count () const noexcept
 
constexpr EnumFlags union_with (const EnumFlags &o) const noexcept
 
constexpr EnumFlags intersection_with (const EnumFlags &o) const noexcept
 
constexpr bool contains (const EnumFlags &other) const noexcept
 

Static Public Member Functions

static constexpr auto getValues () noexcept
 
static constexpr auto getNames () noexcept
 

Static Public Attributes

static constexpr U None {0}
 
static constexpr U All {H::MaxRep}
 

Detailed Description

template<EnumFlag E>
class o2::utils::EnumFlags< E >

Class to aggregate and manage enum-based on-off flags.

This class manages flags as bits in the underlying type of an enum (upto 64 bits), allowing manipulation via enum member names. It supports operations akin to std::bitset but is fully constexpr and is ideal for aggregating multiple on-off booleans, e.g., enabling/disabling algorithm features.

Example: enum class AlgoOptions { Feature1, Feature2, Feature3, }; ... EnumFlags<AlgoOptions> opts; opts.set("Feature1 | Feature3"); // Set Feature1 and Feature3. if (opts[AlgoOptions::Feature1]) { // Do some work. } // Check if Feature1 is set.

Additional examples of how to use this class are in testEnumFlags.cxx.

Definition at line 358 of file EnumFlags.h.

Constructor & Destructor Documentation

◆ EnumFlags() [1/7]

template<EnumFlag E>
constexpr o2::utils::EnumFlags< E >::EnumFlags ( )
explicitconstexprdefault

◆ EnumFlags() [2/7]

template<EnumFlag E>
constexpr o2::utils::EnumFlags< E >::EnumFlags ( e)
inlineexplicitconstexpr

Definition at line 381 of file EnumFlags.h.

◆ EnumFlags() [3/7]

template<EnumFlag E>
constexpr o2::utils::EnumFlags< E >::EnumFlags ( const EnumFlags< E > &  )
constexprdefault

◆ EnumFlags() [4/7]

template<EnumFlag E>
constexpr o2::utils::EnumFlags< E >::EnumFlags ( EnumFlags< E > &&  )
constexprdefault

◆ EnumFlags() [5/7]

template<EnumFlag E>
constexpr o2::utils::EnumFlags< E >::EnumFlags ( u)
inlineexplicitconstexpr

Definition at line 387 of file EnumFlags.h.

◆ EnumFlags() [6/7]

template<EnumFlag E>
constexpr o2::utils::EnumFlags< E >::EnumFlags ( std::initializer_list< E >  flags)
inlineconstexprnoexcept

Definition at line 389 of file EnumFlags.h.

◆ EnumFlags() [7/7]

template<EnumFlag E>
o2::utils::EnumFlags< E >::EnumFlags ( const std::string &  str,
int  base = DefaultBase 
)
inlineexplicit

Definition at line 395 of file EnumFlags.h.

◆ ~EnumFlags()

template<EnumFlag E>
constexpr o2::utils::EnumFlags< E >::~EnumFlags ( )
constexprdefault

Member Function Documentation

◆ all()

template<EnumFlag E>
constexpr bool o2::utils::EnumFlags< E >::all ( ) const
inlineconstexprnoexcept

Definition at line 496 of file EnumFlags.h.

◆ all_of()

template<EnumFlag E>
template<typename... Ts>
constexpr bool o2::utils::EnumFlags< E >::all_of ( Ts...  flags) const
inlineconstexprnoexcept

Definition at line 635 of file EnumFlags.h.

◆ any()

template<EnumFlag E>
constexpr bool o2::utils::EnumFlags< E >::any ( ) const
inlineconstexprnoexcept

Definition at line 490 of file EnumFlags.h.

◆ contains()

template<EnumFlag E>
constexpr bool o2::utils::EnumFlags< E >::contains ( const EnumFlags< E > &  other) const
inlineconstexprnoexcept

Definition at line 682 of file EnumFlags.h.

◆ count()

template<EnumFlag E>
constexpr size_t o2::utils::EnumFlags< E >::count ( ) const
inlineconstexprnoexcept

Definition at line 664 of file EnumFlags.h.

◆ deserialize()

template<EnumFlag E>
void o2::utils::EnumFlags< E >::deserialize ( const std::string &  data)
inline

Definition at line 654 of file EnumFlags.h.

◆ getNames()

template<EnumFlag E>
static constexpr auto o2::utils::EnumFlags< E >::getNames ( )
inlinestaticconstexprnoexcept

Definition at line 412 of file EnumFlags.h.

◆ getValues()

template<EnumFlag E>
static constexpr auto o2::utils::EnumFlags< E >::getValues ( )
inlinestaticconstexprnoexcept

Definition at line 406 of file EnumFlags.h.

◆ intersection_with()

template<EnumFlag E>
constexpr EnumFlags o2::utils::EnumFlags< E >::intersection_with ( const EnumFlags< E > &  o) const
inlineconstexprnoexcept

Definition at line 676 of file EnumFlags.h.

◆ none_of()

template<EnumFlag E>
template<typename... Ts>
constexpr bool o2::utils::EnumFlags< E >::none_of ( Ts...  flags) const
inlineconstexprnoexcept

Definition at line 642 of file EnumFlags.h.

◆ operator bool()

template<EnumFlag E>
constexpr o2::utils::EnumFlags< E >::operator bool ( ) const
inlineexplicitconstexprnoexcept

Definition at line 542 of file EnumFlags.h.

◆ operator!=()

template<EnumFlag E>
constexpr bool o2::utils::EnumFlags< E >::operator!= ( const EnumFlags< E > &  o) const
inlineconstexprnoexcept

Definition at line 561 of file EnumFlags.h.

◆ operator&() [1/2]

template<EnumFlag E>
constexpr EnumFlags o2::utils::EnumFlags< E >::operator& ( const EnumFlags< E > &  o) const
inlineconstexprnoexcept

Definition at line 621 of file EnumFlags.h.

◆ operator&() [2/2]

template<EnumFlag E>
template<std::same_as< E > T>
constexpr EnumFlags o2::utils::EnumFlags< E >::operator& ( t) const
inlineconstexprnoexcept

Definition at line 590 of file EnumFlags.h.

◆ operator&=()

template<EnumFlag E>
template<std::same_as< E > T>
constexpr EnumFlags & o2::utils::EnumFlags< E >::operator&= ( t)
inlineconstexprnoexcept

Definition at line 582 of file EnumFlags.h.

◆ operator=() [1/2]

template<EnumFlag E>
constexpr EnumFlags & o2::utils::EnumFlags< E >::operator= ( const EnumFlags< E > &  o)
constexprdefault

◆ operator=() [2/2]

template<EnumFlag E>
constexpr EnumFlags & o2::utils::EnumFlags< E >::operator= ( EnumFlags< E > &&  o)
constexprdefault

◆ operator==()

template<EnumFlag E>
constexpr bool o2::utils::EnumFlags< E >::operator== ( const EnumFlags< E > &  o) const
inlineconstexprnoexcept

Definition at line 555 of file EnumFlags.h.

◆ operator[]()

template<EnumFlag E>
template<std::same_as< E > T>
constexpr bool o2::utils::EnumFlags< E >::operator[] ( const T  t) const
inlineconstexprnoexcept

Definition at line 549 of file EnumFlags.h.

◆ operator^()

template<EnumFlag E>
constexpr EnumFlags o2::utils::EnumFlags< E >::operator^ ( const EnumFlags< E > &  o) const
inlineconstexprnoexcept

Definition at line 615 of file EnumFlags.h.

◆ operator^=()

template<EnumFlag E>
constexpr EnumFlags & o2::utils::EnumFlags< E >::operator^= ( const EnumFlags< E > &  o)
inlineconstexprnoexcept

Definition at line 627 of file EnumFlags.h.

◆ operator|()

template<EnumFlag E>
constexpr EnumFlags o2::utils::EnumFlags< E >::operator| ( const EnumFlags< E > &  o) const
inlineconstexprnoexcept

Definition at line 602 of file EnumFlags.h.

◆ operator|=() [1/2]

template<EnumFlag E>
constexpr EnumFlags & o2::utils::EnumFlags< E >::operator|= ( const EnumFlags< E > &  o)
inlineconstexprnoexcept

Definition at line 608 of file EnumFlags.h.

◆ operator|=() [2/2]

template<EnumFlag E>
template<std::same_as< E > T>
constexpr EnumFlags & o2::utils::EnumFlags< E >::operator|= ( t)
inlineconstexprnoexcept

Definition at line 574 of file EnumFlags.h.

◆ operator~()

template<EnumFlag E>
constexpr EnumFlags o2::utils::EnumFlags< E >::operator~ ( ) const
inlineconstexprnoexcept

Definition at line 596 of file EnumFlags.h.

◆ pstring()

template<EnumFlag E>
std::string o2::utils::EnumFlags< E >::pstring ( bool  withNewline = false) const
inline

Definition at line 510 of file EnumFlags.h.

◆ reset() [1/2]

template<EnumFlag E>
constexpr void o2::utils::EnumFlags< E >::reset ( )
inlineconstexprnoexcept

Definition at line 442 of file EnumFlags.h.

◆ reset() [2/2]

template<EnumFlag E>
template<std::same_as< E > T>
constexpr void o2::utils::EnumFlags< E >::reset ( t)
inlineconstexpr

Definition at line 449 of file EnumFlags.h.

◆ serialize()

template<EnumFlag E>
std::string o2::utils::EnumFlags< E >::serialize ( ) const
inline

Definition at line 648 of file EnumFlags.h.

◆ set() [1/3]

template<EnumFlag E>
void o2::utils::EnumFlags< E >::set ( const std::string &  s,
int  base = DefaultBase 
)
inline

Definition at line 420 of file EnumFlags.h.

◆ set() [2/3]

template<EnumFlag E>
template<std::same_as< E > T>
constexpr void o2::utils::EnumFlags< E >::set ( t)
inlineconstexprnoexcept

Definition at line 470 of file EnumFlags.h.

◆ set() [3/3]

template<EnumFlag E>
template<std::same_as< E >... Ts>
constexpr void o2::utils::EnumFlags< E >::set ( Ts...  flags)
inlineconstexprnoexcept

Definition at line 477 of file EnumFlags.h.

◆ string()

template<EnumFlag E>
std::string o2::utils::EnumFlags< E >::string ( ) const
inline

Definition at line 502 of file EnumFlags.h.

◆ test() [1/2]

template<EnumFlag E>
template<std::same_as< E > T>
constexpr bool o2::utils::EnumFlags< E >::test ( t) const
inlineconstexprnoexcept

Definition at line 456 of file EnumFlags.h.

◆ test() [2/2]

template<EnumFlag E>
template<std::same_as< E >... Ts>
constexpr bool o2::utils::EnumFlags< E >::test ( Ts...  flags) const
inlineconstexprnoexcept

Definition at line 463 of file EnumFlags.h.

◆ toggle()

template<EnumFlag E>
template<std::same_as< E > T>
constexpr void o2::utils::EnumFlags< E >::toggle ( t)
inlineconstexprnoexcept

Definition at line 484 of file EnumFlags.h.

◆ union_with()

template<EnumFlag E>
constexpr EnumFlags o2::utils::EnumFlags< E >::union_with ( const EnumFlags< E > &  o) const
inlineconstexprnoexcept

Definition at line 670 of file EnumFlags.h.

◆ value()

template<EnumFlag E>
constexpr auto o2::utils::EnumFlags< E >::value ( ) const
inlineconstexprnoexcept

Definition at line 436 of file EnumFlags.h.

Member Data Documentation

◆ All

template<EnumFlag E>
constexpr U o2::utils::EnumFlags< E >::All {H::MaxRep}
staticconstexpr

Definition at line 403 of file EnumFlags.h.

◆ None

template<EnumFlag E>
constexpr U o2::utils::EnumFlags< E >::None {0}
staticconstexpr

Definition at line 402 of file EnumFlags.h.


The documentation for this class was generated from the following file: