From aed18eb71ccd0d9113d54a8c8c716b8ce65bf443 Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Mon, 26 Aug 2024 11:26:34 -0700 Subject: [PATCH] eliminate string-from-state function for view specs - we will be doing everything via the cfg tree; clean up & fix view titles for all of the different visualizer circumstances; do general path for serializing cfg trees for each view --- src/df/gfx/df_gfx.c | 179 ++++++++++++++++------------- src/df/gfx/df_gfx.h | 12 +- src/df/gfx/df_gfx.mdesk | 69 ++++++----- src/df/gfx/df_views.c | 142 ++--------------------- src/df/gfx/generated/df_gfx.meta.c | 64 +++++------ src/df/gfx/generated/df_gfx.meta.h | 32 ------ 6 files changed, 177 insertions(+), 321 deletions(-) diff --git a/src/df/gfx/df_gfx.c b/src/df/gfx/df_gfx.c index 2a050ee2..c2291b7c 100644 --- a/src/df/gfx/df_gfx.c +++ b/src/df/gfx/df_gfx.c @@ -359,36 +359,6 @@ df_selected_tab_from_panel(DF_Panel *panel) //- rjf: icons & display strings -internal String8 -df_display_string_from_view(Arena *arena, DF_View *view) -{ - String8 result = view->spec->info.display_string; - { - String8 query = str8(view->query_buffer, view->query_string_size); - if(query.size != 0) - { - Temp scratch = scratch_begin(&arena, 1); - E_Eval eval = e_eval_from_string(scratch.arena, query); - DF_Entity *entity = df_entity_from_eval_space(eval.space); - switch(entity->kind) - { - case DF_EntityKind_Nil: - if(eval.expr->kind == E_ExprKind_LeafFilePath) - { - result = str8_skip_last_slash(push_str8_copy(arena, eval.expr->string)); - }break; - default: - if(view->spec->info.flags & DF_ViewSpecFlag_ParameterizedByEntity) - { - result = df_display_string_from_entity(arena, entity); - }break; - } - scratch_end(scratch); - } - } - return result; -} - internal DF_IconKind df_icon_kind_from_view(DF_View *view) { @@ -396,6 +366,58 @@ df_icon_kind_from_view(DF_View *view) return result; } +internal D_FancyStringList +df_title_fstrs_from_view(Arena *arena, DF_View *view, Vec4F32 primary_color, Vec4F32 secondary_color, F32 size) +{ + D_FancyStringList result = {0}; + Temp scratch = scratch_begin(&arena, 1); + String8 query = str8(view->query_buffer, view->query_string_size); + String8 file_path = df_file_path_from_eval_string(scratch.arena, query); + if(file_path.size != 0) + { + D_FancyString fstr = + { + df_font_from_slot(DF_FontSlot_Main), + push_str8_copy(arena, str8_skip_last_slash(file_path)), + primary_color, + size, + }; + d_fancy_string_list_push(arena, &result, &fstr); + } + else + { + D_FancyString fstr1 = + { + df_font_from_slot(DF_FontSlot_Main), + view->spec->info.display_string, + primary_color, + size, + }; + d_fancy_string_list_push(arena, &result, &fstr1); + if(query.size != 0) + { + D_FancyString fstr2 = + { + df_font_from_slot(DF_FontSlot_Code), + str8_lit(" "), + primary_color, + size, + }; + d_fancy_string_list_push(arena, &result, &fstr2); + D_FancyString fstr3 = + { + df_font_from_slot(DF_FontSlot_Code), + push_str8_copy(arena, query), + secondary_color, + size*0.8f, + }; + d_fancy_string_list_push(arena, &result, &fstr3); + } + } + scratch_end(scratch); + return result; +} + //////////////////////////////// //~ rjf: Window Type Functions @@ -835,7 +857,7 @@ df_view_equip_spec(DF_Window *window, DF_View *view, DF_ViewSpec *spec, String8 } view->is_filtering = 0; view->is_filtering_t = 0; - view_setup(window, view, view->cfg_root); + view_setup(window, view, view->cfg_root, str8(view->query_buffer, view->query_string_size)); } } @@ -3621,14 +3643,18 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) { UI_Row { - String8 display_name = df_display_string_from_view(scratch.arena, view); DF_IconKind icon_kind = df_icon_kind_from_view(view); + D_FancyStringList fstrs = df_title_fstrs_from_view(scratch.arena, view, ui_top_palette()->text, ui_top_palette()->text_weak, ui_top_font_size()); DF_Font(ws, DF_FontSlot_Icons) UI_FontSize(df_font_size_from_slot(ws, DF_FontSlot_Icons)) UI_PrefWidth(ui_em(2.5f, 1.f)) UI_FlagsAdd(UI_BoxFlag_DrawTextWeak) ui_label(df_g_icon_kind_text_table[icon_kind]); - ui_label(display_name); + UI_PrefWidth(ui_text_dim(10, 1)) + { + UI_Box *name_box = ui_build_box_from_key(UI_BoxFlag_DrawText, ui_key_zero()); + ui_box_equip_display_fancy_strings(name_box, &fstrs); + } } ui_set_next_pref_width(ui_pct(1, 0)); ui_set_next_pref_height(ui_pct(1, 0)); @@ -4476,8 +4502,8 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) DF_Panel *panel = df_panel_from_handle(ws->tab_ctx_menu_panel); DF_View *view = df_view_from_handle(ws->tab_ctx_menu_view); DF_IconKind view_icon = df_icon_kind_from_view(view); + D_FancyStringList fstrs = df_title_fstrs_from_view(scratch.arena, view, ui_top_palette()->text, ui_top_palette()->text_weak, ui_top_font_size()); String8 file_path = df_file_path_from_eval_string(scratch.arena, str8(view->query_buffer, view->query_string_size)); - String8 display_name = df_display_string_from_view(scratch.arena, view); // rjf: title UI_Row @@ -4490,7 +4516,11 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) UI_TextAlignment(UI_TextAlign_Center) UI_FlagsAdd(UI_BoxFlag_DrawTextWeak) ui_label(df_g_icon_kind_text_table[view_icon]); - UI_PrefWidth(ui_text_dim(10, 1)) ui_label(display_name); + UI_PrefWidth(ui_text_dim(10, 1)) + { + UI_Box *name_box = ui_build_box_from_key(UI_BoxFlag_DrawText, ui_key_zero()); + ui_box_equip_display_fancy_strings(name_box, &fstrs); + } } DF_Palette(ws, DF_PaletteCode_Floating) ui_divider(ui_em(1.f, 1.f)); @@ -4498,7 +4528,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) // rjf: copy name if(ui_clicked(df_icon_buttonf(ws, DF_IconKind_Clipboard, 0, "Copy Name"))) { - os_set_clipboard_text(display_name); + os_set_clipboard_text(d_string_from_fancy_string_list(scratch.arena, &fstrs)); ui_ctx_menu_close(); } @@ -7395,7 +7425,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) // rjf: gather info for this tab B32 view_is_selected = (view == df_selected_tab_from_panel(panel)); DF_IconKind icon_kind = df_icon_kind_from_view(view); - String8 label = df_display_string_from_view(scratch.arena, view); + D_FancyStringList title_fstrs = df_title_fstrs_from_view(scratch.arena, view, ui_top_palette()->text, ui_top_palette()->text_weak, ui_top_font_size()); // rjf: begin vertical region for this tab ui_set_next_child_layout_axis(Axis2_Y); @@ -7434,50 +7464,10 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) UI_PrefWidth(ui_em(1.75f, 1.f)) ui_label(df_g_icon_kind_text_table[icon_kind]); } - if(view->query_string_size != 0 && view->spec->info.flags & DF_ViewSpecFlag_DisplayFilterInTitle) + UI_PrefWidth(ui_text_dim(10, 0)) { - UI_PrefWidth(ui_text_dim(10, 0)) - { - Temp scratch = scratch_begin(0, 0); - D_FancyStringList fstrs = {0}; - { - D_FancyString view_title = - { - df_font_from_slot(DF_FontSlot_Main), - label, - ui_top_palette()->colors[UI_ColorCode_Text], - ui_top_font_size(), - }; - d_fancy_string_list_push(scratch.arena, &fstrs, &view_title); - } - { - D_FancyString space = - { - df_font_from_slot(DF_FontSlot_Code), - str8_lit(" "), - v4f32(0, 0, 0, 0), - ui_top_font_size(), - }; - d_fancy_string_list_push(scratch.arena, &fstrs, &space); - } - { - D_FancyString query = - { - view->spec->info.flags & DF_ViewSpecFlag_FilterIsCode ? df_font_from_slot(DF_FontSlot_Code) : df_font_from_slot(DF_FontSlot_Main), - str8(view->query_buffer, view->query_string_size), - ui_top_palette()->colors[UI_ColorCode_TextWeak], - ui_top_font_size(), - }; - d_fancy_string_list_push(scratch.arena, &fstrs, &query); - } - UI_Box *box = ui_build_box_from_key(UI_BoxFlag_DrawText, ui_key_zero()); - ui_box_equip_display_fancy_strings(box, &fstrs); - scratch_end(scratch); - } - } - else - { - UI_PrefWidth(ui_text_dim(10, 0)) ui_label(label); + UI_Box *name_box = ui_build_box_from_key(UI_BoxFlag_DrawText, ui_key_zero()); + ui_box_equip_display_fancy_strings(name_box, &title_fstrs); } } UI_PrefWidth(ui_em(2.35f, 1.f)) UI_TextAlignment(UI_TextAlign_Center) @@ -9444,8 +9434,33 @@ df_cfg_strings_from_gfx(Arena *arena, String8 root_path, DF_CfgSrc source) str8_list_pushf(arena, &strs, "query:{\"%S\"} ", query_sanitized); scratch_end(scratch); } - String8 view_state_string = view->spec->info.string_from_state_hook(arena, view); - str8_list_push(arena, &strs, view_state_string); + { + DF_CfgNodeRec rec = {0}; + for(DF_CfgNode *n = view->cfg_root; n != 0 && n != &df_g_nil_cfg_node; n = rec.next) + { + rec = df_cfg_node_rec__depth_first_pre(n, view->cfg_root); + if(n != view->cfg_root) + { + str8_list_pushf(arena, &strs, "%S", n->string); + if(n->first != &df_g_nil_cfg_node) + { + str8_list_pushf(arena, &strs, ":{"); + } + for(S32 pop_idx = 0; pop_idx < rec.pop_count; pop_idx += 1) + { + if(pop_idx == rec.pop_count-1 && rec.next == &df_g_nil_cfg_node) + { + break; + } + str8_list_pushf(arena, &strs, "}"); + } + if(rec.pop_count != 0 || n->next != &df_g_nil_cfg_node) + { + str8_list_pushf(arena, &strs, " "); + } + } + } + } str8_list_push(arena, &strs, str8_lit("}\n")); } } diff --git a/src/df/gfx/df_gfx.h b/src/df/gfx/df_gfx.h index f3fc4d3e..15aba311 100644 --- a/src/df/gfx/df_gfx.h +++ b/src/df/gfx/df_gfx.h @@ -83,16 +83,11 @@ typedef struct DF_View DF_View; typedef struct DF_Panel DF_Panel; typedef struct DF_Window DF_Window; -#define DF_VIEW_SETUP_FUNCTION_SIG(name) void name(DF_Window *ws, struct DF_View *view, DF_CfgNode *cfg_root) +#define DF_VIEW_SETUP_FUNCTION_SIG(name) void name(DF_Window *ws, struct DF_View *view, DF_CfgNode *cfg, String8 string) #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_STRING_FROM_STATE_FUNCTION_SIG(name) String8 name(Arena *arena, struct DF_View *view) -#define DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(name) df_view_string_from_state_##name -#define DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(name) internal DF_VIEW_STRING_FROM_STATE_FUNCTION_SIG(DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(name)) -typedef DF_VIEW_STRING_FROM_STATE_FUNCTION_SIG(DF_ViewStringFromStateFunctionType); - #define DF_VIEW_CMD_FUNCTION_SIG(name) void name(struct DF_Window *ws, struct DF_Panel *panel, struct DF_View *view, DF_CfgNode *cfg, String8 string, struct DF_CmdList *cmds) #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)) @@ -115,7 +110,6 @@ enum DF_ViewSpecFlag_CanFilter = (1<<3), DF_ViewSpecFlag_FilterIsCode = (1<<4), DF_ViewSpecFlag_TypingAutomaticallyFilters = (1<<5), - DF_ViewSpecFlag_DisplayFilterInTitle = (1<<6), }; typedef struct DF_ViewSpecInfo DF_ViewSpecInfo; @@ -126,7 +120,6 @@ struct DF_ViewSpecInfo String8 display_string; DF_IconKind icon_kind; DF_ViewSetupFunctionType *setup_hook; - DF_ViewStringFromStateFunctionType *string_from_state_hook; DF_ViewCmdFunctionType *cmd_hook; DF_ViewUIFunctionType *ui_hook; }; @@ -823,7 +816,6 @@ read_only global DF_ViewSpec df_g_nil_view_spec = {0}, DF_IconKind_Null, DF_VIEW_SETUP_FUNCTION_NAME(Null), - DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(Null), DF_VIEW_CMD_FUNCTION_NAME(Null), DF_VIEW_UI_FUNCTION_NAME(Null), }, @@ -908,8 +900,8 @@ internal void df_panel_remove_tab_view(DF_Panel *panel, DF_View *view); internal DF_View *df_selected_tab_from_panel(DF_Panel *panel); //- rjf: icons & display strings -internal String8 df_display_string_from_view(Arena *arena, DF_View *view); internal DF_IconKind df_icon_kind_from_view(DF_View *view); +internal D_FancyStringList df_title_fstrs_from_view(Arena *arena, DF_View *view, Vec4F32 primary_color, Vec4F32 secondary_color, F32 size); //////////////////////////////// //~ rjf: Window Type Functions diff --git a/src/df/gfx/df_gfx.mdesk b/src/df/gfx/df_gfx.mdesk index d01f2219..601d392d 100644 --- a/src/df/gfx/df_gfx.mdesk +++ b/src/df/gfx/df_gfx.mdesk @@ -210,56 +210,56 @@ DF_BindingVersionRemapTable: //////////////////////////////// //~ rjf: Gfx Layer View Kinds -@table(name name_lower display_string icon parameterized_by_entity project_specific can_serialize can_filter filter_is_code typing_automatically_filters display_filter_in_title inc_in_docs docs_desc) +@table(name name_lower display_string icon parameterized_by_entity project_specific can_serialize can_filter filter_is_code typing_automatically_filters inc_in_docs docs_desc) DF_GfxViewTable: { //- rjf: basics - { Null "null" "" Null 0 0 0 0 0 0 0 0 "" } - { Empty "empty" "" Null 0 0 0 0 0 0 0 0 "" } - { GettingStarted "getting_started" "Getting Started" QuestionMark 0 0 1 0 0 0 0 0 "" } + { Null "null" "" Null 0 0 0 0 0 0 0 "" } + { Empty "empty" "" Null 0 0 0 0 0 0 0 "" } + { GettingStarted "getting_started" "Getting Started" QuestionMark 0 0 1 0 0 0 0 "" } //- rjf: listers - { Commands "commands" "Commands" List 0 0 0 0 0 0 0 0 "" } - { FileSystem "file_system" "File System" FileOutline 0 0 0 0 0 0 0 0 "" } - { SystemProcesses "system_processes" "System Processes" Null 0 0 0 0 0 0 0 0 "" } - { EntityLister "entity_lister" "Entity List" Null 0 0 0 0 0 0 0 0 "" } - { SymbolLister "symbol_lister" "Symbols" Null 0 0 0 0 0 0 0 0 "" } + { Commands "commands" "Commands" List 0 0 0 0 0 0 0 "" } + { FileSystem "file_system" "File System" FileOutline 0 0 0 0 0 0 0 "" } + { SystemProcesses "system_processes" "System Processes" Null 0 0 0 0 0 0 0 "" } + { EntityLister "entity_lister" "Entity List" Null 0 0 0 0 0 0 0 "" } + { 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 0 "" } - { Targets "targets" "Targets" Target 0 0 1 1 0 1 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 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 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." } - { Breakpoints "breakpoints" "Breakpoints" CircleFilled 0 0 1 1 0 1 1 1 "Displays a table of all breakpoints, containing information about each breakpoint's name, location, and hit count. Also contains per-breakpoint controls for enabling, deleting, or editing each breakpoint. For more information on breakpoints and their features, read the 'Breakpoints' section." } - { WatchPins "watch_pins" "Watch Pins" Pin 0 0 1 1 1 1 1 1 "Displays a table of all watch pins (watched expressions, like those found in `Watch`, but instead of being within a table, being pinned to some source code location, like breakpoints). This table contains each pin's name, location, and controls for editing or deleting each pin." } + { 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." } + { Breakpoints "breakpoints" "Breakpoints" CircleFilled 0 0 1 1 0 1 1 "Displays a table of all breakpoints, containing information about each breakpoint's name, location, and hit count. Also contains per-breakpoint controls for enabling, deleting, or editing each breakpoint. For more information on breakpoints and their features, read the 'Breakpoints' section." } + { WatchPins "watch_pins" "Watch Pins" Pin 0 0 1 1 1 1 1 "Displays a table of all watch pins (watched expressions, like those found in `Watch`, but instead of being within a table, being pinned to some source code location, like breakpoints). This table contains each pin's name, location, and controls for editing or deleting each pin." } //- rjf: debug entity viewers - { Scheduler "scheduler" "Scheduler" Scheduler 0 0 1 1 1 1 1 1 "Displays all processes and threads to which the debugger is currently attached, and contains controls for selecting and freezing threads." } - { CallStack "call_stack" "Call Stack" Thread 0 0 1 0 0 0 1 1 "Displays the call stack of the currently selected thread. Each frame in the call stack contains the associated module, function name, and return address. Allows selection of a particular call stack frame other than the top." } - { Modules "modules" "Modules" Module 0 0 1 1 0 1 1 1 "Displays a table of all modules currently loaded by any process to which the debugger is attached. This table displays each module's name, virtual address range in the containing process' address space, and which debug info file is being used by the debugger for the associated module." } + { Scheduler "scheduler" "Scheduler" Scheduler 0 0 1 1 1 1 1 "Displays all processes and threads to which the debugger is currently attached, and contains controls for selecting and freezing threads." } + { CallStack "call_stack" "Call Stack" Thread 0 0 1 0 0 0 1 "Displays the call stack of the currently selected thread. Each frame in the call stack contains the associated module, function name, and return address. Allows selection of a particular call stack frame other than the top." } + { Modules "modules" "Modules" Module 0 0 1 1 0 1 1 "Displays a table of all modules currently loaded by any process to which the debugger is attached. This table displays each module's name, virtual address range in the containing process' address space, and which debug info file is being used by the debugger for the associated module." } //- rjf: watch-style views - { Watch "watch" "Watch" Binoculars 0 0 1 1 1 1 1 1 "The familiar 'watch window' debugger interface. Allows the inputting of a number of expressions. Each expression in the table is evaluated within the context of the selected thread's selected call stack frame. If applicable (depending on visualization rules and the expression's type), these expressions may be hierarchically expanded, which displays children as more rows in the table. The values of these expressions may also be edited, and if possible, can be used to write to registers or memory in attached processes. Also contains a new *view rule* column, not found in other major debuggers, which allows per-row specification of various visualization rules. These view rules may be used to visualize and inspect the evaluation of expressions in a variety of ways. To learn more, read the 'View Rules' section." } - { Locals "locals" "Locals" Binoculars 0 0 1 1 1 1 1 1 "Nearly identical to `Watch`, but automatically filled with local variables found within the selected call stack frame of the selected thread, according to the associated debug info. View rules and evaluation values can be edited, like in `Watch`, but unlike `Watch`, expressions cannot be edited or added to the table." } - { Registers "registers" "Registers" Binoculars 0 0 1 1 1 1 1 1 "Nearly identical to `Watch`, but automatically filled with all register names according to the selected thread's architecture. View rules and evaluation values can be edited, like in `Watch`, but unlike `Watch`, expressions cannot be edited or added to the table." } - { Globals "globals" "Globals" Binoculars 0 0 1 1 1 1 1 1 "Nearly identical to `Watch`, but automatically filled with all global variables within the selected thread's module. View rules and evaluation values can be edited, like in `Watch`, but unlike `Watch`, expressions cannot be edited or added to the table." } - { ThreadLocals "thread_locals" "Thread Locals" Binoculars 0 0 1 1 1 1 1 1 "Nearly identical to `Watch`, but automatically filled with all thread local variables within the selected thread's module. View rules and evaluation values can be edited, like in `Watch`, but unlike `Watch`, expressions cannot be edited or added to the table." } - { Types "types" "Types" Binoculars 0 0 1 1 1 1 1 1 "Nearly identical to `Watch`, but automatically filled with all types within the selected thread's module. View rules can be edited, like in `Watch`, but unlike `Watch`, expressions cannot be edited or added to the table." } - { Procedures "procedures" "Procedures" Binoculars 0 0 1 1 1 1 1 1 "Nearly identical to `Watch`, but automatically filled with all procedures within the selected thread's module. View rules can be edited, like in `Watch`, but unlike `Watch`, expressions cannot be edited or added to the table." } + { Watch "watch" "Watch" Binoculars 0 0 1 1 1 1 1 "The familiar 'watch window' debugger interface. Allows the inputting of a number of expressions. Each expression in the table is evaluated within the context of the selected thread's selected call stack frame. If applicable (depending on visualization rules and the expression's type), these expressions may be hierarchically expanded, which displays children as more rows in the table. The values of these expressions may also be edited, and if possible, can be used to write to registers or memory in attached processes. Also contains a new *view rule* column, not found in other major debuggers, which allows per-row specification of various visualization rules. These view rules may be used to visualize and inspect the evaluation of expressions in a variety of ways. To learn more, read the 'View Rules' section." } + { Locals "locals" "Locals" Binoculars 0 0 1 1 1 1 1 "Nearly identical to `Watch`, but automatically filled with local variables found within the selected call stack frame of the selected thread, according to the associated debug info. View rules and evaluation values can be edited, like in `Watch`, but unlike `Watch`, expressions cannot be edited or added to the table." } + { Registers "registers" "Registers" Binoculars 0 0 1 1 1 1 1 "Nearly identical to `Watch`, but automatically filled with all register names according to the selected thread's architecture. View rules and evaluation values can be edited, like in `Watch`, but unlike `Watch`, expressions cannot be edited or added to the table." } + { Globals "globals" "Globals" Binoculars 0 0 1 1 1 1 1 "Nearly identical to `Watch`, but automatically filled with all global variables within the selected thread's module. View rules and evaluation values can be edited, like in `Watch`, but unlike `Watch`, expressions cannot be edited or added to the table." } + { ThreadLocals "thread_locals" "Thread Locals" Binoculars 0 0 1 1 1 1 1 "Nearly identical to `Watch`, but automatically filled with all thread local variables within the selected thread's module. View rules and evaluation values can be edited, like in `Watch`, but unlike `Watch`, expressions cannot be edited or added to the table." } + { Types "types" "Types" Binoculars 0 0 1 1 1 1 1 "Nearly identical to `Watch`, but automatically filled with all types within the selected thread's module. View rules can be edited, like in `Watch`, but unlike `Watch`, expressions cannot be edited or added to the table." } + { Procedures "procedures" "Procedures" Binoculars 0 0 1 1 1 1 1 "Nearly identical to `Watch`, but automatically filled with all procedures within the selected thread's module. View rules can be edited, like in `Watch`, but unlike `Watch`, expressions cannot be edited or added to the table." } //- rjf: temporary view for loading files - must analyze file before picking viewer - { PendingFile "pending_file" "Pending File" FileOutline 0 0 0 0 0 0 0 0 "" } + { PendingFile "pending_file" "Pending File" FileOutline 0 0 0 0 0 0 0 "" } //- rjf: visualizers - { Code "code" "Code" FileOutline 0 1 1 0 1 0 0 0 "" } - { Disassembly "disassembly" "Disassembly" Glasses 0 0 1 0 0 0 0 1 "Displays disassembled instructions in a textual form from the selected thread's containing process virtual address space." } - { Output "output" "Output" List 0 0 1 0 0 0 0 1 "Displays textual output from the selected thread's containing process." } - { Memory "memory" "Memory" Grid 0 0 1 0 0 0 0 1 "A familiar hex-editor-like interface for viewing memory of attached processes." } - { Bitmap "bitmap" "Bitmap" Binoculars 0 0 1 0 0 0 0 1 "Visualizes memory as a bitmap." } + { Code "code" "Code" FileOutline 0 1 1 0 1 0 0 "" } + { Disassembly "disassembly" "Disassembly" Glasses 0 0 1 0 0 0 1 "Displays disassembled instructions in a textual form from the selected thread's containing process virtual address space." } + { Output "output" "Output" List 0 0 1 0 0 0 1 "Displays textual output from the selected thread's containing process." } + { Memory "memory" "Memory" Grid 0 0 1 0 0 0 1 "A familiar hex-editor-like interface for viewing memory of attached processes." } + { Bitmap "bitmap" "Bitmap" Binoculars 0 0 1 0 1 0 1 "Visualizes memory as a bitmap." } //- rjf: meta (settings) - { ExceptionFilters "exception_filters" "Exception Filters" Gear 0 0 1 1 0 1 1 1 "An interface which controls whether or not the debugger will halt attached processes upon encountering specific exception codes for the first time." } - { Settings "settings" "Settings" Gear 0 0 1 1 0 1 1 1 "An interface to modify general settings for the debugger's appearance and behavior." } + { ExceptionFilters "exception_filters" "Exception Filters" Gear 0 0 1 1 0 1 1 "An interface which controls whether or not the debugger will halt attached processes upon encountering specific exception codes for the first time." } + { Settings "settings" "Settings" Gear 0 0 1 1 0 1 1 "An interface to modify general settings for the debugger's appearance and behavior." } } @enum DF_GfxViewKind: @@ -271,14 +271,13 @@ DF_GfxViewTable: @gen { @expand(DF_GfxViewTable a) `DF_VIEW_SETUP_FUNCTION_DEF($(a.name));`; - @expand(DF_GfxViewTable a) `DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF($(a.name));`; @expand(DF_GfxViewTable a) `DF_VIEW_CMD_FUNCTION_DEF($(a.name));`; @expand(DF_GfxViewTable a) `DF_VIEW_UI_FUNCTION_DEF($(a.name));`; } @data(DF_ViewSpecInfo) df_g_gfx_view_kind_spec_info_table: { - @expand(DF_GfxViewTable a) ```{(0|$(a.parameterized_by_entity)*DF_ViewSpecFlag_ParameterizedByEntity|$(a.project_specific)*DF_ViewSpecFlag_ProjectSpecific|$(a.can_serialize)*DF_ViewSpecFlag_CanSerialize|$(a.can_filter)*DF_ViewSpecFlag_CanFilter|$(a.filter_is_code)*DF_ViewSpecFlag_FilterIsCode|$(a.typing_automatically_filters)*DF_ViewSpecFlag_TypingAutomaticallyFilters|$(a.display_filter_in_title)*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("$(a.name_lower)"), str8_lit_comp("$(a.display_string)"), DF_IconKind_$(a.icon), DF_VIEW_SETUP_FUNCTION_NAME($(a.name)), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME($(a.name)), DF_VIEW_CMD_FUNCTION_NAME($(a.name)), DF_VIEW_UI_FUNCTION_NAME($(a.name))}```; + @expand(DF_GfxViewTable a) ```{(0|$(a.parameterized_by_entity)*DF_ViewSpecFlag_ParameterizedByEntity|$(a.project_specific)*DF_ViewSpecFlag_ProjectSpecific|$(a.can_serialize)*DF_ViewSpecFlag_CanSerialize|$(a.can_filter)*DF_ViewSpecFlag_CanFilter|$(a.filter_is_code)*DF_ViewSpecFlag_FilterIsCode|$(a.typing_automatically_filters)*DF_ViewSpecFlag_TypingAutomaticallyFilters), str8_lit_comp("$(a.name_lower)"), str8_lit_comp("$(a.display_string)"), DF_IconKind_$(a.icon), DF_VIEW_SETUP_FUNCTION_NAME($(a.name)), DF_VIEW_CMD_FUNCTION_NAME($(a.name)), DF_VIEW_UI_FUNCTION_NAME($(a.name))}```; } //////////////////////////////// diff --git a/src/df/gfx/df_views.c b/src/df/gfx/df_views.c index 527e424d..3d86de06 100644 --- a/src/df/gfx/df_views.c +++ b/src/df/gfx/df_views.c @@ -2044,18 +2044,10 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS } if(row->expand_ui_rule_spec != &df_g_nil_gfx_view_rule_spec && row->expand_ui_rule_spec != 0) { - DF_CfgNode *cfg = df_cfg_tree_copy(scratch.arena, row->expand_ui_rule_node); - DF_CfgNode *cfg_root = push_array(scratch.arena, DF_CfgNode, 1); - cfg_root->first = cfg_root->last = cfg; - cfg_root->next = cfg_root->parent = &df_g_nil_cfg_node; - if(cfg != &df_g_nil_cfg_node) - { - cfg->parent = cfg_root; - } DF_CmdParams p = df_cmd_params_from_view(ws, panel, view); p.string = e_string_from_expr(scratch.arena, row->expr); p.view_spec = df_view_spec_from_string(row->expand_ui_rule_spec->info.view_spec_name); - p.cfg_node = cfg_root; + p.cfg_node = row->expand_ui_rule_node; df_cmd_params_mark_slot(&p, DF_CmdParamSlot_String); df_cmd_params_mark_slot(&p, DF_CmdParamSlot_ViewSpec); df_cmd_params_mark_slot(&p, DF_CmdParamSlot_CfgNode); @@ -2753,18 +2745,10 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS if(ui_clicked(sig)) { DF_ViewSpec *canvas_view_spec = df_view_spec_from_string(row->expand_ui_rule_spec->info.view_spec_name); - DF_CfgNode *cfg = df_cfg_tree_copy(scratch.arena, row->expand_ui_rule_node); - DF_CfgNode *cfg_root = push_array(scratch.arena, DF_CfgNode, 1); - cfg_root->first = cfg_root->last = cfg; - cfg_root->next = cfg_root->parent = &df_g_nil_cfg_node; - if(cfg != &df_g_nil_cfg_node) - { - cfg->parent = cfg_root; - } DF_CmdParams p = df_cmd_params_from_view(ws, panel, view); p.string = e_string_from_expr(scratch.arena, row->expr); p.view_spec = canvas_view_spec; - p.cfg_node = cfg_root; + p.cfg_node = row->expand_ui_rule_node; df_cmd_params_mark_slot(&p, DF_CmdParamSlot_String); df_cmd_params_mark_slot(&p, DF_CmdParamSlot_ViewSpec); df_cmd_params_mark_slot(&p, DF_CmdParamSlot_CfgNode); @@ -3340,7 +3324,6 @@ df_bitmap_canvas_from_screen_rect(DF_BitmapViewState *bvs, Rng2F32 rect, Rng2F32 //~ rjf: Null @view_hook_impl DF_VIEW_SETUP_FUNCTION_DEF(Null) {} -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Null) { return str8_lit(""); } DF_VIEW_CMD_FUNCTION_DEF(Null) {} DF_VIEW_UI_FUNCTION_DEF(Null) {} @@ -3348,7 +3331,6 @@ DF_VIEW_UI_FUNCTION_DEF(Null) {} //~ rjf: Empty @view_hook_impl DF_VIEW_SETUP_FUNCTION_DEF(Empty) {} -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Empty) { return str8_lit(""); } DF_VIEW_CMD_FUNCTION_DEF(Empty) {} DF_VIEW_UI_FUNCTION_DEF(Empty) { @@ -3377,7 +3359,6 @@ DF_VIEW_UI_FUNCTION_DEF(Empty) //~ rjf: GettingStarted @view_hook_impl DF_VIEW_SETUP_FUNCTION_DEF(GettingStarted) {} -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(GettingStarted) { return str8_lit(""); } DF_VIEW_CMD_FUNCTION_DEF(GettingStarted) {} DF_VIEW_UI_FUNCTION_DEF(GettingStarted) { @@ -3517,7 +3498,6 @@ DF_VIEW_UI_FUNCTION_DEF(GettingStarted) //~ rjf: Commands @view_hook_impl DF_VIEW_SETUP_FUNCTION_DEF(Commands) {} -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Commands) { return str8_lit(""); } DF_VIEW_CMD_FUNCTION_DEF(Commands) {} DF_VIEW_UI_FUNCTION_DEF(Commands) { @@ -3688,11 +3668,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(FileSystem) { } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(FileSystem) -{ - return str8_lit(""); -} - DF_VIEW_CMD_FUNCTION_DEF(FileSystem) { } @@ -4136,11 +4111,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(SystemProcesses) { } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(SystemProcesses) -{ - return str8_lit(""); -} - DF_VIEW_CMD_FUNCTION_DEF(SystemProcesses) { } @@ -4311,11 +4281,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(EntityLister) { } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(EntityLister) -{ - return str8_lit(""); -} - DF_VIEW_CMD_FUNCTION_DEF(EntityLister) { } @@ -4459,11 +4424,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(SymbolLister) { } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(SymbolLister) -{ - return str8_lit(""); -} - DF_VIEW_CMD_FUNCTION_DEF(SymbolLister) { } @@ -4662,12 +4622,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(Target) DF_TargetViewState *tv = df_view_user_state(view, DF_TargetViewState); } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Target) -{ - DF_TargetViewState *tv = df_view_user_state(view, DF_TargetViewState); - return str8_lit(""); -} - DF_VIEW_CMD_FUNCTION_DEF(Target) { DF_TargetViewState *tv = df_view_user_state(view, DF_TargetViewState); @@ -4985,11 +4939,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(Targets) { } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Targets) -{ - return str8_lit(""); -} - DF_VIEW_CMD_FUNCTION_DEF(Targets) { } @@ -5164,12 +5113,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(FilePathMap) } } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(FilePathMap) -{ - DF_FilePathMapViewState *fpms = df_view_user_state(view, DF_FilePathMapViewState); - return str8_lit(""); -} - DF_VIEW_CMD_FUNCTION_DEF(FilePathMap) { DF_FilePathMapViewState *fpms = df_view_user_state(view, DF_FilePathMapViewState); @@ -5510,12 +5453,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(AutoViewRules) } } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(AutoViewRules) -{ - DF_AutoViewRulesViewState *avrs = df_view_user_state(view, DF_AutoViewRulesViewState); - return str8_lit(""); -} - DF_VIEW_CMD_FUNCTION_DEF(AutoViewRules) { DF_AutoViewRulesViewState *avrs = df_view_user_state(view, DF_AutoViewRulesViewState); @@ -5803,7 +5740,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(Breakpoints) df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Member, 0.10f, .string = str8_lit("Enabled"), .view_rule = str8_lit("checkbox")); df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Member, 0.10f, .string = str8_lit("Hit Count")); } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Breakpoints) {return str8_zero();} DF_VIEW_CMD_FUNCTION_DEF(Breakpoints) { DF_WatchViewState *ewv = df_view_user_state(view, DF_WatchViewState); @@ -5827,7 +5763,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(WatchPins) df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Member, 0.5f, .string = str8_lit("Label"), .dequote_string = 1, .is_non_code = 1); df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Member, 0.5f, .string = str8_lit("Location"), .dequote_string = 1, .is_non_code = 1); } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(WatchPins) {return str8_zero();} DF_VIEW_CMD_FUNCTION_DEF(WatchPins) { DF_WatchViewState *ewv = df_view_user_state(view, DF_WatchViewState); @@ -5845,7 +5780,6 @@ DF_VIEW_UI_FUNCTION_DEF(WatchPins) //~ rjf: Scheduler @view_hook_impl DF_VIEW_SETUP_FUNCTION_DEF(Scheduler) {} -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Scheduler) {return str8_lit("");} DF_VIEW_CMD_FUNCTION_DEF(Scheduler) {} DF_VIEW_UI_FUNCTION_DEF(Scheduler) { @@ -6089,7 +6023,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(CallStack) df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Value, 0.7f); df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Module, 0.25f, .is_non_code = 1); } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(CallStack) {return str8_zero();} DF_VIEW_CMD_FUNCTION_DEF(CallStack){} DF_VIEW_UI_FUNCTION_DEF(CallStack) { @@ -6115,8 +6048,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(Modules) } } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Modules) {return str8_lit("");} - DF_VIEW_CMD_FUNCTION_DEF(Modules) { DF_ModulesViewState *mv = df_view_user_state(view, DF_ModulesViewState); @@ -6438,7 +6369,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(Watch) df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Type, 0.15f); df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_ViewRule, 0.30f); } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Watch) {return str8_zero();} DF_VIEW_CMD_FUNCTION_DEF(Watch) { DF_WatchViewState *ewv = df_view_user_state(view, DF_WatchViewState); @@ -6464,7 +6394,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(Locals) df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Type, 0.15f); df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_ViewRule, 0.30f); } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Locals) { return str8_zero(); } DF_VIEW_CMD_FUNCTION_DEF(Locals) {} DF_VIEW_UI_FUNCTION_DEF(Locals) { @@ -6486,7 +6415,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(Registers) df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Type, 0.15f); df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_ViewRule, 0.30f); } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Registers) { return str8_zero(); } DF_VIEW_CMD_FUNCTION_DEF(Registers) {} DF_VIEW_UI_FUNCTION_DEF(Registers) { @@ -6508,7 +6436,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(Globals) df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Type, 0.15f); df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_ViewRule, 0.30f); } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Globals) { return str8_zero(); } DF_VIEW_CMD_FUNCTION_DEF(Globals) {} DF_VIEW_UI_FUNCTION_DEF(Globals) { @@ -6530,7 +6457,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(ThreadLocals) df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Type, 0.15f); df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_ViewRule, 0.30f); } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(ThreadLocals) { return str8_zero(); } DF_VIEW_CMD_FUNCTION_DEF(ThreadLocals) {} DF_VIEW_UI_FUNCTION_DEF(ThreadLocals) { @@ -6552,7 +6478,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(Types) df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Type, 0.15f); df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_ViewRule, 0.30f); } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Types) { return str8_zero(); } DF_VIEW_CMD_FUNCTION_DEF(Types) {} DF_VIEW_UI_FUNCTION_DEF(Types) { @@ -6573,7 +6498,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(Procedures) df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Value, 0.6f); df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_ViewRule, 0.2f); } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Procedures) { return str8_zero(); } DF_VIEW_CMD_FUNCTION_DEF(Procedures) {} DF_VIEW_UI_FUNCTION_DEF(Procedures) { @@ -6591,12 +6515,7 @@ DF_VIEW_SETUP_FUNCTION_DEF(PendingFile) DF_PendingFileViewState *pves = df_view_user_state(view, DF_PendingFileViewState); pves->deferred_cmd_arena = df_view_push_arena_ext(view); pves->complete_cfg_arena = df_view_push_arena_ext(view); - pves->complete_cfg_root = df_cfg_tree_copy(pves->complete_cfg_arena, cfg_root); -} - -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(PendingFile) -{ - return str8_lit(""); + pves->complete_cfg_root = df_cfg_tree_copy(pves->complete_cfg_arena, cfg); } DF_VIEW_CMD_FUNCTION_DEF(PendingFile) @@ -6696,7 +6615,7 @@ DF_VIEW_SETUP_FUNCTION_DEF(Code) df_code_view_init(cv, view); // rjf: deserialize cursor - DF_CfgNode *cursor_cfg = df_cfg_node_child_from_string(cfg_root, str8_lit("cursor"), StringMatchFlag_CaseInsensitive); + DF_CfgNode *cursor_cfg = df_cfg_node_child_from_string(cfg, str8_lit("cursor"), StringMatchFlag_CaseInsensitive); if(cursor_cfg != &df_g_nil_cfg_node) { TxtPt cursor = txt_pt(1, 1); @@ -6713,12 +6632,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(Code) view->loading_t = view->loading_t_target = 1.f; } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Code) -{ - String8 string = push_str8f(arena, " cursor:%I64d:%I64d", view->cursor.line, view->cursor.column); - return string; -} - DF_VIEW_CMD_FUNCTION_DEF(Code) { DF_CodeViewState *cv = df_view_user_state(view, DF_CodeViewState); @@ -6726,9 +6639,9 @@ DF_VIEW_CMD_FUNCTION_DEF(Code) HS_Scope *hs_scope = hs_scope_open(); TXT_Scope *txt_scope = txt_scope_open(); E_Eval eval = e_eval_from_string(scratch.arena, string); - Rng1U64 range = df_range_from_eval_cfg(eval, &df_g_nil_cfg_node); + Rng1U64 range = df_range_from_eval_cfg(eval, cfg); df_interact_regs()->text_key = df_key_from_eval_space_range(eval.space, range, 1); - df_interact_regs()->lang_kind = df_lang_kind_from_eval_cfg(eval, &df_g_nil_cfg_node); + df_interact_regs()->lang_kind = df_lang_kind_from_eval_cfg(eval, cfg); U128 hash = {0}; TXT_TextInfo info = txt_text_info_from_key_lang(txt_scope, df_interact_regs()->text_key, df_interact_regs()->lang_kind, &hash); String8 data = hs_data_from_hash(hs_scope, hash); @@ -6799,9 +6712,9 @@ DF_VIEW_UI_FUNCTION_DEF(Code) // String8 path = df_file_path_from_eval_string(scratch.arena, string); E_Eval eval = e_eval_from_string(scratch.arena, string); - Rng1U64 range = df_range_from_eval_cfg(eval, &df_g_nil_cfg_node); + Rng1U64 range = df_range_from_eval_cfg(eval, cfg); df_interact_regs()->text_key = df_key_from_eval_space_range(eval.space, range, 1); - df_interact_regs()->lang_kind = df_lang_kind_from_eval_cfg(eval, &df_g_nil_cfg_node); + df_interact_regs()->lang_kind = df_lang_kind_from_eval_cfg(eval, cfg); U128 hash = {0}; TXT_TextInfo info = txt_text_info_from_key_lang(txt_scope, df_interact_regs()->text_key, df_interact_regs()->lang_kind, &hash); String8 data = hs_data_from_hash(hs_scope, hash); @@ -6962,11 +6875,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(Disassembly) } } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Disassembly) -{ - return str8_zero(); -} - DF_VIEW_CMD_FUNCTION_DEF(Disassembly) { DF_DisasmViewState *dv = df_view_user_state(view, DF_DisasmViewState); @@ -7189,11 +7097,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(Output) df_code_view_init(cv, view); } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Output) -{ - return str8_zero(); -} - DF_VIEW_CMD_FUNCTION_DEF(Output) { DF_CodeViewState *cv = df_view_user_state(view, DF_CodeViewState); @@ -7287,11 +7190,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(Memory) } } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Memory) -{ - return str8_lit(""); -} - DF_VIEW_CMD_FUNCTION_DEF(Memory) { DF_MemoryViewState *mv = df_view_user_state(view, DF_MemoryViewState); @@ -8192,14 +8090,10 @@ internal UI_BOX_CUSTOM_DRAW(df_bitmap_view_canvas_box_draw) DF_VIEW_SETUP_FUNCTION_DEF(Bitmap) { DF_BitmapViewState *bvs = df_view_user_state(view, DF_BitmapViewState); - DF_CfgNode *view_center_cfg = df_cfg_node_child_from_string(cfg_root, str8_lit("view_center"), StringMatchFlag_CaseInsensitive); - DF_CfgNode *zoom_cfg = df_cfg_node_child_from_string(cfg_root, str8_lit("zoom"), StringMatchFlag_CaseInsensitive); - DF_CfgNode *bitmap_cfg = df_cfg_node_child_from_string(cfg_root, str8_lit("bitmap"), StringMatchFlag_CaseInsensitive); - DF_Entity *thread = df_entity_from_handle(df_interact_regs()->thread); - DF_Entity *process = df_entity_ancestor_from_kind(thread, DF_EntityKind_Process); - U64 thread_unwind_rip_vaddr = df_query_cached_rip_from_thread_unwind(thread, df_interact_regs()->unwind_count); - bvs->view_center_pos.x = (F32)f64_from_str8(bitmap_cfg->first->string); - bvs->view_center_pos.y = (F32)f64_from_str8(bitmap_cfg->first->next->string); + DF_CfgNode *view_center_cfg = df_cfg_node_child_from_string(cfg, str8_lit("view_center"), StringMatchFlag_CaseInsensitive); + DF_CfgNode *zoom_cfg = df_cfg_node_child_from_string(cfg, str8_lit("zoom"), StringMatchFlag_CaseInsensitive); + bvs->view_center_pos.x = (F32)f64_from_str8(view_center_cfg->first->string); + bvs->view_center_pos.y = (F32)f64_from_str8(view_center_cfg->first->next->string); bvs->zoom = (F32)f64_from_str8(zoom_cfg->first->string); if(bvs->zoom == 0) { @@ -8207,16 +8101,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(Bitmap) } } -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Bitmap) -{ - DF_BitmapViewState *bvs = df_view_user_state(view, DF_BitmapViewState); - String8 result = push_str8f(arena, "view_center:(%.2f %.2f) zoom:(%.2f)", - bvs->view_center_pos.x, - bvs->view_center_pos.y, - bvs->zoom); - return result; -} - DF_VIEW_CMD_FUNCTION_DEF(Bitmap) { } @@ -8376,7 +8260,6 @@ DF_VIEW_UI_FUNCTION_DEF(Bitmap) //~ rjf: ExceptionFilters @view_hook_impl DF_VIEW_SETUP_FUNCTION_DEF(ExceptionFilters) {} -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(ExceptionFilters) {return str8_lit("");} DF_VIEW_CMD_FUNCTION_DEF(ExceptionFilters) {} DF_VIEW_UI_FUNCTION_DEF(ExceptionFilters) { @@ -8515,7 +8398,6 @@ DF_VIEW_UI_FUNCTION_DEF(ExceptionFilters) //~ rjf: Settings @view_hook_impl DF_VIEW_SETUP_FUNCTION_DEF(Settings) {} -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Settings) {return str8_zero();} DF_VIEW_CMD_FUNCTION_DEF(Settings) { diff --git a/src/df/gfx/generated/df_gfx.meta.c b/src/df/gfx/generated/df_gfx.meta.c index 437396b3..1e32d98e 100644 --- a/src/df/gfx/generated/df_gfx.meta.c +++ b/src/df/gfx/generated/df_gfx.meta.c @@ -142,38 +142,38 @@ str8_lit_comp("add_function_breakpoint"), DF_ViewSpecInfo df_g_gfx_view_kind_spec_info_table[32] = { -{(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|0*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("null"), str8_lit_comp(""), DF_IconKind_Null, DF_VIEW_SETUP_FUNCTION_NAME(Null), DF_VIEW_STRING_FROM_STATE_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|0*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("empty"), str8_lit_comp(""), DF_IconKind_Null, DF_VIEW_SETUP_FUNCTION_NAME(Empty), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(Empty), DF_VIEW_CMD_FUNCTION_NAME(Empty), DF_VIEW_UI_FUNCTION_NAME(Empty)}, -{(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|0*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("getting_started"), str8_lit_comp("Getting Started"), DF_IconKind_QuestionMark, DF_VIEW_SETUP_FUNCTION_NAME(GettingStarted), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(GettingStarted), DF_VIEW_CMD_FUNCTION_NAME(GettingStarted), DF_VIEW_UI_FUNCTION_NAME(GettingStarted)}, -{(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|0*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("commands"), str8_lit_comp("Commands"), DF_IconKind_List, DF_VIEW_SETUP_FUNCTION_NAME(Commands), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(Commands), DF_VIEW_CMD_FUNCTION_NAME(Commands), DF_VIEW_UI_FUNCTION_NAME(Commands)}, -{(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|0*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("file_system"), str8_lit_comp("File System"), DF_IconKind_FileOutline, DF_VIEW_SETUP_FUNCTION_NAME(FileSystem), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(FileSystem), DF_VIEW_CMD_FUNCTION_NAME(FileSystem), DF_VIEW_UI_FUNCTION_NAME(FileSystem)}, -{(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|0*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("system_processes"), str8_lit_comp("System Processes"), DF_IconKind_Null, DF_VIEW_SETUP_FUNCTION_NAME(SystemProcesses), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(SystemProcesses), DF_VIEW_CMD_FUNCTION_NAME(SystemProcesses), DF_VIEW_UI_FUNCTION_NAME(SystemProcesses)}, -{(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|0*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("entity_lister"), str8_lit_comp("Entity List"), DF_IconKind_Null, DF_VIEW_SETUP_FUNCTION_NAME(EntityLister), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(EntityLister), DF_VIEW_CMD_FUNCTION_NAME(EntityLister), DF_VIEW_UI_FUNCTION_NAME(EntityLister)}, -{(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|0*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("symbol_lister"), str8_lit_comp("Symbols"), DF_IconKind_Null, DF_VIEW_SETUP_FUNCTION_NAME(SymbolLister), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(SymbolLister), DF_VIEW_CMD_FUNCTION_NAME(SymbolLister), DF_VIEW_UI_FUNCTION_NAME(SymbolLister)}, -{(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|0*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("target"), str8_lit_comp("Target"), DF_IconKind_Target, DF_VIEW_SETUP_FUNCTION_NAME(Target), DF_VIEW_STRING_FROM_STATE_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|1*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("targets"), str8_lit_comp("Targets"), DF_IconKind_Target, DF_VIEW_SETUP_FUNCTION_NAME(Targets), DF_VIEW_STRING_FROM_STATE_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|0*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("file_path_map"), str8_lit_comp("File Path Map"), DF_IconKind_FileOutline, DF_VIEW_SETUP_FUNCTION_NAME(FilePathMap), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(FilePathMap), DF_VIEW_CMD_FUNCTION_NAME(FilePathMap), DF_VIEW_UI_FUNCTION_NAME(FilePathMap)}, -{(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|0*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("auto_view_rules"), str8_lit_comp("Auto View Rules"), DF_IconKind_Binoculars, DF_VIEW_SETUP_FUNCTION_NAME(AutoViewRules), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(AutoViewRules), DF_VIEW_CMD_FUNCTION_NAME(AutoViewRules), DF_VIEW_UI_FUNCTION_NAME(AutoViewRules)}, -{(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|1*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("breakpoints"), str8_lit_comp("Breakpoints"), DF_IconKind_CircleFilled, DF_VIEW_SETUP_FUNCTION_NAME(Breakpoints), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(Breakpoints), DF_VIEW_CMD_FUNCTION_NAME(Breakpoints), DF_VIEW_UI_FUNCTION_NAME(Breakpoints)}, -{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|1*DF_ViewSpecFlag_CanFilter|1*DF_ViewSpecFlag_FilterIsCode|1*DF_ViewSpecFlag_TypingAutomaticallyFilters|1*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("watch_pins"), str8_lit_comp("Watch Pins"), DF_IconKind_Pin, DF_VIEW_SETUP_FUNCTION_NAME(WatchPins), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(WatchPins), DF_VIEW_CMD_FUNCTION_NAME(WatchPins), DF_VIEW_UI_FUNCTION_NAME(WatchPins)}, -{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|1*DF_ViewSpecFlag_CanFilter|1*DF_ViewSpecFlag_FilterIsCode|1*DF_ViewSpecFlag_TypingAutomaticallyFilters|1*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("scheduler"), str8_lit_comp("Scheduler"), DF_IconKind_Scheduler, DF_VIEW_SETUP_FUNCTION_NAME(Scheduler), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(Scheduler), DF_VIEW_CMD_FUNCTION_NAME(Scheduler), DF_VIEW_UI_FUNCTION_NAME(Scheduler)}, -{(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|1*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("call_stack"), str8_lit_comp("Call Stack"), DF_IconKind_Thread, DF_VIEW_SETUP_FUNCTION_NAME(CallStack), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(CallStack), DF_VIEW_CMD_FUNCTION_NAME(CallStack), DF_VIEW_UI_FUNCTION_NAME(CallStack)}, -{(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|1*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("modules"), str8_lit_comp("Modules"), DF_IconKind_Module, DF_VIEW_SETUP_FUNCTION_NAME(Modules), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(Modules), DF_VIEW_CMD_FUNCTION_NAME(Modules), DF_VIEW_UI_FUNCTION_NAME(Modules)}, -{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|1*DF_ViewSpecFlag_CanFilter|1*DF_ViewSpecFlag_FilterIsCode|1*DF_ViewSpecFlag_TypingAutomaticallyFilters|1*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("watch"), str8_lit_comp("Watch"), DF_IconKind_Binoculars, DF_VIEW_SETUP_FUNCTION_NAME(Watch), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(Watch), DF_VIEW_CMD_FUNCTION_NAME(Watch), DF_VIEW_UI_FUNCTION_NAME(Watch)}, -{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|1*DF_ViewSpecFlag_CanFilter|1*DF_ViewSpecFlag_FilterIsCode|1*DF_ViewSpecFlag_TypingAutomaticallyFilters|1*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("locals"), str8_lit_comp("Locals"), DF_IconKind_Binoculars, DF_VIEW_SETUP_FUNCTION_NAME(Locals), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(Locals), DF_VIEW_CMD_FUNCTION_NAME(Locals), DF_VIEW_UI_FUNCTION_NAME(Locals)}, -{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|1*DF_ViewSpecFlag_CanFilter|1*DF_ViewSpecFlag_FilterIsCode|1*DF_ViewSpecFlag_TypingAutomaticallyFilters|1*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("registers"), str8_lit_comp("Registers"), DF_IconKind_Binoculars, DF_VIEW_SETUP_FUNCTION_NAME(Registers), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(Registers), DF_VIEW_CMD_FUNCTION_NAME(Registers), DF_VIEW_UI_FUNCTION_NAME(Registers)}, -{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|1*DF_ViewSpecFlag_CanFilter|1*DF_ViewSpecFlag_FilterIsCode|1*DF_ViewSpecFlag_TypingAutomaticallyFilters|1*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("globals"), str8_lit_comp("Globals"), DF_IconKind_Binoculars, DF_VIEW_SETUP_FUNCTION_NAME(Globals), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(Globals), DF_VIEW_CMD_FUNCTION_NAME(Globals), DF_VIEW_UI_FUNCTION_NAME(Globals)}, -{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|1*DF_ViewSpecFlag_CanFilter|1*DF_ViewSpecFlag_FilterIsCode|1*DF_ViewSpecFlag_TypingAutomaticallyFilters|1*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("thread_locals"), str8_lit_comp("Thread Locals"), DF_IconKind_Binoculars, DF_VIEW_SETUP_FUNCTION_NAME(ThreadLocals), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(ThreadLocals), DF_VIEW_CMD_FUNCTION_NAME(ThreadLocals), DF_VIEW_UI_FUNCTION_NAME(ThreadLocals)}, -{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|1*DF_ViewSpecFlag_CanFilter|1*DF_ViewSpecFlag_FilterIsCode|1*DF_ViewSpecFlag_TypingAutomaticallyFilters|1*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("types"), str8_lit_comp("Types"), DF_IconKind_Binoculars, DF_VIEW_SETUP_FUNCTION_NAME(Types), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(Types), DF_VIEW_CMD_FUNCTION_NAME(Types), DF_VIEW_UI_FUNCTION_NAME(Types)}, -{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|1*DF_ViewSpecFlag_CanFilter|1*DF_ViewSpecFlag_FilterIsCode|1*DF_ViewSpecFlag_TypingAutomaticallyFilters|1*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("procedures"), str8_lit_comp("Procedures"), DF_IconKind_Binoculars, DF_VIEW_SETUP_FUNCTION_NAME(Procedures), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(Procedures), DF_VIEW_CMD_FUNCTION_NAME(Procedures), DF_VIEW_UI_FUNCTION_NAME(Procedures)}, -{(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|0*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("pending_file"), str8_lit_comp("Pending File"), DF_IconKind_FileOutline, DF_VIEW_SETUP_FUNCTION_NAME(PendingFile), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(PendingFile), DF_VIEW_CMD_FUNCTION_NAME(PendingFile), DF_VIEW_UI_FUNCTION_NAME(PendingFile)}, -{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|1*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|0*DF_ViewSpecFlag_CanFilter|1*DF_ViewSpecFlag_FilterIsCode|0*DF_ViewSpecFlag_TypingAutomaticallyFilters|0*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("code"), str8_lit_comp("Code"), DF_IconKind_FileOutline, DF_VIEW_SETUP_FUNCTION_NAME(Code), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(Code), DF_VIEW_CMD_FUNCTION_NAME(Code), DF_VIEW_UI_FUNCTION_NAME(Code)}, -{(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|0*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("disassembly"), str8_lit_comp("Disassembly"), DF_IconKind_Glasses, DF_VIEW_SETUP_FUNCTION_NAME(Disassembly), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(Disassembly), DF_VIEW_CMD_FUNCTION_NAME(Disassembly), DF_VIEW_UI_FUNCTION_NAME(Disassembly)}, -{(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|0*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("output"), str8_lit_comp("Output"), DF_IconKind_List, DF_VIEW_SETUP_FUNCTION_NAME(Output), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(Output), DF_VIEW_CMD_FUNCTION_NAME(Output), DF_VIEW_UI_FUNCTION_NAME(Output)}, -{(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|0*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("memory"), str8_lit_comp("Memory"), DF_IconKind_Grid, DF_VIEW_SETUP_FUNCTION_NAME(Memory), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(Memory), DF_VIEW_CMD_FUNCTION_NAME(Memory), DF_VIEW_UI_FUNCTION_NAME(Memory)}, -{(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|0*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("bitmap"), str8_lit_comp("Bitmap"), DF_IconKind_Binoculars, DF_VIEW_SETUP_FUNCTION_NAME(Bitmap), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(Bitmap), DF_VIEW_CMD_FUNCTION_NAME(Bitmap), DF_VIEW_UI_FUNCTION_NAME(Bitmap)}, -{(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|1*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("exception_filters"), str8_lit_comp("Exception Filters"), DF_IconKind_Gear, DF_VIEW_SETUP_FUNCTION_NAME(ExceptionFilters), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(ExceptionFilters), DF_VIEW_CMD_FUNCTION_NAME(ExceptionFilters), DF_VIEW_UI_FUNCTION_NAME(ExceptionFilters)}, -{(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|1*DF_ViewSpecFlag_DisplayFilterInTitle), str8_lit_comp("settings"), str8_lit_comp("Settings"), DF_IconKind_Gear, DF_VIEW_SETUP_FUNCTION_NAME(Settings), DF_VIEW_STRING_FROM_STATE_FUNCTION_NAME(Settings), DF_VIEW_CMD_FUNCTION_NAME(Settings), DF_VIEW_UI_FUNCTION_NAME(Settings)}, +{(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)}, +{(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("getting_started"), str8_lit_comp("Getting Started"), DF_IconKind_QuestionMark, DF_VIEW_SETUP_FUNCTION_NAME(GettingStarted), DF_VIEW_CMD_FUNCTION_NAME(GettingStarted), DF_VIEW_UI_FUNCTION_NAME(GettingStarted)}, +{(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("commands"), str8_lit_comp("Commands"), DF_IconKind_List, DF_VIEW_SETUP_FUNCTION_NAME(Commands), DF_VIEW_CMD_FUNCTION_NAME(Commands), DF_VIEW_UI_FUNCTION_NAME(Commands)}, +{(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("file_system"), str8_lit_comp("File System"), DF_IconKind_FileOutline, DF_VIEW_SETUP_FUNCTION_NAME(FileSystem), DF_VIEW_CMD_FUNCTION_NAME(FileSystem), DF_VIEW_UI_FUNCTION_NAME(FileSystem)}, +{(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(SystemProcesses), DF_VIEW_CMD_FUNCTION_NAME(SystemProcesses), DF_VIEW_UI_FUNCTION_NAME(SystemProcesses)}, +{(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(EntityLister), DF_VIEW_CMD_FUNCTION_NAME(EntityLister), DF_VIEW_UI_FUNCTION_NAME(EntityLister)}, +{(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(SymbolLister), DF_VIEW_CMD_FUNCTION_NAME(SymbolLister), DF_VIEW_UI_FUNCTION_NAME(SymbolLister)}, +{(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(FilePathMap), DF_VIEW_CMD_FUNCTION_NAME(FilePathMap), DF_VIEW_UI_FUNCTION_NAME(FilePathMap)}, +{(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(AutoViewRules), DF_VIEW_CMD_FUNCTION_NAME(AutoViewRules), DF_VIEW_UI_FUNCTION_NAME(AutoViewRules)}, +{(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("breakpoints"), str8_lit_comp("Breakpoints"), DF_IconKind_CircleFilled, DF_VIEW_SETUP_FUNCTION_NAME(Breakpoints), DF_VIEW_CMD_FUNCTION_NAME(Breakpoints), DF_VIEW_UI_FUNCTION_NAME(Breakpoints)}, +{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|1*DF_ViewSpecFlag_CanFilter|1*DF_ViewSpecFlag_FilterIsCode|1*DF_ViewSpecFlag_TypingAutomaticallyFilters), str8_lit_comp("watch_pins"), str8_lit_comp("Watch Pins"), DF_IconKind_Pin, DF_VIEW_SETUP_FUNCTION_NAME(WatchPins), DF_VIEW_CMD_FUNCTION_NAME(WatchPins), DF_VIEW_UI_FUNCTION_NAME(WatchPins)}, +{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|1*DF_ViewSpecFlag_CanFilter|1*DF_ViewSpecFlag_FilterIsCode|1*DF_ViewSpecFlag_TypingAutomaticallyFilters), str8_lit_comp("scheduler"), str8_lit_comp("Scheduler"), DF_IconKind_Scheduler, DF_VIEW_SETUP_FUNCTION_NAME(Scheduler), DF_VIEW_CMD_FUNCTION_NAME(Scheduler), DF_VIEW_UI_FUNCTION_NAME(Scheduler)}, +{(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("call_stack"), str8_lit_comp("Call Stack"), DF_IconKind_Thread, DF_VIEW_SETUP_FUNCTION_NAME(CallStack), DF_VIEW_CMD_FUNCTION_NAME(CallStack), DF_VIEW_UI_FUNCTION_NAME(CallStack)}, +{(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("modules"), str8_lit_comp("Modules"), DF_IconKind_Module, DF_VIEW_SETUP_FUNCTION_NAME(Modules), DF_VIEW_CMD_FUNCTION_NAME(Modules), DF_VIEW_UI_FUNCTION_NAME(Modules)}, +{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|1*DF_ViewSpecFlag_CanFilter|1*DF_ViewSpecFlag_FilterIsCode|1*DF_ViewSpecFlag_TypingAutomaticallyFilters), str8_lit_comp("watch"), str8_lit_comp("Watch"), DF_IconKind_Binoculars, DF_VIEW_SETUP_FUNCTION_NAME(Watch), DF_VIEW_CMD_FUNCTION_NAME(Watch), DF_VIEW_UI_FUNCTION_NAME(Watch)}, +{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|1*DF_ViewSpecFlag_CanFilter|1*DF_ViewSpecFlag_FilterIsCode|1*DF_ViewSpecFlag_TypingAutomaticallyFilters), str8_lit_comp("locals"), str8_lit_comp("Locals"), DF_IconKind_Binoculars, DF_VIEW_SETUP_FUNCTION_NAME(Locals), DF_VIEW_CMD_FUNCTION_NAME(Locals), DF_VIEW_UI_FUNCTION_NAME(Locals)}, +{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|1*DF_ViewSpecFlag_CanFilter|1*DF_ViewSpecFlag_FilterIsCode|1*DF_ViewSpecFlag_TypingAutomaticallyFilters), str8_lit_comp("registers"), str8_lit_comp("Registers"), DF_IconKind_Binoculars, DF_VIEW_SETUP_FUNCTION_NAME(Registers), DF_VIEW_CMD_FUNCTION_NAME(Registers), DF_VIEW_UI_FUNCTION_NAME(Registers)}, +{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|1*DF_ViewSpecFlag_CanFilter|1*DF_ViewSpecFlag_FilterIsCode|1*DF_ViewSpecFlag_TypingAutomaticallyFilters), str8_lit_comp("globals"), str8_lit_comp("Globals"), DF_IconKind_Binoculars, DF_VIEW_SETUP_FUNCTION_NAME(Globals), DF_VIEW_CMD_FUNCTION_NAME(Globals), DF_VIEW_UI_FUNCTION_NAME(Globals)}, +{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|1*DF_ViewSpecFlag_CanFilter|1*DF_ViewSpecFlag_FilterIsCode|1*DF_ViewSpecFlag_TypingAutomaticallyFilters), str8_lit_comp("thread_locals"), str8_lit_comp("Thread Locals"), DF_IconKind_Binoculars, DF_VIEW_SETUP_FUNCTION_NAME(ThreadLocals), DF_VIEW_CMD_FUNCTION_NAME(ThreadLocals), DF_VIEW_UI_FUNCTION_NAME(ThreadLocals)}, +{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|1*DF_ViewSpecFlag_CanFilter|1*DF_ViewSpecFlag_FilterIsCode|1*DF_ViewSpecFlag_TypingAutomaticallyFilters), str8_lit_comp("types"), str8_lit_comp("Types"), DF_IconKind_Binoculars, DF_VIEW_SETUP_FUNCTION_NAME(Types), DF_VIEW_CMD_FUNCTION_NAME(Types), DF_VIEW_UI_FUNCTION_NAME(Types)}, +{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|1*DF_ViewSpecFlag_CanFilter|1*DF_ViewSpecFlag_FilterIsCode|1*DF_ViewSpecFlag_TypingAutomaticallyFilters), str8_lit_comp("procedures"), str8_lit_comp("Procedures"), DF_IconKind_Binoculars, DF_VIEW_SETUP_FUNCTION_NAME(Procedures), DF_VIEW_CMD_FUNCTION_NAME(Procedures), DF_VIEW_UI_FUNCTION_NAME(Procedures)}, +{(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("pending_file"), str8_lit_comp("Pending File"), DF_IconKind_FileOutline, DF_VIEW_SETUP_FUNCTION_NAME(PendingFile), DF_VIEW_CMD_FUNCTION_NAME(PendingFile), DF_VIEW_UI_FUNCTION_NAME(PendingFile)}, +{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|1*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|0*DF_ViewSpecFlag_CanFilter|1*DF_ViewSpecFlag_FilterIsCode|0*DF_ViewSpecFlag_TypingAutomaticallyFilters), str8_lit_comp("code"), str8_lit_comp("Code"), DF_IconKind_FileOutline, DF_VIEW_SETUP_FUNCTION_NAME(Code), DF_VIEW_CMD_FUNCTION_NAME(Code), DF_VIEW_UI_FUNCTION_NAME(Code)}, +{(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("disassembly"), str8_lit_comp("Disassembly"), DF_IconKind_Glasses, DF_VIEW_SETUP_FUNCTION_NAME(Disassembly), DF_VIEW_CMD_FUNCTION_NAME(Disassembly), DF_VIEW_UI_FUNCTION_NAME(Disassembly)}, +{(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("output"), str8_lit_comp("Output"), DF_IconKind_List, DF_VIEW_SETUP_FUNCTION_NAME(Output), DF_VIEW_CMD_FUNCTION_NAME(Output), DF_VIEW_UI_FUNCTION_NAME(Output)}, +{(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("memory"), str8_lit_comp("Memory"), DF_IconKind_Grid, DF_VIEW_SETUP_FUNCTION_NAME(Memory), DF_VIEW_CMD_FUNCTION_NAME(Memory), DF_VIEW_UI_FUNCTION_NAME(Memory)}, +{(0|0*DF_ViewSpecFlag_ParameterizedByEntity|0*DF_ViewSpecFlag_ProjectSpecific|1*DF_ViewSpecFlag_CanSerialize|0*DF_ViewSpecFlag_CanFilter|1*DF_ViewSpecFlag_FilterIsCode|0*DF_ViewSpecFlag_TypingAutomaticallyFilters), str8_lit_comp("bitmap"), str8_lit_comp("Bitmap"), DF_IconKind_Binoculars, DF_VIEW_SETUP_FUNCTION_NAME(Bitmap), DF_VIEW_CMD_FUNCTION_NAME(Bitmap), DF_VIEW_UI_FUNCTION_NAME(Bitmap)}, +{(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("exception_filters"), str8_lit_comp("Exception Filters"), DF_IconKind_Gear, DF_VIEW_SETUP_FUNCTION_NAME(ExceptionFilters), DF_VIEW_CMD_FUNCTION_NAME(ExceptionFilters), DF_VIEW_UI_FUNCTION_NAME(ExceptionFilters)}, +{(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("settings"), str8_lit_comp("Settings"), DF_IconKind_Gear, DF_VIEW_SETUP_FUNCTION_NAME(Settings), DF_VIEW_CMD_FUNCTION_NAME(Settings), DF_VIEW_UI_FUNCTION_NAME(Settings)}, }; DF_CmdParamSlot df_g_cmd_param_slot_2_view_spec_src_map[7] = diff --git a/src/df/gfx/generated/df_gfx.meta.h b/src/df/gfx/generated/df_gfx.meta.h index 092da3c6..82305ea2 100644 --- a/src/df/gfx/generated/df_gfx.meta.h +++ b/src/df/gfx/generated/df_gfx.meta.h @@ -193,38 +193,6 @@ DF_VIEW_SETUP_FUNCTION_DEF(Memory); DF_VIEW_SETUP_FUNCTION_DEF(Bitmap); DF_VIEW_SETUP_FUNCTION_DEF(ExceptionFilters); DF_VIEW_SETUP_FUNCTION_DEF(Settings); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Null); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Empty); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(GettingStarted); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Commands); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(FileSystem); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(SystemProcesses); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(EntityLister); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(SymbolLister); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Target); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Targets); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(FilePathMap); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(AutoViewRules); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Breakpoints); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(WatchPins); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Scheduler); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(CallStack); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Modules); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Watch); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Locals); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Registers); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Globals); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(ThreadLocals); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Types); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Procedures); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(PendingFile); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Code); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Disassembly); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Output); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Memory); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Bitmap); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(ExceptionFilters); -DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(Settings); DF_VIEW_CMD_FUNCTION_DEF(Null); DF_VIEW_CMD_FUNCTION_DEF(Empty); DF_VIEW_CMD_FUNCTION_DEF(GettingStarted);