further enriching of codebase type info & eval type info to encode code-contents of pointers, pretty names for members; further progress on improving watch views to support all needed features for replacing all table uis

This commit is contained in:
Ryan Fleury
2024-09-23 16:45:18 -07:00
parent 508d11c8d8
commit 5690a9e19b
8 changed files with 151 additions and 78 deletions
+6 -2
View File
@@ -453,10 +453,14 @@ e_type_key_cons_base(Type *type)
{
E_TypeKey direct_type = e_type_key_cons_base(type->direct);
E_TypeFlags flags = 0;
if(type->is_external)
if(type->flags & TypeFlag_IsExternal)
{
flags |= E_TypeFlag_External;
}
if(type->flags & TypeFlag_IsCode)
{
flags |= E_TypeFlag_IsCode;
}
result = e_type_key_cons_ptr(arch_from_context(), direct_type, flags);
}break;
case TypeKind_Array:
@@ -471,7 +475,7 @@ e_type_key_cons_base(Type *type)
for(U64 idx = 0; idx < type->count; idx += 1)
{
E_TypeKey member_type_key = e_type_key_cons_base(type->members[idx].type);
e_member_list_push_new(scratch.arena, &members, .name = type->members[idx].name, .off = type->members[idx].value, .type_key = member_type_key);
e_member_list_push_new(scratch.arena, &members, .name = type->members[idx].name, .off = type->members[idx].value, .type_key = member_type_key, .pretty_name = type->members[idx].pretty_name);
}
E_MemberArray members_array = e_member_array_from_list(scratch.arena, &members);
result = e_type_key_cons(.arch = arch_from_context(),
+2
View File
@@ -69,6 +69,7 @@ enum
E_TypeFlag_Const = (1<<0),
E_TypeFlag_Volatile = (1<<1),
E_TypeFlag_External = (1<<2),
E_TypeFlag_IsCode = (1<<3),
};
typedef struct E_Member E_Member;
@@ -77,6 +78,7 @@ struct E_Member
E_MemberKind kind;
E_TypeKey type_key;
String8 name;
String8 pretty_name;
U64 off;
E_TypeKeyList inheritance_key_chain;
};