more eval type operators for metadata decorations; fix target environment string list evaluation / edits

This commit is contained in:
Ryan Fleury
2025-04-18 13:48:31 -07:00
parent ddf0703b02
commit ff35db0e16
14 changed files with 192 additions and 101 deletions
+2
View File
@@ -75,6 +75,8 @@ E_TypeKindTable:
{Lens "lens" 0 }
{LensSpec "lens_spec" 0 }
{MetaExpr "meta_expr" 0 }
{MetaDisplayName "meta_display_name" 0 }
{MetaDescription "meta_description" 0 }
}
@table(name op_kind precedence op_pre op_sep op_pos op_chain)
+23
View File
@@ -492,6 +492,27 @@ e_type_key_cons_ptr(Arch arch, E_TypeKey element_type_key, U64 count, E_TypeFlag
return key;
}
internal E_TypeKey
e_type_key_cons_meta_expr(E_TypeKey type_key, String8 expr)
{
E_TypeKey key = e_type_key_cons(.kind = E_TypeKind_MetaExpr, .direct_key = type_key, .name = expr);
return key;
}
internal E_TypeKey
e_type_key_cons_meta_display_name(E_TypeKey type_key, String8 name)
{
E_TypeKey key = e_type_key_cons(.kind = E_TypeKind_MetaDisplayName, .direct_key = type_key, .name = name);
return key;
}
internal E_TypeKey
e_type_key_cons_meta_description(E_TypeKey type_key, String8 desc)
{
E_TypeKey key = e_type_key_cons(.kind = E_TypeKind_MetaDescription, .direct_key = type_key, .name = desc);
return key;
}
internal E_TypeKey
e_type_key_cons_base(Type *type)
{
@@ -1492,6 +1513,8 @@ e_type_key_unwrap(E_TypeKey key, E_TypeUnwrapFlags flags)
default:{done = 1;}break;
case E_TypeKind_Modifier: {done = !(flags & E_TypeUnwrapFlag_Modifiers);}break;
case E_TypeKind_Lens: {done = !(flags & E_TypeUnwrapFlag_Lenses);}break;
case E_TypeKind_MetaDisplayName:
case E_TypeKind_MetaDescription:
case E_TypeKind_MetaExpr: {done = !(flags & E_TypeUnwrapFlag_Meta);}break;
case E_TypeKind_Enum: {done = !(flags & E_TypeUnwrapFlag_Enums);}break;
case E_TypeKind_Alias: {done = !(flags & E_TypeUnwrapFlag_Aliases);}break;
+3
View File
@@ -254,6 +254,9 @@ internal E_TypeKey e_type_key_cons_(E_ConsTypeParams *params);
//- rjf: constructed type construction helpers
internal E_TypeKey e_type_key_cons_array(E_TypeKey element_type_key, U64 count, E_TypeFlags flags);
internal E_TypeKey e_type_key_cons_ptr(Arch arch, E_TypeKey element_type_key, U64 count, E_TypeFlags flags);
internal E_TypeKey e_type_key_cons_meta_expr(E_TypeKey type_key, String8 expr);
internal E_TypeKey e_type_key_cons_meta_display_name(E_TypeKey type_key, String8 name);
internal E_TypeKey e_type_key_cons_meta_description(E_TypeKey type_key, String8 desc);
internal E_TypeKey e_type_key_cons_base(Type *type);
internal E_TypeKey e_type_key_file(void);
internal E_TypeKey e_type_key_folder(void);
+6 -2
View File
@@ -14,7 +14,7 @@ str8_lit_comp("CharLiteral"),
str8_lit_comp("Symbol"),
};
String8 e_type_kind_basic_string_table[59] =
String8 e_type_kind_basic_string_table[61] =
{
str8_lit_comp(""),
str8_lit_comp("void"),
@@ -75,9 +75,11 @@ str8_lit_comp("set"),
str8_lit_comp("lens"),
str8_lit_comp("lens_spec"),
str8_lit_comp("meta_expr"),
str8_lit_comp("meta_display_name"),
str8_lit_comp("meta_description"),
};
U8 e_type_kind_basic_byte_size_table[59] =
U8 e_type_kind_basic_byte_size_table[61] =
{
0,
0,
@@ -138,6 +140,8 @@ U8 e_type_kind_basic_byte_size_table[59] =
0,
0,
0,
0,
0,
};
String8 e_expr_kind_strings[48] =
+4 -2
View File
@@ -78,6 +78,8 @@ E_TypeKind_Set,
E_TypeKind_Lens,
E_TypeKind_LensSpec,
E_TypeKind_MetaExpr,
E_TypeKind_MetaDisplayName,
E_TypeKind_MetaDescription,
E_TypeKind_COUNT,
E_TypeKind_FirstBasic = E_TypeKind_Void,
E_TypeKind_LastBasic = E_TypeKind_ComplexF128,
@@ -163,8 +165,8 @@ E_InterpretationCode_COUNT,
C_LINKAGE_BEGIN
extern String8 e_token_kind_strings[6];
extern String8 e_type_kind_basic_string_table[59];
extern U8 e_type_kind_basic_byte_size_table[59];
extern String8 e_type_kind_basic_string_table[61];
extern U8 e_type_kind_basic_byte_size_table[61];
extern String8 e_expr_kind_strings[48];
extern E_OpInfo e_expr_kind_op_info_table[48];
extern String8 e_interpretation_code_display_strings[11];