eliminate extra view rule channel in rd_regs/hover-eval/watch-pins/etc.

This commit is contained in:
Ryan Fleury
2025-04-16 11:13:30 -07:00
parent 2a45696294
commit 51f46cb5b8
6 changed files with 38 additions and 63 deletions
+1 -2
View File
@@ -344,7 +344,7 @@ RD_NameSchemaInfo rd_name_schema_info_table[17] =
{str8_lit_comp("thread"), str8_lit_comp("x:{'label':code_string, 'id':u64, @no_expand 'active':bool, 'call_stack':query}")},
};
Rng1U64 rd_reg_slot_range_table[42] =
Rng1U64 rd_reg_slot_range_table[41] =
{
{0},
{OffsetOf(RD_Regs, machine), OffsetOf(RD_Regs, machine) + sizeof(CTRL_Handle)},
@@ -373,7 +373,6 @@ Rng1U64 rd_reg_slot_range_table[42] =
{OffsetOf(RD_Regs, vaddr_range), OffsetOf(RD_Regs, vaddr_range) + sizeof(Rng1U64)},
{OffsetOf(RD_Regs, voff_range), OffsetOf(RD_Regs, voff_range) + sizeof(Rng1U64)},
{OffsetOf(RD_Regs, expr), OffsetOf(RD_Regs, expr) + sizeof(String8)},
{OffsetOf(RD_Regs, view_rule), OffsetOf(RD_Regs, view_rule) + sizeof(String8)},
{OffsetOf(RD_Regs, ui_key), OffsetOf(RD_Regs, ui_key) + sizeof(UI_Key)},
{OffsetOf(RD_Regs, off_px), OffsetOf(RD_Regs, off_px) + sizeof(Vec2F32)},
{OffsetOf(RD_Regs, lister_flags), OffsetOf(RD_Regs, lister_flags) + sizeof(RD_ListerFlags)},
+1 -4
View File
@@ -35,7 +35,6 @@ RD_RegSlot_Voff,
RD_RegSlot_VaddrRange,
RD_RegSlot_VoffRange,
RD_RegSlot_Expr,
RD_RegSlot_ViewRule,
RD_RegSlot_UIKey,
RD_RegSlot_OffPx,
RD_RegSlot_ListerFlags,
@@ -562,7 +561,6 @@ U64 voff;
Rng1U64 vaddr_range;
Rng1U64 voff_range;
String8 expr;
String8 view_rule;
UI_Key ui_key;
Vec2F32 off_px;
RD_ListerFlags lister_flags;
@@ -627,7 +625,6 @@ RD_Query query;
.vaddr_range = rd_regs()->vaddr_range,\
.voff_range = rd_regs()->voff_range,\
.expr = rd_regs()->expr,\
.view_rule = rd_regs()->view_rule,\
.ui_key = rd_regs()->ui_key,\
.off_px = rd_regs()->off_px,\
.lister_flags = rd_regs()->lister_flags,\
@@ -646,7 +643,7 @@ RD_Query query;
C_LINKAGE_BEGIN
extern RD_VocabInfo rd_vocab_info_table[315];
extern RD_NameSchemaInfo rd_name_schema_info_table[17];
extern Rng1U64 rd_reg_slot_range_table[42];
extern Rng1U64 rd_reg_slot_range_table[41];
extern String8 rd_binding_version_remap_old_name_table[8];
extern String8 rd_binding_version_remap_new_name_table[8];
extern String8 rd_icon_kind_text_table[74];
+28 -29
View File
@@ -374,43 +374,42 @@ RD_RegTable:
{RD_CfgIDList cfg_list CfgList }
// rjf: frame selection
{U64 unwind_count UnwindCount }
{U64 inline_depth InlineDepth }
{U64 unwind_count UnwindCount }
{U64 inline_depth InlineDepth }
// rjf: code / address location info
{String8 file_path FilePath }
{TxtPt cursor Cursor }
{TxtPt mark Mark }
{U128 text_key TextKey }
{TXT_LangKind lang_kind LangKind }
{D_LineList lines Lines }
{DI_Key dbgi_key DbgiKey }
{U64 vaddr Vaddr }
{U64 voff Voff }
{Rng1U64 vaddr_range VaddrRange }
{Rng1U64 voff_range VoffRange }
{String8 file_path FilePath }
{TxtPt cursor Cursor }
{TxtPt mark Mark }
{U128 text_key TextKey }
{TXT_LangKind lang_kind LangKind }
{D_LineList lines Lines }
{DI_Key dbgi_key DbgiKey }
{U64 vaddr Vaddr }
{U64 voff Voff }
{Rng1U64 vaddr_range VaddrRange }
{Rng1U64 voff_range VoffRange }
// rjf: evaluation
{String8 expr Expr }
{String8 view_rule ViewRule }
{String8 expr Expr }
// rjf: ui context
{UI_Key ui_key UIKey }
{Vec2F32 off_px OffPx }
{RD_ListerFlags lister_flags ListerFlags }
{RD_RegSlot reg_slot RegSlot }
{UI_Key ui_key UIKey }
{Vec2F32 off_px OffPx }
{RD_ListerFlags lister_flags ListerFlags }
{RD_RegSlot reg_slot RegSlot }
// rjf: general parameters
{U32 pid PID }
{B32 force_confirm ForceConfirm }
{B32 prefer_disasm PreferDisasm }
{B32 no_rich_tooltip NoRichTooltip }
{B32 do_implicit_root DoImplicitRoot}
{Dir2 dir2 Dir2 }
{String8 string String }
{String8 cmd_name CmdName }
{`MD_Node *` params_tree ParamsTree }
{`OS_Event *` os_event OSEvent }
{U32 pid PID }
{B32 force_confirm ForceConfirm }
{B32 prefer_disasm PreferDisasm }
{B32 no_rich_tooltip NoRichTooltip }
{B32 do_implicit_root DoImplicitRoot}
{Dir2 dir2 Dir2 }
{String8 string String }
{String8 cmd_name CmdName }
{`MD_Node *` params_tree ParamsTree }
{`OS_Event *` os_event OSEvent }
}
@enum RD_RegSlot:
+4 -19
View File
@@ -44,7 +44,6 @@ rd_regs_copy_contents(Arena *arena, RD_Regs *dst, RD_Regs *src)
dst->lines = d_line_list_copy(arena, &src->lines);
dst->dbgi_key = di_key_copy(arena, &src->dbgi_key);
dst->expr = push_str8_copy(arena, src->expr);
dst->view_rule = push_str8_copy(arena, src->view_rule);
dst->string = push_str8_copy(arena, src->string);
dst->cmd_name = push_str8_copy(arena, src->cmd_name);
dst->params_tree = md_tree_copy(arena, src->params_tree);
@@ -1123,14 +1122,6 @@ rd_expr_from_cfg(RD_Cfg *cfg)
return result;
}
internal String8
rd_view_rule_from_cfg(RD_Cfg *cfg)
{
RD_Cfg *view_rule = rd_cfg_child_from_string(cfg, str8_lit("view_rule"));
String8 result = view_rule->first->string;
return result;
}
internal String8
rd_path_from_cfg(RD_Cfg *cfg)
{
@@ -4399,8 +4390,7 @@ rd_view_ui(Rng2F32 rect)
row->eval.space.kind == E_SpaceKind_File ||
row->eval.space.kind == E_SpaceKind_Null)
{
RD_RegsScope(.expr = e_string_from_expr(scratch.arena, row->eval.expr),
.view_rule = ev_view_rule_from_key(rd_view_eval_view(), row->key))
RD_RegsScope(.expr = e_string_from_expr(scratch.arena, row->eval.expr))
rd_drag_begin(RD_RegSlot_Expr);
}
}
@@ -6316,7 +6306,7 @@ rd_window_frame(void)
}
// rjf: choose hover evaluation expression
String8 hover_eval_expr = push_str8f(scratch.arena, "%S%s%S", ws->hover_eval_string, ws->hover_eval_view_rules.size != 0 ? " => " : "", ws->hover_eval_view_rules);
String8 hover_eval_expr = ws->hover_eval_string;
// rjf: evaluate hover evaluation expression, & determine if it evaluates
// such that we want to build a hover eval.
@@ -9274,7 +9264,7 @@ rd_value_string_from_eval(Arena *arena, String8 filter, EV_StringParams *params,
//~ rjf: Hover Eval
internal void
rd_set_hover_eval(Vec2F32 pos, String8 string, String8 view_rules)
rd_set_hover_eval(Vec2F32 pos, String8 string)
{
RD_Cfg *window_cfg = rd_cfg_from_id(rd_regs()->window);
RD_WindowState *ws = rd_window_state_from_cfg(window_cfg);
@@ -9283,14 +9273,12 @@ rd_set_hover_eval(Vec2F32 pos, String8 string, String8 view_rules)
ui_key_match(ui_active_key(UI_MouseButtonKind_Middle), ui_key_zero()) &&
ui_key_match(ui_active_key(UI_MouseButtonKind_Right), ui_key_zero()))
{
B32 is_new_string = (!str8_match(ws->hover_eval_string, string, 0) ||
!str8_match(ws->hover_eval_view_rules, view_rules, 0));
B32 is_new_string = (!str8_match(ws->hover_eval_string, string, 0));
if(is_new_string)
{
ws->hover_eval_firstt_us = ws->hover_eval_lastt_us = rd_state->time_in_us;
arena_clear(ws->hover_eval_arena);
ws->hover_eval_string = push_str8_copy(ws->hover_eval_arena, string);
ws->hover_eval_view_rules = push_str8_copy(ws->hover_eval_arena, view_rules);
ws->hover_eval_focused = 0;
}
ws->hover_eval_spawn_pos = pos;
@@ -14891,7 +14879,6 @@ Z(getting_started)
String8 file_path = rd_regs()->file_path;
TxtPt pt = rd_regs()->cursor;
String8 expr_string = rd_regs()->expr;
String8 view_rule_string = rd_regs()->view_rule;
U64 vaddr = rd_regs()->vaddr;
B32 removed_already_existing = 0;
if(kind == RD_CmdKind_ToggleWatchPin)
@@ -14916,9 +14903,7 @@ Z(getting_started)
RD_Cfg *project = rd_cfg_child_from_string(rd_state->root_cfg, str8_lit("project"));
RD_Cfg *wp = rd_cfg_new(project, str8_lit("watch_pin"));
RD_Cfg *expr = rd_cfg_new(wp, str8_lit("expression"));
RD_Cfg *view_rule = rd_cfg_new(wp, str8_lit("view_rule"));
rd_cfg_new(expr, expr_string);
rd_cfg_new(view_rule, view_rule_string);
rd_cmd(RD_CmdKind_RelocateCfg, .cfg = wp->id, .expr = str8_zero());
}
}break;
+1 -3
View File
@@ -560,7 +560,6 @@ struct RD_WindowState
Arena *hover_eval_arena;
Vec2F32 hover_eval_spawn_pos;
String8 hover_eval_string;
String8 hover_eval_view_rules;
U64 hover_eval_firstt_us;
U64 hover_eval_lastt_us;
@@ -892,7 +891,6 @@ internal B32 rd_disabled_from_cfg(RD_Cfg *cfg);
internal RD_Location rd_location_from_cfg(RD_Cfg *cfg);
internal String8 rd_label_from_cfg(RD_Cfg *cfg);
internal String8 rd_expr_from_cfg(RD_Cfg *cfg);
internal String8 rd_view_rule_from_cfg(RD_Cfg *cfg);
internal String8 rd_path_from_cfg(RD_Cfg *cfg);
internal D_Target rd_target_from_cfg(Arena *arena, RD_Cfg *cfg);
@@ -1008,7 +1006,7 @@ internal String8 rd_value_string_from_eval(Arena *arena, String8 filter, EV_Stri
////////////////////////////////
//~ rjf: Hover Eval
internal void rd_set_hover_eval(Vec2F32 pos, String8 string, String8 view_rules);
internal void rd_set_hover_eval(Vec2F32 pos, String8 string);
////////////////////////////////
//~ rjf: Lister Functions
+3 -6
View File
@@ -1965,9 +1965,7 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
{
RD_Cfg *pin = n->v;
String8 pin_expr = rd_expr_from_cfg(pin);
String8 pin_view_rule = rd_view_rule_from_cfg(pin);
String8 full_pin_expr = push_str8f(scratch.arena, "%S => %S", pin_expr, pin_view_rule);
E_Eval eval = e_eval_from_string(scratch.arena, full_pin_expr);
E_Eval eval = e_eval_from_string(scratch.arena, pin_expr);
String8 eval_string = {0};
if(!e_type_key_match(e_type_key_zero(), eval.irtree.type_key))
{
@@ -1994,7 +1992,7 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
UI_Signal pin_sig = ui_signal_from_box(pin_box);
if(ui_key_match(pin_box_key, ui_hot_key()))
{
rd_set_hover_eval(v2f32(pin_box->rect.x0, pin_box->rect.y1-2.f), pin_expr, pin_view_rule);
rd_set_hover_eval(v2f32(pin_box->rect.x0, pin_box->rect.y1-2.f), pin_expr);
}
}
}
@@ -2198,7 +2196,6 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
U64 line_vaddr = params->line_vaddrs[line_idx];
rd_cmd(RD_CmdKind_AddWatchPin,
.expr = rd_state->drag_drop_regs->expr,
.view_rule = rd_state->drag_drop_regs->view_rule,
.file_path = line_vaddr == 0 ? rd_regs()->file_path : str8_zero(),
.cursor = line_vaddr == 0 ? txt_pt(line_num, 1) : txt_pt(0, 0),
.vaddr = line_vaddr);
@@ -2320,7 +2317,7 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
U64 line_idx = mouse_pt.line-params->line_num_range.min;
line_vaddr = params->line_vaddrs[line_idx];
}
rd_set_hover_eval(mouse_expr_baseline_pos, mouse_expr, str8_zero());
rd_set_hover_eval(mouse_expr_baseline_pos, mouse_expr);
}
}