mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-13 07:32:23 -07:00
allow 'only' view rule to determine sort-order of members in constructed type info
This commit is contained in:
@@ -1479,7 +1479,7 @@ e_type_data_members_from_key(Arena *arena, E_TypeKey key)
|
||||
}
|
||||
|
||||
//- rjf: sort array by offset if needed
|
||||
if(members_need_offset_sort)
|
||||
if(members_need_offset_sort && (root_type_kind == E_TypeKind_Struct || root_type_kind == E_TypeKind_Class) && key.kind != E_TypeKeyKind_Cons)
|
||||
{
|
||||
quick_sort(members.v, members.count, sizeof(E_Member), e_type_qsort_compare_members_offset);
|
||||
}
|
||||
|
||||
@@ -393,21 +393,16 @@ EV_VIEW_RULE_EXPR_RESOLUTION_FUNCTION_DEF(only)
|
||||
{
|
||||
E_MemberArray current_members = e_type_data_members_from_key(scratch.arena, irtree.type_key);
|
||||
E_MemberList new_members = {0};
|
||||
for EachIndex(idx, current_members.count)
|
||||
for MD_EachNode(node, params->first)
|
||||
{
|
||||
B32 include = 0;
|
||||
for MD_EachNode(node, params->first)
|
||||
for EachIndex(idx, current_members.count)
|
||||
{
|
||||
if(str8_match(node->string, current_members.v[idx].name, 0))
|
||||
{
|
||||
include = 1;
|
||||
e_member_list_push(scratch.arena, &new_members, ¤t_members.v[idx]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(include)
|
||||
{
|
||||
e_member_list_push(scratch.arena, &new_members, ¤t_members.v[idx]);
|
||||
}
|
||||
}
|
||||
E_MemberArray new_members_array = e_member_array_from_list(scratch.arena, &new_members);
|
||||
E_TypeKey new_type = {0};
|
||||
|
||||
Reference in New Issue
Block a user