X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=ast_t.h;h=4c4cf9228060227e830f4d607ce67fde81697a72;hb=69d5c744f683bd73ceaac40309ccd7db34389f33;hp=f51f8406a7a67dbb555cb1f6ee65e5d102bca1e1;hpb=33d0f22f0bf12126044af3fe008f35becda774e6;p=cparser diff --git a/ast_t.h b/ast_t.h index f51f840..4c4cf92 100644 --- a/ast_t.h +++ b/ast_t.h @@ -533,7 +533,8 @@ typedef enum decl_modifier_t { DM_CDECL = 1 << 20, DM_FASTCALL = 1 << 21, DM_STDCALL = 1 << 22, - DM_THISCALL = 1 << 23 + DM_THISCALL = 1 << 23, + DM_DEPRECATED = 1 << 24 } decl_modifier_t; typedef unsigned decl_modifiers_t; @@ -550,12 +551,11 @@ struct declaration_t { 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 complete; /**< used to indicate wether struct/union types are already defined or if just the name is declared */ + bool complete; /**< used to indicate whether struct/union types are already defined or if just the name is declared */ statement_t *statement; initializer_t *initializer; expression_t *enum_value; @@ -646,10 +646,12 @@ struct if_statement_t { }; struct switch_statement_t { - statement_base_t base; + statement_base_t base; expression_t *expression; statement_t *body; - case_label_statement_t *first_case, *last_case; + case_label_statement_t *first_case, *last_case; /**< List of all cases, including default. */ + case_label_statement_t *default_label; /**< The default label if existent. */ + unsigned long default_proj_nr; /**< The Proj-number for the default Proj. */ }; struct goto_statement_t { @@ -662,8 +664,12 @@ struct case_label_statement_t { statement_base_t base; expression_t *expression; /**< The case label expression, NULL for default label. */ expression_t *end_range; /**< For GNUC case a .. b: the end range expression, NULL else. */ + case_label_statement_t *next; /**< link to the next case label in switch */ statement_t *statement; - case_label_statement_t *next; /**< link to the next case label in switch */ + long first_case; /**< The folded value of expression. */ + long last_case; /**< The folded value of end_range. */ + bool is_bad; /**< If set marked as bad to supress warnings. */ + bool is_empty; /**< If set marked this is a empty range. */ }; struct label_statement_t {