2024-04-26 19:22:14 +08:00
|
|
|
{%- assign NewLine = newline_to_br -%}
|
|
|
|
|
{{ Indent2 }}struct {{ Name }}_Static_{{MetaName}} {
|
|
|
|
|
{{ Indent2 }} consteval static auto __MakeStaticFields() {
|
|
|
|
|
{{ Indent2 }} return std::array{
|
|
|
|
|
{{ NewLine }} {%- for field in FieldList -%}
|
2024-06-13 21:34:13 +08:00
|
|
|
{{ NewLine }} {%- if field.Type == 1 -%}
|
2024-06-14 22:26:49 +08:00
|
|
|
{{ Indent2 }} refl::StaticMemberField(&{{Name}}::{{field.Name}}, FName("{{field.Name}}"), {{field.Meta}}),
|
2024-06-13 21:34:13 +08:00
|
|
|
{{ NewLine }} {%- elsif field.Type == 2 -%}
|
|
|
|
|
{{ Indent2 }} refl::StaticCtorField<{{field.Name}}>({{field.Meta}}),
|
2024-04-26 19:22:14 +08:00
|
|
|
{{ NewLine }} {%- else -%}
|
2024-06-14 22:26:49 +08:00
|
|
|
{{ Indent2 }} refl::StaticMethodField(&{{Name}}::{{field.Name}}, FName("{{field.Name}}"), {{field.Meta}}),
|
2024-04-26 19:22:14 +08:00
|
|
|
{{ NewLine }} {%- endif -%}
|
|
|
|
|
{{ NewLine }} {%- endfor -%}
|
|
|
|
|
{{ Indent2 }} };
|
|
|
|
|
{{ Indent2 }} };
|
|
|
|
|
{{ NewLine }}
|
|
|
|
|
{{ Indent2 }} consteval static int Size() {
|
|
|
|
|
{{ Indent2 }} return refl::fetch_meta_size<{{ Name }}_Static_{{MetaName}}>();
|
|
|
|
|
{{ Indent2 }} };
|
2024-06-13 21:34:13 +08:00
|
|
|
{{ Indent2 }} consteval static int MemberCount() {
|
|
|
|
|
{{ Indent2 }} return {{MemberCount}};
|
|
|
|
|
{{ Indent2 }} };
|
|
|
|
|
{{ Indent2 }} consteval static int CtorCount() {
|
|
|
|
|
{{ Indent2 }} return {{CtorCount}};
|
|
|
|
|
{{ Indent2 }} };
|
2024-04-26 19:22:14 +08:00
|
|
|
{{ Indent2 }}};
|
|
|
|
|
{{ NewLine }}
|
|
|
|
|
{{ Indent2 }}struct {{ Name }}_{{MetaName}} : public refl::Meta {
|
2024-06-14 22:26:49 +08:00
|
|
|
{{ Indent2 }} using MyUClass = refl::UClass_Meta<{{ Name }}, {{ ParentName }}>;
|
2024-04-26 19:22:14 +08:00
|
|
|
{{ Indent2 }} using MyStatic = {{ Name }}_Static_{{MetaName}};
|
2024-04-29 14:58:45 +08:00
|
|
|
{{ NewLine }} {%-if IsMultyMeta -%}
|
|
|
|
|
{{ Indent2 }} using MyMetas = class {{Name}}_MulytMeta;
|
|
|
|
|
{{ NewLine }} {%- endif -%}
|
2024-04-26 19:22:14 +08:00
|
|
|
{{ Indent2 }} inline static char s_data[MyStatic::Size()]{};
|
|
|
|
|
{{ Indent2 }} static auto __MakeFields() {
|
|
|
|
|
{{ Indent2 }} char* memory = &s_data[0];
|
|
|
|
|
{{ Indent2 }} return std::array{
|
|
|
|
|
{{ NewLine }} {%- for field in FieldList -%}
|
2024-06-13 21:34:13 +08:00
|
|
|
{{ NewLine }} {%- if field.Type == 1 -%}
|
2024-06-14 22:26:49 +08:00
|
|
|
{{ Indent2 }} MemberField(&{{Name}}::{{field.Name}}, FName("{{field.Name}}"), memory, {{field.Meta}}),
|
2024-06-13 21:34:13 +08:00
|
|
|
{{ NewLine }} {%- elsif field.Type == 2 -%}
|
2024-06-14 22:26:49 +08:00
|
|
|
{{ Indent2 }} CtorField<{{field.Name}}>(memory, {{field.Meta}}),
|
2024-04-26 19:22:14 +08:00
|
|
|
{{ NewLine }} {%- else -%}
|
2024-06-14 22:26:49 +08:00
|
|
|
{{ Indent2 }} MethodField(&{{Name}}::{{field.Name}}, FName("{{field.Name}}"), memory, {{field.Meta}}),
|
2024-04-26 19:22:14 +08:00
|
|
|
{{ NewLine }} {%- endif -%}
|
|
|
|
|
{{ NewLine }} {%- endfor -%}
|
|
|
|
|
{{ Indent2 }} };
|
|
|
|
|
{{ Indent2 }} };
|
|
|
|
|
{{ Indent2 }}};
|
2024-04-29 14:58:45 +08:00
|
|
|
{{ NewLine }}{%- if IsMultyMeta -%}
|
|
|
|
|
{{ Indent2 }}const refl::UClass* {{Name}}_MulytMeta::{{ MetaName }}()
|
|
|
|
|
{{ Indent2 }}{
|
|
|
|
|
{{ Indent2 }} static const auto s_cls = {{ Name }}_{{MetaName}}::MyUClass();
|
|
|
|
|
{{ Indent2 }} return &s_cls;
|
|
|
|
|
{{ Indent2 }}};
|
|
|
|
|
{{ NewLine }}{%- endif -%}
|