From 94791e62ff018dfc2244c34aa3dfab8e1441737d Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Wed, 14 Aug 2024 15:27:36 -0700 Subject: [PATCH] eliminate old serialization/deserialization paths --- src/df/core/df_core.c | 619 ------------------------------------------ 1 file changed, 619 deletions(-) diff --git a/src/df/core/df_core.c b/src/df/core/df_core.c index e9fa12f7..85e43d05 100644 --- a/src/df/core/df_core.c +++ b/src/df/core/df_core.c @@ -5506,302 +5506,6 @@ df_cfg_strings_from_core(Arena *arena, String8 root_path, DF_CfgSrc source) } } -#if 0 - //- rjf: write recent projects - { - B32 first = 1; - DF_EntityList recent_projects = df_query_cached_entity_list_with_kind(DF_EntityKind_RecentProject); - for(DF_EntityNode *n = recent_projects.first; n != 0; n = n->next) - { - DF_Entity *rp = n->entity; - if(rp->cfg_src == source) - { - if(first) - { - first = 0; - str8_list_push(arena, &strs, str8_lit("/// recent projects ///////////////////////////////////////////////////////////\n")); - str8_list_push(arena, &strs, str8_lit("\n")); - } - Temp scratch = scratch_begin(&arena, 1); - String8 path_absolute = path_normalized_from_string(scratch.arena, rp->name); - String8 path_relative = path_relative_dst_from_absolute_dst_src(scratch.arena, path_absolute, root_path); - str8_list_pushf(arena, &strs, "recent_project: {\"%S\"}\n", path_relative); - scratch_end(scratch); - } - } - if(!first) - { - str8_list_push(arena, &strs, str8_lit("\n")); - } - } - - //- rjf: write targets - { - B32 first = 1; - DF_EntityList targets = df_query_cached_entity_list_with_kind(DF_EntityKind_Target); - for(DF_EntityNode *n = targets.first; n != 0; n = n->next) - { - DF_Entity *target = n->entity; - if(target->cfg_src == source) - { - if(first) - { - first = 0; - str8_list_push(arena, &strs, str8_lit("/// targets ///////////////////////////////////////////////////////////////////\n")); - str8_list_push(arena, &strs, str8_lit("\n")); - } - Temp scratch = scratch_begin(&arena, 1); - DF_Entity *exe__ent = df_entity_child_from_kind(target, DF_EntityKind_Executable); - DF_Entity *args__ent = df_entity_child_from_kind(target, DF_EntityKind_Arguments); - DF_Entity *wdir__ent = df_entity_child_from_kind(target, DF_EntityKind_WorkingDirectory); - DF_Entity *entr__ent = df_entity_child_from_kind(target, DF_EntityKind_EntryPoint); - String8 label = target->name; - String8 exe = exe__ent->name; - String8 exe_normalized = path_normalized_from_string(scratch.arena, exe); - String8 exe_normalized_rel = path_relative_dst_from_absolute_dst_src(scratch.arena, exe_normalized, root_path); - String8 wdir = wdir__ent->name; - String8 wdir_normalized = path_normalized_from_string(scratch.arena, wdir); - String8 wdir_normalized_rel = path_relative_dst_from_absolute_dst_src(scratch.arena, wdir_normalized, root_path); - String8 entry_point_name = entr__ent->name; - String8 label_escaped = df_cfg_escaped_from_raw_string(arena, label); - String8 args_escaped = df_cfg_escaped_from_raw_string(arena, args__ent->name); - String8 entry_escaped = df_cfg_escaped_from_raw_string(arena, entry_point_name); - str8_list_push (arena, &strs, str8_lit("target:\n")); - str8_list_push (arena, &strs, str8_lit("{\n")); - if(label.size != 0) - { - str8_list_pushf(arena, &strs, " label: \"%S\"\n", label_escaped); - } - str8_list_pushf(arena, &strs, " exe: \"%S\"\n", exe_normalized_rel); - str8_list_pushf(arena, &strs, " arguments: \"%S\"\n", args_escaped); - str8_list_pushf(arena, &strs, " working_directory: \"%S\"\n", wdir_normalized_rel); - if(entry_point_name.size != 0) - { - str8_list_pushf(arena, &strs, " entry_point: \"%S\"\n", entry_escaped); - } - str8_list_pushf(arena, &strs, " active: %i\n", (int)!target->disabled); - if(target->flags & DF_EntityFlag_HasColor) - { - Vec4F32 hsva = df_hsva_from_entity(target); - str8_list_pushf(arena, &strs, " hsva: %.2f %.2f %.2f %.2f\n", hsva.x, hsva.y, hsva.z, hsva.w); - } - str8_list_push (arena, &strs, str8_lit("}\n")); - str8_list_push (arena, &strs, str8_lit("\n")); - scratch_end(scratch); - } - } - } - - //- rjf: write path maps - { - B32 first = 1; - DF_EntityList path_maps = df_query_cached_entity_list_with_kind(DF_EntityKind_OverrideFileLink); - for(DF_EntityNode *n = path_maps.first; n != 0; n = n->next) - { - DF_Entity *map = n->entity; - if(map->cfg_src == source) - { - if(first) - { - first = 0; - str8_list_push(arena, &strs, str8_lit("/// file path maps ////////////////////////////////////////////////////////////\n")); - str8_list_push(arena, &strs, str8_lit("\n")); - } - String8 src_path = df_full_path_from_entity(arena, map); - String8 dst_path = df_full_path_from_entity(arena, df_entity_from_handle(map->entity_handle)); - str8_list_push (arena, &strs, str8_lit("file_path_map:\n")); - str8_list_push (arena, &strs, str8_lit("{\n")); - str8_list_pushf(arena, &strs, " source_path: \"%S\"\n", src_path); - str8_list_pushf(arena, &strs, " dest_path: \"%S\"\n", dst_path); - str8_list_push (arena, &strs, str8_lit("}\n")); - str8_list_push (arena, &strs, str8_lit("\n")); - } - } - } - - //- rjf: write auto view rules - { - B32 first = 1; - DF_EntityList avrs = df_query_cached_entity_list_with_kind(DF_EntityKind_AutoViewRule); - for(DF_EntityNode *n = avrs.first; n != 0; n = n->next) - { - DF_Entity *map = n->entity; - if(map->cfg_src == source) - { - if(first) - { - first = 0; - str8_list_push(arena, &strs, str8_lit("/// auto view rules ///////////////////////////////////////////////////////////\n")); - str8_list_push(arena, &strs, str8_lit("\n")); - } - String8 type = df_entity_child_from_kind(map, DF_EntityKind_Source)->name; - String8 view_rule = df_entity_child_from_kind(map, DF_EntityKind_Dest)->name; - type = df_cfg_escaped_from_raw_string(arena, type); - view_rule= df_cfg_escaped_from_raw_string(arena, view_rule); - str8_list_push (arena, &strs, str8_lit("auto_view_rule:\n")); - str8_list_push (arena, &strs, str8_lit("{\n")); - str8_list_pushf(arena, &strs, " type: \"%S\"\n", type); - str8_list_pushf(arena, &strs, " view_rule: \"%S\"\n", view_rule); - str8_list_push (arena, &strs, str8_lit("}\n")); - str8_list_push (arena, &strs, str8_lit("\n")); - } - } - } - - //- rjf: write breakpoints - { - B32 first = 1; - DF_EntityList bps = df_query_cached_entity_list_with_kind(DF_EntityKind_Breakpoint); - for(DF_EntityNode *n = bps.first; n != 0; n = n->next) - { - DF_Entity *bp = n->entity; - if(bp->cfg_src == source) - { - DF_Entity *file = df_entity_ancestor_from_kind(bp, DF_EntityKind_File); - DF_Entity *symb = df_entity_child_from_kind(bp, DF_EntityKind_EntryPoint); - DF_Entity *cond = df_entity_child_from_kind(bp, DF_EntityKind_Condition); - if(first) - { - first = 0; - str8_list_push(arena, &strs, str8_lit("/// breakpoints ///////////////////////////////////////////////////////////////\n")); - str8_list_push(arena, &strs, str8_lit("\n")); - } - - // rjf: begin - str8_list_push(arena, &strs, str8_lit("breakpoint:\n")); - str8_list_push(arena, &strs, str8_lit("{\n")); - - // rjf: textual breakpoints - if(!df_entity_is_nil(file) && bp->flags & DF_EntityFlag_HasTextPoint) - { - String8 bp_file_path = df_full_path_from_entity(arena, file); - String8 srlized_bp_file_path = path_relative_dst_from_absolute_dst_src(arena, bp_file_path, root_path); - String8 string = push_str8f(arena, " line: (\"%S\":%I64d)\n", srlized_bp_file_path, bp->text_point.line); - str8_list_push(arena, &strs, string); - } - - // rjf: function name breakpoints - else if(!df_entity_is_nil(symb) && symb->name.size != 0) - { - String8 symb_escaped = df_cfg_escaped_from_raw_string(arena, symb->name); - str8_list_pushf(arena, &strs, " symbol: \"%S\"\n", symb_escaped); - } - - // rjf: address breakpoints - else if(bp->flags & DF_EntityFlag_HasVAddr) - { - str8_list_pushf(arena, &strs, " addr: 0x%I64x\n", bp->vaddr); - } - - // rjf: conditions - if(!df_entity_is_nil(cond)) - { - String8 cond_escaped = df_cfg_escaped_from_raw_string(arena, cond->name); - str8_list_pushf(arena, &strs, " condition: \"%S\"\n", cond_escaped); - } - - // rjf: universal options - str8_list_pushf(arena, &strs, " enabled: %i\n", (int)!bp->disabled); - if(bp->name.size != 0) - { - String8 label_escaped = df_cfg_escaped_from_raw_string(arena, bp->name); - str8_list_pushf(arena, &strs, " label: \"%S\"\n", bp->name); - } - if(bp->flags & DF_EntityFlag_HasColor) - { - Vec4F32 hsva = df_hsva_from_entity(bp); - str8_list_pushf(arena, &strs, " hsva: %.2f %.2f %.2f %.2f\n", hsva.x, hsva.y, hsva.z, hsva.w); - } - - // rjf: end - str8_list_push(arena, &strs, str8_lit("}\n\n")); - } - } - } - - //- rjf: write watches - { - B32 first = 1; - DF_EntityList watches = df_query_cached_entity_list_with_kind(DF_EntityKind_Watch); - for(DF_EntityNode *n = watches.first; n != 0; n = n->next) - { - DF_Entity *watch = n->entity; - if(watch->cfg_src == source) - { - if(first) - { - first = 0; - str8_list_push(arena, &strs, str8_lit("/// watches ///////////////////////////////////////////////////////////////////\n")); - str8_list_push(arena, &strs, str8_lit("\n")); - } - Temp scratch = scratch_begin(&arena, 1); - DF_Entity *view_rule_entity = df_entity_child_from_kind(watch, DF_EntityKind_ViewRule); - String8 expr = watch->name; - String8 view_rule = view_rule_entity->name; - String8 expr_escaped = df_cfg_escaped_from_raw_string(arena, expr); - String8 view_rule_escaped = df_cfg_escaped_from_raw_string(arena, view_rule); - str8_list_push (arena, &strs, str8_lit("watch:\n")); - str8_list_push (arena, &strs, str8_lit("{\n")); - str8_list_pushf(arena, &strs, " expression: \"%S\"\n", expr_escaped); - str8_list_pushf(arena, &strs, " view_rule: \"%S\"\n", view_rule_escaped); - if(watch->flags & DF_EntityFlag_HasColor) - { - Vec4F32 hsva = df_hsva_from_entity(watch); - str8_list_pushf(arena, &strs, " hsva: %.2f %.2f %.2f %.2f\n", hsva.x, hsva.y, hsva.z, hsva.w); - } - str8_list_push (arena, &strs, str8_lit("}\n")); - str8_list_push (arena, &strs, str8_lit("\n")); - scratch_end(scratch); - } - } - } - - //- rjf: write watch pins - { - B32 first = 1; - DF_EntityList pins = df_query_cached_entity_list_with_kind(DF_EntityKind_WatchPin); - for(DF_EntityNode *n = pins.first; n != 0; n = n->next) - { - DF_Entity *pin = n->entity; - if(pin->cfg_src == source) - { - if(first) - { - first = 0; - str8_list_push(arena, &strs, str8_lit("/// watch pins ////////////////////////////////////////////////////////////////\n")); - str8_list_push(arena, &strs, str8_lit("\n")); - } - - // rjf: write - str8_list_push(arena, &strs, str8_lit("watch_pin:\n")); - str8_list_push(arena, &strs, str8_lit("{\n")); - String8 expr_escaped = df_cfg_escaped_from_raw_string(arena, pin->name); - str8_list_pushf(arena, &strs, " expression: \"%S\"\n", expr_escaped); - DF_Entity *file = df_entity_ancestor_from_kind(pin, DF_EntityKind_File); - if(pin->flags & DF_EntityFlag_HasTextPoint && !df_entity_is_nil(file)) - { - String8 project_path = root_path; - String8 pin_file_path = df_full_path_from_entity(arena, file); - project_path = path_normalized_from_string(arena, project_path); - pin_file_path = path_normalized_from_string(arena, pin_file_path); - String8 srlized_pin_file_path = path_relative_dst_from_absolute_dst_src(arena, pin_file_path, project_path); - str8_list_pushf(arena, &strs, " line: (\"%S\":%I64d)\n", srlized_pin_file_path, pin->text_point.line); - } - else if(pin->flags & DF_EntityFlag_HasVAddr) - { - str8_list_pushf(arena, &strs, " addr: (0x%I64x)\n", pin->vaddr); - } - if(pin->flags & DF_EntityFlag_HasColor) - { - Vec4F32 hsva = df_hsva_from_entity(pin); - str8_list_pushf(arena, &strs, " hsva: %.2f %.2f %.2f %.2f\n", hsva.x, hsva.y, hsva.z, hsva.w); - } - str8_list_push(arena, &strs, str8_lit("}\n\n")); - } - } - } -#endif - //- rjf: write exception code filters if(source == DF_CfgSrc_Project) { @@ -7813,329 +7517,6 @@ df_core_begin_frame(Arena *arena, DF_CmdList *cmds, F32 dt) } } -#if 0 - //- rjf: apply recent projects - DF_CfgVal *recent_projects = df_cfg_val_from_string(table, str8_lit("recent_project")); - for(DF_CfgNode *rp = recent_projects->first; - rp != &df_g_nil_cfg_node; - rp = rp->next) - { - if(rp->source == src) - { - String8 path_saved = rp->first->string; - String8 path_absolute = path_absolute_dst_from_relative_dst_src(scratch.arena, path_saved, cfg_folder); - DF_Entity *existing = df_entity_from_name_and_kind(path_absolute, DF_EntityKind_RecentProject); - if(df_entity_is_nil(existing)) - { - DF_Entity *rp_ent = df_entity_alloc(df_entity_root(), DF_EntityKind_RecentProject); - df_entity_equip_cfg_src(rp_ent, src); - df_entity_equip_name(rp_ent, path_absolute); - } - } - } - - //- rjf: apply targets - DF_CfgVal *targets = df_cfg_val_from_string(table, str8_lit("target")); - { - B32 cmd_line_target_present = 0; - { - DF_EntityList existing_target_entities = df_query_cached_entity_list_with_kind(DF_EntityKind_Target); - for(DF_EntityNode *n = existing_target_entities.first; n != 0; n = n->next) - { - DF_Entity *target = n->entity; - if(target->cfg_src == DF_CfgSrc_CommandLine && !target->disabled) - { - cmd_line_target_present = 1; - } - } - } - for(DF_CfgNode *target = targets->first; - target != &df_g_nil_cfg_node; - target = target->next) - { - if(target->source == src) - { - DF_CfgNode *label_cfg = df_cfg_node_child_from_string(target, str8_lit("label"), StringMatchFlag_CaseInsensitive); - DF_CfgNode *exe_cfg = df_cfg_node_child_from_string(target, str8_lit("exe"), StringMatchFlag_CaseInsensitive); - if(exe_cfg == &df_g_nil_cfg_node) - { - exe_cfg = df_cfg_node_child_from_string(target, str8_lit("name"), StringMatchFlag_CaseInsensitive); - } - DF_CfgNode *args_cfg = df_cfg_node_child_from_string(target, str8_lit("arguments"), StringMatchFlag_CaseInsensitive); - DF_CfgNode *wdir_cfg = df_cfg_node_child_from_string(target, str8_lit("working_directory"), StringMatchFlag_CaseInsensitive); - DF_CfgNode *entry_cfg = df_cfg_node_child_from_string(target, str8_lit("entry_point"), StringMatchFlag_CaseInsensitive); - DF_CfgNode *active_cfg = df_cfg_node_child_from_string(target, str8_lit("active"), StringMatchFlag_CaseInsensitive); - Vec4F32 hsva = df_hsva_from_cfg_node(target); - U64 is_active_u64 = 0; - if(!cmd_line_target_present) - { - try_u64_from_str8_c_rules(active_cfg->first->string, &is_active_u64); - } - DF_Entity *target__ent = df_entity_alloc(df_entity_root(), DF_EntityKind_Target); - DF_Entity *exe__ent = df_entity_alloc(target__ent, DF_EntityKind_Executable); - DF_Entity *args__ent = df_entity_alloc(target__ent, DF_EntityKind_Arguments); - DF_Entity *path__ent = df_entity_alloc(target__ent, DF_EntityKind_WorkingDirectory); - DF_Entity *entry__ent = df_entity_alloc(target__ent, DF_EntityKind_EntryPoint); - String8 saved_label = label_cfg->first->string; - String8 saved_exe = exe_cfg->first->string; - String8 saved_exe_absolute = path_absolute_dst_from_relative_dst_src(scratch.arena, saved_exe, cfg_folder); - String8 saved_wdir = wdir_cfg->first->string; - String8 saved_wdir_absolute = path_absolute_dst_from_relative_dst_src(scratch.arena, saved_wdir, cfg_folder); - String8 saved_entry_point = entry_cfg->first->string; - String8 saved_label_raw = df_cfg_raw_from_escaped_string(scratch.arena, saved_label); - String8 saved_entry_raw = df_cfg_raw_from_escaped_string(scratch.arena, saved_entry_point); - String8 saved_args_raw = df_cfg_raw_from_escaped_string(scratch.arena, args_cfg->first->string); - if(!is_active_u64) - { - df_entity_equip_disabled(target__ent, 1); - } - df_entity_equip_name(target__ent, saved_label_raw); - df_entity_equip_name(exe__ent, saved_exe_absolute); - df_entity_equip_name(args__ent, saved_args_raw); - df_entity_equip_name(path__ent, saved_wdir_absolute); - df_entity_equip_name(entry__ent, saved_entry_raw); - df_entity_equip_cfg_src(target__ent, src); - if(!memory_is_zero(&hsva, sizeof(hsva))) - { - df_entity_equip_color_hsva(target__ent, hsva); - } - } - } - } - - //- rjf: apply path maps - DF_CfgVal *path_maps = df_cfg_val_from_string(table, str8_lit("file_path_map")); - for(DF_CfgNode *map = path_maps->first; - map != &df_g_nil_cfg_node; - map = map->next) - { - if(map->source == src) - { - DF_CfgNode *src_cfg = df_cfg_node_child_from_string(map, str8_lit("source_path"), StringMatchFlag_CaseInsensitive); - DF_CfgNode *dst_cfg = df_cfg_node_child_from_string(map, str8_lit("dest_path"), StringMatchFlag_CaseInsensitive); - String8 src_path = src_cfg->first->string; - String8 dst_path = dst_cfg->first->string; - DF_Entity *link_loc_entity = df_entity_from_path(src_path, DF_EntityFromPathFlag_OpenAsNeeded|DF_EntityFromPathFlag_OpenMissing); - DF_Entity *link_entity = df_entity_alloc(link_loc_entity->parent, DF_EntityKind_OverrideFileLink); - DF_Entity *link_dst_entity = df_entity_from_path(dst_path, DF_EntityFromPathFlag_OpenAsNeeded|DF_EntityFromPathFlag_OpenMissing); - df_entity_equip_name(link_entity, str8_skip_last_slash(src_path)); - df_entity_equip_entity_handle(link_entity, df_handle_from_entity(link_dst_entity)); - df_entity_equip_cfg_src(link_entity, src); - } - } - - //- rjf: apply auto view rules - DF_CfgVal *avrs = df_cfg_val_from_string(table, str8_lit("auto_view_rule")); - for(DF_CfgNode *map = avrs->first; - map != &df_g_nil_cfg_node; - map = map->next) - { - if(map->source == src) - { - DF_CfgNode *src_cfg = df_cfg_node_child_from_string(map, str8_lit("type"), StringMatchFlag_CaseInsensitive); - DF_CfgNode *dst_cfg = df_cfg_node_child_from_string(map, str8_lit("view_rule"), StringMatchFlag_CaseInsensitive); - String8 type = src_cfg->first->string; - String8 view_rule = dst_cfg->first->string; - type = df_cfg_raw_from_escaped_string(scratch.arena, type); - view_rule = df_cfg_raw_from_escaped_string(scratch.arena, view_rule); - DF_Entity *map_entity = df_entity_alloc(df_entity_root(), DF_EntityKind_AutoViewRule); - DF_Entity *src_entity = df_entity_alloc(map_entity, DF_EntityKind_Source); - DF_Entity *dst_entity = df_entity_alloc(map_entity, DF_EntityKind_Dest); - df_entity_equip_name(src_entity, type); - df_entity_equip_name(dst_entity, view_rule); - df_entity_equip_cfg_src(map_entity, src); - } - } - - //- rjf: apply breakpoints - DF_CfgVal *bps = df_cfg_val_from_string(table, str8_lit("breakpoint")); - for(DF_CfgNode *bp = bps->first; - bp != &df_g_nil_cfg_node; - bp = bp->next) - { - if(bp->source != src) - { - continue; - } - - // rjf: get metadata - Vec4F32 hsva = df_hsva_from_cfg_node(bp); - - // rjf: get nodes encoding location info - B32 is_enabled = 1; - DF_CfgNode *line_cfg = &df_g_nil_cfg_node; - DF_CfgNode *addr_cfg = &df_g_nil_cfg_node; - DF_CfgNode *symb_cfg = &df_g_nil_cfg_node; - DF_CfgNode *labl_cfg = &df_g_nil_cfg_node; - for(DF_CfgNode *child = bp->first; child != &df_g_nil_cfg_node; child = child->next) - { - if(child->flags & DF_CfgNodeFlag_Identifier && str8_match(child->string, str8_lit("line"), StringMatchFlag_CaseInsensitive)) - { - line_cfg = child; - } - if(child->flags & DF_CfgNodeFlag_Identifier && str8_match(child->string, str8_lit("addr"), StringMatchFlag_CaseInsensitive)) - { - addr_cfg = child; - } - if(child->flags & DF_CfgNodeFlag_Identifier && str8_match(child->string, str8_lit("symbol"), StringMatchFlag_CaseInsensitive)) - { - symb_cfg = child; - } - else if(child->flags & DF_CfgNodeFlag_Identifier && str8_match(child->string, str8_lit("label"), StringMatchFlag_CaseInsensitive)) - { - labl_cfg = child; - } - else if(child->flags & DF_CfgNodeFlag_Identifier && str8_match(child->string, str8_lit("enabled"), StringMatchFlag_CaseInsensitive)) - { - U64 is_enabled_u64 = 0; - try_u64_from_str8_c_rules(child->first->string, &is_enabled_u64); - is_enabled = (B32)is_enabled_u64; - } - } - - // rjf: extract textual location bp info - DF_Entity *bp_parent_ent = df_entity_root(); - TxtPt pt = {0}; - if(line_cfg != &df_g_nil_cfg_node) - { - DF_CfgNode *file = line_cfg->first; - DF_CfgNode *line = file->first; - U64 line_num = 0; - if(try_u64_from_str8_c_rules(line->string, &line_num)) - { - String8 saved_path = file->string; - String8 saved_path_absolute = path_absolute_dst_from_relative_dst_src(scratch.arena, saved_path, cfg_folder); - bp_parent_ent = df_entity_from_path(saved_path_absolute, DF_EntityFromPathFlag_All); - pt = txt_pt((S64)line_num, 1); - } - } - - // rjf: get condition info - DF_CfgNode *cond_cfg = df_cfg_node_child_from_string(bp, str8_lit("condition"), StringMatchFlag_CaseInsensitive); - - // rjf: build entity - { - DF_Entity *bp_ent = df_entity_alloc(bp_parent_ent, DF_EntityKind_Breakpoint); - df_entity_equip_disabled(bp_ent, !is_enabled); - df_entity_equip_cfg_src(bp_ent, src); - if(pt.line != 0) - { - df_entity_equip_txt_pt(bp_ent, pt); - } - if(addr_cfg != &df_g_nil_cfg_node) - { - U64 u64 = 0; - try_u64_from_str8_c_rules(addr_cfg->first->string, &u64); - df_entity_equip_vaddr(bp_ent, u64); - } - if(symb_cfg != &df_g_nil_cfg_node) - { - String8 symb_raw = df_cfg_raw_from_escaped_string(scratch.arena, symb_cfg->first->string); - DF_Entity *symb = df_entity_alloc(bp_ent, DF_EntityKind_EntryPoint); - df_entity_equip_name(symb, symb_raw); - } - if(labl_cfg->string.size != 0) - { - String8 label_raw = df_cfg_raw_from_escaped_string(scratch.arena, labl_cfg->string); - df_entity_equip_name(bp_ent, label_raw); - } - if(!memory_is_zero(&hsva, sizeof(hsva))) - { - df_entity_equip_color_hsva(bp_ent, hsva); - } - if(cond_cfg->first->string.size != 0) - { - String8 cond_raw = df_cfg_raw_from_escaped_string(scratch.arena, cond_cfg->first->string); - DF_Entity *cond = df_entity_alloc(bp_ent, DF_EntityKind_Condition); - df_entity_equip_name(cond, cond_raw); - } - } - } - - //- rjf: apply watches - DF_CfgVal *watches = df_cfg_val_from_string(table, str8_lit("watch")); - for(DF_CfgNode *watch = watches->first; - watch != &df_g_nil_cfg_node; - watch = watch->next) - { - if(watch->source != src) - { - continue; - } - Vec4F32 hsva = df_hsva_from_cfg_node(watch); - String8 expr_escaped = df_string_from_cfg_node_key(watch, str8_lit("expression"), StringMatchFlag_CaseInsensitive); - String8 view_rule_escaped = df_string_from_cfg_node_key(watch, str8_lit("view_rule"), StringMatchFlag_CaseInsensitive); - String8 expr = df_cfg_raw_from_escaped_string(scratch.arena, expr_escaped); - String8 view_rule = df_cfg_raw_from_escaped_string(scratch.arena, view_rule_escaped); - DF_Entity *entity = df_entity_alloc(df_entity_root(), DF_EntityKind_Watch); - df_entity_equip_cfg_src(entity, src); - df_entity_equip_name(entity, expr); - if(!memory_is_zero(&hsva, sizeof(hsva))) - { - df_entity_equip_color_hsva(entity, hsva); - } - if(view_rule.size != 0) - { - DF_Entity *view_rule_entity = df_entity_alloc(entity, DF_EntityKind_ViewRule); - df_entity_equip_name(view_rule_entity, view_rule); - } - } - - //- rjf: apply watch pins - DF_CfgVal *pins = df_cfg_val_from_string(table, str8_lit("watch_pin")); - for(DF_CfgNode *pin = pins->first; - pin != &df_g_nil_cfg_node; - pin = pin->next) - { - if(pin->source != src) - { - continue; - } - Vec4F32 hsva = df_hsva_from_cfg_node(pin); - String8 string = df_string_from_cfg_node_key(pin, str8_lit("expression"), StringMatchFlag_CaseInsensitive); - String8 string_raw = df_cfg_raw_from_escaped_string(scratch.arena, string); - DF_CfgNode *line_cfg = df_cfg_node_child_from_string(pin, str8_lit("line"), StringMatchFlag_CaseInsensitive); - DF_CfgNode *addr_cfg = df_cfg_node_child_from_string(pin, str8_lit("addr"), StringMatchFlag_CaseInsensitive); - DF_Entity *pin_parent_ent = df_entity_root(); - TxtPt pt = {0}; - if(line_cfg != &df_g_nil_cfg_node) - { - String8 saved_path = line_cfg->first->string; - String8 line_num_string = line_cfg->first->first->string; - String8 saved_path_absolute = path_absolute_dst_from_relative_dst_src(scratch.arena, saved_path, cfg_folder); - pin_parent_ent = df_entity_from_path(saved_path_absolute, DF_EntityFromPathFlag_All); - U64 line_num = 0; - if(try_u64_from_str8_c_rules(line_num_string, &line_num)) - { - if(line_num != 0) - { - pt = txt_pt((S64)line_num, 1); - } - } - } - U64 vaddr = 0; - if(addr_cfg != &df_g_nil_cfg_node) - { - try_u64_from_str8_c_rules(addr_cfg->first->string, &vaddr); - } - DF_Entity *pin_ent = df_entity_alloc(pin_parent_ent, DF_EntityKind_WatchPin); - df_entity_equip_cfg_src(pin_ent, src); - df_entity_equip_name(pin_ent, string_raw); - if(!memory_is_zero(&hsva, sizeof(hsva))) - { - df_entity_equip_color_hsva(pin_ent, hsva); - } - if(pt.line != 0) - { - df_entity_equip_txt_pt(pin_ent, pt); - } - if(vaddr != 0) - { - df_entity_equip_vaddr(pin_ent, vaddr); - } - } -#endif - //- 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;