diff options
Diffstat (limited to 'type.h')
| -rw-r--r-- | type.h | 43 |
1 files changed, 43 insertions, 0 deletions
@@ -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 |
