diff --git a/src/base/base_entry_point.c b/src/base/base_entry_point.c index 3d33ee27..a592262b 100644 --- a/src/base/base_entry_point.c +++ b/src/base/base_entry_point.c @@ -80,7 +80,7 @@ main_thread_base_entry_point(void (*entry_point)(CmdLine *cmdline), char **argum d_init(&cmdline, hist); #endif #if defined(DBG_FRONTEND_CORE_H) && !defined(DF_INIT_MANUAL) - df_init(); + df_init(update_and_render, d_state_delta_history()); #endif //- rjf: call into entry point diff --git a/src/ctrl/ctrl_core.c b/src/ctrl/ctrl_core.c index f7ac86b1..60a115be 100644 --- a/src/ctrl/ctrl_core.c +++ b/src/ctrl/ctrl_core.c @@ -510,17 +510,6 @@ ctrl_event_from_serialized_string(Arena *arena, String8 string) //////////////////////////////// //~ rjf: Entity Type Functions -//- rjf: entity list data structures - -internal void -ctrl_entity_list_push(Arena *arena, CTRL_EntityList *list, CTRL_Entity *entity) -{ - CTRL_EntityNode *n = push_array(arena, CTRL_EntityNode, 1); - n->v = entity; - SLLQueuePush(list->first, list->last, n); - list->count += 1; -} - //- rjf: cache creation/destruction internal CTRL_EntityStore * @@ -531,10 +520,6 @@ ctrl_entity_store_alloc(void) store->arena = arena; store->hash_slots_count = 1024; store->hash_slots = push_array(arena, CTRL_EntityHashSlot, store->hash_slots_count); - for(EachEnumVal(CTRL_EntityKind, k)) - { - store->entity_kind_lists_arenas[k] = arena_alloc(); - } CTRL_Entity *root = store->root = ctrl_entity_alloc(store, &ctrl_entity_nil, CTRL_EntityKind_Root, Arch_Null, 0, dmn_handle_zero(), 0); CTRL_Entity *local_machine = ctrl_entity_alloc(store, root, CTRL_EntityKind_Machine, arch_from_context(), CTRL_MachineID_Local, dmn_handle_zero(), 0); (void)local_machine; @@ -663,13 +648,12 @@ ctrl_entity_alloc(CTRL_EntityStore *store, CTRL_Entity *parent, CTRL_EntityKind // rjf: fill { - entity->kind = kind; - entity->arch = arch; - entity->alloc_time_us = os_now_microseconds(); - entity->machine_id = machine_id; - entity->handle = handle; - entity->id = id; - entity->parent = parent; + entity->kind = kind; + entity->arch = arch; + entity->machine_id = machine_id; + entity->handle = handle; + entity->id = id; + entity->parent = parent; entity->next = entity->prev = entity->first = entity->last = &ctrl_entity_nil; if(parent != &ctrl_entity_nil) { @@ -708,8 +692,7 @@ ctrl_entity_alloc(CTRL_EntityStore *store, CTRL_Entity *parent, CTRL_EntityKind } } - // rjf: bump alloc generation / counts - store->entity_kind_alloc_gens[kind] += 1; + // rjf: bump counter store->entity_kind_counts[kind] += 1; } return entity; @@ -825,161 +808,6 @@ ctrl_entity_child_from_kind(CTRL_Entity *parent, CTRL_EntityKind kind) return result; } -internal CTRL_Entity * -ctrl_entity_ancestor_from_kind(CTRL_Entity *entity, CTRL_EntityKind kind) -{ - CTRL_Entity *result = &ctrl_entity_nil; - for(CTRL_Entity *p = entity->parent; p != &ctrl_entity_nil; p = p->parent) - { - if(p->kind == kind) - { - result = p; - break; - } - } - return result; -} - -internal CTRL_Entity * -ctrl_module_from_process_vaddr(CTRL_Entity *process, U64 vaddr) -{ - CTRL_Entity *result = &ctrl_entity_nil; - for(CTRL_Entity *child = process->first; - child != &ctrl_entity_nil; - child = child->next) - { - if(child->kind == CTRL_EntityKind_Module && contains_1u64(child->vaddr_range, vaddr)) - { - result = child; - break; - } - } - return result; -} - -internal DI_Key -ctrl_dbgi_key_from_module(CTRL_Entity *module) -{ - CTRL_Entity *debug_info_path = ctrl_entity_child_from_kind(module, CTRL_EntityKind_DebugInfoPath); - DI_Key dbgi_key = {debug_info_path->string, debug_info_path->timestamp}; - return dbgi_key; -} - -internal CTRL_EntityList -ctrl_modules_from_dbgi_key(Arena *arena, CTRL_EntityStore *store, DI_Key *dbgi_key) -{ - CTRL_EntityList list = {0}; - CTRL_EntityList all_modules = ctrl_entity_list_from_kind(store, CTRL_EntityKind_Module); - for(CTRL_EntityNode *n = all_modules.first; n != 0; n = n->next) - { - CTRL_Entity *module = n->v; - DI_Key module_dbgi_key = ctrl_dbgi_key_from_module(module); - if(di_key_match(&module_dbgi_key, dbgi_key)) - { - ctrl_entity_list_push(arena, &list, module); - } - } - return list; -} - -internal CTRL_Entity * -ctrl_module_from_thread_candidates(CTRL_EntityStore *store, CTRL_Entity *thread, CTRL_EntityList *candidates) -{ - CTRL_Entity *process = ctrl_entity_ancestor_from_kind(thread, CTRL_EntityKind_Process); - U64 thread_rip_vaddr = ctrl_query_cached_rip_from_thread(store, thread->machine_id, thread->handle); - CTRL_Entity *src_module = ctrl_module_from_process_vaddr(process, thread_rip_vaddr); - CTRL_Entity *module = &ctrl_entity_nil; - for(CTRL_EntityNode *n = candidates->first; n != 0; n = n->next) - { - CTRL_Entity *candidate_module = n->v; - CTRL_Entity *candidate_process = ctrl_entity_ancestor_from_kind(candidate_module, CTRL_EntityKind_Process); - if(candidate_process == process) - { - module = candidate_module; - } - if(candidate_module == src_module) - { - break; - } - } - return module; -} - -internal CTRL_EntityList -ctrl_entity_list_from_kind(CTRL_EntityStore *store, CTRL_EntityKind kind) -{ - if(store->entity_kind_lists_gens[kind] != store->entity_kind_alloc_gens[kind]) - { - arena_clear(store->entity_kind_lists_arenas[kind]); - for(CTRL_Entity *e = store->root; - e != &ctrl_entity_nil; - e = ctrl_entity_rec_depth_first_pre(e, store->root).next) - { - if(e->kind == kind) - { - ctrl_entity_list_push(store->entity_kind_lists_arenas[kind], &store->entity_kind_lists[kind], e); - } - } - store->entity_kind_lists_gens[kind] = store->entity_kind_alloc_gens[kind]; - } - return store->entity_kind_lists[kind]; -} - -internal U64 -ctrl_vaddr_from_voff(CTRL_Entity *module, U64 voff) -{ - U64 result = voff + module->vaddr_range.min; - return result; -} - -internal U64 -ctrl_voff_from_vaddr(CTRL_Entity *module, U64 vaddr) -{ - U64 result = vaddr - module->vaddr_range.min; - return result; -} - -internal Rng1U64 -ctrl_vaddr_range_from_voff_range(CTRL_Entity *module, Rng1U64 voff_range) -{ - U64 dim = dim_1u64(voff_range); - U64 min = ctrl_vaddr_from_voff(module, voff_range.min); - Rng1U64 result = {min, min+dim}; - return result; -} - -internal Rng1U64 -ctrl_voff_range_from_vaddr_range(CTRL_Entity *module, Rng1U64 vaddr_range) -{ - U64 dim = dim_1u64(vaddr_range); - U64 min = ctrl_voff_from_vaddr(module, vaddr_range.min); - Rng1U64 result = {min, min+dim}; - return result; -} - -//- rjf: entity tree iteration - -internal CTRL_EntityRec -ctrl_entity_rec_depth_first(CTRL_Entity *entity, CTRL_Entity *subtree_root, U64 sib_off, U64 child_off) -{ - CTRL_EntityRec result = {0}; - if((*MemberFromOffset(CTRL_Entity **, entity, child_off)) != &ctrl_entity_nil) - { - result.next = *MemberFromOffset(CTRL_Entity **, entity, child_off); - result.push_count = 1; - } - else for(CTRL_Entity *parent = entity; parent != subtree_root && parent != &ctrl_entity_nil; parent = parent->parent) - { - if(parent != subtree_root && (*MemberFromOffset(CTRL_Entity **, parent, sib_off)) != &ctrl_entity_nil) - { - result.next = *MemberFromOffset(CTRL_Entity **, parent, sib_off); - break; - } - result.pop_count += 1; - } - return result; -} - //- rjf: applying events to entity caches internal void @@ -1020,7 +848,6 @@ ctrl_entity_store_apply_events(CTRL_EntityStore *store, CTRL_EventList *list) { CTRL_Entity *process = ctrl_entity_from_machine_id_handle(store, event->machine_id, event->parent); CTRL_Entity *thread = ctrl_entity_alloc(store, process, CTRL_EntityKind_Thread, event->arch, event->machine_id, event->entity, (U64)event->entity_id); - thread->stack_base = event->stack_base; ctrl_query_cached_rip_from_thread(store, event->machine_id, event->entity); }break; case CTRL_EventKind_EndThread: diff --git a/src/ctrl/ctrl_core.h b/src/ctrl/ctrl_core.h index 328d931b..4c849997 100644 --- a/src/ctrl/ctrl_core.h +++ b/src/ctrl/ctrl_core.h @@ -62,42 +62,16 @@ struct CTRL_Entity CTRL_Entity *next; CTRL_Entity *prev; CTRL_Entity *parent; - U64 alloc_time_us; CTRL_EntityKind kind; Arch arch; CTRL_MachineID machine_id; DMN_Handle handle; U64 id; Rng1U64 vaddr_range; - U64 stack_base; U64 timestamp; - U32 rgba_u32; String8 string; }; -typedef struct CTRL_EntityRec CTRL_EntityRec; -struct CTRL_EntityRec -{ - CTRL_Entity *next; - S32 push_count; - S64 pop_count; -}; - -typedef struct CTRL_EntityNode CTRL_EntityNode; -struct CTRL_EntityNode -{ - CTRL_EntityNode *next; - CTRL_Entity *v; -}; - -typedef struct CTRL_EntityList CTRL_EntityList; -struct CTRL_EntityList -{ - CTRL_EntityNode *first; - CTRL_EntityNode *last; - U64 count; -}; - typedef struct CTRL_EntityHashNode CTRL_EntityHashNode; struct CTRL_EntityHashNode { @@ -131,10 +105,6 @@ struct CTRL_EntityStore U64 hash_slots_count; CTRL_EntityStringChunkNode *free_string_chunks[8]; U64 entity_kind_counts[CTRL_EntityKind_COUNT]; - Arena *entity_kind_lists_arenas[CTRL_EntityKind_COUNT]; - U64 entity_kind_lists_gens[CTRL_EntityKind_COUNT]; - U64 entity_kind_alloc_gens[CTRL_EntityKind_COUNT]; - CTRL_EntityList entity_kind_lists[CTRL_EntityKind_COUNT]; }; //////////////////////////////// @@ -716,9 +686,6 @@ internal CTRL_Event ctrl_event_from_serialized_string(Arena *arena, String8 stri //////////////////////////////// //~ rjf: Entity Type Functions -//- rjf: entity list data structures -internal void ctrl_entity_list_push(Arena *arena, CTRL_EntityList *list, CTRL_Entity *entity); - //- rjf: cache creation/destruction internal CTRL_EntityStore *ctrl_entity_store_alloc(void); internal void ctrl_entity_store_release(CTRL_EntityStore *store); @@ -738,22 +705,6 @@ internal void ctrl_entity_equip_string(CTRL_EntityStore *store, CTRL_Entity *ent //- rjf: entity store lookups internal CTRL_Entity *ctrl_entity_from_machine_id_handle(CTRL_EntityStore *store, CTRL_MachineID machine_id, DMN_Handle handle); internal CTRL_Entity *ctrl_entity_child_from_kind(CTRL_Entity *parent, CTRL_EntityKind kind); -internal CTRL_Entity *ctrl_entity_ancestor_from_kind(CTRL_Entity *entity, CTRL_EntityKind kind); -internal CTRL_Entity *ctrl_module_from_process_vaddr(CTRL_Entity *process, U64 vaddr); -internal DI_Key ctrl_dbgi_key_from_module(CTRL_Entity *module); -internal CTRL_EntityList ctrl_modules_from_dbgi_key(Arena *arena, CTRL_EntityStore *store, DI_Key *dbgi_key); -internal CTRL_Entity *ctrl_module_from_thread_candidates(CTRL_EntityStore *store, CTRL_Entity *thread, CTRL_EntityList *candidates); -internal CTRL_EntityList ctrl_entity_list_from_kind(CTRL_EntityStore *store, CTRL_EntityKind kind); -internal U64 ctrl_vaddr_from_voff(CTRL_Entity *module, U64 voff); -internal U64 ctrl_voff_from_vaddr(CTRL_Entity *module, U64 vaddr); -internal Rng1U64 ctrl_vaddr_range_from_voff_range(CTRL_Entity *module, Rng1U64 voff_range); -internal Rng1U64 ctrl_voff_range_from_vaddr_range(CTRL_Entity *module, Rng1U64 vaddr_range); - - -//- rjf: entity tree iteration -internal CTRL_EntityRec ctrl_entity_rec_depth_first(CTRL_Entity *entity, CTRL_Entity *subtree_root, U64 sib_off, U64 child_off); -#define ctrl_entity_rec_depth_first_pre(entity, subtree_root) ctrl_entity_rec_depth_first((entity), (subtree_root), OffsetOf(CTRL_Entity, next), OffsetOf(CTRL_Entity, first)) -#define ctrl_entity_rec_depth_first_post(entity, subtree_root) ctrl_entity_rec_depth_first((entity), (subtree_root), OffsetOf(CTRL_Entity, prev), OffsetOf(CTRL_Entity, last)) //- rjf: applying events to entity caches internal void ctrl_entity_store_apply_events(CTRL_EntityStore *store, CTRL_EventList *list); diff --git a/src/dbg_engine/dbg_engine.mdesk b/src/dbg_engine/dbg_engine.mdesk index de959038..4bddf460 100644 --- a/src/dbg_engine/dbg_engine.mdesk +++ b/src/dbg_engine/dbg_engine.mdesk @@ -61,6 +61,11 @@ D_EntityKindTable: {WorkingDirectory working_directory working_directories 0 0 0 0 0 0 0 0 1 1 0 "Execution Path" Null "Working Directory" } {EntryPoint entry_point entry_points 0 0 0 0 0 0 0 0 0 1 0 "Symbol Name" Null "Entry Point" } + //- rjf: frontend containers (windows, panels, views) + {Window window windows 1 0 0 0 0 0 1 0 0 1 1 "Label" Window "Window" } + {Panel panel panels 1 0 0 0 0 0 1 0 0 1 1 "Label" XSplit "Panel" } + {View view views 1 0 0 0 0 0 1 0 0 1 1 "Label" Null "View" } + //- rjf: recent projects {RecentProject recent_project recent_projects 0 0 0 0 0 0 0 0 1 0 1 "Path" Briefcase "Recent Project" } @@ -89,11 +94,11 @@ D_EntityKindTable: @table(c_type name_lower name) D_RegTable: { - // rjf: entity info - {CTRL_MachineID machine_id MachineID } - {DMN_Handle process process } - {DMN_Handle module module } - {DMN_Handle thread thread } + // rjf: entity slots + {D_Handle machine Machine } + {D_Handle module Module } + {D_Handle process Process } + {D_Handle thread Thread } {D_Handle window Window } {D_Handle panel Panel } {D_Handle view View } @@ -216,6 +221,8 @@ D_MsgKindTable: {DisableEntity "Disable Entity" disable_entity 0 0 Null Nil 0 0 0 0 0 0 Null ""} {DisableBreakpoint "Disable Breakpoint" disable_breakpoint 0 0 Null Nil 0 0 0 0 0 0 Null ""} {DisableTarget "Disable Target" disable_target 0 0 Null Nil 0 0 0 0 0 0 Null ""} + {FreezeEntity "Freeze Entity" freeze_entity 0 0 Null Nil 0 0 0 0 0 0 Null ""} + {ThawEntity "Thaw Entity" thaw_entity 0 0 Null Nil 0 0 0 0 0 0 Null ""} {RemoveEntity "Remove Entity" remove_entity 0 0 Null Nil 0 0 0 0 0 0 Null ""} {RemoveBreakpoint "Remove Breakpoint" remove_breakpoint 0 0 Null Nil 0 0 0 0 0 0 Null ""} {RemoveTarget "Remove Target" remove_target 0 0 Null Nil 0 0 0 0 0 0 Null ""} diff --git a/src/dbg_engine/dbg_engine_core.c b/src/dbg_engine/dbg_engine_core.c index 78dcbdb2..b20e2c21 100644 --- a/src/dbg_engine/dbg_engine_core.c +++ b/src/dbg_engine/dbg_engine_core.c @@ -1041,8 +1041,6 @@ internal String8 d_search_tags_from_entity(Arena *arena, D_Entity *entity) { String8 result = {0}; -#if 0 - // TODO(rjf): @msgs if(entity->kind == D_EntityKind_Thread) { Temp scratch = scratch_begin(&arena, 1); @@ -1067,7 +1065,6 @@ d_search_tags_from_entity(Arena *arena, D_Entity *entity) result = str8_list_join(arena, &strings, &join); scratch_end(scratch); } -#endif return result; } @@ -2045,25 +2042,14 @@ d_set_thread_freeze_state(D_Entity *thread, B32 frozen) } internal B32 -d_entity_is_frozen(CTRL_Entity *entity) +d_entity_is_frozen(D_Entity *entity) { - B32 is_frozen = (entity != &ctrl_entity_nil); - for(CTRL_Entity *e = entity; - e != &ctrl_entity_nil; - e = ctrl_entity_rec_depth_first_pre(e, entity).next) + B32 is_frozen = !d_entity_is_nil(entity); + for(D_Entity *e = entity; !d_entity_is_nil(e); e = d_entity_rec_depth_first_pre(e, entity).next) { - if(e->kind == CTRL_EntityKind_Thread) + if(e->kind == D_EntityKind_Thread) { - B32 thread_is_frozen = 0; - for(CTRL_MachineIDHandlePairNode *n = d_state->frozen_thread_handles.first; n != 0; n = n->next) - { - if(n->v.machine_id == e->machine_id && - dmn_handle_match(n->v.handle, e->handle)) - { - thread_is_frozen = 1; - break; - } - } + B32 thread_is_frozen = !!d_handle_list_find(&d_state->frozen_threads, d_handle_from_entity(e)); if(!thread_is_frozen) { is_frozen = 0; @@ -2313,21 +2299,21 @@ d_view_rule_spec_from_string(String8 string) // at them with the "save-stack-pointer | single-step-after" behaviors. internal CTRL_TrapList -d_trap_net_from_thread__step_over_inst(Arena *arena, CTRL_Entity *thread) +d_trap_net_from_thread__step_over_inst(Arena *arena, D_Entity *thread) { Temp scratch = scratch_begin(&arena, 1); CTRL_TrapList result = {0}; // rjf: thread => unpacked info - CTRL_Entity *process = ctrl_entity_ancestor_from_kind(thread, CTRL_EntityKind_Process); - Arch arch = thread->arch; - U64 ip_vaddr = ctrl_query_cached_rip_from_thread(d_state->ctrl_entity_store, thread->machine_id, thread->handle); + D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); + Arch arch = d_arch_from_entity(thread); + U64 ip_vaddr = ctrl_query_cached_rip_from_thread(d_state->ctrl_entity_store, thread->ctrl_machine_id, thread->ctrl_handle); // rjf: ip => machine code String8 machine_code = {0}; { Rng1U64 rng = r1u64(ip_vaddr, ip_vaddr+max_instruction_size_from_arch(arch)); - CTRL_ProcessMemorySlice machine_code_slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, process->machine_id, process->handle, rng, os_now_microseconds()+5000); + CTRL_ProcessMemorySlice machine_code_slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, process->ctrl_machine_id, process->ctrl_handle, rng, os_now_microseconds()+5000); machine_code = machine_code_slice.data; } @@ -2350,31 +2336,31 @@ d_trap_net_from_thread__step_over_inst(Arena *arena, CTRL_Entity *thread) } internal CTRL_TrapList -d_trap_net_from_thread__step_over_line(Arena *arena, CTRL_Entity *thread) +d_trap_net_from_thread__step_over_line(Arena *arena, D_Entity *thread) { Temp scratch = scratch_begin(&arena, 1); log_infof("step_over_line:\n{\n"); CTRL_TrapList result = {0}; // rjf: thread => info - CTRL_Entity *process = ctrl_entity_ancestor_from_kind(thread, CTRL_EntityKind_Process); - U64 ip_vaddr = ctrl_query_cached_rip_from_thread(d_state->ctrl_entity_store, thread->machine_id, thread->handle); - CTRL_Entity *module = ctrl_module_from_process_vaddr(process, ip_vaddr); - DI_Key dbgi_key = ctrl_dbgi_key_from_module(module); - Arch arch = thread->arch; + D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); + D_Entity *module = d_module_from_thread(thread); + DI_Key dbgi_key = d_dbgi_key_from_module(module); + Arch arch = d_arch_from_entity(thread); + U64 ip_vaddr = ctrl_query_cached_rip_from_thread(d_state->ctrl_entity_store, thread->ctrl_machine_id, thread->ctrl_handle); log_infof("ip_vaddr: 0x%I64x\n", ip_vaddr); log_infof("dbgi_key: {%S, 0x%I64x}\n", dbgi_key.path, dbgi_key.min_timestamp); // rjf: ip => line vaddr range Rng1U64 line_vaddr_rng = {0}; { - U64 ip_voff = ctrl_voff_from_vaddr(module, ip_vaddr); + U64 ip_voff = d_voff_from_vaddr(module, ip_vaddr); D_LineList lines = d_lines_from_dbgi_key_voff(scratch.arena, &dbgi_key, ip_voff); Rng1U64 line_voff_rng = {0}; if(lines.first != 0) { line_voff_rng = lines.first->v.voff_range; - line_vaddr_rng = ctrl_vaddr_range_from_voff_range(module, line_voff_rng); + line_vaddr_rng = d_vaddr_range_from_voff_range(module, line_voff_rng); log_infof("line: {%S:%I64i}\n", lines.first->v.file_path, lines.first->v.pt.line); } log_infof("voff_range: {0x%I64x, 0x%I64x}\n", line_voff_rng.min, line_voff_rng.max); @@ -2386,11 +2372,11 @@ d_trap_net_from_thread__step_over_line(Arena *arena, CTRL_Entity *thread) // MSVC exports line info at these line numbers when /JMC (Just My Code) debugging // is enabled. This is enabled by default normally. { - U64 opl_line_voff_rng = ctrl_voff_from_vaddr(module, line_vaddr_rng.max); + U64 opl_line_voff_rng = d_voff_from_vaddr(module, line_vaddr_rng.max); D_LineList lines = d_lines_from_dbgi_key_voff(scratch.arena, &dbgi_key, opl_line_voff_rng); if(lines.first != 0 && (lines.first->v.pt.line == 0xf00f00 || lines.first->v.pt.line == 0xfeefee)) { - line_vaddr_rng.max = ctrl_vaddr_from_voff(module, lines.first->v.voff_range.max); + line_vaddr_rng.max = d_vaddr_from_voff(module, lines.first->v.voff_range.max); } } @@ -2401,7 +2387,7 @@ d_trap_net_from_thread__step_over_line(Arena *arena, CTRL_Entity *thread) String8 machine_code = {0}; if(good_line_info) { - CTRL_ProcessMemorySlice machine_code_slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, process->machine_id, process->handle, line_vaddr_rng, os_now_microseconds()+50000); + CTRL_ProcessMemorySlice machine_code_slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, process->ctrl_machine_id, process->ctrl_handle, line_vaddr_rng, os_now_microseconds()+50000); machine_code = machine_code_slice.data; LogInfoNamedBlockF("machine_code_slice") { @@ -2512,28 +2498,28 @@ d_trap_net_from_thread__step_over_line(Arena *arena, CTRL_Entity *thread) } internal CTRL_TrapList -d_trap_net_from_thread__step_into_line(Arena *arena, CTRL_Entity *thread) +d_trap_net_from_thread__step_into_line(Arena *arena, D_Entity *thread) { Temp scratch = scratch_begin(&arena, 1); CTRL_TrapList result = {0}; // rjf: thread => info - CTRL_Entity *process = ctrl_entity_ancestor_from_kind(thread, CTRL_EntityKind_Process); - U64 ip_vaddr = ctrl_query_cached_rip_from_thread(d_state->ctrl_entity_store, thread->machine_id, thread->handle); - CTRL_Entity *module = ctrl_module_from_process_vaddr(process, ip_vaddr); - DI_Key dbgi_key = ctrl_dbgi_key_from_module(module); - Arch arch = thread->arch; + D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); + D_Entity *module = d_module_from_thread(thread); + DI_Key dbgi_key = d_dbgi_key_from_module(module); + Arch arch = d_arch_from_entity(thread); + U64 ip_vaddr = ctrl_query_cached_rip_from_thread(d_state->ctrl_entity_store, thread->ctrl_machine_id, thread->ctrl_handle); // rjf: ip => line vaddr range Rng1U64 line_vaddr_rng = {0}; { - U64 ip_voff = ctrl_voff_from_vaddr(module, ip_vaddr); + U64 ip_voff = d_voff_from_vaddr(module, ip_vaddr); D_LineList lines = d_lines_from_dbgi_key_voff(scratch.arena, &dbgi_key, ip_voff); Rng1U64 line_voff_rng = {0}; if(lines.first != 0) { line_voff_rng = lines.first->v.voff_range; - line_vaddr_rng = ctrl_vaddr_range_from_voff_range(module, line_voff_rng); + line_vaddr_rng = d_vaddr_range_from_voff_range(module, line_voff_rng); } } @@ -2542,11 +2528,11 @@ d_trap_net_from_thread__step_into_line(Arena *arena, CTRL_Entity *thread) // MSVC exports line info at these line numbers when /JMC (Just My Code) debugging // is enabled. This is enabled by default normally. { - U64 opl_line_voff_rng = ctrl_voff_from_vaddr(module, line_vaddr_rng.max); + U64 opl_line_voff_rng = d_voff_from_vaddr(module, line_vaddr_rng.max); D_LineList lines = d_lines_from_dbgi_key_voff(scratch.arena, &dbgi_key, opl_line_voff_rng); if(lines.first != 0 && (lines.first->v.pt.line == 0xf00f00 || lines.first->v.pt.line == 0xfeefee)) { - line_vaddr_rng.max = ctrl_vaddr_from_voff(module, lines.first->v.voff_range.max); + line_vaddr_rng.max = d_vaddr_from_voff(module, lines.first->v.voff_range.max); } } @@ -2557,7 +2543,7 @@ d_trap_net_from_thread__step_into_line(Arena *arena, CTRL_Entity *thread) String8 machine_code = {0}; if(good_line_info) { - CTRL_ProcessMemorySlice machine_code_slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, process->machine_id, process->handle, line_vaddr_rng, os_now_microseconds()+5000); + CTRL_ProcessMemorySlice machine_code_slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, process->ctrl_machine_id, process->ctrl_handle, line_vaddr_rng, os_now_microseconds()+5000); machine_code = machine_code_slice.data; } @@ -2756,14 +2742,14 @@ d_symbol_name_from_dbgi_key_voff(Arena *arena, DI_Key *dbgi_key, U64 voff, B32 d } internal String8 -d_symbol_name_from_process_vaddr(Arena *arena, CTRL_Entity *process, U64 vaddr, B32 decorated) +d_symbol_name_from_process_vaddr(Arena *arena, D_Entity *process, U64 vaddr, B32 decorated) { ProfBeginFunction(); String8 result = {0}; { - CTRL_Entity *module = ctrl_module_from_process_vaddr(process, vaddr); - DI_Key dbgi_key = ctrl_dbgi_key_from_module(module); - U64 voff = ctrl_voff_from_vaddr(module, vaddr); + D_Entity *module = d_module_from_process_vaddr(process, vaddr); + DI_Key dbgi_key = d_dbgi_key_from_module(module); + U64 voff = d_voff_from_vaddr(module, vaddr); result = d_symbol_name_from_dbgi_key_voff(arena, &dbgi_key, voff, decorated); } ProfEnd(); @@ -3118,12 +3104,12 @@ internal D_Entity * d_module_from_thread(D_Entity *thread) { D_Entity *process = thread->parent; - U64 rip = 0;// TODO(rjf): @msgs d_query_cached_rip_from_thread(thread); + U64 rip = d_query_cached_rip_from_thread(thread); return d_module_from_process_vaddr(process, rip); } internal U64 -d_tls_base_vaddr_from_process_root_rip(CTRL_Entity *process, U64 root_vaddr, U64 rip_vaddr) +d_tls_base_vaddr_from_process_root_rip(D_Entity *process, U64 root_vaddr, U64 rip_vaddr) { ProfBeginFunction(); U64 base_vaddr = 0; @@ -3131,15 +3117,15 @@ d_tls_base_vaddr_from_process_root_rip(CTRL_Entity *process, U64 root_vaddr, U64 if(!d_ctrl_targets_running()) { //- rjf: unpack module info - CTRL_Entity *module = ctrl_module_from_process_vaddr(process, rip_vaddr); - Rng1U64 tls_vaddr_range = ctrl_tls_vaddr_range_from_module(module->machine_id, module->handle); + D_Entity *module = d_module_from_process_vaddr(process, rip_vaddr); + Rng1U64 tls_vaddr_range = ctrl_tls_vaddr_range_from_module(module->ctrl_machine_id, module->ctrl_handle); U64 addr_size = bit_size_from_arch(process->arch)/8; //- rjf: read module's TLS index U64 tls_index = 0; if(addr_size != 0) { - CTRL_ProcessMemorySlice tls_index_slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, process->machine_id, process->handle, tls_vaddr_range, 0); + CTRL_ProcessMemorySlice tls_index_slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, process->ctrl_machine_id, process->ctrl_handle, tls_vaddr_range, 0); if(tls_index_slice.data.size >= addr_size) { tls_index = *(U64 *)tls_index_slice.data.str; @@ -3152,13 +3138,13 @@ d_tls_base_vaddr_from_process_root_rip(CTRL_Entity *process, U64 root_vaddr, U64 U64 thread_info_addr = root_vaddr; U64 tls_addr_off = tls_index*addr_size; U64 tls_addr_array = 0; - CTRL_ProcessMemorySlice tls_addr_array_slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, process->machine_id, process->handle, r1u64(thread_info_addr, thread_info_addr+addr_size), 0); + CTRL_ProcessMemorySlice tls_addr_array_slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, process->ctrl_machine_id, process->ctrl_handle, r1u64(thread_info_addr, thread_info_addr+addr_size), 0); String8 tls_addr_array_data = tls_addr_array_slice.data; if(tls_addr_array_data.size >= 8) { MemoryCopy(&tls_addr_array, tls_addr_array_data.str, sizeof(U64)); } - CTRL_ProcessMemorySlice result_slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, process->machine_id, process->handle, r1u64(tls_addr_array + tls_addr_off, tls_addr_array + tls_addr_off + addr_size), 0); + CTRL_ProcessMemorySlice result_slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, process->ctrl_machine_id, process->ctrl_handle, r1u64(tls_addr_array + tls_addr_off, tls_addr_array + tls_addr_off + addr_size), 0); String8 result_data = result_slice.data; if(result_data.size >= 8) { @@ -3230,9 +3216,6 @@ d_push_member_map_from_dbgi_key_voff(Arena *arena, DI_Scope *scope, DI_Key *dbgi internal B32 d_set_thread_rip(D_Entity *thread, U64 vaddr) { - // TODO(rjf): @msgs - return 0; -#if 0 Temp scratch = scratch_begin(0, 0); void *block = ctrl_query_cached_reg_block_from_thread(scratch.arena, d_state->ctrl_entity_store, thread->ctrl_machine_id, thread->ctrl_handle); regs_arch_block_write_rip(thread->arch, block, vaddr); @@ -3261,7 +3244,6 @@ d_set_thread_rip(D_Entity *thread, U64 vaddr) scratch_end(scratch); return result; -#endif } internal D_Entity * @@ -3287,9 +3269,9 @@ d_module_from_thread_candidates(D_Entity *thread, D_EntityList *candidates) } internal D_Unwind -d_unwind_from_ctrl_unwind(Arena *arena, DI_Scope *di_scope, CTRL_Entity *process, CTRL_Unwind *base_unwind) +d_unwind_from_ctrl_unwind(Arena *arena, DI_Scope *di_scope, D_Entity *process, CTRL_Unwind *base_unwind) { - Arch arch = process->arch; + Arch arch = d_arch_from_entity(process); D_Unwind result = {0}; result.frames.concrete_frame_count = base_unwind->frames.count; result.frames.total_frame_count = result.frames.concrete_frame_count; @@ -3299,9 +3281,9 @@ d_unwind_from_ctrl_unwind(Arena *arena, DI_Scope *di_scope, CTRL_Entity *process CTRL_UnwindFrame *src = &base_unwind->frames.v[idx]; D_UnwindFrame *dst = &result.frames.v[idx]; U64 rip_vaddr = regs_rip_from_arch_block(arch, src->regs); - CTRL_Entity *module = ctrl_module_from_process_vaddr(process, rip_vaddr); - U64 rip_voff = ctrl_voff_from_vaddr(module, rip_vaddr); - DI_Key dbgi_key = ctrl_dbgi_key_from_module(module); + D_Entity *module = d_module_from_process_vaddr(process, rip_vaddr); + U64 rip_voff = d_voff_from_vaddr(module, rip_vaddr); + DI_Key dbgi_key = d_dbgi_key_from_module(module); RDI_Parsed *rdi = di_rdi_from_key(di_scope, &dbgi_key, 0); RDI_Scope *scope = rdi_scope_from_voff(rdi, rip_voff); @@ -3390,7 +3372,7 @@ d_push_ctrl_msg(CTRL_Msg *msg) //- rjf: control thread running internal void -d_ctrl_run(D_RunKind run, CTRL_Entity *run_thread, CTRL_RunFlags flags, CTRL_TrapList *run_traps) +d_ctrl_run(D_RunKind run, D_Entity *run_thread, CTRL_RunFlags flags, CTRL_TrapList *run_traps) { Temp scratch = scratch_begin(0, 0); @@ -3403,11 +3385,11 @@ d_ctrl_run(D_RunKind run, CTRL_Entity *run_thread, CTRL_RunFlags flags, CTRL_Tra CTRL_Msg msg = {(run == D_RunKind_Run || run == D_RunKind_Step) ? CTRL_MsgKind_Run : CTRL_MsgKind_SingleStep}; { D_EntityList user_bps = d_query_cached_entity_list_with_kind(D_EntityKind_Breakpoint); - CTRL_Entity *process = ctrl_entity_ancestor_from_kind(run_thread, D_EntityKind_Process); + D_Entity *process = d_entity_ancestor_from_kind(run_thread, D_EntityKind_Process); msg.run_flags = flags; - msg.machine_id = run_thread->machine_id; - msg.entity = run_thread->handle; - msg.parent = process->handle; + msg.machine_id = run_thread->ctrl_machine_id; + msg.entity = run_thread->ctrl_handle; + msg.parent = process->ctrl_handle; MemoryCopyArray(msg.exception_code_filters, d_state->ctrl_exception_code_filters); if(run_traps != 0) { @@ -3484,8 +3466,7 @@ d_ctrl_run(D_RunKind run, CTRL_Entity *run_thread, CTRL_RunFlags flags, CTRL_Tra arena_clear(d_state->ctrl_last_run_arena); d_state->ctrl_last_run_kind = run; d_state->ctrl_last_run_frame_idx = d_frame_index(); - d_state->ctrl_last_run_machine_id = run_thread->machine_id; - d_state->ctrl_last_run_thread = run_thread->handle; + d_state->ctrl_last_run_thread = d_handle_from_entity(run_thread); d_state->ctrl_last_run_flags = flags; d_state->ctrl_last_run_traps = ctrl_trap_list_copy(d_state->ctrl_last_run_arena, &run_traps_copy); d_state->ctrl_is_running = 1; @@ -3510,19 +3491,19 @@ d_ctrl_last_stop_event(void) //- rjf: entity <-> eval space -internal CTRL_Entity * +internal D_Entity * d_entity_from_eval_space(E_Space space) { - CTRL_Entity *entity = &ctrl_entity_nil; + D_Entity *entity = &d_nil_entity; if(space.u64[0] == 0 && space.u64[1] != 0) { - entity = (CTRL_Entity *)space.u64[1]; + entity = (D_Entity *)space.u64[1]; } return entity; } internal E_Space -d_eval_space_from_entity(CTRL_Entity *entity) +d_eval_space_from_entity(D_Entity *entity) { E_Space space = {0}; space.u64[1] = (U64)entity; @@ -3535,11 +3516,11 @@ internal B32 d_eval_space_read(void *u, E_Space space, void *out, Rng1U64 range) { B32 result = 0; - CTRL_Entity *entity = d_entity_from_eval_space(space); + D_Entity *entity = d_entity_from_eval_space(space); switch(entity->kind) { //- rjf: nil-space -> fall back to file system - case CTRL_EntityKind_Null: + case D_EntityKind_Nil: { U128 key = space; U128 hash = hs_hash_from_key(key, 0); @@ -3558,7 +3539,6 @@ d_eval_space_read(void *u, E_Space space, void *out, Rng1U64 range) }break; //- rjf: default -> evaluating a debugger entity; read from entity POD evaluation -#if 0 // TODO(rjf): @msgs default: { Temp scratch = scratch_begin(0, 0); @@ -3580,13 +3560,12 @@ d_eval_space_read(void *u, E_Space space, void *out, Rng1U64 range) } scratch_end(scratch); }break; -#endif //- rjf: process -> reading process memory - case CTRL_EntityKind_Process: + case D_EntityKind_Process: { Temp scratch = scratch_begin(0, 0); - CTRL_ProcessMemorySlice slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, entity->machine_id, entity->handle, range, d_state->frame_eval_memread_endt_us); + CTRL_ProcessMemorySlice slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, entity->ctrl_machine_id, entity->ctrl_handle, range, d_state->frame_eval_memread_endt_us); String8 data = slice.data; if(data.size == dim_1u64(range)) { @@ -3622,11 +3601,10 @@ internal B32 d_eval_space_write(void *u, E_Space space, void *in, Rng1U64 range) { B32 result = 0; - CTRL_Entity *entity = d_entity_from_eval_space(space); + D_Entity *entity = d_entity_from_eval_space(space); switch(entity->kind) { //- rjf: default -> making commits to entity evaluation -#if 0 default: { Temp scratch = scratch_begin(0, 0); @@ -3660,23 +3638,22 @@ d_eval_space_write(void *u, E_Space space, void *in, Rng1U64 range) } scratch_end(scratch); }break; -#endif //- rjf: process -> commit to process memory - case CTRL_EntityKind_Process: + case D_EntityKind_Process: { - result = ctrl_process_write(entity->machine_id, entity->handle, range, in); + result = ctrl_process_write(entity->ctrl_machine_id, entity->ctrl_handle, range, in); }break; //- rjf: thread -> commit to thread's register block - case CTRL_EntityKind_Thread: + case D_EntityKind_Thread: { CTRL_Unwind unwind = d_query_cached_unwind_from_thread(entity); U64 frame_idx = 0; if(frame_idx < unwind.frames.count) { Temp scratch = scratch_begin(0, 0); - U64 regs_size = regs_block_size_from_arch(entity->arch); + U64 regs_size = regs_block_size_from_arch(d_arch_from_entity(entity)); Rng1U64 legal_range = r1u64(0, regs_size); Rng1U64 write_range = intersect_1u64(legal_range, range); U64 write_size = dim_1u64(write_range); @@ -3684,7 +3661,7 @@ d_eval_space_write(void *u, E_Space space, void *in, Rng1U64 range) void *new_regs = push_array(scratch.arena, U8, regs_size); MemoryCopy(new_regs, f->regs, regs_size); MemoryCopy((U8 *)new_regs + write_range.min, in, write_size); - result = ctrl_thread_write_reg_block(entity->machine_id, entity->handle, new_regs); + result = ctrl_thread_write_reg_block(entity->ctrl_machine_id, entity->ctrl_handle, new_regs); scratch_end(scratch); } }break; @@ -3698,7 +3675,7 @@ internal U128 d_key_from_eval_space_range(E_Space space, Rng1U64 range, B32 zero_terminated) { U128 result = {0}; - CTRL_Entity *entity = d_entity_from_eval_space(space); + D_Entity *entity = d_entity_from_eval_space(space); switch(entity->kind) { //- rjf: nil space -> filesystem key encoded inside of `space` @@ -3710,7 +3687,7 @@ d_key_from_eval_space_range(E_Space space, Rng1U64 range, B32 zero_terminated) //- rjf: process space -> query case D_EntityKind_Process: { - result = ctrl_hash_store_key_from_process_vaddr_range(entity->machine_id, entity->handle, range, zero_terminated); + result = ctrl_hash_store_key_from_process_vaddr_range(entity->ctrl_machine_id, entity->ctrl_handle, range, zero_terminated); }break; } return result; @@ -3722,11 +3699,11 @@ internal Rng1U64 d_whole_range_from_eval_space(E_Space space) { Rng1U64 result = r1u64(0, 0); - CTRL_Entity *entity = d_entity_from_eval_space(space); + D_Entity *entity = d_entity_from_eval_space(space); switch(entity->kind) { //- rjf: nil space -> filesystem key encoded inside of `space` - case CTRL_EntityKind_Null: + case D_EntityKind_Nil: { HS_Scope *scope = hs_scope_open(); U128 hash = {0}; @@ -3742,7 +3719,7 @@ d_whole_range_from_eval_space(E_Space space) result = r1u64(0, data.size); hs_scope_close(scope); }break; - case CTRL_EntityKind_Process: + case D_EntityKind_Process: { result = r1u64(0, 0x7FFFFFFFFFFFull); }break; @@ -5392,9 +5369,6 @@ d_tex2dformat_from_eval_params(E_Eval eval, MD_Node *params) internal D_Entity * d_entity_from_eval_string(String8 string) { - // TODO(rjf): @msgs - return 0; -#if 0 D_Entity *entity = &d_nil_entity; { Temp scratch = scratch_begin(0, 0); @@ -5403,18 +5377,13 @@ d_entity_from_eval_string(String8 string) scratch_end(scratch); } return entity; -#endif } internal String8 d_eval_string_from_entity(Arena *arena, D_Entity *entity) { - // TODO(rjf): @msgs - return str8_zero(); -#if 0 String8 eval_string = push_str8f(arena, "macro:`$%I64u`", entity->id); return eval_string; -#endif } //- rjf: eval <-> file path @@ -5512,40 +5481,6 @@ d_pop_regs(void) return regs; } -//- rjf: register setting helpers - -internal void -d_regs_set_thread(CTRL_Entity *thread) -{ - CTRL_Entity *process = ctrl_entity_ancestor_from_kind(thread, CTRL_EntityKind_Process); - U64 rip_vaddr = ctrl_query_cached_rip_from_thread(d_state->ctrl_entity_store, thread->machine_id, thread->handle); - CTRL_Entity *module = ctrl_module_from_process_vaddr(process, rip_vaddr); - d_regs()->machine_id = thread->machine_id; - d_regs()->thread = thread->handle; - d_regs()->process = process->handle; - d_regs()->module = module->handle; -} - -//- rjf: register accessing helpers - -internal CTRL_Entity * -d_regs_process(void) -{ - return ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, d_regs()->machine_id, d_regs()->process); -} - -internal CTRL_Entity * -d_regs_thread(void) -{ - return ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, d_regs()->machine_id, d_regs()->thread); -} - -internal CTRL_Entity * -d_regs_module(void) -{ - return ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, d_regs()->machine_id, d_regs()->module); -} - //- rjf: undo/redo history internal D_StateDeltaHistory * @@ -5653,7 +5588,7 @@ d_cfg_raw_from_escaped_string(Arena *arena, String8 string) } internal String8List -d_cfg_strings_from_state(Arena *arena, String8 root_path, D_CfgSrc source) +d_cfg_strings_from_core(Arena *arena, String8 root_path, D_CfgSrc source) { ProfBeginFunction(); local_persist char *spaces = " "; @@ -5917,23 +5852,23 @@ d_entity_from_expand_key_and_kind(D_ExpandKey key, D_EntityKind kind) //- rjf: per-run caches internal CTRL_Unwind -d_query_cached_unwind_from_thread(CTRL_Entity *thread) +d_query_cached_unwind_from_thread(D_Entity *thread) { Temp scratch = scratch_begin(0, 0); CTRL_Unwind result = {0}; - if(thread->kind == CTRL_EntityKind_Thread) + if(thread->kind == D_EntityKind_Thread) { U64 reg_gen = ctrl_reg_gen(); U64 mem_gen = ctrl_mem_gen(); D_UnwindCache *cache = &d_state->unwind_cache; - CTRL_MachineIDHandlePair pair = {thread->machine_id, thread->handle}; - U64 hash = d_hash_from_string(str8_struct(&pair)); + D_Handle handle = d_handle_from_entity(thread); + U64 hash = d_hash_from_string(str8_struct(&handle)); U64 slot_idx = hash%cache->slots_count; D_UnwindCacheSlot *slot = &cache->slots[slot_idx]; D_UnwindCacheNode *node = 0; for(D_UnwindCacheNode *n = slot->first; n != 0; n = n->next) { - if(MemoryMatchStruct(&n->pair, &pair)) + if(d_handle_match(handle, n->thread)) { node = n; break; @@ -5953,12 +5888,12 @@ d_query_cached_unwind_from_thread(CTRL_Entity *thread) MemoryZeroStruct(node); DLLPushBack(slot->first, slot->last, node); node->arena = arena_alloc(); - node->pair = pair; + node->thread = handle; } if(node->reggen != reg_gen || node->memgen != mem_gen) { - CTRL_Unwind new_unwind = ctrl_unwind_from_thread(scratch.arena, d_state->ctrl_entity_store, thread->machine_id, thread->handle, os_now_microseconds()+100); + CTRL_Unwind new_unwind = ctrl_unwind_from_thread(scratch.arena, d_state->ctrl_entity_store, thread->ctrl_machine_id, thread->ctrl_handle, os_now_microseconds()+100); if(!(new_unwind.flags & (CTRL_UnwindFlag_Error|CTRL_UnwindFlag_Stale)) && new_unwind.frames.count != 0) { node->unwind = ctrl_unwind_deep_copy(node->arena, thread->arch, &new_unwind); @@ -5973,19 +5908,19 @@ d_query_cached_unwind_from_thread(CTRL_Entity *thread) } internal U64 -d_query_cached_rip_from_thread(CTRL_Entity *thread) +d_query_cached_rip_from_thread(D_Entity *thread) { U64 result = d_query_cached_rip_from_thread_unwind(thread, 0); return result; } internal U64 -d_query_cached_rip_from_thread_unwind(CTRL_Entity *thread, U64 unwind_count) +d_query_cached_rip_from_thread_unwind(D_Entity *thread, U64 unwind_count) { U64 result = 0; if(unwind_count == 0) { - result = ctrl_query_cached_rip_from_thread(d_state->ctrl_entity_store, thread->machine_id, thread->handle); + result = ctrl_query_cached_rip_from_thread(d_state->ctrl_entity_store, thread->ctrl_machine_id, thread->ctrl_handle); } else { @@ -5999,7 +5934,7 @@ d_query_cached_rip_from_thread_unwind(CTRL_Entity *thread, U64 unwind_count) } internal U64 -d_query_cached_tls_base_vaddr_from_process_root_rip(CTRL_Entity *process, U64 root_vaddr, U64 rip_vaddr) +d_query_cached_tls_base_vaddr_from_process_root_rip(D_Entity *process, U64 root_vaddr, U64 rip_vaddr) { U64 result = 0; for(U64 cache_idx = 0; cache_idx < ArrayCount(d_state->tls_base_caches); cache_idx += 1) @@ -6014,14 +5949,14 @@ d_query_cached_tls_base_vaddr_from_process_root_rip(CTRL_Entity *process, U64 ro { break; } - CTRL_MachineIDHandlePair pair = {process->machine_id, process->handle}; - U64 hash = d_hash_from_seed_string(d_hash_from_string(str8_struct(&pair)), str8_struct(&rip_vaddr)); + D_Handle handle = d_handle_from_entity(process); + U64 hash = d_hash_from_seed_string(d_hash_from_string(str8_struct(&handle)), str8_struct(&rip_vaddr)); U64 slot_idx = hash%cache->slots_count; D_RunTLSBaseCacheSlot *slot = &cache->slots[slot_idx]; D_RunTLSBaseCacheNode *node = 0; for(D_RunTLSBaseCacheNode *n = slot->first; n != 0; n = n->hash_next) { - if(MemoryMatchStruct(&pair, &n->pair) && n->root_vaddr == root_vaddr && n->rip_vaddr == rip_vaddr) + if(d_handle_match(n->process, handle) && n->root_vaddr == root_vaddr && n->rip_vaddr == rip_vaddr) { node = n; break; @@ -6034,7 +5969,7 @@ d_query_cached_tls_base_vaddr_from_process_root_rip(CTRL_Entity *process, U64 ro { node = push_array(cache->arena, D_RunTLSBaseCacheNode, 1); SLLQueuePush_N(slot->first, slot->last, node, hash_next); - node->pair = pair; + node->process = handle; node->root_vaddr = root_vaddr; node->rip_vaddr = rip_vaddr; node->tls_base_vaddr = tls_base_vaddr; @@ -6475,7 +6410,7 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) B32 should_snap = !(d_state->ctrl_soft_halt_issued); d_state->ctrl_is_running = 0; d_state->ctrl_soft_halt_issued = 0; - CTRL_Entity *stop_thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, event->machine_id, event->entity); + D_Entity *stop_thread = d_entity_from_ctrl_handle(event->machine_id, event->entity); // rjf: gather stop info { @@ -6484,35 +6419,35 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) d_state->ctrl_last_stop_event.string = push_str8_copy(d_state->ctrl_stop_arena, d_state->ctrl_last_stop_event.string); } - // rjf: select thread causing stop + // rjf: select & snap to thread causing stop if(should_snap && stop_thread->kind == D_EntityKind_Thread) { - d_msg(D_MsgKind_SelectThread, .machine_id = event->machine_id, .thread = event->entity); + log_infof("stop_thread: \"%S\"\n", d_display_string_from_entity(scratch.arena, stop_thread)); + D_CmdParams params = d_cmd_params_zero(); + params.entity = d_handle_from_entity(stop_thread); + d_cmd_list_push(arena, cmds, ¶ms, d_cmd_spec_from_kind(D_CmdKind_SelectThread)); } // rjf: if no stop-causing thread, and if selected thread, snap to selected - // TODO(rjf): @msgs -#if 0 if(should_snap && d_entity_is_nil(stop_thread)) { - CTRL_Entity *selected_thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, d_regs()->machine_id, d_regs()->thread); - if(selected_thread != &ctrl_entity_nil) + D_Entity *selected_thread = d_entity_from_handle(d_regs()->thread); + if(!d_entity_is_nil(selected_thread)) { D_CmdParams params = d_cmd_params_zero(); params.entity = d_handle_from_entity(selected_thread); d_cmd_list_push(arena, cmds, ¶ms, d_cmd_spec_from_kind(D_CmdKind_FindThread)); } } -#endif // rjf: thread hit user breakpoint -> increment breakpoint hit count if(should_snap && event->cause == CTRL_EventCause_UserBreakpoint) { - U64 stop_thread_vaddr = ctrl_query_cached_rip_from_thread(d_state->ctrl_entity_store, stop_thread->machine_id, stop_thread->handle); - CTRL_Entity *process = ctrl_entity_ancestor_from_kind(stop_thread, CTRL_EntityKind_Process); - CTRL_Entity *module = ctrl_module_from_process_vaddr(process, stop_thread_vaddr); - DI_Key dbgi_key = ctrl_dbgi_key_from_module(module); - U64 stop_thread_voff = ctrl_voff_from_vaddr(module, stop_thread_vaddr); + U64 stop_thread_vaddr = ctrl_query_cached_rip_from_thread(d_state->ctrl_entity_store, stop_thread->ctrl_machine_id, stop_thread->ctrl_handle); + D_Entity *process = d_entity_ancestor_from_kind(stop_thread, D_EntityKind_Process); + D_Entity *module = d_module_from_process_vaddr(process, stop_thread_vaddr); + DI_Key dbgi_key = d_dbgi_key_from_module(module); + U64 stop_thread_voff = d_voff_from_vaddr(module, stop_thread_vaddr); D_EntityList user_bps = d_query_cached_entity_list_with_kind(D_EntityKind_Breakpoint); for(D_EntityNode *n = user_bps.first; n != 0; n = n->next) { @@ -6663,11 +6598,10 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) d_entity_equip_color_rgba(entity, thread_color); // rjf: automatically select if we don't have a selected thread - CTRL_Entity *selected_thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, d_state->base_regs.v.machine_id, d_state->base_regs.v.thread); - if(selected_thread == &ctrl_entity_nil) + D_Entity *selected_thread = d_entity_from_handle(d_state->base_regs.v.thread); + if(d_entity_is_nil(selected_thread)) { - d_state->base_regs.v.machine_id = event->machine_id; - d_state->base_regs.v.thread = event->entity; + d_state->base_regs.v.thread = d_handle_from_entity(entity); } // rjf: do initial snap @@ -6883,7 +6817,7 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) for(D_UnwindCacheNode *n = slot->first, *next = 0; n != 0; n = next) { next = n->next; - if(ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, n->pair.machine_id, n->pair.handle) == &ctrl_entity_nil) + if(d_entity_is_nil(d_entity_from_handle(n->thread))) { DLLRemove(slot->first, slot->last, n); arena_release(n->arena); @@ -7030,7 +6964,7 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) } // rjf: run - d_ctrl_run(D_RunKind_Run, &ctrl_entity_nil, CTRL_RunFlag_StopOnEntryPoint * (msg->kind == D_MsgKind_LaunchAndStepInto), 0); + d_ctrl_run(D_RunKind_Run, &d_nil_entity, CTRL_RunFlag_StopOnEntryPoint * (msg->kind == D_MsgKind_LaunchAndStepInto), 0); } // rjf: no targets -> error @@ -7111,10 +7045,10 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) case D_MsgKind_Continue: { B32 good_to_run = 0; - CTRL_EntityList machines = ctrl_entity_list_from_kind(d_state->ctrl_entity_store, CTRL_EntityKind_Machine); - for(CTRL_EntityNode *n = machines.first; n != 0; n = n->next) + D_EntityList machines = d_query_cached_entity_list_with_kind(D_EntityKind_Machine); + for(D_EntityNode *n = machines.first; n != 0; n = n->next) { - CTRL_Entity *machine = n->v; + D_Entity *machine = n->entity; if(!d_entity_is_frozen(machine)) { good_to_run = 1; @@ -7123,7 +7057,7 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) } if(good_to_run) { - d_ctrl_run(D_RunKind_Run, &ctrl_entity_nil, 0, 0); + d_ctrl_run(D_RunKind_Run, &d_nil_entity, 0, 0); } else { @@ -7138,7 +7072,7 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) case D_MsgKind_StepOverLine: case D_MsgKind_StepOut: { - CTRL_Entity *thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, regs->machine_id, regs->thread); + D_Entity *thread = d_entity_from_handle(regs->thread); if(d_ctrl_targets_running()) { if(d_ctrl_last_run_kind() == D_RunKind_Run) @@ -7164,7 +7098,7 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) case D_MsgKind_StepOut: { // rjf: thread => full unwind - CTRL_Unwind unwind = ctrl_unwind_from_thread(scratch.arena, d_state->ctrl_entity_store, thread->machine_id, thread->handle, os_now_microseconds()+10000); + CTRL_Unwind unwind = ctrl_unwind_from_thread(scratch.arena, d_state->ctrl_entity_store, thread->ctrl_machine_id, thread->ctrl_handle, os_now_microseconds()+10000); // rjf: use first unwind frame to generate trap if(unwind.flags == 0 && unwind.frames.count > 1) @@ -7203,19 +7137,18 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) { if(d_ctrl_targets_running()) { - CTRL_Entity *thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, d_state->ctrl_last_run_machine_id, d_state->ctrl_last_run_thread); - d_ctrl_run(d_state->ctrl_last_run_kind, thread, d_state->ctrl_last_run_flags, &d_state->ctrl_last_run_traps); + d_ctrl_run(d_state->ctrl_last_run_kind, d_entity_from_handle(d_state->ctrl_last_run_thread), d_state->ctrl_last_run_flags, &d_state->ctrl_last_run_traps); } }break; //- rjf: [low level target operations] setting thread rip case D_MsgKind_SetThreadIP: { - CTRL_Entity *thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, regs->machine_id, regs->thread); + D_Entity *thread = d_entity_from_handle(regs->thread); U64 vaddr = regs->vaddr_range.min; - void *block = ctrl_query_cached_reg_block_from_thread(scratch.arena, d_state->ctrl_entity_store, thread->machine_id, thread->handle); + void *block = ctrl_query_cached_reg_block_from_thread(scratch.arena, d_state->ctrl_entity_store, thread->ctrl_machine_id, thread->ctrl_handle); regs_arch_block_write_rip(thread->arch, block, vaddr); - B32 result = ctrl_thread_write_reg_block(thread->machine_id, thread->handle, block); + B32 result = ctrl_thread_write_reg_block(thread->ctrl_machine_id, thread->ctrl_handle, block); // rjf: early mutation of unwind cache for immediate frontend effect if(result) @@ -7223,13 +7156,13 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) D_UnwindCache *cache = &d_state->unwind_cache; if(cache->slots_count != 0) { - CTRL_MachineIDHandlePair pair = {thread->machine_id, thread->handle}; - U64 hash = d_hash_from_string(str8_struct(&pair)); + D_Handle thread_handle = d_handle_from_entity(thread); + U64 hash = d_hash_from_string(str8_struct(&thread_handle)); U64 slot_idx = hash%cache->slots_count; D_UnwindCacheSlot *slot = &cache->slots[slot_idx]; for(D_UnwindCacheNode *n = slot->first; n != 0; n = n->next) { - if(MemoryMatchStruct(&pair, &n->pair) && n->unwind.frames.count != 0) + if(d_handle_match(n->thread, thread_handle) && n->unwind.frames.count != 0) { regs_arch_block_write_rip(thread->arch, n->unwind.frames.v[0].regs, vaddr); break; @@ -7329,22 +7262,20 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) //- rjf: thread / frame selection case D_MsgKind_SelectThread: { - CTRL_Entity *thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, regs->machine_id, regs->thread); - CTRL_Entity *process = ctrl_entity_ancestor_from_kind(thread, CTRL_EntityKind_Process); - U64 rip_vaddr = ctrl_query_cached_rip_from_thread(d_state->ctrl_entity_store, regs->machine_id, regs->thread); - CTRL_Entity *module = ctrl_module_from_process_vaddr(process, rip_vaddr); + D_Entity *thread = d_entity_from_handle(regs->thread); + D_Entity *module = d_module_from_thread(thread); + D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); d_state->base_regs.v.unwind_count = 0; d_state->base_regs.v.inline_depth = 0; - d_state->base_regs.v.machine_id = regs->machine_id; - d_state->base_regs.v.thread = thread->handle; - d_state->base_regs.v.module = module->handle; - d_state->base_regs.v.process = process->handle; + d_state->base_regs.v.thread = d_handle_from_entity(thread); + d_state->base_regs.v.module = d_handle_from_entity(module); + d_state->base_regs.v.process = d_handle_from_entity(process); }break; case D_MsgKind_SelectUnwind: { DI_Scope *di_scope = di_scope_open(); - CTRL_Entity *thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, d_state->base_regs.v.machine_id, d_state->base_regs.v.thread); - CTRL_Entity *process = ctrl_entity_ancestor_from_kind(thread, CTRL_EntityKind_Process); + D_Entity *thread = d_entity_from_handle(d_state->base_regs.v.thread); + D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); CTRL_Unwind base_unwind = d_query_cached_unwind_from_thread(thread); D_Unwind rich_unwind = d_unwind_from_ctrl_unwind(scratch.arena, di_scope, process, &base_unwind); if(regs->unwind_count < rich_unwind.frames.concrete_frame_count) @@ -7363,8 +7294,8 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) case D_MsgKind_DownOneFrame: { DI_Scope *di_scope = di_scope_open(); - CTRL_Entity *thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, d_state->base_regs.v.machine_id, d_state->base_regs.v.thread); - CTRL_Entity *process = ctrl_entity_ancestor_from_kind(thread, CTRL_EntityKind_Process); + D_Entity *thread = d_entity_from_handle(d_state->base_regs.v.thread); + D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); CTRL_Unwind base_unwind = d_query_cached_unwind_from_thread(thread); D_Unwind rich_unwind = d_unwind_from_ctrl_unwind(scratch.arena, di_scope, process, &base_unwind); U64 crnt_unwind_idx = d_state->base_regs.v.unwind_count; @@ -7410,35 +7341,21 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) }break; //- rjf: thread freezing/thawing - case D_MsgKind_FreezeThread: - case D_MsgKind_ThawThread: - case D_MsgKind_FreezeProcess: - case D_MsgKind_ThawProcess: - case D_MsgKind_FreezeMachine: - case D_MsgKind_ThawMachine: - { - CTRL_Entity *root = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, regs->machine_id, - msg->kind == D_MsgKind_FreezeThread ? regs->thread : - msg->kind == D_MsgKind_ThawThread ? regs->thread : - msg->kind == D_MsgKind_FreezeProcess? regs->process : - msg->kind == D_MsgKind_ThawProcess ? regs->process : dmn_handle_zero()); - for(CTRL_Entity *e = root; - e != &ctrl_entity_nil; - e = ctrl_entity_rec_depth_first_pre(e, root).next) - { - if(e->kind == CTRL_EntityKind_Thread) - { - - } - } - }break; + case D_MsgKind_FreezeThread: {d_msg(D_MsgKind_FreezeEntity, .entity = regs->thread);}break; + case D_MsgKind_ThawThread: {d_msg(D_MsgKind_ThawEntity, .entity = regs->thread);}break; + case D_MsgKind_FreezeProcess: {d_msg(D_MsgKind_FreezeEntity, .entity = regs->process);}break; + case D_MsgKind_ThawProcess: {d_msg(D_MsgKind_ThawEntity, .entity = regs->process);}break; + case D_MsgKind_FreezeMachine: {d_msg(D_MsgKind_FreezeEntity, .entity = regs->machine);}break; + case D_MsgKind_ThawMachine: {d_msg(D_MsgKind_ThawEntity, .entity = regs->machine);}break; case D_MsgKind_FreezeLocalMachine: { - d_msg(D_MsgKind_FreezeMachine, .machine_id = CTRL_MachineID_Local); + D_Entity *machine = d_machine_entity_from_machine_id(CTRL_MachineID_Local); + d_msg(D_MsgKind_FreezeEntity, .entity = d_handle_from_entity(machine)); }break; case D_MsgKind_ThawLocalMachine: { - d_msg(D_MsgKind_ThawMachine, .machine_id = CTRL_MachineID_Local); + D_Entity *machine = d_machine_entity_from_machine_id(CTRL_MachineID_Local); + d_msg(D_MsgKind_ThawEntity, .entity = d_handle_from_entity(machine)); }break; //- rjf: path overrides (TODO(rjf)) @@ -7465,6 +7382,21 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) D_Entity *entity = d_entity_from_handle(regs->entity); d_entity_equip_disabled(entity, 1); }break; + case D_MsgKind_FreezeEntity: + case D_MsgKind_ThawEntity: + { + B32 should_freeze = (msg->kind == D_MsgKind_FreezeEntity); + D_Entity *root = d_entity_from_handle(regs->entity); + for(D_Entity *e = root; + !d_entity_is_nil(e); + e = d_entity_rec_depth_first_pre(e, root).next) + { + if(e->kind == D_EntityKind_Thread) + { + d_set_thread_freeze_state(e, should_freeze); + } + } + }break; case D_MsgKind_RemoveEntity: case D_MsgKind_RemoveBreakpoint: case D_MsgKind_RemoveTarget: @@ -7712,7 +7644,7 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) }break; case D_MsgKind_SetNextStatement: { - CTRL_Entity *thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, regs->machine_id, regs->thread); + D_Entity *thread = d_entity_from_handle(regs->thread); String8 file_path = regs->file_path; U64 new_rip_vaddr = regs->vaddr_range.min; if(file_path.size != 0) @@ -7720,11 +7652,11 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) D_LineList *lines = ®s->lines; for(D_LineNode *n = lines->first; n != 0; n = n->next) { - CTRL_EntityList modules = ctrl_modules_from_dbgi_key(scratch.arena, d_state->ctrl_entity_store, &n->v.dbgi_key); - CTRL_Entity *module = ctrl_module_from_thread_candidates(d_state->ctrl_entity_store, thread, &modules); - if(module != &ctrl_entity_nil) + D_EntityList modules = d_modules_from_dbgi_key(scratch.arena, &n->v.dbgi_key); + D_Entity *module = d_module_from_thread_candidates(thread, &modules); + if(!d_entity_is_nil(module)) { - new_rip_vaddr = ctrl_vaddr_from_voff(module, n->v.voff_range.min); + new_rip_vaddr = d_vaddr_from_voff(module, n->v.voff_range.min); break; } } @@ -7858,8 +7790,6 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) ////////////////////////////// //- rjf: process top-level commands // - // TODO(rjf): @msgs -#if 0 ProfScope("process top-level commands") { Temp scratch = scratch_begin(&arena, 1); @@ -8160,7 +8090,7 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) U64 vaddr = params.vaddr; if(thread->kind == D_EntityKind_Thread && vaddr != 0) { - // TODO(rjf): @msgs d_set_thread_rip(thread, vaddr); + d_set_thread_rip(thread, vaddr); } }break; @@ -8808,7 +8738,7 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) arena_clear(d_state->cfg_write_arenas[src]); MemoryZeroStruct(&d_state->cfg_write_data[src]); String8 path = d_cfg_path_from_src(src); - String8List strs = d_cfg_strings_from_state(scratch.arena, path, src); + String8List strs = d_cfg_strings_from_core(scratch.arena, path, src); String8 header = push_str8f(scratch.arena, "// raddbg %s file\n\n", d_cfg_src_string_table[src].str); str8_list_push_front(scratch.arena, &strs, header); String8 data = str8_list_join(scratch.arena, &strs, 0); @@ -9431,22 +9361,20 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) } scratch_end(scratch); } -#endif ////////////////////////////// //- rjf: unpack eval-dependent info // - CTRL_MachineID machine_id = d_regs()->machine_id; - CTRL_Entity *process = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, machine_id, d_regs()->process); - CTRL_Entity *thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, machine_id, d_regs()->thread); - Arch arch = thread->arch; + D_Entity *process = d_entity_from_handle(d_regs()->process); + D_Entity *thread = d_entity_from_handle(d_regs()->thread); + Arch arch = d_arch_from_entity(thread); U64 unwind_count = d_regs()->unwind_count; U64 rip_vaddr = d_query_cached_rip_from_thread_unwind(thread, unwind_count); CTRL_Unwind unwind = d_query_cached_unwind_from_thread(thread); - CTRL_Entity *module = ctrl_module_from_process_vaddr(process, rip_vaddr); - U64 rip_voff = ctrl_voff_from_vaddr(module, rip_vaddr); - U64 tls_root_vaddr = ctrl_query_cached_tls_root_vaddr_from_thread(d_state->ctrl_entity_store, thread->machine_id, thread->handle); - CTRL_EntityList all_modules = ctrl_entity_list_from_kind(d_state->ctrl_entity_store, D_EntityKind_Module); + D_Entity *module = d_module_from_process_vaddr(process, rip_vaddr); + U64 rip_voff = d_voff_from_vaddr(module, rip_vaddr); + U64 tls_root_vaddr = ctrl_query_cached_tls_root_vaddr_from_thread(d_state->ctrl_entity_store, thread->ctrl_machine_id, thread->ctrl_handle); + D_EntityList all_modules = d_query_cached_entity_list_with_kind(D_EntityKind_Module); U64 eval_modules_count = Max(1, all_modules.count); E_Module *eval_modules = push_array(arena, E_Module, eval_modules_count); E_Module *eval_modules_primary = &eval_modules[0]; @@ -9455,20 +9383,39 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) DI_Key primary_dbgi_key = {0}; { U64 eval_module_idx = 0; - for(CTRL_EntityNode *n = all_modules.first; n != 0; n = n->next, eval_module_idx += 1) + for(D_EntityNode *n = all_modules.first; n != 0; n = n->next, eval_module_idx += 1) { - CTRL_Entity *m = n->v; - DI_Key dbgi_key = ctrl_dbgi_key_from_module(m); - eval_modules[eval_module_idx].arch = m->arch; + D_Entity *m = n->entity; + DI_Key dbgi_key = d_dbgi_key_from_module(m); + eval_modules[eval_module_idx].arch = d_arch_from_entity(m); eval_modules[eval_module_idx].rdi = di_rdi_from_key(di_scope, &dbgi_key, 0); - eval_modules[eval_module_idx].vaddr_range = m->vaddr_range; - eval_modules[eval_module_idx].space = d_eval_space_from_entity(ctrl_entity_ancestor_from_kind(m, CTRL_EntityKind_Process)); + eval_modules[eval_module_idx].vaddr_range = m->vaddr_rng; + eval_modules[eval_module_idx].space = d_eval_space_from_entity(d_entity_ancestor_from_kind(m, D_EntityKind_Process)); if(module == m) { eval_modules_primary = &eval_modules[eval_module_idx]; } } } + U64 rdis_count = Max(1, all_modules.count); + RDI_Parsed **rdis = push_array(arena, RDI_Parsed *, rdis_count); + rdis[0] = &di_rdi_parsed_nil; + U64 rdis_primary_idx = 0; + Rng1U64 *rdis_vaddr_ranges = push_array(arena, Rng1U64, rdis_count); + { + U64 idx = 0; + for(D_EntityNode *n = all_modules.first; n != 0; n = n->next, idx += 1) + { + DI_Key dbgi_key = d_dbgi_key_from_module(n->entity); + rdis[idx] = di_rdi_from_key(di_scope, &dbgi_key, 0); + rdis_vaddr_ranges[idx] = n->entity->vaddr_rng; + if(n->entity == module) + { + primary_dbgi_key = dbgi_key; + rdis_primary_idx = idx; + } + } + } ////////////////////////////// //- rjf: build eval type context @@ -9516,23 +9463,23 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) //- rjf: add macros for constants { // rjf: pid -> current process' ID + if(!d_entity_is_nil(process)) { E_Expr *expr = e_push_expr(arena, E_ExprKind_LeafU64, 0); - expr->value.u64 = process->id; + expr->value.u64 = process->ctrl_id; e_string2expr_map_insert(arena, ctx->macro_map, str8_lit("pid"), expr); } // rjf: tid -> current thread's ID + if(!d_entity_is_nil(thread)) { E_Expr *expr = e_push_expr(arena, E_ExprKind_LeafU64, 0); - expr->value.u64 = thread->id; + expr->value.u64 = thread->ctrl_id; e_string2expr_map_insert(arena, ctx->macro_map, str8_lit("tid"), expr); } } //- rjf: add macros for entities -#if 0 - // TODO(rjf): @msgs { Temp scratch = scratch_begin(&arena, 1); E_MemberList entity_members = {0}; @@ -9574,7 +9521,6 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) } scratch_end(scratch); } -#endif //- rjf: add macros for all watches which define identifiers D_EntityList watches = d_query_cached_entity_list_with_kind(D_EntityKind_Watch); @@ -9605,7 +9551,7 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) ctx->reg_space = d_eval_space_from_entity(thread); ctx->reg_unwind_count = unwind_count; ctx->module_base = push_array(arena, U64, 1); - ctx->module_base[0] = module->vaddr_range.min; + ctx->module_base[0] = module->vaddr_rng.min; ctx->tls_base = push_array(arena, U64, 1); ctx->tls_base[0] = d_query_cached_tls_base_vaddr_from_process_root_rip(process, tls_root_vaddr, rip_vaddr); } @@ -9622,7 +9568,6 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) if(!u128_match(state_hash, d_state->ctrl_last_run_param_state_hash)) { d_cmd(D_CmdKind_SoftHaltRefresh); - d_msg(D_MsgKind_SoftHaltRefresh); } } diff --git a/src/dbg_engine/dbg_engine_core.h b/src/dbg_engine/dbg_engine_core.h index b974d460..b08c687e 100644 --- a/src/dbg_engine/dbg_engine_core.h +++ b/src/dbg_engine/dbg_engine_core.h @@ -835,7 +835,7 @@ struct D_UnwindCacheNode U64 reggen; U64 memgen; Arena *arena; - CTRL_MachineIDHandlePair pair; + D_Handle thread; CTRL_Unwind unwind; }; @@ -860,7 +860,7 @@ typedef struct D_RunTLSBaseCacheNode D_RunTLSBaseCacheNode; struct D_RunTLSBaseCacheNode { D_RunTLSBaseCacheNode *hash_next; - CTRL_MachineIDHandlePair pair; + D_Handle process; U64 root_vaddr; U64 rip_vaddr; U64 tls_base_vaddr; @@ -987,7 +987,6 @@ struct D_State D_MsgList msgs; // rjf: top-level command batch - // TODO(rjf): @msgs Arena *root_cmd_arena; D_CmdList root_cmds; @@ -1041,8 +1040,6 @@ struct D_State D_ViewRuleSpec **view_rule_spec_table; // rjf: freeze state - CTRL_MachineIDHandlePairList frozen_thread_handles; - CTRL_MachineIDHandlePairNode *free_frozen_thread_handle_node; D_HandleList frozen_threads; D_HandleNode *free_handle_node; @@ -1050,8 +1047,7 @@ struct D_State Arena *ctrl_last_run_arena; D_RunKind ctrl_last_run_kind; U64 ctrl_last_run_frame_idx; - CTRL_MachineID ctrl_last_run_machine_id; - DMN_Handle ctrl_last_run_thread; + D_Handle ctrl_last_run_thread; CTRL_RunFlags ctrl_last_run_flags; CTRL_TrapList ctrl_last_run_traps; U128 ctrl_last_run_param_state_hash; @@ -1303,7 +1299,7 @@ internal D_Entity *d_entity_from_u64_and_kind(U64 u64, D_EntityKind kind); //- rjf: entity freezing state internal void d_set_thread_freeze_state(D_Entity *thread, B32 frozen); -internal B32 d_entity_is_frozen(CTRL_Entity *entity); +internal B32 d_entity_is_frozen(D_Entity *entity); //////////////////////////////// //~ rjf: Command Stateful Functions @@ -1323,9 +1319,9 @@ internal D_ViewRuleSpec *d_view_rule_spec_from_string(String8 string); //////////////////////////////// //~ rjf: Stepping "Trap Net" Builders -internal CTRL_TrapList d_trap_net_from_thread__step_over_inst(Arena *arena, CTRL_Entity *thread); -internal CTRL_TrapList d_trap_net_from_thread__step_over_line(Arena *arena, CTRL_Entity *thread); -internal CTRL_TrapList d_trap_net_from_thread__step_into_line(Arena *arena, CTRL_Entity *thread); +internal CTRL_TrapList d_trap_net_from_thread__step_over_inst(Arena *arena, D_Entity *thread); +internal CTRL_TrapList d_trap_net_from_thread__step_over_line(Arena *arena, D_Entity *thread); +internal CTRL_TrapList d_trap_net_from_thread__step_into_line(Arena *arena, D_Entity *thread); //////////////////////////////// //~ rjf: Modules & Debug Info Mappings @@ -1346,7 +1342,7 @@ internal Rng1U64 d_vaddr_range_from_voff_range(D_Entity *module, Rng1U64 voff_rn //- rjf: voff|vaddr -> symbol lookups internal String8 d_symbol_name_from_dbgi_key_voff(Arena *arena, DI_Key *dbgi_key, U64 voff, B32 decorated); -internal String8 d_symbol_name_from_process_vaddr(Arena *arena, CTRL_Entity *process, U64 vaddr, B32 decorated); +internal String8 d_symbol_name_from_process_vaddr(Arena *arena, D_Entity *process, U64 vaddr, B32 decorated); //- rjf: symbol -> voff lookups internal U64 d_voff_from_dbgi_key_symbol_name(DI_Key *dbgi_key, String8 symbol_name); @@ -1364,13 +1360,13 @@ internal D_LineList d_lines_from_file_path_line_num(Arena *arena, String8 file_p internal D_Entity *d_module_from_process_vaddr(D_Entity *process, U64 vaddr); internal D_Entity *d_module_from_thread(D_Entity *thread); -internal U64 d_tls_base_vaddr_from_process_root_rip(CTRL_Entity *process, U64 root_vaddr, U64 rip_vaddr); +internal U64 d_tls_base_vaddr_from_process_root_rip(D_Entity *process, U64 root_vaddr, U64 rip_vaddr); internal Arch d_arch_from_entity(D_Entity *entity); internal E_String2NumMap *d_push_locals_map_from_dbgi_key_voff(Arena *arena, DI_Scope *scope, DI_Key *dbgi_key, U64 voff); internal E_String2NumMap *d_push_member_map_from_dbgi_key_voff(Arena *arena, DI_Scope *scope, DI_Key *dbgi_key, U64 voff); internal B32 d_set_thread_rip(D_Entity *thread, U64 vaddr); internal D_Entity *d_module_from_thread_candidates(D_Entity *thread, D_EntityList *candidates); -internal D_Unwind d_unwind_from_ctrl_unwind(Arena *arena, DI_Scope *di_scope, CTRL_Entity *process, CTRL_Unwind *base_unwind); +internal D_Unwind d_unwind_from_ctrl_unwind(Arena *arena, DI_Scope *di_scope, D_Entity *process, CTRL_Unwind *base_unwind); //////////////////////////////// //~ rjf: Target Controls @@ -1382,7 +1378,7 @@ internal U128 d_hash_from_ctrl_param_state(void); internal void d_push_ctrl_msg(CTRL_Msg *msg); //- rjf: control thread running -internal void d_ctrl_run(D_RunKind run, CTRL_Entity *run_thread, CTRL_RunFlags flags, CTRL_TrapList *run_traps); +internal void d_ctrl_run(D_RunKind run, D_Entity *run_thread, CTRL_RunFlags flags, CTRL_TrapList *run_traps); //- rjf: stopped info from the control thread internal CTRL_Event d_ctrl_last_stop_event(void); @@ -1391,8 +1387,8 @@ internal CTRL_Event d_ctrl_last_stop_event(void); //~ rjf: Evaluation Spaces //- rjf: entity <-> eval space -internal CTRL_Entity *d_entity_from_eval_space(E_Space space); -internal E_Space d_eval_space_from_entity(CTRL_Entity *entity); +internal D_Entity *d_entity_from_eval_space(E_Space space); +internal E_Space d_eval_space_from_entity(D_Entity *entity); //- rjf: eval space reads/writes internal B32 d_eval_space_read(void *u, E_Space space, void *out, Rng1U64 range); @@ -1508,14 +1504,6 @@ internal D_Regs *d_push_regs(void); internal D_Regs *d_pop_regs(void); #define D_RegsScope DeferLoop(d_push_regs(), d_pop_regs()) -//- rjf: register setting helpers -internal void d_regs_set_thread(CTRL_Entity *thread); - -//- rjf: register accessing helpers -internal CTRL_Entity *d_regs_process(void); -internal CTRL_Entity *d_regs_thread(void); -internal CTRL_Entity *d_regs_module(void); - //- rjf: undo/redo history internal D_StateDeltaHistory *d_state_delta_history(void); @@ -1533,7 +1521,7 @@ internal D_CfgTable *d_cfg_table(void); //- rjf: config serialization internal String8 d_cfg_escaped_from_raw_string(Arena *arena, String8 string); internal String8 d_cfg_raw_from_escaped_string(Arena *arena, String8 string); -internal String8List d_cfg_strings_from_state(Arena *arena, String8 root_path, D_CfgSrc source); +internal String8List d_cfg_strings_from_core(Arena *arena, String8 root_path, D_CfgSrc source); internal void d_cfg_push_write_string(D_CfgSrc src, String8 string); //- rjf: current path @@ -1550,10 +1538,10 @@ internal D_EntityList d_push_active_target_list(Arena *arena); internal D_Entity *d_entity_from_expand_key_and_kind(D_ExpandKey key, D_EntityKind kind); //- rjf: per-run caches -internal CTRL_Unwind d_query_cached_unwind_from_thread(CTRL_Entity *thread); -internal U64 d_query_cached_rip_from_thread(CTRL_Entity *thread); -internal U64 d_query_cached_rip_from_thread_unwind(CTRL_Entity *thread, U64 unwind_count); -internal U64 d_query_cached_tls_base_vaddr_from_process_root_rip(CTRL_Entity *process, U64 root_vaddr, U64 rip_vaddr); +internal CTRL_Unwind d_query_cached_unwind_from_thread(D_Entity *thread); +internal U64 d_query_cached_rip_from_thread(D_Entity *thread); +internal U64 d_query_cached_rip_from_thread_unwind(D_Entity *thread, U64 unwind_count); +internal U64 d_query_cached_tls_base_vaddr_from_process_root_rip(D_Entity *process, U64 root_vaddr, U64 rip_vaddr); internal E_String2NumMap *d_query_cached_locals_map_from_dbgi_key_voff(DI_Key *dbgi_key, U64 voff); internal E_String2NumMap *d_query_cached_member_map_from_dbgi_key_voff(DI_Key *dbgi_key, U64 voff); diff --git a/src/dbg_engine/generated/dbg_engine.meta.c b/src/dbg_engine/generated/dbg_engine.meta.c index bb0f2f17..09df3a1e 100644 --- a/src/dbg_engine/generated/dbg_engine.meta.c +++ b/src/dbg_engine/generated/dbg_engine.meta.c @@ -7,10 +7,10 @@ C_LINKAGE_BEGIN Rng1U64 d_reg_slot_range_table[29] = { {0}, -{OffsetOf(D_Regs, machine_id), OffsetOf(D_Regs, machine_id) + sizeof(CTRL_MachineID)}, -{OffsetOf(D_Regs, process), OffsetOf(D_Regs, process) + sizeof(DMN_Handle)}, -{OffsetOf(D_Regs, module), OffsetOf(D_Regs, module) + sizeof(DMN_Handle)}, -{OffsetOf(D_Regs, thread), OffsetOf(D_Regs, thread) + sizeof(DMN_Handle)}, +{OffsetOf(D_Regs, machine), OffsetOf(D_Regs, machine) + sizeof(D_Handle)}, +{OffsetOf(D_Regs, module), OffsetOf(D_Regs, module) + sizeof(D_Handle)}, +{OffsetOf(D_Regs, process), OffsetOf(D_Regs, process) + sizeof(D_Handle)}, +{OffsetOf(D_Regs, thread), OffsetOf(D_Regs, thread) + sizeof(D_Handle)}, {OffsetOf(D_Regs, window), OffsetOf(D_Regs, window) + sizeof(D_Handle)}, {OffsetOf(D_Regs, panel), OffsetOf(D_Regs, panel) + sizeof(D_Handle)}, {OffsetOf(D_Regs, view), OffsetOf(D_Regs, view) + sizeof(D_Handle)}, @@ -37,7 +37,7 @@ Rng1U64 d_reg_slot_range_table[29] = {OffsetOf(D_Regs, params_tree), OffsetOf(D_Regs, params_tree) + sizeof(MD_Node *)}, }; -String8 d_msg_kind_name_lower_table[69] = +String8 d_msg_kind_name_lower_table[71] = { str8_lit_comp("null"), str8_lit_comp("launch_and_run"), @@ -84,6 +84,8 @@ str8_lit_comp("enable_target"), str8_lit_comp("disable_entity"), str8_lit_comp("disable_breakpoint"), str8_lit_comp("disable_target"), +str8_lit_comp("freeze_entity"), +str8_lit_comp("thaw_entity"), str8_lit_comp("remove_entity"), str8_lit_comp("remove_breakpoint"), str8_lit_comp("remove_target"), @@ -110,7 +112,7 @@ str8_lit_comp("register_as_jit_debugger"), str8_lit_comp("log_marker"), }; -String8 d_msg_kind_name_display_table[69] = +String8 d_msg_kind_name_display_table[71] = { str8_lit_comp("null"), str8_lit_comp("launch_and_run"), @@ -157,6 +159,8 @@ str8_lit_comp("enable_target"), str8_lit_comp("disable_entity"), str8_lit_comp("disable_breakpoint"), str8_lit_comp("disable_target"), +str8_lit_comp("freeze_entity"), +str8_lit_comp("thaw_entity"), str8_lit_comp("remove_entity"), str8_lit_comp("remove_breakpoint"), str8_lit_comp("remove_target"), @@ -211,7 +215,7 @@ Rng1U64 d_cmd_param_slot_range_table[24] = {OffsetOf(D_CmdParams, inline_depth), OffsetOf(D_CmdParams, inline_depth) + sizeof(U64)}, }; -String8 d_entity_kind_display_string_table[28] = +String8 d_entity_kind_display_string_table[31] = { str8_lit_comp("Nil"), str8_lit_comp("Root"), @@ -230,6 +234,9 @@ str8_lit_comp("Executable"), str8_lit_comp("Arguments"), str8_lit_comp("Working Directory"), str8_lit_comp("Entry Point"), +str8_lit_comp("Window"), +str8_lit_comp("Panel"), +str8_lit_comp("View"), str8_lit_comp("Recent Project"), str8_lit_comp("Source"), str8_lit_comp("Destination"), @@ -243,7 +250,7 @@ str8_lit_comp("Conversion Failure"), str8_lit_comp("EndedProcess"), }; -String8 d_entity_kind_name_lower_table[28] = +String8 d_entity_kind_name_lower_table[31] = { str8_lit_comp("nil"), str8_lit_comp("root"), @@ -262,6 +269,9 @@ str8_lit_comp("executable"), str8_lit_comp("arguments"), str8_lit_comp("working_directory"), str8_lit_comp("entry_point"), +str8_lit_comp("window"), +str8_lit_comp("panel"), +str8_lit_comp("view"), str8_lit_comp("recent_project"), str8_lit_comp("source"), str8_lit_comp("dest"), @@ -275,7 +285,7 @@ str8_lit_comp("conversion_fail"), str8_lit_comp("ended_process"), }; -String8 d_entity_kind_name_lower_plural_table[28] = +String8 d_entity_kind_name_lower_plural_table[31] = { str8_lit_comp("nils"), str8_lit_comp("roots"), @@ -294,6 +304,9 @@ str8_lit_comp("executables"), str8_lit_comp("argumentses"), str8_lit_comp("working_directories"), str8_lit_comp("entry_points"), +str8_lit_comp("windows"), +str8_lit_comp("panels"), +str8_lit_comp("views"), str8_lit_comp("recent_projects"), str8_lit_comp("sources"), str8_lit_comp("dests"), @@ -307,7 +320,7 @@ str8_lit_comp("conversion_fails"), str8_lit_comp("ended_processes"), }; -String8 d_entity_kind_name_label_table[28] = +String8 d_entity_kind_name_label_table[31] = { str8_lit_comp("Label"), str8_lit_comp("Label"), @@ -326,6 +339,9 @@ str8_lit_comp("Executable"), str8_lit_comp("Arguments"), str8_lit_comp("Execution Path"), str8_lit_comp("Symbol Name"), +str8_lit_comp("Label"), +str8_lit_comp("Label"), +str8_lit_comp("Label"), str8_lit_comp("Path"), str8_lit_comp("Path"), str8_lit_comp("Path"), @@ -339,7 +355,7 @@ str8_lit_comp("Label"), str8_lit_comp("Label"), }; -D_EntityKindFlags d_entity_kind_flags_table[28] = +D_EntityKindFlags d_entity_kind_flags_table[31] = { (0*D_EntityKindFlag_CanDelete) | (0*D_EntityKindFlag_CanFreeze) | (0*D_EntityKindFlag_CanEdit) | (0*D_EntityKindFlag_CanRename) | (0*D_EntityKindFlag_CanEnable) | (0*D_EntityKindFlag_CanCondition) | (0*D_EntityKindFlag_CanDuplicate) | (0*D_EntityKindFlag_NameIsCode) | (0*D_EntityKindFlag_NameIsPath) | (0*D_EntityKindFlag_UserDefinedLifetime) | (0*D_EntityKindFlag_IsSerializedToConfig), (0*D_EntityKindFlag_CanDelete) | (0*D_EntityKindFlag_CanFreeze) | (0*D_EntityKindFlag_CanEdit) | (0*D_EntityKindFlag_CanRename) | (0*D_EntityKindFlag_CanEnable) | (0*D_EntityKindFlag_CanCondition) | (0*D_EntityKindFlag_CanDuplicate) | (0*D_EntityKindFlag_NameIsCode) | (0*D_EntityKindFlag_NameIsPath) | (0*D_EntityKindFlag_UserDefinedLifetime) | (0*D_EntityKindFlag_IsSerializedToConfig), @@ -358,6 +374,9 @@ D_EntityKindFlags d_entity_kind_flags_table[28] = (0*D_EntityKindFlag_CanDelete) | (0*D_EntityKindFlag_CanFreeze) | (0*D_EntityKindFlag_CanEdit) | (0*D_EntityKindFlag_CanRename) | (0*D_EntityKindFlag_CanEnable) | (0*D_EntityKindFlag_CanCondition) | (0*D_EntityKindFlag_CanDuplicate) | (0*D_EntityKindFlag_NameIsCode) | (0*D_EntityKindFlag_NameIsPath) | (1*D_EntityKindFlag_UserDefinedLifetime) | (0*D_EntityKindFlag_IsSerializedToConfig), (0*D_EntityKindFlag_CanDelete) | (0*D_EntityKindFlag_CanFreeze) | (0*D_EntityKindFlag_CanEdit) | (0*D_EntityKindFlag_CanRename) | (0*D_EntityKindFlag_CanEnable) | (0*D_EntityKindFlag_CanCondition) | (0*D_EntityKindFlag_CanDuplicate) | (0*D_EntityKindFlag_NameIsCode) | (1*D_EntityKindFlag_NameIsPath) | (1*D_EntityKindFlag_UserDefinedLifetime) | (0*D_EntityKindFlag_IsSerializedToConfig), (0*D_EntityKindFlag_CanDelete) | (0*D_EntityKindFlag_CanFreeze) | (0*D_EntityKindFlag_CanEdit) | (0*D_EntityKindFlag_CanRename) | (0*D_EntityKindFlag_CanEnable) | (0*D_EntityKindFlag_CanCondition) | (0*D_EntityKindFlag_CanDuplicate) | (0*D_EntityKindFlag_NameIsCode) | (0*D_EntityKindFlag_NameIsPath) | (1*D_EntityKindFlag_UserDefinedLifetime) | (0*D_EntityKindFlag_IsSerializedToConfig), +(1*D_EntityKindFlag_CanDelete) | (0*D_EntityKindFlag_CanFreeze) | (0*D_EntityKindFlag_CanEdit) | (0*D_EntityKindFlag_CanRename) | (0*D_EntityKindFlag_CanEnable) | (0*D_EntityKindFlag_CanCondition) | (1*D_EntityKindFlag_CanDuplicate) | (0*D_EntityKindFlag_NameIsCode) | (0*D_EntityKindFlag_NameIsPath) | (1*D_EntityKindFlag_UserDefinedLifetime) | (1*D_EntityKindFlag_IsSerializedToConfig), +(1*D_EntityKindFlag_CanDelete) | (0*D_EntityKindFlag_CanFreeze) | (0*D_EntityKindFlag_CanEdit) | (0*D_EntityKindFlag_CanRename) | (0*D_EntityKindFlag_CanEnable) | (0*D_EntityKindFlag_CanCondition) | (1*D_EntityKindFlag_CanDuplicate) | (0*D_EntityKindFlag_NameIsCode) | (0*D_EntityKindFlag_NameIsPath) | (1*D_EntityKindFlag_UserDefinedLifetime) | (1*D_EntityKindFlag_IsSerializedToConfig), +(1*D_EntityKindFlag_CanDelete) | (0*D_EntityKindFlag_CanFreeze) | (0*D_EntityKindFlag_CanEdit) | (0*D_EntityKindFlag_CanRename) | (0*D_EntityKindFlag_CanEnable) | (0*D_EntityKindFlag_CanCondition) | (1*D_EntityKindFlag_CanDuplicate) | (0*D_EntityKindFlag_NameIsCode) | (0*D_EntityKindFlag_NameIsPath) | (1*D_EntityKindFlag_UserDefinedLifetime) | (1*D_EntityKindFlag_IsSerializedToConfig), (0*D_EntityKindFlag_CanDelete) | (0*D_EntityKindFlag_CanFreeze) | (0*D_EntityKindFlag_CanEdit) | (0*D_EntityKindFlag_CanRename) | (0*D_EntityKindFlag_CanEnable) | (0*D_EntityKindFlag_CanCondition) | (0*D_EntityKindFlag_CanDuplicate) | (0*D_EntityKindFlag_NameIsCode) | (1*D_EntityKindFlag_NameIsPath) | (0*D_EntityKindFlag_UserDefinedLifetime) | (1*D_EntityKindFlag_IsSerializedToConfig), (0*D_EntityKindFlag_CanDelete) | (0*D_EntityKindFlag_CanFreeze) | (0*D_EntityKindFlag_CanEdit) | (0*D_EntityKindFlag_CanRename) | (0*D_EntityKindFlag_CanEnable) | (0*D_EntityKindFlag_CanCondition) | (0*D_EntityKindFlag_CanDuplicate) | (0*D_EntityKindFlag_NameIsCode) | (0*D_EntityKindFlag_NameIsPath) | (0*D_EntityKindFlag_UserDefinedLifetime) | (0*D_EntityKindFlag_IsSerializedToConfig), (0*D_EntityKindFlag_CanDelete) | (0*D_EntityKindFlag_CanFreeze) | (0*D_EntityKindFlag_CanEdit) | (0*D_EntityKindFlag_CanRename) | (0*D_EntityKindFlag_CanEnable) | (0*D_EntityKindFlag_CanCondition) | (0*D_EntityKindFlag_CanDuplicate) | (0*D_EntityKindFlag_NameIsCode) | (0*D_EntityKindFlag_NameIsPath) | (0*D_EntityKindFlag_UserDefinedLifetime) | (0*D_EntityKindFlag_IsSerializedToConfig), diff --git a/src/dbg_engine/generated/dbg_engine.meta.h b/src/dbg_engine/generated/dbg_engine.meta.h index bb7509b9..88729ff7 100644 --- a/src/dbg_engine/generated/dbg_engine.meta.h +++ b/src/dbg_engine/generated/dbg_engine.meta.h @@ -9,10 +9,10 @@ typedef enum D_RegSlot { D_RegSlot_Null, -D_RegSlot_MachineID, -D_RegSlot_process, -D_RegSlot_module, -D_RegSlot_thread, +D_RegSlot_Machine, +D_RegSlot_Module, +D_RegSlot_Process, +D_RegSlot_Thread, D_RegSlot_Window, D_RegSlot_Panel, D_RegSlot_View, @@ -87,6 +87,8 @@ D_MsgKind_EnableTarget, D_MsgKind_DisableEntity, D_MsgKind_DisableBreakpoint, D_MsgKind_DisableTarget, +D_MsgKind_FreezeEntity, +D_MsgKind_ThawEntity, D_MsgKind_RemoveEntity, D_MsgKind_RemoveBreakpoint, D_MsgKind_RemoveTarget, @@ -142,6 +144,9 @@ D_EntityKind_Executable, D_EntityKind_Arguments, D_EntityKind_WorkingDirectory, D_EntityKind_EntryPoint, +D_EntityKind_Window, +D_EntityKind_Panel, +D_EntityKind_View, D_EntityKind_RecentProject, D_EntityKind_Source, D_EntityKind_Dest, @@ -440,10 +445,10 @@ D_CmdParamSlot_COUNT, typedef struct D_Regs D_Regs; struct D_Regs { -CTRL_MachineID machine_id; -DMN_Handle process; -DMN_Handle module; -DMN_Handle thread; +D_Handle machine; +D_Handle module; +D_Handle process; +D_Handle thread; D_Handle window; D_Handle panel; D_Handle view; @@ -499,9 +504,9 @@ U64 inline_depth; }; #define d_regs_lit_init_top \ -.machine_id = d_regs()->machine_id,\ -.process = d_regs()->process,\ +.machine = d_regs()->machine,\ .module = d_regs()->module,\ +.process = d_regs()->process,\ .thread = d_regs()->thread,\ .window = d_regs()->window,\ .panel = d_regs()->panel,\ @@ -568,14 +573,14 @@ struct {B32 *value_ptr; String8 name;} DEV_toggle_table[] = }; C_LINKAGE_BEGIN extern Rng1U64 d_reg_slot_range_table[29]; -extern String8 d_msg_kind_name_lower_table[69]; -extern String8 d_msg_kind_name_display_table[69]; +extern String8 d_msg_kind_name_lower_table[71]; +extern String8 d_msg_kind_name_display_table[71]; extern Rng1U64 d_cmd_param_slot_range_table[24]; -extern String8 d_entity_kind_display_string_table[28]; -extern String8 d_entity_kind_name_lower_table[28]; -extern String8 d_entity_kind_name_lower_plural_table[28]; -extern String8 d_entity_kind_name_label_table[28]; -extern D_EntityKindFlags d_entity_kind_flags_table[28]; +extern String8 d_entity_kind_display_string_table[31]; +extern String8 d_entity_kind_name_lower_table[31]; +extern String8 d_entity_kind_name_lower_plural_table[31]; +extern String8 d_entity_kind_name_label_table[31]; +extern D_EntityKindFlags d_entity_kind_flags_table[31]; extern String8 d_cfg_src_string_table[4]; extern D_CmdKind d_cfg_src_load_cmd_kind_table[4]; extern D_CmdKind d_cfg_src_write_cmd_kind_table[4]; diff --git a/src/dbg_frontend/dbg_frontend.mdesk b/src/dbg_frontend/dbg_frontend.mdesk index 2fe89236..e2a5876e 100644 --- a/src/dbg_frontend/dbg_frontend.mdesk +++ b/src/dbg_frontend/dbg_frontend.mdesk @@ -15,10 +15,10 @@ DF_MsgKindTable: {ToggleDevMenu toggle_dev_menu 0 0 Null Nil 0 0 0 0 0 0 Null ""} //- rjf: config reading/writing - {LoadUser load_user_data 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {LoadProject load_project_data 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {SaveUser save_user_data 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {SaveProject save_project_data 0 0 Null Nil 0 0 0 0 0 0 Null ""} + {ApplyUserData apply_user_data 0 0 Null Nil 0 0 0 0 0 0 Null ""} + {ApplyProjectData apply_project_data 0 0 Null Nil 0 0 0 0 0 0 Null ""} + {WriteUserData write_user_data 0 0 Null Nil 0 0 0 0 0 0 Null ""} + {WriteProjectData write_project_data 0 0 Null Nil 0 0 0 0 0 0 Null ""} //- rjf: windows {OpenWindow open_window 0 0 Null Nil 0 0 0 0 0 0 Null ""} @@ -111,55 +111,6 @@ DF_MsgKindTable: {GoToAddress go_to_address 0 0 Null Nil 0 0 0 0 0 0 Null ""} {CenterCursor center_cursor 0 0 Null Nil 0 0 0 0 0 0 Null ""} {ContainCursor contain_cursor 0 0 Null Nil 0 0 0 0 0 0 Null ""} - - //- rjf: meta controls - {Edit edit 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {Accept accept 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {Cancel cancel 0 0 Null Nil 0 0 0 0 0 0 Null ""} - - //- rjf: directional movement & text controls - {MoveLeft move_left 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveRight move_right 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveUp move_up 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveDown move_down 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveLeftSelect move_left_select 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveRightSelect move_right_select 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveUpSelect move_up_select 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveDownSelect move_down_select 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveLeftChunk move_left_chunk 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveRightChunk move_right_chunk 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveUpChunk move_up_chunk 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveDownChunk move_down_chunk 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveUpPage move_up_page 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveDownPage move_down_page 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveUpWhole move_up_whole 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveDownWhole move_down_whole 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveLeftChunkSelect move_left_chunk_select 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveRightChunkSelect move_right_chunk_select 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveUpChunkSelect move_up_chunk_select 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveDownChunkSelect move_down_chunk_select 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveUpPageSelect move_up_page_select 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveDownPageSelect move_down_page_select 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveUpWholeSelect move_up_whole_select 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveDownWholeSelect move_down_whole_select 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveUpReorder move_up_reorder 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveDownReorder move_down_reorder 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveHome move_home 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveEnd move_end 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveHomeSelect move_home_select 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {MoveEndSelect move_end_select 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {SelectAll select_all 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {DeleteSingle delete_single 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {DeleteChunk delete_chunk 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {BackspaceSingle backspace_single 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {BackspaceChunk backspace_chunk 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {Copy copy 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {Cut cut 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {Paste paste 0 0 Null Nil 0 0 0 0 0 0 Null ""} - {InsertText insert_text 0 0 Null Nil 0 0 0 0 0 0 Null ""} - - //- rjf: os event passthrough - {OSEvent os_event 0 0 Null Nil 0 0 0 0 0 0 Null ""} } @enum DF_MsgKind: @@ -168,14 +119,19 @@ DF_MsgKindTable: COUNT } +@data(String8) df_msg_kind_name_lower_table: +{ + @expand(DF_MsgKindTable a) `str8_lit_comp("$(a.name_lower)")` +} + @data(DF_MsgKindInfo) df_msg_kind_info_table: { - @expand(DF_MsgKindTable a) `{str8_lit_comp("$(a.name_lower)"), str8_lit_comp("$(a.display_name)"), str8_lit_comp("$(a.desc)"), str8_lit_comp("$(a.search_tags)"), (($(a.show_in_ui)*DF_MsgKindFlag_ListInUI)|($(a.show_in_ipc_docs)*DF_MsgKindFlag_ListInIPCDocs)), {($(a.q_allow_files)*DF_MsgQueryFlag_AllowFiles)|($(a.q_allow_folders)*DF_MsgQueryFlag_AllowFolders)|($(a.q_keep_oi)*DF_MsgQueryFlag_KeepOldInput)|($(a.q_select_oi)*DF_MsgQueryFlag_SelectOldInput)|($(a.q_is_code)*DF_MsgQueryFlag_CodeInput)|($(a.q_required)*DF_MsgQueryFlag_Required), D_RegSlot_$(a.q_slot), D_EntityKind_$(a.q_ent_kind)}}` + @expand(DF_MsgKindTable a) `{str8_lit_comp("$(a.display_name)"), str8_lit_comp("$(a.desc)"), str8_lit_comp("$(a.search_tags)"), (($(a.show_in_ui)*DF_MsgKindFlag_ListInUI)|($(a.show_in_ipc_docs)*DF_MsgKindFlag_ListInIPCDocs)), {($(a.q_allow_files)*DF_MsgQueryFlag_AllowFiles)|($(a.q_allow_folders)*DF_MsgQueryFlag_AllowFolders)|($(a.q_keep_oi)*DF_MsgQueryFlag_KeepOldInput)|($(a.q_select_oi)*DF_MsgQueryFlag_SelectOldInput)|($(a.q_is_code)*DF_MsgQueryFlag_CodeInput)|($(a.q_required)*DF_MsgQueryFlag_Required), D_RegSlot_$(a.q_slot), D_EntityKind_$(a.q_ent_kind)}}` } @data(DF_MsgKindInfo) df_d_msg_kind_info_table: { - @expand(D_MsgKindTable a) `{str8_lit_comp("$(a.name_lower)"), str8_lit_comp("$(a.display_name)"), str8_lit_comp("$(a.desc)"), str8_lit_comp("$(a.search_tags)"), (($(a.show_in_ui)*DF_MsgKindFlag_ListInUI)|($(a.show_in_ipc_docs)*DF_MsgKindFlag_ListInIPCDocs)), {($(a.q_allow_files)*DF_MsgQueryFlag_AllowFiles)|($(a.q_allow_folders)*DF_MsgQueryFlag_AllowFolders)|($(a.q_keep_oi)*DF_MsgQueryFlag_KeepOldInput)|($(a.q_select_oi)*DF_MsgQueryFlag_SelectOldInput)|($(a.q_is_code)*DF_MsgQueryFlag_CodeInput)|($(a.q_required)*DF_MsgQueryFlag_Required), D_RegSlot_$(a.q_slot), D_EntityKind_$(a.q_ent_kind)}}` + @expand(D_MsgKindTable a) `{str8_lit_comp("$(a.display_name)"), str8_lit_comp("$(a.desc)"), str8_lit_comp("$(a.search_tags)"), (($(a.show_in_ui)*DF_MsgKindFlag_ListInUI)|($(a.show_in_ipc_docs)*DF_MsgKindFlag_ListInIPCDocs)), {($(a.q_allow_files)*DF_MsgQueryFlag_AllowFiles)|($(a.q_allow_folders)*DF_MsgQueryFlag_AllowFolders)|($(a.q_keep_oi)*DF_MsgQueryFlag_KeepOldInput)|($(a.q_select_oi)*DF_MsgQueryFlag_SelectOldInput)|($(a.q_is_code)*DF_MsgQueryFlag_CodeInput)|($(a.q_required)*DF_MsgQueryFlag_Required), D_RegSlot_$(a.q_slot), D_EntityKind_$(a.q_ent_kind)}}` } //////////////////////////////// diff --git a/src/dbg_frontend/dbg_frontend_core.c b/src/dbg_frontend/dbg_frontend_core.c index 58230d22..162be491 100644 --- a/src/dbg_frontend/dbg_frontend_core.c +++ b/src/dbg_frontend/dbg_frontend_core.c @@ -441,7 +441,6 @@ df_prefer_dasm_from_window(DF_Window *window) return result; } -#if 0 // TODO(rjf): @msgs internal D_CmdParams df_cmd_params_from_window(DF_Window *window) { @@ -484,8 +483,6 @@ df_cmd_params_from_view(DF_Window *window, DF_Panel *panel, DF_View *view) return p; } -#endif - internal D_CmdParams df_cmd_params_copy(Arena *arena, D_CmdParams *src) { @@ -1126,7 +1123,6 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds) ////////////////////////////// //- rjf: auto-close tabs which have parameter entities that've been deleted // -#if 0 // TODO(rjf): @msgs for(DF_Panel *panel = ws->root_panel; !df_panel_is_nil(panel); panel = df_panel_rec_df_pre(panel).next) @@ -1144,7 +1140,6 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds) } } } -#endif ////////////////////////////// //- rjf: do core-layer commands & batch up commands to be dispatched to views @@ -2060,22 +2055,22 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds) } if(range.min.line == range.max.line && ui_clicked(df_icon_buttonf(DF_IconKind_RightArrow, 0, "Set Next Statement"))) { - CTRL_Entity *thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, d_regs()->machine_id, d_regs()->thread); + D_Entity *thread = d_entity_from_handle(d_regs()->thread); U64 new_rip_vaddr = ws->code_ctx_menu_vaddr; if(ws->code_ctx_menu_file_path.size != 0) { for(D_LineNode *n = lines.first; n != 0; n = n->next) { - CTRL_EntityList modules = ctrl_modules_from_dbgi_key(scratch.arena, d_state->ctrl_entity_store, &n->v.dbgi_key); - CTRL_Entity *module = ctrl_module_from_thread_candidates(d_state->ctrl_entity_store, thread, &modules); - if(module != &ctrl_entity_nil) + D_EntityList modules = d_modules_from_dbgi_key(scratch.arena, &n->v.dbgi_key); + D_Entity *module = d_module_from_thread_candidates(thread, &modules); + if(!d_entity_is_nil(module)) { - new_rip_vaddr = ctrl_vaddr_from_voff(module, n->v.voff_range.min); + new_rip_vaddr = d_vaddr_from_voff(module, n->v.voff_range.min); break; } } } - d_msg(D_MsgKind_SetThreadIP, .vaddr_range = r1u64(new_rip_vaddr, new_rip_vaddr)); + d_cmd(D_CmdKind_SetThreadIP, .entity = d_handle_from_entity(thread), .vaddr = new_rip_vaddr); ui_ctx_menu_close(); } if(range.min.line == range.max.line && ui_clicked(df_icon_buttonf(DF_IconKind_Play, 0, "Run To Line"))) @@ -2083,12 +2078,10 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds) if(ws->code_ctx_menu_file_path.size != 0) { d_cmd(D_CmdKind_RunToLine, .file_path = ws->code_ctx_menu_file_path, .text_point = range.min); - d_msg(D_MsgKind_RunToLine, .file_path = ws->code_ctx_menu_file_path, .cursor = range.min); } else { d_cmd(D_CmdKind_RunToAddress, .vaddr = ws->code_ctx_menu_vaddr); - d_msg(D_MsgKind_RunToAddress, .vaddr_range = r1u64(ws->code_ctx_menu_vaddr, ws->code_ctx_menu_vaddr)); } ui_ctx_menu_close(); } @@ -2108,7 +2101,6 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds) } String8 expr = str8_substr(data, expr_off_range); d_cmd(D_CmdKind_GoToName, .string = expr); - df_msg(DF_MsgKind_GoToName, .string = expr); ui_ctx_menu_close(); } if(range.min.line == range.max.line && ui_clicked(df_icon_buttonf(DF_IconKind_CircleFilled, 0, "Toggle Breakpoint"))) @@ -2149,19 +2141,19 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds) } if(ws->code_ctx_menu_file_path.size != 0 && range.min.line == range.max.line && ui_clicked(df_icon_buttonf(DF_IconKind_FileOutline, 0, "Go To Disassembly"))) { - CTRL_Entity *thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, d_regs()->machine_id, d_regs()->thread); + D_Entity *thread = d_entity_from_handle(d_regs()->thread); U64 vaddr = 0; for(D_LineNode *n = lines.first; n != 0; n = n->next) { - CTRL_EntityList modules = ctrl_modules_from_dbgi_key(scratch.arena, d_state->ctrl_entity_store, &n->v.dbgi_key); - CTRL_Entity *module = ctrl_module_from_thread_candidates(d_state->ctrl_entity_store, thread, &modules); - if(module != &ctrl_entity_nil) + D_EntityList modules = d_modules_from_dbgi_key(scratch.arena, &n->v.dbgi_key); + D_Entity *module = d_module_from_thread_candidates(thread, &modules); + if(!d_entity_is_nil(module)) { - vaddr = ctrl_vaddr_from_voff(module, n->v.voff_range.min); + vaddr = d_vaddr_from_voff(module, n->v.voff_range.min); break; } } - df_msg(DF_MsgKind_FindCodeLocation, .vaddr_range = r1u64(vaddr, vaddr)); + d_cmd(D_CmdKind_FindCodeLocation, .entity = d_handle_from_entity(thread), .vaddr = vaddr); ui_ctx_menu_close(); } hs_scope_close(hs_scope); @@ -2169,7 +2161,6 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds) } //- rjf: entity menu -#if 0 // TODO(rjf): @msgs UI_CtxMenu(df_state->entity_ctx_menu_key) UI_PrefWidth(ui_em(40.f, 1.f)) DF_Palette(DF_PaletteCode_ImplicitButton) @@ -2342,9 +2333,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds) // rjf: freezing if(kind_flags & D_EntityKindFlag_CanFreeze) { - // TODO(rjf): @msgs -#if 0 - d_entity_is_frozen(entity); + B32 is_frozen = d_entity_is_frozen(entity); ui_set_next_palette(df_palette_from_code(is_frozen ? DF_PaletteCode_NegativePopButton : DF_PaletteCode_PositivePopButton)); if(is_frozen && ui_clicked(df_icon_buttonf(DF_IconKind_Locked, 0, "Thaw###freeze_thaw"))) { @@ -2354,7 +2343,6 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds) { d_cmd(D_CmdKind_FreezeEntity, .entity = d_handle_from_entity(entity)); } -#endif } // rjf: go-to-location @@ -2601,7 +2589,6 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds) } } } -#endif //- rjf: auto-close tab ctx menu if(ui_ctx_menu_is_open(df_state->tab_ctx_menu_key)) @@ -2809,12 +2796,12 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds) Temp scratch = scratch_begin(&arena, 1); //- rjf: unpack lister params - CTRL_Entity *thread = d_regs_thread(); + D_Entity *thread = d_entity_from_handle(d_base_regs()->thread); U64 thread_rip_vaddr = d_query_cached_rip_from_thread_unwind(thread, d_base_regs()->unwind_count); - CTRL_Entity *process = ctrl_entity_ancestor_from_kind(thread, D_EntityKind_Process); - CTRL_Entity *module = ctrl_module_from_process_vaddr(process, thread_rip_vaddr); - U64 thread_rip_voff = ctrl_voff_from_vaddr(module, thread_rip_vaddr); - DI_Key dbgi_key = ctrl_dbgi_key_from_module(module); + D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); + D_Entity *module = d_module_from_process_vaddr(process, thread_rip_vaddr); + U64 thread_rip_voff = d_voff_from_vaddr(module, thread_rip_vaddr); + DI_Key dbgi_key = d_dbgi_key_from_module(module); //- rjf: gather lister items DF_AutoCompListerItemChunkList item_list = {0}; @@ -2855,8 +2842,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds) //- rjf: gather registers if(ws->autocomp_lister_params.flags & DF_AutoCompListerFlag_Registers) { - CTRL_Entity *thread = d_regs_thread(); - Arch arch = thread->arch; + Arch arch = d_arch_from_entity(thread); U64 reg_names_count = regs_reg_code_count_from_arch(arch); U64 alias_names_count = regs_alias_code_count_from_arch(arch); String8 *reg_names = regs_reg_code_string_table_from_arch(arch); @@ -4253,30 +4239,12 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds) if(((ui_is_focus_active() || (window_is_focused && !ui_any_ctx_menu_is_open() && !ws->menu_bar_focused && !ws->query_view_selected)) && ui_slot_press(UI_EventActionSlot_Cancel)) || query_cancelled) { - df_msg(DF_MsgKind_CancelQuery); d_cmd(D_CmdKind_CancelQuery); } if((ui_is_focus_active() && ui_slot_press(UI_EventActionSlot_Accept)) || query_completed) { Temp scratch = scratch_begin(&arena, 1); DF_View *view = ws->query_view_stack_top; - D_Regs *regs = ws->query_msg_regs; - D_RegsScope - { - d_regs_copy_contents(scratch.arena, d_regs(), regs); - df_regs_set_from_query_slot_string(ws->query_msg_query.slot, str8(view->query_buffer, view->query_string_size)); - D_MsgKind d_kind = d_msg_kind_from_string(ws->query_msg_name); - DF_MsgKind df_kind = df_msg_kind_from_string(ws->query_msg_name); - if(d_kind != D_MsgKind_Null) - { - d_msg(d_kind); - } - if(df_kind != DF_MsgKind_Null) - { - df_msg(df_kind); - } - } -#if 0 // TODO(rjf): @msgs D_CmdParams params = df_cmd_params_from_window(ws); String8 error = d_cmd_params_apply_spec_query(scratch.arena, ¶ms, ws->query_cmd_spec, str8(view->query_buffer, view->query_string_size)); d_push_cmd(d_cmd_spec_from_kind(D_CmdKind_CompleteQuery), ¶ms); @@ -4284,7 +4252,6 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds) { d_error(error); } -#endif scratch_end(scratch); } @@ -4366,6 +4333,9 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds) { Temp scratch = scratch_begin(&arena, 1); DI_Scope *scope = di_scope_open(); + D_Entity *thread = d_entity_from_handle(d_base_regs()->thread); + D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); + U64 thread_unwind_rip_vaddr = d_query_cached_rip_from_thread_unwind(thread, d_base_regs()->unwind_count); String8 expr = ws->hover_eval_string; E_Eval eval = e_eval_from_string(scratch.arena, expr); D_CfgTable top_level_cfg_table = {0}; @@ -4383,7 +4353,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds) D_ExpandKey parent_key = d_expand_key_make(5381, 1); D_ExpandKey key = d_expand_key_make(df_hash_from_expand_key(parent_key), 1); D_EvalVizBlockList viz_blocks = d_eval_viz_block_list_from_eval_view_expr_keys(scratch.arena, eval_view, &top_level_cfg_table, expr, parent_key, key); - CTRL_Entity *entity = d_entity_from_eval_space(eval.space); + D_Entity *entity = d_entity_from_eval_space(eval.space); U32 default_radix = (entity->kind == D_EntityKind_Thread ? 16 : 10); D_EvalVizWindowedRowList viz_rows = d_eval_viz_windowed_row_list_from_viz_block_list(scratch.arena, eval_view, r1s64(0, 50), &viz_blocks); @@ -4490,13 +4460,13 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds) default:{}break; case E_Mode_Offset: { - CTRL_Entity *space_entity = d_entity_from_eval_space(row_eval.space); - if(space_entity->kind == CTRL_EntityKind_Process) + D_Entity *space_entity = d_entity_from_eval_space(row_eval.space); + if(space_entity->kind == D_EntityKind_Process) { U64 size = e_type_byte_size_from_key(row_eval.type_key); size = Min(size, 64); Rng1U64 vaddr_rng = r1u64(row_eval.value.u64, row_eval.value.u64+size); - CTRL_ProcessMemorySlice slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, space_entity->machine_id, space_entity->handle, vaddr_rng, 0); + CTRL_ProcessMemorySlice slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, space_entity->ctrl_machine_id, space_entity->ctrl_handle, vaddr_rng, 0); for(U64 idx = 0; idx < (slice.data.size+63)/64; idx += 1) { if(slice.byte_changed_flags[idx] != 0) @@ -6490,8 +6460,8 @@ df_append_value_strings_from_eval(Arena *arena, D_EvalVizStringFlags flags, U32 E_Eval value_eval = e_value_eval_from_eval(eval); B32 ptee_has_content = (direct_type_kind != E_TypeKind_Null && direct_type_kind != E_TypeKind_Void); B32 ptee_has_string = (E_TypeKind_Char8 <= direct_type_kind && direct_type_kind <= E_TypeKind_UChar32); - CTRL_Entity *thread = d_regs_thread(); - CTRL_Entity *process = ctrl_entity_ancestor_from_kind(thread, CTRL_EntityKind_Process); + D_Entity *thread = d_entity_from_handle(d_regs()->thread); + D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); String8 symbol_name = d_symbol_name_from_process_vaddr(arena, process, value_eval.value.u64, 1); // rjf: special case: push strings for textual string content @@ -7075,6 +7045,23 @@ df_push_search_string(Arena *arena) //- rjf: keybindings +internal OS_Key +df_os_key_from_cfg_string(String8 string) +{ + OS_Key result = OS_Key_Null; + { + for(OS_Key key = OS_Key_Null; key < OS_Key_COUNT; key = (OS_Key)(key+1)) + { + if(str8_match(string, os_g_key_cfg_string_table[key], StringMatchFlag_CaseInsensitive)) + { + result = key; + break; + } + } + } + return result; +} + internal void df_clear_bindings(void) { @@ -7321,7 +7308,7 @@ df_qsort_compare__cfg_string_bindings(DF_StringBindingPair *a, DF_StringBindingP } internal String8List -df_cfg_strings_from_state(Arena *arena, String8 root_path, D_CfgSrc source) +df_cfg_strings_from_gfx(Arena *arena, String8 root_path, D_CfgSrc source) { ProfBeginFunction(); String8List strs = {0}; @@ -7831,7 +7818,7 @@ df_msg_kind_from_string(String8 string) DF_MsgKind result = DF_MsgKind_Null; for(EachNonZeroEnumVal(DF_MsgKind, k)) { - if(str8_match(string, df_msg_kind_info_table[k].name_lower, 0)) + if(str8_match(string, df_msg_kind_name_lower_table[k], 0)) { result = k; break; @@ -7840,75 +7827,6 @@ df_msg_kind_from_string(String8 string) return result; } -internal void -df_regs_set_window(DF_Window *window) -{ - d_regs()->window = df_handle_from_window(window); - d_regs()->panel = df_handle_from_panel(window->focused_panel); - d_regs()->view = window->focused_panel->selected_tab_view; -} - -internal void -df_regs_set_from_query_slot_string(D_RegSlot slot, String8 string) -{ - Temp scratch = scratch_begin(0, 0); - switch(slot) - { - default: - case D_RegSlot_String: - { - d_regs()->string = push_str8_copy(d_frame_arena(), string); - }break; - case D_RegSlot_FilePath: - { - String8TxtPtPair pair = str8_txt_pt_pair_from_string(string); - d_regs()->file_path = push_str8_copy(d_frame_arena(), pair.string); - d_regs()->cursor = pair.pt; - }break; - case D_CmdParamSlot_TextPoint: - { - E_Eval eval = e_eval_from_string(scratch.arena, string); - E_Eval value_eval = e_value_eval_from_eval(eval); - d_regs()->cursor.column = 1; - d_regs()->cursor.line = Min(1, value_eval.value.s64); - }break; - case D_CmdParamSlot_VirtualAddr: goto use_numeric_eval; - case D_CmdParamSlot_VirtualOff: goto use_numeric_eval; - case D_CmdParamSlot_Index: goto use_numeric_eval; - case D_CmdParamSlot_ID: goto use_numeric_eval; - use_numeric_eval: - { - E_Eval eval = e_eval_from_string(scratch.arena, string); - E_Eval value_eval = e_value_eval_from_eval(eval); - switch(slot) - { - default:{}break; - case D_RegSlot_VaddrRange: - { - d_regs()->vaddr_range = r1u64(value_eval.value.u64, value_eval.value.u64); - }break; - case D_RegSlot_VoffRange: - { - d_regs()->voff_range = r1u64(value_eval.value.u64, value_eval.value.u64); - }break; - case D_RegSlot_PID: - { - d_regs()->pid = value_eval.value.u64; - }break; - case D_RegSlot_UnwindCount: - { - d_regs()->unwind_count = value_eval.value.u64; - }break; - case D_RegSlot_InlineDepth: - { - d_regs()->inline_depth = value_eval.value.u64; - }break; - } - }break; - } - scratch_end(scratch); -} - internal void df_msg_(DF_MsgKind kind, D_Regs *regs) { @@ -7930,21 +7848,15 @@ df_msg_(DF_MsgKind kind, D_Regs *regs) #endif internal void -df_init(void) +df_init(D_StateDeltaHistory *hist) { ProfBeginFunction(); Arena *arena = arena_alloc(); df_state = push_array(arena, DF_State, 1); df_state->arena = arena; - df_state->num_frames_requested = 2; - df_state->cfg_root_arena = arena_alloc(); - df_state->cfg_root = &md_nil_node; - for(EachEnumVal(DF_CfgSlot, slot)) - { - df_state->cfg_slot_arenas[slot] = arena_alloc(); - df_state->cfg_slot_roots[slot] = &md_nil_node; - } df_state->msgs_arena = arena_alloc(); + df_state->num_frames_requested = 2; + df_state->hist = hist; df_state->key_map_arena = arena_alloc(); df_state->confirm_arena = arena_alloc(); df_state->view_spec_table_size = 256; @@ -8066,6 +7978,15 @@ df_frame(void) DI_Scope *di_scope = di_scope_open(); local_persist S32 depth = 0; + ////////////////////////////// + //- rjf: mark user-facing thread tick + // + ProfTick(0); + txt_user_clock_tick(); + dasm_user_clock_tick(); + geo_user_clock_tick(); + tex_user_clock_tick(); + ////////////////////////////// //- rjf: get events from the OS // @@ -8173,7 +8094,7 @@ df_frame(void) } ////////////////////////////// - //- rjf: consume OS events + //- rjf: consume events // { for(OS_Event *event = events.first, *next = 0; @@ -8182,140 +8103,110 @@ df_frame(void) { next = event->next; DF_Window *window = df_window_from_os_handle(event->window); - D_RegsScope + D_CmdParams params = window ? df_cmd_params_from_window(window) : df_cmd_params_from_gfx(); + B32 take = 0; + + //- rjf: try window close + if(!take && event->kind == OS_EventKind_WindowClose && window != 0) { - df_regs_set_window(window); - B32 take = 0; - - //- rjf: try window close - if(!take && event->kind == OS_EventKind_WindowClose && window != 0) + take = 1; + d_cmd(D_CmdKind_CloseWindow, .window = df_handle_from_window(window)); + } + + //- rjf: try menu bar operations + { + if(!take && event->kind == OS_EventKind_Press && event->key == OS_Key_Alt && event->flags == 0 && event->is_repeat == 0) { take = 1; - d_msg(DF_MsgKind_CloseWindow); - } - - //- rjf: try menu bar operations - { - if(!take && event->kind == OS_EventKind_Press && event->key == OS_Key_Alt && event->flags == 0 && event->is_repeat == 0) - { - take = 1; - df_request_frame(); - window->menu_bar_focused_on_press = window->menu_bar_focused; - window->menu_bar_key_held = 1; - window->menu_bar_focus_press_started = 1; - } - if(!take && event->kind == OS_EventKind_Release && event->key == OS_Key_Alt && event->flags == 0 && event->is_repeat == 0) - { - take = 1; - df_request_frame(); - window->menu_bar_key_held = 0; - } - if(window->menu_bar_focused && event->kind == OS_EventKind_Press && event->key == OS_Key_Alt && event->flags == 0 && event->is_repeat == 0) - { - take = 1; - df_request_frame(); - window->menu_bar_focused = 0; - } - else if(window->menu_bar_focus_press_started && !window->menu_bar_focused && event->kind == OS_EventKind_Release && event->flags == 0 && event->key == OS_Key_Alt && event->is_repeat == 0) - { - take = 1; - df_request_frame(); - window->menu_bar_focused = !window->menu_bar_focused_on_press; - window->menu_bar_focus_press_started = 0; - } - else if(event->kind == OS_EventKind_Press && event->key == OS_Key_Esc && window->menu_bar_focused && !ui_any_ctx_menu_is_open()) - { - take = 1; - df_request_frame(); - window->menu_bar_focused = 0; - } - } - - //- rjf: try hotkey presses - if(!take && event->kind == OS_EventKind_Press) - { - // rjf: look into keymap; push run-command message to frontend if this event - // matches a binding - B32 taken_by_keybinding = 0; - for(MD_EachNode(file_ref, df_state->cfg_root->first)) - { - MD_Node *file = file_ref->first; - for(MD_EachNode(tln, file->first)) - { - if(str8_match(tln->string, str8_lit("keybindings"), StringMatchFlag_CaseInsensitive)) - { - for(MD_EachNode(map, tln->first)) - { - OS_Key map_key = OS_Key_Null; - OS_EventFlags map_flags = 0; - String8 map_msg_name = {0}; - for(MD_EachNode(child, map->first)) - { - if(0){} - else if(str8_match(child->string, str8_lit("ctrl"), 0)) { map_flags |= OS_EventFlag_Ctrl; } - else if(str8_match(child->string, str8_lit("shift"), 0)) { map_flags |= OS_EventFlag_Shift; } - else if(str8_match(child->string, str8_lit("alt"), 0)) { map_flags |= OS_EventFlag_Alt; } - else - { - OS_Key key = os_key_from_string(child->string); - if(key == OS_Key_Null) - { - map_msg_name = child->string; - } - else - { - map_key = key; - } - } - } - if(map_key == event->key && map_flags == event->flags) - { - take = 1; - taken_by_keybinding = 1; - df_msg(DF_MsgKind_RunCommand, .string = map_msg_name); - } - } - } - } - } - - // rjf: not taken by keybinding -> try alternatives - if(!taken_by_keybinding && (OS_Key_F1 <= event->key && event->key <= OS_Key_F19)) - { - window->menu_bar_focus_press_started = 0; - } - df_request_frame(); + window->menu_bar_focused_on_press = window->menu_bar_focused; + window->menu_bar_key_held = 1; + window->menu_bar_focus_press_started = 1; } - - //- rjf: try text events - if(!take && event->kind == OS_EventKind_Text) + if(!take && event->kind == OS_EventKind_Release && event->key == OS_Key_Alt && event->flags == 0 && event->is_repeat == 0) { - String32 insertion32 = str32(&event->character, 1); - String8 insertion8 = str8_from_32(scratch.arena, insertion32); - df_msg(DF_MsgKind_InsertText, .string = insertion8); - df_request_frame(); take = 1; + df_request_frame(); + window->menu_bar_key_held = 0; + } + if(window->menu_bar_focused && event->kind == OS_EventKind_Press && event->key == OS_Key_Alt && event->flags == 0 && event->is_repeat == 0) + { + take = 1; + df_request_frame(); + window->menu_bar_focused = 0; + } + else if(window->menu_bar_focus_press_started && !window->menu_bar_focused && event->kind == OS_EventKind_Release && event->flags == 0 && event->key == OS_Key_Alt && event->is_repeat == 0) + { + take = 1; + df_request_frame(); + window->menu_bar_focused = !window->menu_bar_focused_on_press; + window->menu_bar_focus_press_started = 0; + } + else if(event->kind == OS_EventKind_Press && event->key == OS_Key_Esc && window->menu_bar_focused && !ui_any_ctx_menu_is_open()) + { + take = 1; + df_request_frame(); + window->menu_bar_focused = 0; + } + } + + //- rjf: try hotkey presses + if(!take && event->kind == OS_EventKind_Press) + { + DF_Binding binding = {event->key, event->flags}; + D_CmdSpecList spec_candidates = df_cmd_spec_list_from_binding(scratch.arena, binding); + if(spec_candidates.first != 0 && !d_cmd_spec_is_nil(spec_candidates.first->spec)) + { + D_CmdSpec *run_spec = d_cmd_spec_from_kind(D_CmdKind_RunCommand); + D_CmdSpec *spec = spec_candidates.first->spec; + if(run_spec != spec) + { + params.cmd_spec = spec; + } + U32 hit_char = os_codepoint_from_event_flags_and_key(event->flags, event->key); + take = 1; + d_push_cmd(run_spec, ¶ms); if(event->flags & OS_EventFlag_Alt) { window->menu_bar_focus_press_started = 0; } } - - //- rjf: do fall-through - if(!take) + else if(OS_Key_F1 <= event->key && event->key <= OS_Key_F19) { - take = 1; - // TODO(rjf): @msgs - need some way to pass down the OS event - // df_msg(DF_MsgKind_OSEvent); + window->menu_bar_focus_press_started = 0; } - - //- rjf: take - if(take) + df_request_frame(); + } + + //- rjf: try text events + if(!take && event->kind == OS_EventKind_Text) + { + String32 insertion32 = str32(&event->character, 1); + String8 insertion8 = str8_from_32(scratch.arena, insertion32); + D_CmdSpec *spec = d_cmd_spec_from_kind(D_CmdKind_InsertText); + params.string = insertion8; + d_push_cmd(spec, ¶ms); + df_request_frame(); + take = 1; + if(event->flags & OS_EventFlag_Alt) { - os_eat_event(&events, event); + window->menu_bar_focus_press_started = 0; } } + + //- rjf: do fall-through + if(!take) + { + take = 1; + params.os_event = event; + d_push_cmd(d_cmd_spec_from_kind(D_CmdKind_OSEvent), ¶ms); + } + + //- rjf: take + if(take) + { + os_eat_event(&events, event); + } } } @@ -8430,7 +8321,6 @@ df_frame(void) U64 panel_sib_off = 0; U64 panel_child_off = 0; Vec2S32 panel_change_dir = {0}; - DF_CfgSlot cfg_slot = DF_CfgSlot_User; switch(msg->kind) { default:{}break; @@ -8438,7 +8328,7 @@ df_frame(void) //- rjf: meta case DF_MsgKind_Exit: { - CTRL_EntityList running_processes = ctrl_entity_list_from_kind(d_state->ctrl_entity_store, CTRL_EntityKind_Process); + D_EntityList running_processes = d_query_cached_entity_list_with_kind(D_EntityKind_Process); // NOTE(rjf): if targets are running, push confirmation first, and // get user's OK @@ -8462,8 +8352,8 @@ df_frame(void) // then save & exit else { - df_msg(DF_MsgKind_SaveUser); - df_msg(DF_MsgKind_SaveProject); + df_msg(DF_MsgKind_WriteUserData); + df_msg(DF_MsgKind_WriteProjectData); df_state->quit = 1; } }break; @@ -8471,27 +8361,35 @@ df_frame(void) { D_MsgKind d_kind = d_msg_kind_from_string(regs->string); DF_MsgKind df_kind = df_msg_kind_from_string(regs->string); - if(df_d_msg_kind_info_table[d_kind].query.flags & DF_MsgQueryFlag_Required || - df_msg_kind_info_table[df_kind].query.flags & DF_MsgQueryFlag_Required) + DF_MsgKindInfo *info = 0; + if(d_kind != D_MsgKind_Null) { - DF_Window *window = df_window_from_handle(regs->window); - if(window != 0) - { - // TODO(rjf): @msgs - // arena_clear(window->query_cmd_arena); - // window->query_cmd_spec = d_cmd_spec_is_nil(spec) ? cmd->spec : spec; - // window->query_cmd_params = df_cmd_params_copy(window->query_cmd_arena, params); - // MemoryZeroArray(window->query_cmd_params_mask); - // window->query_view_selected = 1; - } + info = &df_d_msg_kind_info_table[d_kind]; } - else + if(df_kind != DF_MsgKind_Null) { - if(d_kind != D_MsgKind_Null) + info = &df_msg_kind_info_table[df_kind]; + } + if(info != 0) + { + if(info->query.flags & DF_MsgQueryFlag_Required) + { + DF_Window *window = df_window_from_handle(regs->window); + if(window != 0) + { + // TODO(rjf): @msgs + // arena_clear(window->query_cmd_arena); + // window->query_cmd_spec = d_cmd_spec_is_nil(spec) ? cmd->spec : spec; + // window->query_cmd_params = df_cmd_params_copy(window->query_cmd_arena, params); + // MemoryZeroArray(window->query_cmd_params_mask); + // window->query_view_selected = 1; + } + } + else if(d_kind != D_MsgKind_Null) { d_msg(d_kind); } - if(df_kind != DF_MsgKind_Null) + else if(df_kind != DF_MsgKind_Null) { df_msg(df_kind); } @@ -8503,33 +8401,31 @@ df_frame(void) window->dev_menu_is_open ^= 1; }break; - //- rjf: config loading/saving - case DF_MsgKind_LoadUser: cfg_slot = DF_CfgSlot_User; goto load_cfg_data; - case DF_MsgKind_LoadProject: cfg_slot = DF_CfgSlot_Project; goto load_cfg_data; - load_cfg_data:; + //- rjf: config reading/writing + case DF_MsgKind_ApplyUserData: + case DF_MsgKind_ApplyProjectData: { - arena_clear(df_state->cfg_slot_arenas[cfg_slot]); - arena_clear(df_state->cfg_root_arena); - String8 cfg_path = regs->file_path; - String8 cfg_data = os_data_from_file_path(df_state->cfg_slot_arenas[cfg_slot], cfg_path); - df_state->cfg_slot_roots[cfg_slot] = md_tree_from_string(df_state->cfg_slot_arenas[cfg_slot], cfg_data); - df_state->cfg_root = md_push_list(df_state->cfg_root_arena); - for(EachEnumVal(DF_CfgSlot, slot)) - { - md_list_push_ref(df_state->cfg_root_arena, df_state->cfg_root, df_state->cfg_slot_roots[cfg_slot]); - } + // TODO(rjf) }break; - case DF_MsgKind_SaveUser: cfg_slot = DF_CfgSlot_User; goto save_cfg_data; - case DF_MsgKind_SaveProject: cfg_slot = DF_CfgSlot_Project; goto save_cfg_data; - save_cfg_data:; + case DF_MsgKind_WriteUserData: + case DF_MsgKind_WriteProjectData: { - // TODO(rjf): @msgs + // TODO(rjf) }break; //- rjf: windows case DF_MsgKind_OpenWindow: { - // TODO(rjf): @msgs + DF_Window *originating_window = df_window_from_handle(regs->window); + if(originating_window == 0) + { + originating_window = df_state->first_window; + } + DF_Window *new_ws = df_window_open(v2f32(1280, 720), os_handle_zero(), D_CfgSrc_User); + if(originating_window != 0) + { + MemoryCopy(new_ws->setting_vals, originating_window->setting_vals, sizeof(DF_SettingVal)*DF_SettingCode_COUNT); + } }break; case DF_MsgKind_CloseWindow: { @@ -8562,14 +8458,8 @@ df_frame(void) }break; //- rjf: queries - case DF_MsgKind_CompleteQuery: - { - // TODO(rjf): @msgs - }break; - case DF_MsgKind_CancelQuery: - { - // TODO(rjf): @msgs - }break; + case DF_MsgKind_CompleteQuery:{}break; + case DF_MsgKind_CancelQuery:{}break; //- rjf: searching case DF_MsgKind_FindTextForward: @@ -9514,7 +9404,7 @@ df_frame(void) for(DF_Window *ws = df_state->first_window; ws != 0; ws = ws->next) { DI_Scope *scope = di_scope_open(); - CTRL_Entity *thread = d_regs_thread(); + D_Entity *thread = d_entity_from_handle(regs->entity); U64 unwind_index = regs->unwind_count; U64 inline_depth = regs->inline_depth; if(thread->kind == D_EntityKind_Thread) @@ -9523,11 +9413,11 @@ df_frame(void) U64 rip_vaddr = d_query_cached_rip_from_thread_unwind(thread, unwind_index); // rjf: extract thread/rip info - CTRL_Entity *process = ctrl_entity_ancestor_from_kind(thread, CTRL_EntityKind_Process); - CTRL_Entity *module = ctrl_module_from_process_vaddr(process, rip_vaddr); - DI_Key dbgi_key = ctrl_dbgi_key_from_module(module); + D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); + D_Entity *module = d_module_from_process_vaddr(process, rip_vaddr); + DI_Key dbgi_key = d_dbgi_key_from_module(module); RDI_Parsed *rdi = di_rdi_from_key(scope, &dbgi_key, 0); - U64 rip_voff = ctrl_voff_from_vaddr(module, rip_vaddr); + U64 rip_voff = d_voff_from_vaddr(module, rip_vaddr); D_LineList lines = d_lines_from_dbgi_key_voff(scratch.arena, &dbgi_key, rip_voff); D_Line line = {0}; { @@ -9543,12 +9433,12 @@ df_frame(void) } // rjf: snap to resolved line - B32 missing_rip = (rip_vaddr == 0); - B32 dbgi_missing = (dbgi_key.min_timestamp == 0 || dbgi_key.path.size == 0); - B32 dbgi_pending = !dbgi_missing && rdi == &di_rdi_parsed_nil; + B32 missing_rip = (rip_vaddr == 0); + B32 dbgi_missing = (dbgi_key.min_timestamp == 0 || dbgi_key.path.size == 0); + B32 dbgi_pending = !dbgi_missing && rdi == &di_rdi_parsed_nil; B32 has_line_info = (line.voff_range.max != 0); - B32 has_module = (module != &ctrl_entity_nil); - B32 has_dbg_info = has_module && !dbgi_missing; + B32 has_module = !d_entity_is_nil(module); + B32 has_dbg_info = has_module && !dbgi_missing; if(!dbgi_pending && (has_line_info || has_module)) { df_msg(DF_MsgKind_FindCodeLocation, @@ -9635,27 +9525,27 @@ df_frame(void) // rjf: grab things to find. path * point, process * address, etc. String8 file_path = {0}; TxtPt point = {0}; - CTRL_Entity *thread = &ctrl_entity_nil; - CTRL_Entity *process = &ctrl_entity_nil; + D_Entity *thread = &d_nil_entity; + D_Entity *process = &d_nil_entity; U64 vaddr = 0; { file_path = regs->file_path; point = regs->cursor; - thread = d_regs_thread(); - process = ctrl_entity_ancestor_from_kind(thread, CTRL_EntityKind_Process); + thread = d_entity_from_handle(d_regs()->thread); + process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); vaddr = regs->vaddr_range.min; } // rjf: given a src code location, and a process, if no vaddr is specified, // try to map the src coordinates to a vaddr via line info - if(vaddr == 0 && file_path.size != 0 && process != &ctrl_entity_nil) + if(vaddr == 0 && file_path.size != 0 && !d_entity_is_nil(process)) { D_LineList lines = d_lines_from_file_path_line_num(scratch.arena, file_path, point.line); for(D_LineNode *n = lines.first; n != 0; n = n->next) { - CTRL_EntityList modules = ctrl_modules_from_dbgi_key(scratch.arena, d_state->ctrl_entity_store, &n->v.dbgi_key); - CTRL_Entity *module = ctrl_module_from_thread_candidates(d_state->ctrl_entity_store, thread, &modules); - vaddr = ctrl_vaddr_from_voff(module, n->v.voff_range.min); + D_EntityList modules = d_modules_from_dbgi_key(scratch.arena, &n->v.dbgi_key); + D_Entity *module = d_module_from_thread_candidates(thread, &modules); + vaddr = d_vaddr_from_voff(module, n->v.voff_range.min); break; } } @@ -9835,7 +9725,7 @@ df_frame(void) } // rjf: given the above, find disassembly location. - if(process != &ctrl_entity_nil && vaddr != 0) + if(!d_entity_is_nil(process) && vaddr != 0) { // rjf: determine which panel we will use to find the disasm loc - // we *cannot* use the same panel we used for source code, if any. @@ -9875,8 +9765,7 @@ df_frame(void) df_msg(DF_MsgKind_GoToAddress, .panel = df_handle_from_panel(dst_panel), .view = df_handle_from_view(dst_view), - .machine_id = process->machine_id, - .process = process->handle, + .process = d_handle_from_entity(process), .vaddr_range = r1u64(vaddr, vaddr)); df_msg(cursor_snap_kind); } @@ -9892,7 +9781,6 @@ df_frame(void) ////////////////////////////// //- rjf: process top-level graphical commands // -#if 0 // TODO(rjf): @msgs B32 panel_reset_done = 0; { B32 cfg_write_done[D_CfgSrc_COUNT] = {0}; @@ -10501,12 +10389,11 @@ df_frame(void) spec = d_cmd_spec_from_string(new_name); } } - if(!d_cmd_spec_is_nil(spec)) { cmd_spec = spec; } - OS_Key k = os_key_from_string(child->string); + OS_Key k = df_os_key_from_cfg_string(child->string); if(k != OS_Key_Null) { key = k; @@ -10756,7 +10643,7 @@ df_frame(void) { cfg_write_done[src] = 1; String8 path = d_cfg_path_from_src(src); - String8List strs = df_cfg_strings_from_state(scratch.arena, path, src); + String8List strs = df_cfg_strings_from_gfx(scratch.arena, path, src); String8 data = str8_list_join(scratch.arena, &strs, 0); String8 data_indented = indented_from_string(scratch.arena, data); d_cfg_push_write_string(src, data_indented); @@ -11801,19 +11688,14 @@ df_frame(void) di_scope_close(scope); }break; case D_CmdKind_FindSelectedThread: + for(DF_Window *ws = df_state->first_window; ws != 0; ws = ws->next) { - // TODO(rjf): @msgs -#if 0 - for(DF_Window *ws = df_state->first_window; ws != 0; ws = ws->next) - { - D_Entity *selected_thread = d_entity_from_handle(d_base_regs()->thread); - D_CmdParams params = df_cmd_params_from_window(ws); - params.entity = d_handle_from_entity(selected_thread); - params.unwind_index = d_base_regs()->unwind_count; - params.inline_depth = d_base_regs()->inline_depth; - d_cmd_list_push(scratch.arena, &cmds, ¶ms, d_cmd_spec_from_kind(D_CmdKind_FindThread)); - } -#endif + D_Entity *selected_thread = d_entity_from_handle(d_base_regs()->thread); + D_CmdParams params = df_cmd_params_from_window(ws); + params.entity = d_handle_from_entity(selected_thread); + params.unwind_index = d_base_regs()->unwind_count; + params.inline_depth = d_base_regs()->inline_depth; + d_cmd_list_push(scratch.arena, &cmds, ¶ms, d_cmd_spec_from_kind(D_CmdKind_FindThread)); }break; //- rjf: name finding @@ -12044,7 +11926,6 @@ df_frame(void) }break; case D_CmdKind_FindCodeLocation: { -#if 0 // TODO(rjf): @msgs // NOTE(rjf): This command is where a lot of high-level flow things // in the debugger come together. It's that codepath that runs any // time a source code location is clicked in the UI, when a thread @@ -12331,7 +12212,6 @@ df_frame(void) d_cmd_list_push(scratch.arena, &cmds, ¶ms, d_cmd_spec_from_kind(cursor_snap_kind)); } } -#endif }break; //- rjf: filtering @@ -12435,7 +12315,6 @@ df_frame(void) } } } -#endif ////////////////////////////// //- rjf: queue drag drop (TODO(rjf): @msgs) diff --git a/src/dbg_frontend/dbg_frontend_core.h b/src/dbg_frontend/dbg_frontend_core.h index 8b23fa4c..b5447338 100644 --- a/src/dbg_frontend/dbg_frontend_core.h +++ b/src/dbg_frontend/dbg_frontend_core.h @@ -4,18 +4,6 @@ #ifndef DBG_FRONTEND_CORE_H #define DBG_FRONTEND_CORE_H -//////////////////////////////// -//~ rjf: Config Slots - -typedef enum DF_CfgSlot -{ - DF_CfgSlot_User, - DF_CfgSlot_Project, - DF_CfgSlot_CommandLine, - DF_CfgSlot_COUNT -} -DF_CfgSlot; - //////////////////////////////// //~ rjf: Binding Types @@ -404,7 +392,6 @@ enum typedef struct DF_MsgKindInfo DF_MsgKindInfo; struct DF_MsgKindInfo { - String8 name_lower; String8 display_name; String8 description; String8 search_tags; @@ -607,11 +594,6 @@ struct DF_Window S64 autocomp_cursor_num; // rjf: query view stack - Arena *query_msg_arena; - String8 query_msg_name; - DF_MsgQuery query_msg_query; - U64 query_msg_regs_mask[(D_RegSlot_COUNT+63)/64]; - D_Regs *query_msg_regs; Arena *query_cmd_arena; D_CmdSpec *query_cmd_spec; U64 query_cmd_params_mask[(D_CmdParamSlot_COUNT + 63) / 64]; @@ -666,25 +648,15 @@ struct DF_State Arena *arena; B32 quit; - // rjf: icon texture - R_Handle icon_texture; - - // rjf: frame time history - U64 frame_time_us_history[64]; - U64 frame_time_us_history_idx; + // rjf: messages + Arena *msgs_arena; + DF_MsgList msgs; // rjf: frame request state U64 num_frames_requested; - // rjf: config trees - Arena *cfg_root_arena; - MD_Node *cfg_root; - Arena *cfg_slot_arenas[DF_CfgSlot_COUNT]; - MD_Node *cfg_slot_roots[DF_CfgSlot_COUNT]; - - // rjf: messages - Arena *msgs_arena; - DF_MsgList msgs; + // rjf: history cache + D_StateDeltaHistory *hist; // rjf: key map table Arena *key_map_arena; @@ -763,6 +735,13 @@ struct DF_State // rjf: global settings DF_SettingVal cfg_setting_vals[D_CfgSrc_COUNT][DF_SettingCode_COUNT]; + + // rjf: icon texture + R_Handle icon_texture; + + // rjf: frame time history + U64 frame_time_us_history[64]; + U64 frame_time_us_history_idx; }; //////////////////////////////// @@ -867,11 +846,9 @@ internal DF_Window *df_window_from_handle(D_Handle handle); internal D_CmdParams df_cmd_params_from_gfx(void); internal B32 df_prefer_dasm_from_window(DF_Window *window); -#if 0 // TODO(rjf): @msgs internal D_CmdParams df_cmd_params_from_window(DF_Window *window); internal D_CmdParams df_cmd_params_from_panel(DF_Window *window, DF_Panel *panel); internal D_CmdParams df_cmd_params_from_view(DF_Window *window, DF_Panel *panel, DF_View *view); -#endif internal D_CmdParams df_cmd_params_copy(Arena *arena, D_CmdParams *src); //////////////////////////////// @@ -978,6 +955,7 @@ internal String8 df_push_search_string(Arena *arena); //~ rjf: Colors, Fonts, Config //- rjf: keybindings +internal OS_Key df_os_key_from_cfg_string(String8 string); internal void df_clear_bindings(void); internal DF_BindingList df_bindings_from_spec(Arena *arena, D_CmdSpec *spec); internal void df_bind_spec(D_CmdSpec *spec, DF_Binding binding); @@ -1002,7 +980,7 @@ internal DF_SettingVal df_setting_val_from_code(DF_SettingCode code); //- rjf: config serialization internal int df_qsort_compare__cfg_string_bindings(DF_StringBindingPair *a, DF_StringBindingPair *b); -internal String8List df_cfg_strings_from_state(Arena *arena, String8 root_path, D_CfgSrc source); +internal String8List df_cfg_strings_from_gfx(Arena *arena, String8 root_path, D_CfgSrc source); //////////////////////////////// //~ rjf: Process Control Info Stringification @@ -1018,14 +996,7 @@ internal void df_request_frame(void); //////////////////////////////// //~ rjf: Message Functions -//- rjf: string -> msg kind internal DF_MsgKind df_msg_kind_from_string(String8 string); - -//- rjf: register setting helpers -internal void df_regs_set_window(DF_Window *window); -internal void df_regs_set_from_query_slot_string(D_RegSlot slot, String8 string); - -//- rjf: message pushing internal void df_msg_(DF_MsgKind kind, D_Regs *regs); #define df_msg(kind, ...) df_msg_((kind),\ &(D_Regs)\ @@ -1037,7 +1008,7 @@ __VA_ARGS__\ //////////////////////////////// //~ rjf: Main Layer Top-Level Calls -internal void df_init(void); +internal void df_init(D_StateDeltaHistory *hist); internal void df_frame(void); #endif // DBG_FRONTEND_CORE_H diff --git a/src/dbg_frontend/dbg_frontend_views.c b/src/dbg_frontend/dbg_frontend_views.c index d677920d..689ce13f 100644 --- a/src/dbg_frontend/dbg_frontend_views.c +++ b/src/dbg_frontend/dbg_frontend_views.c @@ -88,8 +88,8 @@ df_code_view_build(Arena *arena, DF_View *view, DF_CodeViewState *cv, DF_CodeVie F32 scroll_bar_dim = floor_f32(ui_top_font_size()*1.5f); Vec2F32 code_area_dim = v2f32(panel_box_dim.x - scroll_bar_dim, panel_box_dim.y - scroll_bar_dim); S64 num_possible_visible_lines = (S64)(code_area_dim.y/code_line_height)+1; - CTRL_Entity *thread = d_regs_thread(); - CTRL_Entity *process = ctrl_entity_ancestor_from_kind(thread, CTRL_EntityKind_Process); + D_Entity *thread = d_entity_from_handle(d_regs()->thread); + D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); ////////////////////////////// //- rjf: determine visible line range / count @@ -171,7 +171,7 @@ df_code_view_build(Arena *arena, DF_View *view, DF_CodeViewState *cv, DF_CodeVie code_slice_params.line_ranges = push_array(scratch.arena, Rng1U64, visible_line_count); code_slice_params.line_tokens = push_array(scratch.arena, TXT_TokenArray, visible_line_count); code_slice_params.line_bps = push_array(scratch.arena, D_EntityList, visible_line_count); - code_slice_params.line_ips = push_array(scratch.arena, CTRL_EntityList, visible_line_count); + code_slice_params.line_ips = push_array(scratch.arena, D_EntityList, visible_line_count); code_slice_params.line_pins = push_array(scratch.arena, D_EntityList, visible_line_count); code_slice_params.line_vaddrs = push_array(scratch.arena, U64, visible_line_count); code_slice_params.line_infos = push_array(scratch.arena, D_LineList, visible_line_count); @@ -219,26 +219,26 @@ df_code_view_build(Arena *arena, DF_View *view, DF_CodeViewState *cv, DF_CodeVie ProfScope("find live threads mapping to this file") { String8 file_path = d_regs()->file_path; - CTRL_Entity *selected_thread = d_regs_thread(); - CTRL_EntityList threads = ctrl_entity_list_from_kind(d_state->ctrl_entity_store, CTRL_EntityKind_Thread); - for(CTRL_EntityNode *thread_n = threads.first; thread_n != 0; thread_n = thread_n->next) + D_Entity *selected_thread = d_entity_from_handle(d_regs()->thread); + D_EntityList threads = d_query_cached_entity_list_with_kind(D_EntityKind_Thread); + for(D_EntityNode *thread_n = threads.first; thread_n != 0; thread_n = thread_n->next) { - CTRL_Entity *thread = thread_n->v; - CTRL_Entity *process = ctrl_entity_ancestor_from_kind(thread, CTRL_EntityKind_Process); + D_Entity *thread = thread_n->entity; + D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); U64 unwind_count = (thread == selected_thread) ? d_regs()->unwind_count : 0; U64 inline_depth = (thread == selected_thread) ? d_regs()->inline_depth : 0; U64 rip_vaddr = d_query_cached_rip_from_thread_unwind(thread, unwind_count); U64 last_inst_on_unwound_rip_vaddr = rip_vaddr - !!unwind_count; - CTRL_Entity *module = ctrl_module_from_process_vaddr(process, last_inst_on_unwound_rip_vaddr); - U64 rip_voff = ctrl_voff_from_vaddr(module, last_inst_on_unwound_rip_vaddr); - DI_Key dbgi_key = ctrl_dbgi_key_from_module(module); + D_Entity *module = d_module_from_process_vaddr(process, last_inst_on_unwound_rip_vaddr); + U64 rip_voff = d_voff_from_vaddr(module, last_inst_on_unwound_rip_vaddr); + DI_Key dbgi_key = d_dbgi_key_from_module(module); D_LineList lines = d_lines_from_dbgi_key_voff(scratch.arena, &dbgi_key, rip_voff); for(D_LineNode *n = lines.first; n != 0; n = n->next) { if(path_match_normalized(n->v.file_path, file_path) && visible_line_num_range.min <= n->v.pt.line && n->v.pt.line <= visible_line_num_range.max) { U64 slice_line_idx = n->v.pt.line-visible_line_num_range.min; - ctrl_entity_list_push(scratch.arena, &code_slice_params.line_ips[slice_line_idx], thread); + d_entity_list_push(scratch.arena, &code_slice_params.line_ips[slice_line_idx], thread); } } } @@ -276,21 +276,21 @@ df_code_view_build(Arena *arena, DF_View *view, DF_CodeViewState *cv, DF_CodeVie // rjf: find live threads mapping to disasm if(dasm_lines) ProfScope("find live threads mapping to this disassembly") { - CTRL_Entity *selected_thread = d_regs_thread(); - CTRL_EntityList threads = ctrl_entity_list_from_kind(d_state->ctrl_entity_store, CTRL_EntityKind_Thread); - for(CTRL_EntityNode *thread_n = threads.first; thread_n != 0; thread_n = thread_n->next) + D_Entity *selected_thread = d_entity_from_handle(d_regs()->thread); + D_EntityList threads = d_query_cached_entity_list_with_kind(D_EntityKind_Thread); + for(D_EntityNode *thread_n = threads.first; thread_n != 0; thread_n = thread_n->next) { - CTRL_Entity *thread = thread_n->v; + D_Entity *thread = thread_n->entity; U64 unwind_count = (thread == selected_thread) ? d_regs()->unwind_count : 0; U64 rip_vaddr = d_query_cached_rip_from_thread_unwind(thread, unwind_count); - if(ctrl_entity_ancestor_from_kind(thread, CTRL_EntityKind_Process) == process && contains_1u64(dasm_vaddr_range, rip_vaddr)) + if(d_entity_ancestor_from_kind(thread, D_EntityKind_Process) == process && contains_1u64(dasm_vaddr_range, rip_vaddr)) { U64 rip_off = rip_vaddr - dasm_vaddr_range.min; S64 line_num = dasm_line_array_idx_from_code_off__linear_scan(dasm_lines, rip_off)+1; if(contains_1s64(visible_line_num_range, line_num)) { U64 slice_line_idx = (line_num-visible_line_num_range.min); - ctrl_entity_list_push(scratch.arena, &code_slice_params.line_ips[slice_line_idx], thread); + d_entity_list_push(scratch.arena, &code_slice_params.line_ips[slice_line_idx], thread); } } } @@ -343,12 +343,12 @@ df_code_view_build(Arena *arena, DF_View *view, DF_CodeViewState *cv, DF_CodeVie // rjf: fill dasm -> src info if(dasm_lines) { - CTRL_Entity *module = ctrl_module_from_process_vaddr(process, dasm_vaddr_range.min); - DI_Key dbgi_key = ctrl_dbgi_key_from_module(module); + D_Entity *module = d_module_from_process_vaddr(process, dasm_vaddr_range.min); + DI_Key dbgi_key = d_dbgi_key_from_module(module); for(S64 line_num = visible_line_num_range.min; line_num < visible_line_num_range.max; line_num += 1) { U64 vaddr = dasm_vaddr_range.min + dasm_line_array_code_off_from_idx(dasm_lines, line_num-1); - U64 voff = ctrl_voff_from_vaddr(module, vaddr); + U64 voff = d_voff_from_vaddr(module, vaddr); U64 slice_idx = line_num-visible_line_num_range.min; code_slice_params.line_vaddrs[slice_idx] = vaddr; code_slice_params.line_infos[slice_idx] = d_lines_from_dbgi_key_voff(scratch.arena, &dbgi_key, voff); @@ -845,9 +845,9 @@ df_string_from_eval_viz_row_column(Arena *arena, D_EvalView *ev, D_EvalVizRow *r case DF_WatchViewColumnKind_Module: { E_Eval eval = e_eval_from_expr(arena, row->expr); - CTRL_Entity *process = d_regs_process(); - CTRL_Entity *module = ctrl_module_from_process_vaddr(process, eval.value.u64); - result = push_str8_copy(arena, module->string); + D_Entity *process = d_entity_from_handle(d_regs()->process); + D_Entity *module = d_module_from_process_vaddr(process, eval.value.u64); + result = d_display_string_from_entity(arena, module); }break; case DF_WatchViewColumnKind_Member: { @@ -946,6 +946,13 @@ df_watch_view_build(DF_View *view, DF_WatchViewState *ewv, B32 modifiable, U32 d ////////////////////////////// //- rjf: unpack arguments // + FNT_Tag code_font = df_font_from_slot(DF_FontSlot_Code); + D_Entity *thread = d_entity_from_handle(d_regs()->thread); + Arch arch = d_arch_from_entity(thread); + CTRL_Unwind base_unwind = d_query_cached_unwind_from_thread(thread); + D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); + D_Unwind rich_unwind = d_unwind_from_ctrl_unwind(scratch.arena, di_scope, process, &base_unwind); + U64 thread_ip_vaddr = d_query_cached_rip_from_thread_unwind(thread, d_regs()->unwind_count); D_EvalViewKey eval_view_key = df_eval_view_key_from_eval_watch_view(ewv); D_EvalView *eval_view = d_eval_view_from_key(eval_view_key); String8 filter = str8(view->query_buffer, view->query_string_size); @@ -1045,7 +1052,6 @@ df_watch_view_build(DF_View *view, DF_WatchViewState *ewv, B32 modifiable, U32 d { mutable_entity_kind = D_EntityKind_Breakpoint; d_cfg_table_push_unparsed_string(scratch.arena, &top_level_cfg_table, str8_lit("no_addr"), D_CfgSrc_User); -#if 0 // TODO(rjf): @msgs D_EntityList bps = d_query_cached_entity_list_with_kind(mutable_entity_kind); for(D_EntityNode *n = bps.first; n != 0; n = n->next) { @@ -1077,7 +1083,6 @@ df_watch_view_build(DF_View *view, DF_WatchViewState *ewv, B32 modifiable, U32 d d_append_expr_eval_viz_blocks__rec(scratch.arena, eval_view, parent_key, key, title, bp_expr, &top_level_cfg_table, 0, &blocks); } } -#endif }break; //////////////////////////// @@ -1086,7 +1091,6 @@ df_watch_view_build(DF_View *view, DF_WatchViewState *ewv, B32 modifiable, U32 d case DF_WatchViewFillKind_WatchPins: { mutable_entity_kind = D_EntityKind_WatchPin; -#if 0 // TODO(rjf): @msgs D_EntityList wps = d_query_cached_entity_list_with_kind(mutable_entity_kind); for(D_EntityNode *n = wps.first; n != 0; n = n->next) { @@ -1114,7 +1118,6 @@ df_watch_view_build(DF_View *view, DF_WatchViewState *ewv, B32 modifiable, U32 d d_append_expr_eval_viz_blocks__rec(scratch.arena, eval_view, parent_key, key, title, wp_expr, &top_level_cfg_table, 0, &blocks); } } -#endif }break; //////////////////////////// @@ -1122,13 +1125,6 @@ df_watch_view_build(DF_View *view, DF_WatchViewState *ewv, B32 modifiable, U32 d // case DF_WatchViewFillKind_CallStack: { - //- rjf: unpack - CTRL_Entity *thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, d_regs()->machine_id, d_regs()->thread); - Arch arch = thread->arch; - CTRL_Unwind base_unwind = d_query_cached_unwind_from_thread(thread); - CTRL_Entity *process = ctrl_entity_ancestor_from_kind(thread, CTRL_EntityKind_Process); - D_Unwind rich_unwind = d_unwind_from_ctrl_unwind(scratch.arena, di_scope, process, &base_unwind); - //- rjf: produce per-row info for callstack frame_rows_count = rich_unwind.frames.total_frame_count; frame_rows = push_array(scratch.arena, FrameRow, frame_rows_count); @@ -1201,8 +1197,8 @@ df_watch_view_build(DF_View *view, DF_WatchViewState *ewv, B32 modifiable, U32 d // case DF_WatchViewFillKind_Registers: { - CTRL_Entity *thread = d_regs_thread(); - Arch arch = thread->arch; + D_Entity *thread = d_entity_from_handle(d_regs()->thread); + Arch arch = d_arch_from_entity(thread); U64 reg_count = regs_reg_code_count_from_arch(arch); String8 *reg_strings = regs_reg_code_string_table_from_arch(arch); U64 alias_count = regs_alias_code_count_from_arch(arch); @@ -1631,10 +1627,9 @@ df_watch_view_build(DF_View *view, DF_WatchViewState *ewv, B32 modifiable, U32 d { E_Eval eval = e_eval_from_expr(scratch.arena, row->expr); U64 vaddr = eval.value.u64; - CTRL_Entity *process = d_regs_process(); - CTRL_Entity *module = ctrl_module_from_process_vaddr(process, vaddr); - DI_Key dbgi_key = ctrl_dbgi_key_from_module(module); - U64 voff = ctrl_voff_from_vaddr(module, vaddr); + D_Entity *module = d_module_from_process_vaddr(process, vaddr); + DI_Key dbgi_key = d_dbgi_key_from_module(module); + U64 voff = d_voff_from_vaddr(module, vaddr); D_LineList lines = d_lines_from_dbgi_key_voff(scratch.arena, &dbgi_key, voff); String8 file_path = {0}; TxtPt pt = {0}; @@ -1643,16 +1638,18 @@ df_watch_view_build(DF_View *view, DF_WatchViewState *ewv, B32 modifiable, U32 d file_path = lines.first->v.file_path; pt = lines.first->v.pt; } - df_msg(DF_MsgKind_FindCodeLocation, - .vaddr_range = r1u64(vaddr, vaddr), - .file_path = file_path, - .cursor = pt); + d_cmd(D_CmdKind_FindCodeLocation, + .entity = d_handle_from_entity(process), + .vaddr = vaddr, + .file_path = file_path, + .text_point= pt); } if(1 <= selection_tbl.min.y && selection_tbl.min.y <= frame_rows_count) { FrameRow *frame_row = &frame_rows[selection_tbl.min.y-1]; - d_msg(D_MsgKind_SelectUnwind, - .unwind_count = frame_row->unwind_idx, + d_cmd(D_CmdKind_SelectUnwind, + .entity = d_regs()->thread, + .unwind_index = frame_row->unwind_idx, .inline_depth = frame_row->inline_depth); } } @@ -2201,13 +2198,13 @@ df_watch_view_build(DF_View *view, DF_WatchViewState *ewv, B32 modifiable, U32 d default:{}break; case E_Mode_Offset: { - CTRL_Entity *space_entity = d_entity_from_eval_space(row_eval.space); - if(space_entity->kind == CTRL_EntityKind_Process) + D_Entity *space_entity = d_entity_from_eval_space(row_eval.space); + if(space_entity->kind == D_EntityKind_Process) { U64 size = e_type_byte_size_from_key(row_eval.type_key); size = Min(size, 64); Rng1U64 vaddr_rng = r1u64(row_eval.value.u64, row_eval.value.u64+size); - CTRL_ProcessMemorySlice slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, space_entity->machine_id, space_entity->handle, vaddr_rng, 0); + CTRL_ProcessMemorySlice slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, space_entity->ctrl_machine_id, space_entity->ctrl_handle, vaddr_rng, 0); for(U64 idx = 0; idx < (slice.data.size+63)/64; idx += 1) { if(slice.byte_changed_flags[idx] != 0) @@ -2493,12 +2490,8 @@ df_watch_view_build(DF_View *view, DF_WatchViewState *ewv, B32 modifiable, U32 d { if(semantic_idx == d_regs()->unwind_count - d_regs()->inline_depth) { - CTRL_Entity *thread = d_regs_thread(); cell_icon = DF_IconKind_RightArrow; - if(thread->rgba_u32 != 0) - { - cell_base_color = rgba_from_u32(thread->rgba_u32); - } + cell_base_color = d_rgba_from_entity(d_entity_from_handle(d_regs()->thread)); } }break; } @@ -2631,10 +2624,9 @@ df_watch_view_build(DF_View *view, DF_WatchViewState *ewv, B32 modifiable, U32 d if(ui_double_clicked(sig) && !cell_can_edit) { U64 vaddr = cell_eval.value.u64; - CTRL_Entity *process = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, d_regs()->machine_id, d_regs()->process); - CTRL_Entity *module = ctrl_module_from_process_vaddr(process, vaddr); - DI_Key dbgi_key = ctrl_dbgi_key_from_module(module); - U64 voff = ctrl_voff_from_vaddr(module, vaddr); + D_Entity *module = d_module_from_process_vaddr(process, vaddr); + DI_Key dbgi_key = d_dbgi_key_from_module(module); + U64 voff = d_voff_from_vaddr(module, vaddr); D_LineList lines = d_lines_from_dbgi_key_voff(scratch.arena, &dbgi_key, voff); String8 file_path = {0}; TxtPt pt = {0}; @@ -2643,18 +2635,20 @@ df_watch_view_build(DF_View *view, DF_WatchViewState *ewv, B32 modifiable, U32 d file_path = lines.first->v.file_path; pt = lines.first->v.pt; } - df_msg(DF_MsgKind_FindCodeLocation, - .vaddr_range = r1u64(vaddr, vaddr), - .file_path = file_path, - .cursor = pt); + d_cmd(D_CmdKind_FindCodeLocation, + .entity = d_handle_from_entity(process), + .vaddr = vaddr, + .file_path = file_path, + .text_point = pt); } // rjf: double-click, not editable, callstack frame -> select frame if(ui_double_clicked(sig) && !cell_can_edit && semantic_idx < frame_rows_count) { FrameRow *frame_row = &frame_rows[semantic_idx]; - d_msg(D_MsgKind_SelectUnwind, - .unwind_count = frame_row->unwind_idx, + d_cmd(D_CmdKind_SelectUnwind, + .entity = d_regs()->thread, + .unwind_index = frame_row->unwind_idx, .inline_depth = frame_row->inline_depth); } @@ -5506,7 +5500,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(scheduler) {} DF_VIEW_CMD_FUNCTION_DEF(scheduler) {} DF_VIEW_UI_FUNCTION_DEF(scheduler) { -#if 0 // TODO(rjf): @msgs ProfBeginFunction(); Temp scratch = scratch_begin(0, 0); String8 query = string; @@ -5720,7 +5713,6 @@ DF_VIEW_UI_FUNCTION_DEF(scheduler) scratch_end(scratch); ProfEnd(); -#endif } //////////////////////////////// @@ -6668,12 +6660,12 @@ DF_VIEW_CMD_FUNCTION_DEF(disasm) E_Space space = eval.space; if(auto_selected_thread) { - space = d_eval_space_from_entity(d_regs_process()); + space = d_eval_space_from_entity(d_entity_from_handle(d_regs()->process)); } Rng1U64 range = d_range_from_eval_params(eval, params); Arch arch = d_arch_from_eval_params(eval, params); - CTRL_Entity *space_entity = d_entity_from_eval_space(space); - CTRL_Entity *dasm_module = &ctrl_entity_nil; + D_Entity *space_entity = d_entity_from_eval_space(space); + D_Entity *dasm_module = &d_nil_entity; DI_Key dbgi_key = {0}; U64 base_vaddr = 0; switch(space_entity->kind) @@ -6681,10 +6673,10 @@ DF_VIEW_CMD_FUNCTION_DEF(disasm) default:{}break; case D_EntityKind_Process: { - arch = space_entity->arch; - dasm_module = ctrl_module_from_process_vaddr(space_entity, range.min); - dbgi_key = ctrl_dbgi_key_from_module(dasm_module); - base_vaddr = dasm_module->vaddr_range.min; + arch = d_arch_from_entity(space_entity); + dasm_module = d_module_from_process_vaddr(space_entity, range.min); + dbgi_key = d_dbgi_key_from_module(dasm_module); + base_vaddr = dasm_module->vaddr_rng.min; }break; } U128 dasm_key = d_key_from_eval_space_range(space, range, 0); @@ -6800,23 +6792,23 @@ DF_VIEW_UI_FUNCTION_DEF(disasm) E_Space space = eval.space; if(auto_selected_thread) { - space = d_eval_space_from_entity(d_regs_process()); + space = d_eval_space_from_entity(d_entity_from_handle(d_regs()->process)); } Rng1U64 range = d_range_from_eval_params(eval, params); Arch arch = d_arch_from_eval_params(eval, params); - CTRL_Entity *space_entity = d_entity_from_eval_space(space); - CTRL_Entity *dasm_module = &ctrl_entity_nil; + D_Entity *space_entity = d_entity_from_eval_space(space); + D_Entity *dasm_module = &d_nil_entity; DI_Key dbgi_key = {0}; U64 base_vaddr = 0; switch(space_entity->kind) { default:{}break; - case CTRL_EntityKind_Process: + case D_EntityKind_Process: { - arch = space_entity->arch; - dasm_module = ctrl_module_from_process_vaddr(space_entity, range.min); - dbgi_key = ctrl_dbgi_key_from_module(dasm_module); - base_vaddr = dasm_module->vaddr_range.min; + arch = d_arch_from_entity(space_entity); + dasm_module = d_module_from_process_vaddr(space_entity, range.min); + dbgi_key = d_dbgi_key_from_module(dasm_module); + base_vaddr = dasm_module->vaddr_rng.min; }break; } U128 dasm_key = d_key_from_eval_space_range(space, range, 0); @@ -6874,8 +6866,8 @@ DF_VIEW_UI_FUNCTION_DEF(disasm) { U64 off = dasm_line_array_code_off_from_idx(&dasm_info.lines, d_regs()->cursor.line-1); d_regs()->vaddr_range = r1u64(base_vaddr+off, base_vaddr+off); - d_regs()->voff_range = ctrl_voff_range_from_vaddr_range(dasm_module, d_regs()->vaddr_range); - d_regs()->lines = d_lines_from_dbgi_key_voff(d_frame_arena(), &dbgi_key, d_regs()->voff_range.min); + d_regs()->voff_range = d_voff_range_from_vaddr_range(dasm_module, d_regs()->vaddr_range); + d_regs()->lines = d_lines_from_dbgi_key_voff(d_frame_arena(), &dbgi_key, d_regs()->voff_range.min); } ////////////////////////////// @@ -6892,7 +6884,7 @@ DF_VIEW_UI_FUNCTION_DEF(disasm) DF_Font(DF_FontSlot_Code) { U64 cursor_vaddr = (1 <= d_regs()->cursor.line && d_regs()->cursor.line <= dasm_info.lines.count) ? (range.min+dasm_info.lines.v[d_regs()->cursor.line-1].code_off) : 0; - if(dasm_module != &ctrl_entity_nil) + if(!d_entity_is_nil(dasm_module)) { ui_labelf("%S", path_normalized_from_string(scratch.arena, dasm_module->string)); ui_spacer(ui_em(1.5f, 1)); @@ -7072,7 +7064,7 @@ DF_VIEW_UI_FUNCTION_DEF(memory) E_Eval eval = e_eval_from_string(scratch.arena, string); if(u128_match(eval.space, u128_zero())) { - eval.space = d_eval_space_from_entity(d_regs_process()); + eval.space = d_eval_space_from_entity(d_entity_from_handle(d_regs()->process)); } Rng1U64 space_range = d_whole_range_from_eval_space(eval.space); U64 cursor = d_value_from_params_key(params, str8_lit("cursor_vaddr")).u64; @@ -7294,8 +7286,8 @@ DF_VIEW_UI_FUNCTION_DEF(memory) }; AnnotationList *visible_memory_annotations = push_array(scratch.arena, AnnotationList, visible_memory_size); { - CTRL_Entity *thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, d_regs()->machine_id, d_regs()->thread); - CTRL_Entity *process = ctrl_entity_ancestor_from_kind(thread, CTRL_EntityKind_Process); + D_Entity *thread = d_entity_from_handle(d_regs()->thread); + D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); CTRL_Unwind unwind = d_query_cached_unwind_from_thread(thread); //- rjf: fill unwind frame annotations @@ -7312,9 +7304,9 @@ DF_VIEW_UI_FUNCTION_DEF(memory) if(dim_1u64(frame_vaddr_range_in_viz) != 0) { U64 f_rip = regs_rip_from_arch_block(thread->arch, f->regs); - CTRL_Entity *module = ctrl_module_from_process_vaddr(process, f_rip); - DI_Key dbgi_key = ctrl_dbgi_key_from_module(module); - U64 rip_voff = ctrl_voff_from_vaddr(module, f_rip); + D_Entity *module = d_module_from_process_vaddr(process, f_rip); + DI_Key dbgi_key = d_dbgi_key_from_module(module); + U64 rip_voff = d_voff_from_vaddr(module, f_rip); String8 symbol_name = d_symbol_name_from_dbgi_key_voff(scratch.arena, &dbgi_key, rip_voff, 1); Annotation *annotation = push_array(scratch.arena, Annotation, 1); annotation->name_string = symbol_name.size != 0 ? symbol_name : str8_lit("[external code]"); @@ -7340,13 +7332,9 @@ DF_VIEW_UI_FUNCTION_DEF(memory) if(dim_1u64(stack_vaddr_range_in_viz) != 0) { Annotation *annotation = push_array(scratch.arena, Annotation, 1); - annotation->name_string = thread->string; - if(annotation->name_string.size == 0) - { - annotation->name_string = push_str8f(scratch.arena, "TID: %I64u", thread->id); - } + annotation->name_string = d_display_string_from_entity(scratch.arena, thread); annotation->kind_string = str8_lit("Stack"); - annotation->color = thread->rgba_u32 != 0 ? rgba_from_u32(thread->rgba_u32) : df_rgba_from_theme_color(DF_ThemeColor_Text); + annotation->color = thread->flags & D_EntityFlag_HasColor ? d_rgba_from_entity(thread) : df_rgba_from_theme_color(DF_ThemeColor_Text); annotation->vaddr_range = stack_vaddr_range; for(U64 vaddr = stack_vaddr_range_in_viz.min; vaddr < stack_vaddr_range_in_viz.max; vaddr += 1) { diff --git a/src/dbg_frontend/dbg_frontend_widgets.c b/src/dbg_frontend/dbg_frontend_widgets.c index 69b0805d..5e97b9a8 100644 --- a/src/dbg_frontend/dbg_frontend_widgets.c +++ b/src/dbg_frontend/dbg_frontend_widgets.c @@ -415,7 +415,6 @@ df_icon_buttonf(DF_IconKind kind, FuzzyMatchRangeList *matches, char *fmt, ...) internal void df_entity_tooltips(D_Entity *entity) { -#if 0 // TODO(rjf): @msgs Temp scratch = scratch_begin(0, 0); DF_Palette(DF_PaletteCode_Floating) switch(entity->kind) { @@ -577,140 +576,11 @@ df_entity_tooltips(D_Entity *entity) }break; } scratch_end(scratch); -#endif -} - -internal void -df_ctrl_entity_tooltips(CTRL_Entity *entity) -{ - Temp scratch = scratch_begin(0, 0); - DF_Palette(DF_PaletteCode_Floating) switch(entity->kind) - { - default:{}break; - case CTRL_EntityKind_Thread: UI_Flags(0) - UI_Tooltip UI_PrefWidth(ui_text_dim(10, 1)) - { - String8 display_string = entity->string; - if(display_string.size == 0) - { - display_string = push_str8f(scratch.arena, "TID: %I64u", entity->id); - } - U64 rip_vaddr = d_query_cached_rip_from_thread(entity); - Arch arch = entity->arch; - String8 arch_str = string_from_arch(arch); - if(display_string.size != 0) UI_PrefWidth(ui_children_sum(1)) UI_Row - { - if(entity->rgba_u32 != 0) - { - ui_set_next_palette(ui_build_palette(ui_top_palette(), .text = rgba_from_u32(entity->rgba_u32))); - } - UI_PrefWidth(ui_text_dim(10, 1)) ui_label(display_string); - } - { - CTRL_Event stop_event = d_ctrl_last_stop_event(); - CTRL_Entity *stopper_thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, stop_event.machine_id, stop_event.entity); - if(stopper_thread == entity) - { - ui_spacer(ui_em(1.5f, 1.f)); - DF_IconKind icon_kind = DF_IconKind_Null; - String8 explanation = df_stop_explanation_string_icon_from_ctrl_event(scratch.arena, &stop_event, &icon_kind); - if(explanation.size != 0) - { - UI_Palette *palette = ui_top_palette(); - if(stop_event.cause == CTRL_EventCause_Error || - stop_event.cause == CTRL_EventCause_InterruptedByException || - stop_event.cause == CTRL_EventCause_InterruptedByTrap || - stop_event.cause == CTRL_EventCause_UserBreakpoint) - { - palette = ui_build_palette(ui_top_palette(), .text = df_rgba_from_theme_color(DF_ThemeColor_TextNegative)); - } - UI_PrefWidth(ui_children_sum(1)) UI_Row UI_Palette(palette) - { - UI_PrefWidth(ui_em(1.5f, 1.f)) - DF_Font(DF_FontSlot_Icons) - ui_label(df_g_icon_kind_text_table[icon_kind]); - UI_PrefWidth(ui_text_dim(10, 1)) ui_label(explanation); - } - } - } - } - ui_spacer(ui_em(1.5f, 1.f)); - UI_PrefWidth(ui_children_sum(1)) UI_Row - { - UI_PrefWidth(ui_em(18.f, 1.f)) UI_FlagsAdd(UI_BoxFlag_DrawTextWeak) ui_labelf("TID: "); - UI_PrefWidth(ui_text_dim(10, 1)) ui_labelf("%I64u", entity->id); - } - UI_PrefWidth(ui_children_sum(1)) UI_Row - { - UI_PrefWidth(ui_em(18.f, 1.f)) UI_FlagsAdd(UI_BoxFlag_DrawTextWeak) ui_labelf("Arch: "); - UI_PrefWidth(ui_text_dim(10, 1)) ui_label(arch_str); - } - ui_spacer(ui_em(1.5f, 1.f)); - DI_Scope *di_scope = di_scope_open(); - CTRL_Entity *process = ctrl_entity_ancestor_from_kind(entity, CTRL_EntityKind_Process); - CTRL_Unwind base_unwind = d_query_cached_unwind_from_thread(entity); - D_Unwind rich_unwind = d_unwind_from_ctrl_unwind(scratch.arena, di_scope, process, &base_unwind); - for(U64 idx = 0; idx < rich_unwind.frames.concrete_frame_count; idx += 1) - { - D_UnwindFrame *f = &rich_unwind.frames.v[idx]; - RDI_Parsed *rdi = f->rdi; - RDI_Procedure *procedure = f->procedure; - U64 rip_vaddr = regs_rip_from_arch_block(entity->arch, f->regs); - CTRL_Entity *module = ctrl_module_from_process_vaddr(process, rip_vaddr); - String8 module_name = module == &ctrl_entity_nil ? str8_lit("???") : str8_skip_last_slash(module->string); - - // rjf: inline frames - for(D_UnwindInlineFrame *fin = f->last_inline_frame; fin != 0; fin = fin->prev) - UI_PrefWidth(ui_children_sum(1)) UI_Row - { - String8 name = {0}; - name.str = rdi_string_from_idx(rdi, fin->inline_site->name_string_idx, &name.size); - DF_Font(DF_FontSlot_Code) UI_PrefWidth(ui_em(18.f, 1.f)) UI_FlagsAdd(UI_BoxFlag_DrawTextWeak) ui_labelf("0x%I64x", rip_vaddr); - DF_Font(DF_FontSlot_Code) UI_FlagsAdd(UI_BoxFlag_DrawTextWeak) UI_PrefWidth(ui_text_dim(10, 1)) ui_label(str8_lit("[inlined]")); - if(name.size != 0) - { - DF_Font(DF_FontSlot_Code) UI_PrefWidth(ui_text_dim(10, 1)) - { - df_code_label(1.f, 0, df_rgba_from_theme_color(DF_ThemeColor_CodeSymbol), name); - } - } - else - { - DF_Font(DF_FontSlot_Code) UI_FlagsAdd(UI_BoxFlag_DrawTextWeak) UI_PrefWidth(ui_text_dim(10, 1)) ui_labelf("[??? in %S]", module_name); - } - } - - // rjf: concrete frame - UI_PrefWidth(ui_children_sum(1)) UI_Row - { - String8 name = {0}; - name.str = rdi_name_from_procedure(rdi, procedure, &name.size); - DF_Font(DF_FontSlot_Code) UI_PrefWidth(ui_em(18.f, 1.f)) UI_FlagsAdd(UI_BoxFlag_DrawTextWeak) ui_labelf("0x%I64x", rip_vaddr); - if(name.size != 0) - { - DF_Font(DF_FontSlot_Code) UI_PrefWidth(ui_text_dim(10, 1)) - { - df_code_label(1.f, 0, df_rgba_from_theme_color(DF_ThemeColor_CodeSymbol), name); - } - } - else - { - DF_Font(DF_FontSlot_Code) UI_FlagsAdd(UI_BoxFlag_DrawTextWeak) UI_PrefWidth(ui_text_dim(10, 1)) ui_labelf("[??? in %S]", module_name); - } - } - } - di_scope_close(di_scope); - }break; - } - scratch_end(scratch); } internal UI_Signal df_entity_desc_button(D_Entity *entity, FuzzyMatchRangeList *name_matches, String8 fuzzy_query, B32 is_implicit) { - UI_Signal sig = {0}; - return sig; -#if 0 // TODO(rjf): @msgs ProfBeginFunction(); Temp scratch = scratch_begin(0, 0); UI_Palette *palette = ui_top_palette(); @@ -890,7 +760,6 @@ df_entity_desc_button(D_Entity *entity, FuzzyMatchRangeList *name_matches, Strin scratch_end(scratch); ProfEnd(); return sig; -#endif } internal void @@ -1078,12 +947,12 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe DF_CodeSliceSignal result = {0}; ProfBeginFunction(); Temp scratch = scratch_begin(0, 0); - CTRL_Entity *selected_thread = d_regs_thread(); - CTRL_Entity *selected_thread_process = ctrl_entity_ancestor_from_kind(selected_thread, CTRL_EntityKind_Process); + D_Entity *selected_thread = d_entity_from_handle(d_regs()->thread); + D_Entity *selected_thread_process = d_entity_ancestor_from_kind(selected_thread, D_EntityKind_Process); U64 selected_thread_rip_unwind_vaddr = d_query_cached_rip_from_thread_unwind(selected_thread, d_regs()->unwind_count); - CTRL_Entity *selected_thread_module = ctrl_module_from_process_vaddr(selected_thread_process, selected_thread_rip_unwind_vaddr); + D_Entity *selected_thread_module = d_module_from_process_vaddr(selected_thread_process, selected_thread_rip_unwind_vaddr); CTRL_Event stop_event = d_ctrl_last_stop_event(); - CTRL_Entity *stopper_thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, stop_event.machine_id, stop_event.entity); + D_Entity *stopper_thread = d_entity_from_ctrl_handle(stop_event.machine_id, stop_event.entity); B32 is_focused = ui_is_focus_active(); B32 ctrlified = (os_get_event_flags() & OS_EventFlag_Ctrl); Vec4F32 code_line_bgs[] = @@ -1129,10 +998,10 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe line_num < params->line_num_range.max; line_num += 1, line_idx += 1) { - CTRL_EntityList threads = params->line_ips[line_idx]; - for(CTRL_EntityNode *n = threads.first; n != 0; n = n->next) + D_EntityList threads = params->line_ips[line_idx]; + for(D_EntityNode *n = threads.first; n != 0; n = n->next) { - if(n->v == stopper_thread && (stop_event.cause == CTRL_EventCause_InterruptedByTrap || stop_event.cause == CTRL_EventCause_InterruptedByException)) + if(n->entity == stopper_thread && (stop_event.cause == CTRL_EventCause_InterruptedByTrap || stop_event.cause == CTRL_EventCause_InterruptedByException)) { line_bg_colors[line_idx] = df_rgba_from_theme_color(DF_ThemeColor_HighlightOverlayError); } @@ -1164,26 +1033,26 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe line_num <= params->line_num_range.max; line_num += 1, line_idx += 1) { - CTRL_EntityList line_ips = params->line_ips[line_idx]; + D_EntityList line_ips = params->line_ips[line_idx]; ui_set_next_hover_cursor(OS_Cursor_HandPoint); UI_Box *line_margin_box = ui_build_box_from_stringf(UI_BoxFlag_Clickable*!!(params->flags & DF_CodeSliceFlag_Clickable)|UI_BoxFlag_DrawBackground|UI_BoxFlag_DrawActiveEffects, "line_margin_%I64x", line_num); UI_Parent(line_margin_box) { //- rjf: build margin thread ip ui - for(CTRL_EntityNode *n = line_ips.first; n != 0; n = n->next) + for(D_EntityNode *n = line_ips.first; n != 0; n = n->next) { // rjf: unpack thread - CTRL_Entity *thread = n->v; + D_Entity *thread = n->entity; if(thread != selected_thread) { continue; } U64 unwind_count = (thread == selected_thread) ? d_regs()->unwind_count : 0; U64 thread_rip_vaddr = d_query_cached_rip_from_thread_unwind(thread, unwind_count); - CTRL_Entity *process = ctrl_entity_ancestor_from_kind(thread, CTRL_EntityKind_Process); - CTRL_Entity *module = ctrl_module_from_process_vaddr(process, thread_rip_vaddr); - DI_Key dbgi_key = ctrl_dbgi_key_from_module(module); - U64 thread_rip_voff = ctrl_voff_from_vaddr(module, thread_rip_vaddr); + D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); + D_Entity *module = d_module_from_process_vaddr(process, thread_rip_vaddr); + DI_Key dbgi_key = d_dbgi_key_from_module(module); + U64 thread_rip_voff = d_voff_from_vaddr(module, thread_rip_vaddr); // rjf: thread info => color Vec4F32 color = v4f32(1, 1, 1, 1); @@ -1199,9 +1068,9 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe { color = df_rgba_from_theme_color(DF_ThemeColor_ThreadError); } - else if(thread->rgba_u32 != 0) + else if(thread->flags & D_EntityFlag_HasColor) { - color = rgba_from_u32(thread->rgba_u32); + color = d_rgba_from_entity(thread); } if(d_ctrl_targets_running() && d_ctrl_last_run_frame_idx() < d_frame_index()) { @@ -1234,11 +1103,11 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe { DF_ThreadBoxDrawExtData *u = push_array(ui_build_arena(), DF_ThreadBoxDrawExtData, 1); u->thread_color = color; - u->alive_t = ClampTop(1.f, (os_now_microseconds() - thread->alloc_time_us) / 500000.f); - u->is_selected = (thread == selected_thread); - u->is_frozen = d_entity_is_frozen(thread); - u->do_lines = df_setting_val_from_code(DF_SettingCode_ThreadLines).s32; - u->do_glow = df_setting_val_from_code(DF_SettingCode_ThreadGlow).s32; + u->alive_t = thread->alive_t; + u->is_selected = (thread == selected_thread); + u->is_frozen = d_entity_is_frozen(thread); + u->do_lines = df_setting_val_from_code(DF_SettingCode_ThreadLines).s32; + u->do_glow = df_setting_val_from_code(DF_SettingCode_ThreadGlow).s32; ui_box_equip_custom_draw(thread_box, df_thread_box_draw_extensions, u); // rjf: fill out progress t (progress into range of current line's @@ -1270,31 +1139,25 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe // rjf: hover tooltips if(ui_hovering(thread_sig) && !df_drag_is_active()) { - df_ctrl_entity_tooltips(thread); + df_entity_tooltips(thread); } // rjf: ip right-click menu if(ui_right_clicked(thread_sig)) { - // TODO(rjf): @msgs -#if 0 D_Handle handle = d_handle_from_entity(thread); ui_ctx_menu_open(df_state->entity_ctx_menu_key, thread_box->key, v2f32(0, thread_box->rect.y1-thread_box->rect.y0)); DF_Window *window = df_window_from_handle(d_regs()->window); window->entity_ctx_menu_entity = handle; -#endif } // rjf: drag start if(ui_dragging(thread_sig) && !contains_2f32(thread_box->rect, ui_mouse())) { - // TODO(rjf): @msgs -#if 0 DF_DragDropPayload payload = {0}; payload.key = thread_box->key; payload.entity = d_handle_from_entity(thread); df_drag_begin(&payload); -#endif } } } @@ -1326,7 +1189,7 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe line_num <= params->line_num_range.max; line_num += 1, line_idx += 1) { - CTRL_EntityList line_ips = params->line_ips[line_idx]; + D_EntityList line_ips = params->line_ips[line_idx]; D_EntityList line_bps = params->line_bps[line_idx]; D_EntityList line_pins = params->line_pins[line_idx]; ui_set_next_hover_cursor(OS_Cursor_HandPoint); @@ -1334,20 +1197,20 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe UI_Parent(line_margin_box) { //- rjf: build margin thread ip ui - for(CTRL_EntityNode *n = line_ips.first; n != 0; n = n->next) + for(D_EntityNode *n = line_ips.first; n != 0; n = n->next) { // rjf: unpack thread - CTRL_Entity *thread = n->v; + D_Entity *thread = n->entity; if(thread == selected_thread) { continue; } U64 unwind_count = (thread == selected_thread) ? d_regs()->unwind_count : 0; U64 thread_rip_vaddr = d_query_cached_rip_from_thread_unwind(thread, unwind_count); - CTRL_Entity *process = ctrl_entity_ancestor_from_kind(thread, CTRL_EntityKind_Process); - CTRL_Entity *module = ctrl_module_from_process_vaddr(process, thread_rip_vaddr); - DI_Key dbgi_key = ctrl_dbgi_key_from_module(module); - U64 thread_rip_voff = ctrl_voff_from_vaddr(module, thread_rip_vaddr); + D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); + D_Entity *module = d_module_from_process_vaddr(process, thread_rip_vaddr); + DI_Key dbgi_key = d_dbgi_key_from_module(module); + U64 thread_rip_voff = d_voff_from_vaddr(module, thread_rip_vaddr); // rjf: thread info => color Vec4F32 color = v4f32(1, 1, 1, 1); @@ -1363,9 +1226,9 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe { color = df_rgba_from_theme_color(DF_ThemeColor_ThreadError); } - else if(thread->rgba_u32 != 0) + else if(thread->flags & D_EntityFlag_HasColor) { - color = rgba_from_u32(thread->rgba_u32); + color = d_rgba_from_entity(thread); } if(d_ctrl_targets_running() && d_ctrl_last_run_frame_idx() < d_frame_index()) { @@ -1398,9 +1261,9 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe { DF_ThreadBoxDrawExtData *u = push_array(ui_build_arena(), DF_ThreadBoxDrawExtData, 1); u->thread_color = color; - u->alive_t = ClampTop(1.f, (os_now_microseconds()-thread->alloc_time_us)/500000.f); - u->is_selected = (thread == selected_thread); - u->is_frozen = d_entity_is_frozen(thread); + u->alive_t = thread->alive_t; + u->is_selected = (thread == selected_thread); + u->is_frozen = d_entity_is_frozen(thread); ui_box_equip_custom_draw(thread_box, df_thread_box_draw_extensions, u); // rjf: fill out progress t (progress into range of current line's @@ -1432,38 +1295,32 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe // rjf: hover tooltips if(ui_hovering(thread_sig) && !df_drag_is_active()) { - df_ctrl_entity_tooltips(thread); + df_entity_tooltips(thread); } // rjf: ip right-click menu if(ui_right_clicked(thread_sig)) { - // TODO(rjf): @msgs -#if 0 D_Handle handle = d_handle_from_entity(thread); ui_ctx_menu_open(df_state->entity_ctx_menu_key, thread_box->key, v2f32(0, thread_box->rect.y1-thread_box->rect.y0)); DF_Window *window = df_window_from_handle(d_regs()->window); window->entity_ctx_menu_entity = handle; -#endif } // rjf: double click => select if(ui_double_clicked(thread_sig)) { - d_msg(D_MsgKind_SelectThread, .machine_id = thread->machine_id, .thread = thread->handle); + d_cmd(D_CmdKind_SelectThread, .entity = d_handle_from_entity(thread)); ui_kill_action(); } // rjf: drag start if(ui_dragging(thread_sig) && !contains_2f32(thread_box->rect, ui_mouse())) { - // TODO(rjf): @msgs -#if 0 DF_DragDropPayload payload = {0}; payload.key = thread_box->key; payload.entity = d_handle_from_entity(thread); df_drag_begin(&payload); -#endif } } @@ -1655,8 +1512,7 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe { U64 best_stamp = 0; S64 line_info_line_num = 0; - F32 line_info_t = (os_now_microseconds() - selected_thread_module->alloc_time_us) / 500000.f; - line_info_t = ClampTop(1.f, line_info_t); + F32 line_info_t = selected_thread_module->alive_t; D_LineList *lines = ¶ms->line_infos[line_idx]; for(D_LineNode *n = lines->first; n != 0; n = n->next) { @@ -1749,10 +1605,10 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe line_num < params->line_num_range.max; line_num += 1, line_idx += 1) { - CTRL_EntityList threads = params->line_ips[line_idx]; - for(CTRL_EntityNode *n = threads.first; n != 0; n = n->next) + D_EntityList threads = params->line_ips[line_idx]; + for(D_EntityNode *n = threads.first; n != 0; n = n->next) { - CTRL_Entity *thread = n->v; + D_Entity *thread = n->entity; if(thread == stopper_thread && (stop_event.cause == CTRL_EventCause_InterruptedByException || stop_event.cause == CTRL_EventCause_InterruptedByTrap)) @@ -2102,8 +1958,6 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe D_LineList *lines = ¶ms->line_infos[line_slice_idx]; if(lines->first != 0 && (d_regs()->file_path.size == 0 || lines->first->v.pt.line == mouse_pt.line)) { - // TODO(rjf): @msgs -#if 0 DF_RichHoverInfo info = {0}; info.process = d_handle_from_entity(selected_thread_process); info.vaddr_range = d_vaddr_range_from_voff_range(selected_thread_module, lines->first->v.voff_range); @@ -2111,7 +1965,6 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe info.dbgi_key = lines->first->v.dbgi_key; info.voff_range = lines->first->v.voff_range; df_set_rich_hover_info(&info); -#endif } } @@ -2293,7 +2146,7 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe { mapped_special = 1; new_color_kind = DF_ThemeColor_CodeSymbol; - mix_t = ClampTop(1.f, (os_now_microseconds() - selected_thread_module->alloc_time_us) / 500000.f); + mix_t = selected_thread_module->alive_t; } } if(!mapped_special && token->kind == TXT_TokenKind_Identifier) @@ -2303,7 +2156,7 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe { mapped_special = 1; new_color_kind = DF_ThemeColor_CodeType; - mix_t = ClampTop(1.f, (os_now_microseconds() - selected_thread_module->alloc_time_us) / 500000.f); + mix_t = selected_thread_module->alive_t; } } break; @@ -2315,7 +2168,7 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe { mapped_special = 1; new_color_kind = DF_ThemeColor_CodeLocal; - mix_t = ClampTop(1.f, (os_now_microseconds() - selected_thread_module->alloc_time_us) / 500000.f); + mix_t = selected_thread_module->alive_t; } } if(!mapped_special && token->kind == TXT_TokenKind_Identifier) @@ -2325,7 +2178,7 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe { mapped_special = 1; new_color_kind = DF_ThemeColor_CodeLocal; - mix_t = ClampTop(1.f, (os_now_microseconds() - selected_thread_module->alloc_time_us) / 500000.f); + mix_t = selected_thread_module->alive_t; } } if(!mapped_special) @@ -2335,7 +2188,7 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe { mapped_special = 1; new_color_kind = DF_ThemeColor_CodeRegister; - mix_t = ClampTop(1.f, (os_now_microseconds() - selected_thread_module->alloc_time_us) / 500000.f); + mix_t = selected_thread_module->alive_t; } } if(!mapped_special) @@ -2345,7 +2198,7 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe { mapped_special = 1; new_color_kind = DF_ThemeColor_CodeRegister; - mix_t = ClampTop(1.f, (os_now_microseconds() - selected_thread_module->alloc_time_us) / 500000.f); + mix_t = selected_thread_module->alive_t; } } } @@ -2872,8 +2725,8 @@ df_fancy_string_list_from_code_string(Arena *arena, F32 alpha, B32 indirection_s } else { - CTRL_Entity *module = d_regs_module(); - DI_Key dbgi_key = ctrl_dbgi_key_from_module(module); + D_Entity *module = d_entity_from_handle(d_regs()->module); + DI_Key dbgi_key = d_dbgi_key_from_module(module); U64 symbol_voff = d_voff_from_dbgi_key_symbol_name(&dbgi_key, token_string); if(symbol_voff != 0) { diff --git a/src/dbg_frontend/dbg_frontend_widgets.h b/src/dbg_frontend/dbg_frontend_widgets.h index f83af39c..13798a58 100644 --- a/src/dbg_frontend/dbg_frontend_widgets.h +++ b/src/dbg_frontend/dbg_frontend_widgets.h @@ -43,7 +43,7 @@ struct DF_CodeSliceParams Rng1U64 *line_ranges; TXT_TokenArray *line_tokens; D_EntityList *line_bps; - CTRL_EntityList *line_ips; + D_EntityList *line_ips; D_EntityList *line_pins; U64 *line_vaddrs; D_LineList *line_infos; @@ -91,7 +91,6 @@ internal void df_cmd_list_menu_buttons(U64 count, D_CmdKind *cmds, U32 *fastpath internal UI_Signal df_icon_button(DF_IconKind kind, FuzzyMatchRangeList *matches, String8 string); internal UI_Signal df_icon_buttonf(DF_IconKind kind, FuzzyMatchRangeList *matches, char *fmt, ...); internal void df_entity_tooltips(D_Entity *entity); -internal void df_ctrl_entity_tooltips(CTRL_Entity *entity); internal UI_Signal df_entity_desc_button(D_Entity *entity, FuzzyMatchRangeList *name_matches, String8 fuzzy_query, B32 is_implicit); internal void df_src_loc_button(String8 file_path, TxtPt point); diff --git a/src/dbg_frontend/generated/dbg_frontend.meta.c b/src/dbg_frontend/generated/dbg_frontend.meta.c index 4b10decf..03942e10 100644 --- a/src/dbg_frontend/generated/dbg_frontend.meta.c +++ b/src/dbg_frontend/generated/dbg_frontend.meta.c @@ -4,188 +4,215 @@ //- GENERATED CODE C_LINKAGE_BEGIN -DF_MsgKindInfo df_msg_kind_info_table[107] = +String8 df_msg_kind_name_lower_table[64] = { -{str8_lit_comp("null"), str8_lit_comp("Null"), str8_lit_comp(""), str8_lit_comp("Null"), ((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("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}}, -{str8_lit_comp("run_command"), str8_lit_comp("RunCommand"), str8_lit_comp(""), str8_lit_comp("RunCommand"), ((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("toggle_dev_menu"), str8_lit_comp("ToggleDevMenu"), str8_lit_comp(""), str8_lit_comp("ToggleDevMenu"), ((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("load_user_data"), str8_lit_comp("LoadUser"), str8_lit_comp(""), str8_lit_comp("LoadUser"), ((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("load_project_data"), str8_lit_comp("LoadProject"), str8_lit_comp(""), str8_lit_comp("LoadProject"), ((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("save_user_data"), str8_lit_comp("SaveUser"), str8_lit_comp(""), str8_lit_comp("SaveUser"), ((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("save_project_data"), str8_lit_comp("SaveProject"), str8_lit_comp(""), str8_lit_comp("SaveProject"), ((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("open_window"), str8_lit_comp("OpenWindow"), str8_lit_comp(""), str8_lit_comp("OpenWindow"), ((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("close_window"), str8_lit_comp("CloseWindow"), str8_lit_comp(""), str8_lit_comp("CloseWindow"), ((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("toggle_fullscreen"), str8_lit_comp("ToggleFullscreen"), str8_lit_comp(""), str8_lit_comp("ToggleFullscreen"), ((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("confirm_accept"), str8_lit_comp("ConfirmAccept"), str8_lit_comp(""), str8_lit_comp("ConfirmAccept"), ((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("confirm_cancel"), str8_lit_comp("ConfirmCancel"), str8_lit_comp(""), str8_lit_comp("ConfirmCancel"), ((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("complete_query"), str8_lit_comp("CompleteQuery"), str8_lit_comp(""), str8_lit_comp("CompleteQuery"), ((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("cancel_query"), str8_lit_comp("CancelQuery"), str8_lit_comp(""), str8_lit_comp("CancelQuery"), ((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("find_text_forward"), str8_lit_comp("FindTextForward"), str8_lit_comp(""), str8_lit_comp("FindTextForward"), ((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("find_text_backward"), str8_lit_comp("FindTextBackward"), str8_lit_comp(""), str8_lit_comp("FindTextBackward"), ((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("find_next"), str8_lit_comp("FindNext"), str8_lit_comp(""), str8_lit_comp("FindNext"), ((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("find_prev"), str8_lit_comp("FindPrev"), str8_lit_comp(""), str8_lit_comp("FindPrev"), ((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("inc_ui_font_scale"), str8_lit_comp("IncUIFontScale"), str8_lit_comp(""), str8_lit_comp("IncUIFontScale"), ((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("dec_ui_font_scale"), str8_lit_comp("DecUIFontScale"), str8_lit_comp(""), str8_lit_comp("DecUIFontScale"), ((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("inc_code_font_scale"), str8_lit_comp("IncCodeFontScale"), str8_lit_comp(""), str8_lit_comp("IncCodeFontScale"), ((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("dec_code_font_scale"), str8_lit_comp("DecCodeFontScale"), str8_lit_comp(""), str8_lit_comp("DecCodeFontScale"), ((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("new_panel_left"), str8_lit_comp("NewPanelLeft"), str8_lit_comp(""), str8_lit_comp("NewPanelLeft"), ((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("new_panel_up"), str8_lit_comp("NewPanelUp"), str8_lit_comp(""), str8_lit_comp("NewPanelUp"), ((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("new_panel_right"), str8_lit_comp("NewPanelRight"), str8_lit_comp(""), str8_lit_comp("NewPanelRight"), ((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("new_panel_down"), str8_lit_comp("NewPanelDown"), str8_lit_comp(""), str8_lit_comp("NewPanelDown"), ((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("split_panel"), str8_lit_comp("SplitPanel"), str8_lit_comp(""), str8_lit_comp("SplitPanel"), ((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("close_panel"), str8_lit_comp("ClosePanel"), str8_lit_comp(""), str8_lit_comp("ClosePanel"), ((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("rotate_panel_columns"), str8_lit_comp("RotatePanelColumns"), str8_lit_comp(""), str8_lit_comp("RotatePanelColumns"), ((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_panel"), str8_lit_comp("NextPanel"), str8_lit_comp(""), str8_lit_comp("NextPanel"), ((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_panel"), str8_lit_comp("PrevPanel"), str8_lit_comp(""), str8_lit_comp("PrevPanel"), ((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("focus_panel"), str8_lit_comp("FocusPanel"), str8_lit_comp(""), str8_lit_comp("FocusPanel"), ((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("focus_panel_right"), str8_lit_comp("FocusPanelRight"), str8_lit_comp(""), str8_lit_comp("FocusPanelRight"), ((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("focus_panel_left"), str8_lit_comp("FocusPanelLeft"), str8_lit_comp(""), str8_lit_comp("FocusPanelLeft"), ((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("focus_panel_up"), str8_lit_comp("FocusPanelUp"), str8_lit_comp(""), str8_lit_comp("FocusPanelUp"), ((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("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("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}}, -{str8_lit_comp("move_tab_left"), str8_lit_comp("MoveTabLeft"), str8_lit_comp(""), str8_lit_comp("MoveTabLeft"), ((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"), str8_lit_comp("MoveTab"), str8_lit_comp(""), str8_lit_comp("MoveTab"), ((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("open_tab"), str8_lit_comp("OpenTab"), str8_lit_comp(""), str8_lit_comp("OpenTab"), ((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("close_tab"), str8_lit_comp("CloseTab"), str8_lit_comp(""), str8_lit_comp("CloseTab"), ((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("tab_bar_top"), str8_lit_comp("TabBarTop"), str8_lit_comp(""), str8_lit_comp("TabBarTop"), ((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("tab_bar_bottom"), str8_lit_comp("TabBarBottom"), str8_lit_comp(""), str8_lit_comp("TabBarBottom"), ((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("filter"), str8_lit_comp("Filter"), str8_lit_comp(""), str8_lit_comp("Filter"), ((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("clear_filter"), str8_lit_comp("ClearFilter"), str8_lit_comp(""), str8_lit_comp("ClearFilter"), ((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("apply_filter"), str8_lit_comp("ApplyFilter"), str8_lit_comp(""), str8_lit_comp("ApplyFilter"), ((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("reset_to_default_panels"), str8_lit_comp("ResetToDefaultPanels"), str8_lit_comp(""), str8_lit_comp("ResetToDefaultPanels"), ((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("reset_to_compact_panels"), str8_lit_comp("ResetToCompactPanels"), str8_lit_comp(""), str8_lit_comp("ResetToCompactPanels"), ((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("open"), str8_lit_comp("Open"), str8_lit_comp(""), str8_lit_comp("Open"), ((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("switch"), str8_lit_comp("Switch"), str8_lit_comp(""), str8_lit_comp("Switch"), ((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("switch_to_partner_file"), str8_lit_comp("SwitchToPartnerFile"), str8_lit_comp(""), str8_lit_comp("SwitchToPartnerFile"), ((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("find_thread"), str8_lit_comp("FindThread"), str8_lit_comp(""), str8_lit_comp("FindThread"), ((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("find_selected_thread"), str8_lit_comp("FindSelectedThread"), str8_lit_comp(""), str8_lit_comp("FindSelectedThread"), ((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_to_name"), str8_lit_comp("GoToName"), str8_lit_comp(""), str8_lit_comp("GoToName"), ((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("find_code_location"), str8_lit_comp("FindCodeLocation"), str8_lit_comp(""), str8_lit_comp("FindCodeLocation"), ((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_to_line"), str8_lit_comp("GoToLine"), str8_lit_comp(""), str8_lit_comp("GoToLine"), ((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_to_address"), str8_lit_comp("GoToAddress"), str8_lit_comp(""), str8_lit_comp("GoToAddress"), ((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("center_cursor"), str8_lit_comp("CenterCursor"), str8_lit_comp(""), str8_lit_comp("CenterCursor"), ((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("contain_cursor"), str8_lit_comp("ContainCursor"), str8_lit_comp(""), str8_lit_comp("ContainCursor"), ((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("edit"), str8_lit_comp("Edit"), str8_lit_comp(""), str8_lit_comp("Edit"), ((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("accept"), str8_lit_comp("Accept"), str8_lit_comp(""), str8_lit_comp("Accept"), ((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("cancel"), str8_lit_comp("Cancel"), str8_lit_comp(""), str8_lit_comp("Cancel"), ((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_left"), str8_lit_comp("MoveLeft"), str8_lit_comp(""), str8_lit_comp("MoveLeft"), ((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_right"), str8_lit_comp("MoveRight"), str8_lit_comp(""), str8_lit_comp("MoveRight"), ((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_up"), str8_lit_comp("MoveUp"), str8_lit_comp(""), str8_lit_comp("MoveUp"), ((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_down"), str8_lit_comp("MoveDown"), str8_lit_comp(""), str8_lit_comp("MoveDown"), ((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_left_select"), str8_lit_comp("MoveLeftSelect"), str8_lit_comp(""), str8_lit_comp("MoveLeftSelect"), ((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_right_select"), str8_lit_comp("MoveRightSelect"), str8_lit_comp(""), str8_lit_comp("MoveRightSelect"), ((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_up_select"), str8_lit_comp("MoveUpSelect"), str8_lit_comp(""), str8_lit_comp("MoveUpSelect"), ((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_down_select"), str8_lit_comp("MoveDownSelect"), str8_lit_comp(""), str8_lit_comp("MoveDownSelect"), ((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_left_chunk"), str8_lit_comp("MoveLeftChunk"), str8_lit_comp(""), str8_lit_comp("MoveLeftChunk"), ((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_right_chunk"), str8_lit_comp("MoveRightChunk"), str8_lit_comp(""), str8_lit_comp("MoveRightChunk"), ((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_up_chunk"), str8_lit_comp("MoveUpChunk"), str8_lit_comp(""), str8_lit_comp("MoveUpChunk"), ((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_down_chunk"), str8_lit_comp("MoveDownChunk"), str8_lit_comp(""), str8_lit_comp("MoveDownChunk"), ((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_up_page"), str8_lit_comp("MoveUpPage"), str8_lit_comp(""), str8_lit_comp("MoveUpPage"), ((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_down_page"), str8_lit_comp("MoveDownPage"), str8_lit_comp(""), str8_lit_comp("MoveDownPage"), ((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_up_whole"), str8_lit_comp("MoveUpWhole"), str8_lit_comp(""), str8_lit_comp("MoveUpWhole"), ((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_down_whole"), str8_lit_comp("MoveDownWhole"), str8_lit_comp(""), str8_lit_comp("MoveDownWhole"), ((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_left_chunk_select"), str8_lit_comp("MoveLeftChunkSelect"), str8_lit_comp(""), str8_lit_comp("MoveLeftChunkSelect"), ((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_right_chunk_select"), str8_lit_comp("MoveRightChunkSelect"), str8_lit_comp(""), str8_lit_comp("MoveRightChunkSelect"), ((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_up_chunk_select"), str8_lit_comp("MoveUpChunkSelect"), str8_lit_comp(""), str8_lit_comp("MoveUpChunkSelect"), ((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_down_chunk_select"), str8_lit_comp("MoveDownChunkSelect"), str8_lit_comp(""), str8_lit_comp("MoveDownChunkSelect"), ((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_up_page_select"), str8_lit_comp("MoveUpPageSelect"), str8_lit_comp(""), str8_lit_comp("MoveUpPageSelect"), ((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_down_page_select"), str8_lit_comp("MoveDownPageSelect"), str8_lit_comp(""), str8_lit_comp("MoveDownPageSelect"), ((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_up_whole_select"), str8_lit_comp("MoveUpWholeSelect"), str8_lit_comp(""), str8_lit_comp("MoveUpWholeSelect"), ((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_down_whole_select"), str8_lit_comp("MoveDownWholeSelect"), str8_lit_comp(""), str8_lit_comp("MoveDownWholeSelect"), ((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_up_reorder"), str8_lit_comp("MoveUpReorder"), str8_lit_comp(""), str8_lit_comp("MoveUpReorder"), ((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_down_reorder"), str8_lit_comp("MoveDownReorder"), str8_lit_comp(""), str8_lit_comp("MoveDownReorder"), ((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_home"), str8_lit_comp("MoveHome"), str8_lit_comp(""), str8_lit_comp("MoveHome"), ((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_end"), str8_lit_comp("MoveEnd"), str8_lit_comp(""), str8_lit_comp("MoveEnd"), ((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_home_select"), str8_lit_comp("MoveHomeSelect"), str8_lit_comp(""), str8_lit_comp("MoveHomeSelect"), ((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_end_select"), str8_lit_comp("MoveEndSelect"), str8_lit_comp(""), str8_lit_comp("MoveEndSelect"), ((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_all"), str8_lit_comp("SelectAll"), str8_lit_comp(""), str8_lit_comp("SelectAll"), ((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("delete_single"), str8_lit_comp("DeleteSingle"), str8_lit_comp(""), str8_lit_comp("DeleteSingle"), ((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("delete_chunk"), str8_lit_comp("DeleteChunk"), str8_lit_comp(""), str8_lit_comp("DeleteChunk"), ((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("backspace_single"), str8_lit_comp("BackspaceSingle"), str8_lit_comp(""), str8_lit_comp("BackspaceSingle"), ((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("backspace_chunk"), str8_lit_comp("BackspaceChunk"), str8_lit_comp(""), str8_lit_comp("BackspaceChunk"), ((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("copy"), str8_lit_comp("Copy"), str8_lit_comp(""), str8_lit_comp("Copy"), ((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("cut"), str8_lit_comp("Cut"), str8_lit_comp(""), str8_lit_comp("Cut"), ((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("paste"), str8_lit_comp("Paste"), str8_lit_comp(""), str8_lit_comp("Paste"), ((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("insert_text"), str8_lit_comp("InsertText"), str8_lit_comp(""), str8_lit_comp("InsertText"), ((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("os_event"), str8_lit_comp("OSEvent"), str8_lit_comp(""), str8_lit_comp("OSEvent"), ((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("null"), +str8_lit_comp("exit"), +str8_lit_comp("run_command"), +str8_lit_comp("toggle_dev_menu"), +str8_lit_comp("apply_user_data"), +str8_lit_comp("apply_project_data"), +str8_lit_comp("write_user_data"), +str8_lit_comp("write_project_data"), +str8_lit_comp("open_window"), +str8_lit_comp("close_window"), +str8_lit_comp("toggle_fullscreen"), +str8_lit_comp("confirm_accept"), +str8_lit_comp("confirm_cancel"), +str8_lit_comp("complete_query"), +str8_lit_comp("cancel_query"), +str8_lit_comp("find_text_forward"), +str8_lit_comp("find_text_backward"), +str8_lit_comp("find_next"), +str8_lit_comp("find_prev"), +str8_lit_comp("inc_ui_font_scale"), +str8_lit_comp("dec_ui_font_scale"), +str8_lit_comp("inc_code_font_scale"), +str8_lit_comp("dec_code_font_scale"), +str8_lit_comp("new_panel_left"), +str8_lit_comp("new_panel_up"), +str8_lit_comp("new_panel_right"), +str8_lit_comp("new_panel_down"), +str8_lit_comp("split_panel"), +str8_lit_comp("close_panel"), +str8_lit_comp("rotate_panel_columns"), +str8_lit_comp("next_panel"), +str8_lit_comp("prev_panel"), +str8_lit_comp("focus_panel"), +str8_lit_comp("focus_panel_right"), +str8_lit_comp("focus_panel_left"), +str8_lit_comp("focus_panel_up"), +str8_lit_comp("focus_panel_down"), +str8_lit_comp("go_back"), +str8_lit_comp("go_forward"), +str8_lit_comp("next_tab"), +str8_lit_comp("prev_tab"), +str8_lit_comp("move_tab_right"), +str8_lit_comp("move_tab_left"), +str8_lit_comp("move_tab"), +str8_lit_comp("open_tab"), +str8_lit_comp("close_tab"), +str8_lit_comp("tab_bar_top"), +str8_lit_comp("tab_bar_bottom"), +str8_lit_comp("filter"), +str8_lit_comp("clear_filter"), +str8_lit_comp("apply_filter"), +str8_lit_comp("reset_to_default_panels"), +str8_lit_comp("reset_to_compact_panels"), +str8_lit_comp("open"), +str8_lit_comp("switch"), +str8_lit_comp("switch_to_partner_file"), +str8_lit_comp("find_thread"), +str8_lit_comp("find_selected_thread"), +str8_lit_comp("go_to_name"), +str8_lit_comp("find_code_location"), +str8_lit_comp("go_to_line"), +str8_lit_comp("go_to_address"), +str8_lit_comp("center_cursor"), +str8_lit_comp("contain_cursor"), }; -DF_MsgKindInfo df_d_msg_kind_info_table[69] = +DF_MsgKindInfo df_msg_kind_info_table[64] = { -{str8_lit_comp("null"), str8_lit_comp("Null"), str8_lit_comp(""), str8_lit_comp("Null"), ((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("launch_and_run"), str8_lit_comp("LaunchAndRun"), str8_lit_comp(""), str8_lit_comp("LaunchAndRun"), ((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("launch_and_step_into"), str8_lit_comp("LaunchAndStepInto"), str8_lit_comp(""), str8_lit_comp("LaunchAndStepInto"), ((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("kill"), str8_lit_comp("Kill"), str8_lit_comp(""), str8_lit_comp("Kill"), ((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("kill_all"), str8_lit_comp("KillAll"), str8_lit_comp(""), str8_lit_comp("KillAll"), ((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("attach"), str8_lit_comp("Attach"), str8_lit_comp(""), str8_lit_comp("Attach"), ((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("detach"), str8_lit_comp("Detach"), str8_lit_comp(""), str8_lit_comp("Detach"), ((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("continue"), str8_lit_comp("Continue"), str8_lit_comp(""), str8_lit_comp("Continue"), ((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("step_into_inst"), str8_lit_comp("StepIntoInst"), str8_lit_comp(""), str8_lit_comp("StepIntoInst"), ((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("step_over_inst"), str8_lit_comp("StepOverInst"), str8_lit_comp(""), str8_lit_comp("StepOverInst"), ((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("step_into_line"), str8_lit_comp("StepIntoLine"), str8_lit_comp(""), str8_lit_comp("StepIntoLine"), ((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("step_over_line"), str8_lit_comp("StepOverLine"), str8_lit_comp(""), str8_lit_comp("StepOverLine"), ((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("step_out"), str8_lit_comp("StepOut"), str8_lit_comp(""), str8_lit_comp("StepOut"), ((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("halt"), str8_lit_comp("Halt"), str8_lit_comp(""), str8_lit_comp("Halt"), ((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("soft_halt_refresh"), str8_lit_comp("SoftHaltRefresh"), str8_lit_comp(""), str8_lit_comp("SoftHaltRefresh"), ((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("set_thread_ip"), str8_lit_comp("SetThreadIP"), str8_lit_comp(""), str8_lit_comp("SetThreadIP"), ((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("run_to_line"), str8_lit_comp("RunToLine"), str8_lit_comp(""), str8_lit_comp("RunToLine"), ((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("run_to_address"), str8_lit_comp("RunToAddress"), str8_lit_comp(""), str8_lit_comp("RunToAddress"), ((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("run"), str8_lit_comp("Run"), str8_lit_comp(""), str8_lit_comp("Run"), ((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("restart"), str8_lit_comp("Restart"), str8_lit_comp(""), str8_lit_comp("Restart"), ((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("step_into"), str8_lit_comp("StepInto"), str8_lit_comp(""), str8_lit_comp("StepInto"), ((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("step_over"), str8_lit_comp("StepOver"), str8_lit_comp(""), str8_lit_comp("StepOver"), ((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_thread"), str8_lit_comp("SelectThread"), str8_lit_comp(""), str8_lit_comp("SelectThread"), ((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_unwind"), str8_lit_comp("SelectUnwind"), str8_lit_comp(""), str8_lit_comp("SelectUnwind"), ((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("up_one_frame"), str8_lit_comp("UpOneFrame"), str8_lit_comp(""), str8_lit_comp("UpOneFrame"), ((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("down_one_frame"), str8_lit_comp("DownOneFrame"), str8_lit_comp(""), str8_lit_comp("DownOneFrame"), ((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("freeze_thread"), str8_lit_comp("FreezeThread"), str8_lit_comp(""), str8_lit_comp("FreezeThread"), ((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("thaw_thread"), str8_lit_comp("ThawThread"), str8_lit_comp(""), str8_lit_comp("ThawThread"), ((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("freeze_process"), str8_lit_comp("FreezeProcess"), str8_lit_comp(""), str8_lit_comp("FreezeProcess"), ((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("thaw_process"), str8_lit_comp("ThawProcess"), str8_lit_comp(""), str8_lit_comp("ThawProcess"), ((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("freeze_machine"), str8_lit_comp("FreezeMachine"), str8_lit_comp(""), str8_lit_comp("FreezeMachine"), ((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("thaw_machine"), str8_lit_comp("ThawMachine"), str8_lit_comp(""), str8_lit_comp("ThawMachine"), ((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("freeze_local_machine"), str8_lit_comp("FreezeLocalMachine"), str8_lit_comp(""), str8_lit_comp("FreezeLocalMachine"), ((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("thaw_local_machine"), str8_lit_comp("ThawLocalMachine"), str8_lit_comp(""), str8_lit_comp("ThawLocalMachine"), ((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("set_path_map_src"), str8_lit_comp("SetPathMapSrc"), str8_lit_comp(""), str8_lit_comp("SetPathMapSrc"), ((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("set_path_map_dst"), str8_lit_comp("SetPathMapDst"), str8_lit_comp(""), str8_lit_comp("SetPathMapDst"), ((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("set_file_replacement_path"), str8_lit_comp("SetFileReplacementPath"), str8_lit_comp(""), str8_lit_comp("SetFileReplacementPath"), ((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("set_auto_view_rule_type"), str8_lit_comp("SetAutoViewRuleType"), str8_lit_comp(""), str8_lit_comp("SetAutoViewRuleType"), ((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("set_auto_view_rule_view_rule"), str8_lit_comp("SetAutoViewRuleViewRule"), str8_lit_comp(""), str8_lit_comp("SetAutoViewRuleViewRule"), ((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("enable_entity"), str8_lit_comp("EnableEntity"), str8_lit_comp(""), str8_lit_comp("EnableEntity"), ((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("enable_breakpoint"), str8_lit_comp("EnableBreakpoint"), str8_lit_comp(""), str8_lit_comp("EnableBreakpoint"), ((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("enable_target"), str8_lit_comp("EnableTarget"), str8_lit_comp(""), str8_lit_comp("EnableTarget"), ((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("disable_entity"), str8_lit_comp("DisableEntity"), str8_lit_comp(""), str8_lit_comp("DisableEntity"), ((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("disable_breakpoint"), str8_lit_comp("DisableBreakpoint"), str8_lit_comp(""), str8_lit_comp("DisableBreakpoint"), ((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("disable_target"), str8_lit_comp("DisableTarget"), str8_lit_comp(""), str8_lit_comp("DisableTarget"), ((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("remove_entity"), str8_lit_comp("RemoveEntity"), str8_lit_comp(""), str8_lit_comp("RemoveEntity"), ((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("remove_breakpoint"), str8_lit_comp("RemoveBreakpoint"), str8_lit_comp(""), str8_lit_comp("RemoveBreakpoint"), ((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("remove_target"), str8_lit_comp("RemoveTarget"), str8_lit_comp(""), str8_lit_comp("RemoveTarget"), ((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("name_entity"), str8_lit_comp("NameEntity"), str8_lit_comp(""), str8_lit_comp("NameEntity"), ((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("duplicate_entity"), str8_lit_comp("DuplicateEntity"), str8_lit_comp(""), str8_lit_comp("DuplicateEntity"), ((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("relocate_entity"), str8_lit_comp("RelocateEntity"), str8_lit_comp(""), str8_lit_comp("RelocateEntity"), ((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("add_breakpoint"), str8_lit_comp("AddBreakpoint"), str8_lit_comp(""), str8_lit_comp("AddBreakpoint"), ((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("toggle_breakpoint"), str8_lit_comp("ToggleBreakpoint"), str8_lit_comp(""), str8_lit_comp("ToggleBreakpoint"), ((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("add_address_breakpoint"), str8_lit_comp("AddAddressBreakpoint"), str8_lit_comp(""), str8_lit_comp("AddAddressBreakpoint"), ((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("add_function_breakpoint"), str8_lit_comp("AddFunctionBreakpoint"), str8_lit_comp(""), str8_lit_comp("AddFunctionBreakpoint"), ((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("add_watch_pin"), str8_lit_comp("AddWatchPin"), str8_lit_comp(""), str8_lit_comp("AddWatchPin"), ((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("toggle_watch_pin"), str8_lit_comp("ToggleWatchPin"), str8_lit_comp(""), str8_lit_comp("ToggleWatchPin"), ((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("toggle_watch_expression"), str8_lit_comp("ToggleWatchExpression"), str8_lit_comp(""), str8_lit_comp("ToggleWatchExpression"), ((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("toggle_breakpoint_at_cursor"), str8_lit_comp("ToggleBreakpointAtCursor"), str8_lit_comp(""), str8_lit_comp("ToggleBreakpointAtCursor"), ((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("toggle_watch_pin_at_cursor"), str8_lit_comp("ToggleWatchPinAtCursor"), str8_lit_comp(""), str8_lit_comp("ToggleWatchPinAtCursor"), ((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("toggle_watch_expression_at_cursor"), str8_lit_comp("ToggleWatchExpressionAtCursor"), str8_lit_comp(""), str8_lit_comp("ToggleWatchExpressionAtCursor"), ((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_to_name_at_cursor"), str8_lit_comp("GoToNameAtCursor"), str8_lit_comp(""), str8_lit_comp("GoToNameAtCursor"), ((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("run_to_cursor"), str8_lit_comp("RunToCursor"), str8_lit_comp(""), str8_lit_comp("RunToCursor"), ((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("set_next_statement"), str8_lit_comp("SetNextStatement"), str8_lit_comp(""), str8_lit_comp("SetNextStatement"), ((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("add_target"), str8_lit_comp("AddTarget"), str8_lit_comp(""), str8_lit_comp("AddTarget"), ((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_target"), str8_lit_comp("SelectTarget"), str8_lit_comp(""), str8_lit_comp("SelectTarget"), ((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("retry_ended_process"), str8_lit_comp("RetryEndedProcess"), str8_lit_comp(""), str8_lit_comp("RetryEndedProcess"), ((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("register_as_jit_debugger"), str8_lit_comp("RegisterAsJITDebugger"), str8_lit_comp(""), str8_lit_comp("RegisterAsJITDebugger"), ((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("log_marker"), str8_lit_comp("LogMarker"), str8_lit_comp(""), str8_lit_comp("LogMarker"), ((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("Null"), str8_lit_comp(""), str8_lit_comp("Null"), ((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("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}}, +{str8_lit_comp("RunCommand"), str8_lit_comp(""), str8_lit_comp("RunCommand"), ((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("ToggleDevMenu"), str8_lit_comp(""), str8_lit_comp("ToggleDevMenu"), ((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("ApplyUserData"), str8_lit_comp(""), str8_lit_comp("ApplyUserData"), ((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("ApplyProjectData"), str8_lit_comp(""), str8_lit_comp("ApplyProjectData"), ((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("WriteUserData"), str8_lit_comp(""), str8_lit_comp("WriteUserData"), ((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("WriteProjectData"), str8_lit_comp(""), str8_lit_comp("WriteProjectData"), ((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("OpenWindow"), str8_lit_comp(""), str8_lit_comp("OpenWindow"), ((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("CloseWindow"), str8_lit_comp(""), str8_lit_comp("CloseWindow"), ((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("ToggleFullscreen"), str8_lit_comp(""), str8_lit_comp("ToggleFullscreen"), ((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("ConfirmAccept"), str8_lit_comp(""), str8_lit_comp("ConfirmAccept"), ((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("ConfirmCancel"), str8_lit_comp(""), str8_lit_comp("ConfirmCancel"), ((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("CompleteQuery"), str8_lit_comp(""), str8_lit_comp("CompleteQuery"), ((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("CancelQuery"), str8_lit_comp(""), str8_lit_comp("CancelQuery"), ((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("FindTextForward"), str8_lit_comp(""), str8_lit_comp("FindTextForward"), ((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("FindTextBackward"), str8_lit_comp(""), str8_lit_comp("FindTextBackward"), ((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("FindNext"), str8_lit_comp(""), str8_lit_comp("FindNext"), ((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("FindPrev"), str8_lit_comp(""), str8_lit_comp("FindPrev"), ((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("IncUIFontScale"), str8_lit_comp(""), str8_lit_comp("IncUIFontScale"), ((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("DecUIFontScale"), str8_lit_comp(""), str8_lit_comp("DecUIFontScale"), ((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("IncCodeFontScale"), str8_lit_comp(""), str8_lit_comp("IncCodeFontScale"), ((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("DecCodeFontScale"), str8_lit_comp(""), str8_lit_comp("DecCodeFontScale"), ((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("NewPanelLeft"), str8_lit_comp(""), str8_lit_comp("NewPanelLeft"), ((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("NewPanelUp"), str8_lit_comp(""), str8_lit_comp("NewPanelUp"), ((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("NewPanelRight"), str8_lit_comp(""), str8_lit_comp("NewPanelRight"), ((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("NewPanelDown"), str8_lit_comp(""), str8_lit_comp("NewPanelDown"), ((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("SplitPanel"), str8_lit_comp(""), str8_lit_comp("SplitPanel"), ((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("ClosePanel"), str8_lit_comp(""), str8_lit_comp("ClosePanel"), ((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("RotatePanelColumns"), str8_lit_comp(""), str8_lit_comp("RotatePanelColumns"), ((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("NextPanel"), str8_lit_comp(""), str8_lit_comp("NextPanel"), ((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("PrevPanel"), str8_lit_comp(""), str8_lit_comp("PrevPanel"), ((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("FocusPanel"), str8_lit_comp(""), str8_lit_comp("FocusPanel"), ((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("FocusPanelRight"), str8_lit_comp(""), str8_lit_comp("FocusPanelRight"), ((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("FocusPanelLeft"), str8_lit_comp(""), str8_lit_comp("FocusPanelLeft"), ((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("FocusPanelUp"), str8_lit_comp(""), str8_lit_comp("FocusPanelUp"), ((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("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("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("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("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("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("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}}, +{str8_lit_comp("MoveTabLeft"), str8_lit_comp(""), str8_lit_comp("MoveTabLeft"), ((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("MoveTab"), str8_lit_comp(""), str8_lit_comp("MoveTab"), ((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("OpenTab"), str8_lit_comp(""), str8_lit_comp("OpenTab"), ((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("CloseTab"), str8_lit_comp(""), str8_lit_comp("CloseTab"), ((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("TabBarTop"), str8_lit_comp(""), str8_lit_comp("TabBarTop"), ((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("TabBarBottom"), str8_lit_comp(""), str8_lit_comp("TabBarBottom"), ((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("Filter"), str8_lit_comp(""), str8_lit_comp("Filter"), ((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("ClearFilter"), str8_lit_comp(""), str8_lit_comp("ClearFilter"), ((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("ApplyFilter"), str8_lit_comp(""), str8_lit_comp("ApplyFilter"), ((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("ResetToDefaultPanels"), str8_lit_comp(""), str8_lit_comp("ResetToDefaultPanels"), ((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("ResetToCompactPanels"), str8_lit_comp(""), str8_lit_comp("ResetToCompactPanels"), ((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("Open"), str8_lit_comp(""), str8_lit_comp("Open"), ((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("Switch"), str8_lit_comp(""), str8_lit_comp("Switch"), ((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("SwitchToPartnerFile"), str8_lit_comp(""), str8_lit_comp("SwitchToPartnerFile"), ((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("FindThread"), str8_lit_comp(""), str8_lit_comp("FindThread"), ((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("FindSelectedThread"), str8_lit_comp(""), str8_lit_comp("FindSelectedThread"), ((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("GoToName"), str8_lit_comp(""), str8_lit_comp("GoToName"), ((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("FindCodeLocation"), str8_lit_comp(""), str8_lit_comp("FindCodeLocation"), ((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("GoToLine"), str8_lit_comp(""), str8_lit_comp("GoToLine"), ((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("GoToAddress"), str8_lit_comp(""), str8_lit_comp("GoToAddress"), ((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("CenterCursor"), str8_lit_comp(""), str8_lit_comp("CenterCursor"), ((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("ContainCursor"), str8_lit_comp(""), str8_lit_comp("ContainCursor"), ((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}}, +}; + +DF_MsgKindInfo df_d_msg_kind_info_table[71] = +{ +{str8_lit_comp("Null"), str8_lit_comp(""), str8_lit_comp("Null"), ((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("LaunchAndRun"), str8_lit_comp(""), str8_lit_comp("LaunchAndRun"), ((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("LaunchAndStepInto"), str8_lit_comp(""), str8_lit_comp("LaunchAndStepInto"), ((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("Kill"), str8_lit_comp(""), str8_lit_comp("Kill"), ((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("KillAll"), str8_lit_comp(""), str8_lit_comp("KillAll"), ((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("Attach"), str8_lit_comp(""), str8_lit_comp("Attach"), ((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("Detach"), str8_lit_comp(""), str8_lit_comp("Detach"), ((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("Continue"), str8_lit_comp(""), str8_lit_comp("Continue"), ((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("StepIntoInst"), str8_lit_comp(""), str8_lit_comp("StepIntoInst"), ((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("StepOverInst"), str8_lit_comp(""), str8_lit_comp("StepOverInst"), ((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("StepIntoLine"), str8_lit_comp(""), str8_lit_comp("StepIntoLine"), ((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("StepOverLine"), str8_lit_comp(""), str8_lit_comp("StepOverLine"), ((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("StepOut"), str8_lit_comp(""), str8_lit_comp("StepOut"), ((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("Halt"), str8_lit_comp(""), str8_lit_comp("Halt"), ((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("SoftHaltRefresh"), str8_lit_comp(""), str8_lit_comp("SoftHaltRefresh"), ((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("SetThreadIP"), str8_lit_comp(""), str8_lit_comp("SetThreadIP"), ((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("RunToLine"), str8_lit_comp(""), str8_lit_comp("RunToLine"), ((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("RunToAddress"), str8_lit_comp(""), str8_lit_comp("RunToAddress"), ((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("Run"), str8_lit_comp(""), str8_lit_comp("Run"), ((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("Restart"), str8_lit_comp(""), str8_lit_comp("Restart"), ((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("StepInto"), str8_lit_comp(""), str8_lit_comp("StepInto"), ((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("StepOver"), str8_lit_comp(""), str8_lit_comp("StepOver"), ((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("SelectThread"), str8_lit_comp(""), str8_lit_comp("SelectThread"), ((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("SelectUnwind"), str8_lit_comp(""), str8_lit_comp("SelectUnwind"), ((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("UpOneFrame"), str8_lit_comp(""), str8_lit_comp("UpOneFrame"), ((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("DownOneFrame"), str8_lit_comp(""), str8_lit_comp("DownOneFrame"), ((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("FreezeThread"), str8_lit_comp(""), str8_lit_comp("FreezeThread"), ((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("ThawThread"), str8_lit_comp(""), str8_lit_comp("ThawThread"), ((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("FreezeProcess"), str8_lit_comp(""), str8_lit_comp("FreezeProcess"), ((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("ThawProcess"), str8_lit_comp(""), str8_lit_comp("ThawProcess"), ((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("FreezeMachine"), str8_lit_comp(""), str8_lit_comp("FreezeMachine"), ((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("ThawMachine"), str8_lit_comp(""), str8_lit_comp("ThawMachine"), ((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("FreezeLocalMachine"), str8_lit_comp(""), str8_lit_comp("FreezeLocalMachine"), ((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("ThawLocalMachine"), str8_lit_comp(""), str8_lit_comp("ThawLocalMachine"), ((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("SetPathMapSrc"), str8_lit_comp(""), str8_lit_comp("SetPathMapSrc"), ((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("SetPathMapDst"), str8_lit_comp(""), str8_lit_comp("SetPathMapDst"), ((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("SetFileReplacementPath"), str8_lit_comp(""), str8_lit_comp("SetFileReplacementPath"), ((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("SetAutoViewRuleType"), str8_lit_comp(""), str8_lit_comp("SetAutoViewRuleType"), ((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("SetAutoViewRuleViewRule"), str8_lit_comp(""), str8_lit_comp("SetAutoViewRuleViewRule"), ((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("EnableEntity"), str8_lit_comp(""), str8_lit_comp("EnableEntity"), ((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("EnableBreakpoint"), str8_lit_comp(""), str8_lit_comp("EnableBreakpoint"), ((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("EnableTarget"), str8_lit_comp(""), str8_lit_comp("EnableTarget"), ((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("DisableEntity"), str8_lit_comp(""), str8_lit_comp("DisableEntity"), ((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("DisableBreakpoint"), str8_lit_comp(""), str8_lit_comp("DisableBreakpoint"), ((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("DisableTarget"), str8_lit_comp(""), str8_lit_comp("DisableTarget"), ((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("FreezeEntity"), str8_lit_comp(""), str8_lit_comp("FreezeEntity"), ((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("ThawEntity"), str8_lit_comp(""), str8_lit_comp("ThawEntity"), ((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("RemoveEntity"), str8_lit_comp(""), str8_lit_comp("RemoveEntity"), ((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("RemoveBreakpoint"), str8_lit_comp(""), str8_lit_comp("RemoveBreakpoint"), ((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("RemoveTarget"), str8_lit_comp(""), str8_lit_comp("RemoveTarget"), ((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("NameEntity"), str8_lit_comp(""), str8_lit_comp("NameEntity"), ((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("DuplicateEntity"), str8_lit_comp(""), str8_lit_comp("DuplicateEntity"), ((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("RelocateEntity"), str8_lit_comp(""), str8_lit_comp("RelocateEntity"), ((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("AddBreakpoint"), str8_lit_comp(""), str8_lit_comp("AddBreakpoint"), ((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("ToggleBreakpoint"), str8_lit_comp(""), str8_lit_comp("ToggleBreakpoint"), ((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("AddAddressBreakpoint"), str8_lit_comp(""), str8_lit_comp("AddAddressBreakpoint"), ((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("AddFunctionBreakpoint"), str8_lit_comp(""), str8_lit_comp("AddFunctionBreakpoint"), ((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("AddWatchPin"), str8_lit_comp(""), str8_lit_comp("AddWatchPin"), ((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("ToggleWatchPin"), str8_lit_comp(""), str8_lit_comp("ToggleWatchPin"), ((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("ToggleWatchExpression"), str8_lit_comp(""), str8_lit_comp("ToggleWatchExpression"), ((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("ToggleBreakpointAtCursor"), str8_lit_comp(""), str8_lit_comp("ToggleBreakpointAtCursor"), ((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("ToggleWatchPinAtCursor"), str8_lit_comp(""), str8_lit_comp("ToggleWatchPinAtCursor"), ((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("ToggleWatchExpressionAtCursor"), str8_lit_comp(""), str8_lit_comp("ToggleWatchExpressionAtCursor"), ((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("GoToNameAtCursor"), str8_lit_comp(""), str8_lit_comp("GoToNameAtCursor"), ((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("RunToCursor"), str8_lit_comp(""), str8_lit_comp("RunToCursor"), ((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("SetNextStatement"), str8_lit_comp(""), str8_lit_comp("SetNextStatement"), ((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("AddTarget"), str8_lit_comp(""), str8_lit_comp("AddTarget"), ((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("SelectTarget"), str8_lit_comp(""), str8_lit_comp("SelectTarget"), ((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("RetryEndedProcess"), str8_lit_comp(""), str8_lit_comp("RetryEndedProcess"), ((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("RegisterAsJITDebugger"), str8_lit_comp(""), str8_lit_comp("RegisterAsJITDebugger"), ((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("LogMarker"), str8_lit_comp(""), str8_lit_comp("LogMarker"), ((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}}, }; DF_StringBindingPair df_g_default_binding_table[110] = @@ -698,7 +725,7 @@ DF_IconKind_Null, DF_IconKind_Null, }; -DF_IconKind df_entity_kind_icon_kind_table[28] = +DF_IconKind df_entity_kind_icon_kind_table[31] = { DF_IconKind_Null, DF_IconKind_Null, @@ -717,6 +744,9 @@ DF_IconKind_Null, DF_IconKind_Null, DF_IconKind_Null, DF_IconKind_Null, +DF_IconKind_Window, +DF_IconKind_XSplit, +DF_IconKind_Null, DF_IconKind_Briefcase, DF_IconKind_Null, DF_IconKind_Null, diff --git a/src/dbg_frontend/generated/dbg_frontend.meta.h b/src/dbg_frontend/generated/dbg_frontend.meta.h index 32dc83d3..052763ad 100644 --- a/src/dbg_frontend/generated/dbg_frontend.meta.h +++ b/src/dbg_frontend/generated/dbg_frontend.meta.h @@ -12,10 +12,10 @@ DF_MsgKind_Null, DF_MsgKind_Exit, DF_MsgKind_RunCommand, DF_MsgKind_ToggleDevMenu, -DF_MsgKind_LoadUser, -DF_MsgKind_LoadProject, -DF_MsgKind_SaveUser, -DF_MsgKind_SaveProject, +DF_MsgKind_ApplyUserData, +DF_MsgKind_ApplyProjectData, +DF_MsgKind_WriteUserData, +DF_MsgKind_WriteProjectData, DF_MsgKind_OpenWindow, DF_MsgKind_CloseWindow, DF_MsgKind_ToggleFullscreen, @@ -72,49 +72,6 @@ DF_MsgKind_GoToLine, DF_MsgKind_GoToAddress, DF_MsgKind_CenterCursor, DF_MsgKind_ContainCursor, -DF_MsgKind_Edit, -DF_MsgKind_Accept, -DF_MsgKind_Cancel, -DF_MsgKind_MoveLeft, -DF_MsgKind_MoveRight, -DF_MsgKind_MoveUp, -DF_MsgKind_MoveDown, -DF_MsgKind_MoveLeftSelect, -DF_MsgKind_MoveRightSelect, -DF_MsgKind_MoveUpSelect, -DF_MsgKind_MoveDownSelect, -DF_MsgKind_MoveLeftChunk, -DF_MsgKind_MoveRightChunk, -DF_MsgKind_MoveUpChunk, -DF_MsgKind_MoveDownChunk, -DF_MsgKind_MoveUpPage, -DF_MsgKind_MoveDownPage, -DF_MsgKind_MoveUpWhole, -DF_MsgKind_MoveDownWhole, -DF_MsgKind_MoveLeftChunkSelect, -DF_MsgKind_MoveRightChunkSelect, -DF_MsgKind_MoveUpChunkSelect, -DF_MsgKind_MoveDownChunkSelect, -DF_MsgKind_MoveUpPageSelect, -DF_MsgKind_MoveDownPageSelect, -DF_MsgKind_MoveUpWholeSelect, -DF_MsgKind_MoveDownWholeSelect, -DF_MsgKind_MoveUpReorder, -DF_MsgKind_MoveDownReorder, -DF_MsgKind_MoveHome, -DF_MsgKind_MoveEnd, -DF_MsgKind_MoveHomeSelect, -DF_MsgKind_MoveEndSelect, -DF_MsgKind_SelectAll, -DF_MsgKind_DeleteSingle, -DF_MsgKind_DeleteChunk, -DF_MsgKind_BackspaceSingle, -DF_MsgKind_BackspaceChunk, -DF_MsgKind_Copy, -DF_MsgKind_Cut, -DF_MsgKind_Paste, -DF_MsgKind_InsertText, -DF_MsgKind_OSEvent, DF_MsgKind_COUNT, } DF_MsgKind; @@ -465,8 +422,9 @@ 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 DF_MsgKindInfo df_msg_kind_info_table[107]; -extern DF_MsgKindInfo df_d_msg_kind_info_table[69]; +extern String8 df_msg_kind_name_lower_table[64]; +extern DF_MsgKindInfo df_msg_kind_info_table[64]; +extern DF_MsgKindInfo df_d_msg_kind_info_table[71]; 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]; @@ -474,7 +432,7 @@ extern String8 df_g_icon_kind_text_table[69]; extern String8 df_view_kind_name_lower_table[34]; extern DF_ViewSpecInfo df_g_gfx_view_kind_spec_info_table[34]; extern DF_IconKind df_cmd_kind_icon_kind_table[221]; -extern DF_IconKind df_entity_kind_icon_kind_table[28]; +extern DF_IconKind df_entity_kind_icon_kind_table[31]; extern D_CmdParamSlot df_g_cmd_param_slot_2_view_spec_src_map[7]; extern String8 df_g_cmd_param_slot_2_view_spec_dst_map[7]; extern String8 df_g_cmd_param_slot_2_view_spec_cmd_map[7]; diff --git a/src/mdesk/mdesk.c b/src/mdesk/mdesk.c index 1eb25047..899d8c30 100644 --- a/src/mdesk/mdesk.c +++ b/src/mdesk/mdesk.c @@ -211,24 +211,6 @@ md_node_push_tag(MD_Node *parent, MD_Node *node) DLLPushBack_NPZ(&md_nil_node, parent->first_tag, parent->last_tag, node, next, prev); } -//- rjf: tree building helpers - -internal MD_Node * -md_push_list(Arena *arena) -{ - MD_Node *n = md_push_node(arena, MD_NodeKind_List, 0, str8_zero(), str8_zero(), 0); - return n; -} - -internal MD_Node * -md_list_push_ref(Arena *arena, MD_Node *list, MD_Node *ref_dst) -{ - MD_Node *ref = md_push_node(arena, MD_NodeKind_Reference, 0, str8_zero(), str8_zero(), 0); - ref->first = ref->last = ref_dst; - md_node_push_child(list, ref); - return ref; -} - //- rjf: tree introspection internal MD_Node * diff --git a/src/mdesk/mdesk.h b/src/mdesk/mdesk.h index 286cc26b..0362da35 100644 --- a/src/mdesk/mdesk.h +++ b/src/mdesk/mdesk.h @@ -263,10 +263,6 @@ internal MD_Node *md_push_node(Arena *arena, MD_NodeKind kind, MD_NodeFlags flag internal void md_node_push_child(MD_Node *parent, MD_Node *node); internal void md_node_push_tag(MD_Node *parent, MD_Node *node); -//- rjf: tree building helpers -internal MD_Node *md_push_list(Arena *arena); -internal MD_Node *md_list_push_ref(Arena *arena, MD_Node *list, MD_Node *ref_dst); - //- rjf: tree introspection internal MD_Node * md_node_from_chain_string(MD_Node *first, MD_Node *opl, String8 string, StringMatchFlags flags); internal MD_Node * md_node_from_chain_index(MD_Node *first, MD_Node *opl, U64 index); diff --git a/src/os/gfx/os_gfx.c b/src/os/gfx/os_gfx.c index 8876481f..d006ab02 100644 --- a/src/os/gfx/os_gfx.c +++ b/src/os/gfx/os_gfx.c @@ -45,23 +45,6 @@ os_string_list_from_event_flags(Arena *arena, OS_EventFlags flags) return result; } -internal OS_Key -os_key_from_string(String8 string) -{ - OS_Key result = OS_Key_Null; - { - for(OS_Key key = OS_Key_Null; key < OS_Key_COUNT; key = (OS_Key)(key+1)) - { - if(str8_match(string, os_g_key_cfg_string_table[key], StringMatchFlag_CaseInsensitive)) - { - result = key; - break; - } - } - } - return result; -} - internal U32 os_codepoint_from_event_flags_and_key(OS_EventFlags flags, OS_Key key) { diff --git a/src/os/gfx/os_gfx.h b/src/os/gfx/os_gfx.h index 5dc4bd3a..725bef19 100644 --- a/src/os/gfx/os_gfx.h +++ b/src/os/gfx/os_gfx.h @@ -111,7 +111,6 @@ internal B32 frame(void); internal String8 os_string_from_event_kind(OS_EventKind kind); internal String8List os_string_list_from_event_flags(Arena *arena, OS_EventFlags flags); -internal OS_Key os_key_from_string(String8 string); internal U32 os_codepoint_from_event_flags_and_key(OS_EventFlags flags, OS_Key key); internal void os_eat_event(OS_EventList *events, OS_Event *event); internal B32 os_key_press(OS_EventList *events, OS_Handle window, OS_EventFlags flags, OS_Key key); diff --git a/src/raddbg/raddbg_main.c b/src/raddbg/raddbg_main.c index ed3ba815..eed4b873 100644 --- a/src/raddbg/raddbg_main.c +++ b/src/raddbg/raddbg_main.c @@ -799,7 +799,7 @@ entry_point(CmdLine *cmd_line) fnt_init(); D_StateDeltaHistory *hist = d_state_delta_history_alloc(); d_init(cmd_line, hist); - df_init(); + df_init(d_state_delta_history()); } //- rjf: setup initial target from command line args @@ -910,34 +910,31 @@ entry_point(CmdLine *cmd_line) break; } } - if(dst_window != 0) D_RegsScope + if(dst_window != 0) { - df_regs_set_window(dst_window); dst_window->window_temporarily_focused_ipc = 1; - U64 first_space_pos = str8_find_needle(msg, 0, str8_lit(" "), 0); - String8 msg_kind_name = lower_from_str8(scratch.arena, str8_prefix(msg, first_space_pos)); - String8 args_string = str8_skip(msg, first_space_pos); - args_string = str8_skip_chop_whitespace(args_string); - D_MsgKind d_kind = d_msg_kind_from_string(msg_kind_name); - DF_MsgKind df_kind = df_msg_kind_from_string(msg_kind_name); - DF_MsgQuery query = (d_kind != D_MsgKind_Null ? df_d_msg_kind_info_table[d_kind].query : - df_kind != DF_MsgKind_Null? df_msg_kind_info_table[df_kind].query : - (DF_MsgQuery){0}); - df_regs_set_from_query_slot_string(query.slot, args_string); - if(d_kind != D_MsgKind_Null) + String8 cmd_spec_string = d_cmd_name_part_from_string(msg); + D_CmdSpec *cmd_spec = d_cmd_spec_from_string(cmd_spec_string); + if(!d_cmd_spec_is_nil(cmd_spec)) { - d_msg(d_kind); + D_CmdParams params = df_cmd_params_from_window(dst_window); + String8 error = d_cmd_params_apply_spec_query(scratch.arena, ¶ms, cmd_spec, d_cmd_arg_part_from_string(msg)); + if(error.size == 0) + { + d_push_cmd(cmd_spec, ¶ms); + df_request_frame(); + } + else + { + d_error(error); + df_request_frame(); + } } - if(df_kind != DF_MsgKind_Null) + else { - df_msg(df_kind); + d_errorf("\"%S\" is not a command.", cmd_spec_string); + df_request_frame(); } - if(d_kind == D_MsgKind_Null && - df_kind == DF_MsgKind_Null) - { - log_user_errorf("\"%S\" is not a command.", msg_kind_name); - } - df_request_frame(); } } scratch_end(scratch);