eval visualization - allow chained expressions to cause multiple child expansion blocks; begin work on unified lister watch window

This commit is contained in:
Ryan Fleury
2025-04-15 16:27:44 -07:00
parent 923f55fb2b
commit b9ef453a14
7 changed files with 40 additions and 18 deletions
+14
View File
@@ -409,6 +409,7 @@ e_expr_copy(Arena *arena, E_Expr *src)
E_Expr *dst_parent;
E_Expr *src;
B32 is_ref;
B32 is_sib;
};
Task start_task = {0, &e_expr_nil, src};
Task *first_task = &start_task;
@@ -431,10 +432,23 @@ e_expr_copy(Arena *arena, E_Expr *src)
{
t->dst_parent->ref = dst;
}
else if(t->is_sib)
{
t->dst_parent->next = dst;
dst->prev = t->dst_parent;
}
else
{
e_expr_push_child(t->dst_parent, dst);
}
if(t->src->next != &e_expr_nil)
{
Task *task = push_array(scratch.arena, Task, 1);
task->dst_parent = dst;
task->src = t->src->next;
task->is_sib = 1;
SLLQueuePush(first_task, last_task, task);
}
if(t->src->ref != &e_expr_nil)
{
Task *task = push_array(scratch.arena, Task, 1);