TrinityCore
Loading...
Searching...
No Matches
EnumFlag< T > Class Template Reference

#include <EnumFlag.h>

Public Member Functions

constexpr EnumFlag (T value)
 
constexpr EnumFlagoperator&= (EnumFlag right)
 
constexpr EnumFlagoperator|= (EnumFlag right)
 
constexpr EnumFlag operator~ () const
 
constexpr void RemoveFlag (EnumFlag flag)
 
constexpr bool HasFlag (T flag) const
 
constexpr bool HasAllFlags (T flags) const
 
constexpr operator T () const
 
constexpr std::underlying_type_t< T > AsUnderlyingType () const
 

Private Attributes

_value
 

Friends

constexpr friend EnumFlag operator& (EnumFlag left, EnumFlag right)
 
constexpr friend EnumFlag operator| (EnumFlag left, EnumFlag right)
 

Detailed Description

template<typename T>
class EnumFlag< T >

Definition at line 65 of file EnumFlag.h.

Constructor & Destructor Documentation

◆ EnumFlag()

template<typename T >
constexpr EnumFlag< T >::EnumFlag ( value)
inlineconstexpr

Definition at line 70 of file EnumFlag.h.

70 : _value(value)
71 {
72 }
T _value
Definition: EnumFlag.h:128

Member Function Documentation

◆ AsUnderlyingType()

template<typename T >
constexpr std::underlying_type_t< T > EnumFlag< T >::AsUnderlyingType ( ) const
inlineconstexpr

Definition at line 122 of file EnumFlag.h.

123 {
124 return static_cast<std::underlying_type_t<T>>(_value);
125 }
+ Here is the caller graph for this function:

◆ HasAllFlags()

template<typename T >
constexpr bool EnumFlag< T >::HasAllFlags ( flags) const
inlineconstexpr

Definition at line 112 of file EnumFlag.h.

113 {
114 return (_value & flags) == flags;
115 }
uint16 flags
Definition: DisableMgr.cpp:49

◆ HasFlag()

template<typename T >
constexpr bool EnumFlag< T >::HasFlag ( flag) const
inlineconstexpr

Definition at line 106 of file EnumFlag.h.

107 {
108 using i = std::underlying_type_t<T>;
109 return static_cast<i>(_value & flag) != static_cast<i>(0);
110 }
+ Here is the caller graph for this function:

◆ operator T()

template<typename T >
constexpr EnumFlag< T >::operator T ( ) const
inlineconstexpr

Definition at line 117 of file EnumFlag.h.

118 {
119 return _value;
120 }

◆ operator&=()

template<typename T >
constexpr EnumFlag & EnumFlag< T >::operator&= ( EnumFlag< T >  right)
inlineconstexpr

Definition at line 74 of file EnumFlag.h.

75 {
76 _value &= right._value;
77 return *this;
78 }

◆ operator|=()

template<typename T >
constexpr EnumFlag & EnumFlag< T >::operator|= ( EnumFlag< T >  right)
inlineconstexpr

Definition at line 85 of file EnumFlag.h.

86 {
87 _value |= right._value;
88 return *this;
89 }

◆ operator~()

template<typename T >
constexpr EnumFlag EnumFlag< T >::operator~ ( ) const
inlineconstexpr

Definition at line 96 of file EnumFlag.h.

97 {
98 return static_cast<T>(~static_cast<std::underlying_type_t<T>>(_value));
99 }

◆ RemoveFlag()

template<typename T >
constexpr void EnumFlag< T >::RemoveFlag ( EnumFlag< T >  flag)
inlineconstexpr

Definition at line 101 of file EnumFlag.h.

102 {
103 _value &= ~flag._value;
104 }

Friends And Related Function Documentation

◆ operator&

template<typename T >
constexpr friend EnumFlag operator& ( EnumFlag< T >  left,
EnumFlag< T >  right 
)
friend

Definition at line 80 of file EnumFlag.h.

81 {
82 return left &= right;
83 }

◆ operator|

template<typename T >
constexpr friend EnumFlag operator| ( EnumFlag< T >  left,
EnumFlag< T >  right 
)
friend

Definition at line 91 of file EnumFlag.h.

92 {
93 return left |= right;
94 }

Member Data Documentation

◆ _value

template<typename T >
T EnumFlag< T >::_value
private

Definition at line 128 of file EnumFlag.h.


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