Working on type operations and type infos
This commit is contained in:
@@ -14,7 +14,6 @@ Any :: struct
|
||||
|
||||
*/
|
||||
|
||||
Type_ID :: S32
|
||||
Type_Info_Kind :: enum
|
||||
NONE
|
||||
S64 :: 7 // FIRST_NUMERIC
|
||||
@@ -45,29 +44,29 @@ Type_Info_Kind :: enum
|
||||
|
||||
Type_Info_Struct_Member :: struct
|
||||
name: String
|
||||
type_id: Type_ID
|
||||
offset: S32
|
||||
type: Type
|
||||
offset: S64
|
||||
|
||||
Type_Info :: struct
|
||||
kind: Type_Info_Kind
|
||||
size: S32
|
||||
align: S32
|
||||
size: S64
|
||||
align: S64
|
||||
is_unsigned: Bool
|
||||
type_id: Type_ID
|
||||
type: Type
|
||||
|
||||
base_type: Type_ID
|
||||
array_size: S32
|
||||
struct_member_count: S32
|
||||
base_type: Type
|
||||
array_size: S64
|
||||
struct_member_count: S64
|
||||
struct_members: *Type_Info_Struct_Member
|
||||
lambda_argument_count: S32
|
||||
lambda_argument_count: S64
|
||||
lambda_arguments: *Type_Info
|
||||
lambda_return: Type_ID
|
||||
lambda_return: Type
|
||||
|
||||
type_infos_len: S32 #foreign
|
||||
type_infos_len: S64 #foreign
|
||||
type_infos : *Type_Info #foreign
|
||||
|
||||
get_type_info :: (type: Type): *Type_Info
|
||||
id := type->S32
|
||||
id := type->S64
|
||||
if id >= type_infos_len
|
||||
return 0
|
||||
return type_infos + id
|
||||
@@ -62,6 +62,9 @@ WinMain :: (hInstance: HINSTANCE, hPrevInstance: HINSTANCE, lpCmdLine: LPSTR, nS
|
||||
|
||||
char_info := get_type_info(char)
|
||||
assert(char_info.kind == Type_Info_Kind.CHAR)
|
||||
#assert(int == int)
|
||||
#assert(int != char)
|
||||
#assert(*char == *char)
|
||||
|
||||
arena: Arena
|
||||
window_name := string_to_string16(&arena, "Have a wonderful day! 豈 更 車 賈 滑 串 句 龜 ")
|
||||
|
||||
Reference in New Issue
Block a user