mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-22 03:35:00 -07:00
eval system syntax for opaque id evaluations
This commit is contained in:
+44
-34
@@ -3729,6 +3729,8 @@ df_ctrl_last_stop_event(void)
|
||||
////////////////////////////////
|
||||
//~ rjf: Evaluation Context
|
||||
|
||||
//- rjf: entity <-> eval space
|
||||
|
||||
internal DF_Entity *
|
||||
df_entity_from_eval_space(E_Space space)
|
||||
{
|
||||
@@ -3748,6 +3750,8 @@ df_eval_space_from_entity(DF_Entity *entity)
|
||||
return space;
|
||||
}
|
||||
|
||||
//- rjf: eval space reads/writes
|
||||
|
||||
internal B32
|
||||
df_eval_space_read(void *u, E_Space space, void *out, Rng1U64 range)
|
||||
{
|
||||
@@ -3905,25 +3909,7 @@ df_eval_space_write(void *u, E_Space space, void *in, Rng1U64 range)
|
||||
return result;
|
||||
}
|
||||
|
||||
internal Rng1U64
|
||||
df_range_from_eval_cfg(E_Eval eval, DF_CfgNode *cfg)
|
||||
{
|
||||
Temp scratch = scratch_begin(0, 0);
|
||||
E_Eval value_eval = e_value_eval_from_eval(eval);
|
||||
DF_CfgNode *size_cfg = df_cfg_node_child_from_string(cfg, str8_lit("size"), 0);
|
||||
String8 size_expr = df_string_from_cfg_node_children(scratch.arena, size_cfg);
|
||||
E_Eval size_eval = e_eval_from_string(scratch.arena, size_expr);
|
||||
E_Eval size_value_eval = e_value_eval_from_eval(size_eval);
|
||||
Rng1U64 result = {0};
|
||||
result.min = value_eval.value.u64;
|
||||
result.max = max_U64;
|
||||
if(size_eval.msgs.max_kind == E_MsgKind_Null)
|
||||
{
|
||||
result.max = result.min + size_value_eval.value.u64;
|
||||
}
|
||||
scratch_end(scratch);
|
||||
return result;
|
||||
}
|
||||
//- rjf: asynchronous streamed reads -> hashes from spaces
|
||||
|
||||
internal U128
|
||||
df_key_from_eval_space_range(E_Space space, Rng1U64 range)
|
||||
@@ -3947,21 +3933,6 @@ df_key_from_eval_space_range(E_Space space, Rng1U64 range)
|
||||
return result;
|
||||
}
|
||||
|
||||
internal E_Eval
|
||||
df_eval_from_eval_cfg_table(Arena *arena, E_Eval eval, DF_CfgTable *cfg)
|
||||
{
|
||||
for(DF_CfgVal *val = cfg->first_val; val != 0 && val != &df_g_nil_cfg_val; val = val->linear_next)
|
||||
{
|
||||
DF_CoreViewRuleSpec *spec = df_core_view_rule_spec_from_string(val->string);
|
||||
if(spec->info.flags & DF_CoreViewRuleSpecInfoFlag_EvalResolution)
|
||||
{
|
||||
eval = spec->info.eval_resolution(arena, eval, val);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return eval;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Evaluation Views
|
||||
|
||||
@@ -5436,6 +5407,45 @@ df_viz_row_is_editable(DF_EvalVizRow *row)
|
||||
return result;
|
||||
}
|
||||
|
||||
//- rjf: view rule config tree info extraction
|
||||
|
||||
internal Rng1U64
|
||||
df_range_from_eval_cfg(E_Eval eval, DF_CfgNode *cfg)
|
||||
{
|
||||
Temp scratch = scratch_begin(0, 0);
|
||||
E_Eval value_eval = e_value_eval_from_eval(eval);
|
||||
DF_CfgNode *size_cfg = df_cfg_node_child_from_string(cfg, str8_lit("size"), 0);
|
||||
String8 size_expr = df_string_from_cfg_node_children(scratch.arena, size_cfg);
|
||||
E_Eval size_eval = e_eval_from_string(scratch.arena, size_expr);
|
||||
E_Eval size_value_eval = e_value_eval_from_eval(size_eval);
|
||||
Rng1U64 result = {0};
|
||||
result.min = value_eval.value.u64;
|
||||
result.max = max_U64;
|
||||
if(size_eval.msgs.max_kind == E_MsgKind_Null)
|
||||
{
|
||||
result.max = result.min + size_value_eval.value.u64;
|
||||
}
|
||||
scratch_end(scratch);
|
||||
return result;
|
||||
}
|
||||
|
||||
//- rjf: view rule eval application
|
||||
|
||||
internal E_Eval
|
||||
df_eval_from_eval_cfg_table(Arena *arena, E_Eval eval, DF_CfgTable *cfg)
|
||||
{
|
||||
for(DF_CfgVal *val = cfg->first_val; val != 0 && val != &df_g_nil_cfg_val; val = val->linear_next)
|
||||
{
|
||||
DF_CoreViewRuleSpec *spec = df_core_view_rule_spec_from_string(val->string);
|
||||
if(spec->info.flags & DF_CoreViewRuleSpecInfoFlag_EvalResolution)
|
||||
{
|
||||
eval = spec->info.eval_resolution(arena, eval, val);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return eval;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Main State Accessors/Mutators
|
||||
|
||||
|
||||
+12
-3
@@ -1571,15 +1571,18 @@ internal void df_ctrl_run(DF_RunKind run, DF_Entity *run_thread, CTRL_RunFlags f
|
||||
internal CTRL_Event df_ctrl_last_stop_event(void);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Evaluation Context
|
||||
//~ rjf: Evaluation Spaces
|
||||
|
||||
//- rjf: entity <-> eval space
|
||||
internal DF_Entity *df_entity_from_eval_space(E_Space space);
|
||||
internal E_Space df_eval_space_from_entity(DF_Entity *entity);
|
||||
|
||||
//- rjf: eval space reads/writes
|
||||
internal B32 df_eval_space_read(void *u, E_Space space, void *out, Rng1U64 range);
|
||||
internal B32 df_eval_space_write(void *u, E_Space space, void *in, Rng1U64 range);
|
||||
internal Rng1U64 df_range_from_eval_cfg(E_Eval eval, DF_CfgNode *cfg);
|
||||
|
||||
//- rjf: asynchronous streamed reads -> hashes from spaces
|
||||
internal U128 df_key_from_eval_space_range(E_Space space, Rng1U64 range);
|
||||
internal E_Eval df_eval_from_eval_cfg_table(Arena *arena, E_Eval eval, DF_CfgTable *cfg);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Evaluation Views
|
||||
@@ -1647,6 +1650,12 @@ internal String8 df_expr_string_from_viz_row(Arena *arena, DF_EvalVizRow *row);
|
||||
internal B32 df_viz_row_is_expandable(DF_EvalVizRow *row);
|
||||
internal B32 df_viz_row_is_editable(DF_EvalVizRow *row);
|
||||
|
||||
//- rjf: view rule config tree info extraction
|
||||
internal Rng1U64 df_range_from_eval_cfg(E_Eval eval, DF_CfgNode *cfg);
|
||||
|
||||
//- rjf: view rule eval application
|
||||
internal E_Eval df_eval_from_eval_cfg_table(Arena *arena, E_Eval eval, DF_CfgTable *cfg);
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Main State Accessors/Mutators
|
||||
|
||||
|
||||
+1
-1
@@ -77,7 +77,7 @@ struct DF_SettingVal
|
||||
};
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: View Functions
|
||||
//~ rjf: View Hook Function Types
|
||||
|
||||
typedef struct DF_View DF_View;
|
||||
typedef struct DF_Panel DF_Panel;
|
||||
|
||||
@@ -1688,7 +1688,14 @@ e_parse_expr_from_text_tokens__prec(Arena *arena, String8 text, E_TokenArray *to
|
||||
{
|
||||
U64 val = 0;
|
||||
try_u64_from_str8_c_rules(token_string, &val);
|
||||
atom = e_push_expr(arena, E_ExprKind_LeafU64, token_string.str);
|
||||
if(str8_match(resolution_qualifier, str8_lit("id"), 0))
|
||||
{
|
||||
atom = e_push_expr(arena, E_ExprKind_LeafID, token_string.str);
|
||||
}
|
||||
else
|
||||
{
|
||||
atom = e_push_expr(arena, E_ExprKind_LeafU64, token_string.str);
|
||||
}
|
||||
atom->u64 = val;
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user