cppast/src/refl/template/refl.liquid

49 lines
2.3 KiB
Plaintext
Raw Normal View History

2024-04-21 21:44:53 +08:00
{%- 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 -%}
2024-04-25 21:47:15 +08:00
{{ indent }} StaticMethodField(&{{Name}}::{{field.Name}}, FName("{{field.Name}}"){% if field.Meta %}, {{field.Meta}}{% endif %}),
2024-04-21 21:44:53 +08:00
{{ indent }} {%- else -%}
2024-04-25 21:47:15 +08:00
{{ indent }} StaticMemberField(&{{Name}}::{{field.Name}}, FName("{{field.Name}}"){% if field.Meta %}, {{field.Meta}}{% endif %}),
2024-04-21 21:44:53 +08:00
{{ 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 -%}
2024-04-25 21:47:15 +08:00
{{ indent }} StaticMethodField(&{{Name}}::{{field.Name}}, FName("{{field.Name}}"){% if field.Meta %}, {{field.Meta}}{% endif %}),
2024-04-21 21:44:53 +08:00
{{ indent }} {%- else -%}
2024-04-25 21:47:15 +08:00
{{ indent }} StaticMemberField(&{{Name}}::{{field.Name}}, FName("{{field.Name}}"){% if field.Meta %}, {{field.Meta}}{% endif %}),
2024-04-21 21:44:53 +08:00
{{ indent }} {%- endif -%}
{{ indent }} {%- endfor -%}
{{ indent }} };
{{ indent }} };
{{ indent }}};
{% if NameSpace != blank %}
{{ Indent }}}
{% endif %}