Add a language.kl module which should contain builtin stuff
This commit is contained in:
67
programs/language.kl
Normal file
67
programs/language.kl
Normal file
@@ -0,0 +1,67 @@
|
||||
|
||||
/*
|
||||
String :: struct
|
||||
str: *U8
|
||||
len: S64
|
||||
|
||||
Slice :: struct
|
||||
data: *void
|
||||
len : S64
|
||||
|
||||
Any :: struct
|
||||
data: *void
|
||||
type: Type_ID
|
||||
|
||||
*/
|
||||
|
||||
Type_ID :: S32
|
||||
Type_Info_Kind :: enum
|
||||
TYPE_NONE
|
||||
TYPE_S64 :: 7 // FIRST_NUMERIC
|
||||
TYPE_S32
|
||||
TYPE_S16
|
||||
TYPE_S8
|
||||
TYPE_INT
|
||||
TYPE_CHAR
|
||||
TYPE_U64
|
||||
TYPE_U32
|
||||
TYPE_U16
|
||||
TYPE_U8
|
||||
TYPE_F32
|
||||
TYPE_F64
|
||||
TYPE_POINTER
|
||||
TYPE_BOOL // LAST_NUMERIC
|
||||
TYPE_STRING
|
||||
TYPE_VOID
|
||||
TYPE_ARRAY
|
||||
TYPE_LAMBDA
|
||||
TYPE_STRUCT
|
||||
TYPE_UNION
|
||||
TYPE_ENUM
|
||||
TYPE_TYPE
|
||||
TYPE_SLICE
|
||||
TYPE_TUPLE
|
||||
TYPE_ANY
|
||||
|
||||
Type_Info_Struct_Member :: struct
|
||||
name: String
|
||||
type_id: Type_ID
|
||||
offset: S32
|
||||
|
||||
Type_Info :: struct
|
||||
kind: Type_Info_Kind
|
||||
size: S32
|
||||
align: S32
|
||||
is_unsigned: Bool
|
||||
type_id: Type_ID
|
||||
|
||||
base_type: Type_ID
|
||||
array_size: S32
|
||||
struct_member_count: S32
|
||||
struct_members: *Type_Info_Struct_Member
|
||||
lambda_argument_count: S32
|
||||
lambda_arguments: *Type_Info
|
||||
lambda_return: Type_ID
|
||||
|
||||
type_infos_len: U32 #foreign
|
||||
type_infos : *Type_Info #foreign
|
||||
Reference in New Issue
Block a user