mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-05 13:28:40 +00:00
extend watch view column parameterization; further progress on replacing entity views with watch views
This commit is contained in:
+22
-10
@@ -6120,6 +6120,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds)
|
||||
U64 thread_unwind_rip_vaddr = df_query_cached_rip_from_thread_unwind(thread, df_base_interact_regs()->unwind_count);
|
||||
String8 expr = ws->hover_eval_string;
|
||||
E_Eval eval = e_eval_from_string(scratch.arena, expr);
|
||||
DF_CfgTable top_level_cfg_table = {0};
|
||||
|
||||
//- rjf: build if good
|
||||
if(!e_type_key_match(eval.type_key, e_type_key_zero()) && !ui_any_ctx_menu_is_open())
|
||||
@@ -6133,7 +6134,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds)
|
||||
DF_EvalView *eval_view = df_eval_view_from_key(eval_view_key);
|
||||
DF_ExpandKey parent_key = df_expand_key_make(5381, 1);
|
||||
DF_ExpandKey key = df_expand_key_make(df_hash_from_expand_key(parent_key), 1);
|
||||
DF_EvalVizBlockList viz_blocks = df_eval_viz_block_list_from_eval_view_expr_keys(scratch.arena, eval_view, expr, parent_key, key);
|
||||
DF_EvalVizBlockList viz_blocks = df_eval_viz_block_list_from_eval_view_expr_keys(scratch.arena, eval_view, &top_level_cfg_table, expr, parent_key, key);
|
||||
U32 default_radix = (eval.space == E_Space_Regs ? 16 : 10);
|
||||
DF_EvalVizWindowedRowList viz_rows = df_eval_viz_windowed_row_list_from_viz_block_list(scratch.arena, eval_view, r1s64(0, 50), &viz_blocks);
|
||||
|
||||
@@ -6181,7 +6182,7 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds)
|
||||
String8 row_expr_string = df_expr_string_from_viz_row(scratch.arena, row);
|
||||
String8 row_display_value = df_value_string_from_eval(scratch.arena, DF_EvalVizStringFlag_ReadOnlyDisplayRules, default_radix, ui_top_font(), ui_top_font_size(), 500.f, row_eval, row->member, row->cfg_table);
|
||||
expr_column_width_px = f_dim_from_tag_size_string(ui_top_font(), ui_top_font_size(), 0, 0, row_expr_string).x + ui_top_font_size()*5.f;
|
||||
value_column_width_px = f_dim_from_tag_size_string(ui_top_font(), ui_top_font_size(), 0, 0, row_display_value).x + ui_top_font_size()*2.5f;
|
||||
value_column_width_px = f_dim_from_tag_size_string(ui_top_font(), ui_top_font_size(), 0, 0, row_display_value).x + ui_top_font_size()*5.f;
|
||||
F32 total_dim_px = (expr_column_width_px + value_column_width_px);
|
||||
width_px = Min(80.f*ui_top_font_size(), total_dim_px*1.5f);
|
||||
}
|
||||
@@ -8382,12 +8383,12 @@ df_append_value_strings_from_eval(Arena *arena, DF_EvalVizStringFlags flags, U32
|
||||
|
||||
// rjf: special case: push strings for textual string content
|
||||
B32 did_content = 0;
|
||||
if(!did_content && ptee_has_string && !has_array && (flags & DF_EvalVizStringFlag_ReadOnlyDisplayRules))
|
||||
if(!did_content && ptee_has_string && !has_array)
|
||||
{
|
||||
did_content = 1;
|
||||
U64 string_memory_addr = value_eval.value.u64;
|
||||
U64 element_size = e_type_byte_size_from_key(direct_type_key);
|
||||
U64 string_buffer_size = 256;
|
||||
U64 string_buffer_size = 1024;
|
||||
U8 *string_buffer = push_array(arena, U8, string_buffer_size);
|
||||
for(U64 try_size = string_buffer_size; try_size >= 16; try_size /= 2)
|
||||
{
|
||||
@@ -8414,13 +8415,14 @@ df_append_value_strings_from_eval(Arena *arena, DF_EvalVizStringFlags flags, U32
|
||||
}
|
||||
|
||||
// rjf: special case: push strings for symbols
|
||||
B32 did_string = 0;
|
||||
if(!did_content && symbol_name.size != 0 &&
|
||||
((type_kind == E_TypeKind_Ptr && direct_type_kind == E_TypeKind_Void) ||
|
||||
(type_kind == E_TypeKind_Ptr && direct_type_kind == E_TypeKind_Function) ||
|
||||
(type_kind == E_TypeKind_Function)) &&
|
||||
(flags & DF_EvalVizStringFlag_ReadOnlyDisplayRules))
|
||||
(type_kind == E_TypeKind_Function)))
|
||||
{
|
||||
did_content = 1;
|
||||
did_string = 1;
|
||||
str8_list_push(arena, out, symbol_name);
|
||||
space_taken += f_dim_from_tag_size_string(font, font_size, 0, 0, symbol_name).x;
|
||||
}
|
||||
@@ -8457,7 +8459,7 @@ df_append_value_strings_from_eval(Arena *arena, DF_EvalVizStringFlags flags, U32
|
||||
|
||||
// rjf: push pointer value
|
||||
B32 did_ptr_value = 0;
|
||||
if(!no_addr || !did_content)
|
||||
if((!no_addr || !did_content) && (!(flags & DF_EvalVizStringFlag_ReadOnlyDisplayRules) || !did_string))
|
||||
{
|
||||
did_ptr_value = 1;
|
||||
if(did_content)
|
||||
@@ -8494,11 +8496,11 @@ df_append_value_strings_from_eval(Arena *arena, DF_EvalVizStringFlags flags, U32
|
||||
|
||||
// rjf: special case: push strings for textual string content
|
||||
B32 did_content = 0;
|
||||
if(!did_content && array_is_string && !has_array && (flags & DF_EvalVizStringFlag_ReadOnlyDisplayRules))
|
||||
if(!did_content && array_is_string && !has_array)
|
||||
{
|
||||
U64 element_size = e_type_byte_size_from_key(direct_type_key);
|
||||
did_content = 1;
|
||||
U64 string_buffer_size = 256;
|
||||
U64 string_buffer_size = 1024;
|
||||
U8 *string_buffer = push_array(arena, U8, string_buffer_size);
|
||||
switch(eval.mode)
|
||||
{
|
||||
@@ -8536,7 +8538,7 @@ df_append_value_strings_from_eval(Arena *arena, DF_EvalVizStringFlags flags, U32
|
||||
}
|
||||
|
||||
// rjf: descend in all other cases
|
||||
if(!did_content)
|
||||
if(!did_content && (flags & DF_EvalVizStringFlag_ReadOnlyDisplayRules))
|
||||
{
|
||||
did_content = 1;
|
||||
|
||||
@@ -12320,6 +12322,16 @@ df_fancy_string_list_from_code_string(Arena *arena, F32 alpha, B32 indirection_s
|
||||
{
|
||||
color = df_rgba_from_theme_color(DF_ThemeColor_CodeType);
|
||||
}
|
||||
else
|
||||
{
|
||||
DF_Entity *module = df_entity_from_handle(df_interact_regs()->module);
|
||||
DI_Key dbgi_key = df_dbgi_key_from_module(module);
|
||||
U64 symbol_voff = df_voff_from_dbgi_key_symbol_name(&dbgi_key, token_string);
|
||||
if(symbol_voff != 0)
|
||||
{
|
||||
color = df_rgba_from_theme_color(DF_ThemeColor_CodeSymbol);
|
||||
}
|
||||
}
|
||||
D_FancyString fancy_string =
|
||||
{
|
||||
ui_top_font(),
|
||||
|
||||
+67
-60
@@ -1292,7 +1292,7 @@ df_watch_view_text_edit_state_from_pt(DF_WatchViewState *wv, DF_WatchViewPoint p
|
||||
//- rjf: watch view column state mutation
|
||||
|
||||
internal DF_WatchViewColumn *
|
||||
df_watch_view_column_alloc(DF_WatchViewState *wv, DF_WatchViewColumnKind kind, F32 pct, String8 string)
|
||||
df_watch_view_column_alloc_(DF_WatchViewState *wv, DF_WatchViewColumnKind kind, F32 pct, DF_WatchViewColumnParams *params)
|
||||
{
|
||||
if(!wv->free_column)
|
||||
{
|
||||
@@ -1305,8 +1305,10 @@ df_watch_view_column_alloc(DF_WatchViewState *wv, DF_WatchViewColumnKind kind, F
|
||||
wv->column_count += 1;
|
||||
col->kind = kind;
|
||||
col->pct = pct;
|
||||
col->string_size = Min(sizeof(col->string_buffer), string.size);
|
||||
MemoryCopy(col->string_buffer, string.str, col->string_size);
|
||||
col->string_size = Min(sizeof(col->string_buffer), params->string.size);
|
||||
MemoryCopy(col->string_buffer, params->string.str, col->string_size);
|
||||
col->is_non_code = params->is_non_code;
|
||||
col->dequote_string = params->dequote_string;
|
||||
return col;
|
||||
}
|
||||
|
||||
@@ -1426,6 +1428,7 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS
|
||||
};
|
||||
U64 frame_rows_count = 0;
|
||||
FrameRow *frame_rows = 0;
|
||||
DF_CfgTable top_level_cfg_table = {0};
|
||||
DF_EvalVizBlockList blocks = {0};
|
||||
UI_ScrollListRowBlockArray row_blocks = {0};
|
||||
Vec2S64 cursor_tbl = {0};
|
||||
@@ -1475,7 +1478,7 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS
|
||||
FuzzyMatchRangeList matches = fuzzy_match_find(scratch.arena, filter, expr_string);
|
||||
if(matches.count == matches.needle_part_count)
|
||||
{
|
||||
DF_EvalVizBlockList watch_blocks = df_eval_viz_block_list_from_eval_view_expr_keys(scratch.arena, eval_view, expr_string, parent_key, key);
|
||||
DF_EvalVizBlockList watch_blocks = df_eval_viz_block_list_from_eval_view_expr_keys(scratch.arena, eval_view, &top_level_cfg_table, expr_string, parent_key, key);
|
||||
df_eval_viz_block_list_concat__in_place(&blocks, &watch_blocks);}
|
||||
}
|
||||
}break;
|
||||
@@ -1486,6 +1489,7 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS
|
||||
case DF_WatchViewFillKind_Breakpoints:
|
||||
{
|
||||
mutable_entity_kind = DF_EntityKind_Breakpoint;
|
||||
df_cfg_table_push_unparsed_string(scratch.arena, &top_level_cfg_table, str8_lit("no_addr"), DF_CfgSrc_User);
|
||||
DF_EntityList bps = df_query_cached_entity_list_with_kind(mutable_entity_kind);
|
||||
for(DF_EntityNode *n = bps.first; n != 0; n = n->next)
|
||||
{
|
||||
@@ -1502,10 +1506,11 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS
|
||||
{
|
||||
E_MemberList bp_members = {0};
|
||||
{
|
||||
e_member_list_push_new(scratch.arena, &bp_members, .name = str8_lit("Enabled"), .off = 0, .type_key = e_type_key_basic(E_TypeKind_S64));
|
||||
e_member_list_push_new(scratch.arena, &bp_members, .name = str8_lit("Enabled"), .off = 0, .type_key = e_type_key_basic(E_TypeKind_S64));
|
||||
e_member_list_push_new(scratch.arena, &bp_members, .name = str8_lit("Hit Count"),.off = 0+8, .type_key = e_type_key_basic(E_TypeKind_U64));
|
||||
e_member_list_push_new(scratch.arena, &bp_members, .name = str8_lit("Label"), .off = 0+8+8, .type_key = e_type_key_cons_ptr(architecture_from_context(), e_type_key_basic(E_TypeKind_Char8)));
|
||||
e_member_list_push_new(scratch.arena, &bp_members, .name = str8_lit("Location"), .off = 0+8+8+8, .type_key = e_type_key_cons_ptr(architecture_from_context(), e_type_key_basic(E_TypeKind_Char8)));
|
||||
e_member_list_push_new(scratch.arena, &bp_members, .name = str8_lit("Condition"),.off = 0+8+8+8+8,.type_key = e_type_key_cons_ptr(architecture_from_context(), e_type_key_basic(E_TypeKind_Char8)));
|
||||
}
|
||||
E_MemberArray bp_members_array = e_member_array_from_list(scratch.arena, &bp_members);
|
||||
E_TypeKey bp_type = e_type_key_cons(.arch = architecture_from_context(), .kind = E_TypeKind_Struct, .name = str8_lit("Breakpoint"), .members = bp_members_array.v, .count = bp_members_array.count);
|
||||
@@ -1513,8 +1518,7 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS
|
||||
bp_expr->type_key = bp_type;
|
||||
bp_expr->mode = E_Mode_Offset;
|
||||
bp_expr->space = (U64)bp;
|
||||
DF_CfgTable cfg_table = {0};
|
||||
df_append_viz_blocks_for_parent__rec(scratch.arena, eval_view, parent_key, key, title, bp_expr, &cfg_table, 0, &blocks);
|
||||
df_append_viz_blocks_for_parent__rec(scratch.arena, eval_view, parent_key, key, title, bp_expr, &top_level_cfg_table, 0, &blocks);
|
||||
}
|
||||
}
|
||||
}break;
|
||||
@@ -1549,8 +1553,7 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS
|
||||
wp_expr->type_key = wp_type;
|
||||
wp_expr->mode = E_Mode_Offset;
|
||||
wp_expr->space = (U64)wp;
|
||||
DF_CfgTable cfg_table = {0};
|
||||
df_append_viz_blocks_for_parent__rec(scratch.arena, eval_view, parent_key, key, title, wp_expr, &cfg_table, 0, &blocks);
|
||||
df_append_viz_blocks_for_parent__rec(scratch.arena, eval_view, parent_key, key, title, wp_expr, &top_level_cfg_table, 0, &blocks);
|
||||
}
|
||||
}
|
||||
}break;
|
||||
@@ -1647,7 +1650,7 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS
|
||||
{
|
||||
DF_ExpandKey parent_key = df_expand_key_make(5381, 0);
|
||||
DF_ExpandKey key = df_expand_key_make(df_hash_from_expand_key(parent_key), num);
|
||||
DF_EvalVizBlockList root_blocks = df_eval_viz_block_list_from_eval_view_expr_keys(scratch.arena, eval_view, root_expr_string, parent_key, key);
|
||||
DF_EvalVizBlockList root_blocks = df_eval_viz_block_list_from_eval_view_expr_keys(scratch.arena, eval_view, &top_level_cfg_table, root_expr_string, parent_key, key);
|
||||
df_eval_viz_block_list_concat__in_place(&blocks, &root_blocks);
|
||||
}
|
||||
}
|
||||
@@ -1659,7 +1662,7 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS
|
||||
{
|
||||
DF_ExpandKey parent_key = df_expand_key_make(5381, 0);
|
||||
DF_ExpandKey key = df_expand_key_make(df_hash_from_expand_key(parent_key), num);
|
||||
DF_EvalVizBlockList root_blocks = df_eval_viz_block_list_from_eval_view_expr_keys(scratch.arena, eval_view, root_expr_string, parent_key, key);
|
||||
DF_EvalVizBlockList root_blocks = df_eval_viz_block_list_from_eval_view_expr_keys(scratch.arena, eval_view, &top_level_cfg_table, root_expr_string, parent_key, key);
|
||||
df_eval_viz_block_list_concat__in_place(&blocks, &root_blocks);
|
||||
}
|
||||
}
|
||||
@@ -1681,7 +1684,7 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS
|
||||
{
|
||||
DF_ExpandKey parent_key = df_expand_key_make(5381, 0);
|
||||
DF_ExpandKey key = df_expand_key_make(df_hash_from_expand_key(parent_key), idx+1);
|
||||
DF_EvalVizBlockList root_blocks = df_eval_viz_block_list_from_eval_view_expr_keys(scratch.arena, eval_view, root_expr_string, parent_key, key);
|
||||
DF_EvalVizBlockList root_blocks = df_eval_viz_block_list_from_eval_view_expr_keys(scratch.arena, eval_view, &top_level_cfg_table, root_expr_string, parent_key, key);
|
||||
df_eval_viz_block_list_concat__in_place(&blocks, &root_blocks);
|
||||
}
|
||||
}
|
||||
@@ -1786,7 +1789,7 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS
|
||||
}
|
||||
|
||||
//- rjf: build blocks for all table items, split by sorted sub-expansions
|
||||
DF_CfgTable *cfg_table = push_array(scratch.arena, DF_CfgTable, 1);
|
||||
DF_CfgTable *cfg_table = &top_level_cfg_table;
|
||||
DF_EvalVizBlock *last_vb = df_eval_viz_block_begin(scratch.arena, DF_EvalVizBlockKind_DebugInfoTable, parent_key, root_key, 0);
|
||||
{
|
||||
last_vb->visual_idx_range = last_vb->semantic_idx_range = r1u64(0, items.count);
|
||||
@@ -1985,8 +1988,7 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS
|
||||
evt->flags & UI_EventFlag_Paste ||
|
||||
(evt->kind == UI_EventKind_Press && evt->slot == UI_EventActionSlot_Edit)) &&
|
||||
selection_tbl.min.x == selection_tbl.max.x &&
|
||||
(selection_tbl.min.y != 0 || selection_tbl.min.y != 0) &&
|
||||
(selection_tbl.min.x != 0 || modifiable))
|
||||
(selection_tbl.min.y != 0 || selection_tbl.min.y != 0))
|
||||
{
|
||||
Vec2S64 selection_dim = dim_2s64(selection_tbl);
|
||||
ewv->text_editing = 1;
|
||||
@@ -2798,6 +2800,13 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS
|
||||
DF_WatchViewTextEditState *cell_edit_state = df_watch_view_text_edit_state_from_pt(ewv, cell_pt);
|
||||
B32 cell_selected = (row_selected && selection_tbl.min.x <= cell_pt.x && cell_pt.x <= selection_tbl.max.x);
|
||||
String8 cell_pre_edit_string = df_string_from_eval_viz_row_column(scratch.arena, eval_view, row, col, 0, default_radix, ui_top_font(), ui_top_font_size(), row_string_max_size_px);
|
||||
if(col->dequote_string &&
|
||||
cell_pre_edit_string.size >= 2 &&
|
||||
cell_pre_edit_string.str[0] == '"' &&
|
||||
cell_pre_edit_string.str[cell_pre_edit_string.size-1] == '"')
|
||||
{
|
||||
cell_pre_edit_string = str8_skip(str8_chop(cell_pre_edit_string, 1), 1);
|
||||
}
|
||||
|
||||
//- rjf: unpack column-kind-specific info
|
||||
E_Eval cell_eval = row_eval;
|
||||
@@ -2875,16 +2884,12 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS
|
||||
{
|
||||
cell_ui_hook = row->value_ui_rule_spec->info.row_ui;
|
||||
}
|
||||
if(cell_eval.space >= E_Space_FIXED_COUNT)
|
||||
{
|
||||
cell_base_color = df_rgba_from_theme_color(DF_ThemeColor_CodeSymbol);
|
||||
}
|
||||
cell_can_edit = df_type_key_is_editable(cell_eval.type_key);
|
||||
}break;
|
||||
case DF_WatchViewColumnKind_Type:
|
||||
{
|
||||
cell_can_edit = 0;
|
||||
E_TypeKey key = cell_eval.type_key;
|
||||
cell_base_color = df_rgba_from_theme_color(DF_ThemeColor_CodeType);
|
||||
}break;
|
||||
case DF_WatchViewColumnKind_ViewRule:
|
||||
{
|
||||
@@ -2922,7 +2927,8 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS
|
||||
UI_Palette(palette) UI_TableCell
|
||||
UI_FocusHot(cell_selected ? UI_FocusKind_On : UI_FocusKind_Off)
|
||||
UI_FocusActive((cell_selected && ewv->text_editing) ? UI_FocusKind_On : UI_FocusKind_Off)
|
||||
DF_Font(ws, DF_FontSlot_Code) UI_FlagsAdd(cell_flags | (row->depth > 0 ? UI_BoxFlag_DrawTextWeak : 0))
|
||||
DF_Font(ws, col->is_non_code ? DF_FontSlot_Main : DF_FontSlot_Code)
|
||||
UI_FlagsAdd(cell_flags | (row->depth > 0 ? UI_BoxFlag_DrawTextWeak : 0))
|
||||
{
|
||||
// rjf: cell has errors? -> build error box
|
||||
if(cell_error_string.size != 0) DF_Font(ws, DF_FontSlot_Main)
|
||||
@@ -2961,7 +2967,7 @@ df_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_WatchViewS
|
||||
else
|
||||
{
|
||||
sig = df_line_editf(ws,
|
||||
(DF_LineEditFlag_CodeContents|
|
||||
(DF_LineEditFlag_CodeContents*(!col->is_non_code)|
|
||||
DF_LineEditFlag_NoBackground|
|
||||
DF_LineEditFlag_DisableEdit*(!cell_can_edit)|
|
||||
DF_LineEditFlag_Expander*!!(x == 0 && row_is_expandable && col->kind == DF_WatchViewColumnKind_Expr)|
|
||||
@@ -5934,9 +5940,9 @@ DF_VIEW_SETUP_FUNCTION_DEF(CallStack)
|
||||
{
|
||||
DF_WatchViewState *wv = df_view_user_state(view, DF_WatchViewState);
|
||||
df_watch_view_init(wv, view, DF_WatchViewFillKind_CallStack);
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_FrameSelection, 0.05f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Value, 0.7f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Module, 0.25f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_FrameSelection, 0.05f);
|
||||
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){}
|
||||
@@ -6872,10 +6878,10 @@ DF_VIEW_SETUP_FUNCTION_DEF(Watch)
|
||||
{
|
||||
DF_WatchViewState *wv = df_view_user_state(view, DF_WatchViewState);
|
||||
df_watch_view_init(wv, view, DF_WatchViewFillKind_Watch);
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Expr, 0.25f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Value, 0.3f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Type, 0.15f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_ViewRule, 0.30f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Expr, 0.25f);
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Value, 0.3f);
|
||||
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)
|
||||
@@ -6898,10 +6904,10 @@ DF_VIEW_SETUP_FUNCTION_DEF(Locals)
|
||||
{
|
||||
DF_WatchViewState *wv = df_view_user_state(view, DF_WatchViewState);
|
||||
df_watch_view_init(wv, view, DF_WatchViewFillKind_Locals);
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Expr, 0.25f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Value, 0.3f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Type, 0.15f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_ViewRule, 0.30f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Expr, 0.25f);
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Value, 0.3f);
|
||||
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) {}
|
||||
@@ -6920,10 +6926,10 @@ DF_VIEW_SETUP_FUNCTION_DEF(Registers)
|
||||
{
|
||||
DF_WatchViewState *wv = df_view_user_state(view, DF_WatchViewState);
|
||||
df_watch_view_init(wv, view, DF_WatchViewFillKind_Registers);
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Expr, 0.25f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Value, 0.3f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Type, 0.15f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_ViewRule, 0.30f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Expr, 0.25f);
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Value, 0.3f);
|
||||
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) {}
|
||||
@@ -6942,10 +6948,10 @@ DF_VIEW_SETUP_FUNCTION_DEF(Globals)
|
||||
{
|
||||
DF_WatchViewState *wv = df_view_user_state(view, DF_WatchViewState);
|
||||
df_watch_view_init(wv, view, DF_WatchViewFillKind_Globals);
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Expr, 0.25f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Value, 0.3f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Type, 0.15f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_ViewRule, 0.30f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Expr, 0.25f);
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Value, 0.3f);
|
||||
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) {}
|
||||
@@ -6964,10 +6970,10 @@ DF_VIEW_SETUP_FUNCTION_DEF(ThreadLocals)
|
||||
{
|
||||
DF_WatchViewState *wv = df_view_user_state(view, DF_WatchViewState);
|
||||
df_watch_view_init(wv, view, DF_WatchViewFillKind_ThreadLocals);
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Expr, 0.25f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Value, 0.3f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Type, 0.15f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_ViewRule, 0.30f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Expr, 0.25f);
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Value, 0.3f);
|
||||
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) {}
|
||||
@@ -6986,10 +6992,10 @@ DF_VIEW_SETUP_FUNCTION_DEF(Types)
|
||||
{
|
||||
DF_WatchViewState *wv = df_view_user_state(view, DF_WatchViewState);
|
||||
df_watch_view_init(wv, view, DF_WatchViewFillKind_Types);
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Expr, 0.25f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Value, 0.3f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Type, 0.15f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_ViewRule, 0.30f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Expr, 0.25f);
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Value, 0.3f);
|
||||
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) {}
|
||||
@@ -7008,9 +7014,9 @@ DF_VIEW_SETUP_FUNCTION_DEF(Procedures)
|
||||
{
|
||||
DF_WatchViewState *wv = df_view_user_state(view, DF_WatchViewState);
|
||||
df_watch_view_init(wv, view, DF_WatchViewFillKind_Procedures);
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Expr, 0.2f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Value, 0.6f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_ViewRule, 0.2f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Expr, 0.2f);
|
||||
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) {}
|
||||
@@ -7980,10 +7986,11 @@ DF_VIEW_SETUP_FUNCTION_DEF(Breakpoints)
|
||||
{
|
||||
DF_WatchViewState *wv = df_view_user_state(view, DF_WatchViewState);
|
||||
df_watch_view_init(wv, view, DF_WatchViewFillKind_Breakpoints);
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Member, 0.25f, str8_lit("Label"));
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Member, 0.45f, str8_lit("Location"));
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Member, 0.10f, str8_lit("Enabled"));
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Member, 0.20f, str8_lit("Hit Count"));
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Member, 0.25f, .string = str8_lit("Label"), .dequote_string = 1, .is_non_code = 1);
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Member, 0.35f, .string = str8_lit("Location"), .dequote_string = 1, .is_non_code = 1);
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Member, 0.20f, .string = str8_lit("Condition"), .dequote_string = 1);
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Member, 0.10f, .string = str8_lit("Enabled"));
|
||||
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)
|
||||
@@ -7995,7 +8002,7 @@ DF_VIEW_UI_FUNCTION_DEF(Breakpoints)
|
||||
{
|
||||
ProfBeginFunction();
|
||||
DF_WatchViewState *ewv = df_view_user_state(view, DF_WatchViewState);
|
||||
df_watch_view_build(ws, panel, view, ewv, 1*(view->query_string_size == 0), 10, rect);
|
||||
df_watch_view_build(ws, panel, view, ewv, 0, 10, rect);
|
||||
ProfEnd();
|
||||
}
|
||||
|
||||
@@ -8181,8 +8188,8 @@ DF_VIEW_SETUP_FUNCTION_DEF(WatchPins)
|
||||
{
|
||||
DF_WatchViewState *wv = df_view_user_state(view, DF_WatchViewState);
|
||||
df_watch_view_init(wv, view, DF_WatchViewFillKind_WatchPins);
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Expr, 0.5f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Value, 0.5f, str8_zero());
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Expr, 0.5f);
|
||||
df_watch_view_column_alloc(wv, DF_WatchViewColumnKind_Value, 0.5f);
|
||||
}
|
||||
DF_VIEW_STRING_FROM_STATE_FUNCTION_DEF(WatchPins) {return str8_zero();}
|
||||
DF_VIEW_CMD_FUNCTION_DEF(WatchPins)
|
||||
@@ -8194,7 +8201,7 @@ DF_VIEW_UI_FUNCTION_DEF(WatchPins)
|
||||
{
|
||||
ProfBeginFunction();
|
||||
DF_WatchViewState *ewv = df_view_user_state(view, DF_WatchViewState);
|
||||
df_watch_view_build(ws, panel, view, ewv, 1*(view->query_string_size == 0), 10, rect);
|
||||
df_watch_view_build(ws, panel, view, ewv, 0, 10, rect);
|
||||
ProfEnd();
|
||||
}
|
||||
|
||||
|
||||
+12
-1
@@ -283,6 +283,14 @@ typedef enum DF_WatchViewColumnKind
|
||||
}
|
||||
DF_WatchViewColumnKind;
|
||||
|
||||
typedef struct DF_WatchViewColumnParams DF_WatchViewColumnParams;
|
||||
struct DF_WatchViewColumnParams
|
||||
{
|
||||
String8 string;
|
||||
B32 is_non_code;
|
||||
B32 dequote_string;
|
||||
};
|
||||
|
||||
typedef struct DF_WatchViewColumn DF_WatchViewColumn;
|
||||
struct DF_WatchViewColumn
|
||||
{
|
||||
@@ -292,6 +300,8 @@ struct DF_WatchViewColumn
|
||||
F32 pct;
|
||||
U8 string_buffer[1024];
|
||||
U64 string_size;
|
||||
B32 is_non_code;
|
||||
B32 dequote_string;
|
||||
};
|
||||
|
||||
typedef enum DF_WatchViewFillKind
|
||||
@@ -555,7 +565,8 @@ internal String8 df_string_from_eval_viz_row_column(Arena *arena, DF_EvalView *e
|
||||
internal DF_WatchViewTextEditState *df_watch_view_text_edit_state_from_pt(DF_WatchViewState *wv, DF_WatchViewPoint pt);
|
||||
|
||||
//- rjf: watch view column state mutation
|
||||
internal DF_WatchViewColumn *df_watch_view_column_alloc(DF_WatchViewState *wv, DF_WatchViewColumnKind kind, F32 pct, String8 string);
|
||||
internal DF_WatchViewColumn *df_watch_view_column_alloc_(DF_WatchViewState *wv, DF_WatchViewColumnKind kind, F32 pct, DF_WatchViewColumnParams *params);
|
||||
#define df_watch_view_column_alloc(wv, kind, pct, ...) df_watch_view_column_alloc_((wv), (kind), (pct), &(DF_WatchViewColumnParams){.string = str8_zero(), __VA_ARGS__})
|
||||
internal void df_watch_view_column_release(DF_WatchViewState *wv, DF_WatchViewColumn *col);
|
||||
|
||||
//- rjf: watch view main hooks
|
||||
|
||||
Reference in New Issue
Block a user