generate meta tables for meta evaluations; use to table-drive ctrl msg serialization, deserialization, meta eval type info generation, and info <-> serialized eval path

This commit is contained in:
Ryan Fleury
2024-09-17 15:43:39 -07:00
parent 3de6331a8e
commit 85a07be1ac
13 changed files with 267 additions and 57 deletions
+58
View File
@@ -1,6 +1,64 @@
// Copyright (c) 2024 Epic Games Tools
// Licensed under the MIT license (https://opensource.org/license/mit/)
////////////////////////////////
//~ rjf: Meta Evaluation Type Information
@table(name info_type eval_type dynamic)
CTRL_MetaEvalMemberTable:
{
{enabled S32 S32 }
{frozen S32 S32 }
{hit_count U64 U64 }
{id U64 U64 }
{color U32 U32 }
{label String8 U64 x }
{location String8 U64 x }
{condition String8 U64 x }
}
@enum CTRL_MetaEvalDynamicKind:
{
Null,
String8,
COUNT
}
@struct CTRL_MetaEvalInfo:
{
@expand(CTRL_MetaEvalMemberTable a) `$(a.info_type) $(a.name)`
}
@struct CTRL_MetaEval:
{
@expand(CTRL_MetaEvalMemberTable a) `$(a.eval_type) $(a.name)`
}
@data(String8) ctrl_meta_eval_member_name_table:
{
@expand(CTRL_MetaEvalMemberTable a) `str8_lit_comp("$(a.name)")`
}
@data(Rng1U64) ctrl_meta_eval_info_member_range_table:
{
@expand(CTRL_MetaEvalMemberTable a) `{OffsetOf(CTRL_MetaEvalInfo, $(a.name)), OffsetOf(CTRL_MetaEvalInfo, $(a.name)) + sizeof($(a.info_type))}`
}
@data(Rng1U64) ctrl_meta_eval_member_range_table:
{
@expand(CTRL_MetaEvalMemberTable a) `{OffsetOf(CTRL_MetaEval, $(a.name)), OffsetOf(CTRL_MetaEval, $(a.name)) + sizeof($(a.eval_type))}`
}
@data(E_TypeKind) ctrl_meta_eval_member_type_kind_table:
{
@expand(CTRL_MetaEvalMemberTable a) `E_TypeKind_$(a.eval_type)`
}
@data(CTRL_MetaEvalDynamicKind) ctrl_meta_eval_member_dynamic_kind_table:
{
@expand(CTRL_MetaEvalMemberTable a) `$(a.dynamic == 'x' -> 'CTRL_MetaEvalDynamicKind_'..a.info_type)$(a.dynamic == '' -> 'CTRL_MetaEvalDynamicKind_Null')`
}
////////////////////////////////
//~ rjf: Entity Kinds