replace watch view fill kind with top-level expression & view rule; collection macro for watches; reintroduce only/omit, with new expr-macro-based eval visualization system; remove root-expression-generation from expansion block generation, since it makes things a bit more complicated

This commit is contained in:
Ryan Fleury
2024-09-20 16:15:29 -07:00
parent a1debd9219
commit c98db01b63
10 changed files with 186 additions and 51 deletions
@@ -509,7 +509,7 @@ internal EV_Block *
ev_block_split_and_continue(Arena *arena, EV_BlockList *list, EV_Block *split_block, U64 split_idx)
{
U64 total_count = split_block->semantic_idx_range.max;
split_block->visual_idx_range.max = split_block->semantic_idx_range.max = split_idx;
split_block->visual_idx_range.max = split_block->semantic_idx_range.max = split_idx+1;
ev_block_end(list, split_block);
EV_Block *continue_block = ev_block_begin(arena, split_block->kind, split_block->parent_key, split_block->key, split_block->depth);
continue_block->string = split_block->string;
@@ -539,25 +539,10 @@ ev_append_expr_blocks__rec(Arena *arena, EV_View *view, String8 filter, EV_Key p
ProfBeginFunction();
Temp scratch = scratch_begin(&arena, 1);
//- rjf: apply expr resolution view rules
E_Expr *expr_raw = expr;
expr = ev_expr_from_expr_view_rules(arena, expr, view_rules);
//- rjf: determine if this key is expanded
EV_ExpandNode *node = ev_expand_node_from_key(view, key);
B32 parent_is_expanded = (node != 0 && node->expanded);
//- rjf: push block for expression root
{
EV_Block *block = ev_block_begin(arena, EV_BlockKind_Root, parent_key, key, depth);
block->string = string;
block->expr = expr;
block->view_rules = view_rules;
block->visual_idx_range = r1u64(key.child_num-1, key.child_num+0);
block->semantic_idx_range = r1u64(key.child_num-1, key.child_num+0);
ev_block_end(list_out, block);
}
//- rjf: determine view rule to generate children blocks
EV_ViewRuleInfo *block_prod_view_rule_info = ev_view_rule_info_from_string(str8_lit("default"));
MD_Node *block_prod_view_rule_params = &md_nil_node;
@@ -638,7 +623,23 @@ ev_block_list_from_view_expr_keys(Arena *arena, EV_View *view, String8 filter, E
ev_view_rule_list_push_string(arena, view_rule_list, n->string);
}
ev_view_rule_list_push_string(arena, view_rule_list, view_rule_string);
ev_append_expr_blocks__rec(arena, view, filter, parent_key, key, expr, parse.expr, view_rule_list, depth, &blocks);
//- rjf: apply expr resolution view rules
E_Expr *expr_resolved = ev_expr_from_expr_view_rules(arena, parse.expr, view_rule_list);
//- rjf: push block for expression root
{
EV_Block *block = ev_block_begin(arena, EV_BlockKind_Root, parent_key, key, depth);
block->string = expr;
block->expr = expr_resolved;
block->view_rules = view_rule_list;
block->visual_idx_range = r1u64(key.child_num-1, key.child_num+0);
block->semantic_idx_range = r1u64(key.child_num-1, key.child_num+0);
ev_block_end(&blocks, block);
}
//- rjf: push expansions for root
ev_append_expr_blocks__rec(arena, view, filter, parent_key, key, expr, expr_resolved, view_rule_list, depth, &blocks);
}
ProfEnd();
return blocks;