diff --git a/src/base/base_entry_point.c b/src/base/base_entry_point.c index a592262b..3d33ee27 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(update_and_render, d_state_delta_history()); + df_init(); #endif //- rjf: call into entry point diff --git a/src/ctrl/ctrl_core.c b/src/ctrl/ctrl_core.c index 60a115be..f7ac86b1 100644 --- a/src/ctrl/ctrl_core.c +++ b/src/ctrl/ctrl_core.c @@ -510,6 +510,17 @@ 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 * @@ -520,6 +531,10 @@ 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; @@ -648,12 +663,13 @@ ctrl_entity_alloc(CTRL_EntityStore *store, CTRL_Entity *parent, CTRL_EntityKind // rjf: fill { - entity->kind = kind; - entity->arch = arch; - entity->machine_id = machine_id; - entity->handle = handle; - entity->id = id; - entity->parent = parent; + 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->next = entity->prev = entity->first = entity->last = &ctrl_entity_nil; if(parent != &ctrl_entity_nil) { @@ -692,7 +708,8 @@ ctrl_entity_alloc(CTRL_EntityStore *store, CTRL_Entity *parent, CTRL_EntityKind } } - // rjf: bump counter + // rjf: bump alloc generation / counts + store->entity_kind_alloc_gens[kind] += 1; store->entity_kind_counts[kind] += 1; } return entity; @@ -808,6 +825,161 @@ 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 @@ -848,6 +1020,7 @@ 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 4c849997..328d931b 100644 --- a/src/ctrl/ctrl_core.h +++ b/src/ctrl/ctrl_core.h @@ -62,16 +62,42 @@ 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 { @@ -105,6 +131,10 @@ 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]; }; //////////////////////////////// @@ -686,6 +716,9 @@ 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); @@ -705,6 +738,22 @@ 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 4bddf460..de959038 100644 --- a/src/dbg_engine/dbg_engine.mdesk +++ b/src/dbg_engine/dbg_engine.mdesk @@ -61,11 +61,6 @@ 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" } @@ -94,11 +89,11 @@ D_EntityKindTable: @table(c_type name_lower name) D_RegTable: { - // rjf: entity slots - {D_Handle machine Machine } - {D_Handle module Module } - {D_Handle process Process } - {D_Handle thread Thread } + // rjf: entity info + {CTRL_MachineID machine_id MachineID } + {DMN_Handle process process } + {DMN_Handle module module } + {DMN_Handle thread thread } {D_Handle window Window } {D_Handle panel Panel } {D_Handle view View } @@ -221,8 +216,6 @@ 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 b20e2c21..78dcbdb2 100644 --- a/src/dbg_engine/dbg_engine_core.c +++ b/src/dbg_engine/dbg_engine_core.c @@ -1041,6 +1041,8 @@ 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); @@ -1065,6 +1067,7 @@ d_search_tags_from_entity(Arena *arena, D_Entity *entity) result = str8_list_join(arena, &strings, &join); scratch_end(scratch); } +#endif return result; } @@ -2042,14 +2045,25 @@ d_set_thread_freeze_state(D_Entity *thread, B32 frozen) } internal B32 -d_entity_is_frozen(D_Entity *entity) +d_entity_is_frozen(CTRL_Entity *entity) { - 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) + 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) { - if(e->kind == D_EntityKind_Thread) + if(e->kind == CTRL_EntityKind_Thread) { - B32 thread_is_frozen = !!d_handle_list_find(&d_state->frozen_threads, d_handle_from_entity(e)); + 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; + } + } if(!thread_is_frozen) { is_frozen = 0; @@ -2299,21 +2313,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, D_Entity *thread) +d_trap_net_from_thread__step_over_inst(Arena *arena, CTRL_Entity *thread) { Temp scratch = scratch_begin(&arena, 1); CTRL_TrapList result = {0}; // rjf: thread => unpacked info - 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); + 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); // 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->ctrl_machine_id, process->ctrl_handle, rng, os_now_microseconds()+5000); + 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); machine_code = machine_code_slice.data; } @@ -2336,31 +2350,31 @@ 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) +d_trap_net_from_thread__step_over_line(Arena *arena, CTRL_Entity *thread) { Temp scratch = scratch_begin(&arena, 1); log_infof("step_over_line:\n{\n"); CTRL_TrapList result = {0}; // rjf: thread => info - 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); + 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; 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 = d_voff_from_vaddr(module, ip_vaddr); + U64 ip_voff = ctrl_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 = d_vaddr_range_from_voff_range(module, line_voff_rng); + line_vaddr_rng = ctrl_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); @@ -2372,11 +2386,11 @@ d_trap_net_from_thread__step_over_line(Arena *arena, D_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 = d_voff_from_vaddr(module, line_vaddr_rng.max); + U64 opl_line_voff_rng = ctrl_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 = d_vaddr_from_voff(module, lines.first->v.voff_range.max); + line_vaddr_rng.max = ctrl_vaddr_from_voff(module, lines.first->v.voff_range.max); } } @@ -2387,7 +2401,7 @@ d_trap_net_from_thread__step_over_line(Arena *arena, D_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->ctrl_machine_id, process->ctrl_handle, line_vaddr_rng, os_now_microseconds()+50000); + 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); machine_code = machine_code_slice.data; LogInfoNamedBlockF("machine_code_slice") { @@ -2498,28 +2512,28 @@ 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) +d_trap_net_from_thread__step_into_line(Arena *arena, CTRL_Entity *thread) { Temp scratch = scratch_begin(&arena, 1); CTRL_TrapList result = {0}; // rjf: thread => info - 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); + 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; // rjf: ip => line vaddr range Rng1U64 line_vaddr_rng = {0}; { - U64 ip_voff = d_voff_from_vaddr(module, ip_vaddr); + U64 ip_voff = ctrl_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 = d_vaddr_range_from_voff_range(module, line_voff_rng); + line_vaddr_rng = ctrl_vaddr_range_from_voff_range(module, line_voff_rng); } } @@ -2528,11 +2542,11 @@ d_trap_net_from_thread__step_into_line(Arena *arena, D_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 = d_voff_from_vaddr(module, line_vaddr_rng.max); + U64 opl_line_voff_rng = ctrl_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 = d_vaddr_from_voff(module, lines.first->v.voff_range.max); + line_vaddr_rng.max = ctrl_vaddr_from_voff(module, lines.first->v.voff_range.max); } } @@ -2543,7 +2557,7 @@ d_trap_net_from_thread__step_into_line(Arena *arena, D_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->ctrl_machine_id, process->ctrl_handle, line_vaddr_rng, os_now_microseconds()+5000); + 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); machine_code = machine_code_slice.data; } @@ -2742,14 +2756,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, D_Entity *process, U64 vaddr, B32 decorated) +d_symbol_name_from_process_vaddr(Arena *arena, CTRL_Entity *process, U64 vaddr, B32 decorated) { ProfBeginFunction(); String8 result = {0}; { - 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); + 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); result = d_symbol_name_from_dbgi_key_voff(arena, &dbgi_key, voff, decorated); } ProfEnd(); @@ -3104,12 +3118,12 @@ internal D_Entity * d_module_from_thread(D_Entity *thread) { D_Entity *process = thread->parent; - U64 rip = d_query_cached_rip_from_thread(thread); + U64 rip = 0;// TODO(rjf): @msgs 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(D_Entity *process, U64 root_vaddr, U64 rip_vaddr) +d_tls_base_vaddr_from_process_root_rip(CTRL_Entity *process, U64 root_vaddr, U64 rip_vaddr) { ProfBeginFunction(); U64 base_vaddr = 0; @@ -3117,15 +3131,15 @@ d_tls_base_vaddr_from_process_root_rip(D_Entity *process, U64 root_vaddr, U64 ri if(!d_ctrl_targets_running()) { //- rjf: unpack module info - 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); + 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); 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->ctrl_machine_id, process->ctrl_handle, tls_vaddr_range, 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); if(tls_index_slice.data.size >= addr_size) { tls_index = *(U64 *)tls_index_slice.data.str; @@ -3138,13 +3152,13 @@ d_tls_base_vaddr_from_process_root_rip(D_Entity *process, U64 root_vaddr, U64 ri 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->ctrl_machine_id, process->ctrl_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->machine_id, process->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->ctrl_machine_id, process->ctrl_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->machine_id, process->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) { @@ -3216,6 +3230,9 @@ 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); @@ -3244,6 +3261,7 @@ d_set_thread_rip(D_Entity *thread, U64 vaddr) scratch_end(scratch); return result; +#endif } internal D_Entity * @@ -3269,9 +3287,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, D_Entity *process, CTRL_Unwind *base_unwind) +d_unwind_from_ctrl_unwind(Arena *arena, DI_Scope *di_scope, CTRL_Entity *process, CTRL_Unwind *base_unwind) { - Arch arch = d_arch_from_entity(process); + Arch arch = process->arch; D_Unwind result = {0}; result.frames.concrete_frame_count = base_unwind->frames.count; result.frames.total_frame_count = result.frames.concrete_frame_count; @@ -3281,9 +3299,9 @@ d_unwind_from_ctrl_unwind(Arena *arena, DI_Scope *di_scope, D_Entity *process, C 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); - 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); + 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); RDI_Parsed *rdi = di_rdi_from_key(di_scope, &dbgi_key, 0); RDI_Scope *scope = rdi_scope_from_voff(rdi, rip_voff); @@ -3372,7 +3390,7 @@ d_push_ctrl_msg(CTRL_Msg *msg) //- rjf: control thread running internal void -d_ctrl_run(D_RunKind run, D_Entity *run_thread, CTRL_RunFlags flags, CTRL_TrapList *run_traps) +d_ctrl_run(D_RunKind run, CTRL_Entity *run_thread, CTRL_RunFlags flags, CTRL_TrapList *run_traps) { Temp scratch = scratch_begin(0, 0); @@ -3385,11 +3403,11 @@ d_ctrl_run(D_RunKind run, D_Entity *run_thread, CTRL_RunFlags flags, CTRL_TrapLi 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); - D_Entity *process = d_entity_ancestor_from_kind(run_thread, D_EntityKind_Process); + CTRL_Entity *process = ctrl_entity_ancestor_from_kind(run_thread, D_EntityKind_Process); msg.run_flags = flags; - msg.machine_id = run_thread->ctrl_machine_id; - msg.entity = run_thread->ctrl_handle; - msg.parent = process->ctrl_handle; + msg.machine_id = run_thread->machine_id; + msg.entity = run_thread->handle; + msg.parent = process->handle; MemoryCopyArray(msg.exception_code_filters, d_state->ctrl_exception_code_filters); if(run_traps != 0) { @@ -3466,7 +3484,8 @@ d_ctrl_run(D_RunKind run, D_Entity *run_thread, CTRL_RunFlags flags, CTRL_TrapLi 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_thread = d_handle_from_entity(run_thread); + 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_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; @@ -3491,19 +3510,19 @@ d_ctrl_last_stop_event(void) //- rjf: entity <-> eval space -internal D_Entity * +internal CTRL_Entity * d_entity_from_eval_space(E_Space space) { - D_Entity *entity = &d_nil_entity; + CTRL_Entity *entity = &ctrl_entity_nil; if(space.u64[0] == 0 && space.u64[1] != 0) { - entity = (D_Entity *)space.u64[1]; + entity = (CTRL_Entity *)space.u64[1]; } return entity; } internal E_Space -d_eval_space_from_entity(D_Entity *entity) +d_eval_space_from_entity(CTRL_Entity *entity) { E_Space space = {0}; space.u64[1] = (U64)entity; @@ -3516,11 +3535,11 @@ internal B32 d_eval_space_read(void *u, E_Space space, void *out, Rng1U64 range) { B32 result = 0; - D_Entity *entity = d_entity_from_eval_space(space); + CTRL_Entity *entity = d_entity_from_eval_space(space); switch(entity->kind) { //- rjf: nil-space -> fall back to file system - case D_EntityKind_Nil: + case CTRL_EntityKind_Null: { U128 key = space; U128 hash = hs_hash_from_key(key, 0); @@ -3539,6 +3558,7 @@ 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); @@ -3560,12 +3580,13 @@ d_eval_space_read(void *u, E_Space space, void *out, Rng1U64 range) } scratch_end(scratch); }break; +#endif //- rjf: process -> reading process memory - case D_EntityKind_Process: + case CTRL_EntityKind_Process: { Temp scratch = scratch_begin(0, 0); - 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); + 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); String8 data = slice.data; if(data.size == dim_1u64(range)) { @@ -3601,10 +3622,11 @@ internal B32 d_eval_space_write(void *u, E_Space space, void *in, Rng1U64 range) { B32 result = 0; - D_Entity *entity = d_entity_from_eval_space(space); + CTRL_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); @@ -3638,22 +3660,23 @@ 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 D_EntityKind_Process: + case CTRL_EntityKind_Process: { - result = ctrl_process_write(entity->ctrl_machine_id, entity->ctrl_handle, range, in); + result = ctrl_process_write(entity->machine_id, entity->handle, range, in); }break; //- rjf: thread -> commit to thread's register block - case D_EntityKind_Thread: + case CTRL_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(d_arch_from_entity(entity)); + U64 regs_size = regs_block_size_from_arch(entity->arch); Rng1U64 legal_range = r1u64(0, regs_size); Rng1U64 write_range = intersect_1u64(legal_range, range); U64 write_size = dim_1u64(write_range); @@ -3661,7 +3684,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->ctrl_machine_id, entity->ctrl_handle, new_regs); + result = ctrl_thread_write_reg_block(entity->machine_id, entity->handle, new_regs); scratch_end(scratch); } }break; @@ -3675,7 +3698,7 @@ internal U128 d_key_from_eval_space_range(E_Space space, Rng1U64 range, B32 zero_terminated) { U128 result = {0}; - D_Entity *entity = d_entity_from_eval_space(space); + CTRL_Entity *entity = d_entity_from_eval_space(space); switch(entity->kind) { //- rjf: nil space -> filesystem key encoded inside of `space` @@ -3687,7 +3710,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->ctrl_machine_id, entity->ctrl_handle, range, zero_terminated); + result = ctrl_hash_store_key_from_process_vaddr_range(entity->machine_id, entity->handle, range, zero_terminated); }break; } return result; @@ -3699,11 +3722,11 @@ internal Rng1U64 d_whole_range_from_eval_space(E_Space space) { Rng1U64 result = r1u64(0, 0); - D_Entity *entity = d_entity_from_eval_space(space); + CTRL_Entity *entity = d_entity_from_eval_space(space); switch(entity->kind) { //- rjf: nil space -> filesystem key encoded inside of `space` - case D_EntityKind_Nil: + case CTRL_EntityKind_Null: { HS_Scope *scope = hs_scope_open(); U128 hash = {0}; @@ -3719,7 +3742,7 @@ d_whole_range_from_eval_space(E_Space space) result = r1u64(0, data.size); hs_scope_close(scope); }break; - case D_EntityKind_Process: + case CTRL_EntityKind_Process: { result = r1u64(0, 0x7FFFFFFFFFFFull); }break; @@ -5369,6 +5392,9 @@ 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); @@ -5377,13 +5403,18 @@ 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 @@ -5481,6 +5512,40 @@ 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 * @@ -5588,7 +5653,7 @@ d_cfg_raw_from_escaped_string(Arena *arena, String8 string) } internal String8List -d_cfg_strings_from_core(Arena *arena, String8 root_path, D_CfgSrc source) +d_cfg_strings_from_state(Arena *arena, String8 root_path, D_CfgSrc source) { ProfBeginFunction(); local_persist char *spaces = " "; @@ -5852,23 +5917,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(D_Entity *thread) +d_query_cached_unwind_from_thread(CTRL_Entity *thread) { Temp scratch = scratch_begin(0, 0); CTRL_Unwind result = {0}; - if(thread->kind == D_EntityKind_Thread) + if(thread->kind == CTRL_EntityKind_Thread) { U64 reg_gen = ctrl_reg_gen(); U64 mem_gen = ctrl_mem_gen(); D_UnwindCache *cache = &d_state->unwind_cache; - D_Handle handle = d_handle_from_entity(thread); - U64 hash = d_hash_from_string(str8_struct(&handle)); + CTRL_MachineIDHandlePair pair = {thread->machine_id, thread->handle}; + U64 hash = d_hash_from_string(str8_struct(&pair)); 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(d_handle_match(handle, n->thread)) + if(MemoryMatchStruct(&n->pair, &pair)) { node = n; break; @@ -5888,12 +5953,12 @@ d_query_cached_unwind_from_thread(D_Entity *thread) MemoryZeroStruct(node); DLLPushBack(slot->first, slot->last, node); node->arena = arena_alloc(); - node->thread = handle; + node->pair = pair; } 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->ctrl_machine_id, thread->ctrl_handle, os_now_microseconds()+100); + CTRL_Unwind new_unwind = ctrl_unwind_from_thread(scratch.arena, d_state->ctrl_entity_store, thread->machine_id, thread->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); @@ -5908,19 +5973,19 @@ d_query_cached_unwind_from_thread(D_Entity *thread) } internal U64 -d_query_cached_rip_from_thread(D_Entity *thread) +d_query_cached_rip_from_thread(CTRL_Entity *thread) { U64 result = d_query_cached_rip_from_thread_unwind(thread, 0); return result; } internal U64 -d_query_cached_rip_from_thread_unwind(D_Entity *thread, U64 unwind_count) +d_query_cached_rip_from_thread_unwind(CTRL_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->ctrl_machine_id, thread->ctrl_handle); + result = ctrl_query_cached_rip_from_thread(d_state->ctrl_entity_store, thread->machine_id, thread->handle); } else { @@ -5934,7 +5999,7 @@ 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) +d_query_cached_tls_base_vaddr_from_process_root_rip(CTRL_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) @@ -5949,14 +6014,14 @@ d_query_cached_tls_base_vaddr_from_process_root_rip(D_Entity *process, U64 root_ { break; } - 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)); + 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)); 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(d_handle_match(n->process, handle) && n->root_vaddr == root_vaddr && n->rip_vaddr == rip_vaddr) + if(MemoryMatchStruct(&pair, &n->pair) && n->root_vaddr == root_vaddr && n->rip_vaddr == rip_vaddr) { node = n; break; @@ -5969,7 +6034,7 @@ d_query_cached_tls_base_vaddr_from_process_root_rip(D_Entity *process, U64 root_ { node = push_array(cache->arena, D_RunTLSBaseCacheNode, 1); SLLQueuePush_N(slot->first, slot->last, node, hash_next); - node->process = handle; + node->pair = pair; node->root_vaddr = root_vaddr; node->rip_vaddr = rip_vaddr; node->tls_base_vaddr = tls_base_vaddr; @@ -6410,7 +6475,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; - D_Entity *stop_thread = d_entity_from_ctrl_handle(event->machine_id, event->entity); + CTRL_Entity *stop_thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, event->machine_id, event->entity); // rjf: gather stop info { @@ -6419,35 +6484,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 & snap to thread causing stop + // rjf: select thread causing stop if(should_snap && stop_thread->kind == D_EntityKind_Thread) { - 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)); + d_msg(D_MsgKind_SelectThread, .machine_id = event->machine_id, .thread = event->entity); } // 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)) { - D_Entity *selected_thread = d_entity_from_handle(d_regs()->thread); - if(!d_entity_is_nil(selected_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_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->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); + 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); 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) { @@ -6598,10 +6663,11 @@ 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 - D_Entity *selected_thread = d_entity_from_handle(d_state->base_regs.v.thread); - if(d_entity_is_nil(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_state->base_regs.v.thread = d_handle_from_entity(entity); + d_state->base_regs.v.machine_id = event->machine_id; + d_state->base_regs.v.thread = event->entity; } // rjf: do initial snap @@ -6817,7 +6883,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(d_entity_is_nil(d_entity_from_handle(n->thread))) + if(ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, n->pair.machine_id, n->pair.handle) == &ctrl_entity_nil) { DLLRemove(slot->first, slot->last, n); arena_release(n->arena); @@ -6964,7 +7030,7 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) } // rjf: run - d_ctrl_run(D_RunKind_Run, &d_nil_entity, CTRL_RunFlag_StopOnEntryPoint * (msg->kind == D_MsgKind_LaunchAndStepInto), 0); + d_ctrl_run(D_RunKind_Run, &ctrl_entity_nil, CTRL_RunFlag_StopOnEntryPoint * (msg->kind == D_MsgKind_LaunchAndStepInto), 0); } // rjf: no targets -> error @@ -7045,10 +7111,10 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) case D_MsgKind_Continue: { B32 good_to_run = 0; - 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_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_Entity *machine = n->entity; + CTRL_Entity *machine = n->v; if(!d_entity_is_frozen(machine)) { good_to_run = 1; @@ -7057,7 +7123,7 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) } if(good_to_run) { - d_ctrl_run(D_RunKind_Run, &d_nil_entity, 0, 0); + d_ctrl_run(D_RunKind_Run, &ctrl_entity_nil, 0, 0); } else { @@ -7072,7 +7138,7 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) case D_MsgKind_StepOverLine: case D_MsgKind_StepOut: { - D_Entity *thread = d_entity_from_handle(regs->thread); + CTRL_Entity *thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, regs->machine_id, regs->thread); if(d_ctrl_targets_running()) { if(d_ctrl_last_run_kind() == D_RunKind_Run) @@ -7098,7 +7164,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->ctrl_machine_id, thread->ctrl_handle, os_now_microseconds()+10000); + CTRL_Unwind unwind = ctrl_unwind_from_thread(scratch.arena, d_state->ctrl_entity_store, thread->machine_id, thread->handle, os_now_microseconds()+10000); // rjf: use first unwind frame to generate trap if(unwind.flags == 0 && unwind.frames.count > 1) @@ -7137,18 +7203,19 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) { if(d_ctrl_targets_running()) { - 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); + 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); } }break; //- rjf: [low level target operations] setting thread rip case D_MsgKind_SetThreadIP: { - D_Entity *thread = d_entity_from_handle(regs->thread); + CTRL_Entity *thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, regs->machine_id, 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->ctrl_machine_id, thread->ctrl_handle); + void *block = ctrl_query_cached_reg_block_from_thread(scratch.arena, d_state->ctrl_entity_store, thread->machine_id, thread->handle); regs_arch_block_write_rip(thread->arch, block, vaddr); - B32 result = ctrl_thread_write_reg_block(thread->ctrl_machine_id, thread->ctrl_handle, block); + B32 result = ctrl_thread_write_reg_block(thread->machine_id, thread->handle, block); // rjf: early mutation of unwind cache for immediate frontend effect if(result) @@ -7156,13 +7223,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) { - D_Handle thread_handle = d_handle_from_entity(thread); - U64 hash = d_hash_from_string(str8_struct(&thread_handle)); + CTRL_MachineIDHandlePair pair = {thread->machine_id, thread->handle}; + U64 hash = d_hash_from_string(str8_struct(&pair)); 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(d_handle_match(n->thread, thread_handle) && n->unwind.frames.count != 0) + if(MemoryMatchStruct(&pair, &n->pair) && n->unwind.frames.count != 0) { regs_arch_block_write_rip(thread->arch, n->unwind.frames.v[0].regs, vaddr); break; @@ -7262,20 +7329,22 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) //- rjf: thread / frame selection case D_MsgKind_SelectThread: { - 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); + 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_state->base_regs.v.unwind_count = 0; d_state->base_regs.v.inline_depth = 0; - 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); + 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; }break; case D_MsgKind_SelectUnwind: { DI_Scope *di_scope = di_scope_open(); - 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_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); 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) @@ -7294,8 +7363,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(); - 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_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); 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; @@ -7341,21 +7410,35 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) }break; //- rjf: thread freezing/thawing - 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_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_FreezeLocalMachine: { - D_Entity *machine = d_machine_entity_from_machine_id(CTRL_MachineID_Local); - d_msg(D_MsgKind_FreezeEntity, .entity = d_handle_from_entity(machine)); + d_msg(D_MsgKind_FreezeMachine, .machine_id = CTRL_MachineID_Local); }break; case D_MsgKind_ThawLocalMachine: { - D_Entity *machine = d_machine_entity_from_machine_id(CTRL_MachineID_Local); - d_msg(D_MsgKind_ThawEntity, .entity = d_handle_from_entity(machine)); + d_msg(D_MsgKind_ThawMachine, .machine_id = CTRL_MachineID_Local); }break; //- rjf: path overrides (TODO(rjf)) @@ -7382,21 +7465,6 @@ 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: @@ -7644,7 +7712,7 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) }break; case D_MsgKind_SetNextStatement: { - D_Entity *thread = d_entity_from_handle(regs->thread); + CTRL_Entity *thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, regs->machine_id, regs->thread); String8 file_path = regs->file_path; U64 new_rip_vaddr = regs->vaddr_range.min; if(file_path.size != 0) @@ -7652,11 +7720,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) { - 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)) + 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) { - new_rip_vaddr = d_vaddr_from_voff(module, n->v.voff_range.min); + new_rip_vaddr = ctrl_vaddr_from_voff(module, n->v.voff_range.min); break; } } @@ -7790,6 +7858,8 @@ 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); @@ -8090,7 +8160,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) { - d_set_thread_rip(thread, vaddr); + // TODO(rjf): @msgs d_set_thread_rip(thread, vaddr); } }break; @@ -8738,7 +8808,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_core(scratch.arena, path, src); + String8List strs = d_cfg_strings_from_state(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); @@ -9361,20 +9431,22 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt) } scratch_end(scratch); } +#endif ////////////////////////////// //- rjf: unpack eval-dependent info // - 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); + 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; 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); - 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); + 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); 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]; @@ -9383,39 +9455,20 @@ 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(D_EntityNode *n = all_modules.first; n != 0; n = n->next, eval_module_idx += 1) + for(CTRL_EntityNode *n = all_modules.first; n != 0; n = n->next, eval_module_idx += 1) { - 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); + CTRL_Entity *m = n->v; + DI_Key dbgi_key = ctrl_dbgi_key_from_module(m); + eval_modules[eval_module_idx].arch = m->arch; eval_modules[eval_module_idx].rdi = di_rdi_from_key(di_scope, &dbgi_key, 0); - 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)); + 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)); 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 @@ -9463,23 +9516,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->ctrl_id; + expr->value.u64 = process->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->ctrl_id; + expr->value.u64 = thread->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}; @@ -9521,6 +9574,7 @@ 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); @@ -9551,7 +9605,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_rng.min; + ctx->module_base[0] = module->vaddr_range.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); } @@ -9568,6 +9622,7 @@ 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 b08c687e..b974d460 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; - D_Handle thread; + CTRL_MachineIDHandlePair pair; CTRL_Unwind unwind; }; @@ -860,7 +860,7 @@ typedef struct D_RunTLSBaseCacheNode D_RunTLSBaseCacheNode; struct D_RunTLSBaseCacheNode { D_RunTLSBaseCacheNode *hash_next; - D_Handle process; + CTRL_MachineIDHandlePair pair; U64 root_vaddr; U64 rip_vaddr; U64 tls_base_vaddr; @@ -987,6 +987,7 @@ struct D_State D_MsgList msgs; // rjf: top-level command batch + // TODO(rjf): @msgs Arena *root_cmd_arena; D_CmdList root_cmds; @@ -1040,6 +1041,8 @@ 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; @@ -1047,7 +1050,8 @@ struct D_State Arena *ctrl_last_run_arena; D_RunKind ctrl_last_run_kind; U64 ctrl_last_run_frame_idx; - D_Handle ctrl_last_run_thread; + CTRL_MachineID ctrl_last_run_machine_id; + DMN_Handle ctrl_last_run_thread; CTRL_RunFlags ctrl_last_run_flags; CTRL_TrapList ctrl_last_run_traps; U128 ctrl_last_run_param_state_hash; @@ -1299,7 +1303,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(D_Entity *entity); +internal B32 d_entity_is_frozen(CTRL_Entity *entity); //////////////////////////////// //~ rjf: Command Stateful Functions @@ -1319,9 +1323,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, 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); +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); //////////////////////////////// //~ rjf: Modules & Debug Info Mappings @@ -1342,7 +1346,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, D_Entity *process, U64 vaddr, B32 decorated); +internal String8 d_symbol_name_from_process_vaddr(Arena *arena, CTRL_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); @@ -1360,13 +1364,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(D_Entity *process, U64 root_vaddr, U64 rip_vaddr); +internal U64 d_tls_base_vaddr_from_process_root_rip(CTRL_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, D_Entity *process, CTRL_Unwind *base_unwind); +internal D_Unwind d_unwind_from_ctrl_unwind(Arena *arena, DI_Scope *di_scope, CTRL_Entity *process, CTRL_Unwind *base_unwind); //////////////////////////////// //~ rjf: Target Controls @@ -1378,7 +1382,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, D_Entity *run_thread, CTRL_RunFlags flags, CTRL_TrapList *run_traps); +internal void d_ctrl_run(D_RunKind run, CTRL_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); @@ -1387,8 +1391,8 @@ internal CTRL_Event d_ctrl_last_stop_event(void); //~ rjf: Evaluation Spaces //- rjf: entity <-> eval space -internal D_Entity *d_entity_from_eval_space(E_Space space); -internal E_Space d_eval_space_from_entity(D_Entity *entity); +internal CTRL_Entity *d_entity_from_eval_space(E_Space space); +internal E_Space d_eval_space_from_entity(CTRL_Entity *entity); //- rjf: eval space reads/writes internal B32 d_eval_space_read(void *u, E_Space space, void *out, Rng1U64 range); @@ -1504,6 +1508,14 @@ 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); @@ -1521,7 +1533,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_core(Arena *arena, String8 root_path, D_CfgSrc source); +internal String8List d_cfg_strings_from_state(Arena *arena, String8 root_path, D_CfgSrc source); internal void d_cfg_push_write_string(D_CfgSrc src, String8 string); //- rjf: current path @@ -1538,10 +1550,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(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 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 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 09df3a1e..bb0f2f17 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), 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, 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, 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[71] = +String8 d_msg_kind_name_lower_table[69] = { str8_lit_comp("null"), str8_lit_comp("launch_and_run"), @@ -84,8 +84,6 @@ 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"), @@ -112,7 +110,7 @@ str8_lit_comp("register_as_jit_debugger"), str8_lit_comp("log_marker"), }; -String8 d_msg_kind_name_display_table[71] = +String8 d_msg_kind_name_display_table[69] = { str8_lit_comp("null"), str8_lit_comp("launch_and_run"), @@ -159,8 +157,6 @@ 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"), @@ -215,7 +211,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[31] = +String8 d_entity_kind_display_string_table[28] = { str8_lit_comp("Nil"), str8_lit_comp("Root"), @@ -234,9 +230,6 @@ 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"), @@ -250,7 +243,7 @@ str8_lit_comp("Conversion Failure"), str8_lit_comp("EndedProcess"), }; -String8 d_entity_kind_name_lower_table[31] = +String8 d_entity_kind_name_lower_table[28] = { str8_lit_comp("nil"), str8_lit_comp("root"), @@ -269,9 +262,6 @@ 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"), @@ -285,7 +275,7 @@ str8_lit_comp("conversion_fail"), str8_lit_comp("ended_process"), }; -String8 d_entity_kind_name_lower_plural_table[31] = +String8 d_entity_kind_name_lower_plural_table[28] = { str8_lit_comp("nils"), str8_lit_comp("roots"), @@ -304,9 +294,6 @@ 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"), @@ -320,7 +307,7 @@ str8_lit_comp("conversion_fails"), str8_lit_comp("ended_processes"), }; -String8 d_entity_kind_name_label_table[31] = +String8 d_entity_kind_name_label_table[28] = { str8_lit_comp("Label"), str8_lit_comp("Label"), @@ -339,9 +326,6 @@ 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"), @@ -355,7 +339,7 @@ str8_lit_comp("Label"), str8_lit_comp("Label"), }; -D_EntityKindFlags d_entity_kind_flags_table[31] = +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) | (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), @@ -374,9 +358,6 @@ 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) | (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 88729ff7..bb7509b9 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_Machine, -D_RegSlot_Module, -D_RegSlot_Process, -D_RegSlot_Thread, +D_RegSlot_MachineID, +D_RegSlot_process, +D_RegSlot_module, +D_RegSlot_thread, D_RegSlot_Window, D_RegSlot_Panel, D_RegSlot_View, @@ -87,8 +87,6 @@ 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, @@ -144,9 +142,6 @@ 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, @@ -445,10 +440,10 @@ D_CmdParamSlot_COUNT, typedef struct D_Regs D_Regs; struct D_Regs { -D_Handle machine; -D_Handle module; -D_Handle process; -D_Handle thread; +CTRL_MachineID machine_id; +DMN_Handle process; +DMN_Handle module; +DMN_Handle thread; D_Handle window; D_Handle panel; D_Handle view; @@ -504,9 +499,9 @@ U64 inline_depth; }; #define d_regs_lit_init_top \ -.machine = d_regs()->machine,\ -.module = d_regs()->module,\ +.machine_id = d_regs()->machine_id,\ .process = d_regs()->process,\ +.module = d_regs()->module,\ .thread = d_regs()->thread,\ .window = d_regs()->window,\ .panel = d_regs()->panel,\ @@ -573,14 +568,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[71]; -extern String8 d_msg_kind_name_display_table[71]; +extern String8 d_msg_kind_name_lower_table[69]; +extern String8 d_msg_kind_name_display_table[69]; extern Rng1U64 d_cmd_param_slot_range_table[24]; -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_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_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 e2a5876e..2fe89236 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 - {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 ""} + {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 ""} //- rjf: windows {OpenWindow open_window 0 0 Null Nil 0 0 0 0 0 0 Null ""} @@ -111,6 +111,55 @@ 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: @@ -119,19 +168,14 @@ 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.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.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)}}` } @data(DF_MsgKindInfo) df_d_msg_kind_info_table: { - @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)}}` + @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)}}` } //////////////////////////////// diff --git a/src/dbg_frontend/dbg_frontend_core.c b/src/dbg_frontend/dbg_frontend_core.c index 162be491..58230d22 100644 --- a/src/dbg_frontend/dbg_frontend_core.c +++ b/src/dbg_frontend/dbg_frontend_core.c @@ -441,6 +441,7 @@ 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) { @@ -483,6 +484,8 @@ 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) { @@ -1123,6 +1126,7 @@ 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) @@ -1140,6 +1144,7 @@ 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 @@ -2055,22 +2060,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"))) { - D_Entity *thread = d_entity_from_handle(d_regs()->thread); + CTRL_Entity *thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, d_regs()->machine_id, 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) { - 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)) + 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) { - new_rip_vaddr = d_vaddr_from_voff(module, n->v.voff_range.min); + new_rip_vaddr = ctrl_vaddr_from_voff(module, n->v.voff_range.min); break; } } } - d_cmd(D_CmdKind_SetThreadIP, .entity = d_handle_from_entity(thread), .vaddr = new_rip_vaddr); + d_msg(D_MsgKind_SetThreadIP, .vaddr_range = r1u64(new_rip_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"))) @@ -2078,10 +2083,12 @@ 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(); } @@ -2101,6 +2108,7 @@ 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"))) @@ -2141,19 +2149,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"))) { - D_Entity *thread = d_entity_from_handle(d_regs()->thread); + CTRL_Entity *thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, d_regs()->machine_id, d_regs()->thread); U64 vaddr = 0; for(D_LineNode *n = lines.first; n != 0; n = n->next) { - 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)) + 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) { - vaddr = d_vaddr_from_voff(module, n->v.voff_range.min); + vaddr = ctrl_vaddr_from_voff(module, n->v.voff_range.min); break; } } - d_cmd(D_CmdKind_FindCodeLocation, .entity = d_handle_from_entity(thread), .vaddr = vaddr); + df_msg(DF_MsgKind_FindCodeLocation, .vaddr_range = r1u64(vaddr, vaddr)); ui_ctx_menu_close(); } hs_scope_close(hs_scope); @@ -2161,6 +2169,7 @@ 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) @@ -2333,7 +2342,9 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds) // rjf: freezing if(kind_flags & D_EntityKindFlag_CanFreeze) { - B32 is_frozen = d_entity_is_frozen(entity); + // TODO(rjf): @msgs +#if 0 + 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"))) { @@ -2343,6 +2354,7 @@ 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 @@ -2589,6 +2601,7 @@ 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)) @@ -2796,12 +2809,12 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds) Temp scratch = scratch_begin(&arena, 1); //- rjf: unpack lister params - D_Entity *thread = d_entity_from_handle(d_base_regs()->thread); + CTRL_Entity *thread = d_regs_thread(); U64 thread_rip_vaddr = d_query_cached_rip_from_thread_unwind(thread, d_base_regs()->unwind_count); - 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); + 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); //- rjf: gather lister items DF_AutoCompListerItemChunkList item_list = {0}; @@ -2842,7 +2855,8 @@ 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) { - Arch arch = d_arch_from_entity(thread); + CTRL_Entity *thread = d_regs_thread(); + Arch arch = thread->arch; 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); @@ -4239,12 +4253,30 @@ 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); @@ -4252,6 +4284,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds) { d_error(error); } +#endif scratch_end(scratch); } @@ -4333,9 +4366,6 @@ 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}; @@ -4353,7 +4383,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); - D_Entity *entity = d_entity_from_eval_space(eval.space); + CTRL_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); @@ -4460,13 +4490,13 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds) default:{}break; case E_Mode_Offset: { - D_Entity *space_entity = d_entity_from_eval_space(row_eval.space); - if(space_entity->kind == D_EntityKind_Process) + CTRL_Entity *space_entity = d_entity_from_eval_space(row_eval.space); + if(space_entity->kind == CTRL_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->ctrl_machine_id, space_entity->ctrl_handle, vaddr_rng, 0); + CTRL_ProcessMemorySlice slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, space_entity->machine_id, space_entity->handle, vaddr_rng, 0); for(U64 idx = 0; idx < (slice.data.size+63)/64; idx += 1) { if(slice.byte_changed_flags[idx] != 0) @@ -6460,8 +6490,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); - D_Entity *thread = d_entity_from_handle(d_regs()->thread); - D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); + CTRL_Entity *thread = d_regs_thread(); + CTRL_Entity *process = ctrl_entity_ancestor_from_kind(thread, CTRL_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 @@ -7045,23 +7075,6 @@ 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) { @@ -7308,7 +7321,7 @@ df_qsort_compare__cfg_string_bindings(DF_StringBindingPair *a, DF_StringBindingP } internal String8List -df_cfg_strings_from_gfx(Arena *arena, String8 root_path, D_CfgSrc source) +df_cfg_strings_from_state(Arena *arena, String8 root_path, D_CfgSrc source) { ProfBeginFunction(); String8List strs = {0}; @@ -7818,7 +7831,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_name_lower_table[k], 0)) + if(str8_match(string, df_msg_kind_info_table[k].name_lower, 0)) { result = k; break; @@ -7827,6 +7840,75 @@ 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) { @@ -7848,15 +7930,21 @@ df_msg_(DF_MsgKind kind, D_Regs *regs) #endif internal void -df_init(D_StateDeltaHistory *hist) +df_init(void) { ProfBeginFunction(); Arena *arena = arena_alloc(); df_state = push_array(arena, DF_State, 1); df_state->arena = arena; - df_state->msgs_arena = arena_alloc(); df_state->num_frames_requested = 2; - df_state->hist = hist; + 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->key_map_arena = arena_alloc(); df_state->confirm_arena = arena_alloc(); df_state->view_spec_table_size = 256; @@ -7978,15 +8066,6 @@ 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 // @@ -8094,7 +8173,7 @@ df_frame(void) } ////////////////////////////// - //- rjf: consume events + //- rjf: consume OS events // { for(OS_Event *event = events.first, *next = 0; @@ -8103,110 +8182,140 @@ df_frame(void) { next = event->next; DF_Window *window = df_window_from_os_handle(event->window); - 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) + D_RegsScope { - 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) + df_regs_set_window(window); + B32 take = 0; + + //- rjf: try window close + if(!take && event->kind == OS_EventKind_WindowClose && window != 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; + d_msg(DF_MsgKind_CloseWindow); } - if(!take && event->kind == OS_EventKind_Release && event->key == OS_Key_Alt && event->flags == 0 && event->is_repeat == 0) + + //- rjf: try menu bar operations { - 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) + if(!take && event->kind == OS_EventKind_Press && event->key == OS_Key_Alt && event->flags == 0 && event->is_repeat == 0) { - params.cmd_spec = spec; + 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; } - U32 hit_char = os_codepoint_from_event_flags_and_key(event->flags, event->key); + 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(); + } + + //- 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); + df_msg(DF_MsgKind_InsertText, .string = insertion8); + df_request_frame(); take = 1; - d_push_cmd(run_spec, ¶ms); if(event->flags & OS_EventFlag_Alt) { window->menu_bar_focus_press_started = 0; } } - else if(OS_Key_F1 <= event->key && event->key <= OS_Key_F19) + + //- rjf: do fall-through + if(!take) { - window->menu_bar_focus_press_started = 0; + take = 1; + // TODO(rjf): @msgs - need some way to pass down the OS event + // df_msg(DF_MsgKind_OSEvent); } - 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) + + //- rjf: take + if(take) { - window->menu_bar_focus_press_started = 0; + os_eat_event(&events, event); } } - - //- 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); - } } } @@ -8321,6 +8430,7 @@ 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; @@ -8328,7 +8438,7 @@ df_frame(void) //- rjf: meta case DF_MsgKind_Exit: { - D_EntityList running_processes = d_query_cached_entity_list_with_kind(D_EntityKind_Process); + CTRL_EntityList running_processes = ctrl_entity_list_from_kind(d_state->ctrl_entity_store, CTRL_EntityKind_Process); // NOTE(rjf): if targets are running, push confirmation first, and // get user's OK @@ -8352,8 +8462,8 @@ df_frame(void) // then save & exit else { - df_msg(DF_MsgKind_WriteUserData); - df_msg(DF_MsgKind_WriteProjectData); + df_msg(DF_MsgKind_SaveUser); + df_msg(DF_MsgKind_SaveProject); df_state->quit = 1; } }break; @@ -8361,35 +8471,27 @@ 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); - DF_MsgKindInfo *info = 0; - if(d_kind != D_MsgKind_Null) + 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) { - info = &df_d_msg_kind_info_table[d_kind]; - } - if(df_kind != DF_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) { - 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; - } + // 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) + } + else + { + if(d_kind != D_MsgKind_Null) { d_msg(d_kind); } - else if(df_kind != DF_MsgKind_Null) + if(df_kind != DF_MsgKind_Null) { df_msg(df_kind); } @@ -8401,31 +8503,33 @@ df_frame(void) window->dev_menu_is_open ^= 1; }break; - //- rjf: config reading/writing - case DF_MsgKind_ApplyUserData: - case DF_MsgKind_ApplyProjectData: + //- 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:; { - // TODO(rjf) + 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]); + } }break; - case DF_MsgKind_WriteUserData: - case DF_MsgKind_WriteProjectData: + 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:; { - // TODO(rjf) + // TODO(rjf): @msgs }break; //- rjf: windows case DF_MsgKind_OpenWindow: { - 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); - } + // TODO(rjf): @msgs }break; case DF_MsgKind_CloseWindow: { @@ -8458,8 +8562,14 @@ df_frame(void) }break; //- rjf: queries - case DF_MsgKind_CompleteQuery:{}break; - case DF_MsgKind_CancelQuery:{}break; + case DF_MsgKind_CompleteQuery: + { + // TODO(rjf): @msgs + }break; + case DF_MsgKind_CancelQuery: + { + // TODO(rjf): @msgs + }break; //- rjf: searching case DF_MsgKind_FindTextForward: @@ -9404,7 +9514,7 @@ df_frame(void) for(DF_Window *ws = df_state->first_window; ws != 0; ws = ws->next) { DI_Scope *scope = di_scope_open(); - D_Entity *thread = d_entity_from_handle(regs->entity); + CTRL_Entity *thread = d_regs_thread(); U64 unwind_index = regs->unwind_count; U64 inline_depth = regs->inline_depth; if(thread->kind == D_EntityKind_Thread) @@ -9413,11 +9523,11 @@ df_frame(void) U64 rip_vaddr = d_query_cached_rip_from_thread_unwind(thread, unwind_index); // rjf: extract thread/rip info - 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); + 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); RDI_Parsed *rdi = di_rdi_from_key(scope, &dbgi_key, 0); - U64 rip_voff = d_voff_from_vaddr(module, rip_vaddr); + U64 rip_voff = ctrl_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}; { @@ -9433,12 +9543,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 = !d_entity_is_nil(module); - B32 has_dbg_info = has_module && !dbgi_missing; + B32 has_module = (module != &ctrl_entity_nil); + B32 has_dbg_info = has_module && !dbgi_missing; if(!dbgi_pending && (has_line_info || has_module)) { df_msg(DF_MsgKind_FindCodeLocation, @@ -9525,27 +9635,27 @@ df_frame(void) // rjf: grab things to find. path * point, process * address, etc. String8 file_path = {0}; TxtPt point = {0}; - D_Entity *thread = &d_nil_entity; - D_Entity *process = &d_nil_entity; + CTRL_Entity *thread = &ctrl_entity_nil; + CTRL_Entity *process = &ctrl_entity_nil; U64 vaddr = 0; { file_path = regs->file_path; point = regs->cursor; - thread = d_entity_from_handle(d_regs()->thread); - process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); + thread = d_regs_thread(); + process = ctrl_entity_ancestor_from_kind(thread, CTRL_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 && !d_entity_is_nil(process)) + if(vaddr == 0 && file_path.size != 0 && process != &ctrl_entity_nil) { 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) { - 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); + 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); break; } } @@ -9725,7 +9835,7 @@ df_frame(void) } // rjf: given the above, find disassembly location. - if(!d_entity_is_nil(process) && vaddr != 0) + if(process != &ctrl_entity_nil && 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. @@ -9765,7 +9875,8 @@ df_frame(void) df_msg(DF_MsgKind_GoToAddress, .panel = df_handle_from_panel(dst_panel), .view = df_handle_from_view(dst_view), - .process = d_handle_from_entity(process), + .machine_id = process->machine_id, + .process = process->handle, .vaddr_range = r1u64(vaddr, vaddr)); df_msg(cursor_snap_kind); } @@ -9781,6 +9892,7 @@ 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}; @@ -10389,11 +10501,12 @@ df_frame(void) spec = d_cmd_spec_from_string(new_name); } } + if(!d_cmd_spec_is_nil(spec)) { cmd_spec = spec; } - OS_Key k = df_os_key_from_cfg_string(child->string); + OS_Key k = os_key_from_string(child->string); if(k != OS_Key_Null) { key = k; @@ -10643,7 +10756,7 @@ df_frame(void) { cfg_write_done[src] = 1; String8 path = d_cfg_path_from_src(src); - String8List strs = df_cfg_strings_from_gfx(scratch.arena, path, src); + String8List strs = df_cfg_strings_from_state(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); @@ -11688,14 +11801,19 @@ 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) { - 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)); + // 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 }break; //- rjf: name finding @@ -11926,6 +12044,7 @@ 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 @@ -12212,6 +12331,7 @@ df_frame(void) d_cmd_list_push(scratch.arena, &cmds, ¶ms, d_cmd_spec_from_kind(cursor_snap_kind)); } } +#endif }break; //- rjf: filtering @@ -12315,6 +12435,7 @@ 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 b5447338..8b23fa4c 100644 --- a/src/dbg_frontend/dbg_frontend_core.h +++ b/src/dbg_frontend/dbg_frontend_core.h @@ -4,6 +4,18 @@ #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 @@ -392,6 +404,7 @@ enum typedef struct DF_MsgKindInfo DF_MsgKindInfo; struct DF_MsgKindInfo { + String8 name_lower; String8 display_name; String8 description; String8 search_tags; @@ -594,6 +607,11 @@ 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]; @@ -648,15 +666,25 @@ struct DF_State Arena *arena; B32 quit; - // rjf: messages - Arena *msgs_arena; - DF_MsgList msgs; + // rjf: icon texture + R_Handle icon_texture; + + // rjf: frame time history + U64 frame_time_us_history[64]; + U64 frame_time_us_history_idx; // rjf: frame request state U64 num_frames_requested; - // rjf: history cache - D_StateDeltaHistory *hist; + // 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: key map table Arena *key_map_arena; @@ -735,13 +763,6 @@ 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; }; //////////////////////////////// @@ -846,9 +867,11 @@ 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); //////////////////////////////// @@ -955,7 +978,6 @@ 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); @@ -980,7 +1002,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_gfx(Arena *arena, String8 root_path, D_CfgSrc source); +internal String8List df_cfg_strings_from_state(Arena *arena, String8 root_path, D_CfgSrc source); //////////////////////////////// //~ rjf: Process Control Info Stringification @@ -996,7 +1018,14 @@ 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)\ @@ -1008,7 +1037,7 @@ __VA_ARGS__\ //////////////////////////////// //~ rjf: Main Layer Top-Level Calls -internal void df_init(D_StateDeltaHistory *hist); +internal void df_init(void); 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 689ce13f..d677920d 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; - D_Entity *thread = d_entity_from_handle(d_regs()->thread); - D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); + CTRL_Entity *thread = d_regs_thread(); + CTRL_Entity *process = ctrl_entity_ancestor_from_kind(thread, CTRL_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, D_EntityList, visible_line_count); + code_slice_params.line_ips = push_array(scratch.arena, CTRL_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; - 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 *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 *thread = thread_n->entity; - D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); + CTRL_Entity *thread = thread_n->v; + CTRL_Entity *process = ctrl_entity_ancestor_from_kind(thread, CTRL_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; - 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); + 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_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; - d_entity_list_push(scratch.arena, &code_slice_params.line_ips[slice_line_idx], thread); + ctrl_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") { - 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 *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 *thread = thread_n->entity; + CTRL_Entity *thread = thread_n->v; 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(d_entity_ancestor_from_kind(thread, D_EntityKind_Process) == process && contains_1u64(dasm_vaddr_range, rip_vaddr)) + if(ctrl_entity_ancestor_from_kind(thread, CTRL_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); - d_entity_list_push(scratch.arena, &code_slice_params.line_ips[slice_line_idx], thread); + ctrl_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) { - D_Entity *module = d_module_from_process_vaddr(process, dasm_vaddr_range.min); - DI_Key dbgi_key = d_dbgi_key_from_module(module); + CTRL_Entity *module = ctrl_module_from_process_vaddr(process, dasm_vaddr_range.min); + DI_Key dbgi_key = ctrl_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 = d_voff_from_vaddr(module, vaddr); + U64 voff = ctrl_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); - 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); + 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); }break; case DF_WatchViewColumnKind_Member: { @@ -946,13 +946,6 @@ 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); @@ -1052,6 +1045,7 @@ 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) { @@ -1083,6 +1077,7 @@ 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; //////////////////////////// @@ -1091,6 +1086,7 @@ 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) { @@ -1118,6 +1114,7 @@ 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; //////////////////////////// @@ -1125,6 +1122,13 @@ 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); @@ -1197,8 +1201,8 @@ df_watch_view_build(DF_View *view, DF_WatchViewState *ewv, B32 modifiable, U32 d // case DF_WatchViewFillKind_Registers: { - D_Entity *thread = d_entity_from_handle(d_regs()->thread); - Arch arch = d_arch_from_entity(thread); + CTRL_Entity *thread = d_regs_thread(); + Arch arch = thread->arch; 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); @@ -1627,9 +1631,10 @@ 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; - 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); + 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_LineList lines = d_lines_from_dbgi_key_voff(scratch.arena, &dbgi_key, voff); String8 file_path = {0}; TxtPt pt = {0}; @@ -1638,18 +1643,16 @@ 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; } - d_cmd(D_CmdKind_FindCodeLocation, - .entity = d_handle_from_entity(process), - .vaddr = vaddr, - .file_path = file_path, - .text_point= pt); + df_msg(DF_MsgKind_FindCodeLocation, + .vaddr_range = r1u64(vaddr, vaddr), + .file_path = file_path, + .cursor = 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_cmd(D_CmdKind_SelectUnwind, - .entity = d_regs()->thread, - .unwind_index = frame_row->unwind_idx, + d_msg(D_MsgKind_SelectUnwind, + .unwind_count = frame_row->unwind_idx, .inline_depth = frame_row->inline_depth); } } @@ -2198,13 +2201,13 @@ df_watch_view_build(DF_View *view, DF_WatchViewState *ewv, B32 modifiable, U32 d default:{}break; case E_Mode_Offset: { - D_Entity *space_entity = d_entity_from_eval_space(row_eval.space); - if(space_entity->kind == D_EntityKind_Process) + CTRL_Entity *space_entity = d_entity_from_eval_space(row_eval.space); + if(space_entity->kind == CTRL_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->ctrl_machine_id, space_entity->ctrl_handle, vaddr_rng, 0); + CTRL_ProcessMemorySlice slice = ctrl_query_cached_data_from_process_vaddr_range(scratch.arena, space_entity->machine_id, space_entity->handle, vaddr_rng, 0); for(U64 idx = 0; idx < (slice.data.size+63)/64; idx += 1) { if(slice.byte_changed_flags[idx] != 0) @@ -2490,8 +2493,12 @@ 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; - cell_base_color = d_rgba_from_entity(d_entity_from_handle(d_regs()->thread)); + if(thread->rgba_u32 != 0) + { + cell_base_color = rgba_from_u32(thread->rgba_u32); + } } }break; } @@ -2624,9 +2631,10 @@ 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; - 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); + 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_LineList lines = d_lines_from_dbgi_key_voff(scratch.arena, &dbgi_key, voff); String8 file_path = {0}; TxtPt pt = {0}; @@ -2635,20 +2643,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; } - d_cmd(D_CmdKind_FindCodeLocation, - .entity = d_handle_from_entity(process), - .vaddr = vaddr, - .file_path = file_path, - .text_point = pt); + df_msg(DF_MsgKind_FindCodeLocation, + .vaddr_range = r1u64(vaddr, vaddr), + .file_path = file_path, + .cursor = 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_cmd(D_CmdKind_SelectUnwind, - .entity = d_regs()->thread, - .unwind_index = frame_row->unwind_idx, + d_msg(D_MsgKind_SelectUnwind, + .unwind_count = frame_row->unwind_idx, .inline_depth = frame_row->inline_depth); } @@ -5500,6 +5506,7 @@ 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; @@ -5713,6 +5720,7 @@ DF_VIEW_UI_FUNCTION_DEF(scheduler) scratch_end(scratch); ProfEnd(); +#endif } //////////////////////////////// @@ -6660,12 +6668,12 @@ DF_VIEW_CMD_FUNCTION_DEF(disasm) E_Space space = eval.space; if(auto_selected_thread) { - space = d_eval_space_from_entity(d_entity_from_handle(d_regs()->process)); + space = d_eval_space_from_entity(d_regs_process()); } Rng1U64 range = d_range_from_eval_params(eval, params); Arch arch = d_arch_from_eval_params(eval, params); - D_Entity *space_entity = d_entity_from_eval_space(space); - D_Entity *dasm_module = &d_nil_entity; + CTRL_Entity *space_entity = d_entity_from_eval_space(space); + CTRL_Entity *dasm_module = &ctrl_entity_nil; DI_Key dbgi_key = {0}; U64 base_vaddr = 0; switch(space_entity->kind) @@ -6673,10 +6681,10 @@ DF_VIEW_CMD_FUNCTION_DEF(disasm) default:{}break; case D_EntityKind_Process: { - 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; + 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; }break; } U128 dasm_key = d_key_from_eval_space_range(space, range, 0); @@ -6792,23 +6800,23 @@ DF_VIEW_UI_FUNCTION_DEF(disasm) E_Space space = eval.space; if(auto_selected_thread) { - space = d_eval_space_from_entity(d_entity_from_handle(d_regs()->process)); + space = d_eval_space_from_entity(d_regs_process()); } Rng1U64 range = d_range_from_eval_params(eval, params); Arch arch = d_arch_from_eval_params(eval, params); - D_Entity *space_entity = d_entity_from_eval_space(space); - D_Entity *dasm_module = &d_nil_entity; + CTRL_Entity *space_entity = d_entity_from_eval_space(space); + CTRL_Entity *dasm_module = &ctrl_entity_nil; DI_Key dbgi_key = {0}; U64 base_vaddr = 0; switch(space_entity->kind) { default:{}break; - case D_EntityKind_Process: + case CTRL_EntityKind_Process: { - 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; + 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; }break; } U128 dasm_key = d_key_from_eval_space_range(space, range, 0); @@ -6866,8 +6874,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 = 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); + 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); } ////////////////////////////// @@ -6884,7 +6892,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(!d_entity_is_nil(dasm_module)) + if(dasm_module != &ctrl_entity_nil) { ui_labelf("%S", path_normalized_from_string(scratch.arena, dasm_module->string)); ui_spacer(ui_em(1.5f, 1)); @@ -7064,7 +7072,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_entity_from_handle(d_regs()->process)); + eval.space = d_eval_space_from_entity(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; @@ -7286,8 +7294,8 @@ DF_VIEW_UI_FUNCTION_DEF(memory) }; AnnotationList *visible_memory_annotations = push_array(scratch.arena, AnnotationList, visible_memory_size); { - D_Entity *thread = d_entity_from_handle(d_regs()->thread); - D_Entity *process = d_entity_ancestor_from_kind(thread, D_EntityKind_Process); + 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); CTRL_Unwind unwind = d_query_cached_unwind_from_thread(thread); //- rjf: fill unwind frame annotations @@ -7304,9 +7312,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); - 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); + 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); 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]"); @@ -7332,9 +7340,13 @@ 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 = d_display_string_from_entity(scratch.arena, thread); + annotation->name_string = thread->string; + if(annotation->name_string.size == 0) + { + annotation->name_string = push_str8f(scratch.arena, "TID: %I64u", thread->id); + } annotation->kind_string = str8_lit("Stack"); - annotation->color = thread->flags & D_EntityFlag_HasColor ? d_rgba_from_entity(thread) : df_rgba_from_theme_color(DF_ThemeColor_Text); + annotation->color = thread->rgba_u32 != 0 ? rgba_from_u32(thread->rgba_u32) : 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 5e97b9a8..69b0805d 100644 --- a/src/dbg_frontend/dbg_frontend_widgets.c +++ b/src/dbg_frontend/dbg_frontend_widgets.c @@ -415,6 +415,7 @@ 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) { @@ -576,11 +577,140 @@ 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(); @@ -760,6 +890,7 @@ df_entity_desc_button(D_Entity *entity, FuzzyMatchRangeList *name_matches, Strin scratch_end(scratch); ProfEnd(); return sig; +#endif } internal void @@ -947,12 +1078,12 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe DF_CodeSliceSignal result = {0}; ProfBeginFunction(); Temp scratch = scratch_begin(0, 0); - 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); + CTRL_Entity *selected_thread = d_regs_thread(); + CTRL_Entity *selected_thread_process = ctrl_entity_ancestor_from_kind(selected_thread, CTRL_EntityKind_Process); U64 selected_thread_rip_unwind_vaddr = d_query_cached_rip_from_thread_unwind(selected_thread, d_regs()->unwind_count); - D_Entity *selected_thread_module = d_module_from_process_vaddr(selected_thread_process, selected_thread_rip_unwind_vaddr); + CTRL_Entity *selected_thread_module = ctrl_module_from_process_vaddr(selected_thread_process, selected_thread_rip_unwind_vaddr); CTRL_Event stop_event = d_ctrl_last_stop_event(); - D_Entity *stopper_thread = d_entity_from_ctrl_handle(stop_event.machine_id, stop_event.entity); + CTRL_Entity *stopper_thread = ctrl_entity_from_machine_id_handle(d_state->ctrl_entity_store, 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[] = @@ -998,10 +1129,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) { - D_EntityList threads = params->line_ips[line_idx]; - for(D_EntityNode *n = threads.first; n != 0; n = n->next) + CTRL_EntityList threads = params->line_ips[line_idx]; + for(CTRL_EntityNode *n = threads.first; n != 0; n = n->next) { - if(n->entity == stopper_thread && (stop_event.cause == CTRL_EventCause_InterruptedByTrap || stop_event.cause == CTRL_EventCause_InterruptedByException)) + if(n->v == 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); } @@ -1033,26 +1164,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) { - D_EntityList line_ips = params->line_ips[line_idx]; + CTRL_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(D_EntityNode *n = line_ips.first; n != 0; n = n->next) + for(CTRL_EntityNode *n = line_ips.first; n != 0; n = n->next) { // rjf: unpack thread - D_Entity *thread = n->entity; + CTRL_Entity *thread = n->v; 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); - 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); + 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); // rjf: thread info => color Vec4F32 color = v4f32(1, 1, 1, 1); @@ -1068,9 +1199,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->flags & D_EntityFlag_HasColor) + else if(thread->rgba_u32 != 0) { - color = d_rgba_from_entity(thread); + color = rgba_from_u32(thread->rgba_u32); } if(d_ctrl_targets_running() && d_ctrl_last_run_frame_idx() < d_frame_index()) { @@ -1103,11 +1234,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 = 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; + 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; 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 @@ -1139,25 +1270,31 @@ 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_entity_tooltips(thread); + df_ctrl_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 } } } @@ -1189,7 +1326,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) { - D_EntityList line_ips = params->line_ips[line_idx]; + CTRL_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); @@ -1197,20 +1334,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(D_EntityNode *n = line_ips.first; n != 0; n = n->next) + for(CTRL_EntityNode *n = line_ips.first; n != 0; n = n->next) { // rjf: unpack thread - D_Entity *thread = n->entity; + CTRL_Entity *thread = n->v; 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); - 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); + 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); // rjf: thread info => color Vec4F32 color = v4f32(1, 1, 1, 1); @@ -1226,9 +1363,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->flags & D_EntityFlag_HasColor) + else if(thread->rgba_u32 != 0) { - color = d_rgba_from_entity(thread); + color = rgba_from_u32(thread->rgba_u32); } if(d_ctrl_targets_running() && d_ctrl_last_run_frame_idx() < d_frame_index()) { @@ -1261,9 +1398,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 = thread->alive_t; - u->is_selected = (thread == selected_thread); - u->is_frozen = d_entity_is_frozen(thread); + 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); 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 @@ -1295,32 +1432,38 @@ 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_entity_tooltips(thread); + df_ctrl_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_cmd(D_CmdKind_SelectThread, .entity = d_handle_from_entity(thread)); + d_msg(D_MsgKind_SelectThread, .machine_id = thread->machine_id, .thread = thread->handle); 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 } } @@ -1512,7 +1655,8 @@ 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 = selected_thread_module->alive_t; + F32 line_info_t = (os_now_microseconds() - selected_thread_module->alloc_time_us) / 500000.f; + line_info_t = ClampTop(1.f, line_info_t); D_LineList *lines = ¶ms->line_infos[line_idx]; for(D_LineNode *n = lines->first; n != 0; n = n->next) { @@ -1605,10 +1749,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) { - D_EntityList threads = params->line_ips[line_idx]; - for(D_EntityNode *n = threads.first; n != 0; n = n->next) + CTRL_EntityList threads = params->line_ips[line_idx]; + for(CTRL_EntityNode *n = threads.first; n != 0; n = n->next) { - D_Entity *thread = n->entity; + CTRL_Entity *thread = n->v; if(thread == stopper_thread && (stop_event.cause == CTRL_EventCause_InterruptedByException || stop_event.cause == CTRL_EventCause_InterruptedByTrap)) @@ -1958,6 +2102,8 @@ 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); @@ -1965,6 +2111,7 @@ 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 } } @@ -2146,7 +2293,7 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe { mapped_special = 1; new_color_kind = DF_ThemeColor_CodeSymbol; - mix_t = selected_thread_module->alive_t; + mix_t = ClampTop(1.f, (os_now_microseconds() - selected_thread_module->alloc_time_us) / 500000.f); } } if(!mapped_special && token->kind == TXT_TokenKind_Identifier) @@ -2156,7 +2303,7 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe { mapped_special = 1; new_color_kind = DF_ThemeColor_CodeType; - mix_t = selected_thread_module->alive_t; + mix_t = ClampTop(1.f, (os_now_microseconds() - selected_thread_module->alloc_time_us) / 500000.f); } } break; @@ -2168,7 +2315,7 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe { mapped_special = 1; new_color_kind = DF_ThemeColor_CodeLocal; - mix_t = selected_thread_module->alive_t; + mix_t = ClampTop(1.f, (os_now_microseconds() - selected_thread_module->alloc_time_us) / 500000.f); } } if(!mapped_special && token->kind == TXT_TokenKind_Identifier) @@ -2178,7 +2325,7 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe { mapped_special = 1; new_color_kind = DF_ThemeColor_CodeLocal; - mix_t = selected_thread_module->alive_t; + mix_t = ClampTop(1.f, (os_now_microseconds() - selected_thread_module->alloc_time_us) / 500000.f); } } if(!mapped_special) @@ -2188,7 +2335,7 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe { mapped_special = 1; new_color_kind = DF_ThemeColor_CodeRegister; - mix_t = selected_thread_module->alive_t; + mix_t = ClampTop(1.f, (os_now_microseconds() - selected_thread_module->alloc_time_us) / 500000.f); } } if(!mapped_special) @@ -2198,7 +2345,7 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe { mapped_special = 1; new_color_kind = DF_ThemeColor_CodeRegister; - mix_t = selected_thread_module->alive_t; + mix_t = ClampTop(1.f, (os_now_microseconds() - selected_thread_module->alloc_time_us) / 500000.f); } } } @@ -2725,8 +2872,8 @@ df_fancy_string_list_from_code_string(Arena *arena, F32 alpha, B32 indirection_s } else { - D_Entity *module = d_entity_from_handle(d_regs()->module); - DI_Key dbgi_key = d_dbgi_key_from_module(module); + CTRL_Entity *module = d_regs_module(); + DI_Key dbgi_key = ctrl_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 13798a58..f83af39c 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; - D_EntityList *line_ips; + CTRL_EntityList *line_ips; D_EntityList *line_pins; U64 *line_vaddrs; D_LineList *line_infos; @@ -91,6 +91,7 @@ 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 03942e10..4b10decf 100644 --- a/src/dbg_frontend/generated/dbg_frontend.meta.c +++ b/src/dbg_frontend/generated/dbg_frontend.meta.c @@ -4,215 +4,188 @@ //- GENERATED CODE C_LINKAGE_BEGIN -String8 df_msg_kind_name_lower_table[64] = +DF_MsgKindInfo df_msg_kind_info_table[107] = { -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"), +{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}}, }; -DF_MsgKindInfo df_msg_kind_info_table[64] = +DF_MsgKindInfo df_d_msg_kind_info_table[69] = { -{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}}, +{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}}, }; DF_StringBindingPair df_g_default_binding_table[110] = @@ -725,7 +698,7 @@ DF_IconKind_Null, DF_IconKind_Null, }; -DF_IconKind df_entity_kind_icon_kind_table[31] = +DF_IconKind df_entity_kind_icon_kind_table[28] = { DF_IconKind_Null, DF_IconKind_Null, @@ -744,9 +717,6 @@ 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 052763ad..32dc83d3 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_ApplyUserData, -DF_MsgKind_ApplyProjectData, -DF_MsgKind_WriteUserData, -DF_MsgKind_WriteProjectData, +DF_MsgKind_LoadUser, +DF_MsgKind_LoadProject, +DF_MsgKind_SaveUser, +DF_MsgKind_SaveProject, DF_MsgKind_OpenWindow, DF_MsgKind_CloseWindow, DF_MsgKind_ToggleFullscreen, @@ -72,6 +72,49 @@ 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; @@ -422,9 +465,8 @@ DF_VIEW_RULE_LINE_STRINGIZE_FUNCTION_DEF(no_addr); DF_VIEW_RULE_ROW_UI_FUNCTION_DEF(checkbox); DF_VIEW_RULE_ROW_UI_FUNCTION_DEF(color_rgba); C_LINKAGE_BEGIN -extern 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_MsgKindInfo df_msg_kind_info_table[107]; +extern DF_MsgKindInfo df_d_msg_kind_info_table[69]; 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]; @@ -432,7 +474,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[31]; +extern DF_IconKind df_entity_kind_icon_kind_table[28]; 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 899d8c30..1eb25047 100644 --- a/src/mdesk/mdesk.c +++ b/src/mdesk/mdesk.c @@ -211,6 +211,24 @@ 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 0362da35..286cc26b 100644 --- a/src/mdesk/mdesk.h +++ b/src/mdesk/mdesk.h @@ -263,6 +263,10 @@ 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 d006ab02..8876481f 100644 --- a/src/os/gfx/os_gfx.c +++ b/src/os/gfx/os_gfx.c @@ -45,6 +45,23 @@ 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 725bef19..5dc4bd3a 100644 --- a/src/os/gfx/os_gfx.h +++ b/src/os/gfx/os_gfx.h @@ -111,6 +111,7 @@ 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 eed4b873..ed3ba815 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(d_state_delta_history()); + df_init(); } //- rjf: setup initial target from command line args @@ -910,31 +910,34 @@ entry_point(CmdLine *cmd_line) break; } } - if(dst_window != 0) + if(dst_window != 0) D_RegsScope { + df_regs_set_window(dst_window); dst_window->window_temporarily_focused_ipc = 1; - 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)) + 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) { - 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(); - } + d_msg(d_kind); } - else + if(df_kind != DF_MsgKind_Null) { - d_errorf("\"%S\" is not a command.", cmd_spec_string); - df_request_frame(); + df_msg(df_kind); } + 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);