From 4f9d0247549b06ddb25b76bb425541190105cb48 Mon Sep 17 00:00:00 2001 From: Carson Fleming Date: Sun, 26 Jul 2026 19:20:30 -0700 Subject: functioning type system perhaps? --- type.h | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 type.h (limited to 'type.h') diff --git a/type.h b/type.h new file mode 100644 index 0000000..1217b71 --- /dev/null +++ b/type.h @@ -0,0 +1,43 @@ +#ifndef TYPE_H +#define TYPE_H + +#include "ccc.h" + +struct data_type { + const char* name; + integral_t sz; + bool is_floating; +}; + +struct type { + enum { + TP_DATA, + TP_PTR, + } type; + union { + struct { + const struct data_type* data_type; + bool is_signed; + } data; + struct { + const struct data_type* data_type; + integral_t ptr_level; + } pointer; + }; +}; + +extern const struct data_type void_type; +extern const struct data_type char_type; +extern const struct data_type short_type; +extern const struct data_type int_type; +extern const struct data_type long_type; +extern const struct data_type long_long_type; +extern const struct data_type float_type; +extern const struct data_type double_type; + +extern const struct data_type* integral_type; +extern const struct data_type* floating_type; +extern const struct data_type* character_type; +extern const struct data_type* primitive_types[]; + +#endif -- cgit v1.2.3