Loading...
Searching...
No Matches
enum.h File Reference
`#include <cstddef>`
`#include <cstring>`
`#include <iosfwd>`
`#include <stdexcept>`

Go to the source code of this file.

## Classes

struct | better_enums::optional< T >
struct | better_enums::_eat_assign< EnumType >
| Get intrinsic value of an (Enum::value) by taking advantage of. More...
struct | better_enums::_iterable< Element >
struct | better_enums::_initialize_at_program_start< Enum >
struct | better_enums::map_compare< T >
struct | better_enums::map_compare< const char * >
struct | better_enums::map_compare< const wchar_t * >
struct | better_enums::map< Enum, T, Compare >

## Namespaces

namespace | better_enums

## Macros

#define | BETTER_ENUMS_ENUM_H
#define | BETTER_ENUMS_IGNORE_OLD_CAST_HEADER
#define | BETTER_ENUMS_IGNORE_OLD_CAST_BEGIN
#define | BETTER_ENUMS_IGNORE_OLD_CAST_END
#define | BETTER_ENUMS_IGNORE_ATTRIBUTES_HEADER
#define | BETTER_ENUMS_IGNORE_ATTRIBUTES_BEGIN
#define | BETTER_ENUMS_IGNORE_ATTRIBUTES_END
#define | BETTER_ENUMS_CONSTEXPR_
#define | BETTER_ENUMS_NULLPTR NULL
#define | BETTER_ENUMS_IF_EXCEPTIONS(x) x
#define | BETTER_ENUMS_UNUSED
#define | BETTER_ENUMS_PP_MAP(macro, data, ...)
#define | BETTER_ENUMS_PP_MAP_VAR_COUNT(count) BETTER_ENUMS_M ## count
#define | BETTER_ENUMS_APPLY(macro, ...) BETTER_ENUMS_ID(macro(__VA_ARGS__))
#define | BETTER_ENUMS_ID(x) x
#define | BETTER_ENUMS_M1(m, d, x) m(d,0,x)
#define | BETTER_ENUMS_M2(m, d, x, ...)
#define | BETTER_ENUMS_M3(m, d, x, ...)
#define | BETTER_ENUMS_M4(m, d, x, ...)
#define | BETTER_ENUMS_M5(m, d, x, ...)
#define | BETTER_ENUMS_M6(m, d, x, ...)
#define | BETTER_ENUMS_M7(m, d, x, ...)
#define | BETTER_ENUMS_M8(m, d, x, ...)
#define | BETTER_ENUMS_M9(m, d, x, ...)
#define | BETTER_ENUMS_M10(m, d, x, ...)
#define | BETTER_ENUMS_M11(m, d, x, ...)
#define | BETTER_ENUMS_M12(m, d, x, ...)
#define | BETTER_ENUMS_M13(m, d, x, ...)
#define | BETTER_ENUMS_M14(m, d, x, ...)
#define | BETTER_ENUMS_M15(m, d, x, ...)
#define | BETTER_ENUMS_M16(m, d, x, ...)
#define | BETTER_ENUMS_M17(m, d, x, ...)
#define | BETTER_ENUMS_M18(m, d, x, ...)
#define | BETTER_ENUMS_M19(m, d, x, ...)
#define | BETTER_ENUMS_M20(m, d, x, ...)
#define | BETTER_ENUMS_M21(m, d, x, ...)
#define | BETTER_ENUMS_M22(m, d, x, ...)
#define | BETTER_ENUMS_M23(m, d, x, ...)
#define | BETTER_ENUMS_M24(m, d, x, ...)
#define | BETTER_ENUMS_M25(m, d, x, ...)
#define | BETTER_ENUMS_M26(m, d, x, ...)
#define | BETTER_ENUMS_M27(m, d, x, ...)
#define | BETTER_ENUMS_M28(m, d, x, ...)
#define | BETTER_ENUMS_M29(m, d, x, ...)
#define | BETTER_ENUMS_M30(m, d, x, ...)
#define | BETTER_ENUMS_M31(m, d, x, ...)
#define | BETTER_ENUMS_M32(m, d, x, ...)
#define | BETTER_ENUMS_M33(m, d, x, ...)
#define | BETTER_ENUMS_M34(m, d, x, ...)
#define | BETTER_ENUMS_M35(m, d, x, ...)
#define | BETTER_ENUMS_M36(m, d, x, ...)
#define | BETTER_ENUMS_M37(m, d, x, ...)
#define | BETTER_ENUMS_M38(m, d, x, ...)
#define | BETTER_ENUMS_M39(m, d, x, ...)
#define | BETTER_ENUMS_M40(m, d, x, ...)
#define | BETTER_ENUMS_M41(m, d, x, ...)
#define | BETTER_ENUMS_M42(m, d, x, ...)
#define | BETTER_ENUMS_M43(m, d, x, ...)
#define | BETTER_ENUMS_M44(m, d, x, ...)
#define | BETTER_ENUMS_M45(m, d, x, ...)
#define | BETTER_ENUMS_M46(m, d, x, ...)
#define | BETTER_ENUMS_M47(m, d, x, ...)
#define | BETTER_ENUMS_M48(m, d, x, ...)
#define | BETTER_ENUMS_M49(m, d, x, ...)
#define | BETTER_ENUMS_M50(m, d, x, ...)
#define | BETTER_ENUMS_M51(m, d, x, ...)
#define | BETTER_ENUMS_M52(m, d, x, ...)
#define | BETTER_ENUMS_M53(m, d, x, ...)
#define | BETTER_ENUMS_M54(m, d, x, ...)
#define | BETTER_ENUMS_M55(m, d, x, ...)
#define | BETTER_ENUMS_M56(m, d, x, ...)
#define | BETTER_ENUMS_M57(m, d, x, ...)
#define | BETTER_ENUMS_M58(m, d, x, ...)
#define | BETTER_ENUMS_M59(m, d, x, ...)
#define | BETTER_ENUMS_M60(m, d, x, ...)
#define | BETTER_ENUMS_M61(m, d, x, ...)
#define | BETTER_ENUMS_M62(m, d, x, ...)
#define | BETTER_ENUMS_M63(m, d, x, ...)
#define | BETTER_ENUMS_M64(m, d, x, ...)
#define | BETTER_ENUMS_PP_COUNT_IMPL(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, count, ...) count
#define | BETTER_ENUMS_PP_COUNT(...)
#define | BETTER_ENUMS_ITERATE(X, f, l)
#define | BETTER_ENUMS_OR_THROW return maybe ? *maybe : throw std::runtime_error(message);
#define | BETTER_ENUMS_EAT_ASSIGN_SINGLE(EnumType, index, expression) (EnumType)((::better_enums::_eat_assign<EnumType>)EnumType::expression),
#define | BETTER_ENUMS_EAT_ASSIGN(EnumType, ...)
#define | BETTER_ENUMS_STRINGIZE_SINGLE(ignored, index, expression) #expression,
#define | BETTER_ENUMS_STRINGIZE(...)
#define | BETTER_ENUMS_RESERVE_STORAGE_SINGLE(ignored, index, expression) #expression ","
#define | BETTER_ENUMS_RESERVE_STORAGE(...)
#define | BETTER_ENUMS_NS(EnumType) better_enums_data_ ## EnumType
#define | BETTER_ENUMS_COPY_CONSTRUCTOR(Enum)
#define | BETTER_ENUMS_CLASS_ATTRIBUTE
#define | BETTER_ENUMS_TYPE(SetUnderlyingType, SwitchType, GenerateSwitchType, GenerateStrings, ToStringConstexpr, DeclareInitialize, DefineInitialize, CallInitialize, Enum, Underlying, ...)
#define | BETTER_ENUMS_CXX98_UNDERLYING_TYPE(Underlying)
#define | BETTER_ENUMS_CXX11_UNDERLYING_TYPE(Underlying) : Underlying
#define | BETTER_ENUMS_LEGACY_UNDERLYING_TYPE(Underlying) BETTER_ENUMS_CXX98_UNDERLYING_TYPE(Underlying)
#define | BETTER_ENUMS_REGULAR_ENUM_SWITCH_TYPE(Type) _enumerated
#define | BETTER_ENUMS_ENUM_CLASS_SWITCH_TYPE(Type) BETTER_ENUMS_NS(Type)::_enumClassForSwitchStatements
#define | BETTER_ENUMS_REGULAR_ENUM_SWITCH_TYPE_GENERATE(Underlying, ...)
#define | BETTER_ENUMS_ENUM_CLASS_SWITCH_TYPE_GENERATE(Underlying, ...) enum class _enumClassForSwitchStatements : Underlying { __VA_ARGS__ };
#define | BETTER_ENUMS_CXX98_TRIM_STRINGS_ARRAYS(Enum, ...)
#define | BETTER_ENUMS_CXX11_PARTIAL_CONSTEXPR_TRIM_STRINGS_ARRAYS(Enum, ...)
#define | BETTER_ENUMS_CXX11_FULL_CONSTEXPR_TRIM_STRINGS_ARRAYS(Enum, ...)
#define | BETTER_ENUMS_NO_CONSTEXPR_TO_STRING_KEYWORD
#define | BETTER_ENUMS_CONSTEXPR_TO_STRING_KEYWORD constexpr
#define | BETTER_ENUMS_DO_DECLARE_INITIALIZE static int initialize();
#define | BETTER_ENUMS_DECLARE_EMPTY_INITIALIZE static int initialize() { return 0; }
#define | BETTER_ENUMS_DO_DEFINE_INITIALIZE(Enum)
#define | BETTER_ENUMS_DO_NOT_DEFINE_INITIALIZE(Enum)
#define | BETTER_ENUMS_DO_CALL_INITIALIZE(value) ::better_enums::continue_with(initialize(), value)
#define | BETTER_ENUMS_DO_NOT_CALL_INITIALIZE(value) value
#define | BETTER_ENUMS_DEFAULT_SWITCH_TYPE BETTER_ENUMS_REGULAR_ENUM_SWITCH_TYPE
#define | BETTER_ENUMS_DEFAULT_SWITCH_TYPE_GENERATE BETTER_ENUMS_REGULAR_ENUM_SWITCH_TYPE_GENERATE
#define | BETTER_ENUMS_DEFAULT_CONSTRUCTOR(Enum)
#define | BETTER_ENUM(Enum, Underlying, ...)
#define | BETTER_ENUMS_DECLARE_STD_HASH(type)

## Functions

template<typename T >
BETTER_ENUMS_CONSTEXPR_ T | better_enums::_default ()
template<>
BETTER_ENUMS_CONSTEXPR_ const char * | better_enums::_default< const char * > ()
template<>
BETTER_ENUMS_CONSTEXPR_ std::size_t | better_enums::_default< std::size_t > ()
template<typename CastTo , typename Element >
static BETTER_ENUMS_CONSTEXPR_ optional< CastTo > | better_enums::_map_index (const Element *array, optional< std::size_t > index)
| better_enums::BETTER_ENUMS_IF_EXCEPTIONS (template< typename T > BETTER_ENUMS_CONSTEXPR_ static T _or_throw(optional< T > maybe, const char *message) { BETTER_ENUMS_OR_THROW }) template< typename T > BETTER_ENUMS_CONSTEXPR_ static T *_or_null(optional< T * > maybe)
template<typename T >
static BETTER_ENUMS_CONSTEXPR_ T | better_enums::_or_zero (optional< T > maybe)
template<typename T , typename U >
BETTER_ENUMS_CONSTEXPR_ U | better_enums::continue_with (T, U value)
BETTER_ENUMS_CONSTEXPR_ bool | better_enums::_ends_name (char c, std::size_t index=0)
BETTER_ENUMS_CONSTEXPR_ bool | better_enums::_has_initializer (const char *s, std::size_t index=0)
BETTER_ENUMS_CONSTEXPR_ std::size_t | better_enums::_constant_length (const char *s, std::size_t index=0)
BETTER_ENUMS_CONSTEXPR_ char | better_enums::_select (const char *from, std::size_t from_length, std::size_t index)
BETTER_ENUMS_CONSTEXPR_ char | better_enums::_to_lower_ascii (char c)
BETTER_ENUMS_CONSTEXPR_ bool | better_enums::_names_match (const char *stringizedName, const char *referenceName, std::size_t index=0)
BETTER_ENUMS_CONSTEXPR_ bool | better_enums::_names_match_nocase (const char *stringizedName, const char *referenceName, std::size_t index=0)
void | better_enums::_trim_names (const char *const *raw_names, const char **trimmed_names, char *storage, std::size_t count)
template<typename Enum , typename T >
BETTER_ENUMS_CONSTEXPR_ map< Enum, T > | better_enums::make_map (T(*f)(Enum))

## Variables

static BETTER_ENUMS_CONSTEXPR_ const char * | better_enums::_name_enders = "= \t\n"

## Macro Definition Documentation

## BETTER_ENUM

#define BETTER_ENUM | ( |  | Enum,
|  |  | Underlying,
|  |  | ...
| ) |  |

Value:
BETTER_ENUMS_ID(BETTER_ENUMS_TYPE( \
BETTER_ENUMS_LEGACY_UNDERLYING_TYPE, \
BETTER_ENUMS_DEFAULT_SWITCH_TYPE, \
BETTER_ENUMS_DEFAULT_SWITCH_TYPE_GENERATE, \
BETTER_ENUMS_CXX98_TRIM_STRINGS_ARRAYS, \
BETTER_ENUMS_NO_CONSTEXPR_TO_STRING_KEYWORD, \
BETTER_ENUMS_DO_DECLARE_INITIALIZE, \
BETTER_ENUMS_DO_DEFINE_INITIALIZE, \
BETTER_ENUMS_DO_CALL_INITIALIZE, \
Enum, Underlying, __VA_ARGS__))
BETTER_ENUMS_CXX98_TRIM_STRINGS_ARRAYS
#define BETTER_ENUMS_CXX98_TRIM_STRINGS_ARRAYS(Enum,...)
Definition enum.h:1020
BETTER_ENUMS_LEGACY_UNDERLYING_TYPE
#define BETTER_ENUMS_LEGACY_UNDERLYING_TYPE(Underlying)
Definition enum.h:1000
BETTER_ENUMS_ID
#define BETTER_ENUMS_ID(x)
Definition enum.h:156
BETTER_ENUMS_NO_CONSTEXPR_TO_STRING_KEYWORD
#define BETTER_ENUMS_NO_CONSTEXPR_TO_STRING_KEYWORD
Definition enum.h:1094
BETTER_ENUMS_DO_DECLARE_INITIALIZE
#define BETTER_ENUMS_DO_DECLARE_INITIALIZE
Definition enum.h:1101
BETTER_ENUMS_TYPE
#define BETTER_ENUMS_TYPE(SetUnderlyingType, SwitchType, GenerateSwitchType, GenerateStrings, ToStringConstexpr, DeclareInitialize, DefineInitialize, CallInitialize, Enum, Underlying,...)
Definition enum.h:634
BETTER_ENUMS_DEFAULT_SWITCH_TYPE
#define BETTER_ENUMS_DEFAULT_SWITCH_TYPE
Definition enum.h:1146
BETTER_ENUMS_DO_DEFINE_INITIALIZE
#define BETTER_ENUMS_DO_DEFINE_INITIALIZE(Enum)
Definition enum.h:1109
BETTER_ENUMS_DO_CALL_INITIALIZE
#define BETTER_ENUMS_DO_CALL_INITIALIZE(value)
Definition enum.h:1129
BETTER_ENUMS_DEFAULT_SWITCH_TYPE_GENERATE
#define BETTER_ENUMS_DEFAULT_SWITCH_TYPE_GENERATE
Definition enum.h:1148

Definition at line 1218 of file enum.h.

## BETTER_ENUMS_APPLY

#define BETTER_ENUMS_APPLY | ( |  | macro,
|  |  | ...
| ) |  | BETTER_ENUMS_ID(macro(__VA_ARGS__))

Definition at line 154 of file enum.h.

## BETTER_ENUMS_CLASS_ATTRIBUTE

#define BETTER_ENUMS_CLASS_ATTRIBUTE

Definition at line 631 of file enum.h.

## BETTER_ENUMS_CONSTEXPR_

#define BETTER_ENUMS_CONSTEXPR_

Definition at line 121 of file enum.h.

## BETTER_ENUMS_CONSTEXPR_TO_STRING_KEYWORD

#define BETTER_ENUMS_CONSTEXPR_TO_STRING_KEYWORD constexpr

Definition at line 1097 of file enum.h.

## BETTER_ENUMS_COPY_CONSTRUCTOR

#define BETTER_ENUMS_COPY_CONSTRUCTOR | ( |  | Enum | ) |

Definition at line 626 of file enum.h.

## BETTER_ENUMS_CXX11_FULL_CONSTEXPR_TRIM_STRINGS_ARRAYS

#define BETTER_ENUMS_CXX11_FULL_CONSTEXPR_TRIM_STRINGS_ARRAYS | ( |  | Enum,
|  |  | ...
| ) |  |

Value:
BETTER_ENUMS_ID(BETTER_ENUMS_TRIM_STRINGS(__VA_ARGS__)) \
\
constexpr const char * const _the_name_array[] = \
{ BETTER_ENUMS_ID(BETTER_ENUMS_REFER_TO_STRINGS(__VA_ARGS__)) }; \
\
constexpr const char * const * _name_array() \
{ \
return _the_name_array; \
} \
\
constexpr const char * const * _raw_names() \
{ \
return _the_name_array; \
}

Definition at line 1077 of file enum.h.

## BETTER_ENUMS_CXX11_PARTIAL_CONSTEXPR_TRIM_STRINGS_ARRAYS

#define BETTER_ENUMS_CXX11_PARTIAL_CONSTEXPR_TRIM_STRINGS_ARRAYS | ( |  | Enum,
|  |  | ...
| ) |  |

Value:
constexpr const char *_the_raw_names[] = \
{ BETTER_ENUMS_ID(BETTER_ENUMS_STRINGIZE(__VA_ARGS__)) }; \
\
constexpr const char * const * _raw_names() \
{ \
return _the_raw_names; \
} \
\
inline char* _name_storage() \
{ \
static char storage[] = \
BETTER_ENUMS_ID(BETTER_ENUMS_RESERVE_STORAGE(__VA_ARGS__)); \
return storage; \
} \
\
inline const char** _name_array() \
{ \
static const char *value[Enum::_size_constant]; \
return value; \
} \
\
inline bool& _initialized() \
{ \
static bool value = false; \
return value; \
}
BETTER_ENUMS_STRINGIZE
#define BETTER_ENUMS_STRINGIZE(...)
Definition enum.h:599
BETTER_ENUMS_RESERVE_STORAGE
#define BETTER_ENUMS_RESERVE_STORAGE(...)
Definition enum.h:607

Definition at line 1048 of file enum.h.

## BETTER_ENUMS_CXX11_UNDERLYING_TYPE

#define BETTER_ENUMS_CXX11_UNDERLYING_TYPE | ( |  | Underlying | ) | : Underlying

Definition at line 991 of file enum.h.

## BETTER_ENUMS_CXX98_TRIM_STRINGS_ARRAYS

#define BETTER_ENUMS_CXX98_TRIM_STRINGS_ARRAYS | ( |  | Enum,
|  |  | ...
| ) |  |

Value:
inline const char** _raw_names() \
{ \
static const char *value[] = \
{ BETTER_ENUMS_ID(BETTER_ENUMS_STRINGIZE(__VA_ARGS__)) }; \
return value; \
} \
\
inline char* _name_storage() \
{ \
static char storage[] = \
BETTER_ENUMS_ID(BETTER_ENUMS_RESERVE_STORAGE(__VA_ARGS__)); \
return storage; \
} \
\
inline const char** _name_array() \
{ \
static const char *value[Enum::_size_constant]; \
return value; \
} \
\
inline bool& _initialized() \
{ \
static bool value = false; \
return value; \
}

Definition at line 1020 of file enum.h.

## BETTER_ENUMS_CXX98_UNDERLYING_TYPE

#define BETTER_ENUMS_CXX98_UNDERLYING_TYPE | ( |  | Underlying | ) |

Definition at line 988 of file enum.h.

## BETTER_ENUMS_DECLARE_EMPTY_INITIALIZE

#define BETTER_ENUMS_DECLARE_EMPTY_INITIALIZE static int initialize() { return 0; }

Definition at line 1105 of file enum.h.

## BETTER_ENUMS_DECLARE_STD_HASH

#define BETTER_ENUMS_DECLARE_STD_HASH | ( |  | type | ) |

Value:
namespace std { \
template <> struct hash<type> \
{ \
size_t operator()(const type &x) const \
{ \
return std::hash<size_t>()(x._to_integral()); \
} \
}; \
}

Definition at line 1315 of file enum.h.

## BETTER_ENUMS_DEFAULT_CONSTRUCTOR

#define BETTER_ENUMS_DEFAULT_CONSTRUCTOR | ( |  | Enum | ) |

Value:
private: \
Enum() : _value(0) { }

Definition at line 1155 of file enum.h.

## BETTER_ENUMS_DEFAULT_SWITCH_TYPE

#define BETTER_ENUMS_DEFAULT_SWITCH_TYPE BETTER_ENUMS_REGULAR_ENUM_SWITCH_TYPE

Definition at line 1146 of file enum.h.

## BETTER_ENUMS_DEFAULT_SWITCH_TYPE_GENERATE

#define BETTER_ENUMS_DEFAULT_SWITCH_TYPE_GENERATE BETTER_ENUMS_REGULAR_ENUM_SWITCH_TYPE_GENERATE

Definition at line 1148 of file enum.h.

## BETTER_ENUMS_DO_CALL_INITIALIZE

#define BETTER_ENUMS_DO_CALL_INITIALIZE | ( |  | value | ) | ::better_enums::continue_with(initialize(), value)

Definition at line 1129 of file enum.h.

## BETTER_ENUMS_DO_DECLARE_INITIALIZE

#define BETTER_ENUMS_DO_DECLARE_INITIALIZE static int initialize();

Definition at line 1101 of file enum.h.

## BETTER_ENUMS_DO_DEFINE_INITIALIZE

#define BETTER_ENUMS_DO_DEFINE_INITIALIZE | ( |  | Enum | ) |

Value:
inline int Enum::initialize() \
{ \
if (BETTER_ENUMS_NS(Enum)::_initialized()) \
return 0; \
\
::better_enums::_trim_names(BETTER_ENUMS_NS(Enum)::_raw_names(), \
BETTER_ENUMS_NS(Enum)::_name_array(), \
BETTER_ENUMS_NS(Enum)::_name_storage(), \
_size()); \
\
BETTER_ENUMS_NS(Enum)::_initialized() = true; \
\
return 0; \
}
BETTER_ENUMS_NS
#define BETTER_ENUMS_NS(EnumType)
Definition enum.h:616

Definition at line 1109 of file enum.h.

## BETTER_ENUMS_DO_NOT_CALL_INITIALIZE

#define BETTER_ENUMS_DO_NOT_CALL_INITIALIZE | ( |  | value | ) | value

Definition at line 1133 of file enum.h.

## BETTER_ENUMS_DO_NOT_DEFINE_INITIALIZE

#define BETTER_ENUMS_DO_NOT_DEFINE_INITIALIZE | ( |  | Enum | ) |

Definition at line 1126 of file enum.h.

## BETTER_ENUMS_EAT_ASSIGN

#define BETTER_ENUMS_EAT_ASSIGN | ( |  | EnumType,
|  |  | ...
| ) |  |

Value:
BETTER_ENUMS_ID( \
BETTER_ENUMS_PP_MAP( \
BETTER_ENUMS_EAT_ASSIGN_SINGLE, EnumType, __VA_ARGS__))
BETTER_ENUMS_PP_MAP
#define BETTER_ENUMS_PP_MAP(macro, data,...)
Definition enum.h:145
BETTER_ENUMS_EAT_ASSIGN_SINGLE
#define BETTER_ENUMS_EAT_ASSIGN_SINGLE(EnumType, index, expression)
Definition enum.h:544

Definition at line 547 of file enum.h.

## BETTER_ENUMS_EAT_ASSIGN_SINGLE

#define BETTER_ENUMS_EAT_ASSIGN_SINGLE | ( |  | EnumType,
|  |  | index,
|  |  | expression
| ) |  | (EnumType)((::better_enums::_eat_assign<EnumType>)EnumType::expression),

Definition at line 544 of file enum.h.

## BETTER_ENUMS_ENUM_CLASS_SWITCH_TYPE

#define BETTER_ENUMS_ENUM_CLASS_SWITCH_TYPE | ( |  | Type | ) | BETTER_ENUMS_NS(Type)::_enumClassForSwitchStatements

Definition at line 1009 of file enum.h.

## BETTER_ENUMS_ENUM_CLASS_SWITCH_TYPE_GENERATE

#define BETTER_ENUMS_ENUM_CLASS_SWITCH_TYPE_GENERATE | ( |  | Underlying,
|  |  | ...
| ) |  | enum class _enumClassForSwitchStatements : Underlying { __VA_ARGS__ };

Definition at line 1016 of file enum.h.

## BETTER_ENUMS_ENUM_H

#define BETTER_ENUMS_ENUM_H

Definition at line 7 of file enum.h.

## BETTER_ENUMS_ID

#define BETTER_ENUMS_ID | ( |  | x | ) | x

Definition at line 156 of file enum.h.

## BETTER_ENUMS_IF_EXCEPTIONS

#define BETTER_ENUMS_IF_EXCEPTIONS | ( |  | x | ) | x

Definition at line 126 of file enum.h.

## BETTER_ENUMS_IGNORE_ATTRIBUTES_BEGIN

#define BETTER_ENUMS_IGNORE_ATTRIBUTES_BEGIN

Definition at line 56 of file enum.h.

## BETTER_ENUMS_IGNORE_ATTRIBUTES_END

#define BETTER_ENUMS_IGNORE_ATTRIBUTES_END

Definition at line 57 of file enum.h.

## BETTER_ENUMS_IGNORE_ATTRIBUTES_HEADER

#define BETTER_ENUMS_IGNORE_ATTRIBUTES_HEADER

Definition at line 55 of file enum.h.

## BETTER_ENUMS_IGNORE_OLD_CAST_BEGIN

#define BETTER_ENUMS_IGNORE_OLD_CAST_BEGIN

Definition at line 53 of file enum.h.

## BETTER_ENUMS_IGNORE_OLD_CAST_END

#define BETTER_ENUMS_IGNORE_OLD_CAST_END

Definition at line 54 of file enum.h.

## BETTER_ENUMS_IGNORE_OLD_CAST_HEADER

#define BETTER_ENUMS_IGNORE_OLD_CAST_HEADER

Definition at line 52 of file enum.h.

## BETTER_ENUMS_ITERATE

#define BETTER_ENUMS_ITERATE | ( |  | X,
|  |  | f,
|  |  | l
| ) |  |

Value:
X(f, l, 0) X(f, l, 1) X(f, l, 2) \
X(f, l, 3) X(f, l, 4) X(f, l, 5) X(f, l, 6) X(f, l, 7) X(f, l, 8) \
X(f, l, 9) X(f, l, 10) X(f, l, 11) X(f, l, 12) X(f, l, 13) X(f, l, 14) \
X(f, l, 15) X(f, l, 16) X(f, l, 17) X(f, l, 18) X(f, l, 19) X(f, l, 20) \
X(f, l, 21) X(f, l, 22) X(f, l, 23)

Definition at line 299 of file enum.h.

## BETTER_ENUMS_LEGACY_UNDERLYING_TYPE

#define BETTER_ENUMS_LEGACY_UNDERLYING_TYPE | ( |  | Underlying | ) | BETTER_ENUMS_CXX98_UNDERLYING_TYPE(Underlying)

Definition at line 1000 of file enum.h.

## BETTER_ENUMS_M1

#define BETTER_ENUMS_M1 | ( |  | m,
|  |  | d,
|  |  | x
| ) |  | m(d,0,x)

Definition at line 158 of file enum.h.

## BETTER_ENUMS_M10

#define BETTER_ENUMS_M10 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,9,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M9(m,d,__VA_ARGS__))
BETTER_ENUMS_M9
#define BETTER_ENUMS_M9(m, d, x,...)
Definition enum.h:173

Definition at line 175 of file enum.h.

## BETTER_ENUMS_M11

#define BETTER_ENUMS_M11 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,10,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M10(m,d,__VA_ARGS__))
BETTER_ENUMS_M10
#define BETTER_ENUMS_M10(m, d, x,...)
Definition enum.h:175

Definition at line 177 of file enum.h.

## BETTER_ENUMS_M12

#define BETTER_ENUMS_M12 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,11,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M11(m,d,__VA_ARGS__))
BETTER_ENUMS_M11
#define BETTER_ENUMS_M11(m, d, x,...)
Definition enum.h:177

Definition at line 179 of file enum.h.

## BETTER_ENUMS_M13

#define BETTER_ENUMS_M13 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,12,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M12(m,d,__VA_ARGS__))
BETTER_ENUMS_M12
#define BETTER_ENUMS_M12(m, d, x,...)
Definition enum.h:179

Definition at line 181 of file enum.h.

## BETTER_ENUMS_M14

#define BETTER_ENUMS_M14 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,13,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M13(m,d,__VA_ARGS__))
BETTER_ENUMS_M13
#define BETTER_ENUMS_M13(m, d, x,...)
Definition enum.h:181

Definition at line 183 of file enum.h.

## BETTER_ENUMS_M15

#define BETTER_ENUMS_M15 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,14,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M14(m,d,__VA_ARGS__))
BETTER_ENUMS_M14
#define BETTER_ENUMS_M14(m, d, x,...)
Definition enum.h:183

Definition at line 185 of file enum.h.

## BETTER_ENUMS_M16

#define BETTER_ENUMS_M16 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,15,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M15(m,d,__VA_ARGS__))
BETTER_ENUMS_M15
#define BETTER_ENUMS_M15(m, d, x,...)
Definition enum.h:185

Definition at line 187 of file enum.h.

## BETTER_ENUMS_M17

#define BETTER_ENUMS_M17 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,16,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M16(m,d,__VA_ARGS__))
BETTER_ENUMS_M16
#define BETTER_ENUMS_M16(m, d, x,...)
Definition enum.h:187

Definition at line 189 of file enum.h.

## BETTER_ENUMS_M18

#define BETTER_ENUMS_M18 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,17,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M17(m,d,__VA_ARGS__))
BETTER_ENUMS_M17
#define BETTER_ENUMS_M17(m, d, x,...)
Definition enum.h:189

Definition at line 191 of file enum.h.

## BETTER_ENUMS_M19

#define BETTER_ENUMS_M19 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,18,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M18(m,d,__VA_ARGS__))
BETTER_ENUMS_M18
#define BETTER_ENUMS_M18(m, d, x,...)
Definition enum.h:191

Definition at line 193 of file enum.h.

## BETTER_ENUMS_M2

#define BETTER_ENUMS_M2 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,1,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M1(m,d,__VA_ARGS__))
BETTER_ENUMS_M1
#define BETTER_ENUMS_M1(m, d, x)
Definition enum.h:158

Definition at line 159 of file enum.h.

## BETTER_ENUMS_M20

#define BETTER_ENUMS_M20 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,19,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M19(m,d,__VA_ARGS__))
BETTER_ENUMS_M19
#define BETTER_ENUMS_M19(m, d, x,...)
Definition enum.h:193

Definition at line 195 of file enum.h.

## BETTER_ENUMS_M21

#define BETTER_ENUMS_M21 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,20,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M20(m,d,__VA_ARGS__))
BETTER_ENUMS_M20
#define BETTER_ENUMS_M20(m, d, x,...)
Definition enum.h:195

Definition at line 197 of file enum.h.

## BETTER_ENUMS_M22

#define BETTER_ENUMS_M22 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,21,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M21(m,d,__VA_ARGS__))
BETTER_ENUMS_M21
#define BETTER_ENUMS_M21(m, d, x,...)
Definition enum.h:197

Definition at line 199 of file enum.h.

## BETTER_ENUMS_M23

#define BETTER_ENUMS_M23 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,22,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M22(m,d,__VA_ARGS__))
BETTER_ENUMS_M22
#define BETTER_ENUMS_M22(m, d, x,...)
Definition enum.h:199

Definition at line 201 of file enum.h.

## BETTER_ENUMS_M24

#define BETTER_ENUMS_M24 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,23,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M23(m,d,__VA_ARGS__))
BETTER_ENUMS_M23
#define BETTER_ENUMS_M23(m, d, x,...)
Definition enum.h:201

Definition at line 203 of file enum.h.

## BETTER_ENUMS_M25

#define BETTER_ENUMS_M25 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,24,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M24(m,d,__VA_ARGS__))
BETTER_ENUMS_M24
#define BETTER_ENUMS_M24(m, d, x,...)
Definition enum.h:203

Definition at line 205 of file enum.h.

## BETTER_ENUMS_M26

#define BETTER_ENUMS_M26 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,25,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M25(m,d,__VA_ARGS__))
BETTER_ENUMS_M25
#define BETTER_ENUMS_M25(m, d, x,...)
Definition enum.h:205

Definition at line 207 of file enum.h.

## BETTER_ENUMS_M27

#define BETTER_ENUMS_M27 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,26,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M26(m,d,__VA_ARGS__))
BETTER_ENUMS_M26
#define BETTER_ENUMS_M26(m, d, x,...)
Definition enum.h:207

Definition at line 209 of file enum.h.

## BETTER_ENUMS_M28

#define BETTER_ENUMS_M28 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,27,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M27(m,d,__VA_ARGS__))
BETTER_ENUMS_M27
#define BETTER_ENUMS_M27(m, d, x,...)
Definition enum.h:209

Definition at line 211 of file enum.h.

## BETTER_ENUMS_M29

#define BETTER_ENUMS_M29 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,28,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M28(m,d,__VA_ARGS__))
BETTER_ENUMS_M28
#define BETTER_ENUMS_M28(m, d, x,...)
Definition enum.h:211

Definition at line 213 of file enum.h.

## BETTER_ENUMS_M3

#define BETTER_ENUMS_M3 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,2,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M2(m,d,__VA_ARGS__))
BETTER_ENUMS_M2
#define BETTER_ENUMS_M2(m, d, x,...)
Definition enum.h:159

Definition at line 161 of file enum.h.

## BETTER_ENUMS_M30

#define BETTER_ENUMS_M30 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,29,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M29(m,d,__VA_ARGS__))
BETTER_ENUMS_M29
#define BETTER_ENUMS_M29(m, d, x,...)
Definition enum.h:213

Definition at line 215 of file enum.h.

## BETTER_ENUMS_M31

#define BETTER_ENUMS_M31 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,30,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M30(m,d,__VA_ARGS__))
BETTER_ENUMS_M30
#define BETTER_ENUMS_M30(m, d, x,...)
Definition enum.h:215

Definition at line 217 of file enum.h.

## BETTER_ENUMS_M32

#define BETTER_ENUMS_M32 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,31,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M31(m,d,__VA_ARGS__))
BETTER_ENUMS_M31
#define BETTER_ENUMS_M31(m, d, x,...)
Definition enum.h:217

Definition at line 219 of file enum.h.

## BETTER_ENUMS_M33

#define BETTER_ENUMS_M33 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,32,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M32(m,d,__VA_ARGS__))
BETTER_ENUMS_M32
#define BETTER_ENUMS_M32(m, d, x,...)
Definition enum.h:219

Definition at line 221 of file enum.h.

## BETTER_ENUMS_M34

#define BETTER_ENUMS_M34 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,33,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M33(m,d,__VA_ARGS__))
BETTER_ENUMS_M33
#define BETTER_ENUMS_M33(m, d, x,...)
Definition enum.h:221

Definition at line 223 of file enum.h.

## BETTER_ENUMS_M35

#define BETTER_ENUMS_M35 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,34,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M34(m,d,__VA_ARGS__))
BETTER_ENUMS_M34
#define BETTER_ENUMS_M34(m, d, x,...)
Definition enum.h:223

Definition at line 225 of file enum.h.

## BETTER_ENUMS_M36

#define BETTER_ENUMS_M36 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,35,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M35(m,d,__VA_ARGS__))
BETTER_ENUMS_M35
#define BETTER_ENUMS_M35(m, d, x,...)
Definition enum.h:225

Definition at line 227 of file enum.h.

## BETTER_ENUMS_M37

#define BETTER_ENUMS_M37 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,36,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M36(m,d,__VA_ARGS__))
BETTER_ENUMS_M36
#define BETTER_ENUMS_M36(m, d, x,...)
Definition enum.h:227

Definition at line 229 of file enum.h.

## BETTER_ENUMS_M38

#define BETTER_ENUMS_M38 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,37,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M37(m,d,__VA_ARGS__))
BETTER_ENUMS_M37
#define BETTER_ENUMS_M37(m, d, x,...)
Definition enum.h:229

Definition at line 231 of file enum.h.

## BETTER_ENUMS_M39

#define BETTER_ENUMS_M39 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,38,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M38(m,d,__VA_ARGS__))
BETTER_ENUMS_M38
#define BETTER_ENUMS_M38(m, d, x,...)
Definition enum.h:231

Definition at line 233 of file enum.h.

## BETTER_ENUMS_M4

#define BETTER_ENUMS_M4 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,3,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M3(m,d,__VA_ARGS__))
BETTER_ENUMS_M3
#define BETTER_ENUMS_M3(m, d, x,...)
Definition enum.h:161

Definition at line 163 of file enum.h.

## BETTER_ENUMS_M40

#define BETTER_ENUMS_M40 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,39,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M39(m,d,__VA_ARGS__))
BETTER_ENUMS_M39
#define BETTER_ENUMS_M39(m, d, x,...)
Definition enum.h:233

Definition at line 235 of file enum.h.

## BETTER_ENUMS_M41

#define BETTER_ENUMS_M41 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,40,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M40(m,d,__VA_ARGS__))
BETTER_ENUMS_M40
#define BETTER_ENUMS_M40(m, d, x,...)
Definition enum.h:235

Definition at line 237 of file enum.h.

## BETTER_ENUMS_M42

#define BETTER_ENUMS_M42 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,41,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M41(m,d,__VA_ARGS__))
BETTER_ENUMS_M41
#define BETTER_ENUMS_M41(m, d, x,...)
Definition enum.h:237

Definition at line 239 of file enum.h.

## BETTER_ENUMS_M43

#define BETTER_ENUMS_M43 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,42,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M42(m,d,__VA_ARGS__))
BETTER_ENUMS_M42
#define BETTER_ENUMS_M42(m, d, x,...)
Definition enum.h:239

Definition at line 241 of file enum.h.

## BETTER_ENUMS_M44

#define BETTER_ENUMS_M44 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,43,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M43(m,d,__VA_ARGS__))
BETTER_ENUMS_M43
#define BETTER_ENUMS_M43(m, d, x,...)
Definition enum.h:241

Definition at line 243 of file enum.h.

## BETTER_ENUMS_M45

#define BETTER_ENUMS_M45 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,44,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M44(m,d,__VA_ARGS__))
BETTER_ENUMS_M44
#define BETTER_ENUMS_M44(m, d, x,...)
Definition enum.h:243

Definition at line 245 of file enum.h.

## BETTER_ENUMS_M46

#define BETTER_ENUMS_M46 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,45,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M45(m,d,__VA_ARGS__))
BETTER_ENUMS_M45
#define BETTER_ENUMS_M45(m, d, x,...)
Definition enum.h:245

Definition at line 247 of file enum.h.

## BETTER_ENUMS_M47

#define BETTER_ENUMS_M47 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,46,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M46(m,d,__VA_ARGS__))
BETTER_ENUMS_M46
#define BETTER_ENUMS_M46(m, d, x,...)
Definition enum.h:247

Definition at line 249 of file enum.h.

## BETTER_ENUMS_M48

#define BETTER_ENUMS_M48 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,47,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M47(m,d,__VA_ARGS__))
BETTER_ENUMS_M47
#define BETTER_ENUMS_M47(m, d, x,...)
Definition enum.h:249

Definition at line 251 of file enum.h.

## BETTER_ENUMS_M49

#define BETTER_ENUMS_M49 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,48,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M48(m,d,__VA_ARGS__))
BETTER_ENUMS_M48
#define BETTER_ENUMS_M48(m, d, x,...)
Definition enum.h:251

Definition at line 253 of file enum.h.

## BETTER_ENUMS_M5

#define BETTER_ENUMS_M5 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,4,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M4(m,d,__VA_ARGS__))
BETTER_ENUMS_M4
#define BETTER_ENUMS_M4(m, d, x,...)
Definition enum.h:163

Definition at line 165 of file enum.h.

## BETTER_ENUMS_M50

#define BETTER_ENUMS_M50 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,49,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M49(m,d,__VA_ARGS__))
BETTER_ENUMS_M49
#define BETTER_ENUMS_M49(m, d, x,...)
Definition enum.h:253

Definition at line 255 of file enum.h.

## BETTER_ENUMS_M51

#define BETTER_ENUMS_M51 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,50,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M50(m,d,__VA_ARGS__))
BETTER_ENUMS_M50
#define BETTER_ENUMS_M50(m, d, x,...)
Definition enum.h:255

Definition at line 257 of file enum.h.

## BETTER_ENUMS_M52

#define BETTER_ENUMS_M52 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,51,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M51(m,d,__VA_ARGS__))
BETTER_ENUMS_M51
#define BETTER_ENUMS_M51(m, d, x,...)
Definition enum.h:257

Definition at line 259 of file enum.h.

## BETTER_ENUMS_M53

#define BETTER_ENUMS_M53 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,52,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M52(m,d,__VA_ARGS__))
BETTER_ENUMS_M52
#define BETTER_ENUMS_M52(m, d, x,...)
Definition enum.h:259

Definition at line 261 of file enum.h.

## BETTER_ENUMS_M54

#define BETTER_ENUMS_M54 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,53,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M53(m,d,__VA_ARGS__))
BETTER_ENUMS_M53
#define BETTER_ENUMS_M53(m, d, x,...)
Definition enum.h:261

Definition at line 263 of file enum.h.

## BETTER_ENUMS_M55

#define BETTER_ENUMS_M55 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,54,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M54(m,d,__VA_ARGS__))
BETTER_ENUMS_M54
#define BETTER_ENUMS_M54(m, d, x,...)
Definition enum.h:263

Definition at line 265 of file enum.h.

## BETTER_ENUMS_M56

#define BETTER_ENUMS_M56 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,55,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M55(m,d,__VA_ARGS__))
BETTER_ENUMS_M55
#define BETTER_ENUMS_M55(m, d, x,...)
Definition enum.h:265

Definition at line 267 of file enum.h.

## BETTER_ENUMS_M57

#define BETTER_ENUMS_M57 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,56,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M56(m,d,__VA_ARGS__))
BETTER_ENUMS_M56
#define BETTER_ENUMS_M56(m, d, x,...)
Definition enum.h:267

Definition at line 269 of file enum.h.

## BETTER_ENUMS_M58

#define BETTER_ENUMS_M58 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,57,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M57(m,d,__VA_ARGS__))
BETTER_ENUMS_M57
#define BETTER_ENUMS_M57(m, d, x,...)
Definition enum.h:269

Definition at line 271 of file enum.h.

## BETTER_ENUMS_M59

#define BETTER_ENUMS_M59 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,58,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M58(m,d,__VA_ARGS__))
BETTER_ENUMS_M58
#define BETTER_ENUMS_M58(m, d, x,...)
Definition enum.h:271

Definition at line 273 of file enum.h.

## BETTER_ENUMS_M6

#define BETTER_ENUMS_M6 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,5,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M5(m,d,__VA_ARGS__))
BETTER_ENUMS_M5
#define BETTER_ENUMS_M5(m, d, x,...)
Definition enum.h:165

Definition at line 167 of file enum.h.

## BETTER_ENUMS_M60

#define BETTER_ENUMS_M60 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,59,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M59(m,d,__VA_ARGS__))
BETTER_ENUMS_M59
#define BETTER_ENUMS_M59(m, d, x,...)
Definition enum.h:273

Definition at line 275 of file enum.h.

## BETTER_ENUMS_M61

#define BETTER_ENUMS_M61 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,60,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M60(m,d,__VA_ARGS__))
BETTER_ENUMS_M60
#define BETTER_ENUMS_M60(m, d, x,...)
Definition enum.h:275

Definition at line 277 of file enum.h.

## BETTER_ENUMS_M62

#define BETTER_ENUMS_M62 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,61,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M61(m,d,__VA_ARGS__))
BETTER_ENUMS_M61
#define BETTER_ENUMS_M61(m, d, x,...)
Definition enum.h:277

Definition at line 279 of file enum.h.

## BETTER_ENUMS_M63

#define BETTER_ENUMS_M63 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,62,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M62(m,d,__VA_ARGS__))
BETTER_ENUMS_M62
#define BETTER_ENUMS_M62(m, d, x,...)
Definition enum.h:279

Definition at line 281 of file enum.h.

## BETTER_ENUMS_M64

#define BETTER_ENUMS_M64 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,63,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M63(m,d,__VA_ARGS__))
BETTER_ENUMS_M63
#define BETTER_ENUMS_M63(m, d, x,...)
Definition enum.h:281

Definition at line 283 of file enum.h.

## BETTER_ENUMS_M7

#define BETTER_ENUMS_M7 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,6,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M6(m,d,__VA_ARGS__))
BETTER_ENUMS_M6
#define BETTER_ENUMS_M6(m, d, x,...)
Definition enum.h:167

Definition at line 169 of file enum.h.

## BETTER_ENUMS_M8

#define BETTER_ENUMS_M8 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,7,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M7(m,d,__VA_ARGS__))
BETTER_ENUMS_M7
#define BETTER_ENUMS_M7(m, d, x,...)
Definition enum.h:169

Definition at line 171 of file enum.h.

## BETTER_ENUMS_M9

#define BETTER_ENUMS_M9 | ( |  | m,
|  |  | d,
|  |  | x,
|  |  | ...
| ) |  |

Value:
m(d,8,x) \
BETTER_ENUMS_ID(BETTER_ENUMS_M8(m,d,__VA_ARGS__))
BETTER_ENUMS_M8
#define BETTER_ENUMS_M8(m, d, x,...)
Definition enum.h:171

Definition at line 173 of file enum.h.

## BETTER_ENUMS_NO_CONSTEXPR_TO_STRING_KEYWORD

#define BETTER_ENUMS_NO_CONSTEXPR_TO_STRING_KEYWORD

Definition at line 1094 of file enum.h.

## BETTER_ENUMS_NS

#define BETTER_ENUMS_NS | ( |  | EnumType | ) | better_enums_data_ ## EnumType

Definition at line 616 of file enum.h.

## BETTER_ENUMS_NULLPTR

#define BETTER_ENUMS_NULLPTR NULL

Definition at line 122 of file enum.h.

## BETTER_ENUMS_OR_THROW

#define BETTER_ENUMS_OR_THROW return maybe ? *maybe : throw std::runtime_error(message);

Definition at line 368 of file enum.h.

## BETTER_ENUMS_PP_COUNT

#define BETTER_ENUMS_PP_COUNT | ( |  | ... | ) |

Value:
BETTER_ENUMS_ID(BETTER_ENUMS_PP_COUNT_IMPL(__VA_ARGS__, 64, 63, 62, 61, 60,\
59, 58, 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, 43, 42,\
41, 40, 39, 38, 37, 36, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24,\
23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, \
4, 3, 2, 1))
BETTER_ENUMS_PP_COUNT_IMPL
#define BETTER_ENUMS_PP_COUNT_IMPL(_1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, _64, count,...)
Definition enum.h:286

Definition at line 292 of file enum.h.

## BETTER_ENUMS_PP_COUNT_IMPL

#define BETTER_ENUMS_PP_COUNT_IMPL | ( |  | _1,
|  |  | _2,
|  |  | _3,
|  |  | _4,
|  |  | _5,
|  |  | _6,
|  |  | _7,
|  |  | _8,
|  |  | _9,
|  |  | _10,
|  |  | _11,
|  |  | _12,
|  |  | _13,
|  |  | _14,
|  |  | _15,
|  |  | _16,
|  |  | _17,
|  |  | _18,
|  |  | _19,
|  |  | _20,
|  |  | _21,
|  |  | _22,
|  |  | _23,
|  |  | _24,
|  |  | _25,
|  |  | _26,
|  |  | _27,
|  |  | _28,
|  |  | _29,
|  |  | _30,
|  |  | _31,
|  |  | _32,
|  |  | _33,
|  |  | _34,
|  |  | _35,
|  |  | _36,
|  |  | _37,
|  |  | _38,
|  |  | _39,
|  |  | _40,
|  |  | _41,
|  |  | _42,
|  |  | _43,
|  |  | _44,
|  |  | _45,
|  |  | _46,
|  |  | _47,
|  |  | _48,
|  |  | _49,
|  |  | _50,
|  |  | _51,
|  |  | _52,
|  |  | _53,
|  |  | _54,
|  |  | _55,
|  |  | _56,
|  |  | _57,
|  |  | _58,
|  |  | _59,
|  |  | _60,
|  |  | _61,
|  |  | _62,
|  |  | _63,
|  |  | _64,
|  |  | count,
|  |  | ...
| ) |  | count

Definition at line 286 of file enum.h.

## BETTER_ENUMS_PP_MAP

#define BETTER_ENUMS_PP_MAP | ( |  | macro,
|  |  | data,
|  |  | ...
| ) |  |

Value:
BETTER_ENUMS_ID( \
BETTER_ENUMS_APPLY( \
BETTER_ENUMS_PP_MAP_VAR_COUNT, \
BETTER_ENUMS_PP_COUNT(__VA_ARGS__)) \
(macro, data, __VA_ARGS__))
BETTER_ENUMS_PP_MAP_VAR_COUNT
#define BETTER_ENUMS_PP_MAP_VAR_COUNT(count)
Definition enum.h:152
BETTER_ENUMS_PP_COUNT
#define BETTER_ENUMS_PP_COUNT(...)
Definition enum.h:292
BETTER_ENUMS_APPLY
#define BETTER_ENUMS_APPLY(macro,...)
Definition enum.h:154

Definition at line 145 of file enum.h.

## BETTER_ENUMS_PP_MAP_VAR_COUNT

#define BETTER_ENUMS_PP_MAP_VAR_COUNT | ( |  | count | ) | BETTER_ENUMS_M ## count

Definition at line 152 of file enum.h.

## BETTER_ENUMS_REGULAR_ENUM_SWITCH_TYPE

#define BETTER_ENUMS_REGULAR_ENUM_SWITCH_TYPE | ( |  | Type | ) | _enumerated

Definition at line 1005 of file enum.h.

## BETTER_ENUMS_REGULAR_ENUM_SWITCH_TYPE_GENERATE

#define BETTER_ENUMS_REGULAR_ENUM_SWITCH_TYPE_GENERATE | ( |  | Underlying,
|  |  | ...
| ) |  |

Definition at line 1013 of file enum.h.

## BETTER_ENUMS_RESERVE_STORAGE

#define BETTER_ENUMS_RESERVE_STORAGE | ( |  | ... | ) |

Value:
BETTER_ENUMS_ID( \
BETTER_ENUMS_PP_MAP( \
BETTER_ENUMS_RESERVE_STORAGE_SINGLE, ignored, __VA_ARGS__))
BETTER_ENUMS_RESERVE_STORAGE_SINGLE
#define BETTER_ENUMS_RESERVE_STORAGE_SINGLE(ignored, index, expression)
Definition enum.h:604

Definition at line 607 of file enum.h.

## BETTER_ENUMS_RESERVE_STORAGE_SINGLE

#define BETTER_ENUMS_RESERVE_STORAGE_SINGLE | ( |  | ignored,
|  |  | index,
|  |  | expression
| ) |  | #expression ","

Definition at line 604 of file enum.h.

## BETTER_ENUMS_STRINGIZE

#define BETTER_ENUMS_STRINGIZE | ( |  | ... | ) |

Value:
BETTER_ENUMS_ID( \
BETTER_ENUMS_PP_MAP( \
BETTER_ENUMS_STRINGIZE_SINGLE, ignored, __VA_ARGS__))
BETTER_ENUMS_STRINGIZE_SINGLE
#define BETTER_ENUMS_STRINGIZE_SINGLE(ignored, index, expression)
Definition enum.h:597

Definition at line 599 of file enum.h.

## BETTER_ENUMS_STRINGIZE_SINGLE

#define BETTER_ENUMS_STRINGIZE_SINGLE | ( |  | ignored,
|  |  | index,
|  |  | expression
| ) |  | #expression,

Definition at line 597 of file enum.h.

## BETTER_ENUMS_TYPE

#define BETTER_ENUMS_TYPE | ( |  | SetUnderlyingType,
|  |  | SwitchType,
|  |  | GenerateSwitchType,
|  |  | GenerateStrings,
|  |  | ToStringConstexpr,
|  |  | DeclareInitialize,
|  |  | DefineInitialize,
|  |  | CallInitialize,
|  |  | Enum,
|  |  | Underlying,
|  |  | ...
| ) |  |

Definition at line 634 of file enum.h.

## BETTER_ENUMS_UNUSED

#define BETTER_ENUMS_UNUSED

Definition at line 134 of file enum.h.