X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=type_t.h;h=5c703c7fccb1a12d493f62302ad2ffac67423120;hb=76ebc662b0acb3571f519f150fce9eeba3f619f6;hp=63d730048dea05b93244712a6e03a8ae593c4d07;hpb=4599bf70900fbc4c5bf49c326ddb90bb48f346ec;p=cparser diff --git a/type_t.h b/type_t.h index 63d7300..5c703c7 100644 --- a/type_t.h +++ b/type_t.h @@ -52,19 +52,11 @@ typedef enum type_kind_t { TYPE_TYPEOF, } type_kind_t; -typedef enum type_modifier_t { - TYPE_MODIFIER_NONE = 0, - TYPE_MODIFIER_TRANSPARENT_UNION = 1 << 0, -} type_modifier_t; -typedef unsigned short type_modifiers_t; - struct type_base_t { type_kind_t kind; - il_size_t size; /**< The size of this type. */ type_qualifiers_t qualifiers; - type_modifiers_t modifiers; - il_alignment_t alignment; /**< The extra alignment of the type, 0 for default. */ + /* cached ast2firm infos */ ir_type *firm_type; }; @@ -92,7 +84,7 @@ struct builtin_type_t { struct pointer_type_t { type_base_t base; type_t *points_to; - variable_t *base_variable; /**< Microsoft __based() extension */ + variable_t *base_variable; /**< Microsoft __based() extension: base variable or NULL. */ }; struct reference_type_t { @@ -148,6 +140,7 @@ struct function_type_t { function_parameter_t *parameters; /**< A list of the parameter types. */ linkage_kind_t linkage; cc_kind_t calling_convention; /**< The specified calling convention. */ + decl_modifiers_t modifiers; bool variadic : 1; bool unspecified_parameters : 1; bool kr_style_parameters : 1; @@ -162,11 +155,12 @@ struct compound_type_t { }; struct enum_type_t { - type_base_t base; + type_base_t base; + atomic_type_kind_t akind; /**< underlying atomic type */ /** the enum entity. You can find the enum entries by walking the * enum->base.next list until you don't find ENTITY_ENUM_VALUE entities * anymore */ - enum_t *enume; + enum_t *enume; }; struct typedef_type_t { @@ -218,6 +212,7 @@ type_t *make_array_type(type_t *element_type, size_t size, type_qualifiers_t qualifiers); type_t *duplicate_type(const type_t *type); +type_t *identify_new_type(type_t *type); static inline bool is_typeref(const type_t *type) {