35 lines
747 B
C++
35 lines
747 B
C++
#pragma once
|
|
/*
|
|
#define REGISTER_CLASS(cls) using _T = cls;
|
|
#define MAKE_STATIC_FIELD(member, ...) \
|
|
MakeStaticField(&_T::member, #member, __VA_ARGS__)
|
|
|
|
#define MAKE_FIELD(member, ...) \
|
|
Field<_T>::MakeField(&_T::member, #member, __VA_ARGS__)
|
|
|
|
#define REGISTER_FIELDS()\
|
|
consteval static auto __MakeStaticFields() {\
|
|
return std::array{\
|
|
MAKE_FIELD_LIST(MAKE_STATIC_FIELD)\
|
|
};\
|
|
}\
|
|
static auto __MakeFields() {\
|
|
return std::array{\
|
|
MAKE_FIELD_LIST(MAKE_FIELD)\
|
|
};\
|
|
}
|
|
|
|
|
|
#define MAKE_FIELD_LIST(MACRO) \
|
|
MACRO(x), \
|
|
MACRO(y), \
|
|
MACRO(z), \
|
|
MACRO(norm, {10,9}), \
|
|
MACRO(norm1, {1}), \
|
|
MACRO(norm2, {2}),
|
|
|
|
REGISTER_CLASS(vec3)
|
|
REGISTER_FIELDS()
|
|
|
|
#undef MAKE_FIELD_LIST
|
|
*/ |