first half of cell rendering pass

This commit is contained in:
Ryan Fleury
2025-04-18 17:15:57 -07:00
parent 225ac267f0
commit e30df5122a
7 changed files with 2217 additions and 1989 deletions
+23
View File
@@ -246,6 +246,29 @@ e_value_from_expr(E_Expr *expr)
return result;
}
internal E_Eval
e_eval_wrap(Arena *arena, E_Eval eval, String8 string)
{
E_IRTreeAndType *prev_overridden_irtree = e_ir_state->overridden_irtree;
e_ir_state->overridden_irtree = &eval.irtree;
E_Eval wrapped_eval = e_eval_from_string(arena, string);
e_ir_state->overridden_irtree = prev_overridden_irtree;
return wrapped_eval;
}
internal E_Eval
e_eval_wrapf(Arena *arena, E_Eval eval, char *fmt, ...)
{
Temp scratch = scratch_begin(&arena, 1);
va_list args;
va_start(args, fmt);
String8 string = push_str8fv(scratch.arena, fmt, args);
E_Eval result = e_eval_wrap(arena, eval, string);
va_end(args);
scratch_end(scratch);
return result;
}
internal U64
e_base_offset_from_eval(E_Eval eval)
{
+2
View File
@@ -36,6 +36,8 @@ internal E_Eval e_value_eval_from_eval(E_Eval eval);
internal E_Value e_value_from_string(String8 string);
internal E_Value e_value_from_stringf(char *fmt, ...);
internal E_Value e_value_from_expr(E_Expr *expr);
internal E_Eval e_eval_wrap(Arena *arena, E_Eval eval, String8 string);
internal E_Eval e_eval_wrapf(Arena *arena, E_Eval eval, char *fmt, ...);;
internal U64 e_base_offset_from_eval(E_Eval eval);
internal Rng1U64 e_range_from_eval(E_Eval eval);
+3 -2
View File
@@ -2343,7 +2343,8 @@ e_irtree_and_type_from_expr(Arena *arena, E_Expr *root_expr)
//- rjf: equip previous task's irtree
if(t->prev != 0)
{
result.prev = t->prev;
result.prev = push_array(arena, E_IRTreeAndType, 1);
result.prev[0] = *t->prev;
}
//- rjf: find any auto hooks according to this generation's type
@@ -2360,7 +2361,7 @@ e_irtree_and_type_from_expr(Arena *arena, E_Expr *root_expr)
Task *task = push_array(scratch.arena, Task, 1);
SLLQueuePush(first_task, last_task, task);
task->expr = e;
task->prev = push_array(arena, E_IRTreeAndType, 1);
task->prev = push_array(scratch.arena, E_IRTreeAndType, 1);
task->prev[0] = result;
break;
}