mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-12 23:31:38 -07:00
switch off rd_cfg to cfg layer
This commit is contained in:
+23
-1
@@ -150,6 +150,28 @@ cfg_ctx_select(CFG_Ctx *ctx)
|
||||
|
||||
//- rjf: tree navigations
|
||||
|
||||
internal U64
|
||||
cfg_change_gen(void)
|
||||
{
|
||||
U64 result = 0;
|
||||
if(cfg_ctx != 0)
|
||||
{
|
||||
result = cfg_ctx->change_gen;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
internal CFG_Node *
|
||||
cfg_node_root(void)
|
||||
{
|
||||
CFG_Node *result = &cfg_nil_node;
|
||||
if(cfg_ctx != 0)
|
||||
{
|
||||
result = cfg_ctx->root;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
internal CFG_Node *
|
||||
cfg_node_from_id(CFG_ID id)
|
||||
{
|
||||
@@ -867,7 +889,7 @@ cfg_node_ptr_list_from_string(Arena *arena, CFG_State *state, CFG_SchemaTable *s
|
||||
dst_active_parent_n = dst_active_parent_n->parent;
|
||||
}
|
||||
}
|
||||
cfg_node_list_push(arena, &result, dst_root_n);
|
||||
cfg_node_ptr_list_push(arena, &result, dst_root_n);
|
||||
}
|
||||
scratch_end(scratch);
|
||||
return result;
|
||||
|
||||
@@ -185,6 +185,8 @@ internal MD_NodePtrList cfg_schemas_from_name(Arena *arena, CFG_SchemaTable *tab
|
||||
internal void cfg_ctx_select(CFG_Ctx *ctx);
|
||||
|
||||
//- rjf: tree navigations
|
||||
internal U64 cfg_change_gen(void);
|
||||
internal CFG_Node *cfg_node_root(void);
|
||||
internal CFG_Node *cfg_node_from_id(CFG_ID id);
|
||||
internal CFG_Node *cfg_node_child_from_string(CFG_Node *parent, String8 string);
|
||||
internal CFG_Node *cfg_node_child_from_string_or_parent(CFG_Node *parent, String8 string);
|
||||
|
||||
@@ -979,7 +979,7 @@ internal void
|
||||
ctrl_entity_string_release(CTRL_EntityCtxRWStore *store, String8 string)
|
||||
{
|
||||
U64 bucket_num = ctrl_name_bucket_num_from_string_size(string.size);
|
||||
if(1 <= bucket_num && bucket_num <= ArrayCount(rd_name_bucket_chunk_sizes))
|
||||
if(1 <= bucket_num && bucket_num <= ArrayCount(ctrl_entity_string_bucket_chunk_sizes))
|
||||
{
|
||||
U64 bucket_idx = bucket_num-1;
|
||||
CTRL_EntityStringChunkNode *node = (CTRL_EntityStringChunkNode *)string.str;
|
||||
|
||||
+1116
-1882
File diff suppressed because it is too large
Load Diff
+27
-154
@@ -247,59 +247,6 @@ struct RD_VocabInfoMap
|
||||
RD_VocabInfoMapSlot *plural_slots;
|
||||
};
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Config Tree
|
||||
|
||||
typedef struct RD_Cfg RD_Cfg;
|
||||
struct RD_Cfg
|
||||
{
|
||||
RD_Cfg *first;
|
||||
RD_Cfg *last;
|
||||
RD_Cfg *next;
|
||||
RD_Cfg *prev;
|
||||
RD_Cfg *parent;
|
||||
CFG_ID id;
|
||||
String8 string;
|
||||
};
|
||||
|
||||
typedef struct RD_CfgNode RD_CfgNode;
|
||||
struct RD_CfgNode
|
||||
{
|
||||
RD_CfgNode *next;
|
||||
RD_CfgNode *prev;
|
||||
RD_Cfg *v;
|
||||
};
|
||||
|
||||
typedef struct RD_CfgSlot RD_CfgSlot;
|
||||
struct RD_CfgSlot
|
||||
{
|
||||
RD_CfgNode *first;
|
||||
RD_CfgNode *last;
|
||||
};
|
||||
|
||||
typedef struct RD_CfgList RD_CfgList;
|
||||
struct RD_CfgList
|
||||
{
|
||||
RD_CfgNode *first;
|
||||
RD_CfgNode *last;
|
||||
U64 count;
|
||||
};
|
||||
|
||||
typedef struct RD_CfgArray RD_CfgArray;
|
||||
struct RD_CfgArray
|
||||
{
|
||||
RD_Cfg **v;
|
||||
U64 count;
|
||||
};
|
||||
|
||||
typedef struct RD_CfgRec RD_CfgRec;
|
||||
struct RD_CfgRec
|
||||
{
|
||||
RD_Cfg *next;
|
||||
S32 push_count;
|
||||
S32 pop_count;
|
||||
};
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Structured Locations, Parsed From Config Trees
|
||||
|
||||
@@ -324,7 +271,7 @@ struct RD_PanelNode
|
||||
RD_PanelNode *prev;
|
||||
RD_PanelNode *parent;
|
||||
U64 child_count;
|
||||
RD_Cfg *cfg;
|
||||
CFG_Node *cfg;
|
||||
|
||||
// rjf: split data
|
||||
Axis2 split_axis;
|
||||
@@ -334,8 +281,8 @@ struct RD_PanelNode
|
||||
Side tab_side;
|
||||
|
||||
// rjf: which tabs are attached
|
||||
RD_CfgList tabs;
|
||||
RD_Cfg *selected_tab;
|
||||
CFG_NodePtrList tabs;
|
||||
CFG_Node *selected_tab;
|
||||
};
|
||||
|
||||
typedef struct RD_PanelTree RD_PanelTree;
|
||||
@@ -489,25 +436,6 @@ struct RD_WindowStateSlot
|
||||
////////////////////////////////
|
||||
//~ rjf: Main Per-Process Graphical State
|
||||
|
||||
read_only global U64 rd_name_bucket_chunk_sizes[] =
|
||||
{
|
||||
16,
|
||||
64,
|
||||
256,
|
||||
1024,
|
||||
4096,
|
||||
16384,
|
||||
65536,
|
||||
0xffffffffffffffffull,
|
||||
};
|
||||
|
||||
typedef struct RD_NameChunkNode RD_NameChunkNode;
|
||||
struct RD_NameChunkNode
|
||||
{
|
||||
RD_NameChunkNode *next;
|
||||
U64 size;
|
||||
};
|
||||
|
||||
typedef struct RD_AmbiguousPathNode RD_AmbiguousPathNode;
|
||||
struct RD_AmbiguousPathNode
|
||||
{
|
||||
@@ -555,9 +483,6 @@ struct RD_State
|
||||
C_Key cmdln_cfg_string_key;
|
||||
C_Key transient_cfg_string_key;
|
||||
|
||||
// rjf: schema table
|
||||
MD_NodePtrList *schemas;
|
||||
|
||||
// rjf: default theme table
|
||||
MD_Node *theme_preset_trees[RD_ThemePreset_COUNT];
|
||||
|
||||
@@ -645,16 +570,8 @@ struct RD_State
|
||||
RD_DragDropState drag_drop_state;
|
||||
|
||||
// rjf: cfg state
|
||||
RD_NameChunkNode *free_name_chunks[ArrayCount(rd_name_bucket_chunk_sizes)];
|
||||
RD_Cfg *free_cfg;
|
||||
RD_Cfg *root_cfg;
|
||||
U64 cfg_id_slots_count;
|
||||
RD_CfgSlot *cfg_id_slots;
|
||||
RD_CfgNode *free_cfg_id_node;
|
||||
U64 cfg_id_gen;
|
||||
CFG_ID cfg_last_accessed_id;
|
||||
RD_Cfg *cfg_last_accessed;
|
||||
U64 cfg_change_gen;
|
||||
CFG_State *cfg;
|
||||
CFG_SchemaTable *cfg_schema_table;
|
||||
|
||||
// rjf: window state cache
|
||||
U64 window_state_slots_count;
|
||||
@@ -688,15 +605,6 @@ struct RD_State
|
||||
|
||||
read_only global RD_VocabInfo rd_nil_vocab_info = {0};
|
||||
|
||||
read_only global RD_Cfg rd_nil_cfg =
|
||||
{
|
||||
&rd_nil_cfg,
|
||||
&rd_nil_cfg,
|
||||
&rd_nil_cfg,
|
||||
&rd_nil_cfg,
|
||||
&rd_nil_cfg,
|
||||
};
|
||||
|
||||
read_only global RD_PanelNode rd_nil_panel_node =
|
||||
{
|
||||
&rd_nil_panel_node,
|
||||
@@ -705,8 +613,8 @@ read_only global RD_PanelNode rd_nil_panel_node =
|
||||
&rd_nil_panel_node,
|
||||
&rd_nil_panel_node,
|
||||
0,
|
||||
&rd_nil_cfg,
|
||||
.selected_tab = &rd_nil_cfg,
|
||||
&cfg_nil_node,
|
||||
.selected_tab = &cfg_nil_node,
|
||||
};
|
||||
|
||||
read_only global RD_CmdKindInfo rd_nil_cmd_kind_info = {0};
|
||||
@@ -767,65 +675,30 @@ internal void rd_set_hover_regs(RD_RegSlot slot);
|
||||
internal RD_Regs *rd_get_hover_regs(void);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Name Allocation
|
||||
//~ rjf: Config Functions
|
||||
|
||||
internal U64 rd_name_bucket_num_from_string_size(U64 size);
|
||||
internal String8 rd_name_alloc(String8 string);
|
||||
internal void rd_name_release(String8 string);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Config Tree Functions
|
||||
|
||||
internal RD_Cfg *rd_cfg_alloc(void);
|
||||
internal void rd_cfg_release(RD_Cfg *cfg);
|
||||
internal void rd_cfg_release_all_children(RD_Cfg *cfg);
|
||||
internal RD_Cfg *rd_cfg_from_id(CFG_ID id);
|
||||
internal RD_Cfg *rd_cfg_new(RD_Cfg *parent, String8 string);
|
||||
internal RD_Cfg *rd_cfg_newf(RD_Cfg *parent, char *fmt, ...);
|
||||
internal RD_Cfg *rd_cfg_new_replace(RD_Cfg *parent, String8 string);
|
||||
internal RD_Cfg *rd_cfg_new_replacef(RD_Cfg *parent, char *fmt, ...);
|
||||
internal RD_Cfg *rd_cfg_deep_copy(RD_Cfg *src_root);
|
||||
internal void rd_cfg_equip_string(RD_Cfg *cfg, String8 string);
|
||||
internal void rd_cfg_equip_stringf(RD_Cfg *cfg, char *fmt, ...);
|
||||
internal void rd_cfg_insert_child(RD_Cfg *parent, RD_Cfg *prev_child, RD_Cfg *new_child);
|
||||
internal void rd_cfg_unhook(RD_Cfg *parent, RD_Cfg *child);
|
||||
internal RD_Cfg *rd_cfg_child_from_string(RD_Cfg *parent, String8 string);
|
||||
internal RD_Cfg *rd_cfg_child_from_string_or_alloc(RD_Cfg *parent, String8 string);
|
||||
internal RD_Cfg *rd_cfg_child_from_string_or_parent(RD_Cfg *parent, String8 string);
|
||||
internal RD_CfgList rd_cfg_child_list_from_string(Arena *arena, RD_Cfg *parent, String8 string);
|
||||
internal RD_CfgList rd_cfg_top_level_list_from_string(Arena *arena, String8 string);
|
||||
internal RD_CfgArray rd_cfg_array_from_list(Arena *arena, RD_CfgList *list);
|
||||
internal RD_CfgList rd_cfg_tree_list_from_string(Arena *arena, String8 root_path, String8 string);
|
||||
internal String8 rd_string_from_cfg_tree(Arena *arena, String8 root_path, RD_Cfg *cfg);
|
||||
internal RD_CfgRec rd_cfg_rec__depth_first(RD_Cfg *root, RD_Cfg *cfg);
|
||||
internal void rd_cfg_list_push(Arena *arena, RD_CfgList *list, RD_Cfg *cfg);
|
||||
internal void rd_cfg_list_push_front(Arena *arena, RD_CfgList *list, RD_Cfg *cfg);
|
||||
#define rd_cfg_list_first(list) ((list)->count ? (list)->first->v : &rd_nil_cfg)
|
||||
#define rd_cfg_list_last(list) ((list)->count ? (list)->last->v : &rd_nil_cfg)
|
||||
|
||||
internal RD_PanelTree rd_panel_tree_from_cfg(Arena *arena, RD_Cfg *cfg);
|
||||
internal RD_PanelTree rd_panel_tree_from_cfg(Arena *arena, CFG_Node *cfg_root);
|
||||
internal RD_PanelNodeRec rd_panel_node_rec__depth_first(RD_PanelNode *root, RD_PanelNode *panel, U64 sib_off, U64 child_off);
|
||||
#define rd_panel_node_rec__depth_first_pre(root, p) rd_panel_node_rec__depth_first((root), (p), OffsetOf(RD_PanelNode, next), OffsetOf(RD_PanelNode, first))
|
||||
#define rd_panel_node_rec__depth_first_pre_rev(root, p) rd_panel_node_rec__depth_first((root), (p), OffsetOf(RD_PanelNode, prev), OffsetOf(RD_PanelNode, last))
|
||||
internal RD_PanelNode *rd_panel_node_from_tree_cfg(RD_PanelNode *root, RD_Cfg *cfg);
|
||||
internal RD_PanelNode *rd_panel_node_from_tree_cfg(RD_PanelNode *root, CFG_Node *cfg);
|
||||
internal Rng2F32 rd_target_rect_from_panel_node_child(Rng2F32 parent_rect, RD_PanelNode *parent, RD_PanelNode *panel);
|
||||
internal Rng2F32 rd_target_rect_from_panel_node(Rng2F32 root_rect, RD_PanelNode *root, RD_PanelNode *panel);
|
||||
|
||||
internal B32 rd_cfg_is_project_filtered(RD_Cfg *cfg);
|
||||
internal B32 rd_cfg_is_project_filtered(CFG_Node *cfg);
|
||||
internal RD_KeyMapNodePtrList rd_key_map_node_ptr_list_from_name(Arena *arena, String8 string);
|
||||
internal RD_KeyMapNodePtrList rd_key_map_node_ptr_list_from_binding(Arena *arena, RD_Binding binding);
|
||||
|
||||
internal Vec4F32 rd_hsva_from_cfg(RD_Cfg *cfg);
|
||||
internal Vec4F32 rd_color_from_cfg(RD_Cfg *cfg);
|
||||
internal Vec4F32 rd_hsva_from_cfg(CFG_Node *cfg);
|
||||
internal Vec4F32 rd_color_from_cfg(CFG_Node *cfg);
|
||||
|
||||
internal B32 rd_disabled_from_cfg(RD_Cfg *cfg);
|
||||
internal RD_Location rd_location_from_cfg(RD_Cfg *cfg);
|
||||
internal String8 rd_label_from_cfg(RD_Cfg *cfg);
|
||||
internal String8 rd_expr_from_cfg(RD_Cfg *cfg);
|
||||
internal String8 rd_path_from_cfg(RD_Cfg *cfg);
|
||||
internal D_Target rd_target_from_cfg(Arena *arena, RD_Cfg *cfg);
|
||||
internal B32 rd_disabled_from_cfg(CFG_Node *cfg);
|
||||
internal RD_Location rd_location_from_cfg(CFG_Node *cfg);
|
||||
internal String8 rd_label_from_cfg(CFG_Node *cfg);
|
||||
internal String8 rd_expr_from_cfg(CFG_Node *cfg);
|
||||
internal String8 rd_path_from_cfg(CFG_Node *cfg);
|
||||
internal D_Target rd_target_from_cfg(Arena *arena, CFG_Node *cfg);
|
||||
|
||||
internal MD_NodePtrList rd_schemas_from_name(String8 name);
|
||||
internal String8 rd_default_setting_from_names(String8 schema_name, String8 setting_name);
|
||||
|
||||
internal String8 rd_setting_from_name(String8 name);
|
||||
@@ -833,8 +706,8 @@ internal B32 rd_setting_b32_from_name(String8 name);
|
||||
internal U64 rd_setting_u64_from_name(String8 name);
|
||||
internal F32 rd_setting_f32_from_name(String8 name);
|
||||
|
||||
internal RD_Cfg *rd_immediate_cfg_from_key(String8 string);
|
||||
internal RD_Cfg *rd_immediate_cfg_from_keyf(char *fmt, ...);
|
||||
internal CFG_Node *rd_immediate_cfg_from_key(String8 string);
|
||||
internal CFG_Node *rd_immediate_cfg_from_keyf(char *fmt, ...);
|
||||
|
||||
internal String8 rd_mapped_from_file_path(Arena *arena, String8 file_path);
|
||||
internal String8List rd_possible_overrides_from_file_path(Arena *arena, String8 file_path);
|
||||
@@ -849,8 +722,8 @@ internal String8 rd_name_from_ctrl_entity(Arena *arena, CTRL_Entity *entity);
|
||||
//~ rjf: Evaluation Spaces
|
||||
|
||||
//- rjf: cfg <-> eval space
|
||||
internal RD_Cfg *rd_cfg_from_eval_space(E_Space space);
|
||||
internal E_Space rd_eval_space_from_cfg(RD_Cfg *cfg);
|
||||
internal CFG_Node *rd_cfg_from_eval_space(E_Space space);
|
||||
internal E_Space rd_eval_space_from_cfg(CFG_Node *cfg);
|
||||
|
||||
//- rjf: ctrl entity <-> eval space
|
||||
internal CTRL_Entity *rd_ctrl_entity_from_eval_space(E_Space space);
|
||||
@@ -887,8 +760,8 @@ internal String8 rd_query_from_eval_string(Arena *arena, String8 string);
|
||||
////////////////////////////////
|
||||
//~ rjf: View Functions
|
||||
|
||||
internal RD_Cfg *rd_view_from_eval(RD_Cfg *parent, E_Eval eval);
|
||||
internal RD_ViewState *rd_view_state_from_cfg(RD_Cfg *cfg);
|
||||
internal CFG_Node *rd_view_from_eval(CFG_Node *parent, E_Eval eval);
|
||||
internal RD_ViewState *rd_view_state_from_cfg(CFG_Node *cfg);
|
||||
internal void rd_view_ui(Rng2F32 rect);
|
||||
|
||||
////////////////////////////////
|
||||
@@ -930,8 +803,8 @@ internal void rd_store_view_paramf(String8 key, char *fmt, ...);
|
||||
//~ rjf: Window Functions
|
||||
|
||||
internal String8 rd_push_window_title(Arena *arena);
|
||||
internal RD_Cfg *rd_window_from_cfg(RD_Cfg *cfg);
|
||||
internal RD_WindowState *rd_window_state_from_cfg(RD_Cfg *cfg);
|
||||
internal CFG_Node *rd_window_from_cfg(CFG_Node *cfg);
|
||||
internal RD_WindowState *rd_window_state_from_cfg(CFG_Node *cfg);
|
||||
internal RD_WindowState *rd_window_state_from_os_handle(OS_Handle os);
|
||||
internal void rd_window_frame(void);
|
||||
|
||||
|
||||
+53
-53
@@ -245,7 +245,7 @@ E_TYPE_EXPAND_RANGE_FUNCTION_DEF(registers)
|
||||
typedef struct RD_SchemaIRExt RD_SchemaIRExt;
|
||||
struct RD_SchemaIRExt
|
||||
{
|
||||
RD_Cfg *cfg;
|
||||
CFG_Node *cfg;
|
||||
CTRL_Entity *entity;
|
||||
MD_NodePtrList schemas;
|
||||
};
|
||||
@@ -262,7 +262,7 @@ E_TYPE_IREXT_FUNCTION_DEF(schema)
|
||||
E_Type *type = e_type_from_key(type_key);
|
||||
ext->cfg = rd_cfg_from_eval_space(interpret.space);
|
||||
ext->entity = rd_ctrl_entity_from_eval_space(interpret.space);
|
||||
ext->schemas = rd_schemas_from_name(type->name);
|
||||
ext->schemas = cfg_schemas_from_name(arena, rd_state->cfg_schema_table, type->name);
|
||||
scratch_end(scratch);
|
||||
}
|
||||
E_IRExt result = {ext};
|
||||
@@ -289,9 +289,9 @@ E_TYPE_ACCESS_FUNCTION_DEF(schema)
|
||||
}
|
||||
if(child_schema != &md_nil_node)
|
||||
{
|
||||
RD_Cfg *cfg = ext->cfg;
|
||||
CFG_Node *cfg = ext->cfg;
|
||||
CTRL_Entity *entity = ext->entity;
|
||||
RD_Cfg *child = rd_cfg_child_from_string(cfg, child_schema->string);
|
||||
CFG_Node *child = cfg_node_child_from_string(cfg, child_schema->string);
|
||||
E_TypeKey child_type_key = zero_struct;
|
||||
B32 wrap_child_w_meta_expr = 0;
|
||||
if(0){}
|
||||
@@ -455,7 +455,7 @@ E_TYPE_ACCESS_FUNCTION_DEF(schema)
|
||||
|
||||
//- rjf: evaluate
|
||||
E_Space child_eval_space = zero_struct;
|
||||
if(cfg != &rd_nil_cfg)
|
||||
if(cfg != &cfg_nil_node)
|
||||
{
|
||||
child_eval_space = e_space_make(RD_EvalSpaceKind_MetaCfg);
|
||||
child_eval_space.u64s[0] = cfg->id;
|
||||
@@ -637,7 +637,7 @@ E_TYPE_ACCESS_FUNCTION_DEF(cfgs)
|
||||
{
|
||||
String8 numeric_part = str8_skip(rhs->string, 1);
|
||||
CFG_ID id = u64_from_str8(numeric_part, 16);
|
||||
RD_Cfg *cfg = rd_cfg_from_id(id);
|
||||
CFG_Node *cfg = cfg_node_from_id(id);
|
||||
E_Space space = rd_eval_space_from_cfg(cfg);
|
||||
result.root = e_irtree_set_space(arena, space, e_irtree_const_u(arena, 0));
|
||||
result.type_key = e_string2typekey_map_lookup(rd_state->meta_name2type_map, cfg->string);
|
||||
@@ -674,7 +674,7 @@ struct RD_CfgsIRExt
|
||||
{
|
||||
String8 cfg_name;
|
||||
String8Array cmds;
|
||||
RD_CfgArray cfgs;
|
||||
CFG_NodePtrArray cfgs;
|
||||
Rng1U64 cmds_idx_range;
|
||||
Rng1U64 cfgs_idx_range;
|
||||
};
|
||||
@@ -691,12 +691,12 @@ E_TYPE_IREXT_FUNCTION_DEF(cfgs_slice)
|
||||
String8 cfg_name = rd_singular_from_code_name_plural(type->name);
|
||||
|
||||
//- rjf: gather cfgs
|
||||
RD_CfgList cfgs_list = rd_cfg_top_level_list_from_string(scratch.arena, cfg_name);
|
||||
CFG_NodePtrList cfgs_list = cfg_node_top_level_list_from_string(scratch.arena, cfg_name);
|
||||
|
||||
//- rjf: gather commands
|
||||
String8List cmds_list = {0};
|
||||
{
|
||||
MD_NodePtrList schemas = rd_schemas_from_name(cfg_name);
|
||||
MD_NodePtrList schemas = cfg_schemas_from_name(scratch.arena, rd_state->cfg_schema_table, cfg_name);
|
||||
for(MD_NodePtrNode *n = schemas.first; n != 0; n = n->next)
|
||||
{
|
||||
MD_Node *schema = n->v;
|
||||
@@ -710,7 +710,7 @@ E_TYPE_IREXT_FUNCTION_DEF(cfgs_slice)
|
||||
|
||||
//- rjf: package & fill
|
||||
ext->cfg_name = cfg_name;
|
||||
ext->cfgs = rd_cfg_array_from_list(arena, &cfgs_list);
|
||||
ext->cfgs = cfg_node_ptr_array_from_list(arena, &cfgs_list);
|
||||
ext->cmds = str8_array_from_list(arena, &cmds_list);
|
||||
|
||||
scratch_end(scratch);
|
||||
@@ -722,7 +722,7 @@ E_TYPE_IREXT_FUNCTION_DEF(cfgs_slice)
|
||||
E_TYPE_ACCESS_FUNCTION_DEF(cfgs_slice)
|
||||
{
|
||||
E_IRTreeAndType result = {&e_irnode_nil};
|
||||
RD_Cfg *cfg = &rd_nil_cfg;
|
||||
CFG_Node *cfg = &cfg_nil_node;
|
||||
RD_CfgsIRExt *ext = (RD_CfgsIRExt *)lhs_irtree->user_data;
|
||||
switch(expr->kind)
|
||||
{
|
||||
@@ -743,11 +743,11 @@ E_TYPE_ACCESS_FUNCTION_DEF(cfgs_slice)
|
||||
if(str8_match(str8_prefix(rhs_name, 1), str8_lit("$"), 0))
|
||||
{
|
||||
id = u64_from_str8(str8_skip(rhs_name, 1), 16);
|
||||
cfg = rd_cfg_from_id(id);
|
||||
cfg = cfg_node_from_id(id);
|
||||
}
|
||||
}break;
|
||||
}
|
||||
if(cfg != &rd_nil_cfg)
|
||||
if(cfg != &cfg_nil_node)
|
||||
{
|
||||
result.root = e_irtree_set_space(arena, rd_eval_space_from_cfg(cfg), e_irtree_const_u(arena, 0));
|
||||
result.mode = E_Mode_Offset;
|
||||
@@ -760,7 +760,7 @@ typedef struct RD_CfgsExpandAccel RD_CfgsExpandAccel;
|
||||
struct RD_CfgsExpandAccel
|
||||
{
|
||||
String8Array cmds;
|
||||
RD_CfgArray cfgs;
|
||||
CFG_NodePtrArray cfgs;
|
||||
Rng1U64 cmds_idx_range;
|
||||
Rng1U64 cfgs_idx_range;
|
||||
};
|
||||
@@ -775,27 +775,27 @@ E_TYPE_EXPAND_INFO_FUNCTION_DEF(cfgs_slice)
|
||||
RD_CfgsIRExt *ext = (RD_CfgsIRExt *)eval.irtree.user_data;
|
||||
|
||||
//- rjf: filter cfgs
|
||||
RD_CfgArray cfgs__filtered = ext->cfgs;
|
||||
CFG_NodePtrArray cfgs__filtered = ext->cfgs;
|
||||
if(filter.size != 0)
|
||||
{
|
||||
RD_CfgList cfgs_list__filtered = {0};
|
||||
CFG_NodePtrList cfgs_list__filtered = {0};
|
||||
for EachIndex(idx, ext->cfgs.count)
|
||||
{
|
||||
RD_Cfg *cfg = ext->cfgs.v[idx];
|
||||
CFG_Node *cfg = ext->cfgs.v[idx];
|
||||
DR_FStrList fstrs = rd_title_fstrs_from_cfg(scratch.arena, cfg, 1);
|
||||
String8 string = dr_string_from_fstrs(scratch.arena, &fstrs);
|
||||
FuzzyMatchRangeList fuzzy_matches = fuzzy_match_find(scratch.arena, filter, string);
|
||||
if(fuzzy_matches.count == fuzzy_matches.needle_part_count)
|
||||
{
|
||||
rd_cfg_list_push(scratch.arena, &cfgs_list__filtered, cfg);
|
||||
cfg_node_ptr_list_push(scratch.arena, &cfgs_list__filtered, cfg);
|
||||
}
|
||||
}
|
||||
cfgs__filtered = rd_cfg_array_from_list(arena, &cfgs_list__filtered);
|
||||
cfgs__filtered = cfg_node_ptr_array_from_list(arena, &cfgs_list__filtered);
|
||||
}
|
||||
|
||||
//- rjf: fill
|
||||
// TODO(rjf): @cleanup don't smuggle this through like this...
|
||||
if(rd_cfg_child_from_string(rd_cfg_from_id(rd_regs()->view), str8_lit("lister")) == &rd_nil_cfg)
|
||||
if(cfg_node_child_from_string(cfg_node_from_id(rd_regs()->view), str8_lit("lister")) == &cfg_nil_node)
|
||||
{
|
||||
accel->cmds = ext->cmds;
|
||||
accel->cmds_idx_range = r1u64(0, accel->cmds.count);
|
||||
@@ -813,7 +813,7 @@ E_TYPE_EXPAND_INFO_FUNCTION_DEF(cfgs_query)
|
||||
RD_CfgsExpandAccel *accel = push_array(arena, RD_CfgsExpandAccel, 1);
|
||||
{
|
||||
Temp scratch = scratch_begin(&arena, 1);
|
||||
RD_Cfg *root_cfg = rd_cfg_from_eval_space(eval.space);
|
||||
CFG_Node *root_cfg = rd_cfg_from_eval_space(eval.space);
|
||||
String8 child_key = e_string_from_id(eval.space.u64s[1]);
|
||||
String8 child_key_singular = rd_singular_from_code_name_plural(child_key);
|
||||
if(child_key_singular.size != 0)
|
||||
@@ -821,7 +821,7 @@ E_TYPE_EXPAND_INFO_FUNCTION_DEF(cfgs_query)
|
||||
child_key = child_key_singular;
|
||||
}
|
||||
String8List cmds = {0};
|
||||
MD_NodePtrList schemas = rd_schemas_from_name(child_key);
|
||||
MD_NodePtrList schemas = cfg_schemas_from_name(scratch.arena, rd_state->cfg_schema_table, child_key);
|
||||
for(MD_NodePtrNode *n = schemas.first; n != 0; n = n->next)
|
||||
{
|
||||
MD_Node *schema = n->v;
|
||||
@@ -831,25 +831,25 @@ E_TYPE_EXPAND_INFO_FUNCTION_DEF(cfgs_query)
|
||||
str8_list_push(scratch.arena, &cmds, cmd->string);
|
||||
}
|
||||
}
|
||||
RD_CfgList children = rd_cfg_child_list_from_string(scratch.arena, root_cfg, child_key);
|
||||
RD_CfgList children__filtered = children;
|
||||
CFG_NodePtrList children = cfg_node_child_list_from_string(scratch.arena, root_cfg, child_key);
|
||||
CFG_NodePtrList children__filtered = children;
|
||||
if(filter.size != 0)
|
||||
{
|
||||
MemoryZeroStruct(&children__filtered);
|
||||
for(RD_CfgNode *n = children.first; n != 0; n = n->next)
|
||||
for(CFG_NodePtrNode *n = children.first; n != 0; n = n->next)
|
||||
{
|
||||
DR_FStrList cfg_fstrs = rd_title_fstrs_from_cfg(scratch.arena, n->v, 1);
|
||||
String8 cfg_string = dr_string_from_fstrs(scratch.arena, &cfg_fstrs);
|
||||
FuzzyMatchRangeList ranges = fuzzy_match_find(scratch.arena, filter, cfg_string);
|
||||
if(ranges.count == ranges.needle_part_count)
|
||||
{
|
||||
rd_cfg_list_push(scratch.arena, &children__filtered, n->v);
|
||||
cfg_node_ptr_list_push(scratch.arena, &children__filtered, n->v);
|
||||
}
|
||||
}
|
||||
}
|
||||
accel->cmds = str8_array_from_list(arena, &cmds);
|
||||
accel->cmds_idx_range = r1u64(0, accel->cmds.count);
|
||||
accel->cfgs = rd_cfg_array_from_list(arena, &children__filtered);
|
||||
accel->cfgs = cfg_node_ptr_array_from_list(arena, &children__filtered);
|
||||
accel->cfgs_idx_range = r1u64(accel->cmds.count + 0, accel->cmds.count + accel->cfgs.count);
|
||||
scratch_end(scratch);
|
||||
}
|
||||
@@ -883,7 +883,7 @@ E_TYPE_EXPAND_RANGE_FUNCTION_DEF(cfgs_slice)
|
||||
U64 read_count = dim_1u64(read_range);
|
||||
for(U64 idx = 0; idx < read_count; idx += 1, dst_idx += 1)
|
||||
{
|
||||
RD_Cfg *cfg = accel->cfgs.v[idx + read_range.min - cfgs_idx_range.min];
|
||||
CFG_Node *cfg = accel->cfgs.v[idx + read_range.min - cfgs_idx_range.min];
|
||||
evals_out[dst_idx] = e_eval_from_stringf("query:config.$%I64x", cfg->id);
|
||||
}
|
||||
}
|
||||
@@ -898,7 +898,7 @@ E_TYPE_EXPAND_ID_FROM_NUM_FUNCTION_DEF(cfgs_slice)
|
||||
U64 idx = num-1;
|
||||
if(contains_1u64(accel->cfgs_idx_range, idx))
|
||||
{
|
||||
RD_Cfg *cfg = accel->cfgs.v[idx - accel->cfgs_idx_range.min];
|
||||
CFG_Node *cfg = accel->cfgs.v[idx - accel->cfgs_idx_range.min];
|
||||
id = cfg->id;
|
||||
}
|
||||
else if(contains_1u64(accel->cmds_idx_range, idx))
|
||||
@@ -1001,7 +1001,7 @@ E_TYPE_EXPAND_INFO_FUNCTION_DEF(call_stack)
|
||||
typedef struct RD_EnvironmentAccel RD_EnvironmentAccel;
|
||||
struct RD_EnvironmentAccel
|
||||
{
|
||||
RD_CfgArray cfgs;
|
||||
CFG_NodePtrArray cfgs;
|
||||
};
|
||||
|
||||
E_TYPE_IREXT_FUNCTION_DEF(environment)
|
||||
@@ -1013,16 +1013,16 @@ E_TYPE_IREXT_FUNCTION_DEF(environment)
|
||||
String8 bytecode = e_bytecode_from_oplist(scratch.arena, &oplist);
|
||||
E_Interpretation interpret = e_interpret(bytecode);
|
||||
E_Space space = interpret.space;
|
||||
RD_Cfg *target = rd_cfg_from_eval_space(space);
|
||||
RD_CfgList env_strings = {0};
|
||||
for(RD_Cfg *child = target->first; child != &rd_nil_cfg; child = child->next)
|
||||
CFG_Node *target = rd_cfg_from_eval_space(space);
|
||||
CFG_NodePtrList env_strings = {0};
|
||||
for(CFG_Node *child = target->first; child != &cfg_nil_node; child = child->next)
|
||||
{
|
||||
if(str8_match(child->string, str8_lit("environment"), 0))
|
||||
{
|
||||
rd_cfg_list_push(scratch.arena, &env_strings, child);
|
||||
cfg_node_ptr_list_push(scratch.arena, &env_strings, child);
|
||||
}
|
||||
}
|
||||
accel->cfgs = rd_cfg_array_from_list(arena, &env_strings);
|
||||
accel->cfgs = cfg_node_ptr_array_from_list(arena, &env_strings);
|
||||
scratch_end(scratch);
|
||||
}
|
||||
E_IRExt result = {accel};
|
||||
@@ -1035,11 +1035,11 @@ E_TYPE_ACCESS_FUNCTION_DEF(environment)
|
||||
if(expr->kind == E_ExprKind_ArrayIndex)
|
||||
{
|
||||
RD_EnvironmentAccel *accel = (RD_EnvironmentAccel *)lhs_irtree->user_data;
|
||||
RD_CfgArray *cfgs = &accel->cfgs;
|
||||
CFG_NodePtrArray *cfgs = &accel->cfgs;
|
||||
E_Value rhs_value = e_value_from_expr(expr->first->next);
|
||||
if(0 <= rhs_value.u64 && rhs_value.u64 < cfgs->count)
|
||||
{
|
||||
RD_Cfg *cfg = cfgs->v[rhs_value.u64];
|
||||
CFG_Node *cfg = cfgs->v[rhs_value.u64];
|
||||
result.root = e_irtree_set_space(arena, rd_eval_space_from_cfg(cfg), e_irtree_const_u(arena, 0));
|
||||
result.type_key = e_type_key_cons_array(e_type_key_basic(E_TypeKind_U8), cfg->first->string.size, E_TypeFlag_IsCodeText);
|
||||
result.mode = E_Mode_Offset;
|
||||
@@ -1115,7 +1115,7 @@ E_TYPE_EXPAND_NUM_FROM_ID_FUNCTION_DEF(environment)
|
||||
typedef struct RD_WatchesAccel RD_WatchesAccel;
|
||||
struct RD_WatchesAccel
|
||||
{
|
||||
RD_CfgArray cfgs;
|
||||
CFG_NodePtrArray cfgs;
|
||||
};
|
||||
|
||||
E_TYPE_IREXT_FUNCTION_DEF(watches)
|
||||
@@ -1127,16 +1127,16 @@ E_TYPE_IREXT_FUNCTION_DEF(watches)
|
||||
String8 bytecode = e_bytecode_from_oplist(scratch.arena, &oplist);
|
||||
E_Interpretation interpret = e_interpret(bytecode);
|
||||
E_Space space = interpret.space;
|
||||
RD_Cfg *target = rd_cfg_from_eval_space(space);
|
||||
RD_CfgList env_strings = {0};
|
||||
for(RD_Cfg *child = target->first; child != &rd_nil_cfg; child = child->next)
|
||||
CFG_Node *target = rd_cfg_from_eval_space(space);
|
||||
CFG_NodePtrList env_strings = {0};
|
||||
for(CFG_Node *child = target->first; child != &cfg_nil_node; child = child->next)
|
||||
{
|
||||
if(str8_match(child->string, str8_lit("watch"), 0))
|
||||
{
|
||||
rd_cfg_list_push(scratch.arena, &env_strings, child);
|
||||
cfg_node_ptr_list_push(scratch.arena, &env_strings, child);
|
||||
}
|
||||
}
|
||||
accel->cfgs = rd_cfg_array_from_list(arena, &env_strings);
|
||||
accel->cfgs = cfg_node_ptr_array_from_list(arena, &env_strings);
|
||||
scratch_end(scratch);
|
||||
}
|
||||
E_IRExt result = {accel};
|
||||
@@ -1149,11 +1149,11 @@ E_TYPE_ACCESS_FUNCTION_DEF(watches)
|
||||
if(expr->kind == E_ExprKind_ArrayIndex)
|
||||
{
|
||||
RD_WatchesAccel *accel = (RD_WatchesAccel *)lhs_irtree->user_data;
|
||||
RD_CfgArray *cfgs = &accel->cfgs;
|
||||
CFG_NodePtrArray *cfgs = &accel->cfgs;
|
||||
E_Value rhs_value = e_value_from_expr(expr->first->next);
|
||||
if(0 <= rhs_value.u64 && rhs_value.u64 < cfgs->count)
|
||||
{
|
||||
RD_Cfg *cfg = cfgs->v[rhs_value.u64];
|
||||
CFG_Node *cfg = cfgs->v[rhs_value.u64];
|
||||
result.root = e_irtree_set_space(arena, rd_eval_space_from_cfg(cfg), e_irtree_const_u(arena, 0));
|
||||
result.type_key = e_type_key_cons_array(e_type_key_basic(E_TypeKind_U8), cfg->first->string.size, E_TypeFlag_IsCodeText);
|
||||
result.mode = E_Mode_Offset;
|
||||
@@ -1167,22 +1167,22 @@ E_TYPE_EXPAND_INFO_FUNCTION_DEF(watches)
|
||||
RD_WatchesAccel *ext = (RD_WatchesAccel *)eval.irtree.user_data;
|
||||
RD_WatchesAccel *accel = push_array(arena, RD_WatchesAccel, 1);
|
||||
{
|
||||
RD_CfgArray cfgs__filtered = ext->cfgs;
|
||||
CFG_NodePtrArray cfgs__filtered = ext->cfgs;
|
||||
if(filter.size != 0)
|
||||
{
|
||||
Temp scratch = scratch_begin(&arena, 1);
|
||||
RD_CfgList cfgs_list__filtered = {0};
|
||||
CFG_NodePtrList cfgs_list__filtered = {0};
|
||||
for EachIndex(idx, ext->cfgs.count)
|
||||
{
|
||||
RD_Cfg *watch = ext->cfgs.v[idx];
|
||||
CFG_Node *watch = ext->cfgs.v[idx];
|
||||
String8 string = watch->first->string;
|
||||
FuzzyMatchRangeList matches = fuzzy_match_find(scratch.arena, filter, string);
|
||||
if(matches.count == matches.needle_part_count)
|
||||
{
|
||||
rd_cfg_list_push(scratch.arena, &cfgs_list__filtered, watch);
|
||||
cfg_node_ptr_list_push(scratch.arena, &cfgs_list__filtered, watch);
|
||||
}
|
||||
}
|
||||
cfgs__filtered = rd_cfg_array_from_list(arena, &cfgs_list__filtered);
|
||||
cfgs__filtered = cfg_node_ptr_array_from_list(arena, &cfgs_list__filtered);
|
||||
scratch_end(scratch);
|
||||
}
|
||||
accel->cfgs = cfgs__filtered;
|
||||
@@ -1202,7 +1202,7 @@ E_TYPE_EXPAND_RANGE_FUNCTION_DEF(watches)
|
||||
U64 cfg_idx = read_range.min + idx;
|
||||
if(cfg_idx < accel->cfgs.count)
|
||||
{
|
||||
RD_Cfg *cfg = accel->cfgs.v[cfg_idx];
|
||||
CFG_Node *cfg = accel->cfgs.v[cfg_idx];
|
||||
evals_out[idx] = e_eval_from_string(cfg->first->string);
|
||||
}
|
||||
}
|
||||
@@ -1651,7 +1651,7 @@ E_TYPE_EXPAND_INFO_FUNCTION_DEF(debug_info_table)
|
||||
B32 stale = 0;
|
||||
accel->section = section;
|
||||
accel->items = di_search_item_array_from_target_query(rd_state->frame_access, section, filter, endt_us, &stale);
|
||||
RD_Cfg *last_successful_query_cfg = rd_immediate_cfg_from_keyf("last_successful_query_%I64x_%I64u", rd_regs()->view, (U64)section);
|
||||
CFG_Node *last_successful_query_cfg = rd_immediate_cfg_from_keyf("last_successful_query_%I64x_%I64u", rd_regs()->view, (U64)section);
|
||||
if(stale)
|
||||
{
|
||||
String8 last_query = last_successful_query_cfg->first->string;
|
||||
@@ -1660,7 +1660,7 @@ E_TYPE_EXPAND_INFO_FUNCTION_DEF(debug_info_table)
|
||||
}
|
||||
else
|
||||
{
|
||||
rd_cfg_new_replace(last_successful_query_cfg, filter);
|
||||
cfg_node_new_replace(rd_state->cfg, last_successful_query_cfg, filter);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// Copyright (c) Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
internal RD_CfgList
|
||||
internal CFG_NodePtrList
|
||||
rd_cfg_tree_list_from_string__pre_0_9_16(Arena *arena, String8 file_path, String8 data)
|
||||
{
|
||||
RD_CfgList result = {0};
|
||||
CFG_NodePtrList result = {0};
|
||||
{
|
||||
Temp scratch = scratch_begin(&arena, 1);
|
||||
String8 folder_path = str8_skip_last_slash(file_path);
|
||||
@@ -24,20 +24,20 @@ rd_cfg_tree_list_from_string__pre_0_9_16(Arena *arena, String8 file_path, String
|
||||
String8 stderr_path = md_child_from_string(tln, str8_lit("stderr_path"), 0)->first->string;
|
||||
String8 stdin_path = md_child_from_string(tln, str8_lit("stdin_path"), 0)->first->string;
|
||||
String8 debug_subprocesses= md_child_from_string(tln, str8_lit("debug_subprocesses"), 0)->first->string;
|
||||
RD_Cfg *dst_root = rd_cfg_new(&rd_nil_cfg, str8_lit("target"));
|
||||
rd_cfg_list_push(arena, &result, dst_root);
|
||||
CFG_Node *dst_root = cfg_node_new(rd_state->cfg, &cfg_nil_node, str8_lit("target"));
|
||||
cfg_node_ptr_list_push(arena, &result, dst_root);
|
||||
{
|
||||
if(executable.size != 0) { rd_cfg_new(rd_cfg_new(dst_root, str8_lit("executable")), path_absolute_dst_from_relative_dst_src(scratch.arena, executable, folder_path)); }
|
||||
if(arguments.size != 0) { rd_cfg_new(rd_cfg_new(dst_root, str8_lit("arguments")), raw_from_escaped_str8(scratch.arena, arguments)); }
|
||||
if(working_directory.size != 0) { rd_cfg_new(rd_cfg_new(dst_root, str8_lit("working_directory")), path_absolute_dst_from_relative_dst_src(scratch.arena, working_directory, folder_path)); }
|
||||
if(entry_point.size != 0) { rd_cfg_new(rd_cfg_new(dst_root, str8_lit("entry_point")), raw_from_escaped_str8(scratch.arena, entry_point)); }
|
||||
if(stdout_path.size != 0) { rd_cfg_new(rd_cfg_new(dst_root, str8_lit("stdout_path")), path_absolute_dst_from_relative_dst_src(scratch.arena, stdout_path, folder_path)); }
|
||||
if(stderr_path.size != 0) { rd_cfg_new(rd_cfg_new(dst_root, str8_lit("stderr_path")), path_absolute_dst_from_relative_dst_src(scratch.arena, stderr_path, folder_path)); }
|
||||
if(stdin_path.size != 0) { rd_cfg_new(rd_cfg_new(dst_root, str8_lit("stdin_path")), path_absolute_dst_from_relative_dst_src(scratch.arena, stdin_path, folder_path)); }
|
||||
if(debug_subprocesses.size != 0) { rd_cfg_new(rd_cfg_new(dst_root, str8_lit("debug_subprocesses")), raw_from_escaped_str8(scratch.arena, debug_subprocesses)); }
|
||||
if(executable.size != 0) { cfg_node_new(rd_state->cfg, cfg_node_new(rd_state->cfg, dst_root, str8_lit("executable")), path_absolute_dst_from_relative_dst_src(scratch.arena, executable, folder_path)); }
|
||||
if(arguments.size != 0) { cfg_node_new(rd_state->cfg, cfg_node_new(rd_state->cfg, dst_root, str8_lit("arguments")), raw_from_escaped_str8(scratch.arena, arguments)); }
|
||||
if(working_directory.size != 0) { cfg_node_new(rd_state->cfg, cfg_node_new(rd_state->cfg, dst_root, str8_lit("working_directory")), path_absolute_dst_from_relative_dst_src(scratch.arena, working_directory, folder_path)); }
|
||||
if(entry_point.size != 0) { cfg_node_new(rd_state->cfg, cfg_node_new(rd_state->cfg, dst_root, str8_lit("entry_point")), raw_from_escaped_str8(scratch.arena, entry_point)); }
|
||||
if(stdout_path.size != 0) { cfg_node_new(rd_state->cfg, cfg_node_new(rd_state->cfg, dst_root, str8_lit("stdout_path")), path_absolute_dst_from_relative_dst_src(scratch.arena, stdout_path, folder_path)); }
|
||||
if(stderr_path.size != 0) { cfg_node_new(rd_state->cfg, cfg_node_new(rd_state->cfg, dst_root, str8_lit("stderr_path")), path_absolute_dst_from_relative_dst_src(scratch.arena, stderr_path, folder_path)); }
|
||||
if(stdin_path.size != 0) { cfg_node_new(rd_state->cfg, cfg_node_new(rd_state->cfg, dst_root, str8_lit("stdin_path")), path_absolute_dst_from_relative_dst_src(scratch.arena, stdin_path, folder_path)); }
|
||||
if(debug_subprocesses.size != 0) { cfg_node_new(rd_state->cfg, cfg_node_new(rd_state->cfg, dst_root, str8_lit("debug_subprocesses")), raw_from_escaped_str8(scratch.arena, debug_subprocesses)); }
|
||||
if(!str8_match(disabled_string, str8_lit("1"), 0))
|
||||
{
|
||||
rd_cfg_new(rd_cfg_new(dst_root, str8_lit("enabled")), str8_lit("1"));
|
||||
cfg_node_new(rd_state->cfg, cfg_node_new(rd_state->cfg, dst_root, str8_lit("enabled")), str8_lit("1"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -46,9 +46,9 @@ rd_cfg_tree_list_from_string__pre_0_9_16(Arena *arena, String8 file_path, String
|
||||
if(str8_match(tln->string, str8_lit("recent_file"), 0) ||
|
||||
str8_match(tln->string, str8_lit("recent_project"), 0))
|
||||
{
|
||||
RD_Cfg *dst_root = rd_cfg_new(&rd_nil_cfg, tln->string);
|
||||
rd_cfg_list_push(arena, &result, dst_root);
|
||||
rd_cfg_new(rd_cfg_new(dst_root, str8_lit("path")), path_absolute_dst_from_relative_dst_src(scratch.arena, tln->first->string, folder_path));
|
||||
CFG_Node *dst_root = cfg_node_new(rd_state->cfg, &cfg_nil_node, tln->string);
|
||||
cfg_node_ptr_list_push(arena, &result, dst_root);
|
||||
cfg_node_new(rd_state->cfg, cfg_node_new(rd_state->cfg, dst_root, str8_lit("path")), path_absolute_dst_from_relative_dst_src(scratch.arena, tln->first->string, folder_path));
|
||||
}
|
||||
|
||||
//- rjf: file path maps
|
||||
@@ -56,10 +56,10 @@ rd_cfg_tree_list_from_string__pre_0_9_16(Arena *arena, String8 file_path, String
|
||||
{
|
||||
String8 source = md_child_from_string(tln, str8_lit("source"), 0)->first->string;
|
||||
String8 dest = md_child_from_string(tln, str8_lit("dest"), 0)->first->string;
|
||||
RD_Cfg *dst_root = rd_cfg_new(&rd_nil_cfg, tln->string);
|
||||
rd_cfg_list_push(arena, &result, dst_root);
|
||||
rd_cfg_new(rd_cfg_new(dst_root, str8_lit("source")), path_absolute_dst_from_relative_dst_src(scratch.arena, source, folder_path));
|
||||
rd_cfg_new(rd_cfg_new(dst_root, str8_lit("dest")), path_absolute_dst_from_relative_dst_src(scratch.arena, dest, folder_path));
|
||||
CFG_Node *dst_root = cfg_node_new(rd_state->cfg, &cfg_nil_node, tln->string);
|
||||
cfg_node_ptr_list_push(arena, &result, dst_root);
|
||||
cfg_node_new(rd_state->cfg, cfg_node_new(rd_state->cfg, dst_root, str8_lit("source")), path_absolute_dst_from_relative_dst_src(scratch.arena, source, folder_path));
|
||||
cfg_node_new(rd_state->cfg, cfg_node_new(rd_state->cfg, dst_root, str8_lit("dest")), path_absolute_dst_from_relative_dst_src(scratch.arena, dest, folder_path));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,6 @@
|
||||
#ifndef RADDBG_LEGACY_CONFIG_H
|
||||
#define RADDBG_LEGACY_CONFIG_H
|
||||
|
||||
internal RD_CfgList rd_cfg_tree_list_from_string__pre_0_9_16(Arena *arena, String8 file_path, String8 data);
|
||||
internal CFG_NodePtrList rd_cfg_tree_list_from_string__pre_0_9_16(Arena *arena, String8 file_path, String8 data);
|
||||
|
||||
#endif // RADDBG_LEGACY_CONFIG_H
|
||||
|
||||
@@ -582,7 +582,7 @@ entry_point(CmdLine *cmd_line)
|
||||
if(dst_ws->cfg_id != rd_regs()->window)
|
||||
{
|
||||
Temp scratch = scratch_begin(0, 0);
|
||||
RD_PanelTree panel_tree = rd_panel_tree_from_cfg(scratch.arena, rd_cfg_from_id(dst_ws->cfg_id));
|
||||
RD_PanelTree panel_tree = rd_panel_tree_from_cfg(scratch.arena, cfg_node_from_id(dst_ws->cfg_id));
|
||||
rd_regs()->window = dst_ws->cfg_id;
|
||||
rd_regs()->panel = panel_tree.focused->cfg->id;
|
||||
rd_regs()->tab = panel_tree.focused->selected_tab->id;
|
||||
|
||||
+52
-52
@@ -174,20 +174,20 @@ rd_code_view_build(Arena *arena, RD_CodeViewState *cv, RD_CodeViewBuildFlags fla
|
||||
//
|
||||
if(rd_regs()->cursor.line == rd_regs()->mark.line)
|
||||
{
|
||||
RD_Cfg *view = rd_cfg_from_id(rd_regs()->view);
|
||||
CFG_Node *view = cfg_node_from_id(rd_regs()->view);
|
||||
RD_ViewState *vs = rd_view_state_from_cfg(view);
|
||||
if(!vs->query_is_open)
|
||||
{
|
||||
RD_Cfg *query = rd_cfg_child_from_string_or_alloc(view, str8_lit("query"));
|
||||
RD_Cfg *input = rd_cfg_child_from_string_or_alloc(query, str8_lit("input"));
|
||||
CFG_Node *query = cfg_node_child_from_string_or_alloc(rd_state->cfg, view, str8_lit("query"));
|
||||
CFG_Node *input = cfg_node_child_from_string_or_alloc(rd_state->cfg, query, str8_lit("input"));
|
||||
String8 text = txt_string_from_info_data_txt_rng(text_info, text_data, txt_rng(rd_regs()->cursor, rd_regs()->mark));
|
||||
if(text.size < 256)
|
||||
{
|
||||
rd_cfg_new_replace(input, text);
|
||||
cfg_node_new_replace(rd_state->cfg, input, text);
|
||||
}
|
||||
else
|
||||
{
|
||||
rd_cfg_new_replace(input, str8_zero());
|
||||
cfg_node_new_replace(rd_state->cfg, input, str8_zero());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -217,9 +217,9 @@ rd_code_view_build(Arena *arena, RD_CodeViewState *cv, RD_CodeViewBuildFlags fla
|
||||
code_slice_params.line_text = push_array(scratch.arena, String8, visible_line_count);
|
||||
code_slice_params.line_ranges = push_array(scratch.arena, Rng1U64, visible_line_count);
|
||||
code_slice_params.line_tokens = push_array(scratch.arena, TXT_TokenArray, visible_line_count);
|
||||
code_slice_params.line_bps = push_array(scratch.arena, RD_CfgList, visible_line_count);
|
||||
code_slice_params.line_bps = push_array(scratch.arena, CFG_NodePtrList, visible_line_count);
|
||||
code_slice_params.line_ips = push_array(scratch.arena, CTRL_EntityList, visible_line_count);
|
||||
code_slice_params.line_pins = push_array(scratch.arena, RD_CfgList, visible_line_count);
|
||||
code_slice_params.line_pins = push_array(scratch.arena, CFG_NodePtrList, visible_line_count);
|
||||
code_slice_params.line_vaddrs = push_array(scratch.arena, U64, visible_line_count);
|
||||
code_slice_params.line_infos = push_array(scratch.arena, D_LineList, visible_line_count);
|
||||
code_slice_params.text_info = text_info;
|
||||
@@ -252,10 +252,10 @@ rd_code_view_build(Arena *arena, RD_CodeViewState *cv, RD_CodeViewBuildFlags fla
|
||||
// rjf: find visible breakpoints for source code
|
||||
if(!dasm_lines) ProfScope("find visible breakpoints for source code")
|
||||
{
|
||||
RD_CfgList bps = rd_cfg_top_level_list_from_string(scratch.arena, str8_lit("breakpoint"));
|
||||
for(RD_CfgNode *n = bps.first; n != 0; n = n->next)
|
||||
CFG_NodePtrList bps = cfg_node_top_level_list_from_string(scratch.arena, str8_lit("breakpoint"));
|
||||
for(CFG_NodePtrNode *n = bps.first; n != 0; n = n->next)
|
||||
{
|
||||
RD_Cfg *bp = n->v;
|
||||
CFG_Node *bp = n->v;
|
||||
RD_Location loc = rd_location_from_cfg(bp);
|
||||
if(visible_line_num_range.min <= loc.pt.line && loc.pt.line <= visible_line_num_range.max)
|
||||
{
|
||||
@@ -266,7 +266,7 @@ rd_code_view_build(Arena *arena, RD_CodeViewState *cv, RD_CodeViewBuildFlags fla
|
||||
if(path_match_normalized(loc.file_path, override_n->string))
|
||||
{
|
||||
U64 slice_line_idx = (U64)(loc.pt.line-visible_line_num_range.min);
|
||||
rd_cfg_list_push(scratch.arena, &code_slice_params.line_bps[slice_line_idx], bp);
|
||||
cfg_node_ptr_list_push(scratch.arena, &code_slice_params.line_bps[slice_line_idx], bp);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -314,10 +314,10 @@ rd_code_view_build(Arena *arena, RD_CodeViewState *cv, RD_CodeViewBuildFlags fla
|
||||
// rjf: find visible watch pins for source code
|
||||
if(!dasm_lines) ProfScope("find visible watch pins for source code")
|
||||
{
|
||||
RD_CfgList wps = rd_cfg_top_level_list_from_string(scratch.arena, str8_lit("watch_pin"));
|
||||
for(RD_CfgNode *n = wps.first; n != 0; n = n->next)
|
||||
CFG_NodePtrList wps = cfg_node_top_level_list_from_string(scratch.arena, str8_lit("watch_pin"));
|
||||
for(CFG_NodePtrNode *n = wps.first; n != 0; n = n->next)
|
||||
{
|
||||
RD_Cfg *wp = n->v;
|
||||
CFG_Node *wp = n->v;
|
||||
RD_Location loc = rd_location_from_cfg(wp);
|
||||
if(visible_line_num_range.min <= loc.pt.line && loc.pt.line <= visible_line_num_range.max)
|
||||
{
|
||||
@@ -328,7 +328,7 @@ rd_code_view_build(Arena *arena, RD_CodeViewState *cv, RD_CodeViewBuildFlags fla
|
||||
if(path_match_normalized(loc.file_path, override_n->string))
|
||||
{
|
||||
U64 slice_line_idx = (loc.pt.line-visible_line_num_range.min);
|
||||
rd_cfg_list_push(scratch.arena, &code_slice_params.line_pins[slice_line_idx], wp);
|
||||
cfg_node_ptr_list_push(scratch.arena, &code_slice_params.line_pins[slice_line_idx], wp);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -376,10 +376,10 @@ rd_code_view_build(Arena *arena, RD_CodeViewState *cv, RD_CodeViewBuildFlags fla
|
||||
// rjf: find breakpoints mapping to this disasm
|
||||
if(dasm_lines) ProfScope("find breakpoints mapping to this disassembly")
|
||||
{
|
||||
RD_CfgList bps = rd_cfg_top_level_list_from_string(scratch.arena, str8_lit("breakpoint"));
|
||||
for(RD_CfgNode *n = bps.first; n != 0; n = n->next)
|
||||
CFG_NodePtrList bps = cfg_node_top_level_list_from_string(scratch.arena, str8_lit("breakpoint"));
|
||||
for(CFG_NodePtrNode *n = bps.first; n != 0; n = n->next)
|
||||
{
|
||||
RD_Cfg *bp = n->v;
|
||||
CFG_Node *bp = n->v;
|
||||
RD_Location loc = rd_location_from_cfg(bp);
|
||||
E_Value loc_value = e_value_from_string(loc.expr);
|
||||
if(contains_1u64(dasm_vaddr_range, loc_value.u64))
|
||||
@@ -390,7 +390,7 @@ rd_code_view_build(Arena *arena, RD_CodeViewState *cv, RD_CodeViewBuildFlags fla
|
||||
if(contains_1s64(visible_line_num_range, line_num))
|
||||
{
|
||||
U64 slice_line_idx = (line_num-visible_line_num_range.min);
|
||||
rd_cfg_list_push(scratch.arena, &code_slice_params.line_bps[slice_line_idx], bp);
|
||||
cfg_node_ptr_list_push(scratch.arena, &code_slice_params.line_bps[slice_line_idx], bp);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -399,10 +399,10 @@ rd_code_view_build(Arena *arena, RD_CodeViewState *cv, RD_CodeViewBuildFlags fla
|
||||
// rjf: find watch pins mapping to this disasm
|
||||
if(dasm_lines) ProfScope("find watch pins mapping to this disassembly")
|
||||
{
|
||||
RD_CfgList wps = rd_cfg_top_level_list_from_string(scratch.arena, str8_lit("watch_pin"));
|
||||
for(RD_CfgNode *n = wps.first; n != 0; n = n->next)
|
||||
CFG_NodePtrList wps = cfg_node_top_level_list_from_string(scratch.arena, str8_lit("watch_pin"));
|
||||
for(CFG_NodePtrNode *n = wps.first; n != 0; n = n->next)
|
||||
{
|
||||
RD_Cfg *wp = n->v;
|
||||
CFG_Node *wp = n->v;
|
||||
RD_Location loc = rd_location_from_cfg(wp);
|
||||
E_Value loc_value = e_value_from_string(loc.expr);
|
||||
if(contains_1u64(dasm_vaddr_range, loc_value.u64))
|
||||
@@ -413,7 +413,7 @@ rd_code_view_build(Arena *arena, RD_CodeViewState *cv, RD_CodeViewBuildFlags fla
|
||||
if(contains_1s64(visible_line_num_range, line_num))
|
||||
{
|
||||
U64 slice_line_idx = (line_num-visible_line_num_range.min);
|
||||
rd_cfg_list_push(scratch.arena, &code_slice_params.line_pins[slice_line_idx], wp);
|
||||
cfg_node_ptr_list_push(scratch.arena, &code_slice_params.line_pins[slice_line_idx], wp);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -942,8 +942,8 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
|
||||
{
|
||||
.module = &ctrl_entity_nil,
|
||||
.can_expand = ev_row_is_expandable(row),
|
||||
.group_cfg_parent = &rd_nil_cfg,
|
||||
.group_cfg_child = &rd_nil_cfg,
|
||||
.group_cfg_parent = &cfg_nil_node,
|
||||
.group_cfg_child = &cfg_nil_node,
|
||||
.group_entity = &ctrl_entity_nil,
|
||||
.callstack_thread = &ctrl_entity_nil,
|
||||
.view_ui_rule = &rd_nil_view_ui_rule,
|
||||
@@ -962,7 +962,7 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
|
||||
E_TypeKey block_type_key = e_type_key_unwrap(block_eval.irtree.type_key, E_TypeUnwrapFlag_Meta);
|
||||
E_TypeKind block_type_kind = e_type_kind_from_key(block_type_key);
|
||||
E_Type *block_type = e_type_from_key(block_type_key);
|
||||
RD_Cfg *evalled_cfg = rd_cfg_from_eval_space(row->eval.space);
|
||||
CFG_Node *evalled_cfg = rd_cfg_from_eval_space(row->eval.space);
|
||||
CTRL_Entity *evalled_entity = (row->eval.space.kind == RD_EvalSpaceKind_MetaCtrlEntity ? rd_ctrl_entity_from_eval_space(row->eval.space) : &ctrl_entity_nil);
|
||||
|
||||
////////////////////////////
|
||||
@@ -970,7 +970,7 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
|
||||
// are evaluating a cfg tree, or some descendant of it
|
||||
//
|
||||
B32 is_top_level = 0;
|
||||
if(evalled_cfg != &rd_nil_cfg)
|
||||
if(evalled_cfg != &cfg_nil_node)
|
||||
{
|
||||
E_TypeKey top_level_type_key = e_string2typekey_map_lookup(rd_state->meta_name2type_map, evalled_cfg->string);
|
||||
is_top_level = (row->eval.value.u64 == 0 && e_type_key_match(top_level_type_key, row->eval.irtree.type_key));
|
||||
@@ -1090,7 +1090,7 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
|
||||
block_type->expand.id_from_num == E_TYPE_EXPAND_ID_FROM_NUM_FUNCTION_NAME(environment)))
|
||||
{
|
||||
CFG_ID id = row->key.child_id;
|
||||
info.group_cfg_child = rd_cfg_from_id(id);
|
||||
info.group_cfg_child = cfg_node_from_id(id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1129,9 +1129,9 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
|
||||
{
|
||||
U64 column_count = maybe_table_type->count;
|
||||
info.cell_style_key = push_str8f(arena, "table_%I64u_cols", column_count);
|
||||
RD_Cfg *view = rd_cfg_from_id(rd_regs()->view);
|
||||
RD_Cfg *style = rd_cfg_child_from_string(view, info.cell_style_key);
|
||||
RD_Cfg *w_cfg = style->first;
|
||||
CFG_Node *view = cfg_node_from_id(rd_regs()->view);
|
||||
CFG_Node *style = cfg_node_child_from_string(view, info.cell_style_key);
|
||||
CFG_Node *w_cfg = style->first;
|
||||
F32 next_pct = 0;
|
||||
#define take_pct() (next_pct = (F32)f64_from_str8(w_cfg->string), w_cfg = w_cfg->next, next_pct)
|
||||
E_ParentKey(row->eval.key)
|
||||
@@ -1175,7 +1175,7 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
|
||||
////////////////////////////
|
||||
//- rjf: @watch_row_build_cells autocomplete rows
|
||||
//
|
||||
else if(rd_cfg_child_from_string(rd_cfg_from_id(rd_regs()->view), str8_lit("autocomplete")) != &rd_nil_cfg)
|
||||
else if(cfg_node_child_from_string(cfg_node_from_id(rd_regs()->view), str8_lit("autocomplete")) != &cfg_nil_node)
|
||||
{
|
||||
info.can_expand = 0;
|
||||
rd_watch_cell_list_push_new(arena, &info.cells, RD_WatchCellKind_Eval, row->eval, .flags = RD_WatchCellFlag_Expr|RD_WatchCellFlag_NoEval|RD_WatchCellFlag_Button|RD_WatchCellFlag_Indented, .pct = 1.f);
|
||||
@@ -1184,7 +1184,7 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
|
||||
////////////////////////////
|
||||
//- rjf: @watch_row_build_cells lister rows
|
||||
//
|
||||
else if(rd_cfg_child_from_string(rd_cfg_from_id(rd_regs()->view), str8_lit("lister")) != &rd_nil_cfg)
|
||||
else if(cfg_node_child_from_string(cfg_node_from_id(rd_regs()->view), str8_lit("lister")) != &cfg_nil_node)
|
||||
{
|
||||
info.can_expand = 0;
|
||||
RD_WatchCellFlags extra_flags = RD_WatchCellFlag_Expr;
|
||||
@@ -1202,11 +1202,11 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
|
||||
////////////////////////////
|
||||
//- rjf: @watch_row_build_cells top-level cfg evaluations
|
||||
//
|
||||
else if(is_top_level && evalled_cfg != &rd_nil_cfg)
|
||||
else if(is_top_level && evalled_cfg != &cfg_nil_node)
|
||||
{
|
||||
RD_Cfg *cfg = evalled_cfg;
|
||||
CFG_Node *cfg = evalled_cfg;
|
||||
rd_watch_cell_list_push_new(arena, &info.cells, RD_WatchCellKind_Eval, row->eval, .flags = RD_WatchCellFlag_Expr|RD_WatchCellFlag_NoEval|RD_WatchCellFlag_Button|RD_WatchCellFlag_Indented, .pct = 1.f);
|
||||
MD_NodePtrList schemas = rd_schemas_from_name(cfg->string);
|
||||
MD_NodePtrList schemas = cfg_schemas_from_name(scratch.arena, rd_state->cfg_schema_table, cfg->string);
|
||||
for(MD_NodePtrNode *n = schemas.first; n != 0; n = n->next)
|
||||
{
|
||||
MD_Node *schema = n->v;
|
||||
@@ -1222,8 +1222,8 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
|
||||
if(is_cmd_line_only)
|
||||
{
|
||||
B32 is_cmd_line = 0;
|
||||
RD_Cfg *cmd_line = rd_cfg_child_from_string(rd_state->root_cfg, str8_lit("command_line"));
|
||||
for(RD_Cfg *p = evalled_cfg->parent; p != &rd_nil_cfg; p = p->parent)
|
||||
CFG_Node *cmd_line = cfg_node_child_from_string(cfg_node_root(), str8_lit("command_line"));
|
||||
for(CFG_Node *p = evalled_cfg->parent; p != &cfg_nil_node; p = p->parent)
|
||||
{
|
||||
if(p == cmd_line)
|
||||
{
|
||||
@@ -1362,7 +1362,7 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
|
||||
////////////////////////////
|
||||
//- rjf: @watch_row_build_cells "add new" expression rows
|
||||
//
|
||||
else if(row->eval.expr == &e_expr_nil && info.group_cfg_name.size != 0 && info.group_cfg_child == &rd_nil_cfg)
|
||||
else if(row->eval.expr == &e_expr_nil && info.group_cfg_name.size != 0 && info.group_cfg_child == &cfg_nil_node)
|
||||
{
|
||||
rd_watch_cell_list_push_new(arena, &info.cells, RD_WatchCellKind_Eval, row->eval,
|
||||
.flags = RD_WatchCellFlag_Expr|RD_WatchCellFlag_NoEval|RD_WatchCellFlag_Indented, .pct = 1.f);
|
||||
@@ -1371,7 +1371,7 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
|
||||
////////////////////////////
|
||||
//- rjf: @watch_row_build_cells meta-evaluation booleans
|
||||
//
|
||||
else if(info.group_cfg_child == &rd_nil_cfg &&
|
||||
else if(info.group_cfg_child == &cfg_nil_node &&
|
||||
e_type_kind_from_key(e_type_key_unwrap(row->eval.irtree.type_key, E_TypeUnwrapFlag_AllDecorative)) == E_TypeKind_Bool &&
|
||||
(row->eval.space.kind == RD_EvalSpaceKind_MetaCfg ||
|
||||
row->eval.space.kind == RD_EvalSpaceKind_MetaCmd ||
|
||||
@@ -1387,9 +1387,9 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
|
||||
else if(block_type->kind == E_TypeKind_Set && str8_match(block_type->name, str8_lit("procedures"), 0))
|
||||
{
|
||||
info.cell_style_key = str8_lit("procedure_expr_eval");
|
||||
RD_Cfg *view = rd_cfg_from_id(rd_regs()->view);
|
||||
RD_Cfg *style = rd_cfg_child_from_string(view, info.cell_style_key);
|
||||
RD_Cfg *w_cfg = style->first;
|
||||
CFG_Node *view = cfg_node_from_id(rd_regs()->view);
|
||||
CFG_Node *style = cfg_node_child_from_string(view, info.cell_style_key);
|
||||
CFG_Node *w_cfg = style->first;
|
||||
F32 next_pct = 0;
|
||||
#define take_pct() (next_pct = (F32)f64_from_str8(w_cfg->string), w_cfg = w_cfg->next, next_pct)
|
||||
rd_watch_cell_list_push_new(arena, &info.cells, RD_WatchCellKind_Eval, row->eval,
|
||||
@@ -1409,9 +1409,9 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
|
||||
CTRL_Entity *process = ctrl_process_from_entity(info.callstack_thread);
|
||||
CTRL_Entity *module = ctrl_module_from_process_vaddr(process, info.callstack_vaddr);
|
||||
E_Eval module_eval = e_eval_from_stringf("query:control.%S", ctrl_string_from_handle(scratch.arena, module->handle));
|
||||
RD_Cfg *view = rd_cfg_from_id(rd_regs()->view);
|
||||
RD_Cfg *style = rd_cfg_child_from_string(view, info.cell_style_key);
|
||||
RD_Cfg *w_cfg = style->first;
|
||||
CFG_Node *view = cfg_node_from_id(rd_regs()->view);
|
||||
CFG_Node *style = cfg_node_child_from_string(view, info.cell_style_key);
|
||||
CFG_Node *w_cfg = style->first;
|
||||
F32 next_pct = 0;
|
||||
#define take_pct() (next_pct = (F32)f64_from_str8(w_cfg->string), w_cfg = w_cfg->next, next_pct)
|
||||
rd_watch_cell_list_push_new(arena, &info.cells, RD_WatchCellKind_CallStackFrame, row->eval, .default_pct = 0.05f, .pct = take_pct());
|
||||
@@ -1440,9 +1440,9 @@ rd_watch_row_info_from_row(Arena *arena, EV_Row *row)
|
||||
}
|
||||
}
|
||||
info.cell_style_key = str8_lit("normal");
|
||||
RD_Cfg *view = rd_cfg_from_id(rd_regs()->view);
|
||||
RD_Cfg *style = rd_cfg_child_from_string(view, info.cell_style_key);
|
||||
RD_Cfg *w_cfg = style->first;
|
||||
CFG_Node *view = cfg_node_from_id(rd_regs()->view);
|
||||
CFG_Node *style = cfg_node_child_from_string(view, info.cell_style_key);
|
||||
CFG_Node *w_cfg = style->first;
|
||||
F32 next_pct = 0;
|
||||
#define take_pct() (next_pct = (F32)f64_from_str8(w_cfg->string), w_cfg = w_cfg->next, next_pct)
|
||||
rd_watch_cell_list_push_new(arena, &info.cells, RD_WatchCellKind_Eval, row->eval,
|
||||
@@ -1484,7 +1484,7 @@ rd_info_from_watch_row_cell(Arena *arena, EV_Row *row, EV_StringFlags string_fla
|
||||
{
|
||||
.flags = cell->flags,
|
||||
.view_ui_rule = &rd_nil_view_ui_rule,
|
||||
.cfg = &rd_nil_cfg,
|
||||
.cfg = &cfg_nil_node,
|
||||
.entity = &ctrl_entity_nil,
|
||||
};
|
||||
|
||||
@@ -1493,7 +1493,7 @@ rd_info_from_watch_row_cell(Arena *arena, EV_Row *row, EV_StringFlags string_fla
|
||||
//
|
||||
E_Type *block_type = e_type_from_key(row->block->eval.irtree.type_key);
|
||||
E_Type *cell_type = e_type_from_key(cell->eval.irtree.type_key);
|
||||
MD_NodePtrList cell_schemas = rd_schemas_from_name(cell_type->name);
|
||||
MD_NodePtrList cell_schemas = cfg_schemas_from_name(scratch.arena, rd_state->cfg_schema_table, cell_type->name);
|
||||
if(cell->eval.space.u64s[1] == 0 && cell_schemas.count != 0)
|
||||
{
|
||||
result.cfg = rd_cfg_from_eval_space(cell->eval.space);
|
||||
@@ -1591,7 +1591,7 @@ rd_info_from_watch_row_cell(Arena *arena, EV_Row *row, EV_StringFlags string_fla
|
||||
}
|
||||
|
||||
//- rjf: cfg evaluation -> button for cfg
|
||||
else if(result.cfg != &rd_nil_cfg)
|
||||
else if(result.cfg != &cfg_nil_node)
|
||||
{
|
||||
result.expr_fstrs = rd_title_fstrs_from_cfg(arena, result.cfg, 0);
|
||||
result.flags |= RD_WatchCellFlag_Button;
|
||||
|
||||
@@ -124,8 +124,8 @@ struct RD_WatchRowInfo
|
||||
B32 can_expand;
|
||||
B32 expr_is_editable;
|
||||
String8 group_cfg_name;
|
||||
RD_Cfg *group_cfg_parent;
|
||||
RD_Cfg *group_cfg_child;
|
||||
CFG_Node *group_cfg_parent;
|
||||
CFG_Node *group_cfg_child;
|
||||
CTRL_Entity *group_entity;
|
||||
CTRL_Entity *callstack_thread;
|
||||
U64 callstack_unwind_index;
|
||||
@@ -140,7 +140,7 @@ typedef struct RD_WatchRowCellInfo RD_WatchRowCellInfo;
|
||||
struct RD_WatchRowCellInfo
|
||||
{
|
||||
RD_WatchCellFlags flags;
|
||||
RD_Cfg *cfg;
|
||||
CFG_Node *cfg;
|
||||
CTRL_Entity *entity;
|
||||
String8 cmd_name;
|
||||
String8 file_path;
|
||||
|
||||
+39
-39
@@ -5,7 +5,7 @@
|
||||
//~ rjf: UI Widgets: Fancy Title Strings
|
||||
|
||||
internal DR_FStrList
|
||||
rd_title_fstrs_from_cfg(Arena *arena, RD_Cfg *cfg, B32 include_extras)
|
||||
rd_title_fstrs_from_cfg(Arena *arena, CFG_Node *cfg, B32 include_extras)
|
||||
{
|
||||
DR_FStrList result = {0};
|
||||
{
|
||||
@@ -32,8 +32,8 @@ rd_title_fstrs_from_cfg(Arena *arena, RD_Cfg *cfg, B32 include_extras)
|
||||
RD_IconKind icon_kind = rd_icon_kind_from_code_name(cfg->string);
|
||||
B32 is_from_command_line = 0;
|
||||
{
|
||||
RD_Cfg *cmd_line_root = rd_cfg_child_from_string(rd_state->root_cfg, str8_lit("command_line"));
|
||||
for(RD_Cfg *p = cfg->parent; p != &rd_nil_cfg; p = p->parent)
|
||||
CFG_Node *cmd_line_root = cfg_node_child_from_string(cfg_node_root(), str8_lit("command_line"));
|
||||
for(CFG_Node *p = cfg->parent; p != &cfg_nil_node; p = p->parent)
|
||||
{
|
||||
if(p == cmd_line_root)
|
||||
{
|
||||
@@ -44,7 +44,7 @@ rd_title_fstrs_from_cfg(Arena *arena, RD_Cfg *cfg, B32 include_extras)
|
||||
}
|
||||
B32 is_within_window = 0;
|
||||
{
|
||||
for(RD_Cfg *p = cfg->parent; p != &rd_nil_cfg; p = p->parent)
|
||||
for(CFG_Node *p = cfg->parent; p != &cfg_nil_node; p = p->parent)
|
||||
{
|
||||
if(str8_match(p->string, str8_lit("window"), 0))
|
||||
{
|
||||
@@ -105,7 +105,7 @@ rd_title_fstrs_from_cfg(Arena *arena, RD_Cfg *cfg, B32 include_extras)
|
||||
CTRL_Event stop_event = d_ctrl_last_stop_event();
|
||||
if(stop_event.cause == CTRL_EventCause_UserBreakpoint)
|
||||
{
|
||||
RD_Cfg *bp = rd_cfg_from_id(stop_event.u64_code);
|
||||
CFG_Node *bp = cfg_node_from_id(stop_event.u64_code);
|
||||
if(bp == cfg)
|
||||
{
|
||||
CTRL_Entity *thread = ctrl_entity_from_handle(&d_state->ctrl_entity_store->ctx, stop_event.entity);
|
||||
@@ -147,7 +147,7 @@ rd_title_fstrs_from_cfg(Arena *arena, RD_Cfg *cfg, B32 include_extras)
|
||||
}
|
||||
|
||||
//- rjf: push bucket name
|
||||
if(cfg->parent == rd_state->root_cfg)
|
||||
if(cfg->parent == cfg_node_root())
|
||||
{
|
||||
if(str8_match(cfg->string, str8_lit("user"), 0))
|
||||
{
|
||||
@@ -328,7 +328,7 @@ rd_title_fstrs_from_cfg(Arena *arena, RD_Cfg *cfg, B32 include_extras)
|
||||
|
||||
//- rjf: push conditions
|
||||
{
|
||||
String8 condition = rd_cfg_child_from_string(cfg, str8_lit("condition"))->first->string;
|
||||
String8 condition = cfg_node_child_from_string(cfg, str8_lit("condition"))->first->string;
|
||||
if(condition.size != 0)
|
||||
{
|
||||
dr_fstrs_push_new(arena, &result, ¶ms, str8_lit("if "), .font = rd_font_from_slot(RD_FontSlot_Code), .raster_flags = rd_raster_flags_from_slot(RD_FontSlot_Code));
|
||||
@@ -350,7 +350,7 @@ rd_title_fstrs_from_cfg(Arena *arena, RD_Cfg *cfg, B32 include_extras)
|
||||
|
||||
//- rjf: push hit count
|
||||
{
|
||||
String8 hit_count_value_string = rd_cfg_child_from_string(cfg, str8_lit("hit_count"))->first->string;
|
||||
String8 hit_count_value_string = cfg_node_child_from_string(cfg, str8_lit("hit_count"))->first->string;
|
||||
U64 hit_count = 0;
|
||||
if(try_u64_from_str8_c_rules(hit_count_value_string, &hit_count) && hit_count != 0)
|
||||
{
|
||||
@@ -362,8 +362,8 @@ rd_title_fstrs_from_cfg(Arena *arena, RD_Cfg *cfg, B32 include_extras)
|
||||
//- rjf: special case: type views
|
||||
if(str8_match(cfg->string, str8_lit("type_view"), 0))
|
||||
{
|
||||
String8 src_string = rd_cfg_child_from_string(cfg, str8_lit("type"))->first->string;
|
||||
String8 dst_string = rd_cfg_child_from_string(cfg, str8_lit("expr"))->first->string;
|
||||
String8 src_string = cfg_node_child_from_string(cfg, str8_lit("type"))->first->string;
|
||||
String8 dst_string = cfg_node_child_from_string(cfg, str8_lit("expr"))->first->string;
|
||||
Vec4F32 src_color = rgba;
|
||||
Vec4F32 dst_color = rgba;
|
||||
DR_FStrList src_fstrs = {0};
|
||||
@@ -398,8 +398,8 @@ rd_title_fstrs_from_cfg(Arena *arena, RD_Cfg *cfg, B32 include_extras)
|
||||
//- rjf: special case: file path maps
|
||||
if(str8_match(cfg->string, str8_lit("file_path_map"), 0))
|
||||
{
|
||||
String8 src_string = rd_cfg_child_from_string(cfg, str8_lit("source"))->first->string;
|
||||
String8 dst_string = rd_cfg_child_from_string(cfg, str8_lit("dest"))->first->string;
|
||||
String8 src_string = cfg_node_child_from_string(cfg, str8_lit("source"))->first->string;
|
||||
String8 dst_string = cfg_node_child_from_string(cfg, str8_lit("dest"))->first->string;
|
||||
Vec4F32 src_color = rgba;
|
||||
Vec4F32 dst_color = rgba;
|
||||
if(src_string.size == 0)
|
||||
@@ -422,8 +422,8 @@ rd_title_fstrs_from_cfg(Arena *arena, RD_Cfg *cfg, B32 include_extras)
|
||||
//- rjf: special case: colors
|
||||
if(str8_match(cfg->string, str8_lit("theme_color"), 0))
|
||||
{
|
||||
String8 tags = rd_cfg_child_from_string(cfg, str8_lit("tags"))->first->string;
|
||||
String8 color_string = rd_cfg_child_from_string(cfg, str8_lit("value"))->first->string;
|
||||
String8 tags = cfg_node_child_from_string(cfg, str8_lit("tags"))->first->string;
|
||||
String8 color_string = cfg_node_child_from_string(cfg, str8_lit("value"))->first->string;
|
||||
U32 color_u32 = e_value_from_stringf("(uint32)(%S)", color_string).u32;
|
||||
Vec4F32 color = linear_from_srgba(rgba_from_u32(color_u32));
|
||||
if(tags.size != 0)
|
||||
@@ -860,7 +860,7 @@ rd_cmd_binding_buttons(String8 name, String8 filter, B32 add_new)
|
||||
UI_Signal sig = rd_icon_button(RD_IconKind_X, 0, str8_lit("###delete_binding"));
|
||||
if(ui_clicked(sig))
|
||||
{
|
||||
rd_cfg_release(rd_cfg_from_id(rd_state->bind_change_binding_id));
|
||||
cfg_node_release(rd_state->cfg, cfg_node_from_id(rd_state->bind_change_binding_id));
|
||||
rd_state->bind_change_active = 0;
|
||||
}
|
||||
}
|
||||
@@ -972,7 +972,7 @@ rd_cmd_list_menu_buttons(U64 count, String8 *cmd_names, U32 *fastpath_codepoints
|
||||
{
|
||||
rd_cmd(RD_CmdKind_RunCommand, .cmd_name = cmd_names[idx]);
|
||||
ui_ctx_menu_close();
|
||||
RD_Cfg *window = rd_cfg_from_id(rd_regs()->window);
|
||||
CFG_Node *window = cfg_node_from_id(rd_regs()->window);
|
||||
RD_WindowState *ws = rd_window_state_from_cfg(window);
|
||||
ws->menu_bar_focused = 0;
|
||||
}
|
||||
@@ -1308,14 +1308,14 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
|
||||
//- rjf: dragging cfgs/entities/expressions? -> drop site
|
||||
//
|
||||
B32 drop_can_hit_lines = 0;
|
||||
RD_Cfg *drop_cfg = &rd_nil_cfg;
|
||||
CFG_Node *drop_cfg = &cfg_nil_node;
|
||||
CTRL_Entity *drop_thread = &ctrl_entity_nil;
|
||||
String8 drop_expr = {0};
|
||||
Vec4F32 drop_color = pop_color;
|
||||
UI_Key drop_site_key = ui_key_from_stringf(top_container_box->key, "drop_site");
|
||||
if(rd_drag_is_active())
|
||||
{
|
||||
RD_Cfg *cfg = rd_cfg_from_id(rd_state->drag_drop_regs->cfg);
|
||||
CFG_Node *cfg = cfg_node_from_id(rd_state->drag_drop_regs->cfg);
|
||||
if(rd_state->drag_drop_regs_slot == RD_RegSlot_Cfg &&
|
||||
(str8_match(cfg->string, str8_lit("breakpoint"), 0) ||
|
||||
str8_match(cfg->string, str8_lit("watch_pin"), 0)))
|
||||
@@ -1553,8 +1553,8 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
|
||||
line_num += 1, line_idx += 1)
|
||||
{
|
||||
CTRL_EntityList line_ips = params->line_ips[line_idx];
|
||||
RD_CfgList line_bps = params->line_bps[line_idx];
|
||||
RD_CfgList line_pins = params->line_pins[line_idx];
|
||||
CFG_NodePtrList line_bps = params->line_bps[line_idx];
|
||||
CFG_NodePtrList line_pins = params->line_pins[line_idx];
|
||||
ui_set_next_hover_cursor(OS_Cursor_HandPoint);
|
||||
ui_set_next_background_color(v4f32(0, 0, 0, 0));
|
||||
UI_Box *line_margin_box = ui_build_box_from_stringf(UI_BoxFlag_Clickable*!!(params->flags & RD_CodeSliceFlag_Clickable)|UI_BoxFlag_DrawBackground|UI_BoxFlag_DrawActiveEffects, "line_margin_%I64x", line_num);
|
||||
@@ -1683,9 +1683,9 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
|
||||
}
|
||||
|
||||
//- rjf: build margin breakpoint ui
|
||||
for(RD_CfgNode *n = line_bps.first; n != 0; n = n->next)
|
||||
for(CFG_NodePtrNode *n = line_bps.first; n != 0; n = n->next)
|
||||
{
|
||||
RD_Cfg *bp = n->v;
|
||||
CFG_Node *bp = n->v;
|
||||
Vec4F32 bp_rgba = rd_color_from_cfg(bp);
|
||||
if(bp_rgba.w == 0)
|
||||
{
|
||||
@@ -1701,14 +1701,14 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
|
||||
RD_BreakpointBoxDrawExtData *bp_draw = push_array(ui_build_arena(), RD_BreakpointBoxDrawExtData, 1);
|
||||
{
|
||||
RD_Regs *hover_regs = rd_get_hover_regs();
|
||||
B32 is_hovering = (rd_cfg_from_id(hover_regs->cfg) == bp && rd_state->hover_regs_slot == RD_RegSlot_Cfg);
|
||||
B32 is_hovering = (cfg_node_from_id(hover_regs->cfg) == bp && rd_state->hover_regs_slot == RD_RegSlot_Cfg);
|
||||
bp_draw->color = bp_rgba;
|
||||
bp_draw->alive_t = ui_anim(ui_key_from_stringf(ui_key_zero(), "cfg_alive_t_%p", bp), 1.f, .rate = entity_alive_t_rate);
|
||||
bp_draw->hover_t = ui_anim(ui_key_from_stringf(ui_key_zero(), "cfg_hover_t_%p", bp), (F32)!!is_hovering, .rate = entity_hover_t_rate);
|
||||
bp_draw->do_lines = do_bp_lines;
|
||||
bp_draw->do_glow = do_bp_glow;
|
||||
bp_draw->is_disabled = bp_is_disabled;
|
||||
bp_draw->is_conditioned = (rd_cfg_child_from_string(bp, str8_lit("condition"))->first->string.size != 0);
|
||||
bp_draw->is_conditioned = (cfg_node_child_from_string(bp, str8_lit("condition"))->first->string.size != 0);
|
||||
if(params->line_vaddrs[line_idx] == 0)
|
||||
{
|
||||
D_LineList *lines = ¶ms->line_infos[line_idx];
|
||||
@@ -1773,9 +1773,9 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
|
||||
}
|
||||
|
||||
//- rjf: build margin watch pin ui
|
||||
for(RD_CfgNode *n = line_pins.first; n != 0; n = n->next)
|
||||
for(CFG_NodePtrNode *n = line_pins.first; n != 0; n = n->next)
|
||||
{
|
||||
RD_Cfg *pin = n->v;
|
||||
CFG_Node *pin = n->v;
|
||||
Vec4F32 color = rd_color_from_cfg(pin);
|
||||
if(color.w == 0)
|
||||
{
|
||||
@@ -2017,7 +2017,7 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
|
||||
line_num < params->line_num_range.max;
|
||||
line_num += 1, line_idx += 1)
|
||||
{
|
||||
RD_CfgList immediate_pins = {0};
|
||||
CFG_NodePtrList immediate_pins = {0};
|
||||
String8 line_text = params->line_text[line_idx];
|
||||
for(U64 off = 0, next_off = line_text.size;
|
||||
off < line_text.size;
|
||||
@@ -2086,29 +2086,29 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
|
||||
// rjf: build immediate pin for this markup
|
||||
if(expr_string.size != 0)
|
||||
{
|
||||
RD_Cfg *immediate_root = rd_immediate_cfg_from_keyf("markup_pin_%I64x_%I64x", line_num, off);
|
||||
RD_Cfg *pin = rd_cfg_child_from_string_or_alloc(immediate_root, str8_lit("watch_pin"));
|
||||
RD_Cfg *expr = rd_cfg_child_from_string_or_alloc(pin, str8_lit("expression"));
|
||||
rd_cfg_new_replace(expr, expr_string);
|
||||
rd_cfg_list_push(scratch.arena, &immediate_pins, pin);
|
||||
CFG_Node *immediate_root = rd_immediate_cfg_from_keyf("markup_pin_%I64x_%I64x", line_num, off);
|
||||
CFG_Node *pin = cfg_node_child_from_string_or_alloc(rd_state->cfg, immediate_root, str8_lit("watch_pin"));
|
||||
CFG_Node *expr = cfg_node_child_from_string_or_alloc(rd_state->cfg, pin, str8_lit("expression"));
|
||||
cfg_node_new_replace(rd_state->cfg, expr, expr_string);
|
||||
cfg_node_ptr_list_push(scratch.arena, &immediate_pins, pin);
|
||||
}
|
||||
}
|
||||
RD_CfgList pin_lists[] =
|
||||
CFG_NodePtrList pin_lists[] =
|
||||
{
|
||||
params->line_pins[line_idx],
|
||||
immediate_pins,
|
||||
};
|
||||
E_ParentKey(e_key_zero()) for EachElement(list_idx, pin_lists)
|
||||
{
|
||||
RD_CfgList pins = pin_lists[list_idx];
|
||||
CFG_NodePtrList pins = pin_lists[list_idx];
|
||||
if(pins.count != 0) UI_Parent(line_extras_boxes[line_idx])
|
||||
RD_Font(RD_FontSlot_Code)
|
||||
UI_FontSize(params->font_size)
|
||||
UI_PrefHeight(ui_px(params->line_height_px, 1.f))
|
||||
{
|
||||
for(RD_CfgNode *n = pins.first; n != 0; n = n->next)
|
||||
for(CFG_NodePtrNode *n = pins.first; n != 0; n = n->next)
|
||||
{
|
||||
RD_Cfg *pin = n->v;
|
||||
CFG_Node *pin = n->v;
|
||||
String8 pin_expr = rd_expr_from_cfg(pin);
|
||||
E_Eval eval = e_eval_from_string(pin_expr);
|
||||
String8 eval_string = {0};
|
||||
@@ -2243,7 +2243,7 @@ rd_code_slice(RD_CodeSliceParams *params, TxtPt *cursor, TxtPt *mark, S64 *prefe
|
||||
.cursor = line_vaddr == 0 ? txt_pt(line_num, 1) : txt_pt(0, 0),
|
||||
.vaddr = line_vaddr);
|
||||
}
|
||||
if(rd_state->drag_drop_regs_slot == RD_RegSlot_Cfg && drop_cfg != &rd_nil_cfg)
|
||||
if(rd_state->drag_drop_regs_slot == RD_RegSlot_Cfg && drop_cfg != &cfg_nil_node)
|
||||
{
|
||||
S64 line_num = mouse_pt.line;
|
||||
U64 line_idx = line_num - params->line_num_range.min;
|
||||
@@ -3917,7 +3917,7 @@ rd_cell(RD_CellParams *params, String8 string)
|
||||
// rjf: any valid *additive* op & autocomplete hint? -> perform autocomplete first, then re-compute op
|
||||
if(!(evt->flags & UI_EventFlag_Delete) && autocomplete_hint_string.size != 0)
|
||||
{
|
||||
RD_Cfg *window = rd_cfg_from_id(rd_regs()->window);
|
||||
CFG_Node *window = cfg_node_from_id(rd_regs()->window);
|
||||
RD_WindowState *ws = rd_window_state_from_cfg(window);
|
||||
RD_AutocompCursorInfo *autocomp_cursor_info = &ws->autocomp_cursor_info;
|
||||
String8 new_string = ui_push_string_replace_range(scratch.arena, edit_string, r1s64(autocomp_cursor_info->replaced_range.min+1, autocomp_cursor_info->replaced_range.max+1), autocomplete_hint_string);
|
||||
@@ -4015,7 +4015,7 @@ rd_cell(RD_CellParams *params, String8 string)
|
||||
}
|
||||
if(autocomplete_hint_string.size != 0)
|
||||
{
|
||||
RD_Cfg *window = rd_cfg_from_id(rd_regs()->window);
|
||||
CFG_Node *window = cfg_node_from_id(rd_regs()->window);
|
||||
RD_WindowState *ws = rd_window_state_from_cfg(window);
|
||||
RD_AutocompCursorInfo *autocomp_cursor_info = &ws->autocomp_cursor_info;
|
||||
String8 autocomplete_append_string = str8_skip(autocomplete_hint_string, params->cursor->column-1 - autocomp_cursor_info->replaced_range.min);
|
||||
|
||||
@@ -101,9 +101,9 @@ struct RD_CodeSliceParams
|
||||
String8 *line_text;
|
||||
Rng1U64 *line_ranges;
|
||||
TXT_TokenArray *line_tokens;
|
||||
RD_CfgList *line_bps;
|
||||
CFG_NodePtrList *line_bps;
|
||||
CTRL_EntityList *line_ips;
|
||||
RD_CfgList *line_pins;
|
||||
CFG_NodePtrList *line_pins;
|
||||
U64 *line_vaddrs;
|
||||
D_LineList *line_infos;
|
||||
DI_KeyList relevant_dbgi_keys;
|
||||
@@ -139,7 +139,7 @@ struct RD_CodeSliceSignal
|
||||
////////////////////////////////
|
||||
//~ rjf: UI Widgets: Fancy Title Strings
|
||||
|
||||
internal DR_FStrList rd_title_fstrs_from_cfg(Arena *arena, RD_Cfg *cfg, B32 include_extras);
|
||||
internal DR_FStrList rd_title_fstrs_from_cfg(Arena *arena, CFG_Node *cfg, B32 include_extras);
|
||||
internal DR_FStrList rd_title_fstrs_from_ctrl_entity(Arena *arena, CTRL_Entity *entity, B32 include_extras);
|
||||
internal DR_FStrList rd_title_fstrs_from_code_name(Arena *arena, String8 code_name);
|
||||
internal DR_FStrList rd_title_fstrs_from_file_path(Arena *arena, String8 file_path);
|
||||
|
||||
Reference in New Issue
Block a user