3 #include <initializer_list> 8 template <typename T, typename Q = typename std::underlying_type<T>::type>
13 : value_(static_cast<T>(0))
24 for (
auto flag : flags)
32 return this->value_ == other.value_;
37 return this->value_ != other.value_;
42 reinterpret_cast<Q &
>(this->value_) |= static_cast<Q>(flag);
47 reinterpret_cast<Q &
>(this->value_) &= ~static_cast<Q>(flag);
50 void set(T flag,
bool value)
58 bool has(T flag)
const 60 return static_cast<Q
>(this->value_) & static_cast<Q>(flag);
66 xd.value_ = this->value_;
74 return static_cast<Q
>(this->value_) & static_cast<Q>(flags.value_);
79 return (static_cast<Q>(this->value_) & static_cast<Q>(flags.value_)) &&
80 static_cast<Q
>(flags->value);
83 bool hasNone(std::initializer_list<T> flags)
const 85 return !this->
hasAny(flags);
bool operator!=(const FlagsEnum &other)
Definition: FlagsEnum.hpp:35
bool operator==(const FlagsEnum< T > &other)
Definition: FlagsEnum.hpp:30
FlagsEnum(T value)
Definition: FlagsEnum.hpp:17
Definition: Application.cpp:48
FlagsEnum(std::initializer_list< T > flags)
Definition: FlagsEnum.hpp:22
bool hasAny(FlagsEnum flags) const
Definition: FlagsEnum.hpp:72
Definition: FlagsEnum.hpp:9
FlagsEnum()
Definition: FlagsEnum.hpp:12
bool has(T flag) const
Definition: FlagsEnum.hpp:58
void unset(T flag)
Definition: FlagsEnum.hpp:45
bool hasNone(std::initializer_list< T > flags) const
Definition: FlagsEnum.hpp:83
bool hasAll(FlagsEnum< T > flags) const
Definition: FlagsEnum.hpp:77
void set(T flag)
Definition: FlagsEnum.hpp:40
FlagsEnum operator|(T flag)
Definition: FlagsEnum.hpp:63