template class utils::EnumFlags
Overview
Template implementation of Enum Flags. Allows the setting and checking of enum values. More…
#include <EnumFlags.h> template <class T, class TMask = uint32_t> class EnumFlags { public: // construction EnumFlags(); template <typename... Types> EnumFlags(const EnumType val1, Types ... valn); EnumFlags(const std::vector<EnumType>& values); // methods void Set(const T val); bool IsSet(const T val) const; uint8_t CountSet() const; bool IsAnySet() const; std::vector<T> ToVector() const; bool operator==(const T& value) const; bool operator!=(const T& value) const; EnumFlags<T, TMask>& operator+=(const EnumFlags<T, TMask>& other); };
Detailed Documentation
Template implementation of Enum Flags. Allows the setting and checking of enum values.
Example usage:
Initialization: auto flags = utils::EnumFlags<EnumType>(EnumType::val1, EnumType::val2, ...); Setting and checking: flags.Set(EnumType::val3); bool is_val4 = flags.IsSet(EnumType::val4);
The underlying enum class should have its values starting with 0 and incrementing by 1, i.e. default. In case of enum classes with many values, consider using a larger storage type for the bit mask - template argument TMask.
Construction
EnumFlags()
Constructor with no flags to be set.
template <typename... Types> EnumFlags(const EnumType val1, Types ... valn)
Variadic constructor with a variable amount of flags to be set.
EnumFlags(const std::vector<EnumType>& values)
Construct from std::vector.
Methods
void Set(const T val)
Set a single flag.
bool IsSet(const T val) const
Checks whether a given flag is set.
uint8_t CountSet() const
Returns the number of flags set.
bool IsAnySet() const
Return whether there is at least one flag set.
std::vector<T> ToVector() const
Creates a vector containing all elements set.
bool operator==(const T& value) const
Check whether the flags are exactly one single value.
bool operator!=(const T& value) const
Check whether the flags are not exactly one single value.
EnumFlags<T, TMask>& operator+=(const EnumFlags<T, TMask>& other)
Add other flags.