30#define CE_META_ENUM_DEFINE_BASE(...) \
31 class ::CeresEngine::TUserTypeInfo<__VA_ARGS__> final : public TEnum<__VA_ARGS__> { \
32 using EnumType = __VA_ARGS__; \
35 explicit TUserTypeInfo() : TEnum<__VA_ARGS__>() { define(*this); } \
38 inline void define(TUserTypeInfo& define); \
41#define CE_META_ENUM_DEFINE(...) \
42 template<> CE_META_ENUM_DEFINE_BASE(__VA_ARGS__); \
43 template<> const ::CeresEngine::TypeInfo& ::CeresEngine::GetTypeInfo<__VA_ARGS__>::get() { \
44 static const TUserTypeInfo<__VA_ARGS__> kType; \
47 void ::CeresEngine::TUserTypeInfo<__VA_ARGS__>::define(TUserTypeInfo& define)
A value type that can hold any alongside it's type information.
Definition Box.hpp:40
Represents a reflected enum from C++.
Definition Enum.hpp:26
void addElement(StringView name, ValueGetter &&value)
String name
Definition Enum.hpp:31
Definition Enum.define.hpp:14
TEnum()
Definition Enum.define.hpp:16
void value(StringView name, const T &value)
Definition Enum.define.hpp:23
StringView getName() const noexcept final
Definition Enum.define.hpp:20
Definition TypeInfo.core.hpp:843
Definition Application.hpp:19
constexpr StringView getTypeName()
Definition TypeName.hpp:72
constexpr size_t hash(const T &v)
Generates a hash for the provided type.
Definition Hash.hpp:25