X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=type_t.h;h=2824b96dc66879c3616a2884e72af7b24a2a56e0;hb=7ea2ad59b0f4b39c3a18b680b13fb4011ba02a41;hp=40d6f10743ced02afff50390c1b1f1646d01e049;hpb=fd16b92f058181088a385c3224c8814831c006d3;p=cparser diff --git a/type_t.h b/type_t.h index 40d6f10..2824b96 100644 --- a/type_t.h +++ b/type_t.h @@ -49,42 +49,17 @@ typedef enum { TYPE_TYPEOF, } type_kind_t; -/* note that the constant values represent the rank of the types as defined - * in § 6.3.1 */ -typedef enum { - ATOMIC_TYPE_INVALID = 0, - ATOMIC_TYPE_VOID, - ATOMIC_TYPE_CHAR, - ATOMIC_TYPE_SCHAR, - ATOMIC_TYPE_UCHAR, - ATOMIC_TYPE_SHORT, - ATOMIC_TYPE_USHORT, - ATOMIC_TYPE_INT, - ATOMIC_TYPE_UINT, - ATOMIC_TYPE_LONG, - ATOMIC_TYPE_ULONG, - ATOMIC_TYPE_LONGLONG, - ATOMIC_TYPE_ULONGLONG, - ATOMIC_TYPE_FLOAT, - ATOMIC_TYPE_DOUBLE, - ATOMIC_TYPE_LONG_DOUBLE, - ATOMIC_TYPE_BOOL, -#ifdef PROVIDE_COMPLEX - ATOMIC_TYPE_FLOAT_COMPLEX, - ATOMIC_TYPE_DOUBLE_COMPLEX, - ATOMIC_TYPE_LONG_DOUBLE_COMPLEX, - ATOMIC_TYPE_FLOAT_IMAGINARY, - ATOMIC_TYPE_DOUBLE_IMAGINARY, - ATOMIC_TYPE_LONG_DOUBLE_IMAGINARY, -#endif - ATOMIC_TYPE_LAST -} atomic_type_kind_t; - typedef enum { TYPE_QUALIFIER_NONE = 0, TYPE_QUALIFIER_CONST = 1 << 0, TYPE_QUALIFIER_RESTRICT = 1 << 1, TYPE_QUALIFIER_VOLATILE = 1 << 2, + /* microsoft extended qualifiers */ + TYPE_QUALIFIER_W64 = 1 << 3, + TYPE_QUALIFIER_PTR32 = 1 << 4, + TYPE_QUALIFIER_PTR64 = 1 << 5, + TYPE_QUALIFIER_SPTR = 1 << 6, + TYPE_QUALIFIER_UPTR = 1 << 7, } type_qualifier_t; typedef unsigned int type_qualifiers_t; @@ -92,6 +67,7 @@ typedef unsigned int type_qualifiers_t; struct type_base_t { type_kind_t kind; type_qualifiers_t qualifiers; + unsigned char alignment; /**< The extra alignment of the type, 0 for default. */ source_position_t source_position; ir_type *firm_type;