summaryrefslogtreecommitdiff
path: root/type.h
diff options
context:
space:
mode:
Diffstat (limited to 'type.h')
-rw-r--r--type.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/type.h b/type.h
index ef848c5..a67fabb 100644
--- a/type.h
+++ b/type.h
@@ -9,10 +9,16 @@ struct data_type {
bool is_floating;
};
+struct fn_type {
+ struct type_list* arg_types;
+ struct type* return_type;
+};
+
struct type {
enum {
TP_DATA,
TP_PTR,
+ TP_FN,
} type;
union {
struct {
@@ -23,9 +29,15 @@ struct type {
const struct data_type* data_type;
integral_t ptr_level;
} pointer;
+ struct fn_type fn;
};
};
+struct type_list {
+ const struct type* type;
+ struct type_list* next;
+};
+
extern const struct data_type void_type;
extern const struct data_type char_type;
extern const struct data_type short_type;