type decoration to explicitly disable string visualization; use in registers & padding members; eliminate dead code

This commit is contained in:
Ryan Fleury
2025-04-10 14:29:58 -07:00
parent c05c21cfa4
commit 4a69b8e57a
7 changed files with 35 additions and 573 deletions
+3 -91
View File
@@ -301,8 +301,9 @@ enum
E_TypeFlag_IsPlainText = (1<<2),
E_TypeFlag_IsCodeText = (1<<3),
E_TypeFlag_IsPathText = (1<<4),
E_TypeFlag_EditableChildren = (1<<5),
E_TypeFlag_InheritedOnAccess = (1<<6),
E_TypeFlag_IsNotText = (1<<5),
E_TypeFlag_EditableChildren = (1<<6),
E_TypeFlag_InheritedOnAccess = (1<<7),
};
typedef struct E_Member E_Member;
@@ -493,95 +494,6 @@ struct E_String2ExprMap
E_String2ExprMapSlot *slots;
};
////////////////////////////////
//~ rjf: Member/Index Lookup Hooks
#if 0 // TODO(rjf): @eval
typedef struct E_LookupInfo E_LookupInfo;
struct E_LookupInfo
{
void *user_data;
U64 named_expr_count;
U64 idxed_expr_count;
};
typedef struct E_LookupAccess E_LookupAccess;
struct E_LookupAccess
{
E_IRTreeAndType irtree_and_type;
};
#define E_LOOKUP_INFO_FUNCTION_SIG(name) E_LookupInfo name(Arena *arena, E_IRTreeAndType *lhs, E_Expr *tag, String8 filter)
#define E_LOOKUP_INFO_FUNCTION_NAME(name) e_lookup_info_##name
#define E_LOOKUP_INFO_FUNCTION_DEF(name) internal E_LOOKUP_INFO_FUNCTION_SIG(E_LOOKUP_INFO_FUNCTION_NAME(name))
typedef E_LOOKUP_INFO_FUNCTION_SIG(E_LookupInfoFunctionType);
E_LOOKUP_INFO_FUNCTION_DEF(default);
#define E_LOOKUP_ACCESS_FUNCTION_SIG(name) E_LookupAccess name(Arena *arena, E_ExprKind kind, E_Expr *lhs, E_Expr *rhs, E_Expr *tag, void *user_data)
#define E_LOOKUP_ACCESS_FUNCTION_NAME(name) e_lookup_access_##name
#define E_LOOKUP_ACCESS_FUNCTION_DEF(name) internal E_LOOKUP_ACCESS_FUNCTION_SIG(E_LOOKUP_ACCESS_FUNCTION_NAME(name))
typedef E_LOOKUP_ACCESS_FUNCTION_SIG(E_LookupAccessFunctionType);
E_LOOKUP_ACCESS_FUNCTION_DEF(default);
#define E_LOOKUP_RANGE_FUNCTION_SIG(name) void name(Arena *arena, E_Expr *lhs, E_Expr *tag, String8 filter, Rng1U64 idx_range, E_Expr **exprs, String8 *exprs_strings, void *user_data)
#define E_LOOKUP_RANGE_FUNCTION_NAME(name) e_lookup_range_##name
#define E_LOOKUP_RANGE_FUNCTION_DEF(name) internal E_LOOKUP_RANGE_FUNCTION_SIG(E_LOOKUP_RANGE_FUNCTION_NAME(name))
typedef E_LOOKUP_RANGE_FUNCTION_SIG(E_LookupRangeFunctionType);
E_LOOKUP_RANGE_FUNCTION_DEF(default);
#define E_LOOKUP_ID_FROM_NUM_FUNCTION_SIG(name) U64 name(U64 num, void *user_data)
#define E_LOOKUP_ID_FROM_NUM_FUNCTION_NAME(name) e_lookup_id_from_num_##name
#define E_LOOKUP_ID_FROM_NUM_FUNCTION_DEF(name) internal E_LOOKUP_ID_FROM_NUM_FUNCTION_SIG(E_LOOKUP_ID_FROM_NUM_FUNCTION_NAME(name))
typedef E_LOOKUP_ID_FROM_NUM_FUNCTION_SIG(E_LookupIDFromNumFunctionType);
E_LOOKUP_ID_FROM_NUM_FUNCTION_DEF(default);
#define E_LOOKUP_NUM_FROM_ID_FUNCTION_SIG(name) U64 name(U64 id, void *user_data)
#define E_LOOKUP_NUM_FROM_ID_FUNCTION_NAME(name) e_lookup_num_from_id_##name
#define E_LOOKUP_NUM_FROM_ID_FUNCTION_DEF(name) internal E_LOOKUP_NUM_FROM_ID_FUNCTION_SIG(E_LOOKUP_NUM_FROM_ID_FUNCTION_NAME(name))
typedef E_LOOKUP_NUM_FROM_ID_FUNCTION_SIG(E_LookupNumFromIDFunctionType);
E_LOOKUP_NUM_FROM_ID_FUNCTION_DEF(default);
typedef struct E_LookupRule E_LookupRule;
struct E_LookupRule
{
String8 name;
E_LookupInfoFunctionType *info;
E_LookupAccessFunctionType *access;
E_LookupRangeFunctionType *range;
E_LookupIDFromNumFunctionType *id_from_num;
E_LookupNumFromIDFunctionType *num_from_id;
};
typedef struct E_LookupRuleNode E_LookupRuleNode;
struct E_LookupRuleNode
{
E_LookupRuleNode *next;
E_LookupRule v;
};
typedef struct E_LookupRuleSlot E_LookupRuleSlot;
struct E_LookupRuleSlot
{
E_LookupRuleNode *first;
E_LookupRuleNode *last;
};
typedef struct E_LookupRuleMap E_LookupRuleMap;
struct E_LookupRuleMap
{
E_LookupRuleSlot *slots;
U64 slots_count;
};
typedef struct E_LookupRuleExprPair E_LookupRuleExprPair;
struct E_LookupRuleExprPair
{
E_LookupRule *rule;
E_Expr *expr;
};
#endif
////////////////////////////////
//~ rjf: Type Pattern -> Hook Key Data Structure (Auto View Rules)
+2 -2
View File
@@ -1159,7 +1159,7 @@ e_type_from_key(Arena *arena, E_TypeKey key)
E_Member *mem = &n->v;
mem->kind = E_MemberKind_DataField;
mem->name = str8_lit("u8s");
mem->type_key = e_type_key_cons_array(e_type_key_basic(E_TypeKind_U8), reg_byte_count, 0);
mem->type_key = e_type_key_cons_array(e_type_key_basic(E_TypeKind_U8), reg_byte_count, E_TypeFlag_IsNotText);
}
if(type->byte_size > 4 && type->byte_size%4 == 0)
{
@@ -1628,7 +1628,7 @@ e_type_data_members_from_key(Arena *arena, E_TypeKey key)
E_Member *padding_member = &new_members.v[n->prev_member_idx+padding_idx+1];
MemoryZeroStruct(padding_member);
padding_member->kind = E_MemberKind_Padding;
padding_member->type_key = e_type_key_cons_array(e_type_key_basic(E_TypeKind_U8), n->size, 0);
padding_member->type_key = e_type_key_cons_array(e_type_key_basic(E_TypeKind_U8), n->size, E_TypeFlag_IsNotText);
padding_member->off = n->off;
padding_member->name = push_str8f(arena, "[padding %I64u]", padding_idx);
padding_idx += 1;