get_type_info
This commit is contained in:
@@ -833,7 +833,8 @@ typedef struct String{
|
|||||||
gen_ast(it);
|
gen_ast(it);
|
||||||
}
|
}
|
||||||
|
|
||||||
gen("Type_Info *type_infos = (Type_Info[]){");
|
genln("S32 type_infos_len = %d;", pctx->all_types.len);
|
||||||
|
genln("Type_Info *type_infos = (Type_Info[]){");
|
||||||
global_indent++;
|
global_indent++;
|
||||||
For(pctx->all_types){
|
For(pctx->all_types){
|
||||||
genln("{/*%Q*/.kind = %d, .size = %d, .align = %d, .is_unsigned = %s, .type_id = %d, ", typestring(it),
|
genln("{/*%Q*/.kind = %d, .size = %d, .align = %d, .is_unsigned = %s, .type_id = %d, ", typestring(it),
|
||||||
|
|||||||
@@ -16,32 +16,32 @@ Any :: struct
|
|||||||
|
|
||||||
Type_ID :: S32
|
Type_ID :: S32
|
||||||
Type_Info_Kind :: enum
|
Type_Info_Kind :: enum
|
||||||
TYPE_NONE
|
NONE
|
||||||
TYPE_S64 :: 7 // FIRST_NUMERIC
|
S64 :: 7 // FIRST_NUMERIC
|
||||||
TYPE_S32
|
S32
|
||||||
TYPE_S16
|
S16
|
||||||
TYPE_S8
|
S8
|
||||||
TYPE_INT
|
INT
|
||||||
TYPE_CHAR
|
CHAR
|
||||||
TYPE_U64
|
U64
|
||||||
TYPE_U32
|
U32
|
||||||
TYPE_U16
|
U16
|
||||||
TYPE_U8
|
U8
|
||||||
TYPE_F32
|
F32
|
||||||
TYPE_F64
|
F64
|
||||||
TYPE_POINTER
|
POINTER
|
||||||
TYPE_BOOL // LAST_NUMERIC
|
BOOL // LAST_NUMERIC
|
||||||
TYPE_STRING
|
STRING
|
||||||
TYPE_VOID
|
VOID
|
||||||
TYPE_ARRAY
|
ARRAY
|
||||||
TYPE_LAMBDA
|
LAMBDA
|
||||||
TYPE_STRUCT
|
STRUCT
|
||||||
TYPE_UNION
|
UNION
|
||||||
TYPE_ENUM
|
ENUM
|
||||||
TYPE_TYPE
|
TYPE
|
||||||
TYPE_SLICE
|
SLICE
|
||||||
TYPE_TUPLE
|
TUPLE
|
||||||
TYPE_ANY
|
ANY
|
||||||
|
|
||||||
Type_Info_Struct_Member :: struct
|
Type_Info_Struct_Member :: struct
|
||||||
name: String
|
name: String
|
||||||
@@ -63,5 +63,10 @@ Type_Info :: struct
|
|||||||
lambda_arguments: *Type_Info
|
lambda_arguments: *Type_Info
|
||||||
lambda_return: Type_ID
|
lambda_return: Type_ID
|
||||||
|
|
||||||
type_infos_len: U32 #foreign
|
type_infos_len: S32 #foreign
|
||||||
type_infos : *Type_Info #foreign
|
type_infos : *Type_Info #foreign
|
||||||
|
|
||||||
|
get_type_info :: (id: Type_ID): *Type_Info
|
||||||
|
if id >= type_infos_len
|
||||||
|
return 0
|
||||||
|
return type_infos + id
|
||||||
@@ -60,6 +60,9 @@ WinMain :: (hInstance: HINSTANCE, hPrevInstance: HINSTANCE, lpCmdLine: LPSTR, nS
|
|||||||
if good_scheduling := false, timeBeginPeriod(1) == TIMERR_NOERROR
|
if good_scheduling := false, timeBeginPeriod(1) == TIMERR_NOERROR
|
||||||
good_scheduling = true
|
good_scheduling = true
|
||||||
|
|
||||||
|
char_info := get_type_info(5)
|
||||||
|
assert(char_info.kind == Type_Info_Kind.CHAR)
|
||||||
|
|
||||||
arena: Arena
|
arena: Arena
|
||||||
window_name := string_to_string16(&arena, "Have a wonderful day! 豈 更 車 賈 滑 串 句 龜 ")
|
window_name := string_to_string16(&arena, "Have a wonderful day! 豈 更 車 賈 滑 串 句 龜 ")
|
||||||
w := WNDCLASSW{
|
w := WNDCLASSW{
|
||||||
|
|||||||
Reference in New Issue
Block a user