eliminate old manual serialization code for meta evals in ctrl msgs

This commit is contained in:
Ryan Fleury
2024-09-18 17:01:59 -07:00
parent 7c41fc11e0
commit 714c736530
18 changed files with 135 additions and 180 deletions
+2 -2
View File
@@ -1091,7 +1091,7 @@ e_parse_expr_from_text_tokens__prec(Arena *arena, String8 text, E_TokenArray *to
void *location = 0;
// rjf: try op table
for(EachNonZeroEnumVal(E_ExprKind, k))
for EachNonZeroEnumVal(E_ExprKind, k)
{
E_OpInfo *op_info = &e_expr_kind_op_info_table[k];
if(op_info->kind == E_OpKind_UnaryPrefix && str8_match(op_info->pre, token_string, 0))
@@ -1940,7 +1940,7 @@ e_parse_expr_from_text_tokens__prec(Arena *arena, String8 text, E_TokenArray *to
// rjf: first try to find a matching binary operator
S64 binary_precedence = 0;
E_ExprKind binary_kind = 0;
for(EachNonZeroEnumVal(E_ExprKind, k))
for EachNonZeroEnumVal(E_ExprKind, k)
{
E_OpInfo *op_info = &e_expr_kind_op_info_table[k];
if(op_info->kind == E_OpKind_Binary && str8_match(op_info->sep, token_string, 0))
+11 -25
View File
@@ -447,6 +447,16 @@ e_type_key_cons_base(Type *type, String8 name)
E_TypeKind kind = e_type_kind_from_base(type->kind);
result = e_type_key_basic(kind);
}break;
case TypeKind_Ptr:
{
E_TypeKey direct_type = e_type_key_cons_base(type->direct, str8_zero());
result = e_type_key_cons_ptr(arch_from_context(), direct_type);
}break;
case TypeKind_Array:
{
E_TypeKey direct_type = e_type_key_cons_base(type->direct, str8_zero());
result = e_type_key_cons_array(direct_type, type->count);
}break;
case TypeKind_Struct:
{
Temp scratch = scratch_begin(0, 0);
@@ -459,37 +469,13 @@ e_type_key_cons_base(Type *type, String8 name)
E_MemberArray members_array = e_member_array_from_list(scratch.arena, &members);
result = e_type_key_cons(.arch = arch_from_context(),
.kind = E_TypeKind_Struct,
.name = name,
.name = name.size ? name : type->name,
.members = members_array.v,
.count = members_array.count);
scratch_end(scratch);
}break;
}
return result;
#if 0
E_MemberList members = {0};
{
for(U64 idx = 0; idx < ArrayCount(ctrl_meta_eval_member_range_table); idx += 1)
{
E_TypeKey member_type_key = e_type_key_basic(ctrl_meta_eval_member_type_kind_table[idx]);
switch(ctrl_meta_eval_member_dynamic_kind_table[idx])
{
default:{}break;
case CTRL_MetaEvalDynamicKind_String8:
{
member_type_key = e_type_key_cons_ptr(arch_from_context(), e_type_key_basic(E_TypeKind_Char8));
}break;
}
e_member_list_push_new(scratch.arena, &members, .name = ctrl_meta_eval_member_name_table[idx], .off = ctrl_meta_eval_member_range_table[idx].min, .type_key = member_type_key);
}
}
E_MemberArray members_array = e_member_array_from_list(scratch.arena, &members);
E_TypeKey meta_eval_type_key = e_type_key_cons(.arch = arch_from_context(),
.kind = E_TypeKind_Struct,
.name = str8_lit("Meta"),
.members = members_array.v,
.count = members_array.count);
#endif
}
//- rjf: basic type key functions