RDKit
Open-source cheminformatics and machine learning.
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_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_better_enums::_or_zero (optional< T > maybe)
 
template<typename T , typename U >
BETTER_ENUMS_CONSTEXPR_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:
Enum, Underlying, __VA_ARGS__))
#define BETTER_ENUMS_CXX98_TRIM_STRINGS_ARRAYS(Enum,...)
Definition enum.h:1020
#define BETTER_ENUMS_LEGACY_UNDERLYING_TYPE(Underlying)
Definition enum.h:1000
#define BETTER_ENUMS_ID(x)
Definition enum.h:156
#define BETTER_ENUMS_NO_CONSTEXPR_TO_STRING_KEYWORD
Definition enum.h:1094
#define BETTER_ENUMS_DO_DECLARE_INITIALIZE
Definition enum.h:1101
#define BETTER_ENUMS_TYPE(SetUnderlyingType, SwitchType, GenerateSwitchType, GenerateStrings, ToStringConstexpr, DeclareInitialize, DefineInitialize, CallInitialize, Enum, Underlying,...)
Definition enum.h:634
#define BETTER_ENUMS_DEFAULT_SWITCH_TYPE
Definition enum.h:1146
#define BETTER_ENUMS_DO_DEFINE_INITIALIZE(Enum)
Definition enum.h:1109
#define BETTER_ENUMS_DO_CALL_INITIALIZE(value)
Definition enum.h:1129
#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[] = \
\
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; \
}
#define BETTER_ENUMS_STRINGIZE(...)
Definition enum.h:599
#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[] = \
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; \
}
#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_EAT_ASSIGN_SINGLE, EnumType, __VA_ARGS__))
#define BETTER_ENUMS_PP_MAP(macro, data,...)
Definition enum.h:145
#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,
 
)
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,
 
)    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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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__))
#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))
#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_PP_COUNT(__VA_ARGS__)) \
(macro, data, __VA_ARGS__))
#define BETTER_ENUMS_PP_MAP_VAR_COUNT(count)
Definition enum.h:152
#define BETTER_ENUMS_PP_COUNT(...)
Definition enum.h:292
#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_RESERVE_STORAGE_SINGLE, ignored, __VA_ARGS__))
#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_STRINGIZE_SINGLE, ignored, __VA_ARGS__))
#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.