{{ Indent }}template<> struct _Static<{{FullName}},{{MetaName}}> { {{ Indent }} using T = class {{FullName}}; {{ Indent }} consteval static auto __MakeStaticFields() { {{ Indent }} return std::array{ {{ Indent }} {%- for field in FieldList %} {{ Indent }} {%- if field.Type == 1 %} {{ Indent }} refl::StaticMemberField(&T::{{field.Name}}, FName("{{field.Name}}"), {{field.Meta}}), {{ Indent }} {%- elsif field.Type == 2 %} {{ Indent }} refl::StaticCtorField({{field.Meta}}), {{ Indent }} {%- elsif field.Type == 3 %} {{ Indent }} refl::StaticMethodField(&T::{{field.Name}}, FName("{{field.Name}}"), {{field.Meta}}), {{ Indent }} {%- else %} {{ Indent }} refl::StaticMethodField((T::{{field.Ref}})&T::{{field.Name}}, FName("{{field.Name}}"), {{field.Meta}}), {{ Indent }} {%- endif %} {{ Indent }} {%- endfor %} {{ Indent }} }; {{ Indent }} }; {{ Indent }} {{ Indent }} consteval static int Size() { {{ Indent }} return refl::fetch_meta_size<_Static>(); {{ Indent }} }; {{ Indent }} consteval static int MemberCount() { {{ Indent }} return {{MemberCount}}; {{ Indent }} }; {{ Indent }} consteval static int CtorCount() { {{ Indent }} return {{CtorCount}}; {{ Indent }} }; {{ Indent }}}; {{ Indent }} {{ Indent }}template<> struct _Meta<{{FullName}},{{MetaName}}> : public refl::MetaHelp { {{ Indent }} using T = class {{FullName}}; {{ Indent }} using MyParent = {{ ParentName }}; {{ Indent }} using MyStatic = _Static; {{ Indent }} {%-if IsMultyMeta %} {{ Indent }} using MyMetas = class _Multy; {{ Indent }} {%- endif %} {{ Indent }} inline static char s_data[MyStatic::Size()]{}; {{ Indent }} static auto __MakeFields() { {{ Indent }} char* memory = &s_data[0]; {{ Indent }} return std::array{ {{ Indent }} {%- for field in FieldList %} {{ Indent }} {%- if field.Type == 1 %} {{ Indent }} MemberField(&T::{{field.Name}}, FName("{{field.Name}}"), memory, {{field.Meta}}), {{ Indent }} {%- elsif field.Type == 2 %} {{ Indent }} CtorField(memory, {{field.Meta}}), {{ Indent }} {%- elsif field.Type == 3 %} {{ Indent }} MethodField(&T::{{field.Name}}, FName("{{field.Name}}"), memory, {{field.Meta}}), {{ Indent }} {%- else %} {{ Indent }} MethodField((T::{{field.Ref}})&T::{{field.Name}}, FName("{{field.Name}}"), memory, {{field.Meta}}), {{ Indent }} {%- endif %} {{ Indent }} {%- endfor %} {{ Indent }} }; {{ Indent }} }; {{ Indent }}}; {{ Indent }}{%- if IsMultyMeta %} {{ Indent }}template<> const refl::UClass* _Multy<{{FullName}}>::{{ MetaName }}() {{ Indent }}{ {{ Indent }} static const auto s_cls = refl::UClass_Meta>::BuildClass(); {{ Indent }} return &s_cls; {{ Indent }}}; {{ Indent }}{%- endif %}