X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ast_t.h;h=ac7919b26b42d908095ff5ad94eb124db18df41a;hb=43f6b44f389409af5b6162d831fe7c5c79f2ccb3;hp=0230f181f4fccdc1b8c7bc2f96cb40409e188731;hpb=39cd9987134ba2880059533b7a48c98bc8ce029b;p=cparser diff --git a/ast_t.h b/ast_t.h index 0230f18..ac7919b 100644 --- a/ast_t.h +++ b/ast_t.h @@ -551,11 +551,12 @@ 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 implicit : 1; 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 +647,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 +665,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 {