From bb9e5057d7531f758c2eade232d3d46a8a6d208f Mon Sep 17 00:00:00 2001 From: Ryan Fleury Date: Wed, 14 Aug 2024 15:08:48 -0700 Subject: [PATCH] fix go-to-location path to adjust for no file entities; write single deserialization path for all entities, instead of handwritten special casedo nes --- src/base/base_strings.c | 2 +- src/df/core/df_core.c | 452 +++++++++++---------------- src/df/core/df_core.h | 7 +- src/df/core/df_core.mdesk | 79 ++--- src/df/core/generated/df_core.meta.c | 114 ++++--- src/df/core/generated/df_core.meta.h | 15 +- src/df/gfx/df_gfx.c | 36 +-- src/df/gfx/df_views.c | 9 +- src/raddbg/raddbg.h | 2 +- 9 files changed, 313 insertions(+), 403 deletions(-) diff --git a/src/base/base_strings.c b/src/base/base_strings.c index 5bf3776e..74b3a6ee 100644 --- a/src/base/base_strings.c +++ b/src/base/base_strings.c @@ -1593,7 +1593,7 @@ indented_from_string(Arena *arena, String8 string) { str8_list_pushf(scratch.arena, &indented_strings, "%.*s%S\n", (int)depth*2, indentation_bytes, line); } - if(line.size == 0 && indented_strings.node_count != 0) + if(line.size == 0 && indented_strings.node_count != 0 && off < string.size) { str8_list_pushf(scratch.arena, &indented_strings, "\n"); } diff --git a/src/df/core/df_core.c b/src/df/core/df_core.c index 85eede1b..05ecc071 100644 --- a/src/df/core/df_core.c +++ b/src/df/core/df_core.c @@ -1219,8 +1219,7 @@ df_full_path_from_entity(Arena *arena, DF_Entity *entity) String8List strs = {0}; for(DF_Entity *e = entity; !df_entity_is_nil(e); e = e->parent) { - if(e->kind == DF_EntityKind_File || - e->kind == DF_EntityKind_OverrideFileLink) + if(e->kind == DF_EntityKind_File) { str8_list_push_front(scratch.arena, &strs, e->name); } @@ -1994,11 +1993,6 @@ df_entity_from_path(String8 path, DF_EntityFromPathFlags flags) { next_parent = child; } - if(name_matches && child->kind == DF_EntityKind_OverrideFileLink) - { - next_parent = df_entity_from_handle(child->entity_handle); - break; - } } // rjf: no next -> allocate one @@ -2048,103 +2042,6 @@ df_entity_from_path(String8 path, DF_EntityFromPathFlags flags) return result; } -internal DF_EntityList -df_possible_overrides_from_entity(Arena *arena, DF_Entity *entity) -{ - Temp scratch = scratch_begin(&arena, 1); - StringMatchFlags path_match_flags = path_match_flags_from_os(operating_system_from_context()); - DF_EntityList result = {0}; - df_entity_list_push(arena, &result, entity); - { - DF_EntityList links = df_query_cached_entity_list_with_kind(DF_EntityKind_OverrideFileLink); - String8List p_chain_names_to_entity = {0}; - for(DF_Entity *p = entity; - !df_entity_is_nil(p); - str8_list_push_front(scratch.arena, &p_chain_names_to_entity, p->name), p = p->parent) - { - // rjf: gather all links which would redirect to this chain - DF_EntityList links_going_to_p = {0}; - for(DF_EntityNode *n = links.first; n != 0; n = n->next) - { - DF_Entity *link_src = n->entity; - DF_Entity *link_dst = df_entity_from_handle(link_src->entity_handle); - if(link_dst == p) - { - df_entity_list_push(scratch.arena, &links_going_to_p, link_src); - } - } - - // rjf: for each link, gather possible overrides - for(DF_EntityNode *n = links_going_to_p.first; n != 0; n = n->next) - { - DF_Entity *link_src = n->entity; - DF_Entity *link_src_parent = link_src->parent; - - // rjf: find the sibling that this link overrides - DF_Entity *link_overridden_sibling = &df_g_nil_entity; - for(DF_Entity *child = link_src_parent->first; - !df_entity_is_nil(child); - child = child->next) - { - B32 name_matches = str8_match(child->name, link_src->name, path_match_flags); - if(name_matches && child->kind == DF_EntityKind_File) - { - link_overridden_sibling = child; - break; - } - } - - // rjf: descend tree if needed, by the chain names, find override - DF_Entity *override = link_overridden_sibling; - if(!df_entity_is_nil(override)) - { - DF_Entity *parent = override; - for(String8Node *path_part_n = p_chain_names_to_entity.first; - path_part_n != 0; - path_part_n = path_part_n->next) - { - // rjf: find next child - DF_Entity *next_parent = &df_g_nil_entity; - for(DF_Entity *child = parent->first; !df_entity_is_nil(child); child = child->next) - { - B32 name_matches = str8_match(child->name, path_part_n->string, path_match_flags); - if(name_matches && child->kind == DF_EntityKind_File) - { - next_parent = child; - break; - } - } - - // rjf: no next -> allocate one - if(df_entity_is_nil(next_parent)) - { - next_parent = df_entity_alloc(parent, DF_EntityKind_File); - df_entity_equip_name(next_parent, path_part_n->string); - String8 path = df_full_path_from_entity(scratch.arena, next_parent); - FileProperties file_properties = os_properties_from_file_path(path); - next_parent->timestamp = file_properties.modified; - next_parent->flags |= DF_EntityFlag_IsFolder * !!(file_properties.flags & FilePropertyFlag_IsFolder); - next_parent->flags |= DF_EntityFlag_IsMissing * !!(file_properties.created == 0); - } - - // rjf: next parent -> follow it - parent = next_parent; - } - override = parent; - } - - // rjf: valid override -> push - if(!df_entity_is_nil(override)) - { - df_entity_list_push(arena, &result, override); - } - } - } - } - scratch_end(scratch); - return result; -} - //- rjf: file path map override lookups internal String8List @@ -2168,7 +2065,7 @@ df_possible_overrides_from_file_path(Arena *arena, String8 file_path) PathStyle pth_style = PathStyle_Relative; String8List pth_parts = path_normalized_list_from_string(scratch.arena, file_path, &pth_style); { - DF_EntityList links = df_query_cached_entity_list_with_kind(DF_EntityKind_OverrideFileLink); + DF_EntityList links = df_query_cached_entity_list_with_kind(DF_EntityKind_FilePathMap); for(DF_EntityNode *n = links.first; n != 0; n = n->next) { //- rjf: unpack link @@ -3430,107 +3327,6 @@ df_lines_from_file_path_line_num(Arena *arena, String8 file_path, S64 line_num) return list; } -//- rjf: src -> voff lookups - -internal DF_TextLineSrc2DasmInfoListArray -df_text_line_src2dasm_info_list_array_from_src_line_range(Arena *arena, DF_Entity *file, Rng1S64 line_num_range) -{ - DF_TextLineSrc2DasmInfoListArray src2dasm_array = {0}; - { - src2dasm_array.count = dim_1s64(line_num_range)+1; - src2dasm_array.v = push_array(arena, DF_TextLineSrc2DasmInfoList, src2dasm_array.count); - } - Temp scratch = scratch_begin(&arena, 1); - DI_Scope *scope = di_scope_open(); - DI_KeyList dbgi_keys = df_push_active_dbgi_key_list(scratch.arena); - DF_EntityList overrides = df_possible_overrides_from_entity(scratch.arena, file); - for(DF_EntityNode *override_n = overrides.first; - override_n != 0; - override_n = override_n->next) - { - DF_Entity *override = override_n->entity; - String8 file_path = df_full_path_from_entity(scratch.arena, override); - String8 file_path_normalized = lower_from_str8(scratch.arena, file_path); - for(DI_KeyNode *dbgi_key_n = dbgi_keys.first; - dbgi_key_n != 0; - dbgi_key_n = dbgi_key_n->next) - { - // rjf: binary -> rdi - DI_Key key = dbgi_key_n->v; - RDI_Parsed *rdi = di_rdi_from_key(scope, &key, 0); - - // rjf: file_path_normalized * rdi -> src_id - B32 good_src_id = 0; - U32 src_id = 0; - if(rdi != &di_rdi_parsed_nil) - { - RDI_NameMap *mapptr = rdi_element_from_name_idx(rdi, NameMaps, RDI_NameMapKind_NormalSourcePaths); - RDI_ParsedNameMap map = {0}; - rdi_parsed_from_name_map(rdi, mapptr, &map); - RDI_NameMapNode *node = rdi_name_map_lookup(rdi, &map, file_path_normalized.str, file_path_normalized.size); - if(node != 0) - { - U32 id_count = 0; - U32 *ids = rdi_matches_from_map_node(rdi, node, &id_count); - if(id_count > 0) - { - good_src_id = 1; - src_id = ids[0]; - } - } - } - - // rjf: good src-id -> look up line info for visible range - if(good_src_id) - { - RDI_SourceFile *src = rdi_element_from_name_idx(rdi, SourceFiles, src_id); - RDI_SourceLineMap *src_line_map = rdi_element_from_name_idx(rdi, SourceLineMaps, src->source_line_map_idx); - RDI_ParsedSourceLineMap line_map = {0}; - rdi_parsed_from_source_line_map(rdi, src_line_map, &line_map); - U64 line_idx = 0; - for(S64 line_num = line_num_range.min; - line_num <= line_num_range.max; - line_num += 1, line_idx += 1) - { - DF_TextLineSrc2DasmInfoList *src2dasm_list = &src2dasm_array.v[line_idx]; - U32 voff_count = 0; - U64 *voffs = rdi_line_voffs_from_num(&line_map, u32_from_u64_saturate((U64)line_num), &voff_count); - for(U64 idx = 0; idx < voff_count; idx += 1) - { - U64 base_voff = voffs[idx]; - U64 unit_idx = rdi_vmap_idx_from_section_kind_voff(rdi, RDI_SectionKind_UnitVMap, base_voff); - RDI_Unit *unit = rdi_element_from_name_idx(rdi, Units, unit_idx); - RDI_LineTable *line_table = rdi_element_from_name_idx(rdi, LineTables, unit->line_table_idx); - RDI_ParsedLineTable unit_line_info = {0}; - rdi_parsed_from_line_table(rdi, line_table, &unit_line_info); - U64 line_info_idx = rdi_line_info_idx_from_voff(&unit_line_info, base_voff); - if(unit_line_info.voffs != 0) - { - Rng1U64 range = r1u64(base_voff, unit_line_info.voffs[line_info_idx+1]); - S64 actual_line = (S64)unit_line_info.lines[line_info_idx].line_num; - DF_TextLineSrc2DasmInfoNode *src2dasm_n = push_array(arena, DF_TextLineSrc2DasmInfoNode, 1); - src2dasm_n->v.voff_range = range; - src2dasm_n->v.remap_line = (S64)actual_line; - src2dasm_n->v.dbgi_key = key; - SLLQueuePush(src2dasm_list->first, src2dasm_list->last, src2dasm_n); - src2dasm_list->count += 1; - } - } - } - } - - // rjf: good src id -> push to relevant dbgi keys - if(good_src_id) - { - di_key_list_push(arena, &src2dasm_array.dbgi_keys, &key); - } - } - } - di_scope_close(scope); - scratch_end(scratch); - return src2dasm_array; -} - //////////////////////////////// //~ rjf: Process/Thread/Module Info Lookups @@ -5570,20 +5366,15 @@ df_cfg_strings_from_core(Arena *arena, String8 root_path, DF_CfgSrc source) //- rjf: write all entities { - struct {DF_EntityKind kind; String8 title; } kinds_to_write[] = - { - {DF_EntityKind_RecentProject, str8_lit_comp("recent projects")}, - {DF_EntityKind_Target, str8_lit_comp("targets")}, - {DF_EntityKind_OverrideFileLink,str8_lit_comp("file path maps")}, - {DF_EntityKind_AutoViewRule, str8_lit_comp("auto view rules")}, - {DF_EntityKind_Breakpoint, str8_lit_comp("breakpoints")}, - {DF_EntityKind_Watch, str8_lit_comp("watch")}, - {DF_EntityKind_WatchPin, str8_lit_comp("watch_pin")}, - }; - for(U64 idx = 0; idx < ArrayCount(kinds_to_write); idx += 1) + for(EachEnumVal(DF_EntityKind, k)) { + DF_EntityKindFlags k_flags = df_g_entity_kind_flags_table[k]; + if(!(k_flags & DF_EntityKindFlag_IsSerializedToConfig)) + { + continue; + } B32 first = 1; - DF_EntityList entities = df_query_cached_entity_list_with_kind(kinds_to_write[idx].kind); + DF_EntityList entities = df_query_cached_entity_list_with_kind(k); for(DF_EntityNode *n = entities.first; n != 0; n = n->next) { DF_Entity *entity = n->entity; @@ -5594,9 +5385,10 @@ df_cfg_strings_from_core(Arena *arena, String8 root_path, DF_CfgSrc source) if(first) { first = 0; + String8 title_name = df_g_entity_kind_name_lower_plural_table[k]; str8_list_pushf(arena, &strs, "/// %S %.*s\n\n", - kinds_to_write[idx].title, - (int)Max(0, 79 - ((S64)kinds_to_write[idx].title.size + 5)), + title_name, + (int)Max(0, 79 - (title_name.size + 5)), slashes); } DF_EntityRec rec = {0}; @@ -5647,7 +5439,7 @@ df_cfg_strings_from_core(Arena *arena, String8 root_path, DF_CfgSrc source) opened_brace = 1; // rjf: write entity title - str8_list_pushf(arena, &strs, "WIP_%S:\n{\n", df_g_entity_kind_name_lower_table[e->kind]); + str8_list_pushf(arena, &strs, "%S:\n{\n", df_g_entity_kind_name_lower_table[e->kind]); // rjf: write this entity's info if(entity_name_escaped.size != 0) @@ -5665,13 +5457,23 @@ df_cfg_strings_from_core(Arena *arena, String8 root_path, DF_CfgSrc source) U32 rgba_hex = u32_from_rgba(rgba); str8_list_pushf(arena, &strs, "color: 0x%x\n", rgba_hex); } + if(e->flags & DF_EntityFlag_HasTextPoint) + { + str8_list_pushf(arena, &strs, "line: %I64d\n", e->text_point.line); + } + if(e->flags & DF_EntityFlag_HasVAddr) + { + str8_list_pushf(arena, &strs, "vaddr: (0x%I64x)\n", e->vaddr); + } }break; //- rjf: single-line fast-paths case EntityInfoFlag_HasName: - {str8_list_pushf(arena, &strs, "WIP_%S: \"%S\"\n", df_g_entity_kind_name_lower_table[e->kind], entity_name_escaped);}break; + {str8_list_pushf(arena, &strs, "%S: \"%S\"\n", df_g_entity_kind_name_lower_table[e->kind], entity_name_escaped);}break; case EntityInfoFlag_HasName|EntityInfoFlag_HasTxtPt: - {str8_list_pushf(arena, &strs, "WIP_%S: (\"%S\":%I64d)\n", df_g_entity_kind_name_lower_table[e->kind], entity_name_escaped, e->text_point.line);}break; + {str8_list_pushf(arena, &strs, "%S: (\"%S\":%I64d)\n", df_g_entity_kind_name_lower_table[e->kind], entity_name_escaped, e->text_point.line);}break; + case EntityInfoFlag_HasVAddr: + {str8_list_pushf(arena, &strs, "%S: (0x%I64x)\n", df_g_entity_kind_name_lower_table[e->kind], e->vaddr);}break; //- rjf: empty case 0: @@ -5704,6 +5506,7 @@ df_cfg_strings_from_core(Arena *arena, String8 root_path, DF_CfgSrc source) } } +#if 0 //- rjf: write recent projects { B32 first = 1; @@ -5997,6 +5800,7 @@ df_cfg_strings_from_core(Arena *arena, String8 root_path, DF_CfgSrc source) } } } +#endif //- rjf: write exception code filters if(source == DF_CfgSrc_Project) @@ -7828,7 +7632,16 @@ df_core_begin_frame(Arena *arena, DF_CmdList *cmds, F32 dt) //- rjf: keep track of recent projects if(src == DF_CfgSrc_Project) { - DF_Entity *recent_project = df_entity_from_name_and_kind(cfg_path, DF_EntityKind_RecentProject); + DF_EntityList recent_projects = df_query_cached_entity_list_with_kind(DF_EntityKind_RecentProject); + DF_Entity *recent_project = &df_g_nil_entity; + for(DF_EntityNode *n = recent_projects.first; n != 0; n = n->next) + { + if(path_match_normalized(cfg_path, n->entity->name)) + { + recent_project = n->entity; + break; + } + } if(df_entity_is_nil(recent_project)) { recent_project = df_entity_alloc(df_entity_root(), DF_EntityKind_RecentProject); @@ -7837,58 +7650,150 @@ df_core_begin_frame(Arena *arena, DF_CmdList *cmds, F32 dt) } } - //- rjf: eliminate all existing entities + //- rjf: eliminate all existing entities which are derived from config { - DF_EntityList rps = df_query_cached_entity_list_with_kind(DF_EntityKind_RecentProject); - for(DF_EntityNode *n = rps.first; n != 0; n = n->next) + for(EachEnumVal(DF_EntityKind, k)) { - if(n->entity->cfg_src == src) + DF_EntityKindFlags k_flags = df_g_entity_kind_flags_table[k]; + if(k_flags & DF_EntityKindFlag_IsSerializedToConfig) { - df_entity_mark_for_deletion(n->entity); - } - } - DF_EntityList targets = df_query_cached_entity_list_with_kind(DF_EntityKind_Target); - for(DF_EntityNode *n = targets.first; n != 0; n = n->next) - { - if(n->entity->cfg_src == src) - { - df_entity_mark_for_deletion(n->entity); - } - } - DF_EntityList bps = df_query_cached_entity_list_with_kind(DF_EntityKind_Breakpoint); - for(DF_EntityNode *n = bps.first; n != 0; n = n->next) - { - if(n->entity->cfg_src == src) - { - df_entity_mark_for_deletion(n->entity); - } - } - DF_EntityList watches = df_query_cached_entity_list_with_kind(DF_EntityKind_Watch); - for(DF_EntityNode *n = watches.first; n != 0; n = n->next) - { - if(n->entity->cfg_src == src) - { - df_entity_mark_for_deletion(n->entity); - } - } - DF_EntityList pins = df_query_cached_entity_list_with_kind(DF_EntityKind_WatchPin); - for(DF_EntityNode *n = pins.first; n != 0; n = n->next) - { - if(n->entity->cfg_src == src) - { - df_entity_mark_for_deletion(n->entity); - } - } - DF_EntityList links = df_query_cached_entity_list_with_kind(DF_EntityKind_OverrideFileLink); - for(DF_EntityNode *n = links.first; n != 0; n = n->next) - { - if(n->entity->cfg_src == src) - { - df_entity_mark_for_deletion(n->entity); + DF_EntityList entities = df_query_cached_entity_list_with_kind(k); + for(DF_EntityNode *n = entities.first; n != 0; n = n->next) + { + if(n->entity->cfg_src == src) + { + df_entity_mark_for_deletion(n->entity); + } + } } } } + //- rjf: apply all entities + { + for(EachEnumVal(DF_EntityKind, k)) + { + DF_EntityKindFlags k_flags = df_g_entity_kind_flags_table[k]; + 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) + { + if(k_cfg->source != src) + { + continue; + } + DF_Entity *entity = df_entity_alloc(df_entity_root(), k); + df_entity_equip_cfg_src(entity, k_cfg->source); + + // rjf: iterate config tree + typedef struct Task Task; + struct Task + { + Task *next; + DF_Entity *entity; + DF_CfgNode *n; + }; + Task start_task = {0, entity, k_cfg}; + 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) + { + // rjf: standalone string literals under an entity -> name + if(child->flags & DF_CfgNodeFlag_StringLiteral && child->first == &df_g_nil_cfg_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) + { + string = path_absolute_dst_from_relative_dst_src(scratch.arena, string, cfg_folder); + } + df_entity_equip_name(t->entity, string); + } + + // 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) + { + 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) + { + string = path_absolute_dst_from_relative_dst_src(scratch.arena, string, cfg_folder); + } + df_entity_equip_name(t->entity, string); + S64 line = 0; + try_s64_from_str8_c_rules(child->first->string, &line); + TxtPt pt = txt_pt(line, 1); + df_entity_equip_txt_pt(t->entity, pt); + } + + // 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)) + { + U64 vaddr = 0; + try_u64_from_str8_c_rules(child->string, &vaddr); + df_entity_equip_vaddr(t->entity, vaddr); + } + + // rjf: specifically named entity equipment + if(str8_match(child->string, str8_lit("name"), StringMatchFlag_CaseInsensitive) && child->first != &df_g_nil_cfg_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) + { + string = path_absolute_dst_from_relative_dst_src(scratch.arena, string, cfg_folder); + } + df_entity_equip_name(t->entity, string); + } + if(str8_match(child->string, str8_lit("disabled"), StringMatchFlag_CaseInsensitive) && child->first != &df_g_nil_cfg_node) + { + df_entity_equip_disabled(t->entity, str8_match(child->first->string, str8_lit("1"), 0)); + } + if(str8_match(child->string, str8_lit("color"), StringMatchFlag_CaseInsensitive) && child->first != &df_g_nil_cfg_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) + { + S64 line = 0; + try_s64_from_str8_c_rules(child->first->string, &line); + TxtPt pt = txt_pt(line, 1); + df_entity_equip_txt_pt(t->entity, pt); + } + if(str8_match(child->string, str8_lit("vaddr"), StringMatchFlag_CaseInsensitive) && child->first != &df_g_nil_cfg_node) + { + U64 vaddr = 0; + try_u64_from_str8_c_rules(child->first->string, &vaddr); + df_entity_equip_vaddr(t->entity, vaddr); + } + + // rjf: sub-entity -> create new task + DF_EntityKind sub_entity_kind = DF_EntityKind_Nil; + for(EachEnumVal(DF_EntityKind, k2)) + { + if(str8_match(child->string, df_g_entity_kind_name_lower_table[k2], StringMatchFlag_CaseInsensitive)) + { + Task *task = push_array(scratch.arena, Task, 1); + task->next = t->next; + task->entity = df_entity_alloc(t->entity, k2); + task->n = child; + t->next = task; + break; + } + } + } + } + } + } + } + } + +#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; @@ -8209,6 +8114,7 @@ df_core_begin_frame(Arena *arena, DF_CmdList *cmds, F32 dt) 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")); @@ -8296,7 +8202,7 @@ df_core_begin_frame(Arena *arena, DF_CmdList *cmds, F32 dt) DF_Entity *map_parent = (params.file_path.size != 0) ? df_entity_from_path(path_folder, DF_EntityFromPathFlag_OpenAsNeeded|DF_EntityFromPathFlag_OpenMissing) : df_entity_root(); if(df_entity_is_nil(map)) { - map = df_entity_alloc(map_parent, DF_EntityKind_OverrideFileLink); + map = df_entity_alloc(map_parent, DF_EntityKind_FilePathMap); } else { @@ -8308,7 +8214,7 @@ df_core_begin_frame(Arena *arena, DF_CmdList *cmds, F32 dt) { if(df_entity_is_nil(map)) { - map = df_entity_alloc(df_entity_root(), DF_EntityKind_OverrideFileLink); + map = df_entity_alloc(df_entity_root(), DF_EntityKind_FilePathMap); } DF_Entity *map_dst_entity = &df_g_nil_entity; if(params.file_path.size != 0) @@ -8370,10 +8276,10 @@ df_core_begin_frame(Arena *arena, DF_CmdList *cmds, F32 dt) //- rjf: override first different if(!df_entity_is_nil(first_diff_src) && !df_entity_is_nil(first_diff_dst)) { - DF_Entity *link = df_entity_child_from_name_and_kind(first_diff_src->parent, first_diff_src->name, DF_EntityKind_OverrideFileLink); + DF_Entity *link = df_entity_child_from_name_and_kind(first_diff_src->parent, first_diff_src->name, DF_EntityKind_FilePathMap); if(df_entity_is_nil(link)) { - link = df_entity_alloc(first_diff_src->parent, DF_EntityKind_OverrideFileLink); + link = df_entity_alloc(first_diff_src->parent, DF_EntityKind_FilePathMap); df_entity_equip_name(link, first_diff_src->name); } df_entity_equip_entity_handle(link, df_handle_from_entity(first_diff_dst)); diff --git a/src/df/core/df_core.h b/src/df/core/df_core.h index f15b7c6a..c54d057d 100644 --- a/src/df/core/df_core.h +++ b/src/df/core/df_core.h @@ -99,6 +99,9 @@ enum //- rjf: lifetime categorization DF_EntityKindFlag_UserDefinedLifetime = (1<<17), + + //- rjf: serialization + DF_EntityKindFlag_IsSerializedToConfig = (1<<18), }; //////////////////////////////// @@ -1460,7 +1463,6 @@ internal void df_entity_equip_namef(DF_Entity *entity, char *fmt, ...); //- rjf: opening folders/files & maintaining the entity model of the filesystem internal DF_Entity *df_entity_from_path(String8 path, DF_EntityFromPathFlags flags); -internal DF_EntityList df_possible_overrides_from_entity(Arena *arena, DF_Entity *entity); //- rjf: file path map override lookups internal String8List df_possible_overrides_from_file_path(Arena *arena, String8 file_path); @@ -1533,9 +1535,6 @@ internal DF_LineList df_lines_from_dbgi_key_voff(Arena *arena, DI_Key *dbgi_key, internal DF_LineListArray df_lines_array_from_file_path_line_range(Arena *arena, String8 file_path, Rng1S64 line_num_range); internal DF_LineList df_lines_from_file_path_line_num(Arena *arena, String8 file_path, S64 line_num); -//- rjf: src -> voff lookups -internal DF_TextLineSrc2DasmInfoListArray df_text_line_src2dasm_info_list_array_from_src_line_range(Arena *arena, DF_Entity *file, Rng1S64 line_num_range); - //////////////////////////////// //~ rjf: Process/Thread/Module Info Lookups diff --git a/src/df/core/df_core.mdesk b/src/df/core/df_core.mdesk index 59cb3e87..d9088fb8 100644 --- a/src/df/core/df_core.mdesk +++ b/src/df/core/df_core.mdesk @@ -16,71 +16,69 @@ DF_CfgSrcTable: //////////////////////////////// //~ rjf: Entity Kind Tables -@table(name name_lower op_delete op_freeze op_edit op_rename op_enable op_cond op_dup lf_mut_user_cfg tr_mut_user_cfg lf_mut_prof_cfg tr_mut_prof_cfg lf_mut_halt lf_mut_dbg tr_mut_halt tr_mut_dbg name_is_code name_is_path user_lifetime name_label icon_kind display_string) -// | | -// | __________________________________________________________________________________________________________________________________________________________________________________/ -// | / -// operations________ mutation cascading__ names lt -// /..................\ /....................\ /...\ | -// dl fz ed rn en cn dp lu tu lp tp lh ld th td nc np ul +@table(name name_lower name_lower_plural op_delete op_freeze op_edit op_rename op_enable op_cond op_dup lf_mut_user_cfg tr_mut_user_cfg lf_mut_prof_cfg tr_mut_prof_cfg lf_mut_halt lf_mut_dbg tr_mut_halt tr_mut_dbg name_is_code name_is_path user_lifetime is_serialized name_label icon_kind display_string) +// | | +// | _________________________________________________________________________________________________________________________________________________________________________________________________/ +// | / +// operations________ mutation cascading__ names lt sz +// /..................\ /....................\ /...\ | | +// dl fz ed rn en cn dp lu tu lp tp lh ld th td nc np ul iz DF_EntityKindTable: { - {Nil nil 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" Null "Nil" } - {Root root 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" Null "Root" } - {Machine machine 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" Machine "Machine" } + {Nil nil nils 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" Null "Nil" } + {Root root roots 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" Null "Root" } + {Machine machine machines 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" Machine "Machine" } //- rjf: filesystem modeling - {File file 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" FileOutline "File" } - {OverrideFileLink override_file_link 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 "Label" FileOutline "Override File Link" } + {File file files 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" FileOutline "File" } //- rjf: auto view rules - {AutoViewRule auto_view_rule 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 "Label" Binoculars "Auto View Rule" } + {AutoViewRule auto_view_rule auto_view_rules 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 "Label" Binoculars "Auto View Rule" } //- rjf: file path maps - {SourcePath source_path 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Path" Null "Source Path" } - {DestPath dest_path 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Path" Null "Destination Path" } + {FilePathMap file_path_map file_path_maps 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 "Label" FileOutline "File Path Map" } //- rjf: watch pins - {WatchPin watch_pin 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 "Expression" Pin "Watch Pin" } + {WatchPin watch_pin watch_pins 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 "Expression" Pin "Watch Pin" } //- rjf: watches - {Watch watch 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 "Expression" Binoculars "Watch" } - {ViewRule view_rule 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 "Expression" Binoculars "View Rule" } + {Watch watch watches 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 "Expression" Binoculars "Watch" } + {ViewRule view_rule view_rules 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 "Expression" Binoculars "View Rule" } //- rjf: breakpoints - {Breakpoint breakpoint 1 0 0 1 1 1 1 0 0 1 0 1 0 0 0 0 0 1 "Label" CircleFilled "Breakpoint" } - {Condition condition 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 1 "Expression" CircleFilled "Condition" } + {Breakpoint breakpoint breakpoints 1 0 0 1 1 1 1 0 0 1 0 1 0 0 0 0 0 1 1 "Label" CircleFilled "Breakpoint" } + {Condition condition conditions 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 1 0 "Expression" CircleFilled "Condition" } //- rjf: user-controlled locations (source, addresses, symbol names) - {Location location 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 "Location" Null "Location" } + {Location location locations 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 0 "Location" Null "Location" } //- rjf: targets - {Target target 1 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 1 "Label" Target "Target" } - {Executable executable 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 "Executable" Null "Executable" } - {Arguments arguments 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 "Arguments" Null "Arguments" } - {WorkingDirectory working_directory 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 "Execution Path" Null "Working Directory" } - {EntryPoint entry_point 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 "Symbol Name" Null "Entry Point" } + {Target target targets 1 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 1 1 "Label" Target "Target" } + {Executable executable executables 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 "Executable" Null "Executable" } + {Arguments arguments argumentses 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 "Arguments" Null "Arguments" } + {WorkingDirectory working_directory working_directories 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 "Execution Path" Null "Working Directory" } + {EntryPoint entry_point entry_points 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 "Symbol Name" Null "Entry Point" } //- rjf: recent projects - {RecentProject recent_project 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 "Path" Briefcase "Recent Project" } + {RecentProject recent_project recent_projects 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 "Path" Briefcase "Recent Project" } //- rjf: src -> dst mapping - {Source source 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Path" Null "Source" } - {Dest dest 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Path" Null "Destination" } + {Source source sources 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Path" Null "Source" } + {Dest dest dests 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Path" Null "Destination" } //- rjf: control system entities - {Process process 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" Threads "Process" } - {Thread thread 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" Thread "Thread" } - {Module module 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" Module "Module" } - {PendingThreadName pending_thread_name 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" Threads "Pending Thread Name" } - {DebugInfoPath debug_info_path 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" Module "Debug Info Path" } + {Process process processes 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" Threads "Process" } + {Thread thread threads 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" Thread "Thread" } + {Module module modules 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" Module "Module" } + {PendingThreadName pending_thread_name pending_thread_names 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" Threads "Pending Thread Name" } + {DebugInfoPath debug_info_path debug_info_paths 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" Module "Debug Info Path" } //- rjf: parser task entities - {ConversionTask conversion_task 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" Null "Conversion Task" } - {ConversionFail conversion_fail 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" Null "Conversion Failure" } + {ConversionTask conversion_task conversion_tasks 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" Null "Conversion Task" } + {ConversionFail conversion_fail conversion_fails 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" Null "Conversion Failure" } //- rjf: history - {EndedProcess ended_process 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" Null "EndedProcess" } + {EndedProcess ended_process ended_processes 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 "Label" Null "EndedProcess" } } //////////////////////////////// @@ -711,6 +709,11 @@ DF_DevToggleTable: @expand(DF_EntityKindTable a) `str8_lit_comp("$(a.name_lower)")`, } +@data(String8) df_g_entity_kind_name_lower_plural_table: +{ + @expand(DF_EntityKindTable a) `str8_lit_comp("$(a.name_lower_plural)")`, +} + @data(String8) df_g_entity_kind_name_label_table: { @expand(DF_EntityKindTable a) `str8_lit_comp("$(a.name_label)")`, @@ -718,7 +721,7 @@ DF_DevToggleTable: @data(DF_EntityKindFlags) df_g_entity_kind_flags_table: { - @expand(DF_EntityKindTable a) `($(a.op_delete)*DF_EntityKindFlag_CanDelete) | ($(a.op_freeze)*DF_EntityKindFlag_CanFreeze) | ($(a.op_edit)*DF_EntityKindFlag_CanEdit) | ($(a.op_rename)*DF_EntityKindFlag_CanRename) | ($(a.op_enable)*DF_EntityKindFlag_CanEnable) | ($(a.op_cond)*DF_EntityKindFlag_CanCondition) | ($(a.op_dup)*DF_EntityKindFlag_CanDuplicate) | ($(a.lf_mut_user_cfg)*DF_EntityKindFlag_LeafMutUserConfig | $(a.lf_mut_prof_cfg)*DF_EntityKindFlag_LeafMutProjectConfig | $(a.lf_mut_halt)*DF_EntityKindFlag_LeafMutSoftHalt | $(a.lf_mut_dbg)*DF_EntityKindFlag_LeafMutDebugInfoMap | $(a.tr_mut_user_cfg)*DF_EntityKindFlag_TreeMutUserConfig | $(a.tr_mut_prof_cfg)*DF_EntityKindFlag_TreeMutProjectConfig | $(a.tr_mut_halt)*DF_EntityKindFlag_TreeMutSoftHalt | $(a.tr_mut_dbg)*DF_EntityKindFlag_TreeMutDebugInfoMap | $(a.name_is_code)*DF_EntityKindFlag_NameIsCode | $(a.name_is_path)*DF_EntityKindFlag_NameIsPath | $(a.user_lifetime)*DF_EntityKindFlag_UserDefinedLifetime)`, + @expand(DF_EntityKindTable a) `($(a.op_delete)*DF_EntityKindFlag_CanDelete) | ($(a.op_freeze)*DF_EntityKindFlag_CanFreeze) | ($(a.op_edit)*DF_EntityKindFlag_CanEdit) | ($(a.op_rename)*DF_EntityKindFlag_CanRename) | ($(a.op_enable)*DF_EntityKindFlag_CanEnable) | ($(a.op_cond)*DF_EntityKindFlag_CanCondition) | ($(a.op_dup)*DF_EntityKindFlag_CanDuplicate) | ($(a.lf_mut_user_cfg)*DF_EntityKindFlag_LeafMutUserConfig | $(a.lf_mut_prof_cfg)*DF_EntityKindFlag_LeafMutProjectConfig | $(a.lf_mut_halt)*DF_EntityKindFlag_LeafMutSoftHalt | $(a.lf_mut_dbg)*DF_EntityKindFlag_LeafMutDebugInfoMap | $(a.tr_mut_user_cfg)*DF_EntityKindFlag_TreeMutUserConfig | $(a.tr_mut_prof_cfg)*DF_EntityKindFlag_TreeMutProjectConfig | $(a.tr_mut_halt)*DF_EntityKindFlag_TreeMutSoftHalt | $(a.tr_mut_dbg)*DF_EntityKindFlag_TreeMutDebugInfoMap | $(a.name_is_code)*DF_EntityKindFlag_NameIsCode | $(a.name_is_path)*DF_EntityKindFlag_NameIsPath | $(a.user_lifetime)*DF_EntityKindFlag_UserDefinedLifetime) | $(a.is_serialized)*DF_EntityKindFlag_IsSerializedToConfig`, } //- rjf: config source tables diff --git a/src/df/core/generated/df_core.meta.c b/src/df/core/generated/df_core.meta.c index ae0d4f1d..80e15388 100644 --- a/src/df/core/generated/df_core.meta.c +++ b/src/df/core/generated/df_core.meta.c @@ -32,16 +32,14 @@ Rng1U64 df_g_cmd_param_slot_range_table[24] = {OffsetOf(DF_CmdParams, inline_depth), OffsetOf(DF_CmdParams, inline_depth) + sizeof(U64)}, }; -DF_IconKind df_g_entity_kind_icon_kind_table[30] = +DF_IconKind df_g_entity_kind_icon_kind_table[28] = { DF_IconKind_Null, DF_IconKind_Null, DF_IconKind_Machine, DF_IconKind_FileOutline, -DF_IconKind_FileOutline, DF_IconKind_Binoculars, -DF_IconKind_Null, -DF_IconKind_Null, +DF_IconKind_FileOutline, DF_IconKind_Pin, DF_IconKind_Binoculars, DF_IconKind_Binoculars, @@ -66,16 +64,14 @@ DF_IconKind_Null, DF_IconKind_Null, }; -String8 df_g_entity_kind_display_string_table[30] = +String8 df_g_entity_kind_display_string_table[28] = { str8_lit_comp("Nil"), str8_lit_comp("Root"), str8_lit_comp("Machine"), str8_lit_comp("File"), -str8_lit_comp("Override File Link"), str8_lit_comp("Auto View Rule"), -str8_lit_comp("Source Path"), -str8_lit_comp("Destination Path"), +str8_lit_comp("File Path Map"), str8_lit_comp("Watch Pin"), str8_lit_comp("Watch"), str8_lit_comp("View Rule"), @@ -100,16 +96,14 @@ str8_lit_comp("Conversion Failure"), str8_lit_comp("EndedProcess"), }; -String8 df_g_entity_kind_name_lower_table[30] = +String8 df_g_entity_kind_name_lower_table[28] = { str8_lit_comp("nil"), str8_lit_comp("root"), str8_lit_comp("machine"), str8_lit_comp("file"), -str8_lit_comp("override_file_link"), str8_lit_comp("auto_view_rule"), -str8_lit_comp("source_path"), -str8_lit_comp("dest_path"), +str8_lit_comp("file_path_map"), str8_lit_comp("watch_pin"), str8_lit_comp("watch"), str8_lit_comp("view_rule"), @@ -134,7 +128,39 @@ str8_lit_comp("conversion_fail"), str8_lit_comp("ended_process"), }; -String8 df_g_entity_kind_name_label_table[30] = +String8 df_g_entity_kind_name_lower_plural_table[28] = +{ +str8_lit_comp("nils"), +str8_lit_comp("roots"), +str8_lit_comp("machines"), +str8_lit_comp("files"), +str8_lit_comp("auto_view_rules"), +str8_lit_comp("file_path_maps"), +str8_lit_comp("watch_pins"), +str8_lit_comp("watches"), +str8_lit_comp("view_rules"), +str8_lit_comp("breakpoints"), +str8_lit_comp("conditions"), +str8_lit_comp("locations"), +str8_lit_comp("targets"), +str8_lit_comp("executables"), +str8_lit_comp("argumentses"), +str8_lit_comp("working_directories"), +str8_lit_comp("entry_points"), +str8_lit_comp("recent_projects"), +str8_lit_comp("sources"), +str8_lit_comp("dests"), +str8_lit_comp("processes"), +str8_lit_comp("threads"), +str8_lit_comp("modules"), +str8_lit_comp("pending_thread_names"), +str8_lit_comp("debug_info_paths"), +str8_lit_comp("conversion_tasks"), +str8_lit_comp("conversion_fails"), +str8_lit_comp("ended_processes"), +}; + +String8 df_g_entity_kind_name_label_table[28] = { str8_lit_comp("Label"), str8_lit_comp("Label"), @@ -142,8 +168,6 @@ str8_lit_comp("Label"), str8_lit_comp("Label"), str8_lit_comp("Label"), str8_lit_comp("Label"), -str8_lit_comp("Path"), -str8_lit_comp("Path"), str8_lit_comp("Expression"), str8_lit_comp("Expression"), str8_lit_comp("Expression"), @@ -168,38 +192,36 @@ str8_lit_comp("Label"), str8_lit_comp("Label"), }; -DF_EntityKindFlags df_g_entity_kind_flags_table[30] = +DF_EntityKindFlags df_g_entity_kind_flags_table[28] = { -(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), -(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), -(0*DF_EntityKindFlag_CanDelete) | (1*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), -(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), -(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (1*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), -(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime), -(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), -(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), -(1*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (1*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 1*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime), -(1*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (1*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (1*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 1*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime), -(1*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (1*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (1*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 1*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime), -(1*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (1*DF_EntityKindFlag_CanEnable) | (1*DF_EntityKindFlag_CanCondition) | (1*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 1*DF_EntityKindFlag_LeafMutProjectConfig | 1*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime), -(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 1*DF_EntityKindFlag_LeafMutProjectConfig | 1*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 1*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 1*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime), -(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 1*DF_EntityKindFlag_LeafMutProjectConfig | 1*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 1*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 1*DF_EntityKindFlag_NameIsCode | 1*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime), -(1*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (1*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (1*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (1*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 1*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime), -(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 1*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 1*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime), -(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 1*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime), -(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 1*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 1*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime), -(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 1*DF_EntityKindFlag_LeafMutProjectConfig | 1*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime), -(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (1*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 1*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 1*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), -(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), -(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), -(0*DF_EntityKindFlag_CanDelete) | (1*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), -(0*DF_EntityKindFlag_CanDelete) | (1*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), -(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), -(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), -(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), -(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), -(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), -(1*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime), +(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime) | 0*DF_EntityKindFlag_IsSerializedToConfig, +(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime) | 0*DF_EntityKindFlag_IsSerializedToConfig, +(0*DF_EntityKindFlag_CanDelete) | (1*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime) | 0*DF_EntityKindFlag_IsSerializedToConfig, +(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime) | 0*DF_EntityKindFlag_IsSerializedToConfig, +(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime) | 1*DF_EntityKindFlag_IsSerializedToConfig, +(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (1*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime) | 1*DF_EntityKindFlag_IsSerializedToConfig, +(1*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (1*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 1*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime) | 1*DF_EntityKindFlag_IsSerializedToConfig, +(1*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (1*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (1*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 1*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime) | 1*DF_EntityKindFlag_IsSerializedToConfig, +(1*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (1*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (1*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 1*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime) | 0*DF_EntityKindFlag_IsSerializedToConfig, +(1*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (1*DF_EntityKindFlag_CanEnable) | (1*DF_EntityKindFlag_CanCondition) | (1*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 1*DF_EntityKindFlag_LeafMutProjectConfig | 1*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime) | 1*DF_EntityKindFlag_IsSerializedToConfig, +(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 1*DF_EntityKindFlag_LeafMutProjectConfig | 1*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 1*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 1*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime) | 0*DF_EntityKindFlag_IsSerializedToConfig, +(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 1*DF_EntityKindFlag_LeafMutProjectConfig | 1*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 1*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 1*DF_EntityKindFlag_NameIsCode | 1*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime) | 0*DF_EntityKindFlag_IsSerializedToConfig, +(1*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (1*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (1*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (1*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 1*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime) | 1*DF_EntityKindFlag_IsSerializedToConfig, +(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 1*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 1*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime) | 0*DF_EntityKindFlag_IsSerializedToConfig, +(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 1*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime) | 0*DF_EntityKindFlag_IsSerializedToConfig, +(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 1*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 1*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime) | 0*DF_EntityKindFlag_IsSerializedToConfig, +(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 1*DF_EntityKindFlag_LeafMutProjectConfig | 1*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 1*DF_EntityKindFlag_UserDefinedLifetime) | 0*DF_EntityKindFlag_IsSerializedToConfig, +(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (1*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 1*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 1*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime) | 1*DF_EntityKindFlag_IsSerializedToConfig, +(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime) | 0*DF_EntityKindFlag_IsSerializedToConfig, +(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime) | 0*DF_EntityKindFlag_IsSerializedToConfig, +(0*DF_EntityKindFlag_CanDelete) | (1*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime) | 0*DF_EntityKindFlag_IsSerializedToConfig, +(0*DF_EntityKindFlag_CanDelete) | (1*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime) | 0*DF_EntityKindFlag_IsSerializedToConfig, +(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime) | 0*DF_EntityKindFlag_IsSerializedToConfig, +(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime) | 0*DF_EntityKindFlag_IsSerializedToConfig, +(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (0*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime) | 0*DF_EntityKindFlag_IsSerializedToConfig, +(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime) | 0*DF_EntityKindFlag_IsSerializedToConfig, +(0*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime) | 0*DF_EntityKindFlag_IsSerializedToConfig, +(1*DF_EntityKindFlag_CanDelete) | (0*DF_EntityKindFlag_CanFreeze) | (0*DF_EntityKindFlag_CanEdit) | (1*DF_EntityKindFlag_CanRename) | (0*DF_EntityKindFlag_CanEnable) | (0*DF_EntityKindFlag_CanCondition) | (0*DF_EntityKindFlag_CanDuplicate) | (0*DF_EntityKindFlag_LeafMutUserConfig | 0*DF_EntityKindFlag_LeafMutProjectConfig | 0*DF_EntityKindFlag_LeafMutSoftHalt | 0*DF_EntityKindFlag_LeafMutDebugInfoMap | 0*DF_EntityKindFlag_TreeMutUserConfig | 0*DF_EntityKindFlag_TreeMutProjectConfig | 0*DF_EntityKindFlag_TreeMutSoftHalt | 0*DF_EntityKindFlag_TreeMutDebugInfoMap | 0*DF_EntityKindFlag_NameIsCode | 0*DF_EntityKindFlag_NameIsPath | 0*DF_EntityKindFlag_UserDefinedLifetime) | 0*DF_EntityKindFlag_IsSerializedToConfig, }; String8 df_g_cfg_src_string_table[4] = diff --git a/src/df/core/generated/df_core.meta.h b/src/df/core/generated/df_core.meta.h index 4d710ef3..ef4015ba 100644 --- a/src/df/core/generated/df_core.meta.h +++ b/src/df/core/generated/df_core.meta.h @@ -21,10 +21,8 @@ DF_EntityKind_Nil, DF_EntityKind_Root, DF_EntityKind_Machine, DF_EntityKind_File, -DF_EntityKind_OverrideFileLink, DF_EntityKind_AutoViewRule, -DF_EntityKind_SourcePath, -DF_EntityKind_DestPath, +DF_EntityKind_FilePathMap, DF_EntityKind_WatchPin, DF_EntityKind_Watch, DF_EntityKind_ViewRule, @@ -468,11 +466,12 @@ struct {B32 *value_ptr; String8 name;} DEV_toggle_table[] = }; C_LINKAGE_BEGIN extern Rng1U64 df_g_cmd_param_slot_range_table[24]; -extern DF_IconKind df_g_entity_kind_icon_kind_table[30]; -extern String8 df_g_entity_kind_display_string_table[30]; -extern String8 df_g_entity_kind_name_lower_table[30]; -extern String8 df_g_entity_kind_name_label_table[30]; -extern DF_EntityKindFlags df_g_entity_kind_flags_table[30]; +extern DF_IconKind df_g_entity_kind_icon_kind_table[28]; +extern String8 df_g_entity_kind_display_string_table[28]; +extern String8 df_g_entity_kind_name_lower_table[28]; +extern String8 df_g_entity_kind_name_lower_plural_table[28]; +extern String8 df_g_entity_kind_name_label_table[28]; +extern DF_EntityKindFlags df_g_entity_kind_flags_table[28]; extern String8 df_g_cfg_src_string_table[4]; extern DF_CoreCmdKind df_g_cfg_src_load_cmd_kind_table[4]; extern DF_CoreCmdKind df_g_cfg_src_write_cmd_kind_table[4]; diff --git a/src/df/gfx/df_gfx.c b/src/df/gfx/df_gfx.c index fce2d7eb..0e72f06f 100644 --- a/src/df/gfx/df_gfx.c +++ b/src/df/gfx/df_gfx.c @@ -3681,9 +3681,9 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) UI_Row { ui_spacer(ui_em(2.f*indent, 1.f)); - if(e->kind == DF_EntityKind_OverrideFileLink) + DF_Entity *dst = df_entity_from_handle(e->entity_handle); + if(!df_entity_is_nil(dst)) { - DF_Entity *dst = df_entity_from_handle(e->entity_handle); ui_labelf("[link] %S -> %S", e->name, dst->name); } else @@ -4085,35 +4085,15 @@ df_window_update_and_render(Arena *arena, DF_Window *ws, DF_CmdList *cmds) } } - // rjf: go-to-text-location - if(entity->flags & DF_EntityFlag_HasTextPoint) + // rjf: go-to-location { - DF_Entity *file_ancestor = df_entity_ancestor_from_kind(entity, DF_EntityKind_File); - if(!df_entity_is_nil(file_ancestor) && ui_clicked(df_icon_buttonf(ws, DF_IconKind_FileOutline, 0, "Go To Location"))) - { - Temp scratch = scratch_begin(&arena, 1); - DF_CmdParams params = df_cmd_params_from_window(ws); - params.file_path = df_full_path_from_entity(scratch.arena, file_ancestor); - params.text_point = entity->text_point; - df_cmd_params_mark_slot(¶ms, DF_CmdParamSlot_FilePath); - df_cmd_params_mark_slot(¶ms, DF_CmdParamSlot_TextPoint); - df_push_cmd__root(¶ms, df_cmd_spec_from_core_cmd_kind(DF_CoreCmdKind_FindCodeLocation)); - ui_ctx_menu_close(); - scratch_end(scratch); - } - } - - // rjf: go-to-vaddr-location - if(entity->flags & DF_EntityFlag_HasVAddr) - { - DF_Entity *thread = df_entity_from_handle(df_interact_regs()->thread); - if(entity->vaddr != 0 && !df_entity_is_nil(thread) && ui_clicked(df_icon_buttonf(ws, DF_IconKind_FileOutline, 0, "Go To Location"))) + DF_Entity *loc = df_entity_child_from_kind(entity, DF_EntityKind_Location); + if(!df_entity_is_nil(loc) && ui_clicked(df_icon_buttonf(ws, DF_IconKind_FileOutline, 0, "Go To Location"))) { DF_CmdParams params = df_cmd_params_from_window(ws); - params.entity = df_handle_from_entity(df_entity_ancestor_from_kind(thread, DF_EntityKind_Process)); - params.vaddr = entity->vaddr; - df_cmd_params_mark_slot(¶ms, DF_CmdParamSlot_Entity); - df_cmd_params_mark_slot(¶ms, DF_CmdParamSlot_VirtualAddr); + params.file_path = loc->name; + params.text_point = loc->text_point; + params.vaddr = loc->vaddr; df_push_cmd__root(¶ms, df_cmd_spec_from_core_cmd_kind(DF_CoreCmdKind_FindCodeLocation)); ui_ctx_menu_close(); } diff --git a/src/df/gfx/df_views.c b/src/df/gfx/df_views.c index 43d5bffc..d733202a 100644 --- a/src/df/gfx/df_views.c +++ b/src/df/gfx/df_views.c @@ -4849,7 +4849,7 @@ DF_VIEW_UI_FUNCTION_DEF(FilePathMap) { ProfBeginFunction(); Temp scratch = scratch_begin(0, 0); - DF_EntityList maps_list = df_query_cached_entity_list_with_kind(DF_EntityKind_OverrideFileLink); + DF_EntityList maps_list = df_query_cached_entity_list_with_kind(DF_EntityKind_FilePathMap); DF_EntityArray maps = df_entity_array_from_list(scratch.arena, &maps_list); F32 row_height_px = floor_f32(ui_top_font_size()*2.5f); @@ -4940,9 +4940,10 @@ DF_VIEW_UI_FUNCTION_DEF(FilePathMap) { U64 map_idx = row_idx-1; DF_Entity *map = (map_idx < maps.count ? maps.v[map_idx] : &df_g_nil_entity); - DF_Entity *map_link = df_entity_from_handle(map->entity_handle); - String8 map_src_path = df_full_path_from_entity(scratch.arena, map); - String8 map_dst_path = df_full_path_from_entity(scratch.arena, map_link); + DF_Entity *map_src = df_entity_child_from_kind(map, DF_EntityKind_Source); + DF_Entity *map_dst = df_entity_child_from_kind(map, DF_EntityKind_Dest); + String8 map_src_path = map_src->name; + String8 map_dst_path = map_dst->name; B32 row_selected = (fpms->cursor.y == row_idx); //- rjf: src diff --git a/src/raddbg/raddbg.h b/src/raddbg/raddbg.h index 99021451..5d0c65af 100644 --- a/src/raddbg/raddbg.h +++ b/src/raddbg/raddbg.h @@ -4,7 +4,7 @@ //////////////////////////////// //~ rjf: Frontend/UI Pass Tasks // -// [ ] fix HRESULTs +// [x] fix HRESULTs // [ ] file overrides -> always pick most specific one! found with conflicting // overrides, e.g. C:/devel/ -> D:/devel/, but also C:/devel/foo -> // C:/devel/bar, etc.