fix expr chain parsing; fix panel tree building

This commit is contained in:
Ryan Fleury
2025-02-10 09:44:32 -08:00
parent 3de43b8c74
commit 4b85df0725
9 changed files with 84 additions and 151 deletions
+7 -45
View File
@@ -73,46 +73,6 @@ rd_cmd_list_push_new(Arena *arena, RD_CmdList *cmds, String8 name, RD_Regs *regs
cmds->count += 1;
}
////////////////////////////////
//~ rjf: View Spec Type Functions
#if 0 // TODO(rjf): @cfg
internal RD_ViewRuleKind
rd_view_rule_kind_from_string(String8 string)
{
RD_ViewRuleKind kind = RD_ViewRuleKind_Null;
for EachEnumVal(RD_ViewRuleKind, k)
{
if(str8_match(string, rd_view_rule_kind_info_table[k].string, 0))
{
kind = k;
break;
}
}
return kind;
}
internal RD_ViewRuleInfo *
rd_view_rule_info_from_kind(RD_ViewRuleKind kind)
{
return &rd_view_rule_kind_info_table[kind];
}
internal RD_ViewRuleInfo *
rd_view_rule_info_from_string(String8 string)
{
RD_ViewRuleInfo *result = &rd_nil_view_rule_info;
{
RD_ViewRuleKind kind = rd_view_rule_kind_from_string(string);
if(kind != RD_ViewRuleKind_Null)
{
result = &rd_view_rule_kind_info_table[kind];
}
}
return result;
}
#endif
////////////////////////////////
//~ rjf: View UI Rule Functions
@@ -847,7 +807,7 @@ rd_panel_tree_from_cfg(Arena *arena, RD_Cfg *cfg)
}
// rjf: extract cfg info
B32 panel_has_tabs = 0;
B32 panel_has_children = 0;
dst->cfg = src;
dst->pct_of_parent = (F32)f64_from_str8(src->string);
dst->tab_side = (rd_cfg_child_from_string(src, str8_lit("tabs_on_bottom")) != &rd_nil_cfg ? Side_Max : Side_Min);
@@ -857,7 +817,7 @@ rd_panel_tree_from_cfg(Arena *arena, RD_Cfg *cfg)
MD_TokenizeResult tokenize = md_tokenize_from_text(scratch.arena, src_child->string);
if(tokenize.tokens.count == 1 && tokenize.tokens.v[0].flags & MD_TokenFlag_Numeric)
{
// NOTE(rjf): skip - this is a panel.
panel_has_children = 1;
}
else if(str8_match(src_child->string, str8_lit("tabs_on_bottom"), 0))
{
@@ -869,7 +829,6 @@ rd_panel_tree_from_cfg(Arena *arena, RD_Cfg *cfg)
}
else if(tokenize.tokens.count == 1 && tokenize.tokens.v[0].flags & MD_TokenFlag_Identifier)
{
panel_has_tabs = 1;
rd_cfg_list_push(arena, &dst->tabs, src_child);
if(rd_cfg_child_from_string(src_child, str8_lit("selected")) != &rd_nil_cfg)
{
@@ -880,7 +839,7 @@ rd_panel_tree_from_cfg(Arena *arena, RD_Cfg *cfg)
// rjf: recurse
rec = rd_cfg_rec__depth_first(src_root, src);
if(panel_has_tabs)
if(!panel_has_children)
{
MemoryZeroStruct(&rec);
rec.next = &rd_nil_cfg;
@@ -13165,7 +13124,10 @@ rd_frame(void)
E_Parse parse = e_parse_expr_from_text__cached(expr);
if(parse.msgs.max_kind == E_MsgKind_Null)
{
e_push_leaf_ident_exprs_from_expr__in_place(scratch.arena, ctx->macro_map, parse.expr);
for(E_Expr *expr = parse.first_expr; expr != &e_expr_nil; expr = expr->next)
{
e_push_leaf_ident_exprs_from_expr__in_place(scratch.arena, ctx->macro_map, expr);
}
}
}
-9
View File
@@ -936,15 +936,6 @@ internal RD_Regs *rd_regs_copy(Arena *arena, RD_Regs *src);
internal void rd_cmd_list_push_new(Arena *arena, RD_CmdList *cmds, String8 name, RD_Regs *regs);
////////////////////////////////
//~ rjf: View Spec Type Functions
#if 0 // TODO(rjf): @cfg
internal RD_ViewRuleKind rd_view_rule_kind_from_string(String8 string);
internal RD_ViewRuleInfo *rd_view_rule_info_from_kind(RD_ViewRuleKind kind);
internal RD_ViewRuleInfo *rd_view_rule_info_from_string(String8 string);
#endif
////////////////////////////////
//~ rjf: View UI Rule Functions
+2 -2
View File
@@ -2793,7 +2793,7 @@ RD_VIEW_UI_FUNCTION_DEF(watch)
String8 string = ev_expr_string_from_row(scratch.arena, row, 0);
E_TokenArray tokens = e_token_array_from_text(scratch.arena, string);
E_Parse parse = e_parse_expr_from_text_tokens(scratch.arena, string, &tokens);
E_IRTreeAndType irtree = e_irtree_and_type_from_expr(scratch.arena, parse.expr);
E_IRTreeAndType irtree = e_irtree_and_type_from_expr(scratch.arena, parse.last_expr);
E_OpList oplist = e_oplist_from_irtree(scratch.arena, irtree.root);
String8 bytecode = e_bytecode_from_oplist(scratch.arena, &oplist);
UI_Flags(UI_BoxFlag_DrawTextWeak) ui_labelf("Text:");
@@ -2815,7 +2815,7 @@ RD_VIEW_UI_FUNCTION_DEF(watch)
E_Expr *expr;
S64 depth;
};
Task start_task = {0, 0, parse.expr};
Task start_task = {0, 0, parse.last_expr};
Task *first_task = &start_task;
Task *last_task = first_task;
for(Task *t = first_task; t != 0; t = t->next)