mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-13 07:32:23 -07:00
another checkpoint in big df entity elimination pass
This commit is contained in:
+1
-1
@@ -46,7 +46,7 @@ load_paths =
|
||||
commands =
|
||||
{
|
||||
//- rjf: fkey command slots (change locally but do not commit)
|
||||
.f1 = { .win = "build raddbg telemetry", .linux = "", .out = "*compilation*", .footer_panel = true, .save_dirty_files = true, .cursor_at_end = false, },
|
||||
.f1 = { .win = "build raddbg telemetry clang", .linux = "", .out = "*compilation*", .footer_panel = true, .save_dirty_files = true, .cursor_at_end = false, },
|
||||
.f2 = { .win = "build rdi_from_pdb", .linux = "", .out = "*compilation*", .footer_panel = true, .save_dirty_files = true, .cursor_at_end = false, },
|
||||
.f3 = { .win = "pushd build && raddbg.exe --user:local_dev.raddbg_user --project:local_dev.raddbg_project --auto_run && popd", .linux = "", .out = "*compilation*", .footer_panel = true, .save_dirty_files = true, .cursor_at_end = false, },
|
||||
|
||||
|
||||
@@ -245,6 +245,7 @@ internal String8 str8_from_s64(Arena *arena, S64 s64, U32 radix, U8 min_digits,
|
||||
//~ rjf: String <=> Float Conversions
|
||||
|
||||
internal F64 f64_from_str8(String8 string);
|
||||
#define f32_from_str8(string) (F32)f64_from_str8(string)
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: String List Construction Functions
|
||||
|
||||
@@ -91,9 +91,9 @@ D_RegTable:
|
||||
{
|
||||
// rjf: entity info
|
||||
{CTRL_MachineID machine_id MachineID }
|
||||
{DMN_Handle process process }
|
||||
{DMN_Handle module module }
|
||||
{DMN_Handle thread thread }
|
||||
{DMN_Handle process Process }
|
||||
{DMN_Handle module Module }
|
||||
{DMN_Handle thread Thread }
|
||||
{D_Handle window Window }
|
||||
{D_Handle panel Panel }
|
||||
{D_Handle view View }
|
||||
@@ -157,8 +157,6 @@ D_RegTable:
|
||||
@table(name name_display name_lower show_in_ui show_in_ipc_docs q_slot q_ent_kind q_allow_files q_allow_folders q_keep_oi q_select_oi q_is_code q_required canonical_icon desc)
|
||||
D_MsgKindTable:
|
||||
{
|
||||
{Null "" null 0 0 Null Nil 0 0 0 0 0 0 Null ""}
|
||||
|
||||
//- rjf: low level target operations
|
||||
{LaunchAndRun "Launch And Run" launch_and_run 0 0 Null Nil 0 0 0 0 0 0 Null ""}
|
||||
{LaunchAndStepInto "Launch And Step Into" launch_and_step_into 0 0 Null Nil 0 0 0 0 0 0 Null ""}
|
||||
@@ -207,17 +205,14 @@ D_MsgKindTable:
|
||||
|
||||
@enum D_MsgKind:
|
||||
{
|
||||
Null,
|
||||
@expand(D_MsgKindTable a) `$(a.name)`,
|
||||
COUNT
|
||||
}
|
||||
|
||||
@data(String8) d_msg_kind_name_lower_table:
|
||||
{
|
||||
@expand(D_MsgKindTable a) `str8_lit_comp("$(a.name_lower)")`
|
||||
}
|
||||
|
||||
@data(String8) d_msg_kind_name_display_table:
|
||||
{
|
||||
`{0}`,
|
||||
@expand(D_MsgKindTable a) `str8_lit_comp("$(a.name_lower)")`
|
||||
}
|
||||
|
||||
|
||||
@@ -117,16 +117,11 @@ internal void
|
||||
d_regs_copy_contents(Arena *arena, D_Regs *dst, D_Regs *src)
|
||||
{
|
||||
MemoryCopyStruct(dst, src);
|
||||
dst->entity_list = d_handle_list_copy(arena, src->entity_list);
|
||||
dst->file_path = push_str8_copy(arena, src->file_path);
|
||||
dst->lines = d_line_list_copy(arena, &src->lines);
|
||||
dst->dbgi_key = di_key_copy(arena, &src->dbgi_key);
|
||||
dst->string = push_str8_copy(arena, src->string);
|
||||
dst->params_tree = md_tree_copy(arena, src->params_tree);
|
||||
if(dst->entity_list.count == 0 && !d_handle_match(d_handle_zero(), dst->entity))
|
||||
{
|
||||
d_handle_list_push(arena, &dst->entity_list, dst->entity);
|
||||
}
|
||||
}
|
||||
|
||||
internal D_Regs *
|
||||
@@ -653,6 +648,7 @@ d_cmd_params_apply_spec_query(Arena *arena, D_CmdParams *params, D_CmdSpec *spec
|
||||
|
||||
//- rjf: command lists
|
||||
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
internal void
|
||||
d_cmd_list_push(Arena *arena, D_CmdList *cmds, D_CmdParams *params, D_CmdSpec *spec)
|
||||
{
|
||||
@@ -662,6 +658,7 @@ d_cmd_list_push(Arena *arena, D_CmdList *cmds, D_CmdParams *params, D_CmdSpec *s
|
||||
DLLPushBack(cmds->first, cmds->last, n);
|
||||
cmds->count += 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
//- rjf: string -> core layer command kind
|
||||
|
||||
@@ -3403,7 +3400,7 @@ d_ctrl_run(D_RunKind run, CTRL_Entity *run_thread, CTRL_RunFlags flags, CTRL_Tra
|
||||
CTRL_Msg msg = {(run == D_RunKind_Run || run == D_RunKind_Step) ? CTRL_MsgKind_Run : CTRL_MsgKind_SingleStep};
|
||||
{
|
||||
D_EntityList user_bps = d_query_cached_entity_list_with_kind(D_EntityKind_Breakpoint);
|
||||
CTRL_Entity *process = ctrl_entity_ancestor_from_kind(run_thread, D_EntityKind_Process);
|
||||
CTRL_Entity *process = ctrl_entity_ancestor_from_kind(run_thread, CTRL_EntityKind_Process);
|
||||
msg.run_flags = flags;
|
||||
msg.machine_id = run_thread->machine_id;
|
||||
msg.entity = run_thread->handle;
|
||||
@@ -3558,6 +3555,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
|
||||
default:{}break;
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
default:
|
||||
{
|
||||
@@ -3597,7 +3595,7 @@ d_eval_space_read(void *u, E_Space space, void *out, Rng1U64 range)
|
||||
}break;
|
||||
|
||||
//- rjf: thread -> reading from thread register block
|
||||
case D_EntityKind_Thread:
|
||||
case CTRL_EntityKind_Thread:
|
||||
{
|
||||
Temp scratch = scratch_begin(0, 0);
|
||||
CTRL_Unwind unwind = d_query_cached_unwind_from_thread(entity);
|
||||
@@ -3626,7 +3624,8 @@ d_eval_space_write(void *u, E_Space space, void *in, Rng1U64 range)
|
||||
switch(entity->kind)
|
||||
{
|
||||
//- rjf: default -> making commits to entity evaluation
|
||||
#if 0
|
||||
default:{}break;
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
default:
|
||||
{
|
||||
Temp scratch = scratch_begin(0, 0);
|
||||
@@ -3701,14 +3700,16 @@ d_key_from_eval_space_range(E_Space space, Rng1U64 range, B32 zero_terminated)
|
||||
CTRL_Entity *entity = d_entity_from_eval_space(space);
|
||||
switch(entity->kind)
|
||||
{
|
||||
default:{}break;
|
||||
|
||||
//- rjf: nil space -> filesystem key encoded inside of `space`
|
||||
case D_EntityKind_Nil:
|
||||
case CTRL_EntityKind_Null:
|
||||
{
|
||||
result = space;
|
||||
}break;
|
||||
|
||||
//- rjf: process space -> query
|
||||
case D_EntityKind_Process:
|
||||
case CTRL_EntityKind_Process:
|
||||
{
|
||||
result = ctrl_hash_store_key_from_process_vaddr_range(entity->machine_id, entity->handle, range, zero_terminated);
|
||||
}break;
|
||||
@@ -3725,6 +3726,8 @@ d_whole_range_from_eval_space(E_Space space)
|
||||
CTRL_Entity *entity = d_entity_from_eval_space(space);
|
||||
switch(entity->kind)
|
||||
{
|
||||
default:{}break;
|
||||
|
||||
//- rjf: nil space -> filesystem key encoded inside of `space`
|
||||
case CTRL_EntityKind_Null:
|
||||
{
|
||||
@@ -3742,6 +3745,8 @@ d_whole_range_from_eval_space(E_Space space)
|
||||
result = r1u64(0, data.size);
|
||||
hs_scope_close(scope);
|
||||
}break;
|
||||
|
||||
//- rjf: process -> process address space
|
||||
case CTRL_EntityKind_Process:
|
||||
{
|
||||
result = r1u64(0, 0x7FFFFFFFFFFFull);
|
||||
@@ -5428,7 +5433,7 @@ d_file_path_from_eval_string(Arena *arena, String8 string)
|
||||
E_Eval eval = e_eval_from_string(scratch.arena, string);
|
||||
if(eval.expr->kind == E_ExprKind_LeafFilePath)
|
||||
{
|
||||
result = d_cfg_raw_from_escaped_string(arena, eval.expr->string);
|
||||
result = raw_from_escaped_string(arena, eval.expr->string);
|
||||
}
|
||||
scratch_end(scratch);
|
||||
}
|
||||
@@ -5439,7 +5444,7 @@ internal String8
|
||||
d_eval_string_from_file_path(Arena *arena, String8 string)
|
||||
{
|
||||
Temp scratch = scratch_begin(&arena, 1);
|
||||
String8 string_escaped = d_cfg_escaped_from_raw_string(scratch.arena, string);
|
||||
String8 string_escaped = escaped_from_raw_string(scratch.arena, string);
|
||||
String8 result = push_str8f(arena, "file:\"%S\"", string_escaped);
|
||||
scratch_end(scratch);
|
||||
return result;
|
||||
@@ -5574,6 +5579,7 @@ d_ctrl_targets_running(void)
|
||||
return d_state->ctrl_is_running;
|
||||
}
|
||||
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
//- rjf: config paths
|
||||
|
||||
internal String8
|
||||
@@ -5589,9 +5595,11 @@ d_cfg_table(void)
|
||||
{
|
||||
return &d_state->cfg_table;
|
||||
}
|
||||
#endif
|
||||
|
||||
//- rjf: config serialization
|
||||
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
internal String8
|
||||
d_cfg_escaped_from_raw_string(Arena *arena, String8 string)
|
||||
{
|
||||
@@ -5829,6 +5837,7 @@ d_cfg_push_write_string(D_CfgSrc src, String8 string)
|
||||
{
|
||||
str8_list_push(d_state->cfg_write_arenas[src], &d_state->cfg_write_data[src], push_str8_copy(d_state->cfg_write_arenas[src], string));
|
||||
}
|
||||
#endif
|
||||
|
||||
//- rjf: current path
|
||||
|
||||
@@ -5840,6 +5849,7 @@ d_current_path(void)
|
||||
|
||||
//- rjf: entity kind cache
|
||||
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
internal D_EntityList
|
||||
d_query_cached_entity_list_with_kind(D_EntityKind kind)
|
||||
{
|
||||
@@ -5863,6 +5873,7 @@ d_query_cached_entity_list_with_kind(D_EntityKind kind)
|
||||
ProfEnd();
|
||||
return result;
|
||||
}
|
||||
#endif
|
||||
|
||||
//- rjf: active entity based queries
|
||||
|
||||
@@ -6157,6 +6168,8 @@ d_query_cached_member_map_from_dbgi_key_voff(DI_Key *dbgi_key, U64 voff)
|
||||
|
||||
//- rjf: top-level command dispatch
|
||||
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
|
||||
internal void
|
||||
d_push_cmd(D_CmdSpec *spec, D_CmdParams *params)
|
||||
{
|
||||
@@ -6243,6 +6256,8 @@ d_errorf(char *fmt, ...)
|
||||
scratch_end(scratch);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Message Functions
|
||||
|
||||
@@ -6284,7 +6299,9 @@ d_init(CmdLine *cmdln, D_StateDeltaHistory *hist)
|
||||
{
|
||||
d_state->frame_arenas[idx] = arena_alloc();
|
||||
}
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
d_state->root_cmd_arena = arena_alloc();
|
||||
#endif
|
||||
d_state->output_log_key = hs_hash_from_data(str8_lit("df_output_log_key"));
|
||||
d_state->entities_arena = arena_alloc(.reserve_size = GB(64), .commit_size = KB(64));
|
||||
d_state->entities_root = &d_nil_entity;
|
||||
@@ -6380,6 +6397,7 @@ d_init(CmdLine *cmdln, D_StateDeltaHistory *hist)
|
||||
}
|
||||
|
||||
// rjf: set up config path state
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
String8 cfg_src_paths[D_CfgSrc_COUNT] = {user_cfg_path, project_cfg_path};
|
||||
for(D_CfgSrc src = (D_CfgSrc)0; src < D_CfgSrc_COUNT; src = (D_CfgSrc)(src+1))
|
||||
{
|
||||
@@ -6389,14 +6407,18 @@ d_init(CmdLine *cmdln, D_StateDeltaHistory *hist)
|
||||
|
||||
// rjf: set up config table arena
|
||||
d_state->cfg_arena = arena_alloc();
|
||||
#endif
|
||||
|
||||
scratch_end(scratch);
|
||||
}
|
||||
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
// rjf: set up config write state
|
||||
for(D_CfgSrc src = (D_CfgSrc)0; src < D_CfgSrc_COUNT; src = (D_CfgSrc)(src+1))
|
||||
{
|
||||
d_state->cfg_write_arenas[src] = arena_alloc();
|
||||
}
|
||||
#endif
|
||||
|
||||
// rjf: set up initial browse path
|
||||
{
|
||||
@@ -6409,6 +6431,7 @@ d_init(CmdLine *cmdln, D_StateDeltaHistory *hist)
|
||||
}
|
||||
}
|
||||
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
internal D_CmdList
|
||||
d_gather_root_cmds(Arena *arena)
|
||||
{
|
||||
@@ -6419,9 +6442,10 @@ d_gather_root_cmds(Arena *arena)
|
||||
}
|
||||
return cmds;
|
||||
}
|
||||
#endif
|
||||
|
||||
internal void
|
||||
d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt)
|
||||
d_tick(Arena *arena, DI_Scope *di_scope, F32 dt)
|
||||
{
|
||||
ProfBeginFunction();
|
||||
d_state->frame_index += 1;
|
||||
@@ -6549,8 +6573,7 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt)
|
||||
if(event->cause == CTRL_EventCause_InterruptedByException ||
|
||||
event->cause == CTRL_EventCause_InterruptedByTrap)
|
||||
{
|
||||
D_CmdParams params = d_cmd_params_zero();
|
||||
d_cmd_list_push(arena, cmds, ¶ms, d_cmd_spec_from_kind(D_CmdKind_Error));
|
||||
log_user_errorf("Interrupted by exception");
|
||||
}
|
||||
|
||||
// rjf: kill all entities which are marked to die on stop
|
||||
@@ -6675,9 +6698,7 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt)
|
||||
B32 do_initial_snap = (already_existing_processes.count == 1 && thread_idx_in_process == 0);
|
||||
if(do_initial_snap)
|
||||
{
|
||||
D_CmdParams params = d_cmd_params_zero();
|
||||
params.entity = d_handle_from_entity(entity);
|
||||
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);
|
||||
}
|
||||
}break;
|
||||
|
||||
@@ -7483,6 +7504,7 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt)
|
||||
scratch_end(scratch);
|
||||
}
|
||||
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
//////////////////////////////
|
||||
//- rjf: clear root level commands
|
||||
//
|
||||
@@ -7490,7 +7512,9 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt)
|
||||
arena_clear(d_state->root_cmd_arena);
|
||||
MemoryZeroStruct(&d_state->root_cmds);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
//////////////////////////////
|
||||
//- rjf: autosave
|
||||
//
|
||||
@@ -7504,6 +7528,7 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt)
|
||||
d_state->seconds_til_autosave = 5.f;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
//////////////////////////////
|
||||
//- rjf: process top-level commands
|
||||
@@ -9096,7 +9121,7 @@ d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt)
|
||||
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);
|
||||
CTRL_EntityList all_modules = ctrl_entity_list_from_kind(d_state->ctrl_entity_store, CTRL_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];
|
||||
|
||||
@@ -764,6 +764,7 @@ struct D_CmdSpecInfoArray
|
||||
////////////////////////////////
|
||||
//~ rjf: Command Types
|
||||
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
typedef struct D_Cmd D_Cmd;
|
||||
struct D_Cmd
|
||||
{
|
||||
@@ -786,6 +787,7 @@ struct D_CmdList
|
||||
D_CmdNode *last;
|
||||
U64 count;
|
||||
};
|
||||
#endif
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Main State Caches
|
||||
@@ -987,9 +989,10 @@ struct D_State
|
||||
D_MsgList msgs;
|
||||
|
||||
// rjf: top-level command batch
|
||||
// TODO(rjf): @msgs
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
Arena *root_cmd_arena;
|
||||
D_CmdList root_cmds;
|
||||
#endif
|
||||
|
||||
// rjf: output log key
|
||||
U128 output_log_key;
|
||||
@@ -1066,6 +1069,7 @@ struct D_State
|
||||
Arena *ctrl_stop_arena;
|
||||
CTRL_Event ctrl_last_stop_event;
|
||||
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
// rjf: config reading state
|
||||
Arena *cfg_path_arenas[D_CfgSrc_COUNT];
|
||||
String8 cfg_paths[D_CfgSrc_COUNT];
|
||||
@@ -1077,6 +1081,7 @@ struct D_State
|
||||
B32 cfg_write_issued[D_CfgSrc_COUNT];
|
||||
Arena *cfg_write_arenas[D_CfgSrc_COUNT];
|
||||
String8List cfg_write_data[D_CfgSrc_COUNT];
|
||||
#endif
|
||||
|
||||
// rjf: current path
|
||||
Arena *current_path_arena;
|
||||
@@ -1183,7 +1188,9 @@ internal D_CmdParams d_cmd_params_zero(void);
|
||||
internal String8 d_cmd_params_apply_spec_query(Arena *arena, D_CmdParams *params, D_CmdSpec *spec, String8 query);
|
||||
|
||||
//- rjf: command lists
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
internal void d_cmd_list_push(Arena *arena, D_CmdList *cmds, D_CmdParams *params, D_CmdSpec *spec);
|
||||
#endif
|
||||
|
||||
//- rjf: string -> core layer command kind
|
||||
internal D_CmdKind d_cmd_kind_from_string(String8 string);
|
||||
@@ -1524,17 +1531,21 @@ internal D_RunKind d_ctrl_last_run_kind(void);
|
||||
internal U64 d_ctrl_last_run_frame_idx(void);
|
||||
internal B32 d_ctrl_targets_running(void);
|
||||
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
//- rjf: config paths
|
||||
internal String8 d_cfg_path_from_src(D_CfgSrc src);
|
||||
|
||||
//- rjf: config state
|
||||
internal D_CfgTable *d_cfg_table(void);
|
||||
#endif
|
||||
|
||||
//- rjf: config serialization
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
internal String8 d_cfg_escaped_from_raw_string(Arena *arena, String8 string);
|
||||
internal String8 d_cfg_raw_from_escaped_string(Arena *arena, String8 string);
|
||||
internal String8List d_cfg_strings_from_state(Arena *arena, String8 root_path, D_CfgSrc source);
|
||||
internal void d_cfg_push_write_string(D_CfgSrc src, String8 string);
|
||||
#endif
|
||||
|
||||
//- rjf: current path
|
||||
internal String8 d_current_path(void);
|
||||
@@ -1558,6 +1569,7 @@ internal E_String2NumMap *d_query_cached_locals_map_from_dbgi_key_voff(DI_Key *d
|
||||
internal E_String2NumMap *d_query_cached_member_map_from_dbgi_key_voff(DI_Key *dbgi_key, U64 voff);
|
||||
|
||||
//- rjf: top-level command dispatch
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
internal void d_push_cmd(D_CmdSpec *spec, D_CmdParams *params);
|
||||
internal void d_error(String8 string);
|
||||
internal void d_errorf(char *fmt, ...);
|
||||
@@ -1569,6 +1581,7 @@ internal void d_errorf(char *fmt, ...);
|
||||
.view = d_regs()->view, \
|
||||
__VA_ARGS__ \
|
||||
})
|
||||
#endif
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Message Functions
|
||||
@@ -1586,7 +1599,9 @@ __VA_ARGS__\
|
||||
//~ rjf: Main Layer Top-Level Calls
|
||||
|
||||
internal void d_init(CmdLine *cmdln, D_StateDeltaHistory *hist);
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
internal D_CmdList d_gather_root_cmds(Arena *arena);
|
||||
internal void d_tick(Arena *arena, DI_Scope *di_scope, D_CmdList *cmds, F32 dt);
|
||||
#endif
|
||||
internal void d_tick(Arena *arena, DI_Scope *di_scope, F32 dt);
|
||||
|
||||
#endif // DBG_ENGINE_CORE_H
|
||||
|
||||
@@ -39,47 +39,7 @@ Rng1U64 d_reg_slot_range_table[29] =
|
||||
|
||||
String8 d_msg_kind_name_lower_table[36] =
|
||||
{
|
||||
str8_lit_comp("null"),
|
||||
str8_lit_comp("launch_and_run"),
|
||||
str8_lit_comp("launch_and_step_into"),
|
||||
str8_lit_comp("kill"),
|
||||
str8_lit_comp("kill_all"),
|
||||
str8_lit_comp("attach"),
|
||||
str8_lit_comp("detach"),
|
||||
str8_lit_comp("continue"),
|
||||
str8_lit_comp("step_into_inst"),
|
||||
str8_lit_comp("step_over_inst"),
|
||||
str8_lit_comp("step_into_line"),
|
||||
str8_lit_comp("step_over_line"),
|
||||
str8_lit_comp("step_out"),
|
||||
str8_lit_comp("halt"),
|
||||
str8_lit_comp("soft_halt_refresh"),
|
||||
str8_lit_comp("set_thread_ip"),
|
||||
str8_lit_comp("run_to_line"),
|
||||
str8_lit_comp("run_to_address"),
|
||||
str8_lit_comp("run"),
|
||||
str8_lit_comp("restart"),
|
||||
str8_lit_comp("step_into"),
|
||||
str8_lit_comp("step_over"),
|
||||
str8_lit_comp("select_thread"),
|
||||
str8_lit_comp("select_unwind"),
|
||||
str8_lit_comp("up_one_frame"),
|
||||
str8_lit_comp("down_one_frame"),
|
||||
str8_lit_comp("freeze_thread"),
|
||||
str8_lit_comp("thaw_thread"),
|
||||
str8_lit_comp("freeze_process"),
|
||||
str8_lit_comp("thaw_process"),
|
||||
str8_lit_comp("freeze_machine"),
|
||||
str8_lit_comp("thaw_machine"),
|
||||
str8_lit_comp("freeze_local_machine"),
|
||||
str8_lit_comp("thaw_local_machine"),
|
||||
str8_lit_comp("run_to_cursor"),
|
||||
str8_lit_comp("set_next_statement"),
|
||||
};
|
||||
|
||||
String8 d_msg_kind_name_display_table[36] =
|
||||
{
|
||||
str8_lit_comp("null"),
|
||||
{0},
|
||||
str8_lit_comp("launch_and_run"),
|
||||
str8_lit_comp("launch_and_step_into"),
|
||||
str8_lit_comp("kill"),
|
||||
|
||||
@@ -10,9 +10,9 @@ typedef enum D_RegSlot
|
||||
{
|
||||
D_RegSlot_Null,
|
||||
D_RegSlot_MachineID,
|
||||
D_RegSlot_process,
|
||||
D_RegSlot_module,
|
||||
D_RegSlot_thread,
|
||||
D_RegSlot_Process,
|
||||
D_RegSlot_Module,
|
||||
D_RegSlot_Thread,
|
||||
D_RegSlot_Window,
|
||||
D_RegSlot_Panel,
|
||||
D_RegSlot_View,
|
||||
@@ -536,7 +536,6 @@ 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[36];
|
||||
extern String8 d_msg_kind_name_display_table[36];
|
||||
extern Rng1U64 d_cmd_param_slot_range_table[24];
|
||||
extern String8 d_entity_kind_display_string_table[28];
|
||||
extern String8 d_entity_kind_name_lower_table[28];
|
||||
|
||||
@@ -1,14 +1,81 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Registers Type Table
|
||||
|
||||
@table(c_type name_lower name)
|
||||
DF_RegTable:
|
||||
{
|
||||
// rjf: entity info
|
||||
{CTRL_MachineID machine_id MachineID }
|
||||
{DMN_Handle process Process }
|
||||
{DMN_Handle module Module }
|
||||
{DMN_Handle thread Thread }
|
||||
{DF_Handle window Window }
|
||||
{DF_Handle panel Panel }
|
||||
{DF_Handle view View }
|
||||
{DF_Handle prev_view PrevView }
|
||||
{DF_Handle dst_panel DstPanel }
|
||||
{DF_Handle cfg_tree CfgTree }
|
||||
{DF_HandleList cfg_tree_list CfgTreeList }
|
||||
|
||||
// rjf: frame selection
|
||||
{U64 unwind_count UnwindCount }
|
||||
{U64 inline_depth InlineDepth }
|
||||
|
||||
// rjf: code / address location info
|
||||
{String8 file_path FilePath }
|
||||
{TxtPt cursor Cursor }
|
||||
{TxtPt mark Mark }
|
||||
{U128 text_key TextKey }
|
||||
{TXT_LangKind lang_kind LangKind }
|
||||
{D_LineList lines Lines }
|
||||
{DI_Key dbgi_key DbgiKey }
|
||||
{Rng1U64 vaddr_range VaddrRange }
|
||||
{Rng1U64 voff_range VoffRange }
|
||||
|
||||
// rjf: general parameters
|
||||
{U32 pid PID }
|
||||
{B32 force_confirm ForceConfirm }
|
||||
{B32 prefer_disasm PreferDisasm }
|
||||
{Dir2 dir2 Dir2 }
|
||||
{String8 string String }
|
||||
{`MD_Node *` params_tree ParamsTree }
|
||||
{`OS_Event *` os_event OSEvent }
|
||||
}
|
||||
|
||||
@enum DF_RegSlot:
|
||||
{
|
||||
Null,
|
||||
@expand(DF_RegTable a) `$(a.name)`,
|
||||
COUNT,
|
||||
}
|
||||
|
||||
@struct DF_Regs:
|
||||
{
|
||||
@expand(DF_RegTable a) `$(a.c_type) $(a.name_lower)`
|
||||
}
|
||||
|
||||
@data(Rng1U64) df_reg_slot_range_table:
|
||||
{
|
||||
`{0}`,
|
||||
@expand(DF_RegTable a) `{OffsetOf(DF_Regs, $(a.name_lower)), OffsetOf(DF_Regs, $(a.name_lower)) + sizeof($(a.c_type))}`
|
||||
}
|
||||
|
||||
@gen
|
||||
{
|
||||
`#define df_regs_lit_init_top \\`
|
||||
@expand(DF_RegTable a) `.$(a.name_lower) = df_regs()->$(a.name_lower),\\`
|
||||
``;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Message Tables
|
||||
|
||||
@table(name name_display name_lower show_in_ui show_in_ipc_docs q_slot q_ent_kind q_allow_files q_allow_folders q_keep_oi q_select_oi q_is_code q_required canonical_icon desc)
|
||||
DF_MsgKindTable:
|
||||
{
|
||||
{Null "" null 0 0 Null Nil 0 0 0 0 0 0 Null ""}
|
||||
|
||||
//- rjf: meta
|
||||
{Exit "" exit 0 0 Null Nil 0 0 0 0 0 0 Null ""}
|
||||
{RunCommand "" run_command 0 0 Null Nil 0 0 0 0 0 0 Null ""}
|
||||
@@ -203,18 +270,16 @@ DF_MsgKindTable:
|
||||
|
||||
@enum DF_MsgKind:
|
||||
{
|
||||
Null,
|
||||
@expand(D_MsgKindTable a) `$(a.name)`,
|
||||
@expand(DF_MsgKindTable a) `$(a.name)`,
|
||||
COUNT
|
||||
}
|
||||
|
||||
@data(DF_MsgKindInfo) df_msg_kind_info_table:
|
||||
{
|
||||
@expand(DF_MsgKindTable a) `{str8_lit_comp("$(a.name_lower)"), str8_lit_comp("$(a.display_name)"), str8_lit_comp("$(a.desc)"), str8_lit_comp("$(a.search_tags)"), (($(a.show_in_ui)*DF_MsgKindFlag_ListInUI)|($(a.show_in_ipc_docs)*DF_MsgKindFlag_ListInIPCDocs)), {($(a.q_allow_files)*DF_MsgQueryFlag_AllowFiles)|($(a.q_allow_folders)*DF_MsgQueryFlag_AllowFolders)|($(a.q_keep_oi)*DF_MsgQueryFlag_KeepOldInput)|($(a.q_select_oi)*DF_MsgQueryFlag_SelectOldInput)|($(a.q_is_code)*DF_MsgQueryFlag_CodeInput)|($(a.q_required)*DF_MsgQueryFlag_Required), D_RegSlot_$(a.q_slot), D_EntityKind_$(a.q_ent_kind)}}`
|
||||
}
|
||||
|
||||
@data(DF_MsgKindInfo) df_d_msg_kind_info_table:
|
||||
{
|
||||
@expand(D_MsgKindTable a) `{str8_lit_comp("$(a.name_lower)"), str8_lit_comp("$(a.display_name)"), str8_lit_comp("$(a.desc)"), str8_lit_comp("$(a.search_tags)"), (($(a.show_in_ui)*DF_MsgKindFlag_ListInUI)|($(a.show_in_ipc_docs)*DF_MsgKindFlag_ListInIPCDocs)), {($(a.q_allow_files)*DF_MsgQueryFlag_AllowFiles)|($(a.q_allow_folders)*DF_MsgQueryFlag_AllowFolders)|($(a.q_keep_oi)*DF_MsgQueryFlag_KeepOldInput)|($(a.q_select_oi)*DF_MsgQueryFlag_SelectOldInput)|($(a.q_is_code)*DF_MsgQueryFlag_CodeInput)|($(a.q_required)*DF_MsgQueryFlag_Required), D_RegSlot_$(a.q_slot), D_EntityKind_$(a.q_ent_kind)}}`
|
||||
`{0}`,
|
||||
@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)}}`,
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
@@ -530,7 +595,7 @@ DF_ViewTable:
|
||||
{ SymbolLister "symbol_lister" "Symbols" Null 0 0 0 0 0 0 0 "" }
|
||||
|
||||
//- rjf: entity editors
|
||||
{ Target "target" "Target" Target 1 0 0 0 0 0 0 "" }
|
||||
// TODO(rjf): @msgs { Target "target" "Target" Target 1 0 0 0 0 0 0 "" }
|
||||
{ Targets "targets" "Targets" Target 0 0 1 1 0 1 1 "Displays a list of all targets, as well as controls for enabling, disabling, launching, editing, or deleting each target. For more information on targets, read the `Targets` section." }
|
||||
{ FilePathMap "file_path_map" "File Path Map" FileOutline 0 0 1 0 0 0 1 "Displays a table of *path maps*. Each path map is a pair of file or folder paths, one being a 'source' path, and one being a 'destination' path. These pairs are used by the debugger when automatically searching for specific files - for instance, when attempting to snap to a source code location specified by debug info. If debug info refers to a path on the machine on which a target executable was originally built, but that path is not valid on the debugger machine, but some alternative path exists, then path maps may be used to redirect the debugger from the debug info's specified paths to the associated appropriate debugger machine file paths." }
|
||||
{ AutoViewRules "auto_view_rules" "Auto View Rules" Binoculars 0 0 1 0 0 0 1 "Displays a table of *auto view rules*. Each *auto view rule* is a pair, with one element being a type, and the other being a view rule, which should be automatically applied to expressions of that type, when possible." }
|
||||
|
||||
+3249
-2900
File diff suppressed because it is too large
Load Diff
@@ -16,6 +16,30 @@ typedef enum DF_CfgSlot
|
||||
}
|
||||
DF_CfgSlot;
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Handle Types
|
||||
|
||||
typedef struct DF_Handle DF_Handle;
|
||||
struct DF_Handle
|
||||
{
|
||||
U64 u64[4];
|
||||
};
|
||||
|
||||
typedef struct DF_HandleNode DF_HandleNode;
|
||||
struct DF_HandleNode
|
||||
{
|
||||
DF_HandleNode *next;
|
||||
DF_Handle v;
|
||||
};
|
||||
|
||||
typedef struct DF_HandleList DF_HandleList;
|
||||
struct DF_HandleList
|
||||
{
|
||||
DF_HandleNode *first;
|
||||
DF_HandleNode *last;
|
||||
U64 count;
|
||||
};
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Binding Types
|
||||
|
||||
@@ -82,17 +106,17 @@ struct DF_SettingVal
|
||||
|
||||
typedef struct DF_View DF_View;
|
||||
|
||||
#define DF_VIEW_SETUP_FUNCTION_SIG(name) void name(DF_View *view, MD_Node *params, String8 string)
|
||||
#define DF_VIEW_SETUP_FUNCTION_SIG(name) void name(void)
|
||||
#define DF_VIEW_SETUP_FUNCTION_NAME(name) df_view_setup_##name
|
||||
#define DF_VIEW_SETUP_FUNCTION_DEF(name) internal DF_VIEW_SETUP_FUNCTION_SIG(DF_VIEW_SETUP_FUNCTION_NAME(name))
|
||||
typedef DF_VIEW_SETUP_FUNCTION_SIG(DF_ViewSetupFunctionType);
|
||||
|
||||
#define DF_VIEW_CMD_FUNCTION_SIG(name) void name(DF_View *view, MD_Node *params, String8 string, D_CmdList *cmds)
|
||||
#define DF_VIEW_CMD_FUNCTION_SIG(name) void name(void)
|
||||
#define DF_VIEW_CMD_FUNCTION_NAME(name) df_view_cmds_##name
|
||||
#define DF_VIEW_CMD_FUNCTION_DEF(name) internal DF_VIEW_CMD_FUNCTION_SIG(DF_VIEW_CMD_FUNCTION_NAME(name))
|
||||
typedef DF_VIEW_CMD_FUNCTION_SIG(DF_ViewCmdFunctionType);
|
||||
|
||||
#define DF_VIEW_UI_FUNCTION_SIG(name) void name(DF_View *view, MD_Node *params, String8 string, Rng2F32 rect)
|
||||
#define DF_VIEW_UI_FUNCTION_SIG(name) void name(Rng2F32 rect)
|
||||
#define DF_VIEW_UI_FUNCTION_NAME(name) df_view_ui_##name
|
||||
#define DF_VIEW_UI_FUNCTION_DEF(name) internal DF_VIEW_UI_FUNCTION_SIG(DF_VIEW_UI_FUNCTION_NAME(name))
|
||||
typedef DF_VIEW_UI_FUNCTION_SIG(DF_ViewUIFunctionType);
|
||||
@@ -194,6 +218,9 @@ struct DF_View
|
||||
DF_View *order_next;
|
||||
DF_View *order_prev;
|
||||
|
||||
// rjf: cfg tree handle
|
||||
DF_Handle handle;
|
||||
|
||||
// rjf: transient view children
|
||||
DF_View *first_transient;
|
||||
DF_View *last_transient;
|
||||
@@ -243,6 +270,21 @@ struct DF_View
|
||||
U8 query_buffer[KB(4)];
|
||||
};
|
||||
|
||||
typedef struct DF_ViewNode DF_ViewNode;
|
||||
struct DF_ViewNode
|
||||
{
|
||||
DF_ViewNode *next;
|
||||
DF_ViewNode *prev;
|
||||
DF_View v;
|
||||
};
|
||||
|
||||
typedef struct DF_ViewSlot DF_ViewSlot;
|
||||
struct DF_ViewSlot
|
||||
{
|
||||
DF_ViewNode *first;
|
||||
DF_ViewNode *last;
|
||||
};
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Panel Types
|
||||
|
||||
@@ -300,9 +342,8 @@ DF_DragDropState;
|
||||
typedef struct DF_DragDropPayload DF_DragDropPayload;
|
||||
struct DF_DragDropPayload
|
||||
{
|
||||
UI_Key key;
|
||||
D_Handle panel;
|
||||
D_Handle view;
|
||||
UI_Key key__;
|
||||
DF_Handle cfg_tree;
|
||||
D_Handle entity;
|
||||
TxtPt text_point;
|
||||
};
|
||||
@@ -424,7 +465,7 @@ typedef struct DF_Msg DF_Msg;
|
||||
struct DF_Msg
|
||||
{
|
||||
DF_MsgKind kind;
|
||||
D_Regs *regs;
|
||||
DF_Regs *regs;
|
||||
};
|
||||
|
||||
typedef struct DF_MsgNode DF_MsgNode;
|
||||
@@ -543,6 +584,7 @@ struct DF_Window
|
||||
// rjf: links & metadata
|
||||
DF_Window *next;
|
||||
DF_Window *prev;
|
||||
DF_Handle handle;
|
||||
U64 first_frame_touched;
|
||||
U64 last_frame_touched;
|
||||
U64 gen;
|
||||
@@ -551,7 +593,6 @@ struct DF_Window
|
||||
|
||||
// rjf: top-level info & handles
|
||||
Arena *arena;
|
||||
String8 cfg_key;
|
||||
OS_Handle os;
|
||||
R_Handle r;
|
||||
UI_State *ui;
|
||||
@@ -588,8 +629,7 @@ struct DF_Window
|
||||
TxtPt entity_ctx_menu_input_mark;
|
||||
|
||||
// rjf: tab context menu state
|
||||
D_Handle tab_ctx_menu_panel;
|
||||
D_Handle tab_ctx_menu_view;
|
||||
DF_Handle tab_ctx_menu_view;
|
||||
U8 tab_ctx_menu_input_buffer[1024];
|
||||
U64 tab_ctx_menu_input_size;
|
||||
TxtPt tab_ctx_menu_input_cursor;
|
||||
@@ -611,7 +651,7 @@ struct DF_Window
|
||||
|
||||
// rjf: query view stack
|
||||
Arena *query_msg_arena;
|
||||
String8 query_msg_name;
|
||||
DF_MsgKind query_msg_kind;
|
||||
DF_MsgQuery query_msg_query;
|
||||
U64 query_msg_regs_mask[(D_RegSlot_COUNT+63)/64];
|
||||
D_Regs *query_msg_regs;
|
||||
@@ -674,6 +714,16 @@ struct DF_WindowSlot
|
||||
DF_WindowNode *last;
|
||||
};
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Context Register Types
|
||||
|
||||
typedef struct DF_RegsNode DF_RegsNode;
|
||||
struct DF_RegsNode
|
||||
{
|
||||
DF_RegsNode *next;
|
||||
DF_Regs v;
|
||||
};
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Main Per-Process Graphical State
|
||||
|
||||
@@ -684,6 +734,9 @@ struct DF_State
|
||||
B32 quit;
|
||||
U64 frame_index;
|
||||
|
||||
// rjf: frame arenas
|
||||
Arena *frame_arenas[2];
|
||||
|
||||
// rjf: icon texture
|
||||
R_Handle icon_texture;
|
||||
|
||||
@@ -697,8 +750,13 @@ struct DF_State
|
||||
Arena *cfg_root_arena;
|
||||
MD_Node *cfg_root;
|
||||
Arena *cfg_slot_arenas[DF_CfgSlot_COUNT];
|
||||
U64 cfg_slot_gens[DF_CfgSlot_COUNT];
|
||||
MD_Node *cfg_slot_roots[DF_CfgSlot_COUNT];
|
||||
|
||||
// rjf: interaction registers
|
||||
DF_RegsNode base_regs;
|
||||
DF_RegsNode *top_regs;
|
||||
|
||||
// rjf: messages
|
||||
Arena *msgs_arena;
|
||||
DF_MsgList msgs;
|
||||
@@ -707,6 +765,10 @@ struct DF_State
|
||||
U64 window_slots_count;
|
||||
DF_WindowSlot *window_slots;
|
||||
|
||||
// rjf: view state cache
|
||||
U64 view_slots_count;
|
||||
DF_ViewSlot *view_slots;
|
||||
|
||||
// rjf: key map table
|
||||
Arena *key_map_arena;
|
||||
U64 key_map_table_size;
|
||||
@@ -729,7 +791,6 @@ struct DF_State
|
||||
B32 confirm_active;
|
||||
F32 confirm_t;
|
||||
Arena *confirm_arena;
|
||||
D_CmdList confirm_cmds;
|
||||
DF_Msg confirm_msg;
|
||||
String8 confirm_title;
|
||||
String8 confirm_desc;
|
||||
@@ -808,12 +869,15 @@ read_only global DF_ViewRuleSpec df_nil_view_rule_spec =
|
||||
&df_nil_view_rule_spec,
|
||||
};
|
||||
|
||||
read_only global DF_Window df_nil_window = {0};
|
||||
|
||||
read_only global DF_View df_nil_view =
|
||||
{
|
||||
&df_nil_view,
|
||||
&df_nil_view,
|
||||
&df_nil_view,
|
||||
&df_nil_view,
|
||||
{0},
|
||||
&df_nil_view,
|
||||
&df_nil_view,
|
||||
&df_nil_view_spec,
|
||||
@@ -839,6 +903,20 @@ global D_Handle df_last_drag_drop_prev_tab = {0};
|
||||
internal U64 df_hash_from_seed_string(U64 seed, String8 string);
|
||||
internal U64 df_hash_from_string(String8 string);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Handle Type Functions
|
||||
|
||||
internal DF_Handle df_handle_zero(void);
|
||||
internal B32 df_handle_match(DF_Handle a, DF_Handle b);
|
||||
internal void df_handle_list_push(Arena *arena, DF_HandleList *list, DF_Handle v);
|
||||
internal DF_HandleList df_handle_list_copy(Arena *arena, DF_HandleList *src);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Register Type Functions
|
||||
|
||||
internal void df_regs_copy_contents(Arena *arena, DF_Regs *dst, DF_Regs *src);
|
||||
internal DF_Regs *df_regs_copy(Arena *arena, DF_Regs *src);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: View Type Functions
|
||||
|
||||
@@ -881,7 +959,7 @@ internal DF_View *df_selected_tab_from_panel(DF_Panel *panel);
|
||||
|
||||
//- rjf: icons & display strings
|
||||
internal DF_IconKind df_icon_kind_from_view(DF_View *view);
|
||||
internal DR_FancyStringList df_title_fstrs_from_view(Arena *arena, DF_View *view, Vec4F32 primary_color, Vec4F32 secondary_color, F32 size);
|
||||
internal DR_FancyStringList df_title_fstrs_from_view_spec_query(Arena *arena, DF_ViewSpec *spec, String8 query, Vec4F32 primary_color, Vec4F32 secondary_color, F32 size);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Window Type Functions
|
||||
@@ -930,6 +1008,9 @@ internal DF_ViewRuleSpec *df_view_rule_spec_from_string(String8 string);
|
||||
////////////////////////////////
|
||||
//~ rjf: View State Functions
|
||||
|
||||
//- rjf: cfg tree -> view
|
||||
internal DF_View *df_view_from_cfg_tree(MD_Node *view_cfg);
|
||||
|
||||
//- rjf: allocation/releasing
|
||||
internal DF_View *df_view_alloc(void);
|
||||
internal void df_view_release(DF_View *view);
|
||||
@@ -966,13 +1047,13 @@ internal void df_panel_release_all_views(DF_Panel *panel);
|
||||
////////////////////////////////
|
||||
//~ rjf: Window State Functions
|
||||
|
||||
internal DF_Window *df_window_from_cfg_key(String8 cfg_key);
|
||||
internal DF_Window *df_window_from_cfg_tree(MD_Node *window_cfg);
|
||||
|
||||
internal DF_Window *df_window_open(Vec2F32 size, OS_Handle preferred_monitor, D_CfgSrc cfg_src);
|
||||
|
||||
internal DF_Window *df_window_from_os_handle(OS_Handle os);
|
||||
|
||||
internal void df_window_update_and_render(Arena *arena, DF_Window *ws, D_CmdList *cmds);
|
||||
internal void df_window_frame(Arena *arena, MD_Node *window_cfg);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Eval Viz
|
||||
@@ -1003,9 +1084,18 @@ internal void df_set_autocomp_lister_query(UI_Key root_key, DF_AutoCompListerPar
|
||||
internal void df_set_search_string(String8 string);
|
||||
internal String8 df_push_search_string(Arena *arena);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Main State Accessors
|
||||
|
||||
internal Arena *df_frame_arena(void);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Colors, Fonts, Config
|
||||
|
||||
//- rjf: handle <-> cfg tree
|
||||
internal DF_Handle df_handle_from_cfg_tree(MD_Node *cfg);
|
||||
internal MD_Node *df_cfg_tree_from_handle(DF_Handle handle);
|
||||
|
||||
//- rjf: string <-> cfg tree
|
||||
internal MD_Node *df_cfg_tree_from_key(String8 string);
|
||||
internal String8 df_key_from_cfg_tree(Arena *arena, MD_Node *node);
|
||||
@@ -1014,8 +1104,15 @@ internal String8 df_key_from_cfg_tree(Arena *arena, MD_Node *node);
|
||||
internal DF_CfgSlot df_cfg_slot_from_tree(MD_Node *node);
|
||||
internal MD_Node *df_cfg_tree_store(MD_Node *parent, MD_Node *replace_node, String8 string);
|
||||
internal MD_Node *df_cfg_tree_storef(MD_Node *parent, MD_Node *replace_node, char *fmt, ...);
|
||||
internal void df_cfg_tree_set_string(MD_Node *node, String8 string);
|
||||
internal void df_cfg_tree_set_stringf(MD_Node *node, char *fmt, ...);
|
||||
#define df_cfg_tree_set_key(parent, key, val) df_cfg_tree_store((parent), md_child_from_string((parent), (key), 0), (val))
|
||||
#define df_cfg_tree_set_keyf(parent, key, fmt, ...) df_cfg_tree_storef((parent), md_child_from_string((parent), (key), 0), (fmt), __VA_ARGS__)
|
||||
#define df_cfg_tree_remove(node) df_cfg_tree_store((node)->parent, (node), str8_zero())
|
||||
|
||||
//- rjf: config tree lookups
|
||||
internal Rng2F32 df_target_rect_from_panel_child_cfg(Rng2F32 parent_rect, Axis2 parent_split_axis, MD_Node *panel);
|
||||
internal Rng2F32 df_target_rect_from_panel_cfg(Rng2F32 root_rect, MD_Node *panel);
|
||||
|
||||
//- rjf: keybindings
|
||||
internal void df_clear_bindings(void);
|
||||
@@ -1041,8 +1138,10 @@ internal FNT_RasterFlags df_raster_flags_from_slot(DF_FontSlot slot);
|
||||
internal DF_SettingVal df_setting_val_from_code(DF_SettingCode code);
|
||||
|
||||
//- rjf: config serialization
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
internal int df_qsort_compare__cfg_string_bindings(DF_StringBindingPair *a, DF_StringBindingPair *b);
|
||||
internal String8List df_cfg_strings_from_state(Arena *arena, String8 root_path, D_CfgSrc source);
|
||||
#endif
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Process Control Info Stringification
|
||||
@@ -1055,6 +1154,15 @@ internal String8 df_stop_explanation_string_icon_from_ctrl_event(Arena *arena, C
|
||||
|
||||
internal void df_request_frame(void);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Registers Functions
|
||||
|
||||
internal DF_Regs *df_regs(void);
|
||||
internal DF_Regs *df_base_regs(void);
|
||||
internal DF_Regs *df_push_regs(void);
|
||||
internal DF_Regs *df_pop_regs(void);
|
||||
#define DF_RegsScope DeferLoop(df_push_regs(), df_pop_regs())
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Message Functions
|
||||
|
||||
@@ -1062,18 +1170,23 @@ internal void df_request_frame(void);
|
||||
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_window(MD_Node *cfg_tree);
|
||||
internal void df_regs_set_panel(MD_Node *cfg_tree);
|
||||
internal void df_regs_set_view(MD_Node *cfg_tree);
|
||||
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);
|
||||
internal void df_msg_(DF_MsgKind kind, DF_Regs *regs);
|
||||
#define df_msg(kind, ...) df_msg_((kind),\
|
||||
&(D_Regs)\
|
||||
&(DF_Regs)\
|
||||
{\
|
||||
d_regs_lit_init_top \
|
||||
df_regs_lit_init_top \
|
||||
__VA_ARGS__\
|
||||
})
|
||||
|
||||
//- rjf: message iteration
|
||||
internal B32 df_next_msg(DF_Msg **msg);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Main Layer Top-Level Calls
|
||||
|
||||
|
||||
@@ -19,7 +19,7 @@ df_code_view_init(DF_CodeViewState *cv, DF_View *view)
|
||||
}
|
||||
|
||||
internal void
|
||||
df_code_view_cmds(DF_View *view, DF_CodeViewState *cv, D_CmdList *cmds, String8 text_data, TXT_TextInfo *text_info, DASM_LineArray *dasm_lines, Rng1U64 dasm_vaddr_range, DI_Key dasm_dbgi_key)
|
||||
df_code_view_cmds(DF_View *view, DF_CodeViewState *cv, String8 text_data, TXT_TextInfo *text_info, DASM_LineArray *dasm_lines, Rng1U64 dasm_vaddr_range, DI_Key dasm_dbgi_key)
|
||||
{
|
||||
for(D_CmdNode *n = cmds->first; n != 0; n = n->next)
|
||||
{
|
||||
@@ -4626,6 +4626,8 @@ DF_VIEW_UI_FUNCTION_DEF(symbol_lister)
|
||||
////////////////////////////////
|
||||
//~ rjf: target @view_hook_impl
|
||||
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
|
||||
typedef struct DF_TargetViewState DF_TargetViewState;
|
||||
struct DF_TargetViewState
|
||||
{
|
||||
@@ -4960,6 +4962,8 @@ DF_VIEW_UI_FUNCTION_DEF(target)
|
||||
ProfEnd();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: targets @view_hook_impl
|
||||
|
||||
@@ -5115,6 +5119,12 @@ DF_VIEW_UI_FUNCTION_DEF(targets)
|
||||
////////////////////////////////
|
||||
//~ rjf: file_path_map @view_hook_impl
|
||||
|
||||
DF_VIEW_SETUP_FUNCTION_DEF(file_path_map){}
|
||||
DF_VIEW_CMD_FUNCTION_DEF(file_path_map){}
|
||||
DF_VIEW_UI_FUNCTION_DEF(file_path_map){}
|
||||
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
|
||||
typedef struct DF_FilePathMapViewState DF_FilePathMapViewState;
|
||||
struct DF_FilePathMapViewState
|
||||
{
|
||||
@@ -5454,6 +5464,8 @@ DF_VIEW_UI_FUNCTION_DEF(file_path_map)
|
||||
ProfEnd();
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: auto_view_rules @view_hook_impl
|
||||
|
||||
@@ -5749,6 +5761,12 @@ DF_VIEW_UI_FUNCTION_DEF(call_stack)
|
||||
////////////////////////////////
|
||||
//~ rjf: modules @view_hook_impl
|
||||
|
||||
DF_VIEW_SETUP_FUNCTION_DEF(modules){}
|
||||
DF_VIEW_CMD_FUNCTION_DEF(modules){}
|
||||
DF_VIEW_UI_FUNCTION_DEF(modules){}
|
||||
|
||||
#if 0 // TODO(rjf): @msgs
|
||||
|
||||
typedef struct DF_ModulesViewState DF_ModulesViewState;
|
||||
struct DF_ModulesViewState
|
||||
{
|
||||
@@ -6083,6 +6101,7 @@ DF_VIEW_UI_FUNCTION_DEF(modules)
|
||||
scratch_end(scratch);
|
||||
ProfEnd();
|
||||
}
|
||||
#endif
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: watch @view_hook_impl
|
||||
@@ -6233,52 +6252,10 @@ DF_VIEW_UI_FUNCTION_DEF(procedures)
|
||||
////////////////////////////////
|
||||
//~ rjf: pending_file @view_hook_impl
|
||||
|
||||
typedef struct DF_PendingFileViewState DF_PendingFileViewState;
|
||||
struct DF_PendingFileViewState
|
||||
{
|
||||
Arena *deferred_cmd_arena;
|
||||
D_CmdList deferred_cmds;
|
||||
};
|
||||
|
||||
DF_VIEW_SETUP_FUNCTION_DEF(pending_file)
|
||||
{
|
||||
DF_PendingFileViewState *pves = df_view_user_state(view, DF_PendingFileViewState);
|
||||
pves->deferred_cmd_arena = df_view_push_arena_ext(view);
|
||||
}
|
||||
|
||||
DF_VIEW_SETUP_FUNCTION_DEF(pending_file){}
|
||||
DF_VIEW_CMD_FUNCTION_DEF(pending_file)
|
||||
{
|
||||
Temp scratch = scratch_begin(0, 0);
|
||||
DF_PendingFileViewState *pves = df_view_user_state(view, DF_PendingFileViewState);
|
||||
|
||||
//- rjf: process commands
|
||||
for(D_CmdNode *n = cmds->first; n != 0; n = n->next)
|
||||
{
|
||||
D_Cmd *cmd = &n->cmd;
|
||||
|
||||
// rjf: mismatched window/panel => skip
|
||||
if(!d_handle_match(d_regs()->window, cmd->params.window) ||
|
||||
!d_handle_match(d_regs()->panel, cmd->params.panel))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// rjf: process
|
||||
D_CmdKind core_cmd_kind = d_cmd_kind_from_string(cmd->spec->info.string);
|
||||
switch(core_cmd_kind)
|
||||
{
|
||||
default:break;
|
||||
|
||||
// rjf: gather deferred commands to redispatch when entity is ready
|
||||
case D_CmdKind_GoToLine:
|
||||
case D_CmdKind_GoToAddress:
|
||||
case D_CmdKind_CenterCursor:
|
||||
case D_CmdKind_ContainCursor:
|
||||
{
|
||||
d_cmd_list_push(pves->deferred_cmd_arena, &pves->deferred_cmds, &cmd->params, cmd->spec);
|
||||
}break;
|
||||
}
|
||||
}
|
||||
|
||||
//- rjf: determine if file is ready, and which viewer to use
|
||||
String8 file_path = d_file_path_from_eval_string(scratch.arena, str8(view->query_buffer, view->query_string_size));
|
||||
|
||||
@@ -155,7 +155,7 @@ struct DF_WatchViewState
|
||||
//~ rjf: Code View Functions
|
||||
|
||||
internal void df_code_view_init(DF_CodeViewState *cv, DF_View *view);
|
||||
internal void df_code_view_cmds(DF_View *view, DF_CodeViewState *cv, D_CmdList *cmds, String8 text_data, TXT_TextInfo *text_info, DASM_LineArray *dasm_lines, Rng1U64 dasm_vaddr_range, DI_Key dasm_dbgi_key);
|
||||
internal void df_code_view_cmds(DF_View *view, DF_CodeViewState *cv, String8 text_data, TXT_TextInfo *text_info, DASM_LineArray *dasm_lines, Rng1U64 dasm_vaddr_range, DI_Key dasm_dbgi_key);
|
||||
internal DF_CodeViewBuildResult df_code_view_build(Arena *arena, DF_View *view, DF_CodeViewState *cv, DF_CodeViewBuildFlags flags, Rng2F32 rect, String8 text_data, TXT_TextInfo *text_info, DASM_LineArray *dasm_lines, Rng1U64 dasm_vaddr_range, DI_Key dasm_dbgi_key);
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
@@ -4,9 +4,43 @@
|
||||
//- GENERATED CODE
|
||||
|
||||
C_LINKAGE_BEGIN
|
||||
Rng1U64 df_reg_slot_range_table[30] =
|
||||
{
|
||||
{0},
|
||||
{OffsetOf(DF_Regs, machine_id), OffsetOf(DF_Regs, machine_id) + sizeof(CTRL_MachineID)},
|
||||
{OffsetOf(DF_Regs, process), OffsetOf(DF_Regs, process) + sizeof(DMN_Handle)},
|
||||
{OffsetOf(DF_Regs, module), OffsetOf(DF_Regs, module) + sizeof(DMN_Handle)},
|
||||
{OffsetOf(DF_Regs, thread), OffsetOf(DF_Regs, thread) + sizeof(DMN_Handle)},
|
||||
{OffsetOf(DF_Regs, window), OffsetOf(DF_Regs, window) + sizeof(DF_Handle)},
|
||||
{OffsetOf(DF_Regs, panel), OffsetOf(DF_Regs, panel) + sizeof(DF_Handle)},
|
||||
{OffsetOf(DF_Regs, view), OffsetOf(DF_Regs, view) + sizeof(DF_Handle)},
|
||||
{OffsetOf(DF_Regs, prev_view), OffsetOf(DF_Regs, prev_view) + sizeof(DF_Handle)},
|
||||
{OffsetOf(DF_Regs, dst_panel), OffsetOf(DF_Regs, dst_panel) + sizeof(DF_Handle)},
|
||||
{OffsetOf(DF_Regs, cfg_tree), OffsetOf(DF_Regs, cfg_tree) + sizeof(DF_Handle)},
|
||||
{OffsetOf(DF_Regs, cfg_tree_list), OffsetOf(DF_Regs, cfg_tree_list) + sizeof(DF_HandleList)},
|
||||
{OffsetOf(DF_Regs, unwind_count), OffsetOf(DF_Regs, unwind_count) + sizeof(U64)},
|
||||
{OffsetOf(DF_Regs, inline_depth), OffsetOf(DF_Regs, inline_depth) + sizeof(U64)},
|
||||
{OffsetOf(DF_Regs, file_path), OffsetOf(DF_Regs, file_path) + sizeof(String8)},
|
||||
{OffsetOf(DF_Regs, cursor), OffsetOf(DF_Regs, cursor) + sizeof(TxtPt)},
|
||||
{OffsetOf(DF_Regs, mark), OffsetOf(DF_Regs, mark) + sizeof(TxtPt)},
|
||||
{OffsetOf(DF_Regs, text_key), OffsetOf(DF_Regs, text_key) + sizeof(U128)},
|
||||
{OffsetOf(DF_Regs, lang_kind), OffsetOf(DF_Regs, lang_kind) + sizeof(TXT_LangKind)},
|
||||
{OffsetOf(DF_Regs, lines), OffsetOf(DF_Regs, lines) + sizeof(D_LineList)},
|
||||
{OffsetOf(DF_Regs, dbgi_key), OffsetOf(DF_Regs, dbgi_key) + sizeof(DI_Key)},
|
||||
{OffsetOf(DF_Regs, vaddr_range), OffsetOf(DF_Regs, vaddr_range) + sizeof(Rng1U64)},
|
||||
{OffsetOf(DF_Regs, voff_range), OffsetOf(DF_Regs, voff_range) + sizeof(Rng1U64)},
|
||||
{OffsetOf(DF_Regs, pid), OffsetOf(DF_Regs, pid) + sizeof(U32)},
|
||||
{OffsetOf(DF_Regs, force_confirm), OffsetOf(DF_Regs, force_confirm) + sizeof(B32)},
|
||||
{OffsetOf(DF_Regs, prefer_disasm), OffsetOf(DF_Regs, prefer_disasm) + sizeof(B32)},
|
||||
{OffsetOf(DF_Regs, dir2), OffsetOf(DF_Regs, dir2) + sizeof(Dir2)},
|
||||
{OffsetOf(DF_Regs, string), OffsetOf(DF_Regs, string) + sizeof(String8)},
|
||||
{OffsetOf(DF_Regs, params_tree), OffsetOf(DF_Regs, params_tree) + sizeof(MD_Node *)},
|
||||
{OffsetOf(DF_Regs, os_event), OffsetOf(DF_Regs, os_event) + sizeof(OS_Event *)},
|
||||
};
|
||||
|
||||
DF_MsgKindInfo df_msg_kind_info_table[134] =
|
||||
{
|
||||
{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}},
|
||||
{0},
|
||||
{str8_lit_comp("exit"), str8_lit_comp("Exit"), str8_lit_comp(""), str8_lit_comp("Exit"), ((0*DF_MsgKindFlag_ListInUI)|(0*DF_MsgKindFlag_ListInIPCDocs)), {(0*DF_MsgQueryFlag_AllowFiles)|(0*DF_MsgQueryFlag_AllowFolders)|(0*DF_MsgQueryFlag_KeepOldInput)|(0*DF_MsgQueryFlag_SelectOldInput)|(0*DF_MsgQueryFlag_CodeInput)|(0*DF_MsgQueryFlag_Required), D_RegSlot_Null, D_EntityKind_Nil}},
|
||||
{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}},
|
||||
@@ -142,46 +176,6 @@ DF_MsgKindInfo df_msg_kind_info_table[134] =
|
||||
{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_d_msg_kind_info_table[36] =
|
||||
{
|
||||
{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("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}},
|
||||
};
|
||||
|
||||
DF_StringBindingPair df_g_default_binding_table[110] =
|
||||
{
|
||||
{str8_lit_comp("kill_all"), {OS_Key_F5, 0 |OS_EventFlag_Shift }},
|
||||
@@ -391,7 +385,7 @@ str8_lit_comp("5"),
|
||||
str8_lit_comp("c"),
|
||||
};
|
||||
|
||||
String8 df_view_kind_name_lower_table[34] =
|
||||
String8 df_view_kind_name_lower_table[33] =
|
||||
{
|
||||
str8_lit_comp("null"),
|
||||
str8_lit_comp("empty"),
|
||||
@@ -401,7 +395,6 @@ str8_lit_comp("file_system"),
|
||||
str8_lit_comp("system_processes"),
|
||||
str8_lit_comp("entity_lister"),
|
||||
str8_lit_comp("symbol_lister"),
|
||||
str8_lit_comp("target"),
|
||||
str8_lit_comp("targets"),
|
||||
str8_lit_comp("file_path_map"),
|
||||
str8_lit_comp("auto_view_rules"),
|
||||
@@ -429,7 +422,7 @@ str8_lit_comp("exception_filters"),
|
||||
str8_lit_comp("settings"),
|
||||
};
|
||||
|
||||
DF_ViewSpecInfo df_g_gfx_view_kind_spec_info_table[34] =
|
||||
DF_ViewSpecInfo df_g_gfx_view_kind_spec_info_table[33] =
|
||||
{
|
||||
{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|0*DF_ViewSpecFlag_CanSerialize|0*DF_ViewSpecFlag_CanFilter|0*DF_ViewSpecFlag_FilterIsCode|0*DF_ViewSpecFlag_TypingAutomaticallyFilters), str8_lit_comp("null"), str8_lit_comp(""), DF_IconKind_Null, DF_VIEW_SETUP_FUNCTION_NAME(null), DF_VIEW_CMD_FUNCTION_NAME(null), DF_VIEW_UI_FUNCTION_NAME(null)},
|
||||
{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|0*DF_ViewSpecFlag_CanSerialize|0*DF_ViewSpecFlag_CanFilter|0*DF_ViewSpecFlag_FilterIsCode|0*DF_ViewSpecFlag_TypingAutomaticallyFilters), str8_lit_comp("empty"), str8_lit_comp(""), DF_IconKind_Null, DF_VIEW_SETUP_FUNCTION_NAME(empty), DF_VIEW_CMD_FUNCTION_NAME(empty), DF_VIEW_UI_FUNCTION_NAME(empty)},
|
||||
@@ -439,7 +432,6 @@ DF_ViewSpecInfo df_g_gfx_view_kind_spec_info_table[34] =
|
||||
{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|0*DF_ViewSpecFlag_CanSerialize|0*DF_ViewSpecFlag_CanFilter|0*DF_ViewSpecFlag_FilterIsCode|0*DF_ViewSpecFlag_TypingAutomaticallyFilters), str8_lit_comp("system_processes"), str8_lit_comp("System Processes"), DF_IconKind_Null, DF_VIEW_SETUP_FUNCTION_NAME(system_processes), DF_VIEW_CMD_FUNCTION_NAME(system_processes), DF_VIEW_UI_FUNCTION_NAME(system_processes)},
|
||||
{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|0*DF_ViewSpecFlag_CanSerialize|0*DF_ViewSpecFlag_CanFilter|0*DF_ViewSpecFlag_FilterIsCode|0*DF_ViewSpecFlag_TypingAutomaticallyFilters), str8_lit_comp("entity_lister"), str8_lit_comp("Entity List"), DF_IconKind_Null, DF_VIEW_SETUP_FUNCTION_NAME(entity_lister), DF_VIEW_CMD_FUNCTION_NAME(entity_lister), DF_VIEW_UI_FUNCTION_NAME(entity_lister)},
|
||||
{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|0*DF_ViewSpecFlag_CanSerialize|0*DF_ViewSpecFlag_CanFilter|0*DF_ViewSpecFlag_FilterIsCode|0*DF_ViewSpecFlag_TypingAutomaticallyFilters), str8_lit_comp("symbol_lister"), str8_lit_comp("Symbols"), DF_IconKind_Null, DF_VIEW_SETUP_FUNCTION_NAME(symbol_lister), DF_VIEW_CMD_FUNCTION_NAME(symbol_lister), DF_VIEW_UI_FUNCTION_NAME(symbol_lister)},
|
||||
{(0|1*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|0*DF_ViewSpecFlag_CanSerialize|0*DF_ViewSpecFlag_CanFilter|0*DF_ViewSpecFlag_FilterIsCode|0*DF_ViewSpecFlag_TypingAutomaticallyFilters), str8_lit_comp("target"), str8_lit_comp("Target"), DF_IconKind_Target, DF_VIEW_SETUP_FUNCTION_NAME(target), DF_VIEW_CMD_FUNCTION_NAME(target), DF_VIEW_UI_FUNCTION_NAME(target)},
|
||||
{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|1*DF_ViewSpecFlag_CanFilter|0*DF_ViewSpecFlag_FilterIsCode|1*DF_ViewSpecFlag_TypingAutomaticallyFilters), str8_lit_comp("targets"), str8_lit_comp("Targets"), DF_IconKind_Target, DF_VIEW_SETUP_FUNCTION_NAME(targets), DF_VIEW_CMD_FUNCTION_NAME(targets), DF_VIEW_UI_FUNCTION_NAME(targets)},
|
||||
{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|0*DF_ViewSpecFlag_CanFilter|0*DF_ViewSpecFlag_FilterIsCode|0*DF_ViewSpecFlag_TypingAutomaticallyFilters), str8_lit_comp("file_path_map"), str8_lit_comp("File Path Map"), DF_IconKind_FileOutline, DF_VIEW_SETUP_FUNCTION_NAME(file_path_map), DF_VIEW_CMD_FUNCTION_NAME(file_path_map), DF_VIEW_UI_FUNCTION_NAME(file_path_map)},
|
||||
{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|0*DF_ViewSpecFlag_CanFilter|0*DF_ViewSpecFlag_FilterIsCode|0*DF_ViewSpecFlag_TypingAutomaticallyFilters), str8_lit_comp("auto_view_rules"), str8_lit_comp("Auto View Rules"), DF_IconKind_Binoculars, DF_VIEW_SETUP_FUNCTION_NAME(auto_view_rules), DF_VIEW_CMD_FUNCTION_NAME(auto_view_rules), DF_VIEW_UI_FUNCTION_NAME(auto_view_rules)},
|
||||
|
||||
@@ -6,9 +6,79 @@
|
||||
#ifndef DBG_FRONTEND_META_H
|
||||
#define DBG_FRONTEND_META_H
|
||||
|
||||
typedef enum DF_RegSlot
|
||||
{
|
||||
DF_RegSlot_Null,
|
||||
DF_RegSlot_MachineID,
|
||||
DF_RegSlot_Process,
|
||||
DF_RegSlot_Module,
|
||||
DF_RegSlot_Thread,
|
||||
DF_RegSlot_Window,
|
||||
DF_RegSlot_Panel,
|
||||
DF_RegSlot_View,
|
||||
DF_RegSlot_PrevView,
|
||||
DF_RegSlot_DstPanel,
|
||||
DF_RegSlot_CfgTree,
|
||||
DF_RegSlot_CfgTreeList,
|
||||
DF_RegSlot_UnwindCount,
|
||||
DF_RegSlot_InlineDepth,
|
||||
DF_RegSlot_FilePath,
|
||||
DF_RegSlot_Cursor,
|
||||
DF_RegSlot_Mark,
|
||||
DF_RegSlot_TextKey,
|
||||
DF_RegSlot_LangKind,
|
||||
DF_RegSlot_Lines,
|
||||
DF_RegSlot_DbgiKey,
|
||||
DF_RegSlot_VaddrRange,
|
||||
DF_RegSlot_VoffRange,
|
||||
DF_RegSlot_PID,
|
||||
DF_RegSlot_ForceConfirm,
|
||||
DF_RegSlot_PreferDisasm,
|
||||
DF_RegSlot_Dir2,
|
||||
DF_RegSlot_String,
|
||||
DF_RegSlot_ParamsTree,
|
||||
DF_RegSlot_OSEvent,
|
||||
DF_RegSlot_COUNT,
|
||||
} DF_RegSlot;
|
||||
|
||||
typedef enum DF_MsgKind
|
||||
{
|
||||
DF_MsgKind_Null,
|
||||
DF_MsgKind_LaunchAndRun,
|
||||
DF_MsgKind_LaunchAndStepInto,
|
||||
DF_MsgKind_Kill,
|
||||
DF_MsgKind_KillAll,
|
||||
DF_MsgKind_Attach,
|
||||
DF_MsgKind_Detach,
|
||||
DF_MsgKind_Continue,
|
||||
DF_MsgKind_StepIntoInst,
|
||||
DF_MsgKind_StepOverInst,
|
||||
DF_MsgKind_StepIntoLine,
|
||||
DF_MsgKind_StepOverLine,
|
||||
DF_MsgKind_StepOut,
|
||||
DF_MsgKind_Halt,
|
||||
DF_MsgKind_SoftHaltRefresh,
|
||||
DF_MsgKind_SetThreadIP,
|
||||
DF_MsgKind_RunToLine,
|
||||
DF_MsgKind_RunToAddress,
|
||||
DF_MsgKind_Run,
|
||||
DF_MsgKind_Restart,
|
||||
DF_MsgKind_StepInto,
|
||||
DF_MsgKind_StepOver,
|
||||
DF_MsgKind_SelectThread,
|
||||
DF_MsgKind_SelectUnwind,
|
||||
DF_MsgKind_UpOneFrame,
|
||||
DF_MsgKind_DownOneFrame,
|
||||
DF_MsgKind_FreezeThread,
|
||||
DF_MsgKind_ThawThread,
|
||||
DF_MsgKind_FreezeProcess,
|
||||
DF_MsgKind_ThawProcess,
|
||||
DF_MsgKind_FreezeMachine,
|
||||
DF_MsgKind_ThawMachine,
|
||||
DF_MsgKind_FreezeLocalMachine,
|
||||
DF_MsgKind_ThawLocalMachine,
|
||||
DF_MsgKind_RunToCursor,
|
||||
DF_MsgKind_SetNextStatement,
|
||||
DF_MsgKind_Exit,
|
||||
DF_MsgKind_RunCommand,
|
||||
DF_MsgKind_ToggleDevMenu,
|
||||
@@ -229,7 +299,6 @@ DF_ViewKind_FileSystem,
|
||||
DF_ViewKind_SystemProcesses,
|
||||
DF_ViewKind_EntityLister,
|
||||
DF_ViewKind_SymbolLister,
|
||||
DF_ViewKind_Target,
|
||||
DF_ViewKind_Targets,
|
||||
DF_ViewKind_FilePathMap,
|
||||
DF_ViewKind_AutoViewRules,
|
||||
@@ -376,6 +445,71 @@ DF_SettingCode_HintCodeText,
|
||||
DF_SettingCode_COUNT,
|
||||
} DF_SettingCode;
|
||||
|
||||
typedef struct DF_Regs DF_Regs;
|
||||
struct DF_Regs
|
||||
{
|
||||
CTRL_MachineID machine_id;
|
||||
DMN_Handle process;
|
||||
DMN_Handle module;
|
||||
DMN_Handle thread;
|
||||
DF_Handle window;
|
||||
DF_Handle panel;
|
||||
DF_Handle view;
|
||||
DF_Handle prev_view;
|
||||
DF_Handle dst_panel;
|
||||
DF_Handle cfg_tree;
|
||||
DF_HandleList cfg_tree_list;
|
||||
U64 unwind_count;
|
||||
U64 inline_depth;
|
||||
String8 file_path;
|
||||
TxtPt cursor;
|
||||
TxtPt mark;
|
||||
U128 text_key;
|
||||
TXT_LangKind lang_kind;
|
||||
D_LineList lines;
|
||||
DI_Key dbgi_key;
|
||||
Rng1U64 vaddr_range;
|
||||
Rng1U64 voff_range;
|
||||
U32 pid;
|
||||
B32 force_confirm;
|
||||
B32 prefer_disasm;
|
||||
Dir2 dir2;
|
||||
String8 string;
|
||||
MD_Node * params_tree;
|
||||
OS_Event * os_event;
|
||||
};
|
||||
|
||||
#define df_regs_lit_init_top \
|
||||
.machine_id = df_regs()->machine_id,\
|
||||
.process = df_regs()->process,\
|
||||
.module = df_regs()->module,\
|
||||
.thread = df_regs()->thread,\
|
||||
.window = df_regs()->window,\
|
||||
.panel = df_regs()->panel,\
|
||||
.view = df_regs()->view,\
|
||||
.prev_view = df_regs()->prev_view,\
|
||||
.dst_panel = df_regs()->dst_panel,\
|
||||
.cfg_tree = df_regs()->cfg_tree,\
|
||||
.cfg_tree_list = df_regs()->cfg_tree_list,\
|
||||
.unwind_count = df_regs()->unwind_count,\
|
||||
.inline_depth = df_regs()->inline_depth,\
|
||||
.file_path = df_regs()->file_path,\
|
||||
.cursor = df_regs()->cursor,\
|
||||
.mark = df_regs()->mark,\
|
||||
.text_key = df_regs()->text_key,\
|
||||
.lang_kind = df_regs()->lang_kind,\
|
||||
.lines = df_regs()->lines,\
|
||||
.dbgi_key = df_regs()->dbgi_key,\
|
||||
.vaddr_range = df_regs()->vaddr_range,\
|
||||
.voff_range = df_regs()->voff_range,\
|
||||
.pid = df_regs()->pid,\
|
||||
.force_confirm = df_regs()->force_confirm,\
|
||||
.prefer_disasm = df_regs()->prefer_disasm,\
|
||||
.dir2 = df_regs()->dir2,\
|
||||
.string = df_regs()->string,\
|
||||
.params_tree = df_regs()->params_tree,\
|
||||
.os_event = df_regs()->os_event,\
|
||||
|
||||
DF_VIEW_SETUP_FUNCTION_DEF(null);
|
||||
DF_VIEW_SETUP_FUNCTION_DEF(empty);
|
||||
DF_VIEW_SETUP_FUNCTION_DEF(getting_started);
|
||||
@@ -384,7 +518,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(file_system);
|
||||
DF_VIEW_SETUP_FUNCTION_DEF(system_processes);
|
||||
DF_VIEW_SETUP_FUNCTION_DEF(entity_lister);
|
||||
DF_VIEW_SETUP_FUNCTION_DEF(symbol_lister);
|
||||
DF_VIEW_SETUP_FUNCTION_DEF(target);
|
||||
DF_VIEW_SETUP_FUNCTION_DEF(targets);
|
||||
DF_VIEW_SETUP_FUNCTION_DEF(file_path_map);
|
||||
DF_VIEW_SETUP_FUNCTION_DEF(auto_view_rules);
|
||||
@@ -418,7 +551,6 @@ DF_VIEW_CMD_FUNCTION_DEF(file_system);
|
||||
DF_VIEW_CMD_FUNCTION_DEF(system_processes);
|
||||
DF_VIEW_CMD_FUNCTION_DEF(entity_lister);
|
||||
DF_VIEW_CMD_FUNCTION_DEF(symbol_lister);
|
||||
DF_VIEW_CMD_FUNCTION_DEF(target);
|
||||
DF_VIEW_CMD_FUNCTION_DEF(targets);
|
||||
DF_VIEW_CMD_FUNCTION_DEF(file_path_map);
|
||||
DF_VIEW_CMD_FUNCTION_DEF(auto_view_rules);
|
||||
@@ -452,7 +584,6 @@ DF_VIEW_UI_FUNCTION_DEF(file_system);
|
||||
DF_VIEW_UI_FUNCTION_DEF(system_processes);
|
||||
DF_VIEW_UI_FUNCTION_DEF(entity_lister);
|
||||
DF_VIEW_UI_FUNCTION_DEF(symbol_lister);
|
||||
DF_VIEW_UI_FUNCTION_DEF(target);
|
||||
DF_VIEW_UI_FUNCTION_DEF(targets);
|
||||
DF_VIEW_UI_FUNCTION_DEF(file_path_map);
|
||||
DF_VIEW_UI_FUNCTION_DEF(auto_view_rules);
|
||||
@@ -492,14 +623,14 @@ DF_VIEW_RULE_LINE_STRINGIZE_FUNCTION_DEF(no_addr);
|
||||
DF_VIEW_RULE_ROW_UI_FUNCTION_DEF(checkbox);
|
||||
DF_VIEW_RULE_ROW_UI_FUNCTION_DEF(color_rgba);
|
||||
C_LINKAGE_BEGIN
|
||||
extern Rng1U64 df_reg_slot_range_table[30];
|
||||
extern DF_MsgKindInfo df_msg_kind_info_table[134];
|
||||
extern DF_MsgKindInfo df_d_msg_kind_info_table[36];
|
||||
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];
|
||||
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 String8 df_view_kind_name_lower_table[33];
|
||||
extern DF_ViewSpecInfo df_g_gfx_view_kind_spec_info_table[33];
|
||||
extern DF_IconKind df_cmd_kind_icon_kind_table[221];
|
||||
extern DF_IconKind df_entity_kind_icon_kind_table[28];
|
||||
extern D_CmdParamSlot df_g_cmd_param_slot_2_view_spec_src_map[7];
|
||||
|
||||
+3
-2
@@ -169,8 +169,6 @@ struct MD_Node
|
||||
MD_Node *parent;
|
||||
MD_Node *first;
|
||||
MD_Node *last;
|
||||
|
||||
// rjf: tag links
|
||||
MD_Node *first_tag;
|
||||
MD_Node *last_tag;
|
||||
|
||||
@@ -182,6 +180,9 @@ struct MD_Node
|
||||
|
||||
// rjf: source code info
|
||||
U64 src_offset;
|
||||
|
||||
// rjf: user-controlled data attachments
|
||||
U64 user_gen;
|
||||
};
|
||||
|
||||
typedef struct MD_NodeRec MD_NodeRec;
|
||||
|
||||
@@ -548,7 +548,7 @@ os_w32_wnd_proc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
U64 name_size = DragQueryFile(drop, idx, 0, 0) + 1;
|
||||
U8 *name_ptr = push_array(os_w32_event_arena, U8, name_size);
|
||||
DragQueryFile(drop, idx, name_ptr, name_size);
|
||||
DragQueryFile(drop, idx, (char *)name_ptr, name_size);
|
||||
str8_list_push(os_w32_event_arena, &event->strings, str8(name_ptr, name_size));
|
||||
}
|
||||
DragFinish(drop);
|
||||
|
||||
Reference in New Issue
Block a user