mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-07-09 11:01:37 -07:00
more convergence
This commit is contained in:
@@ -1400,6 +1400,7 @@ ctrl_stored_hash_from_process_vaddr_range(CTRL_Handle process, Rng1U64 range, B3
|
||||
|
||||
//- rjf: try to read from cache
|
||||
B32 is_good = 0;
|
||||
B32 process_node_exists = 0;
|
||||
B32 is_stale = 1;
|
||||
OS_MutexScopeR(process_stripe->rw_mutex)
|
||||
{
|
||||
@@ -1407,6 +1408,7 @@ ctrl_stored_hash_from_process_vaddr_range(CTRL_Handle process, Rng1U64 range, B3
|
||||
{
|
||||
if(ctrl_handle_match(n->handle, process))
|
||||
{
|
||||
process_node_exists = 1;
|
||||
U64 range_slot_idx = range_hash%n->range_hash_slots_count;
|
||||
CTRL_ProcessMemoryRangeHashSlot *range_slot = &n->range_hash_slots[range_slot_idx];
|
||||
for(CTRL_ProcessMemoryRangeHashNode *range_n = range_slot->first; range_n != 0; range_n = range_n->next)
|
||||
@@ -1425,7 +1427,7 @@ ctrl_stored_hash_from_process_vaddr_range(CTRL_Handle process, Rng1U64 range, B3
|
||||
}
|
||||
|
||||
//- rjf: not good -> create process cache node if necessary
|
||||
if(!is_good)
|
||||
if(!is_good && !process_node_exists)
|
||||
{
|
||||
OS_MutexScopeW(process_stripe->rw_mutex)
|
||||
{
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
//- GENERATED CODE
|
||||
|
||||
C_LINKAGE_BEGIN
|
||||
RD_VocabInfo rd_vocab_info_table[294] =
|
||||
RD_VocabInfo rd_vocab_info_table[296] =
|
||||
{
|
||||
{str8_lit_comp("auto_view_rule"), str8_lit_comp("auto_view_rules"), str8_lit_comp("Auto View Rule"), str8_lit_comp("Auto View Rules"), RD_IconKind_Binoculars},
|
||||
{str8_lit_comp("file_path_map"), str8_lit_comp("file_path_maps"), str8_lit_comp("File Path Map"), str8_lit_comp("File Path Maps"), RD_IconKind_FileOutline},
|
||||
@@ -125,10 +125,12 @@ RD_VocabInfo rd_vocab_info_table[294] =
|
||||
{str8_lit_comp("open_lister"), str8_lit_comp(""), str8_lit_comp("Open Lister"), str8_lit_comp(""), RD_IconKind_Null},
|
||||
{str8_lit_comp("run_command"), str8_lit_comp(""), str8_lit_comp("Run Command"), str8_lit_comp(""), RD_IconKind_Null},
|
||||
{str8_lit_comp("os_event"), str8_lit_comp(""), str8_lit_comp("OS Event"), str8_lit_comp(""), RD_IconKind_Null},
|
||||
{str8_lit_comp("select_thread"), str8_lit_comp(""), str8_lit_comp("Select Thread"), str8_lit_comp(""), RD_IconKind_Null},
|
||||
{str8_lit_comp("select_thread"), str8_lit_comp(""), str8_lit_comp("Select Thread"), str8_lit_comp(""), RD_IconKind_Thread},
|
||||
{str8_lit_comp("select_unwind"), str8_lit_comp(""), str8_lit_comp("Select Unwind"), str8_lit_comp(""), RD_IconKind_Null},
|
||||
{str8_lit_comp("up_one_frame"), str8_lit_comp(""), str8_lit_comp("Up One Frame"), str8_lit_comp(""), RD_IconKind_UpArrow},
|
||||
{str8_lit_comp("down_one_frame"), str8_lit_comp(""), str8_lit_comp("Down One Frame"), str8_lit_comp(""), RD_IconKind_DownArrow},
|
||||
{str8_lit_comp("select_entity"), str8_lit_comp(""), str8_lit_comp("Select Entity"), str8_lit_comp(""), RD_IconKind_RadioHollow},
|
||||
{str8_lit_comp("deselect_entity"), str8_lit_comp(""), str8_lit_comp("Deselect Entity"), str8_lit_comp(""), RD_IconKind_RadioFilled},
|
||||
{str8_lit_comp("inc_ui_font_scale"), str8_lit_comp(""), str8_lit_comp("Increase UI Font Scale"), str8_lit_comp(""), RD_IconKind_Null},
|
||||
{str8_lit_comp("dec_ui_font_scale"), str8_lit_comp(""), str8_lit_comp("Decrease UI Font Scale"), str8_lit_comp(""), RD_IconKind_Null},
|
||||
{str8_lit_comp("inc_code_font_scale"), str8_lit_comp(""), str8_lit_comp("Increase Code Font Scale"), str8_lit_comp(""), RD_IconKind_Null},
|
||||
@@ -362,7 +364,7 @@ Rng1U64 rd_reg_slot_range_table[40] =
|
||||
{OffsetOf(RD_Regs, os_event), OffsetOf(RD_Regs, os_event) + sizeof(OS_Event *)},
|
||||
};
|
||||
|
||||
RD_CmdKindInfo rd_cmd_kind_info_table[212] =
|
||||
RD_CmdKindInfo rd_cmd_kind_info_table[214] =
|
||||
{
|
||||
{0},
|
||||
{ str8_lit_comp("launch_and_run"), str8_lit_comp("Starts debugging a new instance of a target, then runs."), str8_lit_comp("launch,start,run,target"), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*1)|(RD_QueryFlag_Required*1), RD_RegSlot_Cfg, str8_lit_comp("query:targets"), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
@@ -401,10 +403,12 @@ RD_CmdKindInfo rd_cmd_kind_info_table[212] =
|
||||
{ str8_lit_comp("open_lister"), str8_lit_comp("Opens the lister."), str8_lit_comp("help,cmd"), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp("query:lister"), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("run_command"), str8_lit_comp("Runs a command from the command palette."), str8_lit_comp("help,cmd"), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*1)|(RD_QueryFlag_Required*1), RD_RegSlot_CmdName, str8_lit_comp("query:commands"), str8_lit_comp("commands"), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("os_event"), str8_lit_comp(""), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("select_thread"), str8_lit_comp("Selects a thread."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*1)|(RD_QueryFlag_Required*1), RD_RegSlot_Thread, str8_lit_comp("query:threads"), str8_lit_comp(""), CTRL_EntityKind_Thread}},
|
||||
{ str8_lit_comp("select_unwind"), str8_lit_comp("Selects an unwind frame number for the selected thread."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp("query:call_stack"), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("select_thread"), str8_lit_comp("Selects a thread."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*1)|(RD_QueryFlag_Required*1), RD_RegSlot_Thread, str8_lit_comp("query:threads"), str8_lit_comp(""), CTRL_EntityKind_Thread}},
|
||||
{ str8_lit_comp("select_unwind"), str8_lit_comp("Selects an unwind frame number for the selected thread."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp("query:call_stack"), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("up_one_frame"), str8_lit_comp("Selects the call stack frame above the currently selected."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("down_one_frame"), str8_lit_comp("Selects the call stack frame below the currently selected."), str8_lit_comp("callstack,unwind"), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("select_entity"), str8_lit_comp("Selects a control entity."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("deselect_entity"), str8_lit_comp("Deselects a control entity."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("inc_ui_font_scale"), str8_lit_comp("Increases the font size used for UI."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("dec_ui_font_scale"), str8_lit_comp("Decreases the font size used for UI."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("inc_code_font_scale"), str8_lit_comp("Increases the font size used for code."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*1)|(RD_CmdKindFlag_ListInIPCDocs*1), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
@@ -522,7 +526,7 @@ RD_CmdKindInfo rd_cmd_kind_info_table[212] =
|
||||
{ str8_lit_comp("enable_cfg"), str8_lit_comp("Enables a config tree."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("disable_cfg"), str8_lit_comp("Disables a config tree."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("select_cfg"), str8_lit_comp("Selects a config tree, disabling all others of the same kind."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("deselect_cfg"), str8_lit_comp("Deselects a config tree, disabling all others of the same kind."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("deselect_cfg"), str8_lit_comp("Deselects a config tree."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("remove_cfg"), str8_lit_comp("Removes a config tree."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("name_cfg"), str8_lit_comp("Equips a config tree with a label."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
{ str8_lit_comp("condition_cfg"), str8_lit_comp("Equips a config tree with a condition string."), str8_lit_comp(""), str8_lit_comp(""), (RD_CmdKindFlag_ListInUI*0)|(RD_CmdKindFlag_ListInIPCDocs*0), {(RD_QueryFlag_AllowFiles*0)|(RD_QueryFlag_AllowFolders*0)|(RD_QueryFlag_CodeInput*0)|(RD_QueryFlag_KeepOldInput*0)|(RD_QueryFlag_SelectOldInput*0)|(RD_QueryFlag_Floating*0)|(RD_QueryFlag_Required*0), RD_RegSlot_Null, str8_lit_comp(""), str8_lit_comp(""), CTRL_EntityKind_Null}},
|
||||
|
||||
@@ -94,6 +94,8 @@ RD_CmdKind_SelectThread,
|
||||
RD_CmdKind_SelectUnwind,
|
||||
RD_CmdKind_UpOneFrame,
|
||||
RD_CmdKind_DownOneFrame,
|
||||
RD_CmdKind_SelectEntity,
|
||||
RD_CmdKind_DeselectEntity,
|
||||
RD_CmdKind_IncUIFontScale,
|
||||
RD_CmdKind_DecUIFontScale,
|
||||
RD_CmdKind_IncCodeFontScale,
|
||||
@@ -630,7 +632,7 @@ RD_Query query;
|
||||
.os_event = rd_regs()->os_event,\
|
||||
|
||||
C_LINKAGE_BEGIN
|
||||
extern RD_VocabInfo rd_vocab_info_table[294];
|
||||
extern RD_VocabInfo rd_vocab_info_table[296];
|
||||
extern RD_NameSchemaInfo rd_name_schema_info_table[12];
|
||||
extern Rng1U64 rd_reg_slot_range_table[40];
|
||||
extern String8 rd_binding_version_remap_old_name_table[8];
|
||||
|
||||
@@ -368,10 +368,12 @@ RD_CmdTable: // | | | |
|
||||
{OSEvent 0 0 "" Null null Nil Null 0 0 0 0 0 0 0 Null "os_event" "OS Event" "" "" "" }
|
||||
|
||||
//- rjf: thread/frame selection
|
||||
{SelectThread 1 1 "query:threads" Thread null Nil Thread 0 0 0 0 0 1 1 Null "select_thread" "Select Thread" "Selects a thread." "" "" }
|
||||
{SelectUnwind 1 1 "query:call_stack" Null null Nil Null 0 0 0 0 0 0 0 Null "select_unwind" "Select Unwind" "Selects an unwind frame number for the selected thread." "" "" }
|
||||
{SelectThread 0 1 "query:threads" Thread null Nil Thread 0 0 0 0 0 1 1 Thread "select_thread" "Select Thread" "Selects a thread." "" "" }
|
||||
{SelectUnwind 0 1 "query:call_stack" Null null Nil Null 0 0 0 0 0 0 0 Null "select_unwind" "Select Unwind" "Selects an unwind frame number for the selected thread." "" "" }
|
||||
{UpOneFrame 1 1 "" Null null Nil Null 0 0 0 0 0 0 0 UpArrow "up_one_frame" "Up One Frame" "Selects the call stack frame above the currently selected." "" "" }
|
||||
{DownOneFrame 1 1 "" Null null Nil Null 0 0 0 0 0 0 0 DownArrow "down_one_frame" "Down One Frame" "Selects the call stack frame below the currently selected." "callstack,unwind" "" }
|
||||
{SelectEntity 0 0 "" Null null Nil Null 0 0 0 0 0 0 0 RadioHollow "select_entity" "Select Entity" "Selects a control entity." "" "" }
|
||||
{DeselectEntity 0 0 "" Null null Nil Null 0 0 0 0 0 0 0 RadioFilled "deselect_entity" "Deselect Entity" "Deselects a control entity." "" "" }
|
||||
|
||||
//- rjf: font sizes
|
||||
{IncUIFontScale 1 1 "" Null null Nil Null 0 0 0 0 0 0 0 Null "inc_ui_font_scale" "Increase UI Font Scale" "Increases the font size used for UI." "" "" }
|
||||
@@ -537,7 +539,7 @@ RD_CmdTable: // | | | |
|
||||
{EnableCfg 0 0 "" Null null Nil Null 0 0 0 0 0 0 0 CheckHollow "enable_cfg" "Enable Config Tree" "Enables a config tree." "" "" }
|
||||
{DisableCfg 0 0 "" Null null Nil Null 0 0 0 0 0 0 0 CheckFilled "disable_cfg" "Disable Config Tree" "Disables a config tree." "" "" }
|
||||
{SelectCfg 0 0 "" Null null Nil Null 0 0 0 0 0 0 0 RadioHollow "select_cfg" "Select Config Tree" "Selects a config tree, disabling all others of the same kind." "" "" }
|
||||
{DeselectCfg 0 0 "" Null null Nil Null 0 0 0 0 0 0 0 RadioFilled "deselect_cfg" "Deselect Config Tree" "Deselects a config tree, disabling all others of the same kind." "" "" }
|
||||
{DeselectCfg 0 0 "" Null null Nil Null 0 0 0 0 0 0 0 RadioFilled "deselect_cfg" "Deselect Config Tree" "Deselects a config tree." "" "" }
|
||||
{RemoveCfg 0 0 "" Null null Nil Null 0 0 0 0 0 0 0 Trash "remove_cfg" "Remove Config Tree" "Removes a config tree." "" "" }
|
||||
{NameCfg 0 0 "" Null null Nil Null 0 0 0 0 0 0 0 Null "name_cfg" "Name Config Tree" "Equips a config tree with a label." "" "" }
|
||||
{ConditionCfg 0 0 "" Null null Nil Null 0 0 0 0 0 0 0 Null "condition_cfg" "Condition Config Tree" "Equips a config tree with a condition string." "" "" }
|
||||
|
||||
+124
-100
@@ -396,7 +396,9 @@ E_LOOKUP_RANGE_FUNCTION_DEF(cfg)
|
||||
U64 read_count = dim_1u64(read_range);
|
||||
for(U64 idx = 0; idx < read_count; idx += 1, dst_idx += 1)
|
||||
{
|
||||
exprs[dst_idx] = e_expr_irext_array_index(arena, lhs, &lhs_irtree, idx + read_range.min - cfgs_idx_range.min);
|
||||
RD_Cfg *cfg = accel->cfgs.v[idx + read_range.min - cfgs_idx_range.min];
|
||||
exprs[dst_idx] = e_push_expr(arena, E_ExprKind_LeafIdent, 0);
|
||||
exprs[dst_idx]->string = push_str8f(arena, "$%I64d", cfg->id);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -836,6 +838,20 @@ E_LOOKUP_ACCESS_FUNCTION_DEF(ctrl_entities)
|
||||
return result;
|
||||
}
|
||||
|
||||
E_LOOKUP_RANGE_FUNCTION_DEF(ctrl_entities)
|
||||
{
|
||||
CTRL_EntityArray *entities = (CTRL_EntityArray *)user_data;
|
||||
Rng1U64 legal_range = r1u64(0, entities->count);
|
||||
Rng1U64 read_range = intersect_1u64(legal_range, idx_range);
|
||||
U64 read_count = dim_1u64(read_range);
|
||||
for(U64 out_idx = 0; out_idx < read_count; out_idx += 1)
|
||||
{
|
||||
CTRL_Entity *entity = entities->v[out_idx + read_range.min];
|
||||
exprs[out_idx] = e_push_expr(arena, E_ExprKind_LeafIdent, 0);
|
||||
exprs[out_idx]->string = ctrl_string_from_handle(arena, entity->handle);
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Debug Info Tables Eval Hooks
|
||||
|
||||
@@ -3314,7 +3330,6 @@ rd_view_state_from_cfg(RD_Cfg *cfg)
|
||||
view_state->arena = arena_alloc();
|
||||
view_state->arena_reset_pos = arena_pos(view_state->arena);
|
||||
view_state->ev_view = ev_view_alloc();
|
||||
view_state->search_arena = arena_alloc();
|
||||
}
|
||||
if(view_state != &rd_nil_view_state)
|
||||
{
|
||||
@@ -3333,21 +3348,29 @@ rd_view_ui(Rng2F32 rect)
|
||||
String8 expr_string = rd_expr_from_cfg(view);
|
||||
|
||||
//////////////////////////////
|
||||
//- rjf: searching extension
|
||||
//- rjf: query extension
|
||||
//
|
||||
B32 search_row_is_open = (vs->is_searching || vs->search_string_size != 0);
|
||||
RD_Cfg *query_root = rd_cfg_child_from_string(view, str8_lit("query"));
|
||||
RD_Cfg *input_root = rd_cfg_child_from_string(query_root, str8_lit("input"));
|
||||
RD_Cfg *cmd_root = rd_cfg_child_from_string(query_root, str8_lit("cmd"));
|
||||
String8 current_input = input_root->first->string;
|
||||
B32 search_row_is_open = (vs->query_is_selected || current_input.size != 0);
|
||||
F32 search_row_open_t = ui_anim(ui_key_from_stringf(ui_key_zero(), "search_row_open_%p", view), (F32)!!search_row_is_open, .initial = (F32)!!search_row_is_open);
|
||||
if(search_row_open_t > 0.001f)
|
||||
{
|
||||
String8 cmd_name = vs->search_cmd_name;
|
||||
String8 cmd_name = cmd_root->first->string;
|
||||
RD_IconKind icon = rd_icon_kind_from_code_name(cmd_name);
|
||||
RD_CmdKindInfo *cmd_kind_info = rd_cmd_kind_info_from_string(cmd_name);
|
||||
|
||||
//- rjf: store cfg's string into view's
|
||||
vs->query_string_size = Min(sizeof(vs->query_buffer), current_input.size);
|
||||
MemoryCopy(vs->query_buffer, current_input.str, vs->query_string_size);
|
||||
|
||||
//- rjf: clamp cursor
|
||||
if(vs->search_cursor.column == 0)
|
||||
if(vs->query_cursor.column == 0)
|
||||
{
|
||||
vs->search_mark = txt_pt(1, 1);
|
||||
vs->search_cursor = txt_pt(1, vs->search_string_size+1);
|
||||
vs->query_mark = txt_pt(1, 1);
|
||||
vs->query_cursor = txt_pt(1, vs->query_string_size+1);
|
||||
}
|
||||
|
||||
//- rjf: determine dimensions
|
||||
@@ -3365,7 +3388,7 @@ rd_view_ui(Rng2F32 rect)
|
||||
}
|
||||
|
||||
//- rjf: build contents
|
||||
UI_Parent(search_row) UI_WidthFill UI_HeightFill UI_Focus(vs->is_searching ? UI_FocusKind_On : UI_FocusKind_Off)
|
||||
UI_Parent(search_row) UI_WidthFill UI_HeightFill UI_Focus(vs->query_is_selected ? UI_FocusKind_On : UI_FocusKind_Off)
|
||||
RD_Font(cmd_kind_info->query.flags & RD_QueryFlag_CodeInput ? RD_FontSlot_Code : RD_FontSlot_Main)
|
||||
{
|
||||
UI_TextAlignment(UI_TextAlign_Center)
|
||||
@@ -3382,23 +3405,27 @@ rd_view_ui(Rng2F32 rect)
|
||||
{
|
||||
params.flags |= !!(cmd_kind_info->query.flags & RD_QueryFlag_CodeInput) * RD_LineEditFlag_CodeContents;
|
||||
params.flags |= RD_LineEditFlag_Border;
|
||||
params.cursor = &vs->search_cursor;
|
||||
params.mark = &vs->search_mark;
|
||||
params.edit_buffer = vs->search_buffer;
|
||||
params.edit_string_size_out = &vs->search_string_size;
|
||||
params.edit_buffer_size = sizeof(vs->search_buffer);
|
||||
params.pre_edit_value = str8(vs->search_buffer, vs->search_string_size);
|
||||
params.cursor = &vs->query_cursor;
|
||||
params.mark = &vs->query_mark;
|
||||
params.edit_buffer = vs->query_buffer;
|
||||
params.edit_string_size_out = &vs->query_string_size;
|
||||
params.edit_buffer_size = sizeof(vs->query_buffer);
|
||||
params.pre_edit_value = current_input;
|
||||
}
|
||||
UI_Signal sig = rd_line_editf(¶ms, "###search");
|
||||
if(ui_pressed(sig))
|
||||
{
|
||||
vs->is_searching = 1;
|
||||
vs->query_is_selected = 1;
|
||||
rd_cmd(RD_CmdKind_FocusPanel);
|
||||
}
|
||||
}
|
||||
|
||||
//- rjf: commit string to view
|
||||
RD_Cfg *search = rd_cfg_child_from_string_or_alloc(view, str8_lit("search"));
|
||||
rd_cfg_new_replace(search, str8(vs->search_buffer, vs->search_string_size));
|
||||
if(input_root == &rd_nil_cfg)
|
||||
{
|
||||
input_root = rd_cfg_child_from_string_or_alloc(query_root, str8_lit("input"));
|
||||
}
|
||||
rd_cfg_new_replace(input_root, str8(vs->query_buffer, vs->query_string_size));
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
@@ -3691,7 +3718,7 @@ rd_view_ui(Rng2F32 rect)
|
||||
S64 num_possible_visible_rows = (S64)(dim_2f32(rect).y/row_height_px);
|
||||
F32 row_string_max_size_px = dim_2f32(rect).x;
|
||||
EV_StringFlags string_flags = EV_StringFlag_ReadOnlyDisplayRules;
|
||||
String8 filter = rd_view_search();
|
||||
String8 filter = rd_view_query_input();
|
||||
Vec4F32 pop_background_rgba = {0};
|
||||
UI_TagF("pop") pop_background_rgba = ui_color_from_name(str8_lit("background"));
|
||||
|
||||
@@ -3720,16 +3747,35 @@ rd_view_ui(Rng2F32 rect)
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
//- rjf: process commands
|
||||
//
|
||||
for(RD_Cmd *cmd = 0; rd_next_view_cmd(&cmd);)
|
||||
{
|
||||
RD_CmdKind kind = rd_cmd_kind_from_string(cmd->name);
|
||||
switch(kind)
|
||||
{
|
||||
default:{}break;
|
||||
case RD_CmdKind_Search:
|
||||
case RD_CmdKind_SearchBackwards:
|
||||
{
|
||||
vs->query_is_selected = 0;
|
||||
}break;
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////
|
||||
//- rjf: consume query-completion events, if this view is being used as a query
|
||||
//
|
||||
if(vs->is_searching &&
|
||||
#if 0
|
||||
if(vs->query_is_selected &&
|
||||
ui_is_focus_active() &&
|
||||
ui_slot_press(UI_EventActionSlot_Accept))
|
||||
{
|
||||
// TODO(rjf): // TODO(rjf): // TODO(rjf): // TODO(rjf): // TODO(rjf):
|
||||
// TODO(rjf): // TODO(rjf): // TODO(rjf): // TODO(rjf): // TODO(rjf):
|
||||
}
|
||||
#endif
|
||||
|
||||
//////////////////////////////
|
||||
//- rjf: consume events & perform navigations/edits - calculate state
|
||||
@@ -5159,7 +5205,7 @@ rd_view_ui(Rng2F32 rect)
|
||||
{
|
||||
searched_string = dr_string_from_fstrs(scratch.arena, &cell_info.fstrs);
|
||||
}
|
||||
String8 search_query = rd_view_search();
|
||||
String8 search_query = rd_view_query_input();
|
||||
FuzzyMatchRangeList fuzzy_matches = fuzzy_match_find(scratch.arena, search_query, searched_string);
|
||||
if(fuzzy_matches.count == 0)
|
||||
{
|
||||
@@ -5582,12 +5628,12 @@ rd_view_ui(Rng2F32 rect)
|
||||
////////////////////////////
|
||||
//- rjf: catchall query completion controls
|
||||
//
|
||||
if(vs->is_searching) UI_Focus(UI_FocusKind_On)
|
||||
if(vs->query_is_selected) UI_Focus(UI_FocusKind_On)
|
||||
{
|
||||
if(ui_is_focus_active() && ui_slot_press(UI_EventActionSlot_Cancel))
|
||||
{
|
||||
vs->is_searching = 0;
|
||||
vs->search_string_size = 0;
|
||||
vs->query_is_selected = 0;
|
||||
vs->query_string_size = 0;
|
||||
}
|
||||
if(ui_is_focus_active() && ui_slot_press(UI_EventActionSlot_Accept))
|
||||
{
|
||||
@@ -5629,12 +5675,23 @@ rd_view_eval_view(void)
|
||||
}
|
||||
|
||||
internal String8
|
||||
rd_view_search(void)
|
||||
rd_view_query_cmd(void)
|
||||
{
|
||||
RD_Cfg *view = rd_cfg_from_id(rd_regs()->view);
|
||||
RD_Cfg *search = rd_cfg_child_from_string(view, str8_lit("search"));
|
||||
String8 search_string = search->first->string;
|
||||
return search_string;
|
||||
RD_Cfg *query = rd_cfg_child_from_string(view, str8_lit("query"));
|
||||
RD_Cfg *cmd = rd_cfg_child_from_string(query, str8_lit("cmd"));
|
||||
String8 string = cmd->first->string;
|
||||
return string;
|
||||
}
|
||||
|
||||
internal String8
|
||||
rd_view_query_input(void)
|
||||
{
|
||||
RD_Cfg *view = rd_cfg_from_id(rd_regs()->view);
|
||||
RD_Cfg *query = rd_cfg_child_from_string(view, str8_lit("query"));
|
||||
RD_Cfg *input = rd_cfg_child_from_string(query, str8_lit("input"));
|
||||
String8 string = input->first->string;
|
||||
return string;
|
||||
}
|
||||
|
||||
internal RD_Cfg *
|
||||
@@ -7258,19 +7315,19 @@ rd_window_frame(void)
|
||||
B32 size_query_by_expr_eval = (cmd_kind_info->query.expr.size == 0);
|
||||
|
||||
//- rjf: build & prepare view for query ui
|
||||
RD_Cfg *query = rd_immediate_cfg_from_keyf("window_query_%p", window);
|
||||
RD_Cfg *view = rd_cfg_child_from_string_or_alloc(query, str8_lit("watch"));
|
||||
RD_Cfg *window_query = rd_immediate_cfg_from_keyf("window_query_%p", window);
|
||||
RD_Cfg *view = rd_cfg_child_from_string_or_alloc(window_query, str8_lit("watch"));
|
||||
RD_Cfg *expr = rd_cfg_child_from_string_or_alloc(view, str8_lit("expression"));
|
||||
RD_Cfg *query = rd_cfg_child_from_string_or_alloc(view, str8_lit("query"));
|
||||
RD_Cfg *cmd = rd_cfg_child_from_string_or_alloc(query, str8_lit("cmd"));
|
||||
rd_cfg_new_replace(cmd, cmd_name);
|
||||
rd_cfg_child_from_string_or_alloc(view, str8_lit("lister"));
|
||||
RD_ViewState *vs = rd_view_state_from_cfg(view);
|
||||
vs->is_searching = 1;
|
||||
arena_clear(vs->search_arena);
|
||||
vs->search_cmd_name = push_str8_copy(vs->search_arena, cmd_name);
|
||||
vs->search_regs = rd_regs_copy(vs->search_arena, ws->query_regs);
|
||||
vs->query_is_selected = 1;
|
||||
String8 query_expression = cmd_kind_info->query.expr;
|
||||
if(query_expression.size == 0)
|
||||
{
|
||||
query_expression = str8(vs->search_buffer, vs->search_string_size);
|
||||
query_expression = str8(vs->query_buffer, vs->query_string_size);
|
||||
RD_Cfg *explicit_root = rd_cfg_child_from_string_or_alloc(view, str8_lit("explicit_root"));
|
||||
rd_cfg_new(explicit_root, str8_lit("1"));
|
||||
}
|
||||
@@ -7281,7 +7338,7 @@ rd_window_frame(void)
|
||||
{
|
||||
String8 pre_insertion = str8_prefix(query_expression, input_insertion_pos);
|
||||
String8 post_insertion = str8_skip(query_expression, input_insertion_pos + 6);
|
||||
query_expression = push_str8f(scratch.arena, "%S%S%S", pre_insertion, str8(vs->search_buffer, vs->search_string_size), post_insertion);
|
||||
query_expression = push_str8f(scratch.arena, "%S%S%S", pre_insertion, str8(vs->query_buffer, vs->query_string_size), post_insertion);
|
||||
}
|
||||
rd_cfg_release(rd_cfg_child_from_string(view, str8_lit("explicit_root")));
|
||||
}
|
||||
@@ -7300,7 +7357,7 @@ rd_window_frame(void)
|
||||
{
|
||||
Vec2F32 content_rect_center = center_2f32(content_rect);
|
||||
Vec2F32 content_rect_dim = dim_2f32(content_rect);
|
||||
EV_BlockTree predicted_block_tree = ev_block_tree_from_exprs(scratch.arena, rd_view_eval_view(), rd_view_search(), query_eval.exprs);
|
||||
EV_BlockTree predicted_block_tree = ev_block_tree_from_exprs(scratch.arena, rd_view_eval_view(), rd_view_query_input(), query_eval.exprs);
|
||||
F32 query_open_t = ui_anim(ui_key_from_string(ui_key_zero(), str8_lit("query_open_t")), 1.f);
|
||||
F32 query_width_px = floor_f32(dim_2f32(content_rect).x * 0.35f);
|
||||
F32 max_query_height_px = content_rect_dim.y*0.8f;
|
||||
@@ -12535,7 +12592,6 @@ rd_frame(void)
|
||||
{
|
||||
arena_release(ext->arena);
|
||||
}
|
||||
arena_release(vs->search_arena);
|
||||
arena_release(vs->arena);
|
||||
DLLRemove_NP(rd_state->view_state_slots[slot_idx].first, rd_state->view_state_slots[slot_idx].last, vs, hash_next, hash_prev);
|
||||
SLLStackPush_N(rd_state->free_view_state, vs, hash_next);
|
||||
@@ -13462,7 +13518,8 @@ rd_frame(void)
|
||||
e_string2expr_map_insert(scratch.arena, ctx->macro_map, collection_name, expr);
|
||||
e_lookup_rule_map_insert_new(scratch.arena, ctx->lookup_rule_map, collection_name,
|
||||
.info = E_LOOKUP_INFO_FUNCTION_NAME(ctrl_entities),
|
||||
.access = E_LOOKUP_ACCESS_FUNCTION_NAME(ctrl_entities));
|
||||
.access = E_LOOKUP_ACCESS_FUNCTION_NAME(ctrl_entities),
|
||||
.range = E_LOOKUP_RANGE_FUNCTION_NAME(ctrl_entities));
|
||||
}
|
||||
|
||||
//- rjf: add macro / lookup rules for unattached processes
|
||||
@@ -15795,6 +15852,8 @@ Z(getting_started)
|
||||
{
|
||||
String8 cmd_name = rd_regs()->cmd_name;
|
||||
RD_CmdKindInfo *cmd_kind_info = rd_cmd_kind_info_from_string(cmd_name);
|
||||
|
||||
// rjf: floating queries -> set up window to build immediate-mode top-level query
|
||||
if(cmd_kind_info->query.flags & RD_QueryFlag_Floating)
|
||||
{
|
||||
RD_Cfg *window = rd_cfg_from_id(rd_regs()->window);
|
||||
@@ -15807,38 +15866,40 @@ Z(getting_started)
|
||||
ws->query_regs = rd_regs_copy(ws->query_arena, rd_regs());
|
||||
}
|
||||
}
|
||||
|
||||
// rjf: non-floating -> embed in tab parameter
|
||||
else
|
||||
{
|
||||
RD_Cfg *view = rd_cfg_from_id(rd_regs()->view);
|
||||
RD_Cfg *query = rd_cfg_child_from_string_or_alloc(view, str8_lit("query"));
|
||||
RD_Cfg *cmd = rd_cfg_child_from_string_or_alloc(query, str8_lit("cmd"));
|
||||
RD_Cfg *input = rd_cfg_child_from_string_or_alloc(query, str8_lit("input"));
|
||||
String8 current_query_cmd_name = cmd->first->string;
|
||||
RD_ViewState *vs = rd_view_state_from_cfg(view);
|
||||
if(!str8_match(vs->search_cmd_name, cmd_name, 0))
|
||||
if(!str8_match(current_query_cmd_name, cmd_name, 0))
|
||||
{
|
||||
arena_clear(vs->search_arena);
|
||||
vs->search_regs = rd_regs_copy(vs->search_arena, rd_regs());
|
||||
vs->search_cmd_name = push_str8_copy(vs->search_arena, cmd_name);
|
||||
if(!vs->is_searching)
|
||||
rd_cfg_new_replace(cmd, cmd_name);
|
||||
if(!vs->query_is_selected)
|
||||
{
|
||||
vs->search_cursor = txt_pt(1, 1+vs->search_string_size);
|
||||
vs->search_mark = txt_pt(1, 1);
|
||||
vs->query_cursor = txt_pt(1, 1+input->first->string.size);
|
||||
vs->query_mark = txt_pt(1, 1);
|
||||
}
|
||||
vs->is_searching = 1;
|
||||
vs->query_is_selected = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
vs->is_searching ^= 1;
|
||||
vs->query_is_selected ^= 1;
|
||||
}
|
||||
}
|
||||
}break;
|
||||
case RD_CmdKind_CompleteQuery:
|
||||
{
|
||||
RD_Cfg *view = rd_cfg_from_id(rd_regs()->view);
|
||||
RD_ViewState *vs = rd_view_state_from_cfg(view);
|
||||
String8 cmd_name = vs->search_cmd_name;
|
||||
String8 cmd_name = rd_view_query_cmd();
|
||||
String8 input = rd_view_query_input();
|
||||
RD_CmdKindInfo *cmd_kind_info = rd_cmd_kind_info_from_string(cmd_name);
|
||||
RD_RegsScope()
|
||||
{
|
||||
rd_regs_copy_contents(vs->search_arena, rd_regs(), vs->search_regs);
|
||||
rd_regs_fill_slot_from_string(cmd_kind_info->query.slot, str8(vs->search_buffer, vs->search_string_size));
|
||||
rd_regs_fill_slot_from_string(cmd_kind_info->query.slot, input);
|
||||
rd_push_cmd(cmd_name, rd_regs());
|
||||
}
|
||||
if(cmd_kind_info->query.flags & RD_QueryFlag_Floating)
|
||||
@@ -15849,53 +15910,12 @@ Z(getting_started)
|
||||
}
|
||||
else if(!(cmd_kind_info->query.flags & RD_QueryFlag_KeepOldInput))
|
||||
{
|
||||
vs->is_searching = 0;
|
||||
vs->search_string_size = 0;
|
||||
RD_Cfg *view = rd_cfg_from_id(rd_regs()->view);
|
||||
RD_ViewState *vs = rd_view_state_from_cfg(view);
|
||||
vs->query_is_selected = 0;
|
||||
vs->query_string_size = 0;
|
||||
rd_cfg_release(rd_cfg_child_from_string(view, str8_lit("query")));
|
||||
}
|
||||
|
||||
#if 0 // TODO(rjf): @cfg (query completion)
|
||||
RD_Window *ws = rd_window_from_handle(rd_regs()->window);
|
||||
String8 query_cmd_name = ws->query_cmd_name;
|
||||
RD_CmdKindInfo *info = rd_cmd_kind_info_from_string(query_cmd_name);
|
||||
RD_RegSlot slot = info->query.slot;
|
||||
|
||||
// rjf: compound command parameters
|
||||
if(slot != RD_RegSlot_Null && !(ws->query_cmd_regs_mask[slot/64] & (1ull<<(slot%64))))
|
||||
{
|
||||
RD_Regs *regs_copy = rd_regs_copy(ws->query_cmd_arena, rd_regs());
|
||||
Rng1U64 offset_range_in_regs = rd_reg_slot_range_table[slot];
|
||||
MemoryCopy((U8 *)(ws->query_cmd_regs) + offset_range_in_regs.min,
|
||||
(U8 *)(regs_copy) + offset_range_in_regs.min,
|
||||
dim_1u64(offset_range_in_regs));
|
||||
ws->query_cmd_regs_mask[slot/64] |= (1ull<<(slot%64));
|
||||
}
|
||||
|
||||
// rjf: determine if command is ready to run
|
||||
B32 command_ready = 1;
|
||||
if(slot != RD_RegSlot_Null && !(ws->query_cmd_regs_mask[slot/64] & (1ull<<(slot%64))))
|
||||
{
|
||||
command_ready = 0;
|
||||
}
|
||||
|
||||
// rjf: end this query
|
||||
if(!(info->query.flags & RD_QueryFlag_KeepOldInput))
|
||||
{
|
||||
rd_cmd(RD_CmdKind_CancelQuery);
|
||||
}
|
||||
|
||||
// rjf: unset command register slot, if we keep old input (and thus need
|
||||
// to re-query user)
|
||||
if(info->query.flags & RD_QueryFlag_KeepOldInput)
|
||||
{
|
||||
ws->query_cmd_regs_mask[slot/64] &= ~(1ull<<(slot%64));
|
||||
}
|
||||
|
||||
// rjf: push command if possible
|
||||
if(command_ready)
|
||||
{
|
||||
rd_push_cmd(ws->query_cmd_name, ws->query_cmd_regs);
|
||||
}
|
||||
#endif
|
||||
}break;
|
||||
case RD_CmdKind_CancelQuery:
|
||||
{
|
||||
@@ -16068,7 +16088,7 @@ Z(getting_started)
|
||||
case RD_CmdKind_AddAddressBreakpoint:
|
||||
case RD_CmdKind_AddFunctionBreakpoint:
|
||||
{
|
||||
rd_cmd(RD_CmdKind_AddBreakpoint);
|
||||
rd_cmd(RD_CmdKind_AddBreakpoint, .file_path = str8_zero());
|
||||
}break;
|
||||
|
||||
//- rjf: watch pins
|
||||
@@ -16293,6 +16313,10 @@ Z(getting_started)
|
||||
}break;
|
||||
|
||||
//- rjf: debug control context management operations
|
||||
case RD_CmdKind_SelectEntity:
|
||||
{
|
||||
rd_cmd(RD_CmdKind_SelectThread, .thread = rd_regs()->ctrl_entity);
|
||||
}break;
|
||||
case RD_CmdKind_SelectThread:
|
||||
{
|
||||
CTRL_Entity *thread = ctrl_entity_from_handle(d_state->ctrl_entity_store, rd_regs()->thread);
|
||||
|
||||
@@ -235,15 +235,12 @@ struct RD_ViewState
|
||||
RD_ArenaExt *last_arena_ext;
|
||||
void *user_data;
|
||||
|
||||
// rjf: search editing controls
|
||||
B32 is_searching;
|
||||
Arena *search_arena;
|
||||
RD_Regs *search_regs;
|
||||
String8 search_cmd_name;
|
||||
TxtPt search_cursor;
|
||||
TxtPt search_mark;
|
||||
U8 search_buffer[KB(1)];
|
||||
U64 search_string_size;
|
||||
// rjf: query state
|
||||
B32 query_is_selected;
|
||||
TxtPt query_cursor;
|
||||
TxtPt query_mark;
|
||||
U8 query_buffer[KB(1)];
|
||||
U64 query_string_size;
|
||||
};
|
||||
|
||||
typedef struct RD_ViewStateSlot RD_ViewStateSlot;
|
||||
@@ -1079,7 +1076,8 @@ internal void rd_view_ui(Rng2F32 rect);
|
||||
internal Arena *rd_view_arena(void);
|
||||
internal UI_ScrollPt2 rd_view_scroll_pos(void);
|
||||
internal EV_View *rd_view_eval_view(void);
|
||||
internal String8 rd_view_search(void);
|
||||
internal String8 rd_view_query_cmd(void);
|
||||
internal String8 rd_view_query_input(void);
|
||||
internal RD_Cfg *rd_view_cfg_from_string(String8 string);
|
||||
internal E_Value rd_view_cfg_value_from_string(String8 string);
|
||||
|
||||
|
||||
@@ -139,7 +139,7 @@ rd_code_view_build(Arena *arena, RD_CodeViewState *cv, RD_CodeViewBuildFlags fla
|
||||
//////////////////////////////
|
||||
//- rjf: get active search query
|
||||
//
|
||||
String8 search_query = rd_view_search();
|
||||
String8 search_query = rd_view_query_input();
|
||||
B32 search_query_is_active = 0;
|
||||
|
||||
//////////////////////////////
|
||||
@@ -832,7 +832,7 @@ rd_watch_pt_from_tbl(EV_BlockRangeList *block_ranges, Vec2S64 tbl)
|
||||
RD_WatchPt pt = zero_struct;
|
||||
{
|
||||
Temp scratch = scratch_begin(0, 0);
|
||||
EV_Row *row = ev_row_from_num(scratch.arena, rd_view_eval_view(), rd_view_search(), block_ranges, (U64)tbl.y);
|
||||
EV_Row *row = ev_row_from_num(scratch.arena, rd_view_eval_view(), rd_view_query_input(), block_ranges, (U64)tbl.y);
|
||||
RD_WatchRowInfo row_info = rd_watch_row_info_from_row(scratch.arena, row);
|
||||
{
|
||||
S64 x = 0;
|
||||
@@ -859,7 +859,7 @@ rd_tbl_from_watch_pt(EV_BlockRangeList *block_ranges, RD_WatchPt pt)
|
||||
{
|
||||
Temp scratch = scratch_begin(0, 0);
|
||||
U64 num = ev_num_from_key(block_ranges, pt.key);
|
||||
EV_Row *row = ev_row_from_num(scratch.arena, rd_view_eval_view(), rd_view_search(), block_ranges, num);
|
||||
EV_Row *row = ev_row_from_num(scratch.arena, rd_view_eval_view(), rd_view_query_input(), block_ranges, num);
|
||||
RD_WatchRowInfo row_info = rd_watch_row_info_from_row(scratch.arena, row);
|
||||
tbl.x = 0;
|
||||
{
|
||||
@@ -1091,6 +1091,16 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
|
||||
String8 cmd_name = rd_cmd_kind_info_table[cmd_kind].string;
|
||||
rd_watch_cell_list_push_new(arena, &info.cells, RD_WatchCellKind_Eval, .flags = RD_WatchCellFlag_ActivateWithSingleClick|RD_WatchCellFlag_Button, .px = floor_f32(ui_top_font_size()*4.f), .string = push_str8f(arena, "query:commands.%S", cmd_name));
|
||||
}
|
||||
if(entity->kind == CTRL_EntityKind_Thread)
|
||||
{
|
||||
RD_CmdKind cmd_kind = RD_CmdKind_SelectEntity;
|
||||
if(ctrl_handle_match(entity->handle, rd_base_regs()->thread))
|
||||
{
|
||||
cmd_kind = RD_CmdKind_DeselectEntity;
|
||||
}
|
||||
String8 cmd_name = rd_cmd_kind_info_table[cmd_kind].string;
|
||||
rd_watch_cell_list_push_new(arena, &info.cells, RD_WatchCellKind_Eval, .flags = RD_WatchCellFlag_ActivateWithSingleClick|RD_WatchCellFlag_Button, .px = floor_f32(ui_top_font_size()*4.f), .string = push_str8f(arena, "query:commands.%S", cmd_name));
|
||||
}
|
||||
}
|
||||
|
||||
// rjf: singular button for unattached processes
|
||||
@@ -1408,7 +1418,7 @@ rd_info_from_watch_row_cell(Arena *arena, EV_Row *row, EV_StringFlags string_fla
|
||||
}
|
||||
|
||||
//- rjf: generate strings/flags based on that expression & fill
|
||||
result.string = rd_value_string_from_eval(arena, rd_view_search(), string_flags, default_radix, font, font_size, max_size_px, result.eval);
|
||||
result.string = rd_value_string_from_eval(arena, rd_view_query_input(), string_flags, default_radix, font, font_size, max_size_px, result.eval);
|
||||
result.flags |= !!(ev_type_key_is_editable(result.eval.irtree.type_key) && result.eval.irtree.mode == E_Mode_Offset) * RD_WatchCellFlag_CanEdit;
|
||||
E_Type *type = e_type_from_key__cached(result.eval.irtree.type_key);
|
||||
if(type->flags & (E_TypeFlag_IsPlainText|E_TypeFlag_IsPathText))
|
||||
|
||||
@@ -438,7 +438,7 @@ rd_title_fstrs_from_ctrl_entity(Arena *arena, CTRL_Entity *entity, B32 include_e
|
||||
Vec4F32 process_color = rd_color_from_ctrl_entity(process);
|
||||
if(process_color.w == 0)
|
||||
{
|
||||
process_color = color;
|
||||
process_color = ui_color_from_name(str8_lit("text"));
|
||||
}
|
||||
if(process_name.size != 0)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user