X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ast_t.h;h=e65c3c85d75b745eeb26a250e0f154dac67d9aed;hb=2aa9a7c30d2961cbc240b4951849c308013a48d2;hp=6b9f1c078e608d8dc0dc258f216b9d3c902b8680;hpb=ec301261c69a95e994cf1d82b084713bf23fb5ab;p=cparser diff --git a/ast_t.h b/ast_t.h index 6b9f1c0..e65c3c8 100644 --- a/ast_t.h +++ b/ast_t.h @@ -51,7 +51,8 @@ typedef enum { EXPR_UNARY_CAST, EXPR_UNARY_CAST_IMPLICIT, /**< compiler generated cast */ EXPR_UNARY_ASSUME, /**< MS __assume() */ - EXPR_UNARY_LAST = EXPR_UNARY_ASSUME, + EXPR_UNARY_BITFIELD_EXTRACT, + EXPR_UNARY_LAST = EXPR_UNARY_BITFIELD_EXTRACT, EXPR_BINARY_FIRST, EXPR_BINARY_ADD = EXPR_BINARY_FIRST, @@ -148,7 +149,8 @@ typedef enum { case EXPR_UNARY_PREFIX_DECREMENT: \ case EXPR_UNARY_CAST: \ case EXPR_UNARY_CAST_IMPLICIT: \ - case EXPR_UNARY_ASSUME: + case EXPR_UNARY_ASSUME: \ + case EXPR_UNARY_BITFIELD_EXTRACT: struct context_t { declaration_t *declarations; /**< List of declarations in this context. */ @@ -170,7 +172,7 @@ struct const_expression_t { struct string_literal_expression_t { expression_base_t expression; - const char *value; + string_t value; }; struct wide_string_literal_expression_t { @@ -358,8 +360,8 @@ struct initializer_list_t { }; struct initializer_string_t { - initializer_base_t initializer; - const char *string; + initializer_base_t initializer; + string_t string; }; struct initializer_wide_string_t { @@ -392,7 +394,7 @@ typedef unsigned short decl_modifiers_t; struct declaration_t { unsigned char namespc; unsigned char storage_class; - decl_modifiers_t decl_modifiers; + decl_modifiers_t modifiers; unsigned int address_taken : 1; unsigned int is_inline : 1; type_t *type; @@ -472,20 +474,23 @@ struct if_statement_t { }; struct switch_statement_t { - statement_base_t statement; - expression_t *expression; - statement_t *body; + statement_base_t statement; + expression_t *expression; + statement_t *body; + case_label_statement_t *first_case, *last_case; }; struct goto_statement_t { statement_base_t statement; declaration_t *label; + goto_statement_t *next; /**< link all goto statements in a function */ }; struct case_label_statement_t { - statement_base_t statement; - expression_t *expression; - statement_t *label_statement; + statement_base_t statement; + expression_t *expression; + statement_t *label_statement; + case_label_statement_t *next; /**< link to the next case label in the switch */ }; struct label_statement_t { @@ -521,20 +526,20 @@ struct for_statement_t { }; struct asm_constraint_t { - const char *constraints; + string_t constraints; expression_t *expression; symbol_t *symbol; asm_constraint_t *next; }; struct asm_clobber_t { - const char *clobber; + string_t clobber; asm_clobber_t *next; }; struct asm_statement_t { statement_base_t statement; - const char *asm_text; + string_t asm_text; asm_constraint_t *inputs; asm_constraint_t *outputs; asm_clobber_t *clobbers;