mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-06 22:08:41 +00: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
|
//- 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);
|
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_MemberArray current_members = e_type_data_members_from_key(scratch.arena, irtree.type_key);
|
||||||
E_MemberList new_members = {0};
|
E_MemberList new_members = {0};
|
||||||
for EachIndex(idx, current_members.count)
|
for MD_EachNode(node, params->first)
|
||||||
{
|
{
|
||||||
B32 include = 0;
|
for EachIndex(idx, current_members.count)
|
||||||
for MD_EachNode(node, params->first)
|
|
||||||
{
|
{
|
||||||
if(str8_match(node->string, current_members.v[idx].name, 0))
|
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;
|
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_MemberArray new_members_array = e_member_array_from_list(scratch.arena, &new_members);
|
||||||
E_TypeKey new_type = {0};
|
E_TypeKey new_type = {0};
|
||||||
|
|||||||
Reference in New Issue
Block a user