Revert "checkpoint"

This reverts commit 3631de648b.
This commit is contained in:
Ryan Fleury
2024-09-07 14:48:21 -07:00
parent 3631de648b
commit 30766f93ae
17 changed files with 654 additions and 1345 deletions
+1 -1
View File
@@ -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, },
+4 -38
View File
@@ -1660,8 +1660,6 @@ d_entity_equip_param(D_Entity *entity, String8 key, String8 value)
//- rjf: opening folders/files & maintaining the entity model of the filesystem
#if 0 // TODO(rjf): @msgs
internal D_Entity *
d_entity_from_path(String8 path, D_EntityFromPathFlags flags)
{
@@ -1791,14 +1789,11 @@ d_entity_from_path(String8 path, D_EntityFromPathFlags flags)
return result;
}
#endif
//- rjf: file path map override lookups
internal String8List
d_possible_overrides_from_file_path(Arena *arena, String8 file_path)
{
#if 0 // TODO(rjf): @msgs
// NOTE(rjf): This path, given some target file path, scans all file path map
// overrides, and collects the set of file paths which could've redirected
// to the target file path given the set of file path maps.
@@ -1867,15 +1862,10 @@ d_possible_overrides_from_file_path(Arena *arena, String8 file_path)
}
scratch_end(scratch);
return result;
#endif
String8List result = {0};
return result;
}
//- rjf: top-level state queries
#if 0 // TODO(rjf): @msgs
internal D_Entity *
d_entity_root(void)
{
@@ -2017,8 +2007,6 @@ d_entity_from_u64_and_kind(U64 u64, D_EntityKind kind)
return result;
}
#endif
//- rjf: entity freezing state
internal void
@@ -2643,7 +2631,6 @@ d_trap_net_from_thread__step_into_line(Arena *arena, CTRL_Entity *thread)
////////////////////////////////
//~ rjf: Modules & Debug Info Mappings
#if 0 // TODO(rjf): @msgs
//- rjf: module <=> debug info keys
internal DI_Key
@@ -2715,7 +2702,6 @@ d_vaddr_range_from_voff_range(D_Entity *module, Rng1U64 voff_rng)
vaddr_rng.max = vaddr_rng.min + rng_size;
return vaddr_rng;
}
#endif
////////////////////////////////
//~ rjf: Debug Info Lookups
@@ -3353,7 +3339,6 @@ internal U128
d_hash_from_ctrl_param_state(void)
{
U128 result = {0};
#if 0 // TODO(rjf): @msgs
Temp scratch = scratch_begin(0, 0);
{
// rjf: build data strings of all param data
@@ -3382,7 +3367,6 @@ d_hash_from_ctrl_param_state(void)
blake2b((U8 *)&result.u64[0], sizeof(result), string.str, string.size, 0, 0);
}
scratch_end(scratch);
#endif
return result;
}
@@ -3406,7 +3390,6 @@ internal void
d_ctrl_run(D_RunKind run, CTRL_Entity *run_thread, CTRL_RunFlags flags, CTRL_TrapList *run_traps)
{
Temp scratch = scratch_begin(0, 0);
#if 0 // TODO(rjf): @msgs
// rjf: compute hash of all run-parameterization entities, store
{
@@ -3508,7 +3491,6 @@ d_ctrl_run(D_RunKind run, CTRL_Entity *run_thread, CTRL_RunFlags flags, CTRL_Tra
d_state->base_regs.v.unwind_count = 0;
d_state->base_regs.v.inline_depth = 0;
#endif
scratch_end(scratch);
}
@@ -5899,17 +5881,16 @@ internal DI_KeyList
d_push_active_dbgi_key_list(Arena *arena)
{
DI_KeyList dbgis = {0};
CTRL_EntityList modules = ctrl_entity_list_from_kind(d_state->ctrl_entity_store, CTRL_EntityKind_Module);
for(CTRL_EntityNode *n = modules.first; n != 0; n = n->next)
D_EntityList modules = d_query_cached_entity_list_with_kind(D_EntityKind_Module);
for(D_EntityNode *n = modules.first; n != 0; n = n->next)
{
CTRL_Entity *module = n->v;
DI_Key key = ctrl_dbgi_key_from_module(module);
D_Entity *module = n->entity;
DI_Key key = d_dbgi_key_from_module(module);
di_key_list_push(arena, &dbgis, &key);
}
return dbgis;
}
#if 0 // TODO(rjf): @msgs
internal D_EntityList
d_push_active_target_list(Arena *arena)
{
@@ -5924,11 +5905,9 @@ d_push_active_target_list(Arena *arena)
}
return active_targets;
}
#endif
//- rjf: expand key based entity queries
#if 0 // TODO(rjf): @msgs
internal D_Entity *
d_entity_from_expand_key_and_kind(D_ExpandKey key, D_EntityKind kind)
{
@@ -5945,7 +5924,6 @@ d_entity_from_expand_key_and_kind(D_ExpandKey key, D_EntityKind kind)
}
return result;
}
#endif
//- rjf: per-run caches
@@ -6599,7 +6577,6 @@ d_tick(Arena *arena, DI_Scope *di_scope, F32 dt)
}
// rjf: kill all entities which are marked to die on stop
#if 0 // TODO(rjf): @msgs
{
D_Entity *request = d_entity_from_id(event->msg_id);
if(d_entity_is_nil(request))
@@ -6615,7 +6592,6 @@ d_tick(Arena *arena, DI_Scope *di_scope, F32 dt)
}
}
}
#endif
}break;
//- rjf: entity creation/deletion
@@ -6773,7 +6749,6 @@ d_tick(Arena *arena, DI_Scope *di_scope, F32 dt)
}
}break;
#if 0 // TODO(rjf): @msgs
case CTRL_EventKind_EndProc:
{
U32 pid = event->entity_id;
@@ -6793,11 +6768,9 @@ d_tick(Arena *arena, DI_Scope *di_scope, F32 dt)
D_Entity *module = d_entity_from_ctrl_handle(event->machine_id, event->entity);
d_entity_mark_for_deletion(module);
}break;
#endif
//- rjf: debug info changes
#if 0 // TODO(rjf): @msgs
case CTRL_EventKind_ModuleDebugInfoPathChange:
{
D_Entity *module = d_entity_from_ctrl_handle(event->machine_id, event->entity);
@@ -6809,7 +6782,6 @@ d_tick(Arena *arena, DI_Scope *di_scope, F32 dt)
d_entity_equip_name(debug_info, event->string);
d_entity_equip_timestamp(debug_info, event->timestamp);
}break;
#endif
//- rjf: debug strings
@@ -6819,7 +6791,6 @@ d_tick(Arena *arena, DI_Scope *di_scope, F32 dt)
mtx_push_op(d_state->output_log_key, op);
}break;
#if 0 // TODO(rjf): @msgs
case CTRL_EventKind_ThreadName:
{
String8 string = event->string;
@@ -6844,7 +6815,6 @@ d_tick(Arena *arena, DI_Scope *di_scope, F32 dt)
d_entity_equip_name(entity, string);
}
}break;
#endif
//- rjf: memory
@@ -6949,7 +6919,6 @@ d_tick(Arena *arena, DI_Scope *di_scope, F32 dt)
ProfScope("sync with di parsers")
{
Temp scratch = scratch_begin(&arena, 1);
#if 0 // TODO(rjf): @msgs
DI_EventList events = di_p2u_pop_events(scratch.arena, 0);
for(DI_EventNode *n = events.first; n != 0; n = n->next)
{
@@ -6972,7 +6941,6 @@ d_tick(Arena *arena, DI_Scope *di_scope, F32 dt)
}break;
}
}
#endif
scratch_end(scratch);
}
@@ -9284,7 +9252,6 @@ d_tick(Arena *arena, DI_Scope *di_scope, F32 dt)
#endif
//- rjf: add macros for all watches which define identifiers
#if 0 // TODO(rjf): @msgs
D_EntityList watches = d_query_cached_entity_list_with_kind(D_EntityKind_Watch);
for(D_EntityNode *n = watches.first; n != 0; n = n->next)
{
@@ -9297,7 +9264,6 @@ d_tick(Arena *arena, DI_Scope *di_scope, F32 dt)
e_push_leaf_ident_exprs_from_expr__in_place(arena, ctx->macro_map, parse.expr);
}
}
#endif
}
e_select_ir_ctx(ir_ctx);
-12
View File
@@ -1293,15 +1293,12 @@ internal void d_entity_equip_params(D_Entity *entity, MD_Node *params);
internal void d_entity_equip_param(D_Entity *entity, String8 key, String8 value);
//- rjf: opening folders/files & maintaining the entity model of the filesystem
#if 0 // TODO(rjf): @msgs
internal D_Entity *d_entity_from_path(String8 path, D_EntityFromPathFlags flags);
#endif
//- rjf: file path map override lookups
internal String8List d_possible_overrides_from_file_path(Arena *arena, String8 file_path);
//- rjf: top-level state queries
#if 0 // TODO(rjf): @msgs
internal D_Entity *d_entity_root(void);
internal D_EntityList d_push_entity_list_with_kind(Arena *arena, D_EntityKind kind);
internal D_Entity *d_entity_from_id(D_EntityID id);
@@ -1310,7 +1307,6 @@ internal D_Entity *d_entity_from_ctrl_handle(CTRL_MachineID machine_id, DMN_Hand
internal D_Entity *d_entity_from_ctrl_id(CTRL_MachineID machine_id, U32 id);
internal D_Entity *d_entity_from_name_and_kind(String8 string, D_EntityKind kind);
internal D_Entity *d_entity_from_u64_and_kind(U64 u64, D_EntityKind kind);
#endif
//- rjf: entity freezing state
internal void d_set_thread_freeze_state(D_Entity *thread, B32 frozen);
@@ -1341,7 +1337,6 @@ internal CTRL_TrapList d_trap_net_from_thread__step_into_line(Arena *arena, CTRL
////////////////////////////////
//~ rjf: Modules & Debug Info Mappings
#if 0 // TODO(rjf): @msgs
//- rjf: module <=> debug info keys
internal DI_Key d_dbgi_key_from_module(D_Entity *module);
internal D_EntityList d_modules_from_dbgi_key(Arena *arena, DI_Key *dbgi_key);
@@ -1352,7 +1347,6 @@ internal U64 d_voff_from_vaddr(D_Entity *module, U64 vaddr);
internal U64 d_vaddr_from_voff(D_Entity *module, U64 voff);
internal Rng1U64 d_voff_range_from_vaddr_range(D_Entity *module, Rng1U64 vaddr_rng);
internal Rng1U64 d_vaddr_range_from_voff_range(D_Entity *module, Rng1U64 voff_rng);
#endif
////////////////////////////////
//~ rjf: Debug Info Lookups
@@ -1557,20 +1551,14 @@ internal void d_cfg_push_write_string(D_CfgSrc src, String8 string);
internal String8 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);
#endif
//- rjf: active entity based queries
internal DI_KeyList d_push_active_dbgi_key_list(Arena *arena);
#if 0 // TODO(rjf): @msgs
internal D_EntityList d_push_active_target_list(Arena *arena);
#endif
//- rjf: expand key based entity queries
#if 0 // TODO(rjf): @msgs
internal D_Entity *d_entity_from_expand_key_and_kind(D_ExpandKey key, D_EntityKind kind);
#endif
//- rjf: per-run caches
internal CTRL_Unwind d_query_cached_unwind_from_thread(CTRL_Entity *thread);
+4 -9
View File
@@ -78,11 +78,10 @@ DF_MsgKindTable:
//- 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 ""}
{SetCurrentPath "" run_command 0 0 Null Nil 0 0 0 0 0 0 Null ""}
{ToggleDevMenu "" toggle_dev_menu 0 0 Null Nil 0 0 0 0 0 0 Null ""}
{RegisterAsJITDebugger "Register As JIT Debugger" register_as_jit_debugger 0 0 Null Nil 0 0 0 0 0 0 Null ""}
{LogMarker "Log Marker" log_marker 0 0 Null Nil 0 0 0 0 0 0 Null ""}
{LogMarker "Log Marker" log_marker 0 0 Null Nil 0 0 0 0 0 0 Null ""}
//- rjf: config reading/writing
{LoadUser "" load_user 0 0 Null Nil 0 0 0 0 0 0 Null ""}
{LoadProject "" load_project 0 0 Null Nil 0 0 0 0 0 0 Null ""}
@@ -125,10 +124,7 @@ DF_MsgKindTable:
{ToggleBreakpointAtCursor "Toggle Breakpoint At Cursor" toggle_breakpoint_at_cursor 0 0 Null Nil 0 0 0 0 0 0 Null ""}
{ToggleWatchPinAtCursor "Toggle Watch Pin At Cursor" toggle_watch_pin_at_cursor 0 0 Null Nil 0 0 0 0 0 0 Null ""}
{ToggleWatchExpressionAtCursor "Toggle Watch Expression At Cursor" toggle_watch_expression_at_cursor 0 0 Null Nil 0 0 0 0 0 0 Null ""}
//- rjf: at-mouse operations
{ToggleWatchExpressionAtMouse "Toggle Watch Expression At Mouse" toggle_watch_expression_at_mouse 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 ""}
{CloseWindow "" close_window 0 0 Null Nil 0 0 0 0 0 0 Null ""}
@@ -197,8 +193,7 @@ DF_MsgKindTable:
{TabBarBottom "" tab_bar_bottom 0 0 Null Nil 0 0 0 0 0 0 Null ""}
//- rjf: tab filters
{Filter "" filter 0 0 Null Nil 0 0 0 0 0 0 Null ""}
{SetFilter "" set_filter 0 0 Null Nil 0 0 0 0 0 0 Null ""}
{Filter "" filter 0 0 Null Nil 0 0 0 0 0 0 Null ""}
{ClearFilter "" clear_filter 0 0 Null Nil 0 0 0 0 0 0 Null ""}
{ApplyFilter "" apply_filter 0 0 Null Nil 0 0 0 0 0 0 Null ""}
File diff suppressed because it is too large Load Diff
+37 -78
View File
@@ -9,7 +9,6 @@
typedef enum DF_CfgSlot
{
DF_CfgSlot_Null,
DF_CfgSlot_User,
DF_CfgSlot_Project,
DF_CfgSlot_CommandLine,
@@ -17,23 +16,13 @@ typedef enum DF_CfgSlot
}
DF_CfgSlot;
////////////////////////////////
//~ rjf: String Allocation Types
typedef struct DF_StringChunkNode DF_StringChunkNode;
struct DF_StringChunkNode
{
DF_StringChunkNode *next;
U64 size;
};
////////////////////////////////
//~ rjf: Handle Types
typedef struct DF_Handle DF_Handle;
struct DF_Handle
{
U64 u64[2];
U64 u64[4];
};
typedef struct DF_HandleNode DF_HandleNode;
@@ -351,6 +340,14 @@ typedef enum DF_DragDropState
}
DF_DragDropState;
typedef struct DF_DragDropPayload DF_DragDropPayload;
struct DF_DragDropPayload
{
DF_Handle cfg_tree;
D_Handle entity;
TxtPt text_point;
};
////////////////////////////////
//~ rjf: Rich Hover Types
@@ -454,7 +451,6 @@ struct DF_MsgKindInfo
String8 search_tags;
DF_MsgKindFlags flags;
DF_MsgQuery query;
U32 icon_kind;
};
////////////////////////////////
@@ -616,10 +612,6 @@ struct DF_Window
B32 menu_bar_key_held;
B32 menu_bar_focus_press_started;
// rjf: context menu state
Arena *ctx_menu_arena;
DF_Regs *ctx_menu_regs;
// rjf: code context menu state
Arena *code_ctx_menu_arena;
String8 code_ctx_menu_file_path;
@@ -693,6 +685,11 @@ struct DF_Window
F32 hover_eval_open_t;
F32 hover_eval_num_visible_rows_t;
// rjf: error state
U8 error_buffer[512];
U64 error_string_size;
F32 error_t;
// rjf: panel state
DF_Panel *root_panel;
DF_Panel *free_panel;
@@ -736,9 +733,6 @@ struct DF_State
Arena *arena;
B32 quit;
U64 frame_index;
F32 dt;
Log *log;
String8 log_path;
// rjf: frame arenas
Arena *frame_arenas[2];
@@ -752,11 +746,12 @@ struct DF_State
// rjf: frame request state
U64 num_frames_requested;
// rjf: config tree state
Arena *cfg_arena;
// rjf: config trees
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];
MD_Node *cfg_free;
DF_StringChunkNode *cfg_free_string_chunks[8];
// rjf: interaction registers
DF_RegsNode base_regs;
@@ -782,13 +777,11 @@ struct DF_State
U64 key_map_total_count;
// rjf: bind change
Arena *bind_change_arena;
B32 bind_change_active;
String8 bind_change_msg_name;
DF_Handle bind_change_bind_handle;
D_CmdSpec *bind_change_cmd_spec;
DF_Binding bind_change_binding;
// rjf: top-level context menu keys
UI_Key ctx_menu_key;
UI_Key code_ctx_menu_key;
UI_Key entity_ctx_menu_key;
UI_Key tab_ctx_menu_key;
@@ -802,12 +795,6 @@ struct DF_State
String8 confirm_title;
String8 confirm_desc;
// rjf: error popup state
Arena *error_arena;
String8 error_string;
F32 error_num_seconds_shown;
F32 error_num_seconds_to_show;
// rjf: string search state
Arena *string_search_arena;
String8 string_search_string;
@@ -829,7 +816,7 @@ struct DF_State
DF_Window *free_window;
U64 window_count;
B32 last_window_queued_save;
DF_Handle last_focused_window;
D_Handle last_focused_window;
// rjf: view state
DF_View *first_view;
@@ -908,6 +895,7 @@ read_only global DF_Panel df_nil_panel =
};
global DF_State *df_state = 0;
global DF_DragDropPayload df_drag_drop_payload = {0};
global D_Handle df_last_drag_drop_panel = {0};
global D_Handle df_last_drag_drop_prev_tab = {0};
@@ -1006,12 +994,6 @@ internal void df_queue_drag_drop(void);
internal void df_set_rich_hover_info(DF_RichHoverInfo *info);
internal DF_RichHoverInfo df_get_rich_hover_info(void);
////////////////////////////////
//~ rjf: Context Menu Opening
internal void df_ctx_menu_open_(UI_Box *box, DF_Regs *regs);
#define df_ctx_menu_open(box, ...) df_ctx_menu_open_((box), &(DF_Regs){df_regs_lit_init_top __VA_ARGS__})
////////////////////////////////
//~ rjf: View Spec State Functions
@@ -1117,48 +1099,26 @@ internal Arena *df_frame_arena(void);
internal DF_Handle df_handle_from_cfg_tree(MD_Node *cfg);
internal MD_Node *df_cfg_tree_from_handle(DF_Handle handle);
//- rjf: cfg tree -> slot
internal DF_CfgSlot df_cfg_slot_from_tree(MD_Node *node);
//- rjf: cfg slot allocations
internal MD_Node *df_cfg_node_alloc(void);
internal void df_cfg_node_release(MD_Node *node);
internal U64 df_cfg_string_bucket_idx_from_string_size(U64 size);
internal String8 df_cfg_string_alloc(String8 string);
internal void df_cfg_string_release(String8 string);
//- rjf: tree -> cfg slot copying
internal MD_Node *df_cfg_tree_copy(MD_Node *src);
//- rjf: string -> cfg tree helpers
internal MD_Node *df_file_cfg_tree_from_string(String8 string);
internal MD_Node *df_single_cfg_tree_from_string(String8 string);
internal MD_Node *df_single_cfg_tree_from_stringf(char *fmt, ...);
//- rjf: cfg node string replacing helper
internal void df_cfg_tree_set_string(MD_Node *node, String8 new_string);
internal void df_cfg_tree_set_stringf(MD_Node *node, char *fmt, ...);
//- rjf: cfg subtree replacing helper
internal MD_Node *df_cfg_tree_set_key(MD_Node *root, String8 key, String8 value);
internal MD_Node *df_cfg_tree_set_keyf(MD_Node *root, String8 key, char *fmt, ...);
//- rjf: key string <-> cfg tree
//- 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);
//- rjf: cfg tree general introspection helpers
internal MD_Node *df_cfg_tree_last_from_key(MD_Node *root, String8 key);
internal Vec4F32 df_rgba_from_cfg_tree(MD_Node *cfg);
//- rjf: config tree mutations
internal DF_CfgSlot df_cfg_slot_from_tree(MD_Node *node);
internal MD_Node *df_cfg_tree_store(MD_Node *parent, MD_Node *prev_child, String8 string);
internal MD_Node *df_cfg_tree_storef(MD_Node *parent, MD_Node *prev_child, char *fmt, ...);
internal void df_cfg_tree_set_string(MD_Node *node, String8 string);
internal void df_cfg_tree_set_stringf(MD_Node *node, char *fmt, ...);
internal void df_cfg_tree_insert_child(MD_Node *parent, MD_Node *prev_child, MD_Node *node);
internal void df_cfg_tree_release(MD_Node *node);
#define df_cfg_tree_set_key(parent, key, val) df_cfg_tree_store((parent), md_child_from_string((parent), (key), 0), (val))
#define df_cfg_tree_set_keyf(parent, key, fmt, ...) df_cfg_tree_storef((parent), md_child_from_string((parent), (key), 0), (fmt), __VA_ARGS__)
//- rjf: window/panel/tab tree introspection helpers
//- rjf: config tree lookups
internal Axis2 df_split_axis_from_panel_cfg(MD_Node *panel);
internal Rng2F32 df_target_rect_from_panel_child_cfg(Rng2F32 parent_rect, Axis2 parent_split_axis, MD_Node *panel);
internal Rng2F32 df_target_rect_from_panel_cfg(Rng2F32 root_rect, MD_Node *panel);
internal B32 df_tab_cfg_is_project_filtered(MD_Node *cfg);
#define df_window_from_panel_cfg(node) md_ancestor_from_string((node), str8_lit("window"), 0)
#define df_panel_tree_from_panel_cfg(node) (str8_match((node)->string, str8_lit("panels"), 0) ? (node) : md_ancestor_from_string((node), str8_lit("panels"), 0))
#define df_panel_tree_from_window_cfg(node) md_child_from_string((node), str8_lit("panels"), 0)
//- rjf: keybindings
internal void df_clear_bindings(void);
@@ -1205,10 +1165,9 @@ internal void df_request_frame(void);
internal DF_Regs *df_regs(void);
internal DF_Regs *df_base_regs(void);
internal DF_Regs *df_push_regs_(DF_Regs *regs);
#define df_push_regs(...) df_push_regs_(&(DF_Regs){df_regs_lit_init_top __VA_ARGS__ })
internal DF_Regs *df_push_regs(void);
internal DF_Regs *df_pop_regs(void);
#define DF_RegsScope(...) DeferLoop(df_push_regs(__VA_ARGS__), df_pop_regs())
#define DF_RegsScope DeferLoop(df_push_regs(), df_pop_regs())
////////////////////////////////
//~ rjf: Message Functions
File diff suppressed because it is too large Load Diff
-24
View File
@@ -151,30 +151,6 @@ struct DF_WatchViewState
B32 text_editing;
};
////////////////////////////////
//~ rjf: View Building API
//- rjf: getting view parameters
internal U128 get_view_id(void); // TODO(rjf): @msgs {(U64)view, d_hash_from_string(str8_struct(&view))}
internal String8 get_view_expression(void);
internal String8 get_view_filter(void);
internal UI_ScrollPt2 get_view_scroll_position(void);
//- rjf: overwriting view parameters
internal void set_view_expression(String8 string);
internal void set_view_filter(String8 string);
internal void set_view_scroll_position(UI_ScrollPt2 pos);
//- rjf: getting view resources (top-level view lifetime arena, extra arenas, user state slot)
internal Arena *get_view_arena(void);
internal void *get_or_push_view_state(U64 needed_size);
#define get_view_state(T) (T *)get_or_push_view_state(sizeof(T))
internal Arena *push_view_extension_arena(void);
//- rjf: view completion
internal void complete_view_(String8 string);
#define complete_view(...)
////////////////////////////////
//~ rjf: Code View Functions
+53 -172
View File
@@ -91,52 +91,9 @@ df_loading_overlay(Rng2F32 rect, F32 loading_t, U64 progress_v, U64 progress_v_t
////////////////////////////////
//~ rjf: UI Widgets: Fancy Buttons
internal void
df_keybinding_buttons(String8 msg_name)
{
Temp scratch = scratch_begin(0, 0);
// rjf: gather all keybinding maps
typedef struct MapTask MapTask;
struct MapTask
{
MapTask *next;
MD_Node *root;
};
MapTask *first_task = 0;
MapTask *last_task = 0;
for(EachEnumVal(DF_CfgSlot, slot))
{
for(MD_EachNode(tln, df_state->cfg_slot_roots[slot]->first))
{
if(!str8_match(tln->string, str8_lit("keybindings"), 0)) { continue; }
MapTask *t = push_array(scratch.arena, MapTask, 1);
SLLQueuePush(first_task, last_task, t);
t->root = tln;
}
}
// rjf: build button for each binding
for(MapTask *t = first_task; t != 0; t = t->next)
{
for(MD_Node *map = md_node_from_chain_string(t->root->first, &md_nil_node, msg_name, 0);
!md_node_is_nil(map);
map = md_node_from_chain_string(map->next, &md_nil_node, msg_name, 0))
{
// rjf: determine if this binding is being rebound
B32 rebinding_active_for_this_binding = (df_state->bind_change_active &&
df_handle_match(df_state->bind_change_bind_handle, df_handle_from_cfg_tree(map)) &&
str8_match(df_state->bind_change_msg_name, msg_name, 0));
// TODO(rjf): @msgs
}
}
scratch_end(scratch);
}
internal void
df_cmd_binding_buttons(D_CmdSpec *spec)
{
#if 0 // TODO(rjf): @msgs
Temp scratch = scratch_begin(0, 0);
DF_BindingList bindings = df_bindings_from_spec(scratch.arena, spec);
@@ -220,7 +177,7 @@ df_cmd_binding_buttons(D_CmdSpec *spec)
{
if((binding.key == OS_Key_Esc || binding.key == OS_Key_Delete) && binding.flags == 0)
{
log_user_error(str8_lit("Cannot rebind; this command uses a reserved keybinding."));
d_error(str8_lit("Cannot rebind; this command uses a reserved keybinding."));
}
else
{
@@ -313,7 +270,6 @@ df_cmd_binding_buttons(D_CmdSpec *spec)
}
scratch_end(scratch);
#endif
}
internal UI_Signal
@@ -325,62 +281,6 @@ df_menu_bar_button(String8 string)
return sig;
}
internal UI_Signal
df_msg_button(String8 msg_name)
{
ui_set_next_hover_cursor(OS_Cursor_HandPoint);
ui_set_next_child_layout_axis(Axis2_X);
UI_Box *box = ui_build_box_from_stringf(UI_BoxFlag_DrawBorder|
UI_BoxFlag_DrawBackground|
UI_BoxFlag_DrawHotEffects|
UI_BoxFlag_DrawActiveEffects|
UI_BoxFlag_Clickable,
"###msg_%S", msg_name);
UI_Parent(box) UI_HeightFill UI_Padding(ui_em(1.f, 1.f))
{
DF_MsgKind kind = df_msg_kind_from_string(msg_name);
DF_MsgKindInfo *info = &df_msg_kind_info_table[kind];
DF_IconKind icon_kind = info->icon_kind;
if(icon_kind != DF_IconKind_Null)
{
DF_Font(DF_FontSlot_Icons)
UI_PrefWidth(ui_em(2.f, 1.f))
UI_TextAlignment(UI_TextAlign_Center)
UI_FlagsAdd(UI_BoxFlag_DrawTextWeak)
{
ui_label(df_g_icon_kind_text_table[icon_kind]);
}
}
UI_PrefWidth(ui_text_dim(10, 1.f))
{
UI_Flags(UI_BoxFlag_DrawTextFastpathCodepoint)
UI_FastpathCodepoint(box->fastpath_codepoint)
{
if(info->display_name.size != 0)
{
ui_label(info->display_name);
}
else
{
DF_Font(DF_FontSlot_Code) ui_label(msg_name);
}
}
ui_spacer(ui_pct(1, 0));
ui_set_next_flags(UI_BoxFlag_Clickable);
ui_set_next_group_key(ui_key_zero());
UI_PrefWidth(ui_children_sum(1))
UI_NamedRow(str8_lit("###bindings"))
UI_FlagsAdd(UI_BoxFlag_DrawTextWeak)
UI_FastpathCodepoint(0)
{
df_keybinding_buttons(msg_name);
}
}
}
UI_Signal sig = ui_signal_from_box(box);
return sig;
}
internal UI_Signal
df_cmd_spec_button(D_CmdSpec *spec)
{
@@ -430,7 +330,7 @@ df_cmd_spec_button(D_CmdSpec *spec)
internal void
df_cmd_list_menu_buttons(U64 count, D_CmdKind *cmds, U32 *fastpath_codepoints)
{
#if 0 // TODO(rjf): @msgs
Temp scratch = scratch_begin(0, 0);
for(U64 idx = 0; idx < count; idx += 1)
{
D_CmdSpec *spec = d_cmd_spec_from_kind(cmds[idx]);
@@ -444,25 +344,7 @@ df_cmd_list_menu_buttons(U64 count, D_CmdKind *cmds, U32 *fastpath_codepoints)
window->menu_bar_focused = 0;
}
}
#endif
}
internal void
df_msg_list_menu_buttons(U64 count, String8 *msg_names, U32 *fastpath_codepoints)
{
for(U64 idx = 0; idx < count; idx += 1)
{
ui_set_next_fastpath_codepoint(fastpath_codepoints[idx]);
UI_Signal sig = df_msg_button(msg_names[idx]);
if(ui_clicked(sig))
{
df_msg(DF_MsgKind_RunCommand, .string = msg_names[idx]);
ui_ctx_menu_close();
MD_Node *window_cfg = df_cfg_tree_from_handle(df_regs()->window);
DF_Window *window = df_window_from_cfg_tree(window_cfg);
window->menu_bar_focused = 0;
}
}
scratch_end(scratch);
}
internal UI_Signal
@@ -698,12 +580,6 @@ df_entity_tooltips(D_Entity *entity)
#endif
}
internal void
df_cfg_tree_tooltips(MD_Node *cfg_tree)
{
}
internal void
df_ctrl_entity_tooltips(CTRL_Entity *entity)
{
@@ -1020,7 +896,6 @@ df_entity_desc_button(D_Entity *entity, FuzzyMatchRangeList *name_matches, Strin
internal void
df_src_loc_button(String8 file_path, TxtPt point)
{
#if 0 // TODO(rjf): @msgs
Temp scratch = scratch_begin(0, 0);
String8 filename = str8_skip_last_slash(file_path);
@@ -1058,7 +933,6 @@ df_src_loc_button(String8 file_path, TxtPt point)
ui_labelf("%S:%I64d:%I64d", file_path, point.line, point.column);
}
scratch_end(scratch);
#endif
}
////////////////////////////////
@@ -1453,8 +1327,8 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
line_num += 1, line_idx += 1)
{
CTRL_EntityList line_ips = params->line_ips[line_idx];
MD_NodePtrList line_bps = params->line_bps[line_idx];
MD_NodePtrList line_pins = params->line_pins[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);
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)
@@ -1594,16 +1468,15 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
}
//- rjf: build margin breakpoint ui
for(MD_NodePtrNode *n = line_bps.first; n != 0; n = n->next)
for(D_EntityNode *n = line_bps.first; n != 0; n = n->next)
{
MD_Node *bp = n->v;
B32 bp_is_disabled = !md_node_is_nil(md_tag_from_string(bp, str8_lit("disabled"), 0));
Vec4F32 bp_color = df_rgba_from_cfg_tree(bp);
if(bp_color.w == 0)
D_Entity *bp = n->entity;
Vec4F32 bp_color = df_rgba_from_theme_color(DF_ThemeColor_Breakpoint);
if(bp->flags & D_EntityFlag_HasColor)
{
bp_color = df_rgba_from_theme_color(DF_ThemeColor_Breakpoint);
bp_color = d_rgba_from_entity(bp);
}
if(bp_is_disabled)
if(bp->disabled)
{
bp_color = v4f32(bp_color.x * 0.6f, bp_color.y * 0.6f, bp_color.z * 0.6f, bp_color.w * 0.6f);
}
@@ -1612,7 +1485,7 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
DF_BreakpointBoxDrawExtData *bp_draw = push_array(ui_build_arena(), DF_BreakpointBoxDrawExtData, 1);
{
bp_draw->color = bp_color;
bp_draw->alive_t = ui_anim(ui_key_from_stringf(ui_key_zero(), "%p_alive_t", bp), 1.f);
bp_draw->alive_t = bp->alive_t;
bp_draw->do_lines = df_setting_val_from_code(DF_SettingCode_BreakpointLines).s32;
bp_draw->do_glow = df_setting_val_from_code(DF_SettingCode_BreakpointGlow).s32;
if(d_regs()->file_path.size != 0)
@@ -1652,36 +1525,41 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
// rjf: bp hovering
if(ui_hovering(bp_sig) && !df_drag_is_active())
{
df_cfg_tree_tooltips(bp);
df_entity_tooltips(bp);
}
// rjf: click => remove breakpoint
if(ui_clicked(bp_sig))
{
df_msg(DF_MsgKind_RemoveBreakpoint, .cfg_tree = df_handle_from_cfg_tree(bp));
d_cmd(D_CmdKind_RemoveBreakpoint, .entity = d_handle_from_entity(bp));
}
// rjf: drag start
if(ui_dragging(bp_sig) && !contains_2f32(bp_box->rect, ui_mouse()))
{
df_drag_begin(.cfg_tree = df_handle_from_cfg_tree(bp));
DF_DragDropPayload payload = {0};
payload.entity = d_handle_from_entity(bp);
df_drag_begin(&payload);
}
// rjf: bp right-click menu
if(ui_right_clicked(bp_sig))
{
df_ctx_menu_open(bp_box, .cfg_tree = df_handle_from_cfg_tree(bp));
D_Handle handle = d_handle_from_entity(bp);
ui_ctx_menu_open(df_state->entity_ctx_menu_key, bp_box->key, v2f32(0, bp_box->rect.y1-bp_box->rect.y0));
DF_Window *window = df_window_from_handle(d_regs()->window);
window->entity_ctx_menu_entity = handle;
}
}
//- rjf: build margin watch pin ui
for(MD_NodePtrNode *n = line_pins.first; n != 0; n = n->next)
for(D_EntityNode *n = line_pins.first; n != 0; n = n->next)
{
MD_Node *pin = n->v;
Vec4F32 color = df_rgba_from_cfg_tree(pin);
if(color.w == 0)
D_Entity *pin = n->entity;
Vec4F32 color = df_rgba_from_theme_color(DF_ThemeColor_Text);
if(pin->flags & D_EntityFlag_HasColor)
{
color = df_rgba_from_theme_color(DF_ThemeColor_Text);
color = d_rgba_from_entity(pin);
}
// rjf: build box for watch
@@ -1705,25 +1583,30 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
// rjf: watch hovering
if(ui_hovering(pin_sig) && !df_drag_is_active())
{
df_cfg_tree_tooltips(pin);
df_entity_tooltips(pin);
}
// rjf: click => remove pin
if(ui_clicked(pin_sig))
{
df_msg(DF_MsgKind_RemoveEntity, .cfg_tree = df_handle_from_cfg_tree(pin));
d_cmd(D_CmdKind_RemoveEntity, .entity = d_handle_from_entity(pin));
}
// rjf: drag start
if(ui_dragging(pin_sig) && !contains_2f32(pin_box->rect, ui_mouse()))
{
df_drag_begin(.cfg_tree = df_handle_from_cfg_tree(pin));
DF_DragDropPayload payload = {0};
payload.entity = d_handle_from_entity(pin);
df_drag_begin(&payload);
}
// rjf: watch right-click menu
if(ui_right_clicked(pin_sig))
{
df_ctx_menu_open(pin_box, .cfg_tree = df_handle_from_cfg_tree(pin));
D_Handle handle = d_handle_from_entity(pin);
ui_ctx_menu_open(df_state->entity_ctx_menu_key, pin_box->key, v2f32(0, pin_box->rect.y1-pin_box->rect.y0));
DF_Window *window = df_window_from_handle(d_regs()->window);
window->entity_ctx_menu_entity = handle;
}
}
}
@@ -1732,10 +1615,10 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
UI_Signal line_margin_sig = ui_signal_from_box(line_margin_box);
if(ui_clicked(line_margin_sig))
{
df_msg(DF_MsgKind_AddBreakpoint,
.file_path = df_regs()->file_path,
.cursor = txt_pt(line_num, 1),
.vaddr_range = r1u64(params->line_vaddrs[line_idx], params->line_vaddrs[line_idx]));
d_cmd(D_CmdKind_AddBreakpoint,
.file_path = d_regs()->file_path,
.text_point = txt_pt(line_num, 1),
.vaddr = params->line_vaddrs[line_idx]);
}
}
}
@@ -1902,16 +1785,16 @@ 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)
{
MD_NodePtrList pins = params->line_pins[line_idx];
D_EntityList pins = params->line_pins[line_idx];
if(pins.count != 0) UI_Parent(line_extras_boxes[line_idx])
DF_Font(DF_FontSlot_Code)
UI_FontSize(params->font_size)
UI_PrefHeight(ui_px(params->line_height_px, 1.f))
{
for(MD_NodePtrNode *n = pins.first; n != 0; n = n->next)
for(D_EntityNode *n = pins.first; n != 0; n = n->next)
{
MD_Node *pin = n->v;
String8 pin_expr = pin->first->string;
D_Entity *pin = n->entity;
String8 pin_expr = pin->string;
E_Eval eval = e_eval_from_string(scratch.arena, pin_expr);
String8 eval_string = {0};
if(!e_type_key_match(e_type_key_zero(), eval.type_key))
@@ -1928,10 +1811,10 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
UI_BoxFlag_DrawBorder, pin_box_key);
UI_Parent(pin_box) UI_PrefWidth(ui_text_dim(10, 1))
{
Vec4F32 pin_color = df_rgba_from_cfg_tree(pin);
if(pin_color.w == 0)
Vec4F32 pin_color = df_rgba_from_theme_color(DF_ThemeColor_CodeDefault);
if(pin->flags & D_EntityFlag_HasColor)
{
pin_color = df_rgba_from_theme_color(DF_ThemeColor_CodeDefault);
pin_color = d_rgba_from_entity(pin);
}
UI_PrefWidth(ui_em(1.5f, 1.f))
DF_Font(DF_FontSlot_Icons)
@@ -1942,11 +1825,15 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
UI_Signal sig = ui_buttonf("%S###pin_nub", df_g_icon_kind_text_table[DF_IconKind_Pin]);
if(ui_dragging(sig) && !contains_2f32(sig.box->rect, ui_mouse()))
{
df_drag_begin(.cfg_tree = df_handle_from_cfg_tree(pin));
DF_DragDropPayload payload = {0};
payload.entity = d_handle_from_entity(pin);
df_drag_begin(&payload);
}
if(ui_right_clicked(sig))
{
df_ctx_menu_open(pin_box, .cfg_tree = df_handle_from_cfg_tree(pin));
ui_ctx_menu_open(df_state->entity_ctx_menu_key, sig.box->key, v2f32(0, sig.box->rect.y1-sig.box->rect.y0));
DF_Window *window = df_window_from_handle(d_regs()->window);
window->entity_ctx_menu_entity = d_handle_from_entity(pin);
}
}
df_code_label(0.8f, 1, df_rgba_from_theme_color(DF_ThemeColor_CodeDefault), pin_expr);
@@ -2034,7 +1921,7 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
UI_Signal priority_margin_container_sig = ui_signal_from_box(priority_margin_container_box);
UI_Signal catchall_margin_container_sig = ui_signal_from_box(catchall_margin_container_box);
UI_Signal text_container_sig = ui_signal_from_box(text_container_box);
CTRL_Entity *line_drag_entity = &ctrl_entity_nil;
D_Entity *line_drag_entity = &d_nil_entity;
{
//- rjf: determine mouse drag range
TxtRng mouse_drag_rng = txt_rng(mouse_pt, mouse_pt);
@@ -2104,7 +1991,6 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
//- rjf: dragging threads, breakpoints, or watch pins over this slice ->
// drop target
#if 0 // TODO(rjf): @msgs
if(df_drag_is_active() && contains_2f32(clipped_top_container_rect, ui_mouse()))
{
DF_DragDropPayload *payload = &df_drag_drop_payload;
@@ -2116,10 +2002,8 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
line_drag_entity = entity;
}
}
#endif
//- rjf: drop target is dropped -> process
#if 0 // TODO(rjf): @msgs
{
DF_DragDropPayload payload = {0};
if(!d_entity_is_nil(line_drag_entity) && df_drag_drop(&payload) && contains_1s64(params->line_num_range, mouse_pt.line))
@@ -2162,7 +2046,6 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
}
}
}
#endif
//- rjf: commit text container signal to main output
result.base = text_container_sig;
@@ -2253,7 +2136,6 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
//////////////////////////////
//- rjf: dragging entity which applies to lines over this slice -> visualize
//
#if 0 // TODO(rjf): @msgs
if(!d_entity_is_nil(line_drag_entity) && contains_2f32(clipped_top_container_rect, ui_mouse()))
{
Vec4F32 color = df_rgba_from_theme_color(DF_ThemeColor_DropSiteOverlay);
@@ -2274,7 +2156,6 @@ df_code_slice(DF_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
}
ui_box_equip_draw_bucket(text_container_box, bucket);
}
#endif
//////////////////////////////
//- rjf: (cursor*mark*list(flash_range)) -> list(text_range*color)
+2 -6
View File
@@ -42,9 +42,9 @@ struct DF_CodeSliceParams
String8 *line_text;
Rng1U64 *line_ranges;
TXT_TokenArray *line_tokens;
MD_NodePtrList *line_bps;
D_EntityList *line_bps;
CTRL_EntityList *line_ips;
MD_NodePtrList *line_pins;
D_EntityList *line_pins;
U64 *line_vaddrs;
D_LineList *line_infos;
DI_KeyList relevant_dbgi_keys;
@@ -84,17 +84,13 @@ internal void df_loading_overlay(Rng2F32 rect, F32 loading_t, U64 progress_v, U6
////////////////////////////////
//~ rjf: UI Widgets: Fancy Buttons
internal void df_keybinding_buttons(String8 msg_name);
internal void df_cmd_binding_buttons(D_CmdSpec *spec);
internal UI_Signal df_menu_bar_button(String8 string);
internal UI_Signal df_msg_button(String8 msg_name);
internal UI_Signal df_cmd_spec_button(D_CmdSpec *spec);
internal void df_cmd_list_menu_buttons(U64 count, D_CmdKind *cmds, U32 *fastpath_codepoints);
internal void df_msg_list_menu_buttons(U64 count, String8 *msg_names, U32 *fastpath_codepoints);
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_cfg_tree_tooltips(MD_Node *cfg_tree);
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);
@@ -37,12 +37,11 @@ Rng1U64 df_reg_slot_range_table[29] =
{OffsetOf(DF_Regs, os_event), OffsetOf(DF_Regs, os_event) + sizeof(OS_Event *)},
};
DF_MsgKindInfo df_msg_kind_info_table[138] =
DF_MsgKindInfo df_msg_kind_info_table[135] =
{
{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("run_command"), str8_lit_comp("SetCurrentPath"), str8_lit_comp(""), str8_lit_comp("SetCurrentPath"), ((0*DF_MsgKindFlag_ListInUI)|(0*DF_MsgKindFlag_ListInIPCDocs)), {(0*DF_MsgQueryFlag_AllowFiles)|(0*DF_MsgQueryFlag_AllowFolders)|(0*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("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}},
@@ -75,7 +74,6 @@ DF_MsgKindInfo df_msg_kind_info_table[138] =
{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("toggle_watch_expression_at_mouse"), str8_lit_comp("ToggleWatchExpressionAtMouse"), str8_lit_comp(""), str8_lit_comp("ToggleWatchExpressionAtMouse"), ((0*DF_MsgKindFlag_ListInUI)|(0*DF_MsgKindFlag_ListInIPCDocs)), {(0*DF_MsgQueryFlag_AllowFiles)|(0*DF_MsgQueryFlag_AllowFolders)|(0*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}},
@@ -118,7 +116,6 @@ DF_MsgKindInfo df_msg_kind_info_table[138] =
{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("set_filter"), str8_lit_comp("SetFilter"), str8_lit_comp(""), str8_lit_comp("SetFilter"), ((0*DF_MsgKindFlag_ListInUI)|(0*DF_MsgKindFlag_ListInIPCDocs)), {(0*DF_MsgQueryFlag_AllowFiles)|(0*DF_MsgQueryFlag_AllowFolders)|(0*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}},
@@ -80,7 +80,6 @@ DF_MsgKind_RunToCursor,
DF_MsgKind_SetNextStatement,
DF_MsgKind_Exit,
DF_MsgKind_RunCommand,
DF_MsgKind_SetCurrentPath,
DF_MsgKind_ToggleDevMenu,
DF_MsgKind_RegisterAsJITDebugger,
DF_MsgKind_LogMarker,
@@ -113,7 +112,6 @@ DF_MsgKind_GoToNameAtCursor,
DF_MsgKind_ToggleBreakpointAtCursor,
DF_MsgKind_ToggleWatchPinAtCursor,
DF_MsgKind_ToggleWatchExpressionAtCursor,
DF_MsgKind_ToggleWatchExpressionAtMouse,
DF_MsgKind_OpenWindow,
DF_MsgKind_CloseWindow,
DF_MsgKind_ToggleFullscreen,
@@ -156,7 +154,6 @@ DF_MsgKind_CloseTab,
DF_MsgKind_TabBarTop,
DF_MsgKind_TabBarBottom,
DF_MsgKind_Filter,
DF_MsgKind_SetFilter,
DF_MsgKind_ClearFilter,
DF_MsgKind_ApplyFilter,
DF_MsgKind_ResetToDefaultPanels,
@@ -625,7 +622,7 @@ DF_VIEW_RULE_ROW_UI_FUNCTION_DEF(checkbox);
DF_VIEW_RULE_ROW_UI_FUNCTION_DEF(color_rgba);
C_LINKAGE_BEGIN
extern Rng1U64 df_reg_slot_range_table[29];
extern DF_MsgKindInfo df_msg_kind_info_table[138];
extern DF_MsgKindInfo df_msg_kind_info_table[135];
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];
-21
View File
@@ -239,7 +239,6 @@ e_member_eval_from_eval_member_name(E_Eval eval, String8 member_name)
{
result.mode = eval.mode;
result.space = eval.space;
result.type_key = member->type_key;
result.code = eval.code;
result.msgs = eval.msgs;
@@ -265,23 +264,3 @@ e_member_eval_from_eval_member_name(E_Eval eval, String8 member_name)
}
return result;
}
internal F32
e_f32_from_eval(E_Eval eval)
{
F32 result = 0;
E_TypeKind kind = e_type_kind_from_key(e_type_unwrap(eval.type_key));
if(e_type_kind_is_integer(kind))
{
result = (F32)eval.value.s64;
}
else if(kind == E_TypeKind_F64)
{
result = (F32)eval.value.f64;
}
else if(kind == E_TypeKind_F32)
{
result = eval.value.f32;
}
return result;
}
-1
View File
@@ -29,6 +29,5 @@ internal E_Eval e_dynamically_typed_eval_from_eval(E_Eval eval);
internal E_Eval e_value_eval_from_eval(E_Eval eval);
internal E_Eval e_element_eval_from_array_eval_index(E_Eval eval, U64 index);
internal E_Eval e_member_eval_from_eval_member_name(E_Eval eval, String8 member_name);
internal F32 e_f32_from_eval(E_Eval eval);
#endif // EVAL_BUNDLES_H
+2 -29
View File
@@ -212,7 +212,7 @@ md_node_push_child(MD_Node *parent, MD_Node *node)
}
internal void
md_unhook_child(MD_Node *node)
md_node_unhook_child(MD_Node *node)
{
MD_Node *parent = node->parent;
if(!md_node_is_nil(parent))
@@ -236,7 +236,7 @@ md_node_push_tag(MD_Node *parent, MD_Node *node)
}
internal void
md_unhook_tag(MD_Node *node)
md_node_unhook_tag(MD_Node *node)
{
MD_Node *parent = node->parent;
if(!md_node_is_nil(parent))
@@ -393,21 +393,6 @@ md_tag_arg_from_string(MD_Node *node, String8 tag_string, StringMatchFlags tag_s
return arg;
}
internal MD_Node *
md_ancestor_from_string(MD_Node *node, String8 string, StringMatchFlags flags)
{
MD_Node *result = &md_nil_node;
for(MD_Node *n = node->parent; !md_node_is_nil(n); n = n->parent)
{
if(str8_match(n->string, string, flags))
{
result = n;
break;
}
}
return result;
}
internal B32
md_node_has_child(MD_Node *node, String8 string, StringMatchFlags flags)
{
@@ -567,18 +552,6 @@ md_tree_copy(Arena *arena, MD_Node *src_root)
return dst_root;
}
//- rjf: node pointer lists
internal void
md_node_ptr_list_push(Arena *arena, MD_NodePtrList *list, MD_Node *node)
{
MD_NodePtrNode *n = push_array(arena, MD_NodePtrNode, 1);
n->v = node;
SLLQueuePush(list->first, list->last, n);
list->count += 1;
}
////////////////////////////////
//~ rjf: Text -> Tokens Functions
+3 -23
View File
@@ -193,21 +193,6 @@ struct MD_NodeRec
S32 pop_count;
};
typedef struct MD_NodePtrNode MD_NodePtrNode;
struct MD_NodePtrNode
{
MD_NodePtrNode *next;
MD_Node *v;
};
typedef struct MD_NodePtrList MD_NodePtrList;
struct MD_NodePtrList
{
MD_NodePtrNode *first;
MD_NodePtrNode *last;
U64 count;
};
////////////////////////////////
//~ rjf: Text -> Tokens Types
@@ -269,8 +254,7 @@ internal MD_NodeFlags md_node_flags_from_token_flags(MD_TokenFlags flags);
internal B32 md_node_is_nil(MD_Node *node);
//- rjf: iteration
#define MD_EachNode(it, first_in_chain) MD_Node *it = first_in_chain; !md_node_is_nil(it); it = it->next
#define MD_EachNodeRef(it, first_in_chain) MD_Node *ref_it = first_in_chain, *it = first_in_chain->first; !md_node_is_nil(ref_it) && !md_node_is_nil(it); (ref_it = ref_it->next, it = ref_it->first)
#define MD_EachNode(it, first) MD_Node *it = first; !md_node_is_nil(it); it = it->next
internal MD_NodeRec md_node_rec_depth_first(MD_Node *node, MD_Node *subtree_root, U64 child_off, U64 sib_off);
#define md_node_rec_depth_first_pre(node, subtree_root) md_node_rec_depth_first((node), (subtree_root), OffsetOf(MD_Node, first), OffsetOf(MD_Node, next))
#define md_node_rec_depth_first_pre_rev(node, subtree_root) md_node_rec_depth_first((node), (subtree_root), OffsetOf(MD_Node, last), OffsetOf(MD_Node, prev))
@@ -279,10 +263,10 @@ internal MD_NodeRec md_node_rec_depth_first(MD_Node *node, MD_Node *subtree_root
internal MD_Node *md_push_node(Arena *arena, MD_NodeKind kind, MD_NodeFlags flags, String8 string, String8 raw_string, U64 src_offset);
internal void md_node_insert_child(MD_Node *parent, MD_Node *prev_child, MD_Node *node);
internal void md_node_push_child(MD_Node *parent, MD_Node *node);
internal void md_unhook_child(MD_Node *node);
internal void md_node_unhook_child(MD_Node *node);
internal void md_node_insert_tag(MD_Node *parent, MD_Node *prev_child, MD_Node *node);
internal void md_node_push_tag(MD_Node *parent, MD_Node *node);
internal void md_unhook_tag(MD_Node *node);
internal void md_node_unhook_tag(MD_Node *node);
//- rjf: tree building helpers
internal MD_Node *md_push_list(Arena *arena);
@@ -301,7 +285,6 @@ internal MD_Node * md_child_from_index(MD_Node *node, U64 index);
internal MD_Node * md_tag_from_index(MD_Node *node, U64 index);
internal MD_Node * md_tag_arg_from_index(MD_Node *node, String8 tag_string, StringMatchFlags flags, U64 index);
internal MD_Node * md_tag_arg_from_string(MD_Node *node, String8 tag_string, StringMatchFlags tag_str_flags, String8 arg_string, StringMatchFlags arg_str_flags);
internal MD_Node * md_ancestor_from_string(MD_Node *node, String8 string, StringMatchFlags flags);
internal B32 md_node_has_child(MD_Node *node, String8 string, StringMatchFlags flags);
internal B32 md_node_has_tag(MD_Node *node, String8 string, StringMatchFlags flags);
internal U64 md_child_count_from_node(MD_Node *node);
@@ -315,9 +298,6 @@ internal B32 md_node_match(MD_Node *a, MD_Node *b, StringMatchFlags flags);
//- rjf: tree duplication
internal MD_Node *md_tree_copy(Arena *arena, MD_Node *src_root);
//- rjf: node pointer lists
internal void md_node_ptr_list_push(Arena *arena, MD_NodePtrList *list, MD_Node *node);
////////////////////////////////
//~ rjf: Text -> Tokens Functions
+47 -6
View File
@@ -616,6 +616,10 @@ global U64 ipc_s2m_ring_read_pos = 0;
global OS_Handle ipc_s2m_ring_mutex = {0};
global OS_Handle ipc_s2m_ring_cv = {0};
//- rjf: main thread log
global Log *main_thread_log = 0;
global String8 main_thread_log_path = {0};
////////////////////////////////
//~ rjf: IPC Signaler Thread
@@ -667,7 +671,35 @@ internal B32
frame(void)
{
ProfBeginFunction();
Temp scratch = scratch_begin(0, 0);
//- rjf: begin logging
if(main_thread_log == 0)
{
main_thread_log = log_alloc();
String8 user_program_data_path = os_get_process_info()->user_program_data_path;
String8 user_data_folder = push_str8f(scratch.arena, "%S/raddbg/logs", user_program_data_path);
main_thread_log_path = push_str8f(d_state->arena, "%S/ui_thread.raddbg_log", user_data_folder);
os_make_directory(user_data_folder);
os_write_data_to_file_path(main_thread_log_path, str8_zero());
}
log_select(main_thread_log);
log_scope_begin();
//- rjf: do frontend frame
df_frame();
//- rjf: end logging
{
LogScopeResult log = log_scope_end(scratch.arena);
os_append_data_to_file_path(main_thread_log_path, log.strings[LogMsgKind_Info]);
if(log.strings[LogMsgKind_UserError].size != 0)
{
d_error(log.strings[LogMsgKind_UserError]);
}
}
scratch_end(scratch);
ProfEnd();
return df_state->quit;
}
@@ -878,21 +910,30 @@ entry_point(CmdLine *cmd_line)
break;
}
}
if(dst_window != 0 && dst_window != &df_nil_window) DF_RegsScope(.window = dst_window->handle)
if(dst_window != 0) D_RegsScope
{
df_regs_set_window(dst_window);
dst_window->window_temporarily_focused_ipc = 1;
U64 first_space_pos = str8_find_needle(msg, 0, str8_lit(" "), 0);
String8 msg_kind_name = lower_from_str8(scratch.arena, str8_prefix(msg, first_space_pos));
String8 args_string = str8_skip(msg, first_space_pos);
args_string = str8_skip_chop_whitespace(args_string);
DF_MsgKind kind = df_msg_kind_from_string(msg_kind_name);
DF_MsgQuery query = df_msg_kind_info_table[kind].query;
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(kind != DF_MsgKind_Null)
if(d_kind != D_MsgKind_Null)
{
df_msg(kind);
d_msg(d_kind);
}
else
if(df_kind != DF_MsgKind_Null)
{
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);
}