-/**
- * Extended microsoft modifier.
- */
-typedef enum {
- DM_DLLIMPORT = (1 << 0),
- DM_DLLEXPORT = (1 << 1),
- DM_THREAD = (1 << 2),
- DM_NAKED = (1 << 3),
- DM_MICROSOFT_INLINE = (1 << 4),
- DM_FORCEINLINE = (1 << 5),
- DM_SELECTANY = (1 << 6),
- DM_NOTHROW = (1 << 7),
- DM_NOVTABLE = (1 << 8),
- DM_NORETURN = (1 << 9),
- DM_NOINLINE = (1 << 10),
- DM_RESTRICT = (1 << 11),
- DM_NOALIAS = (1 << 12)
-} decl_modifier_t;
-
-typedef unsigned short decl_modifiers_t;
-
-struct declaration_t {
- unsigned char namespc;
- unsigned char declared_storage_class;
- unsigned char storage_class;
- unsigned char alignment; /**< Alignment of the declaration, 0 for default. */
- decl_modifiers_t decl_modifiers; /**< MS __declspec modifiers. */
- const char *deprecated_string; /**< MS deprecated string if any. */
- symbol_t *get_property_sym; /**< MS get property. */
- symbol_t *put_property_sym; /**< MS put property. */
- unsigned int address_taken : 1;
- unsigned int is_inline : 1;
- unsigned int used : 1; /**< Set if the declaration is used. */
- unsigned int deprecated : 1; /**< Microsoft or GNU deprecated attribute. */
- type_t *type;
- symbol_t *symbol;
- source_position_t source_position;
- union {
- bool is_defined;
- statement_t *statement;
- initializer_t *initializer;
- expression_t *enum_value;
- } init;
- scope_t scope; /**< The scope that this declaration opens. */
- scope_t *parent_scope; /**< The parent scope where this declaration lives. */
-
- /** next declaration in a scope */
- declaration_t *next;
- /** next declaration with same symbol */
- declaration_t *symbol_next;
-
- /* the following fields are used in ast2firm module */
- unsigned char declaration_kind;
- union {
- unsigned int value_number;
- ir_entity *entity;
- ir_node *block;
- ir_node *vla_base;
- tarval *enum_val;
- ir_type *irtype;
- } v;
-};
-
-typedef enum {