mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-27 14:01:48 -07:00
eliminate all old eval visualization block/row code
This commit is contained in:
@@ -265,187 +265,6 @@ EV_VIEW_RULE_EXPR_EXPAND_RANGE_INFO_FUNCTION_DEF(default)
|
||||
return result;
|
||||
}
|
||||
|
||||
#if 0 // TODO(rjf): @blocks
|
||||
EV_VIEW_RULE_BLOCK_PROD_FUNCTION_DEF(default)
|
||||
{
|
||||
Temp scratch = scratch_begin(&arena, 1);
|
||||
|
||||
////////////////////////////
|
||||
//- rjf: unpack expression type info
|
||||
//
|
||||
E_IRTreeAndType irtree = e_irtree_and_type_from_expr(scratch.arena, expr);
|
||||
E_TypeKey type_key = e_type_unwrap(irtree.type_key);
|
||||
E_TypeKind type_kind = e_type_kind_from_key(type_key);
|
||||
E_TypeKey direct_type_key = e_type_unwrap(e_type_direct_from_key(type_key));
|
||||
E_TypeKind direct_type_kind = e_type_kind_from_key(direct_type_key);
|
||||
|
||||
////////////////////////////
|
||||
//- rjf: do struct/union/class member block generation
|
||||
//
|
||||
if((type_kind == E_TypeKind_Struct ||
|
||||
type_kind == E_TypeKind_Union ||
|
||||
type_kind == E_TypeKind_Class) ||
|
||||
(e_type_kind_is_pointer_or_ref(type_kind) && (direct_type_kind == E_TypeKind_Struct ||
|
||||
direct_type_kind == E_TypeKind_Union ||
|
||||
direct_type_kind == E_TypeKind_Class)))
|
||||
{
|
||||
// rjf: type -> filtered data members
|
||||
E_MemberArray data_members = e_type_data_members_from_key(arena, e_type_kind_is_pointer_or_ref(type_kind) ? direct_type_key : type_key);
|
||||
|
||||
// rjf: build blocks for all members, split by sub-expansions
|
||||
EV_Block *last_vb = ev_block_begin(arena, EV_BlockKind_Members, key, ev_key_make(ev_hash_from_key(key), 0), depth);
|
||||
{
|
||||
last_vb->expr = expr;
|
||||
last_vb->view_rules = view_rules;
|
||||
last_vb->visual_idx_range = last_vb->semantic_idx_range = r1u64(0, data_members.count);
|
||||
last_vb->members = data_members;
|
||||
}
|
||||
for(EV_ExpandNode *child = expand_node->first; child != 0; child = child->next)
|
||||
{
|
||||
// rjf: unpack expansion info; skip out-of-bounds splits
|
||||
U64 child_id = child->key.child_id;
|
||||
U64 child_idx = child_id-1;
|
||||
E_Expr *child_expr = ev_expr_from_block_index(arena, last_vb, child_idx);
|
||||
if(child_idx >= last_vb->semantic_idx_range.max)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// rjf: form split: truncate & complete last block; begin next block
|
||||
last_vb = ev_block_split_and_continue(arena, out, last_vb, child_idx);
|
||||
|
||||
// rjf: build child view rules
|
||||
EV_ViewRuleList *child_view_rules = ev_view_rule_list_from_inheritance(arena, view_rules);
|
||||
{
|
||||
String8 view_rule_string = ev_view_rule_from_key(view, child->key);
|
||||
if(view_rule_string.size == 0)
|
||||
{
|
||||
Temp scratch = scratch_begin(&arena, 1);
|
||||
E_IRTreeAndType irtree = e_irtree_and_type_from_expr(arena, child_expr);
|
||||
view_rule_string = ev_auto_view_rule_from_type_key(irtree.type_key);
|
||||
scratch_end(scratch);
|
||||
}
|
||||
if(view_rule_string.size != 0)
|
||||
{
|
||||
ev_view_rule_list_push_string(arena, child_view_rules, view_rule_string);
|
||||
}
|
||||
}
|
||||
|
||||
// rjf: recurse for child
|
||||
ev_append_expr_blocks__rec(arena, view, filter, key, child->key, str8_zero(), child_expr, child_view_rules, depth, out);
|
||||
}
|
||||
ev_block_end(out, last_vb);
|
||||
}
|
||||
|
||||
////////////////////////////
|
||||
//- rjf: do enum member block generation
|
||||
//
|
||||
// (just a single block for all enum members; enum members can never be expanded)
|
||||
//
|
||||
else if(type_kind == E_TypeKind_Enum ||
|
||||
(e_type_kind_is_pointer_or_ref(type_kind) && direct_type_kind == E_TypeKind_Enum))
|
||||
{
|
||||
E_Type *type = e_type_from_key(arena, e_type_kind_is_pointer_or_ref(type_kind) ? direct_type_key : type_key);
|
||||
EV_Block *last_vb = ev_block_begin(arena, EV_BlockKind_EnumMembers, key, ev_key_make(ev_hash_from_key(key), 0), depth);
|
||||
{
|
||||
last_vb->expr = expr;
|
||||
last_vb->view_rules = view_rules;
|
||||
last_vb->visual_idx_range = last_vb->semantic_idx_range = r1u64(0, type->count);
|
||||
last_vb->enum_vals.v = type->enum_vals;
|
||||
last_vb->enum_vals.count = type->count;
|
||||
}
|
||||
ev_block_end(out, last_vb);
|
||||
}
|
||||
|
||||
////////////////////////////
|
||||
//- rjf: do array element block generation
|
||||
//
|
||||
else if(type_kind == E_TypeKind_Array ||
|
||||
(e_type_kind_is_pointer_or_ref(type_kind) && direct_type_kind == E_TypeKind_Array))
|
||||
{
|
||||
// rjf: unpack array type info
|
||||
E_Type *array_type = e_type_from_key(scratch.arena, e_type_kind_is_pointer_or_ref(type_kind) ? direct_type_key : type_key);
|
||||
U64 array_count = array_type->count;
|
||||
B32 need_extra_deref = e_type_kind_is_pointer_or_ref(type_kind);
|
||||
|
||||
// rjf: build blocks for all elements, split by sub-expansions
|
||||
EV_Block *last_vb = ev_block_begin(arena, EV_BlockKind_Elements, key, ev_key_make(ev_hash_from_key(key), 0), depth);
|
||||
{
|
||||
last_vb->expr = need_extra_deref ? e_expr_ref_deref(arena, expr) : expr;
|
||||
last_vb->view_rules = view_rules;
|
||||
last_vb->visual_idx_range = last_vb->semantic_idx_range = r1u64(0, array_count);
|
||||
}
|
||||
for(EV_ExpandNode *child = expand_node->first; child != 0; child = child->next)
|
||||
{
|
||||
// rjf: unpack expansion info; skip out-of-bounds splits
|
||||
U64 child_id = child->key.child_id;
|
||||
U64 child_idx = child_id-1;
|
||||
E_Expr *child_expr = ev_expr_from_block_index(arena, last_vb, child_idx);
|
||||
if(child_idx >= last_vb->semantic_idx_range.max)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
// rjf: form split: truncate & complete last block; begin next block
|
||||
last_vb = ev_block_split_and_continue(arena, out, last_vb, child_idx);
|
||||
|
||||
// rjf: build child view rules
|
||||
EV_ViewRuleList *child_view_rules = ev_view_rule_list_from_inheritance(arena, view_rules);
|
||||
{
|
||||
String8 view_rule_string = ev_view_rule_from_key(view, child->key);
|
||||
if(view_rule_string.size == 0)
|
||||
{
|
||||
Temp scratch = scratch_begin(&arena, 1);
|
||||
E_IRTreeAndType irtree = e_irtree_and_type_from_expr(arena, child_expr);
|
||||
view_rule_string = ev_auto_view_rule_from_type_key(irtree.type_key);
|
||||
scratch_end(scratch);
|
||||
}
|
||||
if(view_rule_string.size != 0)
|
||||
{
|
||||
ev_view_rule_list_push_string(arena, child_view_rules, view_rule_string);
|
||||
}
|
||||
}
|
||||
|
||||
// rjf: recurse for child
|
||||
ev_append_expr_blocks__rec(arena, view, filter, key, child->key, str8_zero(), child_expr, child_view_rules, depth, out);
|
||||
}
|
||||
ev_block_end(out, last_vb);
|
||||
}
|
||||
|
||||
////////////////////////////
|
||||
//- rjf: do pointer-to-pointer block generation
|
||||
//
|
||||
else if(e_type_kind_is_pointer_or_ref(type_kind) && e_type_kind_is_pointer_or_ref(direct_type_kind))
|
||||
{
|
||||
// rjf: compute key, compute expr
|
||||
EV_Key child_key = ev_key_make(ev_hash_from_key(key), 1);
|
||||
E_Expr *child_expr = e_expr_ref_deref(arena, expr);
|
||||
|
||||
// rjf: build child view rules
|
||||
EV_ViewRuleList *child_view_rules = ev_view_rule_list_from_inheritance(arena, view_rules);
|
||||
{
|
||||
String8 view_rule_string = ev_view_rule_from_key(view, child_key);
|
||||
if(view_rule_string.size == 0)
|
||||
{
|
||||
Temp scratch = scratch_begin(&arena, 1);
|
||||
E_IRTreeAndType irtree = e_irtree_and_type_from_expr(arena, child_expr);
|
||||
view_rule_string = ev_auto_view_rule_from_type_key(irtree.type_key);
|
||||
scratch_end(scratch);
|
||||
}
|
||||
if(view_rule_string.size != 0)
|
||||
{
|
||||
ev_view_rule_list_push_string(arena, child_view_rules, view_rule_string);
|
||||
}
|
||||
}
|
||||
|
||||
// rjf: recurse for child
|
||||
ev_append_expr_blocks__rec(arena, view, filter, key, child_key, str8_zero(), child_expr, child_view_rules, depth, out);
|
||||
}
|
||||
|
||||
scratch_end(scratch);
|
||||
}
|
||||
#endif
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: "array"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user