mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-07-19 14:31:30 +00:00
further elimination of entity-based code; more simplification/moving to cfg; begin sketching out expanded eval-viz block tree, such that each block can have its own table topology (will be useful to collapse/simplify/expand the capabilities of watch views)
This commit is contained in:
@@ -667,11 +667,31 @@ ev_resolved_from_expr(Arena *arena, E_Expr *expr, EV_ViewRuleList *view_rules)
|
||||
return expr;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Column List Building
|
||||
|
||||
internal EV_Col *
|
||||
ev_col_list_push(Arena *arena, EV_ColList *list)
|
||||
{
|
||||
EV_Col *col = push_array(arena, EV_Col, 1);
|
||||
SLLQueuePush(list->first, list->last, col);
|
||||
list->count += 1;
|
||||
return col;
|
||||
}
|
||||
|
||||
internal EV_Col *
|
||||
ev_col_list_push_new(Arena *arena, EV_ColList *list, String8 key)
|
||||
{
|
||||
EV_Col *col = ev_col_list_push(arena, list);
|
||||
col->key = push_str8_copy(arena, key);
|
||||
return col;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Block Building
|
||||
|
||||
internal EV_BlockTree
|
||||
ev_block_tree_from_expr(Arena *arena, EV_View *view, String8 filter, String8 string, E_Expr *expr, EV_ViewRuleList *view_rules)
|
||||
ev_block_tree_from_expr(Arena *arena, EV_View *view, String8 filter, String8 string, E_Expr *expr, EV_ViewRuleList *view_rules, EV_ColList *cols)
|
||||
{
|
||||
ProfBeginFunction();
|
||||
EV_BlockTree tree = {&ev_nil_block};
|
||||
@@ -691,6 +711,7 @@ ev_block_tree_from_expr(Arena *arena, EV_View *view, String8 filter, String8 str
|
||||
tree.root = push_array(arena, EV_Block, 1);
|
||||
MemoryCopyStruct(tree.root, &ev_nil_block);
|
||||
tree.root->key = ev_key_root();
|
||||
tree.root->cols = *cols;
|
||||
tree.root->string = string;
|
||||
tree.root->expr = ev_resolved_from_expr(arena, expr, top_level_view_rules);
|
||||
tree.root->view_rules = top_level_view_rules;
|
||||
@@ -758,6 +779,7 @@ ev_block_tree_from_expr(Arena *arena, EV_View *view, String8 filter, String8 str
|
||||
expansion_block->parent = t->parent_block;
|
||||
expansion_block->key = key;
|
||||
expansion_block->split_relative_idx = t->split_relative_idx;
|
||||
expansion_block->cols = *cols;
|
||||
expansion_block->expr = t->expr;
|
||||
expansion_block->view_rules = t->view_rules;
|
||||
expansion_block->expand_view_rule_info = expand_view_rule_info;
|
||||
@@ -885,7 +907,7 @@ ev_block_tree_from_expr(Arena *arena, EV_View *view, String8 filter, String8 str
|
||||
}
|
||||
|
||||
internal EV_BlockTree
|
||||
ev_block_tree_from_string(Arena *arena, EV_View *view, String8 filter, String8 string, EV_ViewRuleList *view_rules)
|
||||
ev_block_tree_from_string(Arena *arena, EV_View *view, String8 filter, String8 string, EV_ViewRuleList *view_rules, EV_ColList *cols)
|
||||
{
|
||||
ProfBeginFunction();
|
||||
EV_BlockTree tree = {0};
|
||||
@@ -896,7 +918,7 @@ ev_block_tree_from_string(Arena *arena, EV_View *view, String8 filter, String8 s
|
||||
EV_ViewRuleList *fastpath_view_rules = ev_view_rule_list_from_expr_fastpaths(arena, string);
|
||||
EV_ViewRuleList *all_view_rules = ev_view_rule_list_copy(arena, view_rules);
|
||||
ev_view_rule_list_concat_in_place(all_view_rules, &fastpath_view_rules);
|
||||
tree = ev_block_tree_from_expr(arena, view, filter, string, parse.expr, all_view_rules);
|
||||
tree = ev_block_tree_from_expr(arena, view, filter, string, parse.expr, all_view_rules, cols);
|
||||
}
|
||||
scratch_end(scratch);
|
||||
ProfEnd();
|
||||
|
||||
@@ -187,6 +187,24 @@ struct EV_ViewRuleInfoTable
|
||||
U64 slots_count;
|
||||
};
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Columns
|
||||
|
||||
typedef struct EV_Col EV_Col;
|
||||
struct EV_Col
|
||||
{
|
||||
EV_Col *next;
|
||||
String8 key;
|
||||
};
|
||||
|
||||
typedef struct EV_ColList EV_ColList;
|
||||
struct EV_ColList
|
||||
{
|
||||
EV_Col *first;
|
||||
EV_Col *last;
|
||||
U64 count;
|
||||
};
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Blocks
|
||||
|
||||
@@ -206,6 +224,9 @@ struct EV_Block
|
||||
// rjf: split index, relative to parent's space
|
||||
U64 split_relative_idx;
|
||||
|
||||
// rjf: columns
|
||||
EV_ColList cols;
|
||||
|
||||
// rjf: expression / visualization info
|
||||
String8 string;
|
||||
E_Expr *expr;
|
||||
@@ -351,7 +372,7 @@ global read_only EV_ViewRuleInfo ev_nil_view_rule_info =
|
||||
thread_static EV_ViewRuleInfoTable *ev_view_rule_info_table = 0;
|
||||
global read_only EV_ViewRuleList ev_nil_view_rule_list = {0};
|
||||
thread_static EV_AutoViewRuleTable *ev_auto_view_rule_table = 0;
|
||||
global read_only EV_Block ev_nil_block = {&ev_nil_block, &ev_nil_block, &ev_nil_block, &ev_nil_block, &ev_nil_block, {0}, 0, {0}, &e_expr_nil, &ev_nil_view_rule_list, &ev_nil_view_rule_info};
|
||||
global read_only EV_Block ev_nil_block = {&ev_nil_block, &ev_nil_block, &ev_nil_block, &ev_nil_block, &ev_nil_block, {0}, 0, {0}, {0}, &e_expr_nil, &ev_nil_view_rule_list, &ev_nil_view_rule_info};
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Key Functions
|
||||
@@ -415,11 +436,17 @@ internal void ev_view_rule_list_concat_in_place(EV_ViewRuleList *dst, EV_ViewRul
|
||||
|
||||
internal E_Expr *ev_resolved_from_expr(Arena *arena, E_Expr *expr, EV_ViewRuleList *view_rules);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Column List Building
|
||||
|
||||
internal EV_Col *ev_col_list_push(Arena *arena, EV_ColList *list);
|
||||
internal EV_Col *ev_col_list_push_new(Arena *arena, EV_ColList *list, String8 key);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Block Building
|
||||
|
||||
internal EV_BlockTree ev_block_tree_from_expr(Arena *arena, EV_View *view, String8 filter, String8 string, E_Expr *expr, EV_ViewRuleList *view_rules);
|
||||
internal EV_BlockTree ev_block_tree_from_string(Arena *arena, EV_View *view, String8 filter, String8 string, EV_ViewRuleList *view_rules);
|
||||
internal EV_BlockTree ev_block_tree_from_expr(Arena *arena, EV_View *view, String8 filter, String8 string, E_Expr *expr, EV_ViewRuleList *view_rules, EV_ColList *cols);
|
||||
internal EV_BlockTree ev_block_tree_from_string(Arena *arena, EV_View *view, String8 filter, String8 string, EV_ViewRuleList *view_rules, EV_ColList *cols);
|
||||
internal U64 ev_depth_from_block(EV_Block *block);
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
Reference in New Issue
Block a user