![]() |
Project
|
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 EnumFlags & | operator= (const EnumFlags &o)=default |
| constexpr EnumFlags & | operator= (EnumFlags &&o)=default |
| template<std::same_as< E > T> | |
| constexpr EnumFlags & | operator|= (T t) noexcept |
| template<std::same_as< E > T> | |
| constexpr EnumFlags & | operator&= (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 EnumFlags & | operator|= (const EnumFlags &o) noexcept |
| constexpr EnumFlags | operator^ (const EnumFlags &o) const noexcept |
| constexpr EnumFlags | operator& (const EnumFlags &o) const noexcept |
| constexpr EnumFlags & | operator^= (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} |
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.
|
explicitconstexprdefault |
|
inlineexplicitconstexpr |
Definition at line 381 of file EnumFlags.h.
|
constexprdefault |
|
constexprdefault |
|
inlineexplicitconstexpr |
Definition at line 387 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 389 of file EnumFlags.h.
|
inlineexplicit |
Definition at line 395 of file EnumFlags.h.
|
constexprdefault |
|
inlineconstexprnoexcept |
Definition at line 496 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 635 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 490 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 682 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 664 of file EnumFlags.h.
|
inline |
Definition at line 654 of file EnumFlags.h.
|
inlinestaticconstexprnoexcept |
Definition at line 412 of file EnumFlags.h.
|
inlinestaticconstexprnoexcept |
Definition at line 406 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 676 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 642 of file EnumFlags.h.
|
inlineexplicitconstexprnoexcept |
Definition at line 542 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 561 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 621 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 590 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 582 of file EnumFlags.h.
|
constexprdefault |
|
constexprdefault |
|
inlineconstexprnoexcept |
Definition at line 555 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 549 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 615 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 627 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 602 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 608 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 574 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 596 of file EnumFlags.h.
|
inline |
Definition at line 510 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 442 of file EnumFlags.h.
|
inlineconstexpr |
Definition at line 449 of file EnumFlags.h.
|
inline |
Definition at line 648 of file EnumFlags.h.
|
inline |
Definition at line 420 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 470 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 477 of file EnumFlags.h.
|
inline |
Definition at line 502 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 456 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 463 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 484 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 670 of file EnumFlags.h.
|
inlineconstexprnoexcept |
Definition at line 436 of file EnumFlags.h.
|
staticconstexpr |
Definition at line 403 of file EnumFlags.h.
|
staticconstexpr |
Definition at line 402 of file EnumFlags.h.