mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-18 01:52:22 -07:00
more work on new scheduler
This commit is contained in:
@@ -714,7 +714,7 @@ ev_block_tree_from_expr(Arena *arena, EV_View *view, String8 filter, String8 str
|
||||
// rjf: get task key
|
||||
EV_Key key = ev_key_make(ev_hash_from_key(t->parent_block->key), t->child_id);
|
||||
|
||||
// rjf: obtain expansion node
|
||||
// rjf: obtain expansion node & expansion state
|
||||
EV_ExpandNode *expand_node = ev_expand_node_from_key(view, key);
|
||||
B32 is_expanded = (expand_node != 0 && expand_node->expanded);
|
||||
|
||||
@@ -762,7 +762,6 @@ ev_block_tree_from_expr(Arena *arena, EV_View *view, String8 filter, String8 str
|
||||
}
|
||||
|
||||
// rjf: iterate children expansions, recurse
|
||||
// TODO(rjf): need to iterate these in index order, rather than "child_id" (which needs to be renamed to "child_id") order
|
||||
if(expand_node != 0 && expand_info.row_count != 0 && expand_view_rule_info->expr_expand_range_info)
|
||||
{
|
||||
// rjf: count children
|
||||
@@ -839,7 +838,6 @@ ev_block_tree_from_expr(Arena *arena, EV_View *view, String8 filter, String8 str
|
||||
scratch_end(scratch);
|
||||
}
|
||||
E_Expr *child_expr__resolved = ev_resolved_from_expr(arena, child_expr, child_view_rules);
|
||||
// TODO(rjf): need to mix in child's view rules
|
||||
Task *task = push_array(scratch.arena, Task, 1);
|
||||
SLLQueuePush(first_task, last_task, task);
|
||||
task->parent_block = expansion_block;
|
||||
|
||||
@@ -149,8 +149,8 @@ typedef EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_SIG(EV_ViewRuleExprExpandN
|
||||
typedef U32 EV_ViewRuleInfoFlags; // NOTE(rjf): see @view_rule_info
|
||||
enum
|
||||
{
|
||||
EV_ViewRuleInfoFlag_Inherited = (1<<0),
|
||||
EV_ViewRuleInfoFlag_Expandable = (1<<1),
|
||||
EV_ViewRuleInfoFlag_Inherited = (1<<0),
|
||||
EV_ViewRuleInfoFlag_Expandable = (1<<1),
|
||||
};
|
||||
|
||||
typedef struct EV_ViewRuleInfo EV_ViewRuleInfo;
|
||||
|
||||
@@ -691,8 +691,8 @@ str8_lit_comp("machines"),
|
||||
str8_lit_comp("processes"),
|
||||
str8_lit_comp("threads"),
|
||||
str8_lit_comp("modules"),
|
||||
str8_lit_comp("machine"),
|
||||
str8_lit_comp("process"),
|
||||
str8_lit_comp("scheduler_machine"),
|
||||
str8_lit_comp("scheduler_process"),
|
||||
str8_lit_comp("locals"),
|
||||
str8_lit_comp("registers"),
|
||||
str8_lit_comp("globals"),
|
||||
@@ -757,8 +757,8 @@ EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_NAME(machines),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_NAME(processes),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_NAME(threads),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_NAME(modules),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_NAME(machine),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_NAME(process),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_NAME(scheduler_machine),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_NAME(scheduler_process),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_NAME(locals),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_NAME(registers),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_NAME(globals),
|
||||
@@ -779,8 +779,8 @@ EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_NAME(machines),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_NAME(processes),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_NAME(threads),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_NAME(modules),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_NAME(machine),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_NAME(process),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_NAME(scheduler_machine),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_NAME(scheduler_process),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_NAME(locals),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_NAME(registers),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_NAME(globals),
|
||||
@@ -801,8 +801,8 @@ EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_NAME(machines),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_NAME(processes),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_NAME(threads),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_NAME(modules),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_NAME(machine),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_NAME(process),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_NAME(scheduler_machine),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_NAME(scheduler_process),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_NAME(identity),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_NAME(identity),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_NAME(globals),
|
||||
@@ -823,8 +823,8 @@ EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_NAME(machines),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_NAME(processes),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_NAME(threads),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_NAME(modules),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_NAME(machine),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_NAME(process),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_NAME(scheduler_machine),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_NAME(scheduler_process),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_NAME(identity),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_NAME(identity),
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_NAME(globals),
|
||||
|
||||
@@ -661,8 +661,8 @@ EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_DEF(machines);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_DEF(processes);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_DEF(threads);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_DEF(modules);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_DEF(machine);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_DEF(process);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_DEF(scheduler_machine);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_DEF(scheduler_process);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_DEF(locals);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_DEF(registers);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_DEF(globals);
|
||||
@@ -679,8 +679,8 @@ EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_DEF(machines);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_DEF(processes);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_DEF(threads);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_DEF(modules);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_DEF(machine);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_DEF(process);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_DEF(scheduler_machine);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_DEF(scheduler_process);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_DEF(locals);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_DEF(registers);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_DEF(globals);
|
||||
@@ -697,8 +697,8 @@ EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_DEF(machines);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_DEF(processes);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_DEF(threads);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_DEF(modules);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_DEF(machine);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_DEF(process);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_DEF(scheduler_machine);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_DEF(scheduler_process);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_DEF(globals);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_DEF(thread_locals);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_DEF(types);
|
||||
@@ -713,8 +713,8 @@ EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_DEF(machines);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_DEF(processes);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_DEF(threads);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_DEF(modules);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_DEF(machine);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_DEF(process);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_DEF(scheduler_machine);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_DEF(scheduler_process);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_DEF(globals);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_DEF(thread_locals);
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_DEF(types);
|
||||
|
||||
+19
-19
@@ -829,30 +829,30 @@ RD_IconTable:
|
||||
RD_CollectionTable:
|
||||
{
|
||||
//- rjf: frontend entity groups
|
||||
{watches Watch Null x}
|
||||
{targets Target Null x}
|
||||
{breakpoints Breakpoint Null x}
|
||||
{watch_pins WatchPin Null x}
|
||||
{file_path_maps FilePathMap Null x}
|
||||
{auto_view_rules AutoViewRule Null x}
|
||||
{watches Watch Null x}
|
||||
{targets Target Null x}
|
||||
{breakpoints Breakpoint Null x}
|
||||
{watch_pins WatchPin Null x}
|
||||
{file_path_maps FilePathMap Null x}
|
||||
{auto_view_rules AutoViewRule Null x}
|
||||
|
||||
//- rjf: control entity groups
|
||||
{machines Nil Machine x}
|
||||
{processes Nil Process x}
|
||||
{threads Nil Thread x}
|
||||
{modules Nil Module x}
|
||||
{machines Nil Machine x}
|
||||
{processes Nil Process x}
|
||||
{threads Nil Thread x}
|
||||
{modules Nil Module x}
|
||||
|
||||
//- rjf: control entity hierarchies
|
||||
{machine Nil Null x}
|
||||
{process Nil Null x}
|
||||
//- rjf: scheduling control entity hierarchies
|
||||
{scheduler_machine Nil Null x}
|
||||
{scheduler_process Nil Null x}
|
||||
|
||||
//- rjf: debug info / architecture watch tables
|
||||
{locals Nil Null -}
|
||||
{registers Nil Null -}
|
||||
{globals Nil Null x}
|
||||
{thread_locals Nil Null x}
|
||||
{types Nil Null x}
|
||||
{procedures Nil Null x}
|
||||
{locals Nil Null -}
|
||||
{registers Nil Null -}
|
||||
{globals Nil Null x}
|
||||
{thread_locals Nil Null x}
|
||||
{types Nil Null x}
|
||||
{procedures Nil Null x}
|
||||
}
|
||||
|
||||
@gen
|
||||
|
||||
+72
-17
@@ -8615,8 +8615,8 @@ EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_DEF(auto_view_rules){ return rd_ev
|
||||
|
||||
//- rjf: control entity groups
|
||||
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_DEF(machines) { return rd_ev_view_rule_expr_expand_info__meta_ctrl_entities(arena, view, filter, expr, params, CTRL_EntityKind_Machine); }
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_DEF(machines) { return rd_ev_view_rule_expr_expand_range_info__meta_ctrl_entities(arena, view, filter, expr, params, idx_range, user_data, CTRL_EntityKind_Machine); }
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_DEF(machines) { return rd_ev_view_rule_expr_expand_info__meta_ctrl_entities(arena, view, str8_zero(), expr, params, CTRL_EntityKind_Machine); }
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_DEF(machines) { return rd_ev_view_rule_expr_expand_range_info__meta_ctrl_entities(arena, view, str8_zero(), expr, params, idx_range, user_data, CTRL_EntityKind_Machine); }
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_DEF(machines) { return rd_ev_view_rule_expr_id_from_num__meta_ctrl_entities(num, user_data, CTRL_EntityKind_Machine); }
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_DEF(machines) { return rd_ev_view_rule_expr_num_from_id__meta_ctrl_entities(id, user_data, CTRL_EntityKind_Machine); }
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_DEF(processes) { return rd_ev_view_rule_expr_expand_info__meta_ctrl_entities(arena, view, filter, expr, params, CTRL_EntityKind_Process); }
|
||||
@@ -8634,7 +8634,7 @@ EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_DEF(modules) { return rd_ev_vie
|
||||
|
||||
//- rjf: control entity hierarchies
|
||||
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_DEF(machine)
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_DEF(scheduler_machine)
|
||||
{
|
||||
EV_ExpandInfo info = {0};
|
||||
Temp scratch = scratch_begin(&arena, 1);
|
||||
@@ -8659,7 +8659,7 @@ EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_DEF(machine)
|
||||
return info;
|
||||
}
|
||||
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_DEF(machine)
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_DEF(scheduler_machine)
|
||||
{
|
||||
EV_ExpandRangeInfo info = {0};
|
||||
{
|
||||
@@ -8688,17 +8688,17 @@ EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_DEF(machine)
|
||||
return info;
|
||||
}
|
||||
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_DEF(machine)
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_DEF(scheduler_machine)
|
||||
{
|
||||
return num;
|
||||
}
|
||||
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_DEF(machine)
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_DEF(scheduler_machine)
|
||||
{
|
||||
return id;
|
||||
}
|
||||
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_DEF(process)
|
||||
EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_DEF(scheduler_process)
|
||||
{
|
||||
EV_ExpandInfo info = {0};
|
||||
Temp scratch = scratch_begin(&arena, 1);
|
||||
@@ -8711,7 +8711,39 @@ EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_DEF(process)
|
||||
{
|
||||
if(child->kind == CTRL_EntityKind_Thread)
|
||||
{
|
||||
ctrl_entity_list_push(scratch.arena, &threads, child);
|
||||
B32 is_in_filter = 1;
|
||||
if(filter.size != 0)
|
||||
{
|
||||
is_in_filter = 0;
|
||||
FuzzyMatchRangeList matches = fuzzy_match_find(scratch.arena, filter, child->string);
|
||||
if(matches.count == matches.needle_part_count)
|
||||
{
|
||||
is_in_filter = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
DI_Scope *di_scope = di_scope_open();
|
||||
CTRL_Unwind unwind = d_query_cached_unwind_from_thread(child);
|
||||
CTRL_CallStack call_stack = ctrl_call_stack_from_unwind(scratch.arena, di_scope, process, &unwind);
|
||||
for(U64 idx = 0; idx < call_stack.concrete_frame_count && idx < 5; idx += 1)
|
||||
{
|
||||
CTRL_CallStackFrame *f = &call_stack.frames[idx];
|
||||
String8 name = {0};
|
||||
name.str = rdi_string_from_idx(f->rdi, f->procedure->name_string_idx, &name.size);
|
||||
FuzzyMatchRangeList matches = fuzzy_match_find(scratch.arena, filter, name);
|
||||
if(matches.count == matches.needle_part_count)
|
||||
{
|
||||
is_in_filter = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
di_scope_close(di_scope);
|
||||
}
|
||||
}
|
||||
if(is_in_filter)
|
||||
{
|
||||
ctrl_entity_list_push(scratch.arena, &threads, child);
|
||||
}
|
||||
}
|
||||
}
|
||||
CTRL_EntityArray *threads_array = push_array(arena, CTRL_EntityArray, 1);
|
||||
@@ -8723,7 +8755,7 @@ EV_VIEW_RULE_EXPR_EXPAND_INFO_FUNCTION_DEF(process)
|
||||
return info;
|
||||
}
|
||||
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_DEF(process)
|
||||
EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_DEF(scheduler_process)
|
||||
{
|
||||
EV_ExpandRangeInfo info = {0};
|
||||
{
|
||||
@@ -8752,12 +8784,12 @@ EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_DEF(process)
|
||||
return info;
|
||||
}
|
||||
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_DEF(process)
|
||||
EV_VIEW_RULE_EXPR_EXPAND_ID_FROM_NUM_FUNCTION_DEF(scheduler_process)
|
||||
{
|
||||
return num;
|
||||
}
|
||||
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_DEF(process)
|
||||
EV_VIEW_RULE_EXPR_EXPAND_NUM_FROM_ID_FUNCTION_DEF(scheduler_process)
|
||||
{
|
||||
return id;
|
||||
}
|
||||
@@ -8902,8 +8934,22 @@ rd_ev_view_rule_expr_expand_info__meta_entities(Arena *arena, EV_View *view, Str
|
||||
break;
|
||||
}
|
||||
}
|
||||
FuzzyMatchRangeList matches = fuzzy_match_find(scratch.arena, filter, entity_expr_string);
|
||||
if(is_collection || matches.count == matches.needle_part_count)
|
||||
B32 is_in_filter = 1;
|
||||
if(!is_collection && filter.size != 0)
|
||||
{
|
||||
RD_Entity *loc = rd_entity_child_from_kind(entity, RD_EntityKind_Location);
|
||||
RD_Entity *exe = rd_entity_child_from_kind(entity, RD_EntityKind_Executable);
|
||||
RD_Entity *args = rd_entity_child_from_kind(entity, RD_EntityKind_Arguments);
|
||||
FuzzyMatchRangeList expr_matches = fuzzy_match_find(scratch.arena, filter, entity_expr_string);
|
||||
FuzzyMatchRangeList loc_matches = fuzzy_match_find(scratch.arena, filter, loc->string);
|
||||
FuzzyMatchRangeList exe_matches = fuzzy_match_find(scratch.arena, filter, exe->string);
|
||||
FuzzyMatchRangeList args_matches = fuzzy_match_find(scratch.arena, filter, args->string);
|
||||
is_in_filter = (expr_matches.count == expr_matches.needle_part_count ||
|
||||
loc_matches.count == loc_matches.needle_part_count ||
|
||||
exe_matches.count == exe_matches.needle_part_count ||
|
||||
args_matches.count == args_matches.needle_part_count);
|
||||
}
|
||||
if(is_collection || is_in_filter)
|
||||
{
|
||||
rd_entity_list_push(scratch.arena, &entities_filtered, entity);
|
||||
}
|
||||
@@ -9006,8 +9052,17 @@ rd_ev_view_rule_expr_expand_info__meta_ctrl_entities(Arena *arena, EV_View *view
|
||||
for(CTRL_EntityNode *n = entities.first; n != 0; n = n->next)
|
||||
{
|
||||
CTRL_Entity *entity = n->v;
|
||||
FuzzyMatchRangeList matches = fuzzy_match_find(scratch.arena, filter, entity->string);
|
||||
if(matches.count == matches.needle_part_count)
|
||||
B32 is_in_filter = 1;
|
||||
if(filter.size != 0)
|
||||
{
|
||||
is_in_filter = 0;
|
||||
FuzzyMatchRangeList matches = fuzzy_match_find(scratch.arena, filter, entity->string);
|
||||
if(matches.count == matches.needle_part_count)
|
||||
{
|
||||
is_in_filter = 1;
|
||||
}
|
||||
}
|
||||
if(is_in_filter)
|
||||
{
|
||||
ctrl_entity_list_push(scratch.arena, &entities_filtered, entity);
|
||||
}
|
||||
@@ -11977,8 +12032,8 @@ 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"), 1);
|
||||
ev_auto_view_rule_table_push_new(scratch.arena, auto_view_rule_table, e_type_key_cons_base(type(CTRL_MachineMetaEval)), str8_lit("machine"), 1);
|
||||
ev_auto_view_rule_table_push_new(scratch.arena, auto_view_rule_table, e_type_key_cons_base(type(CTRL_ProcessMetaEval)), str8_lit("process"), 1);
|
||||
ev_auto_view_rule_table_push_new(scratch.arena, auto_view_rule_table, e_type_key_cons_base(type(CTRL_MachineMetaEval)), str8_lit("scheduler_machine"), 1);
|
||||
ev_auto_view_rule_table_push_new(scratch.arena, auto_view_rule_table, e_type_key_cons_base(type(CTRL_ProcessMetaEval)), str8_lit("scheduler_process"), 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], 1);
|
||||
|
||||
@@ -6,9 +6,6 @@
|
||||
//
|
||||
// [ ] remainder of @msgs pass:
|
||||
// [ ] entity listers - kill-specific-process, etc.
|
||||
// [ ] new universal ctx menu, hover, tooltips systems
|
||||
// [ ] `switch` replacement (recent files history)
|
||||
// [ ] resolving name as file or #include
|
||||
// [ ] new `restart processes` path
|
||||
// [ ] remainder of @msgs
|
||||
//
|
||||
@@ -521,6 +518,9 @@
|
||||
// given types, just query if no other view rule is present, & autofill
|
||||
// when editing)
|
||||
// [x] decay arrays to pointers in pointer/value comparison
|
||||
// [x] new universal ctx menu, hover, tooltips systems
|
||||
// [x] `switch` replacement (recent files history)
|
||||
// [x] resolving name as file or #include
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Build Options
|
||||
|
||||
+25
-17
@@ -1540,7 +1540,6 @@ rd_watch_view_build(RD_WatchViewState *ewv, RD_WatchViewFlags flags, String8 roo
|
||||
(selection_tbl.min.y != 0 || selection_tbl.min.y != 0))
|
||||
{
|
||||
Vec2S64 selection_dim = dim_2s64(selection_tbl);
|
||||
ewv->text_editing = 1;
|
||||
arena_clear(ewv->text_edit_arena);
|
||||
ewv->text_edit_state_slots_count = u64_up_to_pow2(selection_dim.y+1);
|
||||
ewv->text_edit_state_slots_count = Max(ewv->text_edit_state_slots_count, 64);
|
||||
@@ -1550,23 +1549,29 @@ rd_watch_view_build(RD_WatchViewState *ewv, RD_WatchViewFlags flags, String8 roo
|
||||
EV_Row *row = rows.first;
|
||||
for(S64 y = selection_tbl.min.y; y <= selection_tbl.max.y; y += 1, row = row->next)
|
||||
{
|
||||
for(S64 x = selection_tbl.min.x; x <= selection_tbl.max.x; x += 1)
|
||||
RD_WatchViewRowInfo row_info = rd_watch_view_row_info_from_row(row);
|
||||
RD_WatchViewRowKind row_kind = rd_watch_view_row_kind_from_flags_row_info(flags, row, &row_info);
|
||||
if(row_kind == RD_WatchViewRowKind_Normal)
|
||||
{
|
||||
RD_WatchViewColumn *col = rd_watch_view_column_from_x(ewv, x);
|
||||
String8 string = rd_string_from_eval_viz_row_column(scratch.arena, eval_view, row, col, string_flags, default_radix, ui_top_font(), ui_top_font_size(), row_string_max_size_px);
|
||||
string.size = Min(string.size, sizeof(ewv->dummy_text_edit_state.input_buffer));
|
||||
RD_WatchViewPoint pt = {x, row->block->key, row->key};
|
||||
U64 hash = ev_hash_from_key(pt.key);
|
||||
U64 slot_idx = hash%ewv->text_edit_state_slots_count;
|
||||
RD_WatchViewTextEditState *edit_state = push_array(ewv->text_edit_arena, RD_WatchViewTextEditState, 1);
|
||||
SLLStackPush_N(ewv->text_edit_state_slots[slot_idx], edit_state, pt_hash_next);
|
||||
edit_state->pt = pt;
|
||||
edit_state->cursor = txt_pt(1, string.size+1);
|
||||
edit_state->mark = txt_pt(1, 1);
|
||||
edit_state->input_size = string.size;
|
||||
MemoryCopy(edit_state->input_buffer, string.str, string.size);
|
||||
edit_state->initial_size = string.size;
|
||||
MemoryCopy(edit_state->initial_buffer, string.str, string.size);
|
||||
ewv->text_editing = 1;
|
||||
for(S64 x = selection_tbl.min.x; x <= selection_tbl.max.x; x += 1)
|
||||
{
|
||||
RD_WatchViewColumn *col = rd_watch_view_column_from_x(ewv, x);
|
||||
String8 string = rd_string_from_eval_viz_row_column(scratch.arena, eval_view, row, col, string_flags, default_radix, ui_top_font(), ui_top_font_size(), row_string_max_size_px);
|
||||
string.size = Min(string.size, sizeof(ewv->dummy_text_edit_state.input_buffer));
|
||||
RD_WatchViewPoint pt = {x, row->block->key, row->key};
|
||||
U64 hash = ev_hash_from_key(pt.key);
|
||||
U64 slot_idx = hash%ewv->text_edit_state_slots_count;
|
||||
RD_WatchViewTextEditState *edit_state = push_array(ewv->text_edit_arena, RD_WatchViewTextEditState, 1);
|
||||
SLLStackPush_N(ewv->text_edit_state_slots[slot_idx], edit_state, pt_hash_next);
|
||||
edit_state->pt = pt;
|
||||
edit_state->cursor = txt_pt(1, string.size+1);
|
||||
edit_state->mark = txt_pt(1, 1);
|
||||
edit_state->input_size = string.size;
|
||||
MemoryCopy(edit_state->input_buffer, string.str, string.size);
|
||||
edit_state->initial_size = string.size;
|
||||
MemoryCopy(edit_state->initial_buffer, string.str, string.size);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2601,6 +2606,8 @@ rd_watch_view_build(RD_WatchViewState *ewv, RD_WatchViewFlags flags, String8 roo
|
||||
{
|
||||
fstrs = rd_title_fstrs_from_ctrl_entity(scratch.arena, ctrl_entity, ui_top_palette()->text_weak, ui_top_font_size(), 1);
|
||||
}
|
||||
String8 fstrs_string = dr_string_from_fancy_string_list(scratch.arena, &fstrs);
|
||||
FuzzyMatchRangeList fstrs_matches = fuzzy_match_find(scratch.arena, filter, fstrs_string);
|
||||
UI_Key hover_t_key = ui_key_from_stringf(ui_key_zero(), "entity_hover_t_%p_%p", entity, ctrl_entity);
|
||||
F32 hover_t = ui_anim(hover_t_key, (F32)!!is_hovering, .rate = entity_hover_t_rate);
|
||||
if(!rd_entity_is_nil(entity))
|
||||
@@ -2651,6 +2658,7 @@ rd_watch_view_build(RD_WatchViewState *ewv, RD_WatchViewFlags flags, String8 roo
|
||||
}
|
||||
UI_Box *title_box = ui_build_box_from_key(UI_BoxFlag_DrawText|UI_BoxFlag_DisableTruncatedHover, ui_key_zero());
|
||||
ui_box_equip_display_fancy_strings(title_box, &fstrs);
|
||||
ui_box_equip_fuzzy_match_ranges(title_box, &fstrs_matches);
|
||||
UI_Signal sig = ui_signal_from_box(entity_box);
|
||||
if(ui_hovering(sig))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user