aboutsummaryrefslogtreecommitdiff
path: root/src/compiler.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler.c')
-rw-r--r--src/compiler.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/compiler.c b/src/compiler.c
index 7fd4426..4d43329 100644
--- a/src/compiler.c
+++ b/src/compiler.c
@@ -57,6 +57,7 @@ static CHECK_RESULT int create_default_type_fixed_size(amal_compiler *compiler,
}
static CHECK_RESULT int init_default_types(amal_compiler *compiler) {
+ /* POD */
return_if_error(create_default_type_fixed_size(compiler, "i8", 1, &compiler->default_types.i8));
return_if_error(create_default_type_fixed_size(compiler, "i16", 2, &compiler->default_types.i16));
return_if_error(create_default_type_fixed_size(compiler, "i32", 4, &compiler->default_types.i32));
@@ -69,9 +70,19 @@ static CHECK_RESULT int init_default_types(amal_compiler *compiler) {
return_if_error(create_default_type_num_pointers(compiler, "usize", 1, &compiler->default_types.usize));
return_if_error(create_default_type_fixed_size(compiler, "f32", 4, &compiler->default_types.f32));
return_if_error(create_default_type_fixed_size(compiler, "f64", 8, &compiler->default_types.f64));
+ return_if_error(create_default_type_fixed_size(compiler, "bool", 1, &compiler->default_types.bool));
+
/* TODO: str should be a struct with the fields @data (ptr) and @size (usize) */
+ /* Types with more than one member */
return_if_error(create_default_type_num_pointers(compiler, "str", 1, &compiler->default_types.str));
+ /* C types */
+ return_if_error(create_default_type_fixed_size(compiler, "c_char", sizeof(char), &compiler->default_types.c_char));
+ return_if_error(create_default_type_fixed_size(compiler, "c_short", sizeof(short), &compiler->default_types.c_short));
+ return_if_error(create_default_type_fixed_size(compiler, "c_int", sizeof(int), &compiler->default_types.c_int));
+ return_if_error(create_default_type_fixed_size(compiler, "c_long", sizeof(long), &compiler->default_types.c_long));
+ return_if_error(create_default_type_num_pointers(compiler, "c_void", 0, &compiler->default_types.c_void));
+
compiler->default_types.arithmetic_types[0] = compiler->default_types.i8;
compiler->default_types.arithmetic_types[1] = compiler->default_types.u8;
compiler->default_types.arithmetic_types[2] = compiler->default_types.i16;