18#ifndef TRINITY_SMARTENUM_H
19#define TRINITY_SMARTENUM_H
37 template <
typename Enum>
50 template <
typename Enum>
52 template <
typename Enum>
54 template <
typename Enum>
56 template <
typename Enum>
59 template<
typename Enum>
72 template<
typename Enum>
73 static bool IsValid(std::underlying_type_t<Enum> value) {
return IsValid(
static_cast<Enum
>(value)); }
75 template <
typename Enum>
110 template <
typename Enum>
113 template <
typename Enum>
116 template <
typename Enum>
119 template <
typename Enum>
122 template <
typename Enum>
125 template <
typename Enum>
Iterator & operator+=(difference_type d)
bool operator==(const Iterator &other) const =default
value_type operator*() const
std::ptrdiff_t difference_type
std::random_access_iterator_tag iterator_category
Iterator & operator-=(difference_type d)
Iterator operator-(difference_type d) const
std::strong_ordering operator<=>(const Iterator &other) const =default
Iterator operator+(difference_type d) const
value_type operator[](difference_type d) const
difference_type operator-(Iterator const &other) const
static Trinity::IteratorPair< Iterator< Enum > > Iterate()
static uint32 ToIndex(Enum value)
static EnumText ToString(Enum value)
static bool IsValid(Enum value)
static Enum FromIndex(size_t index)
static char const * ToConstant(Enum value)
static char const * ToDescription(Enum value)
static bool IsValid(std::underlying_type_t< Enum > value)
static Iterator< Enum > Begin()
static char const * ToTitle(Enum value)
static Iterator< Enum > End()
Utility class to enable range for loop syntax for multimap.equal_range uses.
char const *const Constant
EnumText(char const *c, char const *t, char const *d)
char const *const Description
static size_t ToIndex(Enum index)
static EnumText ToString(Enum value)
static Enum FromIndex(size_t index)