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:
Ryan Fleury
2025-01-22 09:22:06 -08:00
parent 84fd1e9d3f
commit 16a717d684
10 changed files with 327 additions and 2432 deletions
@@ -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();