mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-07-12 12:31:25 -07:00
get off cfg node duplicates of mdesk trees; use md trees for params consistently across view rules, tabs, etc.
This commit is contained in:
+69
-103
@@ -355,10 +355,11 @@ df_expand_set_expansion(Arena *arena, DF_ExpandTreeTable *table, DF_ExpandKey pa
|
||||
////////////////////////////////
|
||||
//~ rjf: Config Type Functions
|
||||
|
||||
#if 0
|
||||
internal DF_CfgNode *
|
||||
df_cfg_tree_copy(Arena *arena, DF_CfgNode *src_root)
|
||||
{
|
||||
DF_CfgNode *dst_root = &df_g_nil_cfg_node;
|
||||
DF_CfgNode *dst_root = &df_g_nil_cfg_tree;
|
||||
DF_CfgNode *dst_parent = dst_root;
|
||||
{
|
||||
DF_CfgNodeRec rec = {0};
|
||||
@@ -412,20 +413,28 @@ df_cfg_node_rec__depth_first_pre(DF_CfgNode *node, DF_CfgNode *root)
|
||||
}
|
||||
return rec;
|
||||
}
|
||||
#endif
|
||||
|
||||
internal DF_CfgTree *
|
||||
df_cfg_tree_copy(Arena *arena, DF_CfgTree *src)
|
||||
{
|
||||
DF_CfgTree *dst = push_array(arena, DF_CfgTree, 1);
|
||||
dst->source = src->source;
|
||||
dst->root = md_tree_copy(arena, src->root);
|
||||
return dst;
|
||||
}
|
||||
|
||||
internal void
|
||||
df_cfg_table_push_unparsed_string(Arena *arena, DF_CfgTable *table, String8 string, DF_CfgSrc source)
|
||||
{
|
||||
Temp scratch = scratch_begin(&arena, 1);
|
||||
if(table->slot_count == 0)
|
||||
{
|
||||
table->slot_count = 64;
|
||||
table->slots = push_array(arena, DF_CfgSlot, table->slot_count);
|
||||
}
|
||||
MD_TokenizeResult tokenize = md_tokenize_from_text(scratch.arena, string);
|
||||
MD_ParseResult parse = md_parse_from_text_tokens(scratch.arena, str8_lit(""), string, tokenize.tokens);
|
||||
MD_Node *md_root = parse.root;
|
||||
for(MD_EachNode(tln, md_root->first)) if(tln->string.size != 0)
|
||||
MD_TokenizeResult tokenize = md_tokenize_from_text(arena, string);
|
||||
MD_ParseResult parse = md_parse_from_text_tokens(arena, str8_lit(""), string, tokenize.tokens);
|
||||
for(MD_EachNode(tln, parse.root->first)) if(tln->string.size != 0)
|
||||
{
|
||||
// rjf: map string -> hash*slot
|
||||
String8 string = str8(tln->string.str, tln->string.size);
|
||||
@@ -455,55 +464,12 @@ df_cfg_table_push_unparsed_string(Arena *arena, DF_CfgTable *table, String8 stri
|
||||
table->insertion_stamp_counter += 1;
|
||||
}
|
||||
|
||||
// rjf: deep copy tree into streamlined config structure
|
||||
DF_CfgNode *dst_root = &df_g_nil_cfg_node;
|
||||
{
|
||||
DF_CfgNode *dst_parent = &df_g_nil_cfg_node;
|
||||
for(MD_Node *src = tln, *src_next = 0; !md_node_is_nil(src); src = src_next)
|
||||
{
|
||||
src_next = 0;
|
||||
|
||||
// rjf: copy
|
||||
DF_CfgNode *dst = push_array(arena, DF_CfgNode, 1);
|
||||
dst->first = dst->last = dst->parent = dst->next = &df_g_nil_cfg_node;
|
||||
if(dst_parent == &df_g_nil_cfg_node)
|
||||
{
|
||||
dst_root = dst;
|
||||
}
|
||||
else
|
||||
{
|
||||
SLLQueuePush_NZ(&df_g_nil_cfg_node, dst_parent->first, dst_parent->last, dst, next);
|
||||
dst->parent = dst_parent;
|
||||
}
|
||||
{
|
||||
dst->flags |= !!(src->flags & MD_NodeFlag_Identifier) * DF_CfgNodeFlag_Identifier;
|
||||
dst->flags |= !!(src->flags & MD_NodeFlag_Numeric) * DF_CfgNodeFlag_Numeric;
|
||||
dst->flags |= !!(src->flags & MD_NodeFlag_StringLiteral) * DF_CfgNodeFlag_StringLiteral;
|
||||
dst->string = push_str8_copy(arena, str8(src->string.str, src->string.size));
|
||||
dst->source = source;
|
||||
}
|
||||
|
||||
// rjf: grab next
|
||||
if(!md_node_is_nil(src->first))
|
||||
{
|
||||
src_next = src->first;
|
||||
dst_parent = dst;
|
||||
}
|
||||
else for(MD_Node *p = src; !md_node_is_nil(p) && p != tln; p = p->parent, dst_parent = dst_parent->parent)
|
||||
{
|
||||
if(!md_node_is_nil(p->next))
|
||||
{
|
||||
src_next = p->next;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// rjf: push tree into value
|
||||
SLLQueuePush_NZ(&df_g_nil_cfg_node, val->first, val->last, dst_root, next);
|
||||
// rjf: create new node within this value
|
||||
DF_CfgTree *tree = push_array(arena, DF_CfgTree, 1);
|
||||
SLLQueuePush_NZ(&df_g_nil_cfg_tree, val->first, val->last, tree, next);
|
||||
tree->source = source;
|
||||
tree->root = tln;
|
||||
}
|
||||
scratch_end(scratch);
|
||||
}
|
||||
|
||||
internal DF_CfgTable
|
||||
@@ -566,6 +532,7 @@ df_cfg_val_from_string(DF_CfgTable *table, String8 string)
|
||||
return result;
|
||||
}
|
||||
|
||||
#if 0
|
||||
internal DF_CfgNode *
|
||||
df_cfg_node_child_from_string(DF_CfgNode *node, String8 string, StringMatchFlags flags)
|
||||
{
|
||||
@@ -673,6 +640,7 @@ df_string_from_cfg_node_key(DF_CfgNode *node, String8 key, StringMatchFlags flag
|
||||
DF_CfgNode *child = df_cfg_node_child_from_string(node, key, flags);
|
||||
return child->first->string;
|
||||
}
|
||||
#endif
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Debug Info Extraction Type Pure Functions
|
||||
@@ -4591,10 +4559,10 @@ df_filtered_data_members_from_members_cfg_table(Arena *arena, E_MemberArray memb
|
||||
{
|
||||
// rjf: check if included by 'only's
|
||||
B32 is_included = 1;
|
||||
for(DF_CfgNode *r = only->first; r != &df_g_nil_cfg_node; r = r->next)
|
||||
for(DF_CfgTree *r = only->first; r != &df_g_nil_cfg_tree; r = r->next)
|
||||
{
|
||||
is_included = 0;
|
||||
for(DF_CfgNode *name_node = r->first; name_node != &df_g_nil_cfg_node; name_node = name_node->next)
|
||||
for(MD_EachNode(name_node, r->root->first))
|
||||
{
|
||||
String8 name = name_node->string;
|
||||
if(str8_match(members.v[idx].name, name, 0))
|
||||
@@ -4607,9 +4575,9 @@ df_filtered_data_members_from_members_cfg_table(Arena *arena, E_MemberArray memb
|
||||
end_inclusion_check:;
|
||||
|
||||
// rjf: remove if excluded by 'omit's
|
||||
for(DF_CfgNode *r = omit->first; r != &df_g_nil_cfg_node; r = r->next)
|
||||
for(DF_CfgTree *r = omit->first; r != &df_g_nil_cfg_tree; r = r->next)
|
||||
{
|
||||
for(DF_CfgNode *name_node = r->first; name_node != &df_g_nil_cfg_node; name_node = name_node->next)
|
||||
for(MD_EachNode(name_node, r->root->first))
|
||||
{
|
||||
String8 name = name_node->string;
|
||||
if(str8_match(members.v[idx].name, name, 0))
|
||||
@@ -5173,21 +5141,21 @@ df_eval_viz_row_list_push_new(Arena *arena, DF_EvalView *eval_view, DF_EvalVizWi
|
||||
|
||||
// rjf: determine row ui hook to use for this row
|
||||
DF_GfxViewRuleSpec *value_ui_rule_spec = &df_g_nil_gfx_view_rule_spec;
|
||||
DF_CfgNode *value_ui_rule_node= &df_g_nil_cfg_node;
|
||||
MD_Node *value_ui_rule_params = &md_nil_node;
|
||||
for(DF_CfgVal *val = cfg_table->first_val; val != 0 && val != &df_g_nil_cfg_val; val = val->linear_next)
|
||||
{
|
||||
DF_GfxViewRuleSpec *spec = df_gfx_view_rule_spec_from_string(val->string);
|
||||
if(spec->info.flags & DF_GfxViewRuleSpecInfoFlag_RowUI)
|
||||
{
|
||||
value_ui_rule_spec = spec;
|
||||
value_ui_rule_node = val->last;
|
||||
value_ui_rule_params = val->last->root;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// rjf: determine block ui hook to use for this row
|
||||
DF_GfxViewRuleSpec *expand_ui_rule_spec = &df_g_nil_gfx_view_rule_spec;
|
||||
DF_CfgNode *expand_ui_rule_node = &df_g_nil_cfg_node;
|
||||
MD_Node *expand_ui_rule_params = &md_nil_node;
|
||||
if(block->kind == DF_EvalVizBlockKind_Canvas)
|
||||
{
|
||||
for(DF_CfgVal *val = cfg_table->first_val; val != 0 && val != &df_g_nil_cfg_val; val = val->linear_next)
|
||||
@@ -5196,7 +5164,7 @@ df_eval_viz_row_list_push_new(Arena *arena, DF_EvalView *eval_view, DF_EvalVizWi
|
||||
if(spec->info.flags & DF_GfxViewRuleSpecInfoFlag_ViewUI)
|
||||
{
|
||||
expand_ui_rule_spec = spec;
|
||||
expand_ui_rule_node = val->last;
|
||||
expand_ui_rule_params = val->last->root;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -5204,10 +5172,10 @@ df_eval_viz_row_list_push_new(Arena *arena, DF_EvalView *eval_view, DF_EvalVizWi
|
||||
|
||||
// rjf: fill
|
||||
row->cfg_table = cfg_table;
|
||||
row->value_ui_rule_node = value_ui_rule_node;
|
||||
row->value_ui_rule_spec = value_ui_rule_spec;
|
||||
row->expand_ui_rule_node = expand_ui_rule_node;
|
||||
row->value_ui_rule_params = value_ui_rule_params;
|
||||
row->expand_ui_rule_spec = expand_ui_rule_spec;
|
||||
row->expand_ui_rule_params = expand_ui_rule_params;
|
||||
}
|
||||
|
||||
return row;
|
||||
@@ -5420,11 +5388,11 @@ df_base_offset_from_eval(E_Eval eval)
|
||||
}
|
||||
|
||||
internal E_Value
|
||||
df_value_from_cfg_key(DF_CfgNode *cfg, String8 key)
|
||||
df_value_from_params_key(MD_Node *params, String8 key)
|
||||
{
|
||||
Temp scratch = scratch_begin(0, 0);
|
||||
DF_CfgNode *key_cfg = df_cfg_node_child_from_string(cfg, key, 0);
|
||||
String8 expr = df_string_from_cfg_node_children(scratch.arena, key_cfg);
|
||||
MD_Node *key_node = md_child_from_string(params, key, 0);
|
||||
String8 expr = md_string_from_children(scratch.arena, key_node);
|
||||
E_Eval eval = e_eval_from_string(scratch.arena, expr);
|
||||
E_Eval value_eval = e_value_eval_from_eval(eval);
|
||||
scratch_end(scratch);
|
||||
@@ -5432,10 +5400,10 @@ df_value_from_cfg_key(DF_CfgNode *cfg, String8 key)
|
||||
}
|
||||
|
||||
internal Rng1U64
|
||||
df_range_from_eval_cfg(E_Eval eval, DF_CfgNode *cfg)
|
||||
df_range_from_eval_params(E_Eval eval, MD_Node *params)
|
||||
{
|
||||
Temp scratch = scratch_begin(0, 0);
|
||||
U64 size = df_value_from_cfg_key(cfg, str8_lit("size")).u64;
|
||||
U64 size = df_value_from_params_key(params, str8_lit("size")).u64;
|
||||
if(size == 0 &&
|
||||
(e_type_kind_from_key(eval.type_key) == E_TypeKind_Array ||
|
||||
e_type_kind_from_key(e_type_direct_from_key(eval.type_key)) == E_TypeKind_Array))
|
||||
@@ -5463,7 +5431,7 @@ df_range_from_eval_cfg(E_Eval eval, DF_CfgNode *cfg)
|
||||
}
|
||||
|
||||
internal TXT_LangKind
|
||||
df_lang_kind_from_eval_cfg(E_Eval eval, DF_CfgNode *cfg)
|
||||
df_lang_kind_from_eval_params(E_Eval eval, MD_Node *params)
|
||||
{
|
||||
TXT_LangKind lang_kind = TXT_LangKind_Null;
|
||||
if(eval.expr->kind == E_ExprKind_LeafFilePath)
|
||||
@@ -5472,33 +5440,33 @@ df_lang_kind_from_eval_cfg(E_Eval eval, DF_CfgNode *cfg)
|
||||
}
|
||||
else
|
||||
{
|
||||
DF_CfgNode *lang_cfg = df_cfg_node_child_from_string(cfg, str8_lit("lang"), 0);
|
||||
String8 lang_kind_string = lang_cfg->first->string;
|
||||
MD_Node *lang_node = md_child_from_string(params, str8_lit("lang"), 0);
|
||||
String8 lang_kind_string = lang_node->first->string;
|
||||
lang_kind = txt_lang_kind_from_extension(lang_kind_string);
|
||||
}
|
||||
return lang_kind;
|
||||
}
|
||||
|
||||
internal Vec2S32
|
||||
df_dim2s32_from_eval_cfg(E_Eval eval, DF_CfgNode *cfg)
|
||||
df_dim2s32_from_eval_params(E_Eval eval, MD_Node *params)
|
||||
{
|
||||
Vec2S32 dim = v2s32(1, 1);
|
||||
{
|
||||
dim.x = df_value_from_cfg_key(cfg, str8_lit("w")).s32;
|
||||
dim.y = df_value_from_cfg_key(cfg, str8_lit("h")).s32;
|
||||
dim.x = df_value_from_params_key(params, str8_lit("w")).s32;
|
||||
dim.y = df_value_from_params_key(params, str8_lit("h")).s32;
|
||||
}
|
||||
return dim;
|
||||
}
|
||||
|
||||
internal R_Tex2DFormat
|
||||
df_tex2dformat_from_eval_cfg(E_Eval eval, DF_CfgNode *cfg)
|
||||
df_tex2dformat_from_eval_params(E_Eval eval, MD_Node *params)
|
||||
{
|
||||
R_Tex2DFormat result = R_Tex2DFormat_RGBA8;
|
||||
{
|
||||
DF_CfgNode *fmt_child = df_cfg_node_child_from_string(cfg, str8_lit("fmt"), 0);
|
||||
MD_Node *fmt_node = md_child_from_string(params, str8_lit("fmt"), 0);
|
||||
for(EachNonZeroEnumVal(R_Tex2DFormat, fmt))
|
||||
{
|
||||
if(str8_match(r_tex2d_kind_display_string_table[fmt], fmt_child->first->string, StringMatchFlag_CaseInsensitive))
|
||||
if(str8_match(r_tex2d_kind_display_string_table[fmt], fmt_node->first->string, StringMatchFlag_CaseInsensitive))
|
||||
{
|
||||
result = fmt;
|
||||
break;
|
||||
@@ -7780,16 +7748,16 @@ df_core_begin_frame(Arena *arena, DF_CmdList *cmds, F32 dt)
|
||||
if(k_flags & DF_EntityKindFlag_IsSerializedToConfig)
|
||||
{
|
||||
DF_CfgVal *k_val = df_cfg_val_from_string(table, df_g_entity_kind_name_lower_table[k]);
|
||||
for(DF_CfgNode *k_cfg = k_val->first;
|
||||
k_cfg != &df_g_nil_cfg_node;
|
||||
k_cfg = k_cfg->next)
|
||||
for(DF_CfgTree *k_tree = k_val->first;
|
||||
k_tree != &df_g_nil_cfg_tree;
|
||||
k_tree = k_tree->next)
|
||||
{
|
||||
if(k_cfg->source != src)
|
||||
if(k_tree->source != src)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
DF_Entity *entity = df_entity_alloc(df_entity_root(), k);
|
||||
df_entity_equip_cfg_src(entity, k_cfg->source);
|
||||
df_entity_equip_cfg_src(entity, k_tree->source);
|
||||
|
||||
// rjf: iterate config tree
|
||||
typedef struct Task Task;
|
||||
@@ -7797,18 +7765,18 @@ df_core_begin_frame(Arena *arena, DF_CmdList *cmds, F32 dt)
|
||||
{
|
||||
Task *next;
|
||||
DF_Entity *entity;
|
||||
DF_CfgNode *n;
|
||||
MD_Node *n;
|
||||
};
|
||||
Task start_task = {0, entity, k_cfg};
|
||||
Task start_task = {0, entity, k_tree->root};
|
||||
Task *first_task = &start_task;
|
||||
Task *last_task = first_task;
|
||||
for(Task *t = first_task; t != 0; t = t->next)
|
||||
{
|
||||
DF_CfgNode *node = t->n;
|
||||
for(DF_CfgNode *child = node->first; child != &df_g_nil_cfg_node; child = child->next)
|
||||
MD_Node *node = t->n;
|
||||
for(MD_EachNode(child, node->first))
|
||||
{
|
||||
// rjf: standalone string literals under an entity -> name
|
||||
if(child->flags & DF_CfgNodeFlag_StringLiteral && child->first == &df_g_nil_cfg_node)
|
||||
if(child->flags & MD_NodeFlag_StringLiteral && child->first == &md_nil_node)
|
||||
{
|
||||
String8 string = df_cfg_raw_from_escaped_string(scratch.arena, child->string);
|
||||
if(df_g_entity_kind_flags_table[t->entity->kind] & DF_EntityKindFlag_NameIsPath)
|
||||
@@ -7819,7 +7787,7 @@ df_core_begin_frame(Arena *arena, DF_CmdList *cmds, F32 dt)
|
||||
}
|
||||
|
||||
// rjf: standalone string literals under an entity, with a numeric child -> name & text location
|
||||
if(child->flags & DF_CfgNodeFlag_StringLiteral && child->first->flags & DF_CfgNodeFlag_Numeric && child->first->first == &df_g_nil_cfg_node)
|
||||
if(child->flags & MD_NodeFlag_StringLiteral && child->first->flags & MD_NodeFlag_Numeric && child->first->first == &md_nil_node)
|
||||
{
|
||||
String8 string = df_cfg_raw_from_escaped_string(scratch.arena, child->string);
|
||||
if(df_g_entity_kind_flags_table[t->entity->kind] & DF_EntityKindFlag_NameIsPath)
|
||||
@@ -7834,7 +7802,7 @@ df_core_begin_frame(Arena *arena, DF_CmdList *cmds, F32 dt)
|
||||
}
|
||||
|
||||
// rjf: standalone hex literals under an entity -> vaddr
|
||||
if(child->flags & DF_CfgNodeFlag_Numeric && child->first == &df_g_nil_cfg_node && str8_match(str8_substr(child->string, r1u64(0, 2)), str8_lit("0x"), 0))
|
||||
if(child->flags & MD_NodeFlag_Numeric && child->first == &md_nil_node && str8_match(str8_substr(child->string, r1u64(0, 2)), str8_lit("0x"), 0))
|
||||
{
|
||||
U64 vaddr = 0;
|
||||
try_u64_from_str8_c_rules(child->string, &vaddr);
|
||||
@@ -7844,7 +7812,7 @@ df_core_begin_frame(Arena *arena, DF_CmdList *cmds, F32 dt)
|
||||
// rjf: specifically named entity equipment
|
||||
if((str8_match(child->string, str8_lit("name"), StringMatchFlag_CaseInsensitive) ||
|
||||
str8_match(child->string, str8_lit("label"), StringMatchFlag_CaseInsensitive)) &&
|
||||
child->first != &df_g_nil_cfg_node)
|
||||
child->first != &md_nil_node)
|
||||
{
|
||||
String8 string = df_cfg_raw_from_escaped_string(scratch.arena, child->first->string);
|
||||
if(df_g_entity_kind_flags_table[t->entity->kind] & DF_EntityKindFlag_NameIsPath)
|
||||
@@ -7855,15 +7823,15 @@ df_core_begin_frame(Arena *arena, DF_CmdList *cmds, F32 dt)
|
||||
}
|
||||
if((str8_match(child->string, str8_lit("active"), StringMatchFlag_CaseInsensitive) ||
|
||||
str8_match(child->string, str8_lit("enabled"), StringMatchFlag_CaseInsensitive)) &&
|
||||
child->first != &df_g_nil_cfg_node)
|
||||
child->first != &md_nil_node)
|
||||
{
|
||||
df_entity_equip_disabled(t->entity, !str8_match(child->first->string, str8_lit("1"), 0));
|
||||
}
|
||||
if(str8_match(child->string, str8_lit("disabled"), StringMatchFlag_CaseInsensitive) && child->first != &df_g_nil_cfg_node)
|
||||
if(str8_match(child->string, str8_lit("disabled"), StringMatchFlag_CaseInsensitive) && child->first != &md_nil_node)
|
||||
{
|
||||
df_entity_equip_disabled(t->entity, str8_match(child->first->string, str8_lit("1"), 0));
|
||||
}
|
||||
if(str8_match(child->string, str8_lit("hsva"), StringMatchFlag_CaseInsensitive) && child->first != &df_g_nil_cfg_node)
|
||||
if(str8_match(child->string, str8_lit("hsva"), StringMatchFlag_CaseInsensitive) && child->first != &md_nil_node)
|
||||
{
|
||||
Vec4F32 hsva = {0};
|
||||
hsva.x = (F32)f64_from_str8(child->first->string);
|
||||
@@ -7872,13 +7840,13 @@ df_core_begin_frame(Arena *arena, DF_CmdList *cmds, F32 dt)
|
||||
hsva.w = (F32)f64_from_str8(child->first->next->next->next->string);
|
||||
df_entity_equip_color_hsva(t->entity, hsva);
|
||||
}
|
||||
if(str8_match(child->string, str8_lit("color"), StringMatchFlag_CaseInsensitive) && child->first != &df_g_nil_cfg_node)
|
||||
if(str8_match(child->string, str8_lit("color"), StringMatchFlag_CaseInsensitive) && child->first != &md_nil_node)
|
||||
{
|
||||
Vec4F32 rgba = rgba_from_hex_string_4f32(child->first->string);
|
||||
Vec4F32 hsva = hsva_from_rgba(rgba);
|
||||
df_entity_equip_color_hsva(t->entity, hsva);
|
||||
}
|
||||
if(str8_match(child->string, str8_lit("line"), StringMatchFlag_CaseInsensitive) && child->first != &df_g_nil_cfg_node)
|
||||
if(str8_match(child->string, str8_lit("line"), StringMatchFlag_CaseInsensitive) && child->first != &md_nil_node)
|
||||
{
|
||||
S64 line = 0;
|
||||
try_s64_from_str8_c_rules(child->first->string, &line);
|
||||
@@ -7887,7 +7855,7 @@ df_core_begin_frame(Arena *arena, DF_CmdList *cmds, F32 dt)
|
||||
}
|
||||
if((str8_match(child->string, str8_lit("vaddr"), StringMatchFlag_CaseInsensitive) ||
|
||||
str8_match(child->string, str8_lit("addr"), StringMatchFlag_CaseInsensitive)) &&
|
||||
child->first != &df_g_nil_cfg_node)
|
||||
child->first != &md_nil_node)
|
||||
{
|
||||
U64 vaddr = 0;
|
||||
try_u64_from_str8_c_rules(child->first->string, &vaddr);
|
||||
@@ -7898,7 +7866,7 @@ df_core_begin_frame(Arena *arena, DF_CmdList *cmds, F32 dt)
|
||||
DF_EntityKind sub_entity_kind = DF_EntityKind_Nil;
|
||||
for(EachEnumVal(DF_EntityKind, k2))
|
||||
{
|
||||
if(child->flags & DF_CfgNodeFlag_Identifier && child->first != &df_g_nil_cfg_node &&
|
||||
if(child->flags & MD_NodeFlag_Identifier && child->first != &md_nil_node &&
|
||||
(str8_match(child->string, df_g_entity_kind_name_lower_table[k2], StringMatchFlag_CaseInsensitive) ||
|
||||
(k2 == DF_EntityKind_Executable && str8_match(child->string, str8_lit("exe"), StringMatchFlag_CaseInsensitive))))
|
||||
{
|
||||
@@ -7919,13 +7887,11 @@ df_core_begin_frame(Arena *arena, DF_CmdList *cmds, F32 dt)
|
||||
|
||||
//- rjf: apply exception code filters
|
||||
DF_CfgVal *filter_tables = df_cfg_val_from_string(table, str8_lit("exception_code_filters"));
|
||||
for(DF_CfgNode *table = filter_tables->first;
|
||||
table != &df_g_nil_cfg_node;
|
||||
for(DF_CfgTree *table = filter_tables->first;
|
||||
table != &df_g_nil_cfg_tree;
|
||||
table = table->next)
|
||||
{
|
||||
for(DF_CfgNode *rule = table->first;
|
||||
rule != &df_g_nil_cfg_node;
|
||||
rule = rule->next)
|
||||
for(MD_EachNode(rule, table->root->first))
|
||||
{
|
||||
String8 name = rule->string;
|
||||
String8 val_string = rule->first->string;
|
||||
|
||||
+32
-12
@@ -171,7 +171,7 @@ struct DF_CtrlFlowInfo
|
||||
////////////////////////////////
|
||||
//~ rjf: View Rule Hook Types
|
||||
|
||||
typedef struct DF_CfgNode DF_CfgNode;
|
||||
typedef struct DF_CfgTree DF_CfgTree;
|
||||
typedef struct DF_CfgVal DF_CfgVal;
|
||||
typedef struct DF_CfgTable DF_CfgTable;
|
||||
typedef struct DF_EvalView DF_EvalView;
|
||||
@@ -203,6 +203,7 @@ typedef DF_CORE_VIEW_RULE_VIZ_BLOCK_PROD_FUNCTION_SIG(DF_CoreViewRuleVizBlockPro
|
||||
////////////////////////////////
|
||||
//~ rjf: Config Types
|
||||
|
||||
#if 0
|
||||
typedef U32 DF_CfgNodeFlags;
|
||||
enum
|
||||
{
|
||||
@@ -222,7 +223,17 @@ struct DF_CfgNode
|
||||
String8 string;
|
||||
DF_CfgSrc source;
|
||||
};
|
||||
#endif
|
||||
|
||||
typedef struct DF_CfgTree DF_CfgTree;
|
||||
struct DF_CfgTree
|
||||
{
|
||||
DF_CfgTree *next;
|
||||
DF_CfgSrc source;
|
||||
MD_Node *root;
|
||||
};
|
||||
|
||||
#if 0
|
||||
typedef struct DF_CfgNodeRec DF_CfgNodeRec;
|
||||
struct DF_CfgNodeRec
|
||||
{
|
||||
@@ -230,14 +241,15 @@ struct DF_CfgNodeRec
|
||||
S32 push_count;
|
||||
S32 pop_count;
|
||||
};
|
||||
#endif
|
||||
|
||||
typedef struct DF_CfgVal DF_CfgVal;
|
||||
struct DF_CfgVal
|
||||
{
|
||||
DF_CfgVal *hash_next;
|
||||
DF_CfgVal *linear_next;
|
||||
DF_CfgNode *first;
|
||||
DF_CfgNode *last;
|
||||
DF_CfgTree *first;
|
||||
DF_CfgTree *last;
|
||||
U64 insertion_stamp;
|
||||
String8 string;
|
||||
};
|
||||
@@ -793,9 +805,9 @@ struct DF_EvalVizRow
|
||||
// rjf: view rule attachments
|
||||
DF_CfgTable *cfg_table;
|
||||
struct DF_GfxViewRuleSpec *expand_ui_rule_spec;
|
||||
struct DF_CfgNode *expand_ui_rule_node;
|
||||
MD_Node *expand_ui_rule_params;
|
||||
struct DF_GfxViewRuleSpec *value_ui_rule_spec;
|
||||
struct DF_CfgNode *value_ui_rule_node;
|
||||
MD_Node *value_ui_rule_params;
|
||||
};
|
||||
|
||||
typedef struct DF_EvalVizWindowedRowList DF_EvalVizWindowedRowList;
|
||||
@@ -1228,8 +1240,11 @@ struct DF_State
|
||||
|
||||
read_only global DF_CmdSpec df_g_nil_cmd_spec = {0};
|
||||
read_only global DF_CoreViewRuleSpec df_g_nil_core_view_rule_spec = {0};
|
||||
#if 0
|
||||
read_only global DF_CfgNode df_g_nil_cfg_node = {&df_g_nil_cfg_node, &df_g_nil_cfg_node, &df_g_nil_cfg_node, &df_g_nil_cfg_node};
|
||||
read_only global DF_CfgVal df_g_nil_cfg_val = {&df_g_nil_cfg_val, &df_g_nil_cfg_val, &df_g_nil_cfg_node, &df_g_nil_cfg_node};
|
||||
#endif
|
||||
read_only global DF_CfgTree df_g_nil_cfg_tree = {&df_g_nil_cfg_tree, DF_CfgSrc_User, &md_nil_node};
|
||||
read_only global DF_CfgVal df_g_nil_cfg_val = {&df_g_nil_cfg_val, &df_g_nil_cfg_val, &df_g_nil_cfg_tree, &df_g_nil_cfg_tree};
|
||||
read_only global DF_CfgTable df_g_nil_cfg_table = {0, 0, 0, &df_g_nil_cfg_val, &df_g_nil_cfg_val};
|
||||
read_only global DF_Entity df_g_nil_entity =
|
||||
{
|
||||
@@ -1325,17 +1340,22 @@ internal void df_expand_set_expansion(Arena *arena, DF_ExpandTreeTable *table, D
|
||||
////////////////////////////////
|
||||
//~ rjf: Config Type Pure Functions
|
||||
|
||||
#if 0
|
||||
internal DF_CfgNode *df_cfg_tree_copy(Arena *arena, DF_CfgNode *src_root);
|
||||
internal DF_CfgNodeRec df_cfg_node_rec__depth_first_pre(DF_CfgNode *node, DF_CfgNode *root);
|
||||
#endif
|
||||
internal DF_CfgTree *df_cfg_tree_copy(Arena *arena, DF_CfgTree *src);
|
||||
internal void df_cfg_table_push_unparsed_string(Arena *arena, DF_CfgTable *table, String8 string, DF_CfgSrc source);
|
||||
internal DF_CfgTable df_cfg_table_from_inheritance(Arena *arena, DF_CfgTable *src);
|
||||
internal DF_CfgTable df_cfg_table_copy(Arena *arena, DF_CfgTable *src);
|
||||
internal DF_CfgVal *df_cfg_val_from_string(DF_CfgTable *table, String8 string);
|
||||
#if 0
|
||||
internal DF_CfgNode *df_cfg_node_child_from_string(DF_CfgNode *node, String8 string, StringMatchFlags flags);
|
||||
internal DF_CfgNode *df_first_cfg_node_child_from_flags(DF_CfgNode *node, DF_CfgNodeFlags flags);
|
||||
internal String8 df_string_from_cfg_node_children(Arena *arena, DF_CfgNode *node);
|
||||
internal Vec4F32 df_hsva_from_cfg_node(DF_CfgNode *node);
|
||||
internal String8 df_string_from_cfg_node_key(DF_CfgNode *node, String8 key, StringMatchFlags flags);
|
||||
#endif
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Debug Info Extraction Type Pure Functions
|
||||
@@ -1650,13 +1670,13 @@ internal String8 df_expr_string_from_viz_row(Arena *arena, DF_EvalVizRow *row);
|
||||
internal B32 df_viz_row_is_expandable(DF_EvalVizRow *row);
|
||||
internal B32 df_viz_row_is_editable(DF_EvalVizRow *row);
|
||||
|
||||
//- rjf: eval / view rule config tree info extraction
|
||||
//- rjf: eval / view rule params tree info extraction
|
||||
internal U64 df_base_offset_from_eval(E_Eval eval);
|
||||
internal E_Value df_value_from_cfg_key(DF_CfgNode *cfg, String8 key);
|
||||
internal Rng1U64 df_range_from_eval_cfg(E_Eval eval, DF_CfgNode *cfg);
|
||||
internal TXT_LangKind df_lang_kind_from_eval_cfg(E_Eval eval, DF_CfgNode *cfg);
|
||||
internal Vec2S32 df_dim2s32_from_eval_cfg(E_Eval eval, DF_CfgNode *cfg);
|
||||
internal R_Tex2DFormat df_tex2dformat_from_eval_cfg(E_Eval eval, DF_CfgNode *cfg);
|
||||
internal E_Value df_value_from_params_key(MD_Node *params, String8 key);
|
||||
internal Rng1U64 df_range_from_eval_params(E_Eval eval, MD_Node *params);
|
||||
internal TXT_LangKind df_lang_kind_from_eval_params(E_Eval eval, MD_Node *params);
|
||||
internal Vec2S32 df_dim2s32_from_eval_params(E_Eval eval, MD_Node *params);
|
||||
internal R_Tex2DFormat df_tex2dformat_from_eval_params(E_Eval eval, MD_Node *params);
|
||||
|
||||
//- rjf: view rule eval application
|
||||
internal E_Eval df_eval_from_eval_cfg_table(Arena *arena, E_Eval eval, DF_CfgTable *cfg);
|
||||
|
||||
@@ -99,7 +99,7 @@ DF_CmdParamSlotTable:
|
||||
{TextPoint text_point `TxtPt`}
|
||||
{CmdSpec cmd_spec `struct DF_CmdSpec *`}
|
||||
{ViewSpec view_spec `struct DF_ViewSpec *`}
|
||||
{CfgNode cfg_node `struct DF_CfgNode *`}
|
||||
{ParamsTree params_tree `MD_Node *`}
|
||||
{OSEvent os_event `struct OS_Event *`}
|
||||
{VirtualAddr vaddr `U64`}
|
||||
{VirtualOff voff `U64`}
|
||||
|
||||
@@ -19,7 +19,7 @@ Rng1U64 df_g_cmd_param_slot_range_table[24] =
|
||||
{OffsetOf(DF_CmdParams, text_point), OffsetOf(DF_CmdParams, text_point) + sizeof(TxtPt)},
|
||||
{OffsetOf(DF_CmdParams, cmd_spec), OffsetOf(DF_CmdParams, cmd_spec) + sizeof(struct DF_CmdSpec *)},
|
||||
{OffsetOf(DF_CmdParams, view_spec), OffsetOf(DF_CmdParams, view_spec) + sizeof(struct DF_ViewSpec *)},
|
||||
{OffsetOf(DF_CmdParams, cfg_node), OffsetOf(DF_CmdParams, cfg_node) + sizeof(struct DF_CfgNode *)},
|
||||
{OffsetOf(DF_CmdParams, params_tree), OffsetOf(DF_CmdParams, params_tree) + sizeof(MD_Node *)},
|
||||
{OffsetOf(DF_CmdParams, os_event), OffsetOf(DF_CmdParams, os_event) + sizeof(struct OS_Event *)},
|
||||
{OffsetOf(DF_CmdParams, vaddr), OffsetOf(DF_CmdParams, vaddr) + sizeof(U64)},
|
||||
{OffsetOf(DF_CmdParams, voff), OffsetOf(DF_CmdParams, voff) + sizeof(U64)},
|
||||
|
||||
@@ -387,7 +387,7 @@ DF_CmdParamSlot_FilePath,
|
||||
DF_CmdParamSlot_TextPoint,
|
||||
DF_CmdParamSlot_CmdSpec,
|
||||
DF_CmdParamSlot_ViewSpec,
|
||||
DF_CmdParamSlot_CfgNode,
|
||||
DF_CmdParamSlot_ParamsTree,
|
||||
DF_CmdParamSlot_OSEvent,
|
||||
DF_CmdParamSlot_VirtualAddr,
|
||||
DF_CmdParamSlot_VirtualOff,
|
||||
@@ -417,7 +417,7 @@ String8 file_path;
|
||||
TxtPt text_point;
|
||||
struct DF_CmdSpec * cmd_spec;
|
||||
struct DF_ViewSpec * view_spec;
|
||||
struct DF_CfgNode * cfg_node;
|
||||
MD_Node * params_tree;
|
||||
struct OS_Event * os_event;
|
||||
U64 vaddr;
|
||||
U64 voff;
|
||||
|
||||
Reference in New Issue
Block a user