AzerothCore 3.3.5a
OpenSource WoW Emulator
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 >

Constructor & Destructor Documentation

◆ EnumFlag()

template<typename T >
constexpr EnumFlag< T >::EnumFlag ( value)
inlineconstexpr
58 : _value(value)
59 {
60 }
T _value
Definition: EnumFlag.h:116

Member Function Documentation

◆ AsUnderlyingType()

template<typename T >
constexpr std::underlying_type_t< T > EnumFlag< T >::AsUnderlyingType ( ) const
inlineconstexpr
111 {
112 return static_cast<std::underlying_type_t<T>>(_value);
113 }

References EnumFlag< T >::_value.

◆ HasAllFlags()

template<typename T >
constexpr bool EnumFlag< T >::HasAllFlags ( flags) const
inlineconstexpr
101 {
102 return (_value & flags) == flags;
103 }

References EnumFlag< T >::_value.

◆ HasFlag()

template<typename T >
constexpr bool EnumFlag< T >::HasFlag ( flag) const
inlineconstexpr
95 {
96 using i = std::underlying_type_t<T>;
97 return static_cast<i>(_value & flag) != static_cast<i>(0);
98 }

References EnumFlag< T >::_value.

Referenced by SmartScript::ProcessAction().

◆ operator T()

template<typename T >
constexpr EnumFlag< T >::operator T ( ) const
inlineconstexpr
106 {
107 return _value;
108 }

References EnumFlag< T >::_value.

◆ operator&=()

template<typename T >
constexpr EnumFlag & EnumFlag< T >::operator&= ( EnumFlag< T >  right)
inlineconstexpr
63 {
64 _value &= right._value;
65 return *this;
66 }

References EnumFlag< T >::_value.

◆ operator|=()

template<typename T >
constexpr EnumFlag & EnumFlag< T >::operator|= ( EnumFlag< T >  right)
inlineconstexpr
74 {
75 _value |= right._value;
76 return *this;
77 }

References EnumFlag< T >::_value.

◆ operator~()

template<typename T >
constexpr EnumFlag EnumFlag< T >::operator~ ( ) const
inlineconstexpr
85 {
86 return static_cast<T>(~static_cast<std::underlying_type_t<T>>(_value));
87 }

References EnumFlag< T >::_value.

◆ RemoveFlag()

template<typename T >
constexpr void EnumFlag< T >::RemoveFlag ( EnumFlag< T >  flag)
inlineconstexpr
90 {
91 _value &= ~flag._value;
92 }

References EnumFlag< T >::_value.

Friends And Related Function Documentation

◆ operator&

template<typename T >
constexpr friend EnumFlag operator& ( EnumFlag< T >  left,
EnumFlag< T >  right 
)
friend
69 {
70 return left &= right;
71 }

◆ operator|

template<typename T >
constexpr friend EnumFlag operator| ( EnumFlag< T >  left,
EnumFlag< T >  right 
)
friend
80 {
81 return left |= right;
82 }

Member Data Documentation

◆ _value