From e7a4f407bb05bb13b20ff22716b7b2a30e94e088 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Wed, 7 May 2025 15:24:23 -0700 Subject: [PATCH] use 'sufficient suffixes' when generating enum expansions --- src/eval/eval_types.c | 11 +++++- .../eval_visualization_core.c | 38 ------------------- src/raddbg/raddbg_core.c | 4 -- 3 files changed, 10 insertions(+), 43 deletions(-) diff --git a/src/eval/eval_types.c b/src/eval/eval_types.c index a0293565..353dd018 100644 --- a/src/eval/eval_types.c +++ b/src/eval/eval_types.c @@ -2202,7 +2202,16 @@ E_TYPE_EXPAND_RANGE_FUNCTION_DEF(default) { U64 member_idx = idx + read_range.min; String8 member_name = type->enum_vals[member_idx].name; - evals_out[idx] = e_eval_wrapf(eval, "$.%S", member_name); + String8 sufficient_suffix = member_name; + if(str8_match(sufficient_suffix, type->name, StringMatchFlag_RightSideSloppy)) + { + sufficient_suffix = str8_skip(sufficient_suffix, type->name.size); + if(str8_match(sufficient_suffix, str8_lit("_"), StringMatchFlag_RightSideSloppy)) + { + sufficient_suffix = str8_skip(sufficient_suffix, 1); + } + } + evals_out[idx] = e_eval_wrapf(eval, "$.%S", sufficient_suffix); } } diff --git a/src/eval_visualization/eval_visualization_core.c b/src/eval_visualization/eval_visualization_core.c index e3ae7724..97c68827 100644 --- a/src/eval_visualization/eval_visualization_core.c +++ b/src/eval_visualization/eval_visualization_core.c @@ -1416,44 +1416,6 @@ ev_string_from_simple_typed_eval(Arena *arena, EV_StringParams *params, E_Eval e case E_TypeKind_LRef:{result = push_str8f(arena, "0x%I64x", eval.value.u64);}break; case E_TypeKind_RRef:{result = push_str8f(arena, "0x%I64x", eval.value.u64);}break; case E_TypeKind_Function:{result = push_str8f(arena, "0x%I64x", eval.value.u64);}break; - -#if 0 - case E_TypeKind_Enum: - { - Temp scratch = scratch_begin(&arena, 1); - E_Type *type = e_type_from_key(type_key); - String8 constant_name = {0}; - for(U64 val_idx = 0; val_idx < type->count; val_idx += 1) - { - if(eval.value.u64 == type->enum_vals[val_idx].val) - { - constant_name = type->enum_vals[val_idx].name; - break; - } - } - String8 numeric_value_string = str8_from_u64(scratch.arena, eval.value.u64, params->radix, params->min_digits, digit_group_separator); - if(params->flags & EV_StringFlag_ReadOnlyDisplayRules) - { - if(constant_name.size != 0) - { - result = push_str8f(arena, "%S (%S)", numeric_value_string, constant_name); - } - else - { - result = push_str8_copy(arena, numeric_value_string); - } - } - else if(constant_name.size != 0) - { - result = push_str8_copy(arena, constant_name); - } - else - { - result = push_str8_copy(arena, numeric_value_string); - } - scratch_end(scratch); - }break; -#endif } return result; } diff --git a/src/raddbg/raddbg_core.c b/src/raddbg/raddbg_core.c index 3490fb0a..30b5a2e5 100644 --- a/src/raddbg/raddbg_core.c +++ b/src/raddbg/raddbg_core.c @@ -9823,10 +9823,6 @@ rd_set_autocomp_regs_(E_Eval dst_eval, RD_Regs *regs) MemoryZeroStruct(&list_expr); } } - else if(e_type_kind_from_key(maybe_enum_type) == E_TypeKind_Enum) - { - list_expr = e_type_string_from_key(scratch.arena, maybe_enum_type); - } } // rjf: determine if autocompletion lister is allowed