mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-04 04:48:40 +00:00
create pre-filtered types for meta evals; all of the same underlying data transforms are on a single meta-eval data bundle, but now each type of meta eval entity is exposed via a tighter type to the ui & eval system
This commit is contained in:
@@ -10891,6 +10891,12 @@ rd_frame(void)
|
||||
RD_EntityKind_WatchPin,
|
||||
RD_EntityKind_Target,
|
||||
};
|
||||
E_TypeKey evallable_kind_types[] =
|
||||
{
|
||||
e_type_key_cons_base(type(CTRL_BreakpointMetaEval)),
|
||||
e_type_key_cons_base(type(CTRL_PinMetaEval)),
|
||||
e_type_key_cons_base(type(CTRL_TargetMetaEval)),
|
||||
};
|
||||
for EachElement(idx, evallable_kinds)
|
||||
{
|
||||
RD_EntityList list = rd_query_cached_entity_list_with_kind(evallable_kinds[idx]);
|
||||
@@ -10901,7 +10907,7 @@ rd_frame(void)
|
||||
E_Expr *expr = e_push_expr(scratch.arena, E_ExprKind_LeafOffset, 0);
|
||||
expr->space = space;
|
||||
expr->mode = E_Mode_Offset;
|
||||
expr->type_key = meta_eval_type_key;
|
||||
expr->type_key = evallable_kind_types[idx];
|
||||
e_string2expr_map_insert(scratch.arena, ctx->macro_map, push_str8f(scratch.arena, "$%I64u", entity->id), expr);
|
||||
if(entity->string.size != 0)
|
||||
{
|
||||
@@ -10920,6 +10926,13 @@ rd_frame(void)
|
||||
CTRL_EntityKind_Thread,
|
||||
CTRL_EntityKind_Module,
|
||||
};
|
||||
E_TypeKey evallable_kind_types[] =
|
||||
{
|
||||
e_type_key_cons_base(type(CTRL_MachineMetaEval)),
|
||||
e_type_key_cons_base(type(CTRL_ProcessMetaEval)),
|
||||
e_type_key_cons_base(type(CTRL_ThreadMetaEval)),
|
||||
e_type_key_cons_base(type(CTRL_ModuleMetaEval)),
|
||||
};
|
||||
for EachElement(idx, evallable_kinds)
|
||||
{
|
||||
CTRL_EntityKind kind = evallable_kinds[idx];
|
||||
@@ -10931,7 +10944,7 @@ rd_frame(void)
|
||||
E_Expr *expr = e_push_expr(scratch.arena, E_ExprKind_LeafOffset, 0);
|
||||
expr->space = space;
|
||||
expr->mode = E_Mode_Offset;
|
||||
expr->type_key = meta_eval_type_key;
|
||||
expr->type_key = evallable_kind_types[idx];
|
||||
e_string2expr_map_insert(scratch.arena, ctx->macro_map, push_str8f(scratch.arena, "$_%I64x_%I64x", entity->handle.machine_id, entity->handle.dmn_handle.u64[0]), expr);
|
||||
if(entity->string.size != 0)
|
||||
{
|
||||
@@ -11034,10 +11047,10 @@ rd_frame(void)
|
||||
//
|
||||
EV_AutoViewRuleTable *auto_view_rule_table = push_array(scratch.arena, EV_AutoViewRuleTable, 1);
|
||||
{
|
||||
ev_auto_view_rule_table_push_new(scratch.arena, auto_view_rule_table, e_type_key_cons_base(type(CTRL_MetaEvalFrameArray)), str8_lit("slice"));
|
||||
ev_auto_view_rule_table_push_new(scratch.arena, auto_view_rule_table, e_type_key_cons_base(type(CTRL_MetaEvalFrameArray)), str8_lit("slice"), 1);
|
||||
for EachElement(idx, rd_collection_name_table)
|
||||
{
|
||||
ev_auto_view_rule_table_push_new(scratch.arena, auto_view_rule_table, collection_type_keys[idx], rd_collection_name_table[idx]);
|
||||
ev_auto_view_rule_table_push_new(scratch.arena, auto_view_rule_table, collection_type_keys[idx], rd_collection_name_table[idx], 1);
|
||||
}
|
||||
}
|
||||
ev_select_auto_view_rule_table(auto_view_rule_table);
|
||||
|
||||
@@ -2662,7 +2662,13 @@ rd_watch_view_build(RD_WatchViewState *ewv, RD_WatchViewFlags flags, String8 roo
|
||||
cell_autocomp_flags = RD_AutoCompListerFlag_ViewRules;
|
||||
if(cell_pre_edit_string.size == 0)
|
||||
{
|
||||
cell_ghost_text = ev_auto_view_rule_from_type_key(row_eval.type_key);
|
||||
EV_ViewRuleList *auto_view_rules = ev_auto_view_rules_from_type_key(scratch.arena, row_eval.type_key, 0, 1);
|
||||
String8List strings = {0};
|
||||
for(EV_ViewRuleNode *n = auto_view_rules->first; n != 0; n = n->next)
|
||||
{
|
||||
str8_list_push(scratch.arena, &strings, n->v.root->string);
|
||||
}
|
||||
cell_ghost_text = str8_list_join(scratch.arena, &strings, &(StringJoin){.sep = str8_lit(", ")});
|
||||
}
|
||||
}break;
|
||||
case RD_WatchViewColumnKind_CallStackFrameSelection:
|
||||
|
||||
Reference in New Issue
Block a user