{%- assign indent = Indent -%} {%- if NameSpace != blank -%} {{ indent }}namespace {{ NameSpace }} { {% capture newIndent %}{{ indent }} {% endcapture %} {%- assign indent = newIndent -%} {%- endif -%} {{ indent }}struct {{ Name }}_Static_{{MetaName}} { {{ indent }} consteval static auto __StaticFields() { {{ indent }} return std::make_tuple({% for field in FieldList %}&{{Name}}::{{field.Name}}{% unless forloop.last %}, {% endunless %}{% endfor %}); {{ indent }} }; {{ indent }} consteval static auto __MakeStaticFields() { {{ indent }} return std::array{ {{ indent }} {%- for field in FieldList -%} {{ indent }} {%- if field.IsMethod -%} {{ indent }} StaticMethodField(&{{Name}}::{{field.Name}}, FName("{{field.Name}}"){% if field.Meta %}, {{field.Meta}}{% endif %}), {{ indent }} {%- else -%} {{ indent }} StaticMemberField(&{{Name}}::{{field.Name}}, FName("{{field.Name}}"){% if field.Meta %}, {{field.Meta}}{% endif %}), {{ indent }} {%- endif -%} {{ indent }} {%- endfor -%} {{ indent }} }; {{ indent }} }; {{ indent }} consteval static int Size() { {{ indent }} return fetch_meta_size<{{ Name }}_Static_{{MetaName}}>(); {{ indent }} }; {{ indent }}}; {{ indent }}struct {{ Name }}_{{MetaName}} : public Meta { {{ indent }} using MyStatic = {{ Name }}_Static_{{MetaName}}; {{ indent }} using MyUClass = UClass_Meta<{{ Name }}, {{ ParentName }}>;; {{ 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.IsMethod -%} {{ indent }} StaticMethodField(&{{Name}}::{{field.Name}}, FName("{{field.Name}}"){% if field.Meta %}, {{field.Meta}}{% endif %}), {{ indent }} {%- else -%} {{ indent }} StaticMemberField(&{{Name}}::{{field.Name}}, FName("{{field.Name}}"){% if field.Meta %}, {{field.Meta}}{% endif %}), {{ indent }} {%- endif -%} {{ indent }} {%- endfor -%} {{ indent }} }; {{ indent }} }; {{ indent }}}; {% if NameSpace != blank %} {{ Indent }}} {% endif %}