rd: derive schema tree parse on startup rather than recomputing every time

This commit is contained in:
Ryan Fleury
2025-02-04 12:16:28 -08:00
parent b9756d222a
commit afd113adcc
5 changed files with 18 additions and 4 deletions
+12 -3
View File
@@ -1496,16 +1496,15 @@ rd_title_fstrs_from_cfg(Arena *arena, RD_Cfg *cfg, Vec4F32 secondary_color, F32
internal MD_Node *
rd_schema_from_name(Arena *arena, String8 name)
{
String8 schema_string = {0};
MD_Node *schema = &md_nil_node;
for EachElement(idx, rd_name_schema_info_table)
{
if(str8_match(name, rd_name_schema_info_table[idx].name, 0))
{
schema_string = rd_name_schema_info_table[idx].schema;
schema = rd_state->schemas[idx];
break;
}
}
MD_Node *schema = md_tree_from_string(arena, schema_string)->first;
return schema;
}
@@ -11906,6 +11905,16 @@ rd_init(CmdLine *cmdln)
rd_state->drag_drop_regs = push_array(rd_state->drag_drop_arena, RD_Regs, 1);
rd_state->top_regs = &rd_state->base_regs;
// rjf: set up schemas
{
U64 schemas_count = ArrayCount(rd_name_schema_info_table);
rd_state->schemas = push_array(rd_state->arena, MD_Node *, schemas_count);
for EachIndex(idx, schemas_count)
{
rd_state->schemas[idx] = md_tree_from_string(rd_state->arena, rd_name_schema_info_table[idx].schema)->first;
}
}
// rjf: set up top-level config entity trees
{
rd_state->root_cfg = rd_cfg_alloc();
+3
View File
@@ -834,6 +834,9 @@ struct RD_State
Arena *project_path_arena;
String8 project_path;
// rjf: schema table
MD_Node **schemas;
// rjf: log
Log *log;
String8 log_path;