eliminate old eval/type-graph layers

This commit is contained in:
Ryan Fleury
2024-08-06 10:20:37 -07:00
parent e951d788ed
commit c1cea82ae7
26 changed files with 444 additions and 7229 deletions
+133 -62
View File
@@ -6,73 +6,144 @@
#ifndef EVAL_META_H
#define EVAL_META_H
typedef U32 EVAL_ExprKind;
typedef enum EVAL_ExprKindEnum
typedef enum E_TypeKind
{
EVAL_ExprKind_Nil,
EVAL_ExprKind_ArrayIndex,
EVAL_ExprKind_MemberAccess,
EVAL_ExprKind_Deref,
EVAL_ExprKind_Address,
EVAL_ExprKind_Cast,
EVAL_ExprKind_Sizeof,
EVAL_ExprKind_Neg,
EVAL_ExprKind_LogNot,
EVAL_ExprKind_BitNot,
EVAL_ExprKind_Mul,
EVAL_ExprKind_Div,
EVAL_ExprKind_Mod,
EVAL_ExprKind_Add,
EVAL_ExprKind_Sub,
EVAL_ExprKind_LShift,
EVAL_ExprKind_RShift,
EVAL_ExprKind_Less,
EVAL_ExprKind_LsEq,
EVAL_ExprKind_Grtr,
EVAL_ExprKind_GrEq,
EVAL_ExprKind_EqEq,
EVAL_ExprKind_NtEq,
EVAL_ExprKind_BitAnd,
EVAL_ExprKind_BitXor,
EVAL_ExprKind_BitOr,
EVAL_ExprKind_LogAnd,
EVAL_ExprKind_LogOr,
EVAL_ExprKind_Ternary,
EVAL_ExprKind_LeafBytecode,
EVAL_ExprKind_LeafMember,
EVAL_ExprKind_LeafU64,
EVAL_ExprKind_LeafF64,
EVAL_ExprKind_LeafF32,
EVAL_ExprKind_TypeIdent,
EVAL_ExprKind_Ptr,
EVAL_ExprKind_Array,
EVAL_ExprKind_Func,
EVAL_ExprKind_Define,
EVAL_ExprKind_LeafIdent,
EVAL_ExprKind_COUNT,
} EVAL_ExprKindEnum;
E_TypeKind_Null,
E_TypeKind_Void,
E_TypeKind_Handle,
E_TypeKind_Char8,
E_TypeKind_Char16,
E_TypeKind_Char32,
E_TypeKind_UChar8,
E_TypeKind_UChar16,
E_TypeKind_UChar32,
E_TypeKind_U8,
E_TypeKind_U16,
E_TypeKind_U32,
E_TypeKind_U64,
E_TypeKind_U128,
E_TypeKind_U256,
E_TypeKind_U512,
E_TypeKind_S8,
E_TypeKind_S16,
E_TypeKind_S32,
E_TypeKind_S64,
E_TypeKind_S128,
E_TypeKind_S256,
E_TypeKind_S512,
E_TypeKind_Bool,
E_TypeKind_F16,
E_TypeKind_F32,
E_TypeKind_F32PP,
E_TypeKind_F48,
E_TypeKind_F64,
E_TypeKind_F80,
E_TypeKind_F128,
E_TypeKind_ComplexF32,
E_TypeKind_ComplexF64,
E_TypeKind_ComplexF80,
E_TypeKind_ComplexF128,
E_TypeKind_Modifier,
E_TypeKind_Ptr,
E_TypeKind_LRef,
E_TypeKind_RRef,
E_TypeKind_Array,
E_TypeKind_Function,
E_TypeKind_Method,
E_TypeKind_MemberPtr,
E_TypeKind_Struct,
E_TypeKind_Class,
E_TypeKind_Union,
E_TypeKind_Enum,
E_TypeKind_Alias,
E_TypeKind_IncompleteStruct,
E_TypeKind_IncompleteUnion,
E_TypeKind_IncompleteClass,
E_TypeKind_IncompleteEnum,
E_TypeKind_Bitfield,
E_TypeKind_Variadic,
E_TypeKind_COUNT,
E_TypeKind_FirstBasic = E_TypeKind_Void,
E_TypeKind_LastBasic = E_TypeKind_ComplexF128,
E_TypeKind_FirstInteger = E_TypeKind_Char8,
E_TypeKind_LastInteger = E_TypeKind_S512,
E_TypeKind_FirstSigned1 = E_TypeKind_Char8,
E_TypeKind_LastSigned1 = E_TypeKind_Char32,
E_TypeKind_FirstSigned2 = E_TypeKind_S8,
E_TypeKind_LastSigned2 = E_TypeKind_S512,
E_TypeKind_FirstIncomplete = E_TypeKind_IncompleteStruct,
E_TypeKind_LastIncomplete = E_TypeKind_IncompleteEnum,
} E_TypeKind;
typedef enum EVAL_ResultCode
typedef U32 E_ExprKind;
typedef enum E_ExprKindEnum
{
EVAL_ResultCode_Good,
EVAL_ResultCode_DivideByZero,
EVAL_ResultCode_BadOp,
EVAL_ResultCode_BadOpTypes,
EVAL_ResultCode_BadMemRead,
EVAL_ResultCode_BadRegRead,
EVAL_ResultCode_BadFrameBase,
EVAL_ResultCode_BadModuleBase,
EVAL_ResultCode_BadTLSBase,
EVAL_ResultCode_InsufficientStackSpace,
EVAL_ResultCode_MalformedBytecode,
EVAL_ResultCode_COUNT,
} EVAL_ResultCode;
E_ExprKind_Nil,
E_ExprKind_ArrayIndex,
E_ExprKind_MemberAccess,
E_ExprKind_Deref,
E_ExprKind_Address,
E_ExprKind_Cast,
E_ExprKind_Sizeof,
E_ExprKind_Neg,
E_ExprKind_LogNot,
E_ExprKind_BitNot,
E_ExprKind_Mul,
E_ExprKind_Div,
E_ExprKind_Mod,
E_ExprKind_Add,
E_ExprKind_Sub,
E_ExprKind_LShift,
E_ExprKind_RShift,
E_ExprKind_Less,
E_ExprKind_LsEq,
E_ExprKind_Grtr,
E_ExprKind_GrEq,
E_ExprKind_EqEq,
E_ExprKind_NtEq,
E_ExprKind_BitAnd,
E_ExprKind_BitXor,
E_ExprKind_BitOr,
E_ExprKind_LogAnd,
E_ExprKind_LogOr,
E_ExprKind_Ternary,
E_ExprKind_LeafBytecode,
E_ExprKind_LeafMember,
E_ExprKind_LeafStringLiteral,
E_ExprKind_LeafU64,
E_ExprKind_LeafF64,
E_ExprKind_LeafF32,
E_ExprKind_TypeIdent,
E_ExprKind_Ptr,
E_ExprKind_Array,
E_ExprKind_Func,
E_ExprKind_Define,
E_ExprKind_LeafIdent,
E_ExprKind_COUNT,
} E_ExprKindEnum;
typedef enum E_InterpretationCode
{
E_InterpretationCode_Good,
E_InterpretationCode_DivideByZero,
E_InterpretationCode_BadOp,
E_InterpretationCode_BadOpTypes,
E_InterpretationCode_BadMemRead,
E_InterpretationCode_BadRegRead,
E_InterpretationCode_BadFrameBase,
E_InterpretationCode_BadModuleBase,
E_InterpretationCode_BadTLSBase,
E_InterpretationCode_InsufficientStackSpace,
E_InterpretationCode_MalformedBytecode,
E_InterpretationCode_COUNT,
} E_InterpretationCode;
C_LINKAGE_BEGIN
extern U8 eval_expr_kind_child_counts[40];
extern String8 eval_expr_kind_strings[40];
extern String8 eval_result_code_display_strings[11];
extern String8 eval_expr_op_strings[40];
extern String8 e_expr_kind_strings[41];
extern String8 e_interpretation_code_display_strings[11];
extern String8 e_expr_op_strings[41];
extern U8 e_kind_basic_byte_size_table[54];
extern String8 e_kind_basic_string_table[54];
C_LINKAGE_END