24 #include <type_traits>    29 #ifndef DOXYGEN_SHOULD_SKIP_THIS    99     : m_data(
static_cast<Type>(e))
   110       return Flags(~m_data);
   120       return Flags(m_data | flags.m_data);
   130       m_data |= flags.m_data;
   141       return Flags(m_data & flags.m_data);
   151       m_data &= flags.m_data;
   170     constexpr bool test(E flag) 
const {
   171       return (m_data & 
static_cast<Type>(flag)) != 0;
   180       m_data |= 
static_cast<Type>(flag);
   189       m_data &= ~
static_cast<Type>(flag);
   192     using Type = 
typename std::underlying_type<E>::type;
   206     constexpr Flags(Type data)
   226     return lhs | 
Flags<E>(rhs);
   240     return Flags<E>(lhs) | rhs;
   254     return lhs & 
Flags<E>(rhs);
   268     return Flags<E>(lhs) & rhs;
   281     return Flags<E>(flag);
   292   template<
typename E, 
typename ... F>
   294     return Flags<E>(flag) | combineFlags(others ...);
   297 #ifndef DOXYGEN_SHOULD_SKIP_THIS   304 struct EnableBitmaskOperators {
   305   static constexpr bool value = 
false;
   313 typename std::enable_if<EnableBitmaskOperators<E>::value, 
gf::
Flags<E>>::type
   314 operator|(E lhs, E rhs) {
   320 typename std::enable_if<EnableBitmaskOperators<E>::value, 
gf::
Flags<E>>::type
   321 operator&(E lhs, E rhs) {
   327 typename std::enable_if<EnableBitmaskOperators<E>::value, 
gf::
Flags<E>>::type
 Semantic type to represent "none". 
Definition: Types.h:37
 
Bitfield relying on an enumeration. 
Definition: Flags.h:68
 
Flags< E > & operator &=(Flags< E > flags)
Binary AND and assignment. 
Definition: Flags.h:150
 
constexpr Flags< E > combineFlags(E flag, F ... others)
Combine several enum values into a flag value. 
Definition: Flags.h:293
 
void reset(E flag)
Reset a flag. 
Definition: Flags.h:188
 
constexpr Flags(NoneType)
Constructor with no flag set. 
Definition: Flags.h:78
 
Semantic type to represent "all". 
Definition: Types.h:53
 
constexpr Flags operator &(Flags flags) const
Binary AND between two bitfields. 
Definition: Flags.h:140
 
constexpr Flags(AllType)
Constructor with all flags set. 
Definition: Flags.h:87
 
constexpr Flags< E > operator~() const
Binary NOT operator. 
Definition: Flags.h:109
 
void set(E flag)
Set a flag. 
Definition: Flags.h:179
 
constexpr Flags(E e)
Constructor with an enum value. 
Definition: Flags.h:98
 
constexpr bool test(E flag) const
Test if a specified flag is set. 
Definition: Flags.h:170
 
Flags()=default
Default constructor. 
 
Type getValue() const
Get the underlying value of the flags. 
Definition: Flags.h:201
 
The namespace for gf classes. 
Definition: Action.h:34
 
Flags< E > & operator|=(Flags< E > flags)
Binary OR and assignment. 
Definition: Flags.h:129
 
constexpr Flags operator|(Flags flags) const
Binary OR between two bitfields. 
Definition: Flags.h:119
 
constexpr Flags< E > operator&(Flags< E > lhs, E rhs)
Binary AND between a bitfield and a flag. 
Definition: Flags.h:253
 
constexpr Flags< E > operator|(Flags< E > lhs, E rhs)
Binary OR between a bitfield and a flag. 
Definition: Flags.h:225
 
constexpr Flags< E > operator&(E lhs, Flags< E > rhs)
Binary AND between a flag and a bitfield. 
Definition: Flags.h:267
 
constexpr Flags< E > operator|(E lhs, Flags< E > rhs)
Binary OR between a flag and a bitfield. 
Definition: Flags.h:239
 
constexpr operator bool() const
Test if any flag is set. 
Definition: Flags.h:160
 
constexpr Flags< E > combineFlags(E flag)
Combine a single enum value into a flag value. 
Definition: Flags.h:280