mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-16 00:52:23 -07:00
eliminate extra view rule channel in rd_regs/hover-eval/watch-pins/etc.
This commit is contained in:
@@ -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)},
|
||||
|
||||
@@ -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
@@ -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:
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user