mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-07-30 03:00:01 +00:00
@@ -14,10 +14,11 @@ DF_RegTable:
|
||||
{DMN_Handle thread Thread }
|
||||
{DF_Handle window Window }
|
||||
{DF_Handle panel Panel }
|
||||
{DF_Handle tab Tab }
|
||||
{DF_Handle view View }
|
||||
{DF_Handle prev_view PrevView }
|
||||
{DF_Handle dst_panel DstPanel }
|
||||
{DF_Handle cfg_tree CfgTree }
|
||||
{DF_HandleList cfg_tree_list CfgTreeList }
|
||||
{DF_Handle prev_cfg_child PrevCfgChild }
|
||||
|
||||
// rjf: frame selection
|
||||
{U64 unwind_count UnwindCount }
|
||||
@@ -174,8 +175,7 @@ DF_MsgKindTable:
|
||||
{GoBack "" go_back 0 0 Null Nil 0 0 0 0 0 0 Null ""}
|
||||
{GoForward "" go_forward 0 0 Null Nil 0 0 0 0 0 0 Null ""}
|
||||
|
||||
//- rjf: tab selection
|
||||
{SelectTab "" select_tab 0 0 Null Nil 0 0 0 0 0 0 Null ""}
|
||||
//- rjf: tab selection
|
||||
{NextTab "" next_tab 0 0 Null Nil 0 0 0 0 0 0 Null ""}
|
||||
{PrevTab "" prev_tab 0 0 Null Nil 0 0 0 0 0 0 Null ""}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -232,7 +232,6 @@ struct DF_View
|
||||
U64 generation;
|
||||
|
||||
// rjf: loading animation state
|
||||
B32 is_loading;
|
||||
F32 loading_t;
|
||||
F32 loading_t_target;
|
||||
U64 loading_progress_v;
|
||||
@@ -343,6 +342,7 @@ DF_DragDropState;
|
||||
typedef struct DF_DragDropPayload DF_DragDropPayload;
|
||||
struct DF_DragDropPayload
|
||||
{
|
||||
UI_Key key__;
|
||||
DF_Handle cfg_tree;
|
||||
D_Handle entity;
|
||||
TxtPt text_point;
|
||||
@@ -825,10 +825,8 @@ struct DF_State
|
||||
U64 free_view_count;
|
||||
U64 allocated_view_count;
|
||||
|
||||
// rjf: drag/drop state
|
||||
Arena *drag_drop_arena;
|
||||
// rjf: drag/drop state machine
|
||||
DF_DragDropState drag_drop_state;
|
||||
DF_Regs *drag_drop_regs;
|
||||
|
||||
// rjf: rich hover info
|
||||
Arena *rich_hover_info_next_arena;
|
||||
@@ -985,9 +983,8 @@ internal D_CmdParams df_cmd_params_copy(Arena *arena, D_CmdParams *src);
|
||||
//~ rjf: Global Cross-Window UI Interaction State Functions
|
||||
|
||||
internal B32 df_drag_is_active(void);
|
||||
internal void df_drag_begin_(DF_Regs *regs);
|
||||
#define df_drag_begin(...) df_drag_begin_(&(DF_Regs){df_regs_lit_init_top __VA_ARGS__})
|
||||
internal B32 df_drag_drop(void);
|
||||
internal void df_drag_begin(DF_DragDropPayload *payload);
|
||||
internal B32 df_drag_drop(DF_DragDropPayload *out_payload);
|
||||
internal void df_drag_kill(void);
|
||||
internal void df_queue_drag_drop(void);
|
||||
|
||||
@@ -1056,7 +1053,7 @@ internal DF_Window *df_window_open(Vec2F32 size, OS_Handle preferred_monitor, D_
|
||||
|
||||
internal DF_Window *df_window_from_os_handle(OS_Handle os);
|
||||
|
||||
internal void df_window_frame(MD_Node *window_cfg);
|
||||
internal void df_window_frame(Arena *arena, MD_Node *window_cfg);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Eval Viz
|
||||
@@ -1105,20 +1102,17 @@ internal String8 df_key_from_cfg_tree(Arena *arena, MD_Node *node);
|
||||
|
||||
//- rjf: config tree mutations
|
||||
internal DF_CfgSlot df_cfg_slot_from_tree(MD_Node *node);
|
||||
internal MD_Node *df_cfg_tree_store(MD_Node *parent, MD_Node *prev_child, String8 string);
|
||||
internal MD_Node *df_cfg_tree_storef(MD_Node *parent, MD_Node *prev_child, char *fmt, ...);
|
||||
internal MD_Node *df_cfg_tree_store(MD_Node *parent, MD_Node *replace_node, String8 string);
|
||||
internal MD_Node *df_cfg_tree_storef(MD_Node *parent, MD_Node *replace_node, char *fmt, ...);
|
||||
internal void df_cfg_tree_set_string(MD_Node *node, String8 string);
|
||||
internal void df_cfg_tree_set_stringf(MD_Node *node, char *fmt, ...);
|
||||
internal void df_cfg_tree_insert_child(MD_Node *parent, MD_Node *prev_child, MD_Node *node);
|
||||
internal void df_cfg_tree_release(MD_Node *node);
|
||||
#define df_cfg_tree_set_key(parent, key, val) df_cfg_tree_store((parent), md_child_from_string((parent), (key), 0), (val))
|
||||
#define df_cfg_tree_set_keyf(parent, key, fmt, ...) df_cfg_tree_storef((parent), md_child_from_string((parent), (key), 0), (fmt), __VA_ARGS__)
|
||||
#define df_cfg_tree_remove(node) df_cfg_tree_store((node)->parent, (node), str8_zero())
|
||||
|
||||
//- rjf: config tree lookups
|
||||
internal Axis2 df_split_axis_from_panel_cfg(MD_Node *panel);
|
||||
internal Rng2F32 df_target_rect_from_panel_child_cfg(Rng2F32 parent_rect, Axis2 parent_split_axis, MD_Node *panel);
|
||||
internal Rng2F32 df_target_rect_from_panel_cfg(Rng2F32 root_rect, MD_Node *panel);
|
||||
internal B32 df_tab_cfg_is_project_filtered(MD_Node *cfg);
|
||||
|
||||
//- rjf: keybindings
|
||||
internal void df_clear_bindings(void);
|
||||
|
||||
@@ -18,6 +18,55 @@ df_code_view_init(DF_CodeViewState *cv, DF_View *view)
|
||||
view->loading_t = view->loading_t_target = 1.f;
|
||||
}
|
||||
|
||||
internal void
|
||||
df_code_view_cmds(DF_View *view, DF_CodeViewState *cv, String8 text_data, TXT_TextInfo *text_info, DASM_LineArray *dasm_lines, Rng1U64 dasm_vaddr_range, DI_Key dasm_dbgi_key)
|
||||
{
|
||||
for(D_CmdNode *n = cmds->first; n != 0; n = n->next)
|
||||
{
|
||||
D_Cmd *cmd = &n->cmd;
|
||||
|
||||
// rjf: mismatched window/panel => skip
|
||||
if(!d_handle_match(d_regs()->window, cmd->params.window) ||
|
||||
!d_handle_match(d_regs()->panel, cmd->params.panel))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// rjf: process
|
||||
D_CmdKind core_cmd_kind = d_cmd_kind_from_string(cmd->spec->info.string);
|
||||
switch(core_cmd_kind)
|
||||
{
|
||||
default: break;
|
||||
case D_CmdKind_GoToLine:
|
||||
{
|
||||
cv->goto_line_num = cmd->params.text_point.line;
|
||||
}break;
|
||||
case D_CmdKind_CenterCursor:
|
||||
{
|
||||
cv->center_cursor = 1;
|
||||
}break;
|
||||
case D_CmdKind_ContainCursor:
|
||||
{
|
||||
cv->contain_cursor = 1;
|
||||
}break;
|
||||
case D_CmdKind_FindTextForward:
|
||||
{
|
||||
arena_clear(cv->find_text_arena);
|
||||
cv->find_text_fwd = push_str8_copy(cv->find_text_arena, cmd->params.string);
|
||||
}break;
|
||||
case D_CmdKind_FindTextBackward:
|
||||
{
|
||||
arena_clear(cv->find_text_arena);
|
||||
cv->find_text_bwd = push_str8_copy(cv->find_text_arena, cmd->params.string);
|
||||
}break;
|
||||
case D_CmdKind_ToggleWatchExpressionAtMouse:
|
||||
{
|
||||
cv->watch_expr_at_mouse = 1;
|
||||
}break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal DF_CodeViewBuildResult
|
||||
df_code_view_build(Arena *arena, DF_View *view, DF_CodeViewState *cv, DF_CodeViewBuildFlags flags, Rng2F32 rect, String8 text_data, TXT_TextInfo *text_info, DASM_LineArray *dasm_lines, Rng1U64 dasm_vaddr_range, DI_Key dasm_dbgi_key)
|
||||
{
|
||||
@@ -26,51 +75,6 @@ df_code_view_build(Arena *arena, DF_View *view, DF_CodeViewState *cv, DF_CodeVie
|
||||
HS_Scope *hs_scope = hs_scope_open();
|
||||
TXT_Scope *txt_scope = txt_scope_open();
|
||||
|
||||
//////////////////////////////
|
||||
//- rjf: process messages
|
||||
//
|
||||
for(DF_Msg *msg = 0; df_next_msg(&msg);)
|
||||
{
|
||||
// rjf: mismatched window/panel => skip
|
||||
if(!df_handle_match(df_regs()->window, msg->regs->window) ||
|
||||
!df_handle_match(df_regs()->panel, msg->regs->panel))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// rjf: process
|
||||
switch(msg->kind)
|
||||
{
|
||||
default: break;
|
||||
case DF_MsgKind_GoToLine:
|
||||
{
|
||||
cv->goto_line_num = msg->regs.cursor.line;
|
||||
}break;
|
||||
case DF_MsgKind_CenterCursor:
|
||||
{
|
||||
cv->center_cursor = 1;
|
||||
}break;
|
||||
case DF_MsgKind_ContainCursor:
|
||||
{
|
||||
cv->contain_cursor = 1;
|
||||
}break;
|
||||
case DF_MsgKind_FindTextForward:
|
||||
{
|
||||
arena_clear(cv->find_text_arena);
|
||||
cv->find_text_fwd = push_str8_copy(cv->find_text_arena, msg->regs->string);
|
||||
}break;
|
||||
case DF_MsgKind_FindTextBackward:
|
||||
{
|
||||
arena_clear(cv->find_text_arena);
|
||||
cv->find_text_bwd = push_str8_copy(cv->find_text_arena, msg->regs->string);
|
||||
}break;
|
||||
case DF_MsgKind_ToggleWatchExpressionAtMouse:
|
||||
{
|
||||
cv->watch_expr_at_mouse = 1;
|
||||
}break;
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
//- rjf: extract invariants
|
||||
//
|
||||
|
||||
@@ -155,6 +155,7 @@ struct DF_WatchViewState
|
||||
//~ rjf: Code View Functions
|
||||
|
||||
internal void df_code_view_init(DF_CodeViewState *cv, DF_View *view);
|
||||
internal void df_code_view_cmds(DF_View *view, DF_CodeViewState *cv, String8 text_data, TXT_TextInfo *text_info, DASM_LineArray *dasm_lines, Rng1U64 dasm_vaddr_range, DI_Key dasm_dbgi_key);
|
||||
internal DF_CodeViewBuildResult df_code_view_build(Arena *arena, DF_View *view, DF_CodeViewState *cv, DF_CodeViewBuildFlags flags, Rng2F32 rect, String8 text_data, TXT_TextInfo *text_info, DASM_LineArray *dasm_lines, Rng1U64 dasm_vaddr_range, DI_Key dasm_dbgi_key);
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//- GENERATED CODE
|
||||
|
||||
C_LINKAGE_BEGIN
|
||||
Rng1U64 df_reg_slot_range_table[29] =
|
||||
Rng1U64 df_reg_slot_range_table[30] =
|
||||
{
|
||||
{0},
|
||||
{OffsetOf(DF_Regs, machine_id), OffsetOf(DF_Regs, machine_id) + sizeof(CTRL_MachineID)},
|
||||
@@ -13,10 +13,11 @@ Rng1U64 df_reg_slot_range_table[29] =
|
||||
{OffsetOf(DF_Regs, thread), OffsetOf(DF_Regs, thread) + sizeof(DMN_Handle)},
|
||||
{OffsetOf(DF_Regs, window), OffsetOf(DF_Regs, window) + sizeof(DF_Handle)},
|
||||
{OffsetOf(DF_Regs, panel), OffsetOf(DF_Regs, panel) + sizeof(DF_Handle)},
|
||||
{OffsetOf(DF_Regs, tab), OffsetOf(DF_Regs, tab) + sizeof(DF_Handle)},
|
||||
{OffsetOf(DF_Regs, view), OffsetOf(DF_Regs, view) + sizeof(DF_Handle)},
|
||||
{OffsetOf(DF_Regs, prev_view), OffsetOf(DF_Regs, prev_view) + sizeof(DF_Handle)},
|
||||
{OffsetOf(DF_Regs, dst_panel), OffsetOf(DF_Regs, dst_panel) + sizeof(DF_Handle)},
|
||||
{OffsetOf(DF_Regs, cfg_tree), OffsetOf(DF_Regs, cfg_tree) + sizeof(DF_Handle)},
|
||||
{OffsetOf(DF_Regs, cfg_tree_list), OffsetOf(DF_Regs, cfg_tree_list) + sizeof(DF_HandleList)},
|
||||
{OffsetOf(DF_Regs, prev_cfg_child), OffsetOf(DF_Regs, prev_cfg_child) + sizeof(DF_Handle)},
|
||||
{OffsetOf(DF_Regs, unwind_count), OffsetOf(DF_Regs, unwind_count) + sizeof(U64)},
|
||||
{OffsetOf(DF_Regs, inline_depth), OffsetOf(DF_Regs, inline_depth) + sizeof(U64)},
|
||||
{OffsetOf(DF_Regs, file_path), OffsetOf(DF_Regs, file_path) + sizeof(String8)},
|
||||
@@ -37,7 +38,7 @@ Rng1U64 df_reg_slot_range_table[29] =
|
||||
{OffsetOf(DF_Regs, os_event), OffsetOf(DF_Regs, os_event) + sizeof(OS_Event *)},
|
||||
};
|
||||
|
||||
DF_MsgKindInfo df_msg_kind_info_table[135] =
|
||||
DF_MsgKindInfo df_msg_kind_info_table[134] =
|
||||
{
|
||||
{0},
|
||||
{str8_lit_comp("exit"), str8_lit_comp("Exit"), str8_lit_comp(""), str8_lit_comp("Exit"), ((0*DF_MsgKindFlag_ListInUI)|(0*DF_MsgKindFlag_ListInIPCDocs)), {(0*DF_MsgQueryFlag_AllowFiles)|(0*DF_MsgQueryFlag_AllowFolders)|(0*DF_MsgQueryFlag_KeepOldInput)|(0*DF_MsgQueryFlag_SelectOldInput)|(0*DF_MsgQueryFlag_CodeInput)|(0*DF_MsgQueryFlag_Required), D_RegSlot_Null, D_EntityKind_Nil}},
|
||||
@@ -105,7 +106,6 @@ DF_MsgKindInfo df_msg_kind_info_table[135] =
|
||||
{str8_lit_comp("focus_panel_down"), str8_lit_comp("FocusPanelDown"), str8_lit_comp(""), str8_lit_comp("FocusPanelDown"), ((0*DF_MsgKindFlag_ListInUI)|(0*DF_MsgKindFlag_ListInIPCDocs)), {(0*DF_MsgQueryFlag_AllowFiles)|(0*DF_MsgQueryFlag_AllowFolders)|(0*DF_MsgQueryFlag_KeepOldInput)|(0*DF_MsgQueryFlag_SelectOldInput)|(0*DF_MsgQueryFlag_CodeInput)|(0*DF_MsgQueryFlag_Required), D_RegSlot_Null, D_EntityKind_Nil}},
|
||||
{str8_lit_comp("go_back"), str8_lit_comp("GoBack"), str8_lit_comp(""), str8_lit_comp("GoBack"), ((0*DF_MsgKindFlag_ListInUI)|(0*DF_MsgKindFlag_ListInIPCDocs)), {(0*DF_MsgQueryFlag_AllowFiles)|(0*DF_MsgQueryFlag_AllowFolders)|(0*DF_MsgQueryFlag_KeepOldInput)|(0*DF_MsgQueryFlag_SelectOldInput)|(0*DF_MsgQueryFlag_CodeInput)|(0*DF_MsgQueryFlag_Required), D_RegSlot_Null, D_EntityKind_Nil}},
|
||||
{str8_lit_comp("go_forward"), str8_lit_comp("GoForward"), str8_lit_comp(""), str8_lit_comp("GoForward"), ((0*DF_MsgKindFlag_ListInUI)|(0*DF_MsgKindFlag_ListInIPCDocs)), {(0*DF_MsgQueryFlag_AllowFiles)|(0*DF_MsgQueryFlag_AllowFolders)|(0*DF_MsgQueryFlag_KeepOldInput)|(0*DF_MsgQueryFlag_SelectOldInput)|(0*DF_MsgQueryFlag_CodeInput)|(0*DF_MsgQueryFlag_Required), D_RegSlot_Null, D_EntityKind_Nil}},
|
||||
{str8_lit_comp("select_tab"), str8_lit_comp("SelectTab"), str8_lit_comp(""), str8_lit_comp("SelectTab"), ((0*DF_MsgKindFlag_ListInUI)|(0*DF_MsgKindFlag_ListInIPCDocs)), {(0*DF_MsgQueryFlag_AllowFiles)|(0*DF_MsgQueryFlag_AllowFolders)|(0*DF_MsgQueryFlag_KeepOldInput)|(0*DF_MsgQueryFlag_SelectOldInput)|(0*DF_MsgQueryFlag_CodeInput)|(0*DF_MsgQueryFlag_Required), D_RegSlot_Null, D_EntityKind_Nil}},
|
||||
{str8_lit_comp("next_tab"), str8_lit_comp("NextTab"), str8_lit_comp(""), str8_lit_comp("NextTab"), ((0*DF_MsgKindFlag_ListInUI)|(0*DF_MsgKindFlag_ListInIPCDocs)), {(0*DF_MsgQueryFlag_AllowFiles)|(0*DF_MsgQueryFlag_AllowFolders)|(0*DF_MsgQueryFlag_KeepOldInput)|(0*DF_MsgQueryFlag_SelectOldInput)|(0*DF_MsgQueryFlag_CodeInput)|(0*DF_MsgQueryFlag_Required), D_RegSlot_Null, D_EntityKind_Nil}},
|
||||
{str8_lit_comp("prev_tab"), str8_lit_comp("PrevTab"), str8_lit_comp(""), str8_lit_comp("PrevTab"), ((0*DF_MsgKindFlag_ListInUI)|(0*DF_MsgKindFlag_ListInIPCDocs)), {(0*DF_MsgQueryFlag_AllowFiles)|(0*DF_MsgQueryFlag_AllowFolders)|(0*DF_MsgQueryFlag_KeepOldInput)|(0*DF_MsgQueryFlag_SelectOldInput)|(0*DF_MsgQueryFlag_CodeInput)|(0*DF_MsgQueryFlag_Required), D_RegSlot_Null, D_EntityKind_Nil}},
|
||||
{str8_lit_comp("move_tab_right"), str8_lit_comp("MoveTabRight"), str8_lit_comp(""), str8_lit_comp("MoveTabRight"), ((0*DF_MsgKindFlag_ListInUI)|(0*DF_MsgKindFlag_ListInIPCDocs)), {(0*DF_MsgQueryFlag_AllowFiles)|(0*DF_MsgQueryFlag_AllowFolders)|(0*DF_MsgQueryFlag_KeepOldInput)|(0*DF_MsgQueryFlag_SelectOldInput)|(0*DF_MsgQueryFlag_CodeInput)|(0*DF_MsgQueryFlag_Required), D_RegSlot_Null, D_EntityKind_Nil}},
|
||||
|
||||
@@ -15,10 +15,11 @@ DF_RegSlot_Module,
|
||||
DF_RegSlot_Thread,
|
||||
DF_RegSlot_Window,
|
||||
DF_RegSlot_Panel,
|
||||
DF_RegSlot_Tab,
|
||||
DF_RegSlot_View,
|
||||
DF_RegSlot_PrevView,
|
||||
DF_RegSlot_DstPanel,
|
||||
DF_RegSlot_CfgTree,
|
||||
DF_RegSlot_CfgTreeList,
|
||||
DF_RegSlot_PrevCfgChild,
|
||||
DF_RegSlot_UnwindCount,
|
||||
DF_RegSlot_InlineDepth,
|
||||
DF_RegSlot_FilePath,
|
||||
@@ -143,7 +144,6 @@ DF_MsgKind_FocusPanelUp,
|
||||
DF_MsgKind_FocusPanelDown,
|
||||
DF_MsgKind_GoBack,
|
||||
DF_MsgKind_GoForward,
|
||||
DF_MsgKind_SelectTab,
|
||||
DF_MsgKind_NextTab,
|
||||
DF_MsgKind_PrevTab,
|
||||
DF_MsgKind_MoveTabRight,
|
||||
@@ -454,10 +454,11 @@ DMN_Handle module;
|
||||
DMN_Handle thread;
|
||||
DF_Handle window;
|
||||
DF_Handle panel;
|
||||
DF_Handle tab;
|
||||
DF_Handle view;
|
||||
DF_Handle prev_view;
|
||||
DF_Handle dst_panel;
|
||||
DF_Handle cfg_tree;
|
||||
DF_HandleList cfg_tree_list;
|
||||
DF_Handle prev_cfg_child;
|
||||
U64 unwind_count;
|
||||
U64 inline_depth;
|
||||
String8 file_path;
|
||||
@@ -485,10 +486,11 @@ OS_Event * os_event;
|
||||
.thread = df_regs()->thread,\
|
||||
.window = df_regs()->window,\
|
||||
.panel = df_regs()->panel,\
|
||||
.tab = df_regs()->tab,\
|
||||
.view = df_regs()->view,\
|
||||
.prev_view = df_regs()->prev_view,\
|
||||
.dst_panel = df_regs()->dst_panel,\
|
||||
.cfg_tree = df_regs()->cfg_tree,\
|
||||
.cfg_tree_list = df_regs()->cfg_tree_list,\
|
||||
.prev_cfg_child = df_regs()->prev_cfg_child,\
|
||||
.unwind_count = df_regs()->unwind_count,\
|
||||
.inline_depth = df_regs()->inline_depth,\
|
||||
.file_path = df_regs()->file_path,\
|
||||
@@ -621,8 +623,8 @@ DF_VIEW_RULE_LINE_STRINGIZE_FUNCTION_DEF(no_addr);
|
||||
DF_VIEW_RULE_ROW_UI_FUNCTION_DEF(checkbox);
|
||||
DF_VIEW_RULE_ROW_UI_FUNCTION_DEF(color_rgba);
|
||||
C_LINKAGE_BEGIN
|
||||
extern Rng1U64 df_reg_slot_range_table[29];
|
||||
extern DF_MsgKindInfo df_msg_kind_info_table[135];
|
||||
extern Rng1U64 df_reg_slot_range_table[30];
|
||||
extern DF_MsgKindInfo df_msg_kind_info_table[134];
|
||||
extern DF_StringBindingPair df_g_default_binding_table[110];
|
||||
extern String8 df_g_binding_version_remap_old_name_table[7];
|
||||
extern String8 df_g_binding_version_remap_new_name_table[7];
|
||||
|
||||
Reference in New Issue
Block a user