mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-06 22:08:41 +00:00
deduplicate editability/expandability determination path for viz row build
This commit is contained in:
+38
-1
@@ -5586,14 +5586,51 @@ df_parent_key_from_viz_block_list_row_num(DF_EvalVizBlockList *blocks, S64 row_n
|
|||||||
//- rjf: viz row list building
|
//- rjf: viz row list building
|
||||||
|
|
||||||
internal DF_EvalVizRow *
|
internal DF_EvalVizRow *
|
||||||
df_eval_viz_row_list_push_new(Arena *arena, DF_EvalVizWindowedRowList *rows, DF_EvalVizBlock *block, DF_ExpandKey key)
|
df_eval_viz_row_list_push_new(Arena *arena, EVAL_ParseCtx *parse_ctx, DF_EvalVizWindowedRowList *rows, DF_EvalVizBlock *block, DF_ExpandKey key, DF_Eval eval)
|
||||||
{
|
{
|
||||||
|
// rjf: push
|
||||||
DF_EvalVizRow *row = push_array(arena, DF_EvalVizRow, 1);
|
DF_EvalVizRow *row = push_array(arena, DF_EvalVizRow, 1);
|
||||||
SLLQueuePush(rows->first, rows->last, row);
|
SLLQueuePush(rows->first, rows->last, row);
|
||||||
rows->count += 1;
|
rows->count += 1;
|
||||||
|
|
||||||
|
// rjf: fill basics
|
||||||
row->depth = block->depth;
|
row->depth = block->depth;
|
||||||
row->parent_key = block->parent_key;
|
row->parent_key = block->parent_key;
|
||||||
row->key = key;
|
row->key = key;
|
||||||
|
row->eval = eval;
|
||||||
|
|
||||||
|
// rjf: determine exandability, editability
|
||||||
|
if(tg_kind_from_key(eval.type_key) != TG_Kind_Null)
|
||||||
|
{
|
||||||
|
for(TG_Key t = eval.type_key;; t = tg_unwrapped_direct_from_graph_raddbg_key(parse_ctx->type_graph, parse_ctx->rdbg, t))
|
||||||
|
{
|
||||||
|
TG_Kind kind = tg_kind_from_key(t);
|
||||||
|
if(kind == TG_Kind_Null)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(block->eval.mode != EVAL_EvalMode_NULL && ((TG_Kind_FirstBasic <= kind && kind <= TG_Kind_LastBasic) || kind == TG_Kind_Ptr || kind == TG_Kind_LRef || kind == TG_Kind_RRef))
|
||||||
|
{
|
||||||
|
row->flags |= DF_EvalVizRowFlag_CanEditValue;
|
||||||
|
}
|
||||||
|
if(kind == TG_Kind_Struct ||
|
||||||
|
kind == TG_Kind_Union ||
|
||||||
|
kind == TG_Kind_Class ||
|
||||||
|
kind == TG_Kind_Array)
|
||||||
|
{
|
||||||
|
row->flags |= DF_EvalVizRowFlag_CanExpand;
|
||||||
|
}
|
||||||
|
if(row->flags & DF_EvalVizRowFlag_CanExpand)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(block->eval.mode == EVAL_EvalMode_NULL)
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return row;
|
return row;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -802,9 +802,6 @@ struct DF_EvalVizRow
|
|||||||
// rjf: value area override view rule spec
|
// rjf: value area override view rule spec
|
||||||
struct DF_GfxViewRuleSpec *value_ui_rule_spec;
|
struct DF_GfxViewRuleSpec *value_ui_rule_spec;
|
||||||
struct DF_CfgNode *value_ui_rule_node;
|
struct DF_CfgNode *value_ui_rule_node;
|
||||||
|
|
||||||
// rjf: errors
|
|
||||||
EVAL_ErrorList errors;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct DF_EvalVizWindowedRowList DF_EvalVizWindowedRowList;
|
typedef struct DF_EvalVizWindowedRowList DF_EvalVizWindowedRowList;
|
||||||
@@ -1593,7 +1590,7 @@ internal DF_ExpandKey df_key_from_viz_block_list_row_num(DF_EvalVizBlockList *bl
|
|||||||
internal DF_ExpandKey df_parent_key_from_viz_block_list_row_num(DF_EvalVizBlockList *blocks, S64 row_num);
|
internal DF_ExpandKey df_parent_key_from_viz_block_list_row_num(DF_EvalVizBlockList *blocks, S64 row_num);
|
||||||
|
|
||||||
//- rjf: viz row list building
|
//- rjf: viz row list building
|
||||||
internal DF_EvalVizRow *df_eval_viz_row_list_push_new(Arena *arena, DF_EvalVizWindowedRowList *rows, DF_EvalVizBlock *block, DF_ExpandKey key);
|
internal DF_EvalVizRow *df_eval_viz_row_list_push_new(Arena *arena, EVAL_ParseCtx *parse_ctx, DF_EvalVizWindowedRowList *rows, DF_EvalVizBlock *block, DF_ExpandKey key, DF_Eval eval);
|
||||||
|
|
||||||
////////////////////////////////
|
////////////////////////////////
|
||||||
//~ rjf: Main State Accessors/Mutators
|
//~ rjf: Main State Accessors/Mutators
|
||||||
|
|||||||
+37
-184
@@ -7172,7 +7172,8 @@ df_eval_viz_windowed_row_list_from_viz_block_list(Arena *arena, DBGI_Scope *scop
|
|||||||
case DF_EvalVizBlockKind_Null:
|
case DF_EvalVizBlockKind_Null:
|
||||||
if(visible_idx_range.max > visible_idx_range.min)
|
if(visible_idx_range.max > visible_idx_range.min)
|
||||||
{
|
{
|
||||||
df_eval_viz_row_list_push_new(arena, &list, block, block->key);
|
DF_Eval eval = zero_struct;
|
||||||
|
df_eval_viz_row_list_push_new(arena, parse_ctx, &list, block, block->key, eval);
|
||||||
}break;
|
}break;
|
||||||
|
|
||||||
//////////////////////////////
|
//////////////////////////////
|
||||||
@@ -7183,48 +7184,17 @@ df_eval_viz_windowed_row_list_from_viz_block_list(Arena *arena, DBGI_Scope *scop
|
|||||||
{
|
{
|
||||||
String8List display_strings = df_single_line_eval_value_strings_from_eval(scratch.arena, DF_EvalVizStringFlag_ReadOnlyDisplayRules, parse_ctx->type_graph, parse_ctx->rdbg, ctrl_ctx, default_radix, font, font_size, 500, 0, block->eval, block->member, &block->cfg_table);
|
String8List display_strings = df_single_line_eval_value_strings_from_eval(scratch.arena, DF_EvalVizStringFlag_ReadOnlyDisplayRules, parse_ctx->type_graph, parse_ctx->rdbg, ctrl_ctx, default_radix, font, font_size, 500, 0, block->eval, block->member, &block->cfg_table);
|
||||||
String8List edit_strings = df_single_line_eval_value_strings_from_eval(scratch.arena, 0, parse_ctx->type_graph, parse_ctx->rdbg, ctrl_ctx, default_radix, font, font_size, 500, 0, block->eval, block->member, &block->cfg_table);
|
String8List edit_strings = df_single_line_eval_value_strings_from_eval(scratch.arena, 0, parse_ctx->type_graph, parse_ctx->rdbg, ctrl_ctx, default_radix, font, font_size, 500, 0, block->eval, block->member, &block->cfg_table);
|
||||||
String8 display_string = str8_list_join(arena, &display_strings, 0);
|
DF_EvalVizRow *row = df_eval_viz_row_list_push_new(arena, parse_ctx, &list, block, block->key, block->eval);
|
||||||
String8 edit_string = str8_list_join(arena, &edit_strings, 0);
|
row->expr = block->string;
|
||||||
DF_EvalVizRow *row = df_eval_viz_row_list_push_new(arena, &list, block, block->key);
|
row->display_value = str8_list_join(arena, &display_strings, 0);
|
||||||
row->eval = block->eval;
|
row->edit_value = str8_list_join(arena, &edit_strings, 0);
|
||||||
row->expr = block->string;
|
row->value_ui_rule_node = value_ui_rule_node;
|
||||||
row->display_value = display_string;
|
row->value_ui_rule_spec = value_ui_rule_spec;
|
||||||
row->edit_value = edit_string;
|
|
||||||
row->value_ui_rule_node = value_ui_rule_node;
|
|
||||||
row->value_ui_rule_spec = value_ui_rule_spec;
|
|
||||||
row->expand_ui_rule_node = expand_ui_rule_node;
|
row->expand_ui_rule_node = expand_ui_rule_node;
|
||||||
row->expand_ui_rule_spec = expand_ui_rule_spec;
|
row->expand_ui_rule_spec = expand_ui_rule_spec;
|
||||||
row->errors = block->eval.errors;
|
if(expandability_required)
|
||||||
if(block_type_kind != TG_Kind_Null)
|
|
||||||
{
|
{
|
||||||
for(TG_Key t = block->eval.type_key;; t = tg_unwrapped_direct_from_graph_raddbg_key(parse_ctx->type_graph, parse_ctx->rdbg, t))
|
row->flags |= DF_EvalVizRowFlag_CanExpand;
|
||||||
{
|
|
||||||
TG_Kind kind = tg_kind_from_key(t);
|
|
||||||
if(kind == TG_Kind_Null)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if(block->eval.mode != EVAL_EvalMode_NULL && ((TG_Kind_FirstBasic <= kind && kind <= TG_Kind_LastBasic) || kind == TG_Kind_Ptr || kind == TG_Kind_LRef || kind == TG_Kind_RRef))
|
|
||||||
{
|
|
||||||
row->flags |= DF_EvalVizRowFlag_CanEditValue;
|
|
||||||
}
|
|
||||||
if(expandability_required ||
|
|
||||||
kind == TG_Kind_Struct ||
|
|
||||||
kind == TG_Kind_Union ||
|
|
||||||
kind == TG_Kind_Class ||
|
|
||||||
kind == TG_Kind_Array)
|
|
||||||
{
|
|
||||||
row->flags |= DF_EvalVizRowFlag_CanExpand;
|
|
||||||
}
|
|
||||||
if(row->flags & DF_EvalVizRowFlag_CanExpand)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if(block->eval.mode == EVAL_EvalMode_NULL)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
|
|
||||||
@@ -7266,46 +7236,18 @@ df_eval_viz_windowed_row_list_from_viz_block_list(Arena *arena, DBGI_Scope *scop
|
|||||||
// rjf: build & push row
|
// rjf: build & push row
|
||||||
String8List display_strings = df_single_line_eval_value_strings_from_eval(scratch.arena, DF_EvalVizStringFlag_ReadOnlyDisplayRules, parse_ctx->type_graph, parse_ctx->rdbg, ctrl_ctx, default_radix, font, font_size, 500, 0, member_eval, member, &view_rule_table);
|
String8List display_strings = df_single_line_eval_value_strings_from_eval(scratch.arena, DF_EvalVizStringFlag_ReadOnlyDisplayRules, parse_ctx->type_graph, parse_ctx->rdbg, ctrl_ctx, default_radix, font, font_size, 500, 0, member_eval, member, &view_rule_table);
|
||||||
String8List edit_strings = df_single_line_eval_value_strings_from_eval(scratch.arena, 0, parse_ctx->type_graph, parse_ctx->rdbg, ctrl_ctx, default_radix, font, font_size, 500, 0, member_eval, member, &view_rule_table);
|
String8List edit_strings = df_single_line_eval_value_strings_from_eval(scratch.arena, 0, parse_ctx->type_graph, parse_ctx->rdbg, ctrl_ctx, default_radix, font, font_size, 500, 0, member_eval, member, &view_rule_table);
|
||||||
DF_EvalVizRow *row = df_eval_viz_row_list_push_new(arena, &list, block, key);
|
DF_EvalVizRow *row = df_eval_viz_row_list_push_new(arena, parse_ctx, &list, block, key, member_eval);
|
||||||
row->eval = member_eval;
|
row->expr = push_str8_copy(arena, member->name);
|
||||||
row->expr = push_str8_copy(arena, member->name);
|
row->display_value = str8_list_join(arena, &display_strings, 0);
|
||||||
row->display_value = str8_list_join(arena, &display_strings, 0);
|
row->edit_value = str8_list_join(arena, &edit_strings, 0);
|
||||||
row->edit_value = str8_list_join(arena, &edit_strings, 0);
|
row->value_ui_rule_node = value_ui_rule_node;
|
||||||
row->inherited_type_key_chain = tg_key_list_copy(arena, &member->inheritance_key_chain);
|
row->value_ui_rule_spec = value_ui_rule_spec;
|
||||||
row->value_ui_rule_node = value_ui_rule_node;
|
|
||||||
row->value_ui_rule_spec = value_ui_rule_spec;
|
|
||||||
row->expand_ui_rule_node = expand_ui_rule_node;
|
row->expand_ui_rule_node = expand_ui_rule_node;
|
||||||
row->expand_ui_rule_spec = expand_ui_rule_spec;
|
row->expand_ui_rule_spec = expand_ui_rule_spec;
|
||||||
if(tg_kind_from_key(member_eval.type_key) != TG_Kind_Null)
|
row->inherited_type_key_chain = tg_key_list_copy(arena, &member->inheritance_key_chain);
|
||||||
|
if(expandability_required)
|
||||||
{
|
{
|
||||||
for(TG_Key t = member_eval.type_key;; t = tg_unwrapped_direct_from_graph_raddbg_key(parse_ctx->type_graph, parse_ctx->rdbg, t))
|
row->flags |= DF_EvalVizRowFlag_CanExpand;
|
||||||
{
|
|
||||||
TG_Kind kind = tg_kind_from_key(t);
|
|
||||||
if(kind == TG_Kind_Null)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if(block->eval.mode != EVAL_EvalMode_NULL && ((TG_Kind_FirstBasic <= kind && kind <= TG_Kind_LastBasic) || kind == TG_Kind_Ptr || kind == TG_Kind_LRef || kind == TG_Kind_RRef))
|
|
||||||
{
|
|
||||||
row->flags |= DF_EvalVizRowFlag_CanEditValue;
|
|
||||||
}
|
|
||||||
if(expandability_required ||
|
|
||||||
kind == TG_Kind_Struct ||
|
|
||||||
kind == TG_Kind_Union ||
|
|
||||||
kind == TG_Kind_Class ||
|
|
||||||
kind == TG_Kind_Array)
|
|
||||||
{
|
|
||||||
row->flags |= DF_EvalVizRowFlag_CanExpand;
|
|
||||||
}
|
|
||||||
if(row->flags & DF_EvalVizRowFlag_CanExpand)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if(block->eval.mode == EVAL_EvalMode_NULL)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
@@ -7346,45 +7288,17 @@ df_eval_viz_windowed_row_list_from_viz_block_list(Arena *arena, DBGI_Scope *scop
|
|||||||
// rjf: build row
|
// rjf: build row
|
||||||
String8List display_strings = df_single_line_eval_value_strings_from_eval(scratch.arena, DF_EvalVizStringFlag_ReadOnlyDisplayRules, parse_ctx->type_graph, parse_ctx->rdbg, ctrl_ctx, default_radix, font, font_size, 500, 0, elem_eval, 0, &view_rule_table);
|
String8List display_strings = df_single_line_eval_value_strings_from_eval(scratch.arena, DF_EvalVizStringFlag_ReadOnlyDisplayRules, parse_ctx->type_graph, parse_ctx->rdbg, ctrl_ctx, default_radix, font, font_size, 500, 0, elem_eval, 0, &view_rule_table);
|
||||||
String8List edit_strings = df_single_line_eval_value_strings_from_eval(scratch.arena, 0, parse_ctx->type_graph, parse_ctx->rdbg, ctrl_ctx, default_radix, font, font_size, 500, 0, elem_eval, 0, &view_rule_table);
|
String8List edit_strings = df_single_line_eval_value_strings_from_eval(scratch.arena, 0, parse_ctx->type_graph, parse_ctx->rdbg, ctrl_ctx, default_radix, font, font_size, 500, 0, elem_eval, 0, &view_rule_table);
|
||||||
DF_EvalVizRow *row = df_eval_viz_row_list_push_new(arena, &list, block, key);
|
DF_EvalVizRow *row = df_eval_viz_row_list_push_new(arena, parse_ctx, &list, block, key, elem_eval);
|
||||||
row->eval = elem_eval;
|
row->expr = push_str8f(arena, "[%I64u]", idx);
|
||||||
row->expr = push_str8f(arena, "[%I64u]", idx);
|
row->display_value = str8_list_join(arena, &display_strings, 0);
|
||||||
row->display_value = str8_list_join(arena, &display_strings, 0);
|
row->edit_value = str8_list_join(arena, &edit_strings, 0);
|
||||||
row->edit_value = str8_list_join(arena, &edit_strings, 0);
|
row->value_ui_rule_node = value_ui_rule_node;
|
||||||
row->value_ui_rule_node = value_ui_rule_node;
|
row->value_ui_rule_spec = value_ui_rule_spec;
|
||||||
row->value_ui_rule_spec = value_ui_rule_spec;
|
|
||||||
row->expand_ui_rule_node = expand_ui_rule_node;
|
row->expand_ui_rule_node = expand_ui_rule_node;
|
||||||
row->expand_ui_rule_spec = expand_ui_rule_spec;
|
row->expand_ui_rule_spec = expand_ui_rule_spec;
|
||||||
if(direct_type_kind != TG_Kind_Null)
|
if(expandability_required)
|
||||||
{
|
{
|
||||||
for(TG_Key t = elem_eval.type_key;; t = tg_unwrapped_direct_from_graph_raddbg_key(parse_ctx->type_graph, parse_ctx->rdbg, t))
|
row->flags |= DF_EvalVizRowFlag_CanExpand;
|
||||||
{
|
|
||||||
TG_Kind kind = tg_kind_from_key(t);
|
|
||||||
if(kind == TG_Kind_Null)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if(block->eval.mode != EVAL_EvalMode_NULL && ((TG_Kind_FirstBasic <= kind && kind <= TG_Kind_LastBasic) || kind == TG_Kind_Ptr || kind == TG_Kind_LRef || kind == TG_Kind_RRef))
|
|
||||||
{
|
|
||||||
row->flags |= DF_EvalVizRowFlag_CanEditValue;
|
|
||||||
}
|
|
||||||
if(expandability_required ||
|
|
||||||
kind == TG_Kind_Struct ||
|
|
||||||
kind == TG_Kind_Union ||
|
|
||||||
kind == TG_Kind_Class ||
|
|
||||||
kind == TG_Kind_Array)
|
|
||||||
{
|
|
||||||
row->flags |= DF_EvalVizRowFlag_CanExpand;
|
|
||||||
}
|
|
||||||
if(row->flags & DF_EvalVizRowFlag_CanExpand)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if(block->eval.mode == EVAL_EvalMode_NULL)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
@@ -7425,45 +7339,17 @@ df_eval_viz_windowed_row_list_from_viz_block_list(Arena *arena, DBGI_Scope *scop
|
|||||||
// rjf: build row
|
// rjf: build row
|
||||||
String8List display_strings = df_single_line_eval_value_strings_from_eval(scratch.arena, DF_EvalVizStringFlag_ReadOnlyDisplayRules, parse_ctx->type_graph, parse_ctx->rdbg, ctrl_ctx, default_radix, font, font_size, 500, 0, link_eval, 0, &view_rule_table);
|
String8List display_strings = df_single_line_eval_value_strings_from_eval(scratch.arena, DF_EvalVizStringFlag_ReadOnlyDisplayRules, parse_ctx->type_graph, parse_ctx->rdbg, ctrl_ctx, default_radix, font, font_size, 500, 0, link_eval, 0, &view_rule_table);
|
||||||
String8List edit_strings = df_single_line_eval_value_strings_from_eval(scratch.arena, 0, parse_ctx->type_graph, parse_ctx->rdbg, ctrl_ctx, default_radix, font, font_size, 500, 0, link_eval, 0, &view_rule_table);
|
String8List edit_strings = df_single_line_eval_value_strings_from_eval(scratch.arena, 0, parse_ctx->type_graph, parse_ctx->rdbg, ctrl_ctx, default_radix, font, font_size, 500, 0, link_eval, 0, &view_rule_table);
|
||||||
DF_EvalVizRow *row = df_eval_viz_row_list_push_new(arena, &list, block, key);
|
DF_EvalVizRow *row = df_eval_viz_row_list_push_new(arena, parse_ctx, &list, block, key, link_eval);
|
||||||
row->eval = link_eval;
|
row->expr = push_str8f(arena, "[%I64u]", idx);
|
||||||
row->expr = push_str8f(arena, "[%I64u]", idx);
|
row->display_value = str8_list_join(arena, &display_strings, 0);
|
||||||
row->display_value = str8_list_join(arena, &display_strings, 0);
|
row->edit_value = str8_list_join(arena, &edit_strings, 0);
|
||||||
row->edit_value = str8_list_join(arena, &edit_strings, 0);
|
row->value_ui_rule_node = value_ui_rule_node;
|
||||||
row->value_ui_rule_node = value_ui_rule_node;
|
row->value_ui_rule_spec = value_ui_rule_spec;
|
||||||
row->value_ui_rule_spec = value_ui_rule_spec;
|
|
||||||
row->expand_ui_rule_node = expand_ui_rule_node;
|
row->expand_ui_rule_node = expand_ui_rule_node;
|
||||||
row->expand_ui_rule_spec = expand_ui_rule_spec;
|
row->expand_ui_rule_spec = expand_ui_rule_spec;
|
||||||
if(link_type_kind != TG_Kind_Null)
|
if(expandability_required)
|
||||||
{
|
{
|
||||||
for(TG_Key t = link_eval.type_key;; t = tg_unwrapped_direct_from_graph_raddbg_key(parse_ctx->type_graph, parse_ctx->rdbg, t))
|
row->flags |= DF_EvalVizRowFlag_CanExpand;
|
||||||
{
|
|
||||||
TG_Kind kind = tg_kind_from_key(t);
|
|
||||||
if(kind == TG_Kind_Null)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if((TG_Kind_FirstBasic <= kind && kind <= TG_Kind_LastBasic) || kind == TG_Kind_Ptr || kind == TG_Kind_LRef || kind == TG_Kind_RRef)
|
|
||||||
{
|
|
||||||
row->flags |= DF_EvalVizRowFlag_CanEditValue;
|
|
||||||
}
|
|
||||||
if(expandability_required ||
|
|
||||||
kind == TG_Kind_Struct ||
|
|
||||||
kind == TG_Kind_Union ||
|
|
||||||
kind == TG_Kind_Class ||
|
|
||||||
kind == TG_Kind_Array)
|
|
||||||
{
|
|
||||||
row->flags |= DF_EvalVizRowFlag_CanExpand;
|
|
||||||
}
|
|
||||||
if(row->flags & DF_EvalVizRowFlag_CanExpand)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if(block->eval.mode == EVAL_EvalMode_NULL)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
@@ -7475,9 +7361,8 @@ df_eval_viz_windowed_row_list_from_viz_block_list(Arena *arena, DBGI_Scope *scop
|
|||||||
if(num_skipped_visual < block_num_visual_rows)
|
if(num_skipped_visual < block_num_visual_rows)
|
||||||
{
|
{
|
||||||
DF_ExpandKey key = df_expand_key_make(df_hash_from_expand_key(block->parent_key), 1);
|
DF_ExpandKey key = df_expand_key_make(df_hash_from_expand_key(block->parent_key), 1);
|
||||||
DF_EvalVizRow *row = df_eval_viz_row_list_push_new(arena, &list, block, key);
|
DF_EvalVizRow *row = df_eval_viz_row_list_push_new(arena, parse_ctx, &list, block, key, block->eval);
|
||||||
row->flags = DF_EvalVizRowFlag_Canvas;
|
row->flags = DF_EvalVizRowFlag_Canvas;
|
||||||
row->eval = block->eval;
|
|
||||||
row->size_in_rows = dim_1u64(intersect_1u64(visible_idx_range, r1u64(0, dim_1u64(block->visual_idx_range))));
|
row->size_in_rows = dim_1u64(intersect_1u64(visible_idx_range, r1u64(0, dim_1u64(block->visual_idx_range))));
|
||||||
row->skipped_size_in_rows= (visible_idx_range.min > block->visual_idx_range.min) ? visible_idx_range.min - block->visual_idx_range.min : 0;
|
row->skipped_size_in_rows= (visible_idx_range.min > block->visual_idx_range.min) ? visible_idx_range.min - block->visual_idx_range.min : 0;
|
||||||
row->chopped_size_in_rows= (visible_idx_range.max < block->visual_idx_range.max) ? block->visual_idx_range.max - visible_idx_range.max : 0;
|
row->chopped_size_in_rows= (visible_idx_range.max < block->visual_idx_range.max) ? block->visual_idx_range.max - visible_idx_range.max : 0;
|
||||||
@@ -7516,8 +7401,7 @@ df_eval_viz_windowed_row_list_from_viz_block_list(Arena *arena, DBGI_Scope *scop
|
|||||||
// rjf: build row
|
// rjf: build row
|
||||||
String8List display_strings = df_single_line_eval_value_strings_from_eval(scratch.arena, DF_EvalVizStringFlag_ReadOnlyDisplayRules, parse_ctx->type_graph, parse_ctx->rdbg, ctrl_ctx, default_radix, font, font_size, 500, 0, eval, 0, &view_rule_table);
|
String8List display_strings = df_single_line_eval_value_strings_from_eval(scratch.arena, DF_EvalVizStringFlag_ReadOnlyDisplayRules, parse_ctx->type_graph, parse_ctx->rdbg, ctrl_ctx, default_radix, font, font_size, 500, 0, eval, 0, &view_rule_table);
|
||||||
String8List edit_strings = df_single_line_eval_value_strings_from_eval(scratch.arena, 0, parse_ctx->type_graph, parse_ctx->rdbg, ctrl_ctx, default_radix, font, font_size, 500, 0, eval, 0, &view_rule_table);
|
String8List edit_strings = df_single_line_eval_value_strings_from_eval(scratch.arena, 0, parse_ctx->type_graph, parse_ctx->rdbg, ctrl_ctx, default_radix, font, font_size, 500, 0, eval, 0, &view_rule_table);
|
||||||
DF_EvalVizRow *row = df_eval_viz_row_list_push_new(arena, &list, block, key);
|
DF_EvalVizRow *row = df_eval_viz_row_list_push_new(arena, parse_ctx, &list, block, key, eval);
|
||||||
row->eval = eval;
|
|
||||||
row->expr = name;
|
row->expr = name;
|
||||||
row->display_value = str8_list_join(arena, &display_strings, 0);
|
row->display_value = str8_list_join(arena, &display_strings, 0);
|
||||||
row->edit_value = str8_list_join(arena, &edit_strings, 0);
|
row->edit_value = str8_list_join(arena, &edit_strings, 0);
|
||||||
@@ -7525,37 +7409,6 @@ df_eval_viz_windowed_row_list_from_viz_block_list(Arena *arena, DBGI_Scope *scop
|
|||||||
row->value_ui_rule_spec = value_ui_rule_spec;
|
row->value_ui_rule_spec = value_ui_rule_spec;
|
||||||
row->expand_ui_rule_node = expand_ui_rule_node;
|
row->expand_ui_rule_node = expand_ui_rule_node;
|
||||||
row->expand_ui_rule_spec = expand_ui_rule_spec;
|
row->expand_ui_rule_spec = expand_ui_rule_spec;
|
||||||
if(tg_kind_from_key(eval.type_key) != TG_Kind_Null)
|
|
||||||
{
|
|
||||||
for(TG_Key t = eval.type_key;; t = tg_unwrapped_direct_from_graph_raddbg_key(parse_ctx->type_graph, parse_ctx->rdbg, t))
|
|
||||||
{
|
|
||||||
TG_Kind kind = tg_kind_from_key(t);
|
|
||||||
if(kind == TG_Kind_Null)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if(block->eval.mode != EVAL_EvalMode_NULL && ((TG_Kind_FirstBasic <= kind && kind <= TG_Kind_LastBasic) || kind == TG_Kind_Ptr || kind == TG_Kind_LRef || kind == TG_Kind_RRef))
|
|
||||||
{
|
|
||||||
row->flags |= DF_EvalVizRowFlag_CanEditValue;
|
|
||||||
}
|
|
||||||
if(expandability_required ||
|
|
||||||
kind == TG_Kind_Struct ||
|
|
||||||
kind == TG_Kind_Union ||
|
|
||||||
kind == TG_Kind_Class ||
|
|
||||||
kind == TG_Kind_Array)
|
|
||||||
{
|
|
||||||
row->flags |= DF_EvalVizRowFlag_CanExpand;
|
|
||||||
}
|
|
||||||
if(row->flags & DF_EvalVizRowFlag_CanExpand)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if(block->eval.mode == EVAL_EvalMode_NULL)
|
|
||||||
{
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}break;
|
}break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1340,7 +1340,7 @@ df_eval_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_EvalW
|
|||||||
ProfScope("value")
|
ProfScope("value")
|
||||||
{
|
{
|
||||||
B32 cell_selected = (row_selected && cursor.x == DF_EvalWatchViewColumnKind_Value);
|
B32 cell_selected = (row_selected && cursor.x == DF_EvalWatchViewColumnKind_Value);
|
||||||
B32 value_is_error = (row->errors.count != 0);
|
B32 value_is_error = (row->eval.errors.count != 0);
|
||||||
B32 value_is_hook = (!value_is_error && row->value_ui_rule_spec != &df_g_nil_gfx_view_rule_spec && row->value_ui_rule_spec != 0);
|
B32 value_is_hook = (!value_is_error && row->value_ui_rule_spec != &df_g_nil_gfx_view_rule_spec && row->value_ui_rule_spec != 0);
|
||||||
B32 value_is_complex = (!value_is_error && !value_is_hook && !(row->flags & DF_EvalVizRowFlag_CanEditValue));
|
B32 value_is_complex = (!value_is_error && !value_is_hook && !(row->flags & DF_EvalVizRowFlag_CanEditValue));
|
||||||
B32 value_is_simple = (!value_is_error && !value_is_hook && (row->flags & DF_EvalVizRowFlag_CanEditValue));
|
B32 value_is_simple = (!value_is_error && !value_is_hook && (row->flags & DF_EvalVizRowFlag_CanEditValue));
|
||||||
@@ -1365,7 +1365,7 @@ df_eval_watch_view_build(DF_Window *ws, DF_Panel *panel, DF_View *view, DF_EvalW
|
|||||||
if(value_is_error) UI_TextColor(df_rgba_from_theme_color(DF_ThemeColor_FailureBackground)) UI_Font(df_font_from_slot(DF_FontSlot_Main))
|
if(value_is_error) UI_TextColor(df_rgba_from_theme_color(DF_ThemeColor_FailureBackground)) UI_Font(df_font_from_slot(DF_FontSlot_Main))
|
||||||
{
|
{
|
||||||
String8List strings = {0};
|
String8List strings = {0};
|
||||||
for(EVAL_Error *error = row->errors.first; error != 0; error = error->next)
|
for(EVAL_Error *error = row->eval.errors.first; error != 0; error = error->next)
|
||||||
{
|
{
|
||||||
str8_list_push(scratch.arena, &strings, error->text);
|
str8_list_push(scratch.arena, &strings, error->text);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user