widl: Update to current Wine version. Signed-off-by: Jacek Caban <jacek@codeweavers.com>
diff --git a/mingw-w64-tools/widl/VERSION b/mingw-w64-tools/widl/VERSION index e99ac93..caf7b8b 100644 --- a/mingw-w64-tools/widl/VERSION +++ b/mingw-w64-tools/widl/VERSION
@@ -1 +1 @@ -WIDL version 8.19 +WIDL version 8.21
diff --git a/mingw-w64-tools/widl/configure b/mingw-w64-tools/widl/configure index d8a0982..ba98b23 100755 --- a/mingw-w64-tools/widl/configure +++ b/mingw-w64-tools/widl/configure
@@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.71 for widl 8.19. +# Generated by GNU Autoconf 2.71 for widl 8.21. # # Report bugs to <mingw-w64-public@lists.sourceforge.net>. # @@ -610,8 +610,8 @@ # Identity of this package. PACKAGE_NAME='widl' PACKAGE_TARNAME='widl' -PACKAGE_VERSION='8.19' -PACKAGE_STRING='widl 8.19' +PACKAGE_VERSION='8.21' +PACKAGE_STRING='widl 8.21' PACKAGE_BUGREPORT='mingw-w64-public@lists.sourceforge.net' PACKAGE_URL='' @@ -1319,7 +1319,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures widl 8.19 to adapt to many kinds of systems. +\`configure' configures widl 8.21 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1391,7 +1391,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of widl 8.19:";; + short | recursive ) echo "Configuration of widl 8.21:";; esac cat <<\_ACEOF @@ -1493,7 +1493,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -widl configure 8.19 +widl configure 8.21 generated by GNU Autoconf 2.71 Copyright (C) 2021 Free Software Foundation, Inc. @@ -1905,7 +1905,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by widl $as_me 8.19, which was +It was created by widl $as_me 8.21, which was generated by GNU Autoconf 2.71. Invocation command line was $ $0$ac_configure_args_raw @@ -3295,7 +3295,7 @@ # Define the identity of the package. PACKAGE='widl' - VERSION='8.19' + VERSION='8.21' printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h @@ -5789,7 +5789,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by widl $as_me 8.19, which was +This file was extended by widl $as_me 8.21, which was generated by GNU Autoconf 2.71. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -5857,7 +5857,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config='$ac_cs_config_escaped' ac_cs_version="\\ -widl config.status 8.19 +widl config.status 8.21 configured by $0, generated by GNU Autoconf 2.71, with options \\"\$ac_cs_config\\"
diff --git a/mingw-w64-tools/widl/include/windef.h b/mingw-w64-tools/widl/include/windef.h index b22e15c..78e4f56 100644 --- a/mingw-w64-tools/widl/include/windef.h +++ b/mingw-w64-tools/widl/include/windef.h
@@ -439,4 +439,10 @@ } #endif +typedef enum { + DPI_HOSTING_BEHAVIOR_INVALID = -1, + DPI_HOSTING_BEHAVIOR_DEFAULT = 0, + DPI_HOSTING_BEHAVIOR_MIXED = 1 +} DPI_HOSTING_BEHAVIOR; + #endif /* _WINDEF_ */
diff --git a/mingw-w64-tools/widl/include/winnt.h b/mingw-w64-tools/widl/include/winnt.h index d864dd3..39332ef 100644 --- a/mingw-w64-tools/widl/include/winnt.h +++ b/mingw-w64-tools/widl/include/winnt.h
@@ -180,7 +180,10 @@ /* a couple of useful Wine extensions */ -#ifdef _MSC_VER +#if defined(__WINESRC__) && !defined(WINE_UNIX_LIB) +/* Wine uses .spec file for PE exports */ +# define DECLSPEC_EXPORT +#elif defined(_MSC_VER) # define DECLSPEC_EXPORT __declspec(dllexport) #elif defined(__MINGW32__) # define DECLSPEC_EXPORT __attribute__((dllexport)) @@ -6756,6 +6759,7 @@ #define InterlockedDecrement64 _InterlockedDecrement64 #define InterlockedExchange _InterlockedExchange #define InterlockedExchangeAdd _InterlockedExchangeAdd +#define InterlockedExchangeAdd16 _InterlockedExchangeAdd16 #define InterlockedExchangeAdd64 _InterlockedExchangeAdd64 #define InterlockedExchangePointer _InterlockedExchangePointer #define InterlockedIncrement _InterlockedIncrement @@ -6776,6 +6780,7 @@ #pragma intrinsic(_InterlockedCompareExchangePointer) #pragma intrinsic(_InterlockedExchange) #pragma intrinsic(_InterlockedExchangeAdd) +#pragma intrinsic(_InterlockedExchangeAdd16) #pragma intrinsic(_InterlockedExchangePointer) #pragma intrinsic(_InterlockedIncrement) #pragma intrinsic(_InterlockedIncrement16) @@ -6795,6 +6800,7 @@ short _InterlockedDecrement16(short volatile*); long _InterlockedExchange(long volatile*,long); long _InterlockedExchangeAdd(long volatile*,long); +short _InterlockedExchangeAdd16(short volatile*,short); void * _InterlockedExchangePointer(void *volatile*,void*); long _InterlockedIncrement(long volatile*); short _InterlockedIncrement16(short volatile*); @@ -7027,6 +7033,11 @@ return __sync_fetch_and_add( dest, incr ); } +static FORCEINLINE short WINAPI InterlockedExchangeAdd16( short volatile *dest, short incr ) +{ + return __sync_fetch_and_add( dest, incr ); +} + static FORCEINLINE LONGLONG WINAPI InterlockedExchangeAdd64( LONGLONG volatile *dest, LONGLONG incr ) { return __sync_fetch_and_add( dest, incr );
diff --git a/mingw-w64-tools/widl/src/parser.tab.c b/mingw-w64-tools/widl/src/parser.tab.c index db44ac5..b453f4b 100644 --- a/mingw-w64-tools/widl/src/parser.tab.c +++ b/mingw-w64-tools/widl/src/parser.tab.c
@@ -205,7 +205,333 @@ # endif # endif -#include "parser.tab.h" + +/* Debug traces. */ +#ifndef PARSER_DEBUG +# if defined YYDEBUG +#if YYDEBUG +# define PARSER_DEBUG 1 +# else +# define PARSER_DEBUG 0 +# endif +# else /* ! defined YYDEBUG */ +# define PARSER_DEBUG 0 +# endif /* ! defined YYDEBUG */ +#endif /* ! defined PARSER_DEBUG */ +#if PARSER_DEBUG +extern int parser_debug; +#endif +/* "%code requires" blocks. */ +#line 110 "tools/widl/parser.y" + + +#define PARSER_LTYPE struct location + + +#line 232 "tools/widl/parser.tab.c" + +/* Token kinds. */ +#ifndef PARSER_TOKENTYPE +# define PARSER_TOKENTYPE + enum parser_tokentype + { + PARSER_EMPTY = -2, + PARSER_EOF = 0, /* "end of file" */ + PARSER_error = 256, /* error */ + PARSER_UNDEF = 257, /* "invalid token" */ + aIDENTIFIER = 258, /* aIDENTIFIER */ + aPRAGMA = 259, /* aPRAGMA */ + aKNOWNTYPE = 260, /* aKNOWNTYPE */ + aNUM = 261, /* aNUM */ + aHEXNUM = 262, /* aHEXNUM */ + aDOUBLE = 263, /* aDOUBLE */ + aSTRING = 264, /* aSTRING */ + aWSTRING = 265, /* aWSTRING */ + aSQSTRING = 266, /* aSQSTRING */ + tCDECL = 267, /* tCDECL */ + tFASTCALL = 268, /* tFASTCALL */ + tPASCAL = 269, /* tPASCAL */ + tSTDCALL = 270, /* tSTDCALL */ + aUUID = 271, /* aUUID */ + aEOF = 272, /* aEOF */ + aACF = 273, /* aACF */ + SHL = 274, /* SHL */ + SHR = 275, /* SHR */ + MEMBERPTR = 276, /* MEMBERPTR */ + EQUALITY = 277, /* EQUALITY */ + INEQUALITY = 278, /* INEQUALITY */ + GREATEREQUAL = 279, /* GREATEREQUAL */ + LESSEQUAL = 280, /* LESSEQUAL */ + LOGICALOR = 281, /* LOGICALOR */ + LOGICALAND = 282, /* LOGICALAND */ + ELLIPSIS = 283, /* ELLIPSIS */ + tACTIVATABLE = 284, /* tACTIVATABLE */ + tAGGREGATABLE = 285, /* tAGGREGATABLE */ + tAGILE = 286, /* tAGILE */ + tALLNODES = 287, /* tALLNODES */ + tALLOCATE = 288, /* tALLOCATE */ + tANNOTATION = 289, /* tANNOTATION */ + tAPICONTRACT = 290, /* tAPICONTRACT */ + tAPPOBJECT = 291, /* tAPPOBJECT */ + tASYNC = 292, /* tASYNC */ + tASYNCUUID = 293, /* tASYNCUUID */ + tAUTOHANDLE = 294, /* tAUTOHANDLE */ + tBINDABLE = 295, /* tBINDABLE */ + tBOOLEAN = 296, /* tBOOLEAN */ + tBROADCAST = 297, /* tBROADCAST */ + tBYTE = 298, /* tBYTE */ + tBYTECOUNT = 299, /* tBYTECOUNT */ + tCALLAS = 300, /* tCALLAS */ + tCALLBACK = 301, /* tCALLBACK */ + tCASE = 302, /* tCASE */ + tCHAR = 303, /* tCHAR */ + tCOCLASS = 304, /* tCOCLASS */ + tCODE = 305, /* tCODE */ + tCOMMSTATUS = 306, /* tCOMMSTATUS */ + tCOMPOSABLE = 307, /* tCOMPOSABLE */ + tCONST = 308, /* tCONST */ + tCONTEXTHANDLE = 309, /* tCONTEXTHANDLE */ + tCONTEXTHANDLENOSERIALIZE = 310, /* tCONTEXTHANDLENOSERIALIZE */ + tCONTEXTHANDLESERIALIZE = 311, /* tCONTEXTHANDLESERIALIZE */ + tCONTRACT = 312, /* tCONTRACT */ + tCONTRACTVERSION = 313, /* tCONTRACTVERSION */ + tCONTROL = 314, /* tCONTROL */ + tCPPQUOTE = 315, /* tCPPQUOTE */ + tCUSTOM = 316, /* tCUSTOM */ + tDECLARE = 317, /* tDECLARE */ + tDECODE = 318, /* tDECODE */ + tDEFAULT = 319, /* tDEFAULT */ + tDEFAULTBIND = 320, /* tDEFAULTBIND */ + tDELEGATE = 321, /* tDELEGATE */ + tDEFAULT_OVERLOAD = 322, /* tDEFAULT_OVERLOAD */ + tDEFAULTCOLLELEM = 323, /* tDEFAULTCOLLELEM */ + tDEFAULTVALUE = 324, /* tDEFAULTVALUE */ + tDEFAULTVTABLE = 325, /* tDEFAULTVTABLE */ + tDEPRECATED = 326, /* tDEPRECATED */ + tDISABLECONSISTENCYCHECK = 327, /* tDISABLECONSISTENCYCHECK */ + tDISPLAYBIND = 328, /* tDISPLAYBIND */ + tDISPINTERFACE = 329, /* tDISPINTERFACE */ + tDLLNAME = 330, /* tDLLNAME */ + tDONTFREE = 331, /* tDONTFREE */ + tDOUBLE = 332, /* tDOUBLE */ + tDUAL = 333, /* tDUAL */ + tENABLEALLOCATE = 334, /* tENABLEALLOCATE */ + tENCODE = 335, /* tENCODE */ + tENDPOINT = 336, /* tENDPOINT */ + tENTRY = 337, /* tENTRY */ + tENUM = 338, /* tENUM */ + tERRORSTATUST = 339, /* tERRORSTATUST */ + tEVENTADD = 340, /* tEVENTADD */ + tEVENTREMOVE = 341, /* tEVENTREMOVE */ + tEXCLUSIVETO = 342, /* tEXCLUSIVETO */ + tEXPLICITHANDLE = 343, /* tEXPLICITHANDLE */ + tEXTERN = 344, /* tEXTERN */ + tFALSE = 345, /* tFALSE */ + tFAULTSTATUS = 346, /* tFAULTSTATUS */ + tFLAGS = 347, /* tFLAGS */ + tFLOAT = 348, /* tFLOAT */ + tFORCEALLOCATE = 349, /* tFORCEALLOCATE */ + tHANDLE = 350, /* tHANDLE */ + tHANDLET = 351, /* tHANDLET */ + tHELPCONTEXT = 352, /* tHELPCONTEXT */ + tHELPFILE = 353, /* tHELPFILE */ + tHELPSTRING = 354, /* tHELPSTRING */ + tHELPSTRINGCONTEXT = 355, /* tHELPSTRINGCONTEXT */ + tHELPSTRINGDLL = 356, /* tHELPSTRINGDLL */ + tHIDDEN = 357, /* tHIDDEN */ + tHYPER = 358, /* tHYPER */ + tID = 359, /* tID */ + tIDEMPOTENT = 360, /* tIDEMPOTENT */ + tIGNORE = 361, /* tIGNORE */ + tIIDIS = 362, /* tIIDIS */ + tIMMEDIATEBIND = 363, /* tIMMEDIATEBIND */ + tIMPLICITHANDLE = 364, /* tIMPLICITHANDLE */ + tIMPORT = 365, /* tIMPORT */ + tIMPORTLIB = 366, /* tIMPORTLIB */ + tIN = 367, /* tIN */ + tIN_LINE = 368, /* tIN_LINE */ + tINLINE = 369, /* tINLINE */ + tINPUTSYNC = 370, /* tINPUTSYNC */ + tINT = 371, /* tINT */ + tINT32 = 372, /* tINT32 */ + tINT3264 = 373, /* tINT3264 */ + tINT64 = 374, /* tINT64 */ + tINTERFACE = 375, /* tINTERFACE */ + tLCID = 376, /* tLCID */ + tLENGTHIS = 377, /* tLENGTHIS */ + tLIBRARY = 378, /* tLIBRARY */ + tLICENSED = 379, /* tLICENSED */ + tLOCAL = 380, /* tLOCAL */ + tLONG = 381, /* tLONG */ + tMARSHALINGBEHAVIOR = 382, /* tMARSHALINGBEHAVIOR */ + tMAYBE = 383, /* tMAYBE */ + tMESSAGE = 384, /* tMESSAGE */ + tMETHODS = 385, /* tMETHODS */ + tMODULE = 386, /* tMODULE */ + tMTA = 387, /* tMTA */ + tNAMESPACE = 388, /* tNAMESPACE */ + tNOCODE = 389, /* tNOCODE */ + tNONBROWSABLE = 390, /* tNONBROWSABLE */ + tNONCREATABLE = 391, /* tNONCREATABLE */ + tNONE = 392, /* tNONE */ + tNONEXTENSIBLE = 393, /* tNONEXTENSIBLE */ + tNOTIFY = 394, /* tNOTIFY */ + tNOTIFYFLAG = 395, /* tNOTIFYFLAG */ + tNULL = 396, /* tNULL */ + tOBJECT = 397, /* tOBJECT */ + tODL = 398, /* tODL */ + tOLEAUTOMATION = 399, /* tOLEAUTOMATION */ + tOPTIMIZE = 400, /* tOPTIMIZE */ + tOPTIONAL = 401, /* tOPTIONAL */ + tOUT = 402, /* tOUT */ + tOVERLOAD = 403, /* tOVERLOAD */ + tPARTIALIGNORE = 404, /* tPARTIALIGNORE */ + tPOINTERDEFAULT = 405, /* tPOINTERDEFAULT */ + tPRAGMA_WARNING = 406, /* tPRAGMA_WARNING */ + tPROGID = 407, /* tPROGID */ + tPROPERTIES = 408, /* tPROPERTIES */ + tPROPGET = 409, /* tPROPGET */ + tPROPPUT = 410, /* tPROPPUT */ + tPROPPUTREF = 411, /* tPROPPUTREF */ + tPROTECTED = 412, /* tPROTECTED */ + tPROXY = 413, /* tPROXY */ + tPTR = 414, /* tPTR */ + tPUBLIC = 415, /* tPUBLIC */ + tRANGE = 416, /* tRANGE */ + tREADONLY = 417, /* tREADONLY */ + tREF = 418, /* tREF */ + tREGISTER = 419, /* tREGISTER */ + tREPRESENTAS = 420, /* tREPRESENTAS */ + tREQUESTEDIT = 421, /* tREQUESTEDIT */ + tREQUIRES = 422, /* tREQUIRES */ + tRESTRICTED = 423, /* tRESTRICTED */ + tRETVAL = 424, /* tRETVAL */ + tRUNTIMECLASS = 425, /* tRUNTIMECLASS */ + tSAFEARRAY = 426, /* tSAFEARRAY */ + tSHORT = 427, /* tSHORT */ + tSIGNED = 428, /* tSIGNED */ + tSINGLENODE = 429, /* tSINGLENODE */ + tSIZEIS = 430, /* tSIZEIS */ + tSIZEOF = 431, /* tSIZEOF */ + tSMALL = 432, /* tSMALL */ + tSOURCE = 433, /* tSOURCE */ + tSTANDARD = 434, /* tSTANDARD */ + tSTATIC = 435, /* tSTATIC */ + tSTRICTCONTEXTHANDLE = 436, /* tSTRICTCONTEXTHANDLE */ + tSTRING = 437, /* tSTRING */ + tSTRUCT = 438, /* tSTRUCT */ + tSWITCH = 439, /* tSWITCH */ + tSWITCHIS = 440, /* tSWITCHIS */ + tSWITCHTYPE = 441, /* tSWITCHTYPE */ + tTHREADING = 442, /* tTHREADING */ + tTRANSMITAS = 443, /* tTRANSMITAS */ + tTRUE = 444, /* tTRUE */ + tTYPEDEF = 445, /* tTYPEDEF */ + tUIDEFAULT = 446, /* tUIDEFAULT */ + tUNION = 447, /* tUNION */ + tUNIQUE = 448, /* tUNIQUE */ + tUNSIGNED = 449, /* tUNSIGNED */ + tUSESGETLASTERROR = 450, /* tUSESGETLASTERROR */ + tUSERMARSHAL = 451, /* tUSERMARSHAL */ + tUUID = 452, /* tUUID */ + tV1ENUM = 453, /* tV1ENUM */ + tVARARG = 454, /* tVARARG */ + tVERSION = 455, /* tVERSION */ + tVIPROGID = 456, /* tVIPROGID */ + tVOID = 457, /* tVOID */ + tWCHAR = 458, /* tWCHAR */ + tWIREMARSHAL = 459, /* tWIREMARSHAL */ + tAPARTMENT = 460, /* tAPARTMENT */ + tNEUTRAL = 461, /* tNEUTRAL */ + tSINGLE = 462, /* tSINGLE */ + tFREE = 463, /* tFREE */ + tBOTH = 464, /* tBOTH */ + CAST = 465, /* CAST */ + PPTR = 466, /* PPTR */ + POS = 467, /* POS */ + NEG = 468, /* NEG */ + ADDRESSOF = 469 /* ADDRESSOF */ + }; + typedef enum parser_tokentype parser_token_kind_t; +#endif + +/* Value type. */ +#if ! defined PARSER_STYPE && ! defined PARSER_STYPE_IS_DECLARED +union PARSER_STYPE +{ +#line 134 "tools/widl/parser.y" + + attr_t *attr; + attr_list_t *attr_list; + str_list_t *str_list; + expr_t *expr; + expr_list_t *expr_list; + type_t *type; + var_t *var; + var_list_t *var_list; + declarator_t *declarator; + declarator_list_t *declarator_list; + statement_t *statement; + statement_list_t *stmt_list; + warning_t *warning; + warning_list_t *warning_list; + typeref_t *typeref; + typeref_list_t *typeref_list; + char *str; + struct uuid *uuid; + unsigned int num; + double dbl; + typelib_t *typelib; + struct _import_t *import; + struct _decl_spec_t *declspec; + enum storage_class stgclass; + enum type_qualifier type_qualifier; + enum function_specifier function_specifier; + struct namespace *namespace; + +#line 493 "tools/widl/parser.tab.c" + +}; +typedef union PARSER_STYPE PARSER_STYPE; +# define PARSER_STYPE_IS_TRIVIAL 1 +# define PARSER_STYPE_IS_DECLARED 1 +#endif + +/* Location type. */ +#if ! defined PARSER_LTYPE && ! defined PARSER_LTYPE_IS_DECLARED +typedef struct PARSER_LTYPE PARSER_LTYPE; +struct PARSER_LTYPE +{ + int first_line; + int first_column; + int last_line; + int last_column; +}; +# define PARSER_LTYPE_IS_DECLARED 1 +# define PARSER_LTYPE_IS_TRIVIAL 1 +#endif + + + + +int parser_parse (void); + +/* "%code provides" blocks. */ +#line 117 "tools/widl/parser.y" + + +int parser_lex( PARSER_STYPE *yylval, PARSER_LTYPE *yylloc ); +void push_import( const char *fname, PARSER_LTYPE *yylloc ); +void pop_import( PARSER_LTYPE *yylloc ); + +# define YYLLOC_DEFAULT( cur, rhs, n ) \ + do { if (n) init_location( &(cur), &YYRHSLOC( rhs, 1 ), &YYRHSLOC( rhs, n ) ); \ + else init_location( &(cur), &YYRHSLOC( rhs, 0 ), NULL ); } while(0) + + +#line 533 "tools/widl/parser.tab.c" + + /* Symbol kind. */ enum yysymbol_kind_t { @@ -3256,13 +3582,13 @@ write_dlldata((yyvsp[-1].stmt_list)); write_local_stubs((yyvsp[-1].stmt_list)); } -#line 3260 "tools/widl/parser.tab.c" +#line 3586 "tools/widl/parser.tab.c" break; case 5: /* decl_statements: %empty */ #line 390 "tools/widl/parser.y" { (yyval.stmt_list) = NULL; } -#line 3266 "tools/widl/parser.tab.c" +#line 3592 "tools/widl/parser.tab.c" break; case 6: /* decl_statements: decl_statements tINTERFACE qualified_type '<' parameterized_type_args '>' ';' */ @@ -3270,73 +3596,73 @@ { parameterized_type_stmts = append_statement(parameterized_type_stmts, make_statement_parameterized_type((yyvsp[-4].type), (yyvsp[-2].typeref_list))); (yyval.stmt_list) = append_statement((yyvsp[-6].stmt_list), make_statement_reference(type_parameterized_type_specialize_declare((yyvsp[-4].type), (yyvsp[-2].typeref_list)))); } -#line 3274 "tools/widl/parser.tab.c" +#line 3600 "tools/widl/parser.tab.c" break; case 7: /* decl_block: tDECLARE '{' decl_statements '}' */ #line 397 "tools/widl/parser.y" { (yyval.stmt_list) = (yyvsp[-1].stmt_list); } -#line 3280 "tools/widl/parser.tab.c" +#line 3606 "tools/widl/parser.tab.c" break; case 8: /* imp_decl_statements: %empty */ #line 401 "tools/widl/parser.y" { (yyval.stmt_list) = NULL; } -#line 3286 "tools/widl/parser.tab.c" +#line 3612 "tools/widl/parser.tab.c" break; case 9: /* imp_decl_statements: imp_decl_statements tINTERFACE qualified_type '<' parameterized_type_args '>' ';' */ #line 403 "tools/widl/parser.y" { (yyval.stmt_list) = append_statement((yyvsp[-6].stmt_list), make_statement_reference(type_parameterized_type_specialize_declare((yyvsp[-4].type), (yyvsp[-2].typeref_list)))); } -#line 3292 "tools/widl/parser.tab.c" +#line 3618 "tools/widl/parser.tab.c" break; case 10: /* imp_decl_block: tDECLARE '{' imp_decl_statements '}' */ #line 407 "tools/widl/parser.y" { (yyval.stmt_list) = (yyvsp[-1].stmt_list); } -#line 3298 "tools/widl/parser.tab.c" +#line 3624 "tools/widl/parser.tab.c" break; case 11: /* gbl_statements: %empty */ #line 411 "tools/widl/parser.y" { (yyval.stmt_list) = NULL; } -#line 3304 "tools/widl/parser.tab.c" +#line 3630 "tools/widl/parser.tab.c" break; case 12: /* $@1: %empty */ #line 412 "tools/widl/parser.y" { push_namespaces((yyvsp[-1].str_list)); } -#line 3310 "tools/widl/parser.tab.c" +#line 3636 "tools/widl/parser.tab.c" break; case 13: /* gbl_statements: gbl_statements namespacedef '{' $@1 gbl_statements '}' */ #line 413 "tools/widl/parser.y" { pop_namespaces((yyvsp[-4].str_list)); (yyval.stmt_list) = append_statements((yyvsp[-5].stmt_list), (yyvsp[-1].stmt_list)); } -#line 3316 "tools/widl/parser.tab.c" +#line 3642 "tools/widl/parser.tab.c" break; case 14: /* gbl_statements: gbl_statements interface ';' */ #line 414 "tools/widl/parser.y" { (yyval.stmt_list) = append_statement((yyvsp[-2].stmt_list), make_statement_reference((yyvsp[-1].type))); } -#line 3322 "tools/widl/parser.tab.c" +#line 3648 "tools/widl/parser.tab.c" break; case 15: /* gbl_statements: gbl_statements dispinterface ';' */ #line 415 "tools/widl/parser.y" { (yyval.stmt_list) = append_statement((yyvsp[-2].stmt_list), make_statement_reference((yyvsp[-1].type))); } -#line 3328 "tools/widl/parser.tab.c" +#line 3654 "tools/widl/parser.tab.c" break; case 16: /* gbl_statements: gbl_statements interfacedef */ #line 416 "tools/widl/parser.y" { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); } -#line 3334 "tools/widl/parser.tab.c" +#line 3660 "tools/widl/parser.tab.c" break; case 17: /* gbl_statements: gbl_statements delegatedef */ #line 417 "tools/widl/parser.y" { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); } -#line 3340 "tools/widl/parser.tab.c" +#line 3666 "tools/widl/parser.tab.c" break; case 18: /* gbl_statements: gbl_statements coclass ';' */ @@ -3344,7 +3670,7 @@ { (yyval.stmt_list) = (yyvsp[-2].stmt_list); reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, current_namespace, 0); } -#line 3348 "tools/widl/parser.tab.c" +#line 3674 "tools/widl/parser.tab.c" break; case 19: /* gbl_statements: gbl_statements coclassdef */ @@ -3352,105 +3678,105 @@ { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); reg_type((yyvsp[0].type), (yyvsp[0].type)->name, current_namespace, 0); } -#line 3356 "tools/widl/parser.tab.c" +#line 3682 "tools/widl/parser.tab.c" break; case 20: /* gbl_statements: gbl_statements apicontract ';' */ #line 424 "tools/widl/parser.y" { (yyval.stmt_list) = (yyvsp[-2].stmt_list); reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, current_namespace, 0); } -#line 3362 "tools/widl/parser.tab.c" +#line 3688 "tools/widl/parser.tab.c" break; case 21: /* gbl_statements: gbl_statements apicontract_def */ #line 425 "tools/widl/parser.y" { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); reg_type((yyvsp[0].type), (yyvsp[0].type)->name, current_namespace, 0); } -#line 3369 "tools/widl/parser.tab.c" +#line 3695 "tools/widl/parser.tab.c" break; case 22: /* gbl_statements: gbl_statements runtimeclass ';' */ #line 427 "tools/widl/parser.y" { (yyval.stmt_list) = (yyvsp[-2].stmt_list); reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, current_namespace, 0); } -#line 3375 "tools/widl/parser.tab.c" +#line 3701 "tools/widl/parser.tab.c" break; case 23: /* gbl_statements: gbl_statements runtimeclass_def */ #line 428 "tools/widl/parser.y" { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); reg_type((yyvsp[0].type), (yyvsp[0].type)->name, current_namespace, 0); } -#line 3382 "tools/widl/parser.tab.c" +#line 3708 "tools/widl/parser.tab.c" break; case 24: /* gbl_statements: gbl_statements moduledef */ #line 430 "tools/widl/parser.y" { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_module((yyvsp[0].type))); } -#line 3388 "tools/widl/parser.tab.c" +#line 3714 "tools/widl/parser.tab.c" break; case 25: /* gbl_statements: gbl_statements librarydef */ #line 431 "tools/widl/parser.y" { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_library((yyvsp[0].typelib))); } -#line 3394 "tools/widl/parser.tab.c" +#line 3720 "tools/widl/parser.tab.c" break; case 26: /* gbl_statements: gbl_statements statement */ #line 432 "tools/widl/parser.y" { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); } -#line 3400 "tools/widl/parser.tab.c" +#line 3726 "tools/widl/parser.tab.c" break; case 27: /* gbl_statements: gbl_statements decl_block */ #line 433 "tools/widl/parser.y" { (yyval.stmt_list) = append_statements((yyvsp[-1].stmt_list), (yyvsp[0].stmt_list)); } -#line 3406 "tools/widl/parser.tab.c" +#line 3732 "tools/widl/parser.tab.c" break; case 28: /* imp_statements: %empty */ #line 437 "tools/widl/parser.y" { (yyval.stmt_list) = NULL; } -#line 3412 "tools/widl/parser.tab.c" +#line 3738 "tools/widl/parser.tab.c" break; case 29: /* imp_statements: imp_statements interface ';' */ #line 438 "tools/widl/parser.y" { (yyval.stmt_list) = append_statement((yyvsp[-2].stmt_list), make_statement_reference((yyvsp[-1].type))); } -#line 3418 "tools/widl/parser.tab.c" +#line 3744 "tools/widl/parser.tab.c" break; case 30: /* imp_statements: imp_statements dispinterface ';' */ #line 439 "tools/widl/parser.y" { (yyval.stmt_list) = append_statement((yyvsp[-2].stmt_list), make_statement_reference((yyvsp[-1].type))); } -#line 3424 "tools/widl/parser.tab.c" +#line 3750 "tools/widl/parser.tab.c" break; case 31: /* $@2: %empty */ #line 440 "tools/widl/parser.y" { push_namespaces((yyvsp[-1].str_list)); } -#line 3430 "tools/widl/parser.tab.c" +#line 3756 "tools/widl/parser.tab.c" break; case 32: /* imp_statements: imp_statements namespacedef '{' $@2 imp_statements '}' */ #line 441 "tools/widl/parser.y" { pop_namespaces((yyvsp[-4].str_list)); (yyval.stmt_list) = append_statements((yyvsp[-5].stmt_list), (yyvsp[-1].stmt_list)); } -#line 3436 "tools/widl/parser.tab.c" +#line 3762 "tools/widl/parser.tab.c" break; case 33: /* imp_statements: imp_statements interfacedef */ #line 442 "tools/widl/parser.y" { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); } -#line 3442 "tools/widl/parser.tab.c" +#line 3768 "tools/widl/parser.tab.c" break; case 34: /* imp_statements: imp_statements delegatedef */ #line 443 "tools/widl/parser.y" { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); } -#line 3448 "tools/widl/parser.tab.c" +#line 3774 "tools/widl/parser.tab.c" break; case 35: /* imp_statements: imp_statements coclass ';' */ #line 444 "tools/widl/parser.y" { (yyval.stmt_list) = (yyvsp[-2].stmt_list); reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, current_namespace, 0); } -#line 3454 "tools/widl/parser.tab.c" +#line 3780 "tools/widl/parser.tab.c" break; case 36: /* imp_statements: imp_statements coclassdef */ @@ -3458,117 +3784,117 @@ { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); reg_type((yyvsp[0].type), (yyvsp[0].type)->name, current_namespace, 0); } -#line 3462 "tools/widl/parser.tab.c" +#line 3788 "tools/widl/parser.tab.c" break; case 37: /* imp_statements: imp_statements apicontract ';' */ #line 448 "tools/widl/parser.y" { (yyval.stmt_list) = (yyvsp[-2].stmt_list); reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, current_namespace, 0); } -#line 3468 "tools/widl/parser.tab.c" +#line 3794 "tools/widl/parser.tab.c" break; case 38: /* imp_statements: imp_statements apicontract_def */ #line 449 "tools/widl/parser.y" { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); reg_type((yyvsp[0].type), (yyvsp[0].type)->name, current_namespace, 0); } -#line 3475 "tools/widl/parser.tab.c" +#line 3801 "tools/widl/parser.tab.c" break; case 39: /* imp_statements: imp_statements runtimeclass ';' */ #line 451 "tools/widl/parser.y" { (yyval.stmt_list) = (yyvsp[-2].stmt_list); reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, current_namespace, 0); } -#line 3481 "tools/widl/parser.tab.c" +#line 3807 "tools/widl/parser.tab.c" break; case 40: /* imp_statements: imp_statements runtimeclass_def */ #line 452 "tools/widl/parser.y" { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_type_decl((yyvsp[0].type))); reg_type((yyvsp[0].type), (yyvsp[0].type)->name, current_namespace, 0); } -#line 3488 "tools/widl/parser.tab.c" +#line 3814 "tools/widl/parser.tab.c" break; case 41: /* imp_statements: imp_statements moduledef */ #line 454 "tools/widl/parser.y" { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_module((yyvsp[0].type))); } -#line 3494 "tools/widl/parser.tab.c" +#line 3820 "tools/widl/parser.tab.c" break; case 42: /* imp_statements: imp_statements statement */ #line 455 "tools/widl/parser.y" { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); } -#line 3500 "tools/widl/parser.tab.c" +#line 3826 "tools/widl/parser.tab.c" break; case 43: /* imp_statements: imp_statements importlib */ #line 456 "tools/widl/parser.y" { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_importlib((yyvsp[0].str))); } -#line 3506 "tools/widl/parser.tab.c" +#line 3832 "tools/widl/parser.tab.c" break; case 44: /* imp_statements: imp_statements librarydef */ #line 457 "tools/widl/parser.y" { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), make_statement_library((yyvsp[0].typelib))); } -#line 3512 "tools/widl/parser.tab.c" +#line 3838 "tools/widl/parser.tab.c" break; case 45: /* imp_statements: imp_statements imp_decl_block */ #line 458 "tools/widl/parser.y" { (yyval.stmt_list) = append_statements((yyvsp[-1].stmt_list), (yyvsp[0].stmt_list)); } -#line 3518 "tools/widl/parser.tab.c" +#line 3844 "tools/widl/parser.tab.c" break; case 46: /* int_statements: %empty */ #line 462 "tools/widl/parser.y" { (yyval.stmt_list) = NULL; } -#line 3524 "tools/widl/parser.tab.c" +#line 3850 "tools/widl/parser.tab.c" break; case 47: /* int_statements: int_statements statement */ #line 463 "tools/widl/parser.y" { (yyval.stmt_list) = append_statement((yyvsp[-1].stmt_list), (yyvsp[0].statement)); } -#line 3530 "tools/widl/parser.tab.c" +#line 3856 "tools/widl/parser.tab.c" break; case 50: /* statement: cppquote */ #line 472 "tools/widl/parser.y" { (yyval.statement) = make_statement_cppquote((yyvsp[0].str)); } -#line 3536 "tools/widl/parser.tab.c" +#line 3862 "tools/widl/parser.tab.c" break; case 51: /* statement: typedecl ';' */ #line 473 "tools/widl/parser.y" { (yyval.statement) = make_statement_type_decl((yyvsp[-1].type)); } -#line 3542 "tools/widl/parser.tab.c" +#line 3868 "tools/widl/parser.tab.c" break; case 52: /* statement: declaration ';' */ #line 474 "tools/widl/parser.y" { (yyval.statement) = make_statement_declaration((yyvsp[-1].var)); } -#line 3548 "tools/widl/parser.tab.c" +#line 3874 "tools/widl/parser.tab.c" break; case 53: /* statement: import */ #line 475 "tools/widl/parser.y" { (yyval.statement) = make_statement_import((yyvsp[0].str)); } -#line 3554 "tools/widl/parser.tab.c" +#line 3880 "tools/widl/parser.tab.c" break; case 54: /* statement: typedef ';' */ #line 476 "tools/widl/parser.y" { (yyval.statement) = (yyvsp[-1].statement); } -#line 3560 "tools/widl/parser.tab.c" +#line 3886 "tools/widl/parser.tab.c" break; case 55: /* statement: aPRAGMA */ #line 477 "tools/widl/parser.y" { (yyval.statement) = make_statement_pragma((yyvsp[0].str)); } -#line 3566 "tools/widl/parser.tab.c" +#line 3892 "tools/widl/parser.tab.c" break; case 56: /* statement: pragma_warning */ #line 478 "tools/widl/parser.y" { (yyval.statement) = NULL; } -#line 3572 "tools/widl/parser.tab.c" +#line 3898 "tools/widl/parser.tab.c" break; case 57: /* pragma_warning: tPRAGMA_WARNING '(' aIDENTIFIER ':' warnings ')' */ @@ -3580,7 +3906,7 @@ if(!result) error_loc("expected \"disable\", \"enable\" or \"default\"\n"); } -#line 3584 "tools/widl/parser.tab.c" +#line 3910 "tools/widl/parser.tab.c" break; case 58: /* pragma_warning: tPRAGMA_WARNING '(' tDEFAULT ':' warnings ')' */ @@ -3589,85 +3915,85 @@ (yyval.statement) = NULL; do_warning("default", (yyvsp[-1].warning_list)); } -#line 3593 "tools/widl/parser.tab.c" +#line 3919 "tools/widl/parser.tab.c" break; case 59: /* warnings: aNUM */ #line 497 "tools/widl/parser.y" { (yyval.warning_list) = append_warning(NULL, (yyvsp[0].num)); } -#line 3599 "tools/widl/parser.tab.c" +#line 3925 "tools/widl/parser.tab.c" break; case 60: /* warnings: warnings aNUM */ #line 498 "tools/widl/parser.y" { (yyval.warning_list) = append_warning((yyvsp[-1].warning_list), (yyvsp[0].num)); } -#line 3605 "tools/widl/parser.tab.c" +#line 3931 "tools/widl/parser.tab.c" break; case 62: /* typedecl: tENUM aIDENTIFIER */ #line 503 "tools/widl/parser.y" { (yyval.type) = type_new_enum((yyvsp[0].str), current_namespace, FALSE, NULL); } -#line 3611 "tools/widl/parser.tab.c" +#line 3937 "tools/widl/parser.tab.c" break; case 64: /* typedecl: tSTRUCT aIDENTIFIER */ #line 505 "tools/widl/parser.y" { (yyval.type) = type_new_struct((yyvsp[0].str), current_namespace, FALSE, NULL); } -#line 3617 "tools/widl/parser.tab.c" +#line 3943 "tools/widl/parser.tab.c" break; case 66: /* typedecl: tUNION aIDENTIFIER */ #line 507 "tools/widl/parser.y" { (yyval.type) = type_new_nonencapsulated_union((yyvsp[0].str), current_namespace, FALSE, NULL); } -#line 3623 "tools/widl/parser.tab.c" +#line 3949 "tools/widl/parser.tab.c" break; case 67: /* typedecl: attributes enumdef */ #line 508 "tools/widl/parser.y" { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_enum_attrs((yyvsp[-1].attr_list)); } -#line 3629 "tools/widl/parser.tab.c" +#line 3955 "tools/widl/parser.tab.c" break; case 68: /* typedecl: attributes structdef */ #line 509 "tools/widl/parser.y" { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_struct_attrs((yyvsp[-1].attr_list)); } -#line 3635 "tools/widl/parser.tab.c" +#line 3961 "tools/widl/parser.tab.c" break; case 69: /* typedecl: attributes uniondef */ #line 510 "tools/widl/parser.y" { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = check_union_attrs((yyvsp[-1].attr_list)); } -#line 3641 "tools/widl/parser.tab.c" +#line 3967 "tools/widl/parser.tab.c" break; case 70: /* cppquote: tCPPQUOTE '(' aSTRING ')' */ #line 513 "tools/widl/parser.y" { (yyval.str) = (yyvsp[-1].str); } -#line 3647 "tools/widl/parser.tab.c" +#line 3973 "tools/widl/parser.tab.c" break; case 71: /* import_start: tIMPORT aSTRING ';' */ #line 516 "tools/widl/parser.y" { (yyval.str) = (yyvsp[-1].str); push_import( (yyvsp[-1].str), &yylloc ); } -#line 3653 "tools/widl/parser.tab.c" +#line 3979 "tools/widl/parser.tab.c" break; case 72: /* import: import_start imp_statements aEOF */ #line 518 "tools/widl/parser.y" { pop_import( &yylloc ); } -#line 3659 "tools/widl/parser.tab.c" +#line 3985 "tools/widl/parser.tab.c" break; case 73: /* importlib: tIMPORTLIB '(' aSTRING ')' semicolon_opt */ #line 522 "tools/widl/parser.y" { (yyval.str) = (yyvsp[-2].str); if(!parse_only) add_importlib((yyvsp[-2].str), current_typelib); } -#line 3665 "tools/widl/parser.tab.c" +#line 3991 "tools/widl/parser.tab.c" break; case 74: /* libraryhdr: tLIBRARY typename */ #line 525 "tools/widl/parser.y" { (yyval.str) = (yyvsp[0].str); } -#line 3671 "tools/widl/parser.tab.c" +#line 3997 "tools/widl/parser.tab.c" break; case 75: /* library_start: attributes libraryhdr '{' */ @@ -3675,37 +4001,37 @@ { (yyval.typelib) = make_library((yyvsp[-1].str), check_library_attrs((yyvsp[-1].str), (yyvsp[-2].attr_list))); if (!parse_only && do_typelib) current_typelib = (yyval.typelib); } -#line 3679 "tools/widl/parser.tab.c" +#line 4005 "tools/widl/parser.tab.c" break; case 76: /* librarydef: library_start imp_statements '}' semicolon_opt */ #line 532 "tools/widl/parser.y" { (yyval.typelib) = (yyvsp[-3].typelib); (yyval.typelib)->stmts = (yyvsp[-2].stmt_list); } -#line 3685 "tools/widl/parser.tab.c" +#line 4011 "tools/widl/parser.tab.c" break; case 77: /* m_args: %empty */ #line 536 "tools/widl/parser.y" { (yyval.var_list) = NULL; } -#line 3691 "tools/widl/parser.tab.c" +#line 4017 "tools/widl/parser.tab.c" break; case 79: /* arg_list: arg */ #line 540 "tools/widl/parser.y" { check_arg_attrs((yyvsp[0].var)); (yyval.var_list) = append_var( NULL, (yyvsp[0].var) ); } -#line 3697 "tools/widl/parser.tab.c" +#line 4023 "tools/widl/parser.tab.c" break; case 80: /* arg_list: arg_list ',' arg */ #line 541 "tools/widl/parser.y" { check_arg_attrs((yyvsp[0].var)); (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[0].var) ); } -#line 3703 "tools/widl/parser.tab.c" +#line 4029 "tools/widl/parser.tab.c" break; case 82: /* args: arg_list ',' ELLIPSIS */ #line 545 "tools/widl/parser.y" { (yyval.var_list) = append_var( (yyvsp[-2].var_list), make_var(xstrdup("...")) ); } -#line 3709 "tools/widl/parser.tab.c" +#line 4035 "tools/widl/parser.tab.c" break; case 83: /* arg: attributes decl_spec m_any_declarator */ @@ -3715,7 +4041,7 @@ (yyval.var) = declare_var((yyvsp[-2].attr_list), (yyvsp[-1].declspec), (yyvsp[0].declarator), TRUE); free((yyvsp[-1].declspec)); free((yyvsp[0].declarator)); } -#line 3719 "tools/widl/parser.tab.c" +#line 4045 "tools/widl/parser.tab.c" break; case 84: /* arg: decl_spec m_any_declarator */ @@ -3725,7 +4051,7 @@ (yyval.var) = declare_var(NULL, (yyvsp[-1].declspec), (yyvsp[0].declarator), TRUE); free((yyvsp[-1].declspec)); free((yyvsp[0].declarator)); } -#line 3729 "tools/widl/parser.tab.c" +#line 4055 "tools/widl/parser.tab.c" break; case 85: /* array: '[' expr ']' */ @@ -3734,91 +4060,91 @@ if (!(yyval.expr)->is_const || (yyval.expr)->cval <= 0) error_loc("array dimension is not a positive integer constant\n"); } -#line 3738 "tools/widl/parser.tab.c" +#line 4064 "tools/widl/parser.tab.c" break; case 86: /* array: '[' '*' ']' */ #line 565 "tools/widl/parser.y" { (yyval.expr) = make_expr(EXPR_VOID); } -#line 3744 "tools/widl/parser.tab.c" +#line 4070 "tools/widl/parser.tab.c" break; case 87: /* array: '[' ']' */ #line 566 "tools/widl/parser.y" { (yyval.expr) = make_expr(EXPR_VOID); } -#line 3750 "tools/widl/parser.tab.c" +#line 4076 "tools/widl/parser.tab.c" break; case 88: /* m_attributes: %empty */ #line 570 "tools/widl/parser.y" { (yyval.attr_list) = NULL; } -#line 3756 "tools/widl/parser.tab.c" +#line 4082 "tools/widl/parser.tab.c" break; case 90: /* attributes: '[' attrib_list ']' */ #line 575 "tools/widl/parser.y" { (yyval.attr_list) = (yyvsp[-1].attr_list); } -#line 3762 "tools/widl/parser.tab.c" +#line 4088 "tools/widl/parser.tab.c" break; case 91: /* attrib_list: attribute */ #line 578 "tools/widl/parser.y" { (yyval.attr_list) = append_attr( NULL, (yyvsp[0].attr) ); } -#line 3768 "tools/widl/parser.tab.c" +#line 4094 "tools/widl/parser.tab.c" break; case 92: /* attrib_list: attrib_list ',' attribute */ #line 579 "tools/widl/parser.y" { (yyval.attr_list) = append_attr( (yyvsp[-2].attr_list), (yyvsp[0].attr) ); } -#line 3774 "tools/widl/parser.tab.c" +#line 4100 "tools/widl/parser.tab.c" break; case 93: /* attrib_list: attrib_list ']' '[' attribute */ #line 580 "tools/widl/parser.y" { (yyval.attr_list) = append_attr( (yyvsp[-3].attr_list), (yyvsp[0].attr) ); } -#line 3780 "tools/widl/parser.tab.c" +#line 4106 "tools/widl/parser.tab.c" break; case 94: /* str_list: aSTRING */ #line 583 "tools/widl/parser.y" { (yyval.str_list) = append_str( NULL, (yyvsp[0].str) ); } -#line 3786 "tools/widl/parser.tab.c" +#line 4112 "tools/widl/parser.tab.c" break; case 95: /* str_list: str_list ',' aSTRING */ #line 584 "tools/widl/parser.y" { (yyval.str_list) = append_str( (yyvsp[-2].str_list), (yyvsp[0].str) ); } -#line 3792 "tools/widl/parser.tab.c" +#line 4118 "tools/widl/parser.tab.c" break; case 96: /* marshaling_behavior: tAGILE */ #line 588 "tools/widl/parser.y" { (yyval.num) = MARSHALING_AGILE; } -#line 3798 "tools/widl/parser.tab.c" +#line 4124 "tools/widl/parser.tab.c" break; case 97: /* marshaling_behavior: tNONE */ #line 589 "tools/widl/parser.y" { (yyval.num) = MARSHALING_NONE; } -#line 3804 "tools/widl/parser.tab.c" +#line 4130 "tools/widl/parser.tab.c" break; case 98: /* marshaling_behavior: tSTANDARD */ #line 590 "tools/widl/parser.y" { (yyval.num) = MARSHALING_STANDARD; } -#line 3810 "tools/widl/parser.tab.c" +#line 4136 "tools/widl/parser.tab.c" break; case 99: /* contract_ver: aNUM */ #line 594 "tools/widl/parser.y" { (yyval.num) = MAKEVERSION(0, (yyvsp[0].num)); } -#line 3816 "tools/widl/parser.tab.c" +#line 4142 "tools/widl/parser.tab.c" break; case 100: /* contract_ver: aNUM '.' aNUM */ #line 595 "tools/widl/parser.y" { (yyval.num) = MAKEVERSION((yyvsp[0].num), (yyvsp[-2].num)); } -#line 3822 "tools/widl/parser.tab.c" +#line 4148 "tools/widl/parser.tab.c" break; case 101: /* contract_req: decl_spec ',' contract_ver */ @@ -3828,7 +4154,7 @@ (yyval.expr) = make_exprl(EXPR_NUM, (yyvsp[0].num)); (yyval.expr) = make_exprt(EXPR_GTREQL, declare_var(NULL, (yyvsp[-2].declspec), make_declarator(NULL), 0), (yyval.expr)); } -#line 3832 "tools/widl/parser.tab.c" +#line 4158 "tools/widl/parser.tab.c" break; case 102: /* static_attr: decl_spec ',' contract_req */ @@ -3837,7 +4163,7 @@ error_loc("type %s is not an interface\n", (yyvsp[-2].declspec)->type->name); (yyval.expr) = make_exprt(EXPR_MEMBER, declare_var(NULL, (yyvsp[-2].declspec), make_declarator(NULL), 0), (yyvsp[0].expr)); } -#line 3841 "tools/widl/parser.tab.c" +#line 4167 "tools/widl/parser.tab.c" break; case 103: /* activatable_attr: decl_spec ',' contract_req */ @@ -3846,25 +4172,25 @@ error_loc("type %s is not an interface\n", (yyvsp[-2].declspec)->type->name); (yyval.expr) = make_exprt(EXPR_MEMBER, declare_var(NULL, (yyvsp[-2].declspec), make_declarator(NULL), 0), (yyvsp[0].expr)); } -#line 3850 "tools/widl/parser.tab.c" +#line 4176 "tools/widl/parser.tab.c" break; case 104: /* activatable_attr: contract_req */ #line 618 "tools/widl/parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 3856 "tools/widl/parser.tab.c" +#line 4182 "tools/widl/parser.tab.c" break; case 105: /* access_attr: tPUBLIC */ #line 622 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_PUBLIC, 0 ); } -#line 3862 "tools/widl/parser.tab.c" +#line 4188 "tools/widl/parser.tab.c" break; case 106: /* access_attr: tPROTECTED */ #line 623 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_PROTECTED, 0 ); } -#line 3868 "tools/widl/parser.tab.c" +#line 4194 "tools/widl/parser.tab.c" break; case 107: /* composable_attr: decl_spec ',' access_attr ',' contract_req */ @@ -3873,133 +4199,133 @@ error_loc( "type %s is not an interface\n", (yyvsp[-4].declspec)->type->name ); (yyval.expr) = make_exprt( EXPR_MEMBER, declare_var( append_attr( NULL, (yyvsp[-2].attr) ), (yyvsp[-4].declspec), make_declarator( NULL ), 0 ), (yyvsp[0].expr) ); } -#line 3877 "tools/widl/parser.tab.c" +#line 4203 "tools/widl/parser.tab.c" break; case 108: /* deprecated_attr: aSTRING ',' aIDENTIFIER ',' contract_req */ #line 636 "tools/widl/parser.y" { (yyval.expr) = make_expr3( EXPR_MEMBER, make_exprs( EXPR_STRLIT, (yyvsp[-4].str) ), make_exprs( EXPR_IDENTIFIER, (yyvsp[-2].str) ), (yyvsp[0].expr) ); } -#line 3883 "tools/widl/parser.tab.c" +#line 4209 "tools/widl/parser.tab.c" break; case 109: /* attribute: %empty */ #line 640 "tools/widl/parser.y" { (yyval.attr) = NULL; } -#line 3889 "tools/widl/parser.tab.c" +#line 4215 "tools/widl/parser.tab.c" break; case 110: /* attribute: tACTIVATABLE '(' activatable_attr ')' */ #line 641 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_ACTIVATABLE, (yyvsp[-1].expr) ); } -#line 3895 "tools/widl/parser.tab.c" +#line 4221 "tools/widl/parser.tab.c" break; case 111: /* attribute: tAGGREGATABLE */ #line 642 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_AGGREGATABLE, 0 ); } -#line 3901 "tools/widl/parser.tab.c" +#line 4227 "tools/widl/parser.tab.c" break; case 112: /* attribute: tANNOTATION '(' aSTRING ')' */ #line 643 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_ANNOTATION, (yyvsp[-1].str) ); } -#line 3907 "tools/widl/parser.tab.c" +#line 4233 "tools/widl/parser.tab.c" break; case 113: /* attribute: tAPPOBJECT */ #line 644 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_APPOBJECT, 0 ); } -#line 3913 "tools/widl/parser.tab.c" +#line 4239 "tools/widl/parser.tab.c" break; case 114: /* attribute: tASYNC */ #line 645 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_ASYNC, 0 ); } -#line 3919 "tools/widl/parser.tab.c" +#line 4245 "tools/widl/parser.tab.c" break; case 115: /* attribute: tAUTOHANDLE */ #line 646 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_AUTO_HANDLE, 0 ); } -#line 3925 "tools/widl/parser.tab.c" +#line 4251 "tools/widl/parser.tab.c" break; case 116: /* attribute: tBINDABLE */ #line 647 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_BINDABLE, 0 ); } -#line 3931 "tools/widl/parser.tab.c" +#line 4257 "tools/widl/parser.tab.c" break; case 117: /* attribute: tBROADCAST */ #line 648 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_BROADCAST, 0 ); } -#line 3937 "tools/widl/parser.tab.c" +#line 4263 "tools/widl/parser.tab.c" break; case 118: /* attribute: tCALLAS '(' ident ')' */ #line 649 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_CALLAS, (yyvsp[-1].var) ); } -#line 3943 "tools/widl/parser.tab.c" +#line 4269 "tools/widl/parser.tab.c" break; case 119: /* attribute: tCASE '(' expr_list_int_const ')' */ #line 650 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_CASE, (yyvsp[-1].expr_list) ); } -#line 3949 "tools/widl/parser.tab.c" +#line 4275 "tools/widl/parser.tab.c" break; case 120: /* attribute: tCODE */ #line 651 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_CODE, 0 ); } -#line 3955 "tools/widl/parser.tab.c" +#line 4281 "tools/widl/parser.tab.c" break; case 121: /* attribute: tCOMPOSABLE '(' composable_attr ')' */ #line 652 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_COMPOSABLE, (yyvsp[-1].expr) ); } -#line 3961 "tools/widl/parser.tab.c" +#line 4287 "tools/widl/parser.tab.c" break; case 122: /* attribute: tCOMMSTATUS */ #line 653 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_COMMSTATUS, 0 ); } -#line 3967 "tools/widl/parser.tab.c" +#line 4293 "tools/widl/parser.tab.c" break; case 123: /* attribute: tCONTEXTHANDLE */ #line 654 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_CONTEXTHANDLE, 0 ); } -#line 3973 "tools/widl/parser.tab.c" +#line 4299 "tools/widl/parser.tab.c" break; case 124: /* attribute: tCONTEXTHANDLENOSERIALIZE */ #line 655 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_CONTEXTHANDLE, 0 ); /* RPC_CONTEXT_HANDLE_DONT_SERIALIZE */ } -#line 3979 "tools/widl/parser.tab.c" +#line 4305 "tools/widl/parser.tab.c" break; case 125: /* attribute: tCONTEXTHANDLESERIALIZE */ #line 656 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_CONTEXTHANDLE, 0 ); /* RPC_CONTEXT_HANDLE_SERIALIZE */ } -#line 3985 "tools/widl/parser.tab.c" +#line 4311 "tools/widl/parser.tab.c" break; case 126: /* attribute: tCONTRACT '(' contract_req ')' */ #line 657 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_CONTRACT, (yyvsp[-1].expr) ); } -#line 3991 "tools/widl/parser.tab.c" +#line 4317 "tools/widl/parser.tab.c" break; case 127: /* attribute: tCONTRACTVERSION '(' contract_ver ')' */ #line 658 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_CONTRACTVERSION, (yyvsp[-1].num) ); } -#line 3997 "tools/widl/parser.tab.c" +#line 4323 "tools/widl/parser.tab.c" break; case 128: /* attribute: tCONTROL */ #line 659 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_CONTROL, 0 ); } -#line 4003 "tools/widl/parser.tab.c" +#line 4329 "tools/widl/parser.tab.c" break; case 129: /* attribute: tCUSTOM '(' aUUID ',' expr_const ')' */ @@ -4008,115 +4334,115 @@ data->id = *(yyvsp[-3].uuid); data->pval = (yyvsp[-1].expr); (yyval.attr) = attr_ptr( (yyloc), ATTR_CUSTOM, data ); } -#line 4012 "tools/widl/parser.tab.c" +#line 4338 "tools/widl/parser.tab.c" break; case 130: /* attribute: tDECODE */ #line 664 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_DECODE, 0 ); } -#line 4018 "tools/widl/parser.tab.c" +#line 4344 "tools/widl/parser.tab.c" break; case 131: /* attribute: tDEFAULT */ #line 665 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_DEFAULT, 0 ); } -#line 4024 "tools/widl/parser.tab.c" +#line 4350 "tools/widl/parser.tab.c" break; case 132: /* attribute: tDEFAULT_OVERLOAD */ #line 666 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_DEFAULT_OVERLOAD, 0 ); } -#line 4030 "tools/widl/parser.tab.c" +#line 4356 "tools/widl/parser.tab.c" break; case 133: /* attribute: tDEFAULTBIND */ #line 667 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_DEFAULTBIND, 0 ); } -#line 4036 "tools/widl/parser.tab.c" +#line 4362 "tools/widl/parser.tab.c" break; case 134: /* attribute: tDEFAULTCOLLELEM */ #line 668 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_DEFAULTCOLLELEM, 0 ); } -#line 4042 "tools/widl/parser.tab.c" +#line 4368 "tools/widl/parser.tab.c" break; case 135: /* attribute: tDEFAULTVALUE '(' expr_const ')' */ #line 669 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_DEFAULTVALUE, (yyvsp[-1].expr) ); } -#line 4048 "tools/widl/parser.tab.c" +#line 4374 "tools/widl/parser.tab.c" break; case 136: /* attribute: tDEFAULTVTABLE */ #line 670 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_DEFAULTVTABLE, 0 ); } -#line 4054 "tools/widl/parser.tab.c" +#line 4380 "tools/widl/parser.tab.c" break; case 137: /* attribute: tDEPRECATED '(' deprecated_attr ')' */ #line 671 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_DEPRECATED, (yyvsp[-1].expr) ); } -#line 4060 "tools/widl/parser.tab.c" +#line 4386 "tools/widl/parser.tab.c" break; case 138: /* attribute: tDISABLECONSISTENCYCHECK */ #line 672 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_DISABLECONSISTENCYCHECK, 0 ); } -#line 4066 "tools/widl/parser.tab.c" +#line 4392 "tools/widl/parser.tab.c" break; case 139: /* attribute: tDISPLAYBIND */ #line 673 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_DISPLAYBIND, 0 ); } -#line 4072 "tools/widl/parser.tab.c" +#line 4398 "tools/widl/parser.tab.c" break; case 140: /* attribute: tDLLNAME '(' aSTRING ')' */ #line 674 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_DLLNAME, (yyvsp[-1].str) ); } -#line 4078 "tools/widl/parser.tab.c" +#line 4404 "tools/widl/parser.tab.c" break; case 141: /* attribute: tDUAL */ #line 675 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_DUAL, 0 ); } -#line 4084 "tools/widl/parser.tab.c" +#line 4410 "tools/widl/parser.tab.c" break; case 142: /* attribute: tENABLEALLOCATE */ #line 676 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_ENABLEALLOCATE, 0 ); } -#line 4090 "tools/widl/parser.tab.c" +#line 4416 "tools/widl/parser.tab.c" break; case 143: /* attribute: tENCODE */ #line 677 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_ENCODE, 0 ); } -#line 4096 "tools/widl/parser.tab.c" +#line 4422 "tools/widl/parser.tab.c" break; case 144: /* attribute: tENDPOINT '(' str_list ')' */ #line 678 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_ENDPOINT, (yyvsp[-1].str_list) ); } -#line 4102 "tools/widl/parser.tab.c" +#line 4428 "tools/widl/parser.tab.c" break; case 145: /* attribute: tENTRY '(' expr_const ')' */ #line 679 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_ENTRY, (yyvsp[-1].expr) ); } -#line 4108 "tools/widl/parser.tab.c" +#line 4434 "tools/widl/parser.tab.c" break; case 146: /* attribute: tEVENTADD */ #line 680 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_EVENTADD, 0 ); } -#line 4114 "tools/widl/parser.tab.c" +#line 4440 "tools/widl/parser.tab.c" break; case 147: /* attribute: tEVENTREMOVE */ #line 681 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_EVENTREMOVE, 0 ); } -#line 4120 "tools/widl/parser.tab.c" +#line 4446 "tools/widl/parser.tab.c" break; case 148: /* attribute: tEXCLUSIVETO '(' decl_spec ')' */ @@ -4125,301 +4451,301 @@ error_loc( "type %s is not a runtimeclass\n", (yyvsp[-1].declspec)->type->name ); (yyval.attr) = attr_ptr( (yyloc), ATTR_EXCLUSIVETO, (yyvsp[-1].declspec)->type ); } -#line 4129 "tools/widl/parser.tab.c" +#line 4455 "tools/widl/parser.tab.c" break; case 149: /* attribute: tEXPLICITHANDLE */ #line 686 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_EXPLICIT_HANDLE, 0 ); } -#line 4135 "tools/widl/parser.tab.c" +#line 4461 "tools/widl/parser.tab.c" break; case 150: /* attribute: tFAULTSTATUS */ #line 687 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_FAULTSTATUS, 0 ); } -#line 4141 "tools/widl/parser.tab.c" +#line 4467 "tools/widl/parser.tab.c" break; case 151: /* attribute: tFLAGS */ #line 688 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_FLAGS, 0 ); } -#line 4147 "tools/widl/parser.tab.c" +#line 4473 "tools/widl/parser.tab.c" break; case 152: /* attribute: tFORCEALLOCATE */ #line 689 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_FORCEALLOCATE, 0 ); } -#line 4153 "tools/widl/parser.tab.c" +#line 4479 "tools/widl/parser.tab.c" break; case 153: /* attribute: tHANDLE */ #line 690 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_HANDLE, 0 ); } -#line 4159 "tools/widl/parser.tab.c" +#line 4485 "tools/widl/parser.tab.c" break; case 154: /* attribute: tHELPCONTEXT '(' expr_int_const ')' */ #line 691 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_HELPCONTEXT, (yyvsp[-1].expr) ); } -#line 4165 "tools/widl/parser.tab.c" +#line 4491 "tools/widl/parser.tab.c" break; case 155: /* attribute: tHELPFILE '(' aSTRING ')' */ #line 692 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_HELPFILE, (yyvsp[-1].str) ); } -#line 4171 "tools/widl/parser.tab.c" +#line 4497 "tools/widl/parser.tab.c" break; case 156: /* attribute: tHELPSTRING '(' aSTRING ')' */ #line 693 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_HELPSTRING, (yyvsp[-1].str) ); } -#line 4177 "tools/widl/parser.tab.c" +#line 4503 "tools/widl/parser.tab.c" break; case 157: /* attribute: tHELPSTRINGCONTEXT '(' expr_int_const ')' */ #line 695 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_HELPSTRINGCONTEXT, (yyvsp[-1].expr) ); } -#line 4183 "tools/widl/parser.tab.c" +#line 4509 "tools/widl/parser.tab.c" break; case 158: /* attribute: tHELPSTRINGDLL '(' aSTRING ')' */ #line 696 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_HELPSTRINGDLL, (yyvsp[-1].str) ); } -#line 4189 "tools/widl/parser.tab.c" +#line 4515 "tools/widl/parser.tab.c" break; case 159: /* attribute: tHIDDEN */ #line 697 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_HIDDEN, 0 ); } -#line 4195 "tools/widl/parser.tab.c" +#line 4521 "tools/widl/parser.tab.c" break; case 160: /* attribute: tID '(' expr_int_const ')' */ #line 698 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_ID, (yyvsp[-1].expr) ); } -#line 4201 "tools/widl/parser.tab.c" +#line 4527 "tools/widl/parser.tab.c" break; case 161: /* attribute: tIDEMPOTENT */ #line 699 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_IDEMPOTENT, 0 ); } -#line 4207 "tools/widl/parser.tab.c" +#line 4533 "tools/widl/parser.tab.c" break; case 162: /* attribute: tIGNORE */ #line 700 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_IGNORE, 0 ); } -#line 4213 "tools/widl/parser.tab.c" +#line 4539 "tools/widl/parser.tab.c" break; case 163: /* attribute: tIIDIS '(' expr ')' */ #line 701 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_IIDIS, (yyvsp[-1].expr) ); } -#line 4219 "tools/widl/parser.tab.c" +#line 4545 "tools/widl/parser.tab.c" break; case 164: /* attribute: tIMMEDIATEBIND */ #line 702 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_IMMEDIATEBIND, 0 ); } -#line 4225 "tools/widl/parser.tab.c" +#line 4551 "tools/widl/parser.tab.c" break; case 165: /* attribute: tIMPLICITHANDLE '(' arg ')' */ #line 703 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_IMPLICIT_HANDLE, (yyvsp[-1].var) ); } -#line 4231 "tools/widl/parser.tab.c" +#line 4557 "tools/widl/parser.tab.c" break; case 166: /* attribute: tIN */ #line 704 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_IN, 0 ); } -#line 4237 "tools/widl/parser.tab.c" +#line 4563 "tools/widl/parser.tab.c" break; case 167: /* attribute: tINPUTSYNC */ #line 705 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_INPUTSYNC, 0 ); } -#line 4243 "tools/widl/parser.tab.c" +#line 4569 "tools/widl/parser.tab.c" break; case 168: /* attribute: tLENGTHIS '(' m_exprs ')' */ #line 706 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_LENGTHIS, (yyvsp[-1].expr_list) ); } -#line 4249 "tools/widl/parser.tab.c" +#line 4575 "tools/widl/parser.tab.c" break; case 169: /* attribute: tLCID '(' expr_int_const ')' */ #line 707 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_LIBLCID, (yyvsp[-1].expr) ); } -#line 4255 "tools/widl/parser.tab.c" +#line 4581 "tools/widl/parser.tab.c" break; case 170: /* attribute: tLCID */ #line 708 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_PARAMLCID, 0 ); } -#line 4261 "tools/widl/parser.tab.c" +#line 4587 "tools/widl/parser.tab.c" break; case 171: /* attribute: tLICENSED */ #line 709 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_LICENSED, 0 ); } -#line 4267 "tools/widl/parser.tab.c" +#line 4593 "tools/widl/parser.tab.c" break; case 172: /* attribute: tLOCAL */ #line 710 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_LOCAL, 0 ); } -#line 4273 "tools/widl/parser.tab.c" +#line 4599 "tools/widl/parser.tab.c" break; case 173: /* attribute: tMARSHALINGBEHAVIOR '(' marshaling_behavior ')' */ #line 712 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_MARSHALING_BEHAVIOR, (yyvsp[-1].num) ); } -#line 4279 "tools/widl/parser.tab.c" +#line 4605 "tools/widl/parser.tab.c" break; case 174: /* attribute: tMAYBE */ #line 713 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_MAYBE, 0 ); } -#line 4285 "tools/widl/parser.tab.c" +#line 4611 "tools/widl/parser.tab.c" break; case 175: /* attribute: tMESSAGE */ #line 714 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_MESSAGE, 0 ); } -#line 4291 "tools/widl/parser.tab.c" +#line 4617 "tools/widl/parser.tab.c" break; case 176: /* attribute: tNOCODE */ #line 715 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_NOCODE, 0 ); } -#line 4297 "tools/widl/parser.tab.c" +#line 4623 "tools/widl/parser.tab.c" break; case 177: /* attribute: tNONBROWSABLE */ #line 716 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_NONBROWSABLE, 0 ); } -#line 4303 "tools/widl/parser.tab.c" +#line 4629 "tools/widl/parser.tab.c" break; case 178: /* attribute: tNONCREATABLE */ #line 717 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_NONCREATABLE, 0 ); } -#line 4309 "tools/widl/parser.tab.c" +#line 4635 "tools/widl/parser.tab.c" break; case 179: /* attribute: tNONEXTENSIBLE */ #line 718 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_NONEXTENSIBLE, 0 ); } -#line 4315 "tools/widl/parser.tab.c" +#line 4641 "tools/widl/parser.tab.c" break; case 180: /* attribute: tNOTIFY */ #line 719 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_NOTIFY, 0 ); } -#line 4321 "tools/widl/parser.tab.c" +#line 4647 "tools/widl/parser.tab.c" break; case 181: /* attribute: tNOTIFYFLAG */ #line 720 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_NOTIFYFLAG, 0 ); } -#line 4327 "tools/widl/parser.tab.c" +#line 4653 "tools/widl/parser.tab.c" break; case 182: /* attribute: tOBJECT */ #line 721 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_OBJECT, 0 ); } -#line 4333 "tools/widl/parser.tab.c" +#line 4659 "tools/widl/parser.tab.c" break; case 183: /* attribute: tODL */ #line 722 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_ODL, 0 ); } -#line 4339 "tools/widl/parser.tab.c" +#line 4665 "tools/widl/parser.tab.c" break; case 184: /* attribute: tOLEAUTOMATION */ #line 723 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_OLEAUTOMATION, 0 ); } -#line 4345 "tools/widl/parser.tab.c" +#line 4671 "tools/widl/parser.tab.c" break; case 185: /* attribute: tOPTIMIZE '(' aSTRING ')' */ #line 724 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_OPTIMIZE, (yyvsp[-1].str) ); } -#line 4351 "tools/widl/parser.tab.c" +#line 4677 "tools/widl/parser.tab.c" break; case 186: /* attribute: tOPTIONAL */ #line 725 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_OPTIONAL, 0 ); } -#line 4357 "tools/widl/parser.tab.c" +#line 4683 "tools/widl/parser.tab.c" break; case 187: /* attribute: tOUT */ #line 726 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_OUT, 0 ); } -#line 4363 "tools/widl/parser.tab.c" +#line 4689 "tools/widl/parser.tab.c" break; case 188: /* attribute: tOVERLOAD '(' aSTRING ')' */ #line 727 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_OVERLOAD, (yyvsp[-1].str) ); } -#line 4369 "tools/widl/parser.tab.c" +#line 4695 "tools/widl/parser.tab.c" break; case 189: /* attribute: tPARTIALIGNORE */ #line 728 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_PARTIALIGNORE, 0 ); } -#line 4375 "tools/widl/parser.tab.c" +#line 4701 "tools/widl/parser.tab.c" break; case 190: /* attribute: tPOINTERDEFAULT '(' pointer_type ')' */ #line 729 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_POINTERDEFAULT, (yyvsp[-1].num) ); } -#line 4381 "tools/widl/parser.tab.c" +#line 4707 "tools/widl/parser.tab.c" break; case 191: /* attribute: tPROGID '(' aSTRING ')' */ #line 730 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_PROGID, (yyvsp[-1].str) ); } -#line 4387 "tools/widl/parser.tab.c" +#line 4713 "tools/widl/parser.tab.c" break; case 192: /* attribute: tPROPGET */ #line 731 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_PROPGET, 0 ); } -#line 4393 "tools/widl/parser.tab.c" +#line 4719 "tools/widl/parser.tab.c" break; case 193: /* attribute: tPROPPUT */ #line 732 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_PROPPUT, 0 ); } -#line 4399 "tools/widl/parser.tab.c" +#line 4725 "tools/widl/parser.tab.c" break; case 194: /* attribute: tPROPPUTREF */ #line 733 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_PROPPUTREF, 0 ); } -#line 4405 "tools/widl/parser.tab.c" +#line 4731 "tools/widl/parser.tab.c" break; case 195: /* attribute: tPROTECTED */ #line 734 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_PROTECTED, 0 ); } -#line 4411 "tools/widl/parser.tab.c" +#line 4737 "tools/widl/parser.tab.c" break; case 196: /* attribute: tPROXY */ #line 735 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_PROXY, 0 ); } -#line 4417 "tools/widl/parser.tab.c" +#line 4743 "tools/widl/parser.tab.c" break; case 197: /* attribute: tPUBLIC */ #line 736 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_PUBLIC, 0 ); } -#line 4423 "tools/widl/parser.tab.c" +#line 4749 "tools/widl/parser.tab.c" break; case 198: /* attribute: tRANGE '(' expr_int_const ',' expr_int_const ')' */ @@ -4428,169 +4754,169 @@ list = append_expr( list, (yyvsp[-1].expr) ); (yyval.attr) = attr_ptr( (yyloc), ATTR_RANGE, list ); } -#line 4432 "tools/widl/parser.tab.c" +#line 4758 "tools/widl/parser.tab.c" break; case 199: /* attribute: tREADONLY */ #line 742 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_READONLY, 0 ); } -#line 4438 "tools/widl/parser.tab.c" +#line 4764 "tools/widl/parser.tab.c" break; case 200: /* attribute: tREPRESENTAS '(' type ')' */ #line 743 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_REPRESENTAS, (yyvsp[-1].type) ); } -#line 4444 "tools/widl/parser.tab.c" +#line 4770 "tools/widl/parser.tab.c" break; case 201: /* attribute: tREQUESTEDIT */ #line 744 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_REQUESTEDIT, 0 ); } -#line 4450 "tools/widl/parser.tab.c" +#line 4776 "tools/widl/parser.tab.c" break; case 202: /* attribute: tRESTRICTED */ #line 745 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_RESTRICTED, 0 ); } -#line 4456 "tools/widl/parser.tab.c" +#line 4782 "tools/widl/parser.tab.c" break; case 203: /* attribute: tRETVAL */ #line 746 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_RETVAL, 0 ); } -#line 4462 "tools/widl/parser.tab.c" +#line 4788 "tools/widl/parser.tab.c" break; case 204: /* attribute: tSIZEIS '(' m_exprs ')' */ #line 747 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_SIZEIS, (yyvsp[-1].expr_list) ); } -#line 4468 "tools/widl/parser.tab.c" +#line 4794 "tools/widl/parser.tab.c" break; case 205: /* attribute: tSOURCE */ #line 748 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_SOURCE, 0 ); } -#line 4474 "tools/widl/parser.tab.c" +#line 4800 "tools/widl/parser.tab.c" break; case 206: /* attribute: tSTATIC '(' static_attr ')' */ #line 749 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_STATIC, (yyvsp[-1].expr) ); } -#line 4480 "tools/widl/parser.tab.c" +#line 4806 "tools/widl/parser.tab.c" break; case 207: /* attribute: tSTRICTCONTEXTHANDLE */ #line 750 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_STRICTCONTEXTHANDLE, 0 ); } -#line 4486 "tools/widl/parser.tab.c" +#line 4812 "tools/widl/parser.tab.c" break; case 208: /* attribute: tSTRING */ #line 751 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_STRING, 0 ); } -#line 4492 "tools/widl/parser.tab.c" +#line 4818 "tools/widl/parser.tab.c" break; case 209: /* attribute: tSWITCHIS '(' expr ')' */ #line 752 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_SWITCHIS, (yyvsp[-1].expr) ); } -#line 4498 "tools/widl/parser.tab.c" +#line 4824 "tools/widl/parser.tab.c" break; case 210: /* attribute: tSWITCHTYPE '(' type ')' */ #line 753 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_SWITCHTYPE, (yyvsp[-1].type) ); } -#line 4504 "tools/widl/parser.tab.c" +#line 4830 "tools/widl/parser.tab.c" break; case 211: /* attribute: tTRANSMITAS '(' type ')' */ #line 754 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_TRANSMITAS, (yyvsp[-1].type) ); } -#line 4510 "tools/widl/parser.tab.c" +#line 4836 "tools/widl/parser.tab.c" break; case 212: /* attribute: tTHREADING '(' threading_type ')' */ #line 755 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_THREADING, (yyvsp[-1].num) ); } -#line 4516 "tools/widl/parser.tab.c" +#line 4842 "tools/widl/parser.tab.c" break; case 213: /* attribute: tUIDEFAULT */ #line 756 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_UIDEFAULT, 0 ); } -#line 4522 "tools/widl/parser.tab.c" +#line 4848 "tools/widl/parser.tab.c" break; case 214: /* attribute: tUSESGETLASTERROR */ #line 757 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_USESGETLASTERROR, 0 ); } -#line 4528 "tools/widl/parser.tab.c" +#line 4854 "tools/widl/parser.tab.c" break; case 215: /* attribute: tUSERMARSHAL '(' type ')' */ #line 758 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_USERMARSHAL, (yyvsp[-1].type) ); } -#line 4534 "tools/widl/parser.tab.c" +#line 4860 "tools/widl/parser.tab.c" break; case 216: /* attribute: tUUID '(' aUUID ')' */ #line 759 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_UUID, (yyvsp[-1].uuid) ); } -#line 4540 "tools/widl/parser.tab.c" +#line 4866 "tools/widl/parser.tab.c" break; case 217: /* attribute: tASYNCUUID '(' aUUID ')' */ #line 760 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_ASYNCUUID, (yyvsp[-1].uuid) ); } -#line 4546 "tools/widl/parser.tab.c" +#line 4872 "tools/widl/parser.tab.c" break; case 218: /* attribute: tV1ENUM */ #line 761 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_V1ENUM, 0 ); } -#line 4552 "tools/widl/parser.tab.c" +#line 4878 "tools/widl/parser.tab.c" break; case 219: /* attribute: tVARARG */ #line 762 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_VARARG, 0 ); } -#line 4558 "tools/widl/parser.tab.c" +#line 4884 "tools/widl/parser.tab.c" break; case 220: /* attribute: tVERSION '(' version ')' */ #line 763 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_VERSION, (yyvsp[-1].num) ); } -#line 4564 "tools/widl/parser.tab.c" +#line 4890 "tools/widl/parser.tab.c" break; case 221: /* attribute: tVIPROGID '(' aSTRING ')' */ #line 764 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_VIPROGID, (yyvsp[-1].str) ); } -#line 4570 "tools/widl/parser.tab.c" +#line 4896 "tools/widl/parser.tab.c" break; case 222: /* attribute: tWIREMARSHAL '(' type ')' */ #line 765 "tools/widl/parser.y" { (yyval.attr) = attr_ptr( (yyloc), ATTR_WIREMARSHAL, (yyvsp[-1].type) ); } -#line 4576 "tools/widl/parser.tab.c" +#line 4902 "tools/widl/parser.tab.c" break; case 223: /* attribute: pointer_type */ #line 766 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_POINTERTYPE, (yyvsp[0].num) ); } -#line 4582 "tools/widl/parser.tab.c" +#line 4908 "tools/widl/parser.tab.c" break; case 228: /* cases: %empty */ #line 776 "tools/widl/parser.y" { (yyval.var_list) = NULL; } -#line 4588 "tools/widl/parser.tab.c" +#line 4914 "tools/widl/parser.tab.c" break; case 229: /* cases: cases case */ #line 777 "tools/widl/parser.y" { (yyval.var_list) = append_var( (yyvsp[-1].var_list), (yyvsp[0].var) ); } -#line 4594 "tools/widl/parser.tab.c" +#line 4920 "tools/widl/parser.tab.c" break; case 230: /* case: tCASE expr_int_const ':' union_field */ @@ -4599,7 +4925,7 @@ (yyval.var) = (yyvsp[0].var); if (!(yyval.var)) (yyval.var) = make_var( NULL ); (yyval.var)->attrs = append_attr( (yyval.var)->attrs, a ); } -#line 4603 "tools/widl/parser.tab.c" +#line 4929 "tools/widl/parser.tab.c" break; case 231: /* case: tDEFAULT ':' union_field */ @@ -4608,19 +4934,19 @@ (yyval.var) = (yyvsp[0].var); if (!(yyval.var)) (yyval.var) = make_var( NULL ); (yyval.var)->attrs = append_attr( (yyval.var)->attrs, a ); } -#line 4612 "tools/widl/parser.tab.c" +#line 4938 "tools/widl/parser.tab.c" break; case 232: /* enums: %empty */ #line 791 "tools/widl/parser.y" { (yyval.var_list) = NULL; } -#line 4618 "tools/widl/parser.tab.c" +#line 4944 "tools/widl/parser.tab.c" break; case 233: /* enums: enum_list ',' */ #line 792 "tools/widl/parser.y" { (yyval.var_list) = (yyvsp[-1].var_list); } -#line 4624 "tools/widl/parser.tab.c" +#line 4950 "tools/widl/parser.tab.c" break; case 235: /* enum_list: enum */ @@ -4629,7 +4955,7 @@ (yyvsp[0].var)->eval = make_exprl(EXPR_NUM, 0 /* default for first enum entry */); (yyval.var_list) = append_var( NULL, (yyvsp[0].var) ); } -#line 4633 "tools/widl/parser.tab.c" +#line 4959 "tools/widl/parser.tab.c" break; case 236: /* enum_list: enum_list ',' enum */ @@ -4644,7 +4970,7 @@ } (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[0].var) ); } -#line 4648 "tools/widl/parser.tab.c" +#line 4974 "tools/widl/parser.tab.c" break; case 237: /* enum_member: m_attributes ident */ @@ -4652,7 +4978,7 @@ { (yyval.var) = (yyvsp[0].var); (yyval.var)->attrs = check_enum_member_attrs((yyvsp[-1].attr_list)); } -#line 4656 "tools/widl/parser.tab.c" +#line 4982 "tools/widl/parser.tab.c" break; case 238: /* enum: enum_member '=' expr_int_const */ @@ -4661,7 +4987,7 @@ (yyval.var)->eval = (yyvsp[0].expr); (yyval.var)->declspec.type = type_new_int(TYPE_BASIC_INT, 0); } -#line 4665 "tools/widl/parser.tab.c" +#line 4991 "tools/widl/parser.tab.c" break; case 239: /* enum: enum_member */ @@ -4669,289 +4995,289 @@ { (yyval.var) = reg_const((yyvsp[0].var)); (yyval.var)->declspec.type = type_new_int(TYPE_BASIC_INT, 0); } -#line 4673 "tools/widl/parser.tab.c" +#line 4999 "tools/widl/parser.tab.c" break; case 240: /* enumdef: tENUM m_typename '{' enums '}' */ #line 826 "tools/widl/parser.y" { (yyval.type) = type_new_enum((yyvsp[-3].str), current_namespace, TRUE, (yyvsp[-1].var_list)); } -#line 4679 "tools/widl/parser.tab.c" +#line 5005 "tools/widl/parser.tab.c" break; case 241: /* m_exprs: m_expr */ #line 829 "tools/widl/parser.y" { (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); } -#line 4685 "tools/widl/parser.tab.c" +#line 5011 "tools/widl/parser.tab.c" break; case 242: /* m_exprs: m_exprs ',' m_expr */ #line 830 "tools/widl/parser.y" { (yyval.expr_list) = append_expr( (yyvsp[-2].expr_list), (yyvsp[0].expr) ); } -#line 4691 "tools/widl/parser.tab.c" +#line 5017 "tools/widl/parser.tab.c" break; case 243: /* m_expr: %empty */ #line 834 "tools/widl/parser.y" { (yyval.expr) = make_expr(EXPR_VOID); } -#line 4697 "tools/widl/parser.tab.c" +#line 5023 "tools/widl/parser.tab.c" break; case 245: /* expr: aNUM */ #line 838 "tools/widl/parser.y" { (yyval.expr) = make_exprl(EXPR_NUM, (yyvsp[0].num)); } -#line 4703 "tools/widl/parser.tab.c" +#line 5029 "tools/widl/parser.tab.c" break; case 246: /* expr: aHEXNUM */ #line 839 "tools/widl/parser.y" { (yyval.expr) = make_exprl(EXPR_HEXNUM, (yyvsp[0].num)); } -#line 4709 "tools/widl/parser.tab.c" +#line 5035 "tools/widl/parser.tab.c" break; case 247: /* expr: aDOUBLE */ #line 840 "tools/widl/parser.y" { (yyval.expr) = make_exprd(EXPR_DOUBLE, (yyvsp[0].dbl)); } -#line 4715 "tools/widl/parser.tab.c" +#line 5041 "tools/widl/parser.tab.c" break; case 248: /* expr: tFALSE */ #line 841 "tools/widl/parser.y" { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 0); } -#line 4721 "tools/widl/parser.tab.c" +#line 5047 "tools/widl/parser.tab.c" break; case 249: /* expr: tNULL */ #line 842 "tools/widl/parser.y" { (yyval.expr) = make_exprl(EXPR_NUM, 0); } -#line 4727 "tools/widl/parser.tab.c" +#line 5053 "tools/widl/parser.tab.c" break; case 250: /* expr: tTRUE */ #line 843 "tools/widl/parser.y" { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 1); } -#line 4733 "tools/widl/parser.tab.c" +#line 5059 "tools/widl/parser.tab.c" break; case 251: /* expr: aSTRING */ #line 844 "tools/widl/parser.y" { (yyval.expr) = make_exprs(EXPR_STRLIT, (yyvsp[0].str)); } -#line 4739 "tools/widl/parser.tab.c" +#line 5065 "tools/widl/parser.tab.c" break; case 252: /* expr: aWSTRING */ #line 845 "tools/widl/parser.y" { (yyval.expr) = make_exprs(EXPR_WSTRLIT, (yyvsp[0].str)); } -#line 4745 "tools/widl/parser.tab.c" +#line 5071 "tools/widl/parser.tab.c" break; case 253: /* expr: aSQSTRING */ #line 846 "tools/widl/parser.y" { (yyval.expr) = make_exprs(EXPR_CHARCONST, (yyvsp[0].str)); } -#line 4751 "tools/widl/parser.tab.c" +#line 5077 "tools/widl/parser.tab.c" break; case 254: /* expr: aIDENTIFIER */ #line 847 "tools/widl/parser.y" { (yyval.expr) = make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str)); } -#line 4757 "tools/widl/parser.tab.c" +#line 5083 "tools/widl/parser.tab.c" break; case 255: /* expr: expr '?' expr ':' expr */ #line 848 "tools/widl/parser.y" { (yyval.expr) = make_expr3(EXPR_COND, (yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4763 "tools/widl/parser.tab.c" +#line 5089 "tools/widl/parser.tab.c" break; case 256: /* expr: expr LOGICALOR expr */ #line 849 "tools/widl/parser.y" { (yyval.expr) = make_expr2(EXPR_LOGOR, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4769 "tools/widl/parser.tab.c" +#line 5095 "tools/widl/parser.tab.c" break; case 257: /* expr: expr LOGICALAND expr */ #line 850 "tools/widl/parser.y" { (yyval.expr) = make_expr2(EXPR_LOGAND, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4775 "tools/widl/parser.tab.c" +#line 5101 "tools/widl/parser.tab.c" break; case 258: /* expr: expr '|' expr */ #line 851 "tools/widl/parser.y" { (yyval.expr) = make_expr2(EXPR_OR , (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4781 "tools/widl/parser.tab.c" +#line 5107 "tools/widl/parser.tab.c" break; case 259: /* expr: expr '^' expr */ #line 852 "tools/widl/parser.y" { (yyval.expr) = make_expr2(EXPR_XOR, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4787 "tools/widl/parser.tab.c" +#line 5113 "tools/widl/parser.tab.c" break; case 260: /* expr: expr '&' expr */ #line 853 "tools/widl/parser.y" { (yyval.expr) = make_expr2(EXPR_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4793 "tools/widl/parser.tab.c" +#line 5119 "tools/widl/parser.tab.c" break; case 261: /* expr: expr EQUALITY expr */ #line 854 "tools/widl/parser.y" { (yyval.expr) = make_expr2(EXPR_EQUALITY, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4799 "tools/widl/parser.tab.c" +#line 5125 "tools/widl/parser.tab.c" break; case 262: /* expr: expr INEQUALITY expr */ #line 855 "tools/widl/parser.y" { (yyval.expr) = make_expr2(EXPR_INEQUALITY, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4805 "tools/widl/parser.tab.c" +#line 5131 "tools/widl/parser.tab.c" break; case 263: /* expr: expr '>' expr */ #line 856 "tools/widl/parser.y" { (yyval.expr) = make_expr2(EXPR_GTR, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4811 "tools/widl/parser.tab.c" +#line 5137 "tools/widl/parser.tab.c" break; case 264: /* expr: expr '<' expr */ #line 857 "tools/widl/parser.y" { (yyval.expr) = make_expr2(EXPR_LESS, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4817 "tools/widl/parser.tab.c" +#line 5143 "tools/widl/parser.tab.c" break; case 265: /* expr: expr GREATEREQUAL expr */ #line 858 "tools/widl/parser.y" { (yyval.expr) = make_expr2(EXPR_GTREQL, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4823 "tools/widl/parser.tab.c" +#line 5149 "tools/widl/parser.tab.c" break; case 266: /* expr: expr LESSEQUAL expr */ #line 859 "tools/widl/parser.y" { (yyval.expr) = make_expr2(EXPR_LESSEQL, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4829 "tools/widl/parser.tab.c" +#line 5155 "tools/widl/parser.tab.c" break; case 267: /* expr: expr SHL expr */ #line 860 "tools/widl/parser.y" { (yyval.expr) = make_expr2(EXPR_SHL, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4835 "tools/widl/parser.tab.c" +#line 5161 "tools/widl/parser.tab.c" break; case 268: /* expr: expr SHR expr */ #line 861 "tools/widl/parser.y" { (yyval.expr) = make_expr2(EXPR_SHR, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4841 "tools/widl/parser.tab.c" +#line 5167 "tools/widl/parser.tab.c" break; case 269: /* expr: expr '+' expr */ #line 862 "tools/widl/parser.y" { (yyval.expr) = make_expr2(EXPR_ADD, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4847 "tools/widl/parser.tab.c" +#line 5173 "tools/widl/parser.tab.c" break; case 270: /* expr: expr '-' expr */ #line 863 "tools/widl/parser.y" { (yyval.expr) = make_expr2(EXPR_SUB, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4853 "tools/widl/parser.tab.c" +#line 5179 "tools/widl/parser.tab.c" break; case 271: /* expr: expr '%' expr */ #line 864 "tools/widl/parser.y" { (yyval.expr) = make_expr2(EXPR_MOD, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4859 "tools/widl/parser.tab.c" +#line 5185 "tools/widl/parser.tab.c" break; case 272: /* expr: expr '*' expr */ #line 865 "tools/widl/parser.y" { (yyval.expr) = make_expr2(EXPR_MUL, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4865 "tools/widl/parser.tab.c" +#line 5191 "tools/widl/parser.tab.c" break; case 273: /* expr: expr '/' expr */ #line 866 "tools/widl/parser.y" { (yyval.expr) = make_expr2(EXPR_DIV, (yyvsp[-2].expr), (yyvsp[0].expr)); } -#line 4871 "tools/widl/parser.tab.c" +#line 5197 "tools/widl/parser.tab.c" break; case 274: /* expr: '!' expr */ #line 867 "tools/widl/parser.y" { (yyval.expr) = make_expr1(EXPR_LOGNOT, (yyvsp[0].expr)); } -#line 4877 "tools/widl/parser.tab.c" +#line 5203 "tools/widl/parser.tab.c" break; case 275: /* expr: '~' expr */ #line 868 "tools/widl/parser.y" { (yyval.expr) = make_expr1(EXPR_NOT, (yyvsp[0].expr)); } -#line 4883 "tools/widl/parser.tab.c" +#line 5209 "tools/widl/parser.tab.c" break; case 276: /* expr: '+' expr */ #line 869 "tools/widl/parser.y" { (yyval.expr) = make_expr1(EXPR_POS, (yyvsp[0].expr)); } -#line 4889 "tools/widl/parser.tab.c" +#line 5215 "tools/widl/parser.tab.c" break; case 277: /* expr: '-' expr */ #line 870 "tools/widl/parser.y" { (yyval.expr) = make_expr1(EXPR_NEG, (yyvsp[0].expr)); } -#line 4895 "tools/widl/parser.tab.c" +#line 5221 "tools/widl/parser.tab.c" break; case 278: /* expr: '&' expr */ #line 871 "tools/widl/parser.y" { (yyval.expr) = make_expr1(EXPR_ADDRESSOF, (yyvsp[0].expr)); } -#line 4901 "tools/widl/parser.tab.c" +#line 5227 "tools/widl/parser.tab.c" break; case 279: /* expr: '*' expr */ #line 872 "tools/widl/parser.y" { (yyval.expr) = make_expr1(EXPR_PPTR, (yyvsp[0].expr)); } -#line 4907 "tools/widl/parser.tab.c" +#line 5233 "tools/widl/parser.tab.c" break; case 280: /* expr: expr MEMBERPTR aIDENTIFIER */ #line 873 "tools/widl/parser.y" { (yyval.expr) = make_expr2(EXPR_MEMBER, make_expr1(EXPR_PPTR, (yyvsp[-2].expr)), make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str))); } -#line 4913 "tools/widl/parser.tab.c" +#line 5239 "tools/widl/parser.tab.c" break; case 281: /* expr: expr '.' aIDENTIFIER */ #line 874 "tools/widl/parser.y" { (yyval.expr) = make_expr2(EXPR_MEMBER, (yyvsp[-2].expr), make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str))); } -#line 4919 "tools/widl/parser.tab.c" +#line 5245 "tools/widl/parser.tab.c" break; case 282: /* expr: '(' unqualified_decl_spec m_abstract_declarator ')' expr */ #line 876 "tools/widl/parser.y" { (yyval.expr) = make_exprt(EXPR_CAST, declare_var(NULL, (yyvsp[-3].declspec), (yyvsp[-2].declarator), 0), (yyvsp[0].expr)); free((yyvsp[-3].declspec)); free((yyvsp[-2].declarator)); } -#line 4925 "tools/widl/parser.tab.c" +#line 5251 "tools/widl/parser.tab.c" break; case 283: /* expr: tSIZEOF '(' unqualified_decl_spec m_abstract_declarator ')' */ #line 878 "tools/widl/parser.y" { (yyval.expr) = make_exprt(EXPR_SIZEOF, declare_var(NULL, (yyvsp[-2].declspec), (yyvsp[-1].declarator), 0), NULL); free((yyvsp[-2].declspec)); free((yyvsp[-1].declarator)); } -#line 4931 "tools/widl/parser.tab.c" +#line 5257 "tools/widl/parser.tab.c" break; case 284: /* expr: expr '[' expr ']' */ #line 879 "tools/widl/parser.y" { (yyval.expr) = make_expr2(EXPR_ARRAY, (yyvsp[-3].expr), (yyvsp[-1].expr)); } -#line 4937 "tools/widl/parser.tab.c" +#line 5263 "tools/widl/parser.tab.c" break; case 285: /* expr: '(' expr ')' */ #line 880 "tools/widl/parser.y" { (yyval.expr) = (yyvsp[-1].expr); } -#line 4943 "tools/widl/parser.tab.c" +#line 5269 "tools/widl/parser.tab.c" break; case 286: /* expr_list_int_const: expr_int_const */ #line 883 "tools/widl/parser.y" { (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); } -#line 4949 "tools/widl/parser.tab.c" +#line 5275 "tools/widl/parser.tab.c" break; case 287: /* expr_list_int_const: expr_list_int_const ',' expr_int_const */ #line 884 "tools/widl/parser.y" { (yyval.expr_list) = append_expr( (yyvsp[-2].expr_list), (yyvsp[0].expr) ); } -#line 4955 "tools/widl/parser.tab.c" +#line 5281 "tools/widl/parser.tab.c" break; case 288: /* expr_int_const: expr */ @@ -4960,7 +5286,7 @@ if (!(yyval.expr)->is_const) error_loc("expression is not an integer constant\n"); } -#line 4964 "tools/widl/parser.tab.c" +#line 5290 "tools/widl/parser.tab.c" break; case 289: /* expr_const: expr */ @@ -4969,19 +5295,19 @@ if (!(yyval.expr)->is_const && (yyval.expr)->type != EXPR_STRLIT && (yyval.expr)->type != EXPR_WSTRLIT) error_loc("expression is not constant\n"); } -#line 4973 "tools/widl/parser.tab.c" +#line 5299 "tools/widl/parser.tab.c" break; case 290: /* fields: %empty */ #line 900 "tools/widl/parser.y" { (yyval.var_list) = NULL; } -#line 4979 "tools/widl/parser.tab.c" +#line 5305 "tools/widl/parser.tab.c" break; case 291: /* fields: fields field */ #line 901 "tools/widl/parser.y" { (yyval.var_list) = append_var_list((yyvsp[-1].var_list), (yyvsp[0].var_list)); } -#line 4985 "tools/widl/parser.tab.c" +#line 5311 "tools/widl/parser.tab.c" break; case 292: /* field: m_attributes decl_spec struct_declarator_list ';' */ @@ -4990,7 +5316,7 @@ check_field_attrs(first, (yyvsp[-3].attr_list)); (yyval.var_list) = set_var_types((yyvsp[-3].attr_list), (yyvsp[-2].declspec), (yyvsp[-1].declarator_list)); } -#line 4994 "tools/widl/parser.tab.c" +#line 5320 "tools/widl/parser.tab.c" break; case 293: /* field: m_attributes uniondef ';' */ @@ -4999,43 +5325,43 @@ v->declspec.type = (yyvsp[-1].type); v->attrs = (yyvsp[-2].attr_list); (yyval.var_list) = append_var(NULL, v); } -#line 5003 "tools/widl/parser.tab.c" +#line 5329 "tools/widl/parser.tab.c" break; case 294: /* ne_union_field: s_field ';' */ #line 916 "tools/widl/parser.y" { (yyval.var) = (yyvsp[-1].var); } -#line 5009 "tools/widl/parser.tab.c" +#line 5335 "tools/widl/parser.tab.c" break; case 295: /* ne_union_field: attributes ';' */ #line 917 "tools/widl/parser.y" { (yyval.var) = make_var(NULL); (yyval.var)->attrs = (yyvsp[-1].attr_list); } -#line 5015 "tools/widl/parser.tab.c" +#line 5341 "tools/widl/parser.tab.c" break; case 296: /* ne_union_fields: %empty */ #line 921 "tools/widl/parser.y" { (yyval.var_list) = NULL; } -#line 5021 "tools/widl/parser.tab.c" +#line 5347 "tools/widl/parser.tab.c" break; case 297: /* ne_union_fields: ne_union_fields ne_union_field */ #line 922 "tools/widl/parser.y" { (yyval.var_list) = append_var( (yyvsp[-1].var_list), (yyvsp[0].var) ); } -#line 5027 "tools/widl/parser.tab.c" +#line 5353 "tools/widl/parser.tab.c" break; case 298: /* union_field: s_field ';' */ #line 926 "tools/widl/parser.y" { (yyval.var) = (yyvsp[-1].var); } -#line 5033 "tools/widl/parser.tab.c" +#line 5359 "tools/widl/parser.tab.c" break; case 299: /* union_field: ';' */ #line 927 "tools/widl/parser.y" { (yyval.var) = NULL; } -#line 5039 "tools/widl/parser.tab.c" +#line 5365 "tools/widl/parser.tab.c" break; case 300: /* s_field: m_attributes decl_spec declarator */ @@ -5044,7 +5370,7 @@ (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE); free((yyvsp[0].declarator)); } -#line 5048 "tools/widl/parser.tab.c" +#line 5374 "tools/widl/parser.tab.c" break; case 301: /* s_field: m_attributes structdef */ @@ -5053,7 +5379,7 @@ v->declspec.type = (yyvsp[0].type); v->attrs = (yyvsp[-1].attr_list); (yyval.var) = v; } -#line 5057 "tools/widl/parser.tab.c" +#line 5383 "tools/widl/parser.tab.c" break; case 302: /* funcdef: declaration */ @@ -5063,7 +5389,7 @@ error_loc("only methods may be declared inside the methods section of a dispinterface\n"); check_function_attrs((yyval.var)->name, (yyval.var)->attrs); } -#line 5067 "tools/widl/parser.tab.c" +#line 5393 "tools/widl/parser.tab.c" break; case 303: /* declaration: attributes decl_spec init_declarator */ @@ -5071,7 +5397,7 @@ { (yyval.var) = declare_var((yyvsp[-2].attr_list), (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE); free((yyvsp[0].declarator)); } -#line 5075 "tools/widl/parser.tab.c" +#line 5401 "tools/widl/parser.tab.c" break; case 304: /* declaration: decl_spec init_declarator */ @@ -5079,392 +5405,392 @@ { (yyval.var) = declare_var(NULL, (yyvsp[-1].declspec), (yyvsp[0].declarator), FALSE); free((yyvsp[0].declarator)); } -#line 5083 "tools/widl/parser.tab.c" +#line 5409 "tools/widl/parser.tab.c" break; case 305: /* m_ident: %empty */ #line 958 "tools/widl/parser.y" { (yyval.var) = NULL; } -#line 5089 "tools/widl/parser.tab.c" +#line 5415 "tools/widl/parser.tab.c" break; case 307: /* m_typename: %empty */ #line 963 "tools/widl/parser.y" { (yyval.str) = NULL; } -#line 5095 "tools/widl/parser.tab.c" +#line 5421 "tools/widl/parser.tab.c" break; case 311: /* ident: typename */ #line 971 "tools/widl/parser.y" { (yyval.var) = make_var((yyvsp[0].str)); } -#line 5101 "tools/widl/parser.tab.c" +#line 5427 "tools/widl/parser.tab.c" break; case 312: /* base_type: tBYTE */ #line 974 "tools/widl/parser.y" { (yyval.type) = find_type_or_error( NULL, "byte" ); } -#line 5107 "tools/widl/parser.tab.c" +#line 5433 "tools/widl/parser.tab.c" break; case 313: /* base_type: tWCHAR */ #line 975 "tools/widl/parser.y" { (yyval.type) = find_type_or_error( NULL, "wchar_t" ); } -#line 5113 "tools/widl/parser.tab.c" +#line 5439 "tools/widl/parser.tab.c" break; case 315: /* base_type: tSIGNED int_std */ #line 977 "tools/widl/parser.y" { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[0].type)), -1); } -#line 5119 "tools/widl/parser.tab.c" +#line 5445 "tools/widl/parser.tab.c" break; case 316: /* base_type: tUNSIGNED int_std */ #line 978 "tools/widl/parser.y" { (yyval.type) = type_new_int(type_basic_get_type((yyvsp[0].type)), 1); } -#line 5125 "tools/widl/parser.tab.c" +#line 5451 "tools/widl/parser.tab.c" break; case 317: /* base_type: tUNSIGNED */ #line 979 "tools/widl/parser.y" { (yyval.type) = type_new_int(TYPE_BASIC_INT, 1); } -#line 5131 "tools/widl/parser.tab.c" +#line 5457 "tools/widl/parser.tab.c" break; case 318: /* base_type: tFLOAT */ #line 980 "tools/widl/parser.y" { (yyval.type) = find_type_or_error( NULL, "float" ); } -#line 5137 "tools/widl/parser.tab.c" +#line 5463 "tools/widl/parser.tab.c" break; case 319: /* base_type: tDOUBLE */ #line 981 "tools/widl/parser.y" { (yyval.type) = find_type_or_error( NULL, "double" ); } -#line 5143 "tools/widl/parser.tab.c" +#line 5469 "tools/widl/parser.tab.c" break; case 320: /* base_type: tBOOLEAN */ #line 982 "tools/widl/parser.y" { (yyval.type) = find_type_or_error( NULL, "boolean" ); } -#line 5149 "tools/widl/parser.tab.c" +#line 5475 "tools/widl/parser.tab.c" break; case 321: /* base_type: tERRORSTATUST */ #line 983 "tools/widl/parser.y" { (yyval.type) = find_type_or_error( NULL, "error_status_t" ); } -#line 5155 "tools/widl/parser.tab.c" +#line 5481 "tools/widl/parser.tab.c" break; case 322: /* base_type: tHANDLET */ #line 984 "tools/widl/parser.y" { (yyval.type) = find_type_or_error( NULL, "handle_t" ); } -#line 5161 "tools/widl/parser.tab.c" +#line 5487 "tools/widl/parser.tab.c" break; case 325: /* int_std: tINT */ #line 992 "tools/widl/parser.y" { (yyval.type) = type_new_int(TYPE_BASIC_INT, 0); } -#line 5167 "tools/widl/parser.tab.c" +#line 5493 "tools/widl/parser.tab.c" break; case 326: /* int_std: tSHORT m_int */ #line 993 "tools/widl/parser.y" { (yyval.type) = type_new_int(TYPE_BASIC_INT16, 0); } -#line 5173 "tools/widl/parser.tab.c" +#line 5499 "tools/widl/parser.tab.c" break; case 327: /* int_std: tSMALL */ #line 994 "tools/widl/parser.y" { (yyval.type) = type_new_int(TYPE_BASIC_INT8, 0); } -#line 5179 "tools/widl/parser.tab.c" +#line 5505 "tools/widl/parser.tab.c" break; case 328: /* int_std: tLONG m_int */ #line 995 "tools/widl/parser.y" { (yyval.type) = type_new_int(TYPE_BASIC_LONG, 0); } -#line 5185 "tools/widl/parser.tab.c" +#line 5511 "tools/widl/parser.tab.c" break; case 329: /* int_std: tHYPER m_int */ #line 996 "tools/widl/parser.y" { (yyval.type) = type_new_int(TYPE_BASIC_HYPER, 0); } -#line 5191 "tools/widl/parser.tab.c" +#line 5517 "tools/widl/parser.tab.c" break; case 330: /* int_std: tINT64 */ #line 997 "tools/widl/parser.y" { (yyval.type) = type_new_int(TYPE_BASIC_INT64, 0); } -#line 5197 "tools/widl/parser.tab.c" +#line 5523 "tools/widl/parser.tab.c" break; case 331: /* int_std: tCHAR */ #line 998 "tools/widl/parser.y" { (yyval.type) = type_new_int(TYPE_BASIC_CHAR, 0); } -#line 5203 "tools/widl/parser.tab.c" +#line 5529 "tools/widl/parser.tab.c" break; case 332: /* int_std: tINT32 */ #line 999 "tools/widl/parser.y" { (yyval.type) = type_new_int(TYPE_BASIC_INT32, 0); } -#line 5209 "tools/widl/parser.tab.c" +#line 5535 "tools/widl/parser.tab.c" break; case 333: /* int_std: tINT3264 */ #line 1000 "tools/widl/parser.y" { (yyval.type) = type_new_int(TYPE_BASIC_INT3264, 0); } -#line 5215 "tools/widl/parser.tab.c" +#line 5541 "tools/widl/parser.tab.c" break; case 334: /* namespace_pfx: aIDENTIFIER '.' */ #line 1004 "tools/widl/parser.y" { (yyval.namespace) = find_namespace_or_error(&global_namespace, (yyvsp[-1].str)); } -#line 5221 "tools/widl/parser.tab.c" +#line 5547 "tools/widl/parser.tab.c" break; case 335: /* namespace_pfx: namespace_pfx aIDENTIFIER '.' */ #line 1005 "tools/widl/parser.y" { (yyval.namespace) = find_namespace_or_error((yyvsp[-2].namespace), (yyvsp[-1].str)); } -#line 5227 "tools/widl/parser.tab.c" +#line 5553 "tools/widl/parser.tab.c" break; case 336: /* qualified_type: typename */ #line 1009 "tools/widl/parser.y" { (yyval.type) = find_type_or_error(current_namespace, (yyvsp[0].str)); } -#line 5233 "tools/widl/parser.tab.c" +#line 5559 "tools/widl/parser.tab.c" break; case 337: /* qualified_type: namespace_pfx typename */ #line 1010 "tools/widl/parser.y" { (yyval.type) = find_type_or_error((yyvsp[-1].namespace), (yyvsp[0].str)); } -#line 5239 "tools/widl/parser.tab.c" +#line 5565 "tools/widl/parser.tab.c" break; case 338: /* parameterized_type: qualified_type '<' parameterized_type_args '>' */ #line 1014 "tools/widl/parser.y" { (yyval.type) = find_parameterized_type((yyvsp[-3].type), (yyvsp[-1].typeref_list)); } -#line 5245 "tools/widl/parser.tab.c" +#line 5571 "tools/widl/parser.tab.c" break; case 339: /* parameterized_type_arg: base_type */ #line 1018 "tools/widl/parser.y" { (yyval.type) = (yyvsp[0].type); } -#line 5251 "tools/widl/parser.tab.c" +#line 5577 "tools/widl/parser.tab.c" break; case 340: /* parameterized_type_arg: qualified_type */ #line 1019 "tools/widl/parser.y" { (yyval.type) = (yyvsp[0].type); } -#line 5257 "tools/widl/parser.tab.c" +#line 5583 "tools/widl/parser.tab.c" break; case 341: /* parameterized_type_arg: qualified_type '*' */ #line 1020 "tools/widl/parser.y" { (yyval.type) = type_new_pointer((yyvsp[-1].type)); } -#line 5263 "tools/widl/parser.tab.c" +#line 5589 "tools/widl/parser.tab.c" break; case 342: /* parameterized_type_arg: parameterized_type */ #line 1021 "tools/widl/parser.y" { (yyval.type) = (yyvsp[0].type); } -#line 5269 "tools/widl/parser.tab.c" +#line 5595 "tools/widl/parser.tab.c" break; case 343: /* parameterized_type_arg: parameterized_type '*' */ #line 1022 "tools/widl/parser.y" { (yyval.type) = type_new_pointer((yyvsp[-1].type)); } -#line 5275 "tools/widl/parser.tab.c" +#line 5601 "tools/widl/parser.tab.c" break; case 344: /* parameterized_type_args: parameterized_type_arg */ #line 1026 "tools/widl/parser.y" { (yyval.typeref_list) = append_typeref(NULL, make_typeref((yyvsp[0].type))); } -#line 5281 "tools/widl/parser.tab.c" +#line 5607 "tools/widl/parser.tab.c" break; case 345: /* parameterized_type_args: parameterized_type_args ',' parameterized_type_arg */ #line 1028 "tools/widl/parser.y" { (yyval.typeref_list) = append_typeref((yyvsp[-2].typeref_list), make_typeref((yyvsp[0].type))); } -#line 5287 "tools/widl/parser.tab.c" +#line 5613 "tools/widl/parser.tab.c" break; case 346: /* coclass: tCOCLASS typename */ #line 1031 "tools/widl/parser.y" { (yyval.type) = type_coclass_declare((yyvsp[0].str)); } -#line 5293 "tools/widl/parser.tab.c" +#line 5619 "tools/widl/parser.tab.c" break; case 347: /* coclassdef: attributes coclass '{' class_interfaces '}' semicolon_opt */ #line 1035 "tools/widl/parser.y" { (yyval.type) = type_coclass_define((yyvsp[-4].type), (yyvsp[-5].attr_list), (yyvsp[-2].typeref_list)); } -#line 5299 "tools/widl/parser.tab.c" +#line 5625 "tools/widl/parser.tab.c" break; case 348: /* runtimeclass: tRUNTIMECLASS typename */ #line 1038 "tools/widl/parser.y" { (yyval.type) = type_runtimeclass_declare((yyvsp[0].str), current_namespace); } -#line 5305 "tools/widl/parser.tab.c" +#line 5631 "tools/widl/parser.tab.c" break; case 349: /* runtimeclass_def: attributes runtimeclass inherit '{' class_interfaces '}' semicolon_opt */ #line 1042 "tools/widl/parser.y" { if ((yyvsp[-4].type) && type_get_type((yyvsp[-4].type)) != TYPE_RUNTIMECLASS) error_loc("%s is not a runtimeclass\n", (yyvsp[-4].type)->name); (yyval.type) = type_runtimeclass_define((yyvsp[-5].type), (yyvsp[-6].attr_list), (yyvsp[-2].typeref_list)); } -#line 5312 "tools/widl/parser.tab.c" +#line 5638 "tools/widl/parser.tab.c" break; case 350: /* apicontract: tAPICONTRACT typename */ #line 1046 "tools/widl/parser.y" { (yyval.type) = type_apicontract_declare((yyvsp[0].str), current_namespace); } -#line 5318 "tools/widl/parser.tab.c" +#line 5644 "tools/widl/parser.tab.c" break; case 351: /* apicontract_def: attributes apicontract '{' '}' semicolon_opt */ #line 1050 "tools/widl/parser.y" { (yyval.type) = type_apicontract_define((yyvsp[-3].type), (yyvsp[-4].attr_list)); } -#line 5324 "tools/widl/parser.tab.c" +#line 5650 "tools/widl/parser.tab.c" break; case 352: /* namespacedef: tNAMESPACE aIDENTIFIER */ #line 1053 "tools/widl/parser.y" { (yyval.str_list) = append_str( NULL, (yyvsp[0].str) ); } -#line 5330 "tools/widl/parser.tab.c" +#line 5656 "tools/widl/parser.tab.c" break; case 353: /* namespacedef: namespacedef '.' aIDENTIFIER */ #line 1054 "tools/widl/parser.y" { (yyval.str_list) = append_str( (yyvsp[-2].str_list), (yyvsp[0].str) ); } -#line 5336 "tools/widl/parser.tab.c" +#line 5662 "tools/widl/parser.tab.c" break; case 354: /* class_interfaces: %empty */ #line 1058 "tools/widl/parser.y" { (yyval.typeref_list) = NULL; } -#line 5342 "tools/widl/parser.tab.c" +#line 5668 "tools/widl/parser.tab.c" break; case 355: /* class_interfaces: class_interfaces class_interface */ #line 1059 "tools/widl/parser.y" { (yyval.typeref_list) = append_typeref( (yyvsp[-1].typeref_list), (yyvsp[0].typeref) ); } -#line 5348 "tools/widl/parser.tab.c" +#line 5674 "tools/widl/parser.tab.c" break; case 356: /* class_interface: m_attributes interfaceref ';' */ #line 1063 "tools/widl/parser.y" { (yyval.typeref) = make_typeref((yyvsp[-1].type)); (yyval.typeref)->attrs = (yyvsp[-2].attr_list); } -#line 5354 "tools/widl/parser.tab.c" +#line 5680 "tools/widl/parser.tab.c" break; case 357: /* class_interface: m_attributes dispinterfaceref ';' */ #line 1064 "tools/widl/parser.y" { (yyval.typeref) = make_typeref((yyvsp[-1].type)); (yyval.typeref)->attrs = (yyvsp[-2].attr_list); } -#line 5360 "tools/widl/parser.tab.c" +#line 5686 "tools/widl/parser.tab.c" break; case 358: /* dispinterface: tDISPINTERFACE typename */ #line 1067 "tools/widl/parser.y" { (yyval.type) = type_dispinterface_declare((yyvsp[0].str)); } -#line 5366 "tools/widl/parser.tab.c" +#line 5692 "tools/widl/parser.tab.c" break; case 359: /* dispattributes: attributes */ #line 1070 "tools/widl/parser.y" { (yyval.attr_list) = append_attr( (yyvsp[0].attr_list), attr_int( (yyloc), ATTR_DISPINTERFACE, 0 ) ); } -#line 5372 "tools/widl/parser.tab.c" +#line 5698 "tools/widl/parser.tab.c" break; case 360: /* dispint_props: tPROPERTIES ':' */ #line 1073 "tools/widl/parser.y" { (yyval.var_list) = NULL; } -#line 5378 "tools/widl/parser.tab.c" +#line 5704 "tools/widl/parser.tab.c" break; case 361: /* dispint_props: dispint_props s_field ';' */ #line 1074 "tools/widl/parser.y" { (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[-1].var) ); } -#line 5384 "tools/widl/parser.tab.c" +#line 5710 "tools/widl/parser.tab.c" break; case 362: /* dispint_meths: tMETHODS ':' */ #line 1077 "tools/widl/parser.y" { (yyval.var_list) = NULL; } -#line 5390 "tools/widl/parser.tab.c" +#line 5716 "tools/widl/parser.tab.c" break; case 363: /* dispint_meths: dispint_meths funcdef ';' */ #line 1078 "tools/widl/parser.y" { (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[-1].var) ); } -#line 5396 "tools/widl/parser.tab.c" +#line 5722 "tools/widl/parser.tab.c" break; case 364: /* dispinterfacedef: dispattributes dispinterface '{' dispint_props dispint_meths '}' */ #line 1083 "tools/widl/parser.y" { (yyval.type) = type_dispinterface_define((yyvsp[-4].type), (yyvsp[-5].attr_list), (yyvsp[-2].var_list), (yyvsp[-1].var_list)); } -#line 5402 "tools/widl/parser.tab.c" +#line 5728 "tools/widl/parser.tab.c" break; case 365: /* dispinterfacedef: dispattributes dispinterface '{' interface ';' '}' */ #line 1085 "tools/widl/parser.y" { (yyval.type) = type_dispinterface_define_from_iface((yyvsp[-4].type), (yyvsp[-5].attr_list), (yyvsp[-2].type)); } -#line 5408 "tools/widl/parser.tab.c" +#line 5734 "tools/widl/parser.tab.c" break; case 366: /* inherit: %empty */ #line 1089 "tools/widl/parser.y" { (yyval.type) = NULL; } -#line 5414 "tools/widl/parser.tab.c" +#line 5740 "tools/widl/parser.tab.c" break; case 367: /* inherit: ':' qualified_type */ #line 1090 "tools/widl/parser.y" { (yyval.type) = (yyvsp[0].type); } -#line 5420 "tools/widl/parser.tab.c" +#line 5746 "tools/widl/parser.tab.c" break; case 368: /* inherit: ':' parameterized_type */ #line 1091 "tools/widl/parser.y" { (yyval.type) = (yyvsp[0].type); } -#line 5426 "tools/widl/parser.tab.c" +#line 5752 "tools/widl/parser.tab.c" break; case 369: /* type_parameter: typename */ #line 1094 "tools/widl/parser.y" { (yyval.type) = get_type(TYPE_PARAMETER, (yyvsp[0].str), parameters_namespace, 0); } -#line 5432 "tools/widl/parser.tab.c" +#line 5758 "tools/widl/parser.tab.c" break; case 370: /* type_parameters: type_parameter */ #line 1098 "tools/widl/parser.y" { (yyval.typeref_list) = append_typeref(NULL, make_typeref((yyvsp[0].type))); } -#line 5438 "tools/widl/parser.tab.c" +#line 5764 "tools/widl/parser.tab.c" break; case 371: /* type_parameters: type_parameters ',' type_parameter */ #line 1099 "tools/widl/parser.y" { (yyval.typeref_list) = append_typeref((yyvsp[-2].typeref_list), make_typeref((yyvsp[0].type))); } -#line 5444 "tools/widl/parser.tab.c" +#line 5770 "tools/widl/parser.tab.c" break; case 372: /* interface: tINTERFACE typename */ #line 1103 "tools/widl/parser.y" { (yyval.type) = type_interface_declare((yyvsp[0].str), current_namespace); } -#line 5450 "tools/widl/parser.tab.c" +#line 5776 "tools/widl/parser.tab.c" break; case 373: /* $@3: %empty */ #line 1104 "tools/widl/parser.y" { push_parameters_namespace((yyvsp[-1].str)); } -#line 5456 "tools/widl/parser.tab.c" +#line 5782 "tools/widl/parser.tab.c" break; case 374: /* $@4: %empty */ #line 1104 "tools/widl/parser.y" { pop_parameters_namespace((yyvsp[-3].str)); } -#line 5462 "tools/widl/parser.tab.c" +#line 5788 "tools/widl/parser.tab.c" break; case 375: /* interface: tINTERFACE typename '<' $@3 type_parameters $@4 '>' */ #line 1105 "tools/widl/parser.y" { (yyval.type) = type_parameterized_interface_declare((yyvsp[-5].str), current_namespace, (yyvsp[-2].typeref_list)); } -#line 5468 "tools/widl/parser.tab.c" +#line 5794 "tools/widl/parser.tab.c" break; case 376: /* delegatedef: m_attributes tDELEGATE type ident '(' m_args ')' semicolon_opt */ @@ -5472,19 +5798,19 @@ { (yyval.type) = type_delegate_declare((yyvsp[-4].var)->name, current_namespace); (yyval.type) = type_delegate_define((yyval.type), (yyvsp[-7].attr_list), append_statement(NULL, make_statement_delegate((yyvsp[-5].type), (yyvsp[-2].var_list)))); } -#line 5476 "tools/widl/parser.tab.c" +#line 5802 "tools/widl/parser.tab.c" break; case 377: /* $@5: %empty */ #line 1113 "tools/widl/parser.y" { push_parameters_namespace((yyvsp[-1].var)->name); } -#line 5482 "tools/widl/parser.tab.c" +#line 5808 "tools/widl/parser.tab.c" break; case 378: /* $@6: %empty */ #line 1114 "tools/widl/parser.y" { pop_parameters_namespace((yyvsp[-7].var)->name); } -#line 5488 "tools/widl/parser.tab.c" +#line 5814 "tools/widl/parser.tab.c" break; case 379: /* delegatedef: m_attributes tDELEGATE type ident '<' $@5 type_parameters '>' '(' m_args ')' $@6 semicolon_opt */ @@ -5492,49 +5818,49 @@ { (yyval.type) = type_parameterized_delegate_declare((yyvsp[-9].var)->name, current_namespace, (yyvsp[-6].typeref_list)); (yyval.type) = type_parameterized_delegate_define((yyval.type), (yyvsp[-12].attr_list), append_statement(NULL, make_statement_delegate((yyvsp[-10].type), (yyvsp[-3].var_list)))); } -#line 5496 "tools/widl/parser.tab.c" +#line 5822 "tools/widl/parser.tab.c" break; case 380: /* required_types: qualified_type */ #line 1121 "tools/widl/parser.y" { (yyval.typeref_list) = append_typeref(NULL, make_typeref((yyvsp[0].type))); } -#line 5502 "tools/widl/parser.tab.c" +#line 5828 "tools/widl/parser.tab.c" break; case 381: /* required_types: parameterized_type */ #line 1122 "tools/widl/parser.y" { (yyval.typeref_list) = append_typeref(NULL, make_typeref((yyvsp[0].type))); } -#line 5508 "tools/widl/parser.tab.c" +#line 5834 "tools/widl/parser.tab.c" break; case 382: /* required_types: required_types ',' qualified_type */ #line 1123 "tools/widl/parser.y" { (yyval.typeref_list) = append_typeref((yyvsp[-2].typeref_list), make_typeref((yyvsp[0].type))); } -#line 5514 "tools/widl/parser.tab.c" +#line 5840 "tools/widl/parser.tab.c" break; case 383: /* required_types: required_types ',' parameterized_type */ #line 1124 "tools/widl/parser.y" { (yyval.typeref_list) = append_typeref((yyvsp[-2].typeref_list), make_typeref((yyvsp[0].type))); } -#line 5520 "tools/widl/parser.tab.c" +#line 5846 "tools/widl/parser.tab.c" break; case 384: /* requires: %empty */ #line 1128 "tools/widl/parser.y" { (yyval.typeref_list) = NULL; } -#line 5526 "tools/widl/parser.tab.c" +#line 5852 "tools/widl/parser.tab.c" break; case 385: /* requires: tREQUIRES required_types */ #line 1129 "tools/widl/parser.y" { (yyval.typeref_list) = (yyvsp[0].typeref_list); } -#line 5532 "tools/widl/parser.tab.c" +#line 5858 "tools/widl/parser.tab.c" break; case 386: /* $@7: %empty */ #line 1132 "tools/widl/parser.y" { if ((yyvsp[0].type)->type_type == TYPE_PARAMETERIZED_TYPE) push_parameters_namespace((yyvsp[0].type)->name); } -#line 5538 "tools/widl/parser.tab.c" +#line 5864 "tools/widl/parser.tab.c" break; case 387: /* interfacedef: attributes interface $@7 inherit requires '{' int_statements '}' semicolon_opt */ @@ -5550,223 +5876,223 @@ check_async_uuid((yyval.type)); } } -#line 5554 "tools/widl/parser.tab.c" +#line 5880 "tools/widl/parser.tab.c" break; case 388: /* interfacedef: dispinterfacedef semicolon_opt */ #line 1145 "tools/widl/parser.y" { (yyval.type) = (yyvsp[-1].type); } -#line 5560 "tools/widl/parser.tab.c" +#line 5886 "tools/widl/parser.tab.c" break; case 389: /* interfaceref: tINTERFACE typename */ #line 1149 "tools/widl/parser.y" { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); } -#line 5566 "tools/widl/parser.tab.c" +#line 5892 "tools/widl/parser.tab.c" break; case 390: /* interfaceref: tINTERFACE namespace_pfx typename */ #line 1150 "tools/widl/parser.y" { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), (yyvsp[-1].namespace), 0); } -#line 5572 "tools/widl/parser.tab.c" +#line 5898 "tools/widl/parser.tab.c" break; case 391: /* interfaceref: tINTERFACE parameterized_type */ #line 1151 "tools/widl/parser.y" { if (type_get_type(((yyval.type) = (yyvsp[0].type))) != TYPE_INTERFACE) error_loc("%s is not an interface\n", (yyval.type)->name); } -#line 5578 "tools/widl/parser.tab.c" +#line 5904 "tools/widl/parser.tab.c" break; case 392: /* dispinterfaceref: tDISPINTERFACE typename */ #line 1155 "tools/widl/parser.y" { (yyval.type) = get_type(TYPE_INTERFACE, (yyvsp[0].str), current_namespace, 0); } -#line 5584 "tools/widl/parser.tab.c" +#line 5910 "tools/widl/parser.tab.c" break; case 393: /* module: tMODULE typename */ #line 1158 "tools/widl/parser.y" { (yyval.type) = type_module_declare((yyvsp[0].str)); } -#line 5590 "tools/widl/parser.tab.c" +#line 5916 "tools/widl/parser.tab.c" break; case 394: /* moduledef: m_attributes module '{' int_statements '}' semicolon_opt */ #line 1162 "tools/widl/parser.y" { (yyval.type) = type_module_define((yyvsp[-4].type), (yyvsp[-5].attr_list), (yyvsp[-2].stmt_list)); } -#line 5596 "tools/widl/parser.tab.c" +#line 5922 "tools/widl/parser.tab.c" break; case 395: /* storage_cls_spec: tEXTERN */ #line 1166 "tools/widl/parser.y" { (yyval.stgclass) = STG_EXTERN; } -#line 5602 "tools/widl/parser.tab.c" +#line 5928 "tools/widl/parser.tab.c" break; case 396: /* storage_cls_spec: tSTATIC */ #line 1167 "tools/widl/parser.y" { (yyval.stgclass) = STG_STATIC; } -#line 5608 "tools/widl/parser.tab.c" +#line 5934 "tools/widl/parser.tab.c" break; case 397: /* storage_cls_spec: tREGISTER */ #line 1168 "tools/widl/parser.y" { (yyval.stgclass) = STG_REGISTER; } -#line 5614 "tools/widl/parser.tab.c" +#line 5940 "tools/widl/parser.tab.c" break; case 398: /* function_specifier: tINLINE */ #line 1172 "tools/widl/parser.y" { (yyval.function_specifier) = FUNCTION_SPECIFIER_INLINE; } -#line 5620 "tools/widl/parser.tab.c" +#line 5946 "tools/widl/parser.tab.c" break; case 399: /* type_qualifier: tCONST */ #line 1176 "tools/widl/parser.y" { (yyval.type_qualifier) = TYPE_QUALIFIER_CONST; } -#line 5626 "tools/widl/parser.tab.c" +#line 5952 "tools/widl/parser.tab.c" break; case 400: /* m_type_qual_list: %empty */ #line 1180 "tools/widl/parser.y" { (yyval.type_qualifier) = 0; } -#line 5632 "tools/widl/parser.tab.c" +#line 5958 "tools/widl/parser.tab.c" break; case 401: /* m_type_qual_list: m_type_qual_list type_qualifier */ #line 1181 "tools/widl/parser.y" { (yyval.type_qualifier) = (yyvsp[-1].type_qualifier) | (yyvsp[0].type_qualifier); } -#line 5638 "tools/widl/parser.tab.c" +#line 5964 "tools/widl/parser.tab.c" break; case 402: /* decl_spec: type m_decl_spec_no_type */ #line 1184 "tools/widl/parser.y" { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[0].declspec), NULL, STG_NONE, 0, 0); } -#line 5644 "tools/widl/parser.tab.c" +#line 5970 "tools/widl/parser.tab.c" break; case 403: /* decl_spec: decl_spec_no_type type m_decl_spec_no_type */ #line 1186 "tools/widl/parser.y" { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[-2].declspec), (yyvsp[0].declspec), STG_NONE, 0, 0); } -#line 5650 "tools/widl/parser.tab.c" +#line 5976 "tools/widl/parser.tab.c" break; case 404: /* unqualified_decl_spec: unqualified_type m_decl_spec_no_type */ #line 1190 "tools/widl/parser.y" { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[0].declspec), NULL, STG_NONE, 0, 0); } -#line 5656 "tools/widl/parser.tab.c" +#line 5982 "tools/widl/parser.tab.c" break; case 405: /* unqualified_decl_spec: decl_spec_no_type unqualified_type m_decl_spec_no_type */ #line 1192 "tools/widl/parser.y" { (yyval.declspec) = make_decl_spec((yyvsp[-1].type), (yyvsp[-2].declspec), (yyvsp[0].declspec), STG_NONE, 0, 0); } -#line 5662 "tools/widl/parser.tab.c" +#line 5988 "tools/widl/parser.tab.c" break; case 406: /* m_decl_spec_no_type: %empty */ #line 1196 "tools/widl/parser.y" { (yyval.declspec) = NULL; } -#line 5668 "tools/widl/parser.tab.c" +#line 5994 "tools/widl/parser.tab.c" break; case 408: /* decl_spec_no_type: type_qualifier m_decl_spec_no_type */ #line 1201 "tools/widl/parser.y" { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, STG_NONE, (yyvsp[-1].type_qualifier), 0); } -#line 5674 "tools/widl/parser.tab.c" +#line 6000 "tools/widl/parser.tab.c" break; case 409: /* decl_spec_no_type: function_specifier m_decl_spec_no_type */ #line 1202 "tools/widl/parser.y" { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, STG_NONE, 0, (yyvsp[-1].function_specifier)); } -#line 5680 "tools/widl/parser.tab.c" +#line 6006 "tools/widl/parser.tab.c" break; case 410: /* decl_spec_no_type: storage_cls_spec m_decl_spec_no_type */ #line 1203 "tools/widl/parser.y" { (yyval.declspec) = make_decl_spec(NULL, (yyvsp[0].declspec), NULL, (yyvsp[-1].stgclass), 0, 0); } -#line 5686 "tools/widl/parser.tab.c" +#line 6012 "tools/widl/parser.tab.c" break; case 411: /* declarator: '*' m_type_qual_list declarator */ #line 1208 "tools/widl/parser.y" { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); } -#line 5692 "tools/widl/parser.tab.c" +#line 6018 "tools/widl/parser.tab.c" break; case 412: /* declarator: callconv declarator */ #line 1209 "tools/widl/parser.y" { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv( (yyloc), (yyval.declarator)->type, (yyvsp[-1].str) ); } -#line 5698 "tools/widl/parser.tab.c" +#line 6024 "tools/widl/parser.tab.c" break; case 414: /* direct_declarator: ident */ #line 1214 "tools/widl/parser.y" { (yyval.declarator) = make_declarator((yyvsp[0].var)); } -#line 5704 "tools/widl/parser.tab.c" +#line 6030 "tools/widl/parser.tab.c" break; case 415: /* direct_declarator: '(' declarator ')' */ #line 1215 "tools/widl/parser.y" { (yyval.declarator) = (yyvsp[-1].declarator); } -#line 5710 "tools/widl/parser.tab.c" +#line 6036 "tools/widl/parser.tab.c" break; case 416: /* direct_declarator: direct_declarator array */ #line 1216 "tools/widl/parser.y" { (yyval.declarator) = (yyvsp[-1].declarator); append_array((yyval.declarator), (yyvsp[0].expr)); } -#line 5716 "tools/widl/parser.tab.c" +#line 6042 "tools/widl/parser.tab.c" break; case 417: /* direct_declarator: direct_declarator '(' m_args ')' */ #line 1217 "tools/widl/parser.y" { (yyval.declarator) = (yyvsp[-3].declarator); append_chain_type((yyval.declarator), type_new_function((yyvsp[-1].var_list)), 0); } -#line 5722 "tools/widl/parser.tab.c" +#line 6048 "tools/widl/parser.tab.c" break; case 418: /* abstract_declarator: '*' m_type_qual_list m_abstract_declarator */ #line 1223 "tools/widl/parser.y" { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); } -#line 5728 "tools/widl/parser.tab.c" +#line 6054 "tools/widl/parser.tab.c" break; case 419: /* abstract_declarator: callconv m_abstract_declarator */ #line 1224 "tools/widl/parser.y" { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv( (yyloc), (yyval.declarator)->type, (yyvsp[-1].str) ); } -#line 5734 "tools/widl/parser.tab.c" +#line 6060 "tools/widl/parser.tab.c" break; case 421: /* abstract_declarator_no_direct: '*' m_type_qual_list m_any_declarator */ #line 1231 "tools/widl/parser.y" { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); } -#line 5740 "tools/widl/parser.tab.c" +#line 6066 "tools/widl/parser.tab.c" break; case 422: /* abstract_declarator_no_direct: callconv m_any_declarator */ #line 1232 "tools/widl/parser.y" { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv( (yyloc), (yyval.declarator)->type, (yyvsp[-1].str) ); } -#line 5746 "tools/widl/parser.tab.c" +#line 6072 "tools/widl/parser.tab.c" break; case 423: /* m_abstract_declarator: %empty */ #line 1237 "tools/widl/parser.y" { (yyval.declarator) = make_declarator(NULL); } -#line 5752 "tools/widl/parser.tab.c" +#line 6078 "tools/widl/parser.tab.c" break; case 425: /* abstract_direct_declarator: '(' abstract_declarator_no_direct ')' */ #line 1243 "tools/widl/parser.y" { (yyval.declarator) = (yyvsp[-1].declarator); } -#line 5758 "tools/widl/parser.tab.c" +#line 6084 "tools/widl/parser.tab.c" break; case 426: /* abstract_direct_declarator: abstract_direct_declarator array */ #line 1244 "tools/widl/parser.y" { (yyval.declarator) = (yyvsp[-1].declarator); append_array((yyval.declarator), (yyvsp[0].expr)); } -#line 5764 "tools/widl/parser.tab.c" +#line 6090 "tools/widl/parser.tab.c" break; case 427: /* abstract_direct_declarator: array */ #line 1245 "tools/widl/parser.y" { (yyval.declarator) = make_declarator(NULL); append_array((yyval.declarator), (yyvsp[0].expr)); } -#line 5770 "tools/widl/parser.tab.c" +#line 6096 "tools/widl/parser.tab.c" break; case 428: /* abstract_direct_declarator: '(' m_args ')' */ @@ -5774,7 +6100,7 @@ { (yyval.declarator) = make_declarator(NULL); append_chain_type((yyval.declarator), type_new_function((yyvsp[-1].var_list)), 0); } -#line 5778 "tools/widl/parser.tab.c" +#line 6104 "tools/widl/parser.tab.c" break; case 429: /* abstract_direct_declarator: abstract_direct_declarator '(' m_args ')' */ @@ -5782,61 +6108,61 @@ { (yyval.declarator) = (yyvsp[-3].declarator); append_chain_type((yyval.declarator), type_new_function((yyvsp[-1].var_list)), 0); } -#line 5786 "tools/widl/parser.tab.c" +#line 6112 "tools/widl/parser.tab.c" break; case 430: /* any_declarator: '*' m_type_qual_list m_any_declarator */ #line 1259 "tools/widl/parser.y" { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); } -#line 5792 "tools/widl/parser.tab.c" +#line 6118 "tools/widl/parser.tab.c" break; case 431: /* any_declarator: callconv m_any_declarator */ #line 1260 "tools/widl/parser.y" { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv( (yyloc), (yyval.declarator)->type, (yyvsp[-1].str) ); } -#line 5798 "tools/widl/parser.tab.c" +#line 6124 "tools/widl/parser.tab.c" break; case 433: /* any_declarator_no_direct: '*' m_type_qual_list m_any_declarator */ #line 1267 "tools/widl/parser.y" { (yyval.declarator) = (yyvsp[0].declarator); append_chain_type((yyval.declarator), type_new_pointer(NULL), (yyvsp[-1].type_qualifier)); } -#line 5804 "tools/widl/parser.tab.c" +#line 6130 "tools/widl/parser.tab.c" break; case 434: /* any_declarator_no_direct: callconv m_any_declarator */ #line 1268 "tools/widl/parser.y" { (yyval.declarator) = (yyvsp[0].declarator); append_chain_callconv( (yyloc), (yyval.declarator)->type, (yyvsp[-1].str) ); } -#line 5810 "tools/widl/parser.tab.c" +#line 6136 "tools/widl/parser.tab.c" break; case 435: /* m_any_declarator: %empty */ #line 1273 "tools/widl/parser.y" { (yyval.declarator) = make_declarator(NULL); } -#line 5816 "tools/widl/parser.tab.c" +#line 6142 "tools/widl/parser.tab.c" break; case 437: /* any_direct_declarator: ident */ #line 1281 "tools/widl/parser.y" { (yyval.declarator) = make_declarator((yyvsp[0].var)); } -#line 5822 "tools/widl/parser.tab.c" +#line 6148 "tools/widl/parser.tab.c" break; case 438: /* any_direct_declarator: '(' any_declarator_no_direct ')' */ #line 1282 "tools/widl/parser.y" { (yyval.declarator) = (yyvsp[-1].declarator); } -#line 5828 "tools/widl/parser.tab.c" +#line 6154 "tools/widl/parser.tab.c" break; case 439: /* any_direct_declarator: any_direct_declarator array */ #line 1283 "tools/widl/parser.y" { (yyval.declarator) = (yyvsp[-1].declarator); append_array((yyval.declarator), (yyvsp[0].expr)); } -#line 5834 "tools/widl/parser.tab.c" +#line 6160 "tools/widl/parser.tab.c" break; case 440: /* any_direct_declarator: array */ #line 1284 "tools/widl/parser.y" { (yyval.declarator) = make_declarator(NULL); append_array((yyval.declarator), (yyvsp[0].expr)); } -#line 5840 "tools/widl/parser.tab.c" +#line 6166 "tools/widl/parser.tab.c" break; case 441: /* any_direct_declarator: '(' m_args ')' */ @@ -5844,7 +6170,7 @@ { (yyval.declarator) = make_declarator(NULL); append_chain_type((yyval.declarator), type_new_function((yyvsp[-1].var_list)), 0); } -#line 5848 "tools/widl/parser.tab.c" +#line 6174 "tools/widl/parser.tab.c" break; case 442: /* any_direct_declarator: any_direct_declarator '(' m_args ')' */ @@ -5852,31 +6178,31 @@ { (yyval.declarator) = (yyvsp[-3].declarator); append_chain_type((yyval.declarator), type_new_function((yyvsp[-1].var_list)), 0); } -#line 5856 "tools/widl/parser.tab.c" +#line 6182 "tools/widl/parser.tab.c" break; case 443: /* declarator_list: declarator */ #line 1296 "tools/widl/parser.y" { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[0].declarator) ); } -#line 5862 "tools/widl/parser.tab.c" +#line 6188 "tools/widl/parser.tab.c" break; case 444: /* declarator_list: declarator_list ',' declarator */ #line 1297 "tools/widl/parser.y" { (yyval.declarator_list) = append_declarator( (yyvsp[-2].declarator_list), (yyvsp[0].declarator) ); } -#line 5868 "tools/widl/parser.tab.c" +#line 6194 "tools/widl/parser.tab.c" break; case 445: /* m_bitfield: %empty */ #line 1301 "tools/widl/parser.y" { (yyval.expr) = NULL; } -#line 5874 "tools/widl/parser.tab.c" +#line 6200 "tools/widl/parser.tab.c" break; case 446: /* m_bitfield: ':' expr_const */ #line 1302 "tools/widl/parser.y" { (yyval.expr) = (yyvsp[0].expr); } -#line 5880 "tools/widl/parser.tab.c" +#line 6206 "tools/widl/parser.tab.c" break; case 447: /* struct_declarator: any_declarator m_bitfield */ @@ -5885,163 +6211,163 @@ if (!(yyval.declarator)->bits && !(yyval.declarator)->var->name) error_loc("unnamed fields are not allowed\n"); } -#line 5889 "tools/widl/parser.tab.c" +#line 6215 "tools/widl/parser.tab.c" break; case 448: /* struct_declarator_list: struct_declarator */ #line 1312 "tools/widl/parser.y" { (yyval.declarator_list) = append_declarator( NULL, (yyvsp[0].declarator) ); } -#line 5895 "tools/widl/parser.tab.c" +#line 6221 "tools/widl/parser.tab.c" break; case 449: /* struct_declarator_list: struct_declarator_list ',' struct_declarator */ #line 1314 "tools/widl/parser.y" { (yyval.declarator_list) = append_declarator( (yyvsp[-2].declarator_list), (yyvsp[0].declarator) ); } -#line 5901 "tools/widl/parser.tab.c" +#line 6227 "tools/widl/parser.tab.c" break; case 450: /* init_declarator: declarator */ #line 1318 "tools/widl/parser.y" { (yyval.declarator) = (yyvsp[0].declarator); } -#line 5907 "tools/widl/parser.tab.c" +#line 6233 "tools/widl/parser.tab.c" break; case 451: /* init_declarator: declarator '=' expr_const */ #line 1319 "tools/widl/parser.y" { (yyval.declarator) = (yyvsp[-2].declarator); (yyvsp[-2].declarator)->var->eval = (yyvsp[0].expr); } -#line 5913 "tools/widl/parser.tab.c" +#line 6239 "tools/widl/parser.tab.c" break; case 452: /* threading_type: tAPARTMENT */ #line 1323 "tools/widl/parser.y" { (yyval.num) = THREADING_APARTMENT; } -#line 5919 "tools/widl/parser.tab.c" +#line 6245 "tools/widl/parser.tab.c" break; case 453: /* threading_type: tNEUTRAL */ #line 1324 "tools/widl/parser.y" { (yyval.num) = THREADING_NEUTRAL; } -#line 5925 "tools/widl/parser.tab.c" +#line 6251 "tools/widl/parser.tab.c" break; case 454: /* threading_type: tSINGLE */ #line 1325 "tools/widl/parser.y" { (yyval.num) = THREADING_SINGLE; } -#line 5931 "tools/widl/parser.tab.c" +#line 6257 "tools/widl/parser.tab.c" break; case 455: /* threading_type: tFREE */ #line 1326 "tools/widl/parser.y" { (yyval.num) = THREADING_FREE; } -#line 5937 "tools/widl/parser.tab.c" +#line 6263 "tools/widl/parser.tab.c" break; case 456: /* threading_type: tBOTH */ #line 1327 "tools/widl/parser.y" { (yyval.num) = THREADING_BOTH; } -#line 5943 "tools/widl/parser.tab.c" +#line 6269 "tools/widl/parser.tab.c" break; case 457: /* threading_type: tMTA */ #line 1328 "tools/widl/parser.y" { (yyval.num) = THREADING_FREE; } -#line 5949 "tools/widl/parser.tab.c" +#line 6275 "tools/widl/parser.tab.c" break; case 458: /* pointer_type: tREF */ #line 1332 "tools/widl/parser.y" { (yyval.num) = FC_RP; } -#line 5955 "tools/widl/parser.tab.c" +#line 6281 "tools/widl/parser.tab.c" break; case 459: /* pointer_type: tUNIQUE */ #line 1333 "tools/widl/parser.y" { (yyval.num) = FC_UP; } -#line 5961 "tools/widl/parser.tab.c" +#line 6287 "tools/widl/parser.tab.c" break; case 460: /* pointer_type: tPTR */ #line 1334 "tools/widl/parser.y" { (yyval.num) = FC_FP; } -#line 5967 "tools/widl/parser.tab.c" +#line 6293 "tools/widl/parser.tab.c" break; case 461: /* structdef: tSTRUCT m_typename '{' fields '}' */ #line 1337 "tools/widl/parser.y" { (yyval.type) = type_new_struct((yyvsp[-3].str), current_namespace, TRUE, (yyvsp[-1].var_list)); } -#line 5973 "tools/widl/parser.tab.c" +#line 6299 "tools/widl/parser.tab.c" break; case 462: /* unqualified_type: tVOID */ #line 1341 "tools/widl/parser.y" { (yyval.type) = type_new_void(); } -#line 5979 "tools/widl/parser.tab.c" +#line 6305 "tools/widl/parser.tab.c" break; case 463: /* unqualified_type: base_type */ #line 1342 "tools/widl/parser.y" { (yyval.type) = (yyvsp[0].type); } -#line 5985 "tools/widl/parser.tab.c" +#line 6311 "tools/widl/parser.tab.c" break; case 464: /* unqualified_type: enumdef */ #line 1343 "tools/widl/parser.y" { (yyval.type) = (yyvsp[0].type); } -#line 5991 "tools/widl/parser.tab.c" +#line 6317 "tools/widl/parser.tab.c" break; case 465: /* unqualified_type: tENUM aIDENTIFIER */ #line 1344 "tools/widl/parser.y" { (yyval.type) = type_new_enum((yyvsp[0].str), current_namespace, FALSE, NULL); } -#line 5997 "tools/widl/parser.tab.c" +#line 6323 "tools/widl/parser.tab.c" break; case 466: /* unqualified_type: structdef */ #line 1345 "tools/widl/parser.y" { (yyval.type) = (yyvsp[0].type); } -#line 6003 "tools/widl/parser.tab.c" +#line 6329 "tools/widl/parser.tab.c" break; case 467: /* unqualified_type: tSTRUCT aIDENTIFIER */ #line 1346 "tools/widl/parser.y" { (yyval.type) = type_new_struct((yyvsp[0].str), current_namespace, FALSE, NULL); } -#line 6009 "tools/widl/parser.tab.c" +#line 6335 "tools/widl/parser.tab.c" break; case 468: /* unqualified_type: uniondef */ #line 1347 "tools/widl/parser.y" { (yyval.type) = (yyvsp[0].type); } -#line 6015 "tools/widl/parser.tab.c" +#line 6341 "tools/widl/parser.tab.c" break; case 469: /* unqualified_type: tUNION aIDENTIFIER */ #line 1348 "tools/widl/parser.y" { (yyval.type) = type_new_nonencapsulated_union((yyvsp[0].str), current_namespace, FALSE, NULL); } -#line 6021 "tools/widl/parser.tab.c" +#line 6347 "tools/widl/parser.tab.c" break; case 470: /* unqualified_type: tSAFEARRAY '(' type ')' */ #line 1349 "tools/widl/parser.y" { (yyval.type) = make_safearray((yyvsp[-1].type)); } -#line 6027 "tools/widl/parser.tab.c" +#line 6353 "tools/widl/parser.tab.c" break; case 471: /* unqualified_type: aKNOWNTYPE */ #line 1350 "tools/widl/parser.y" { (yyval.type) = find_type_or_error(current_namespace, (yyvsp[0].str)); } -#line 6033 "tools/widl/parser.tab.c" +#line 6359 "tools/widl/parser.tab.c" break; case 473: /* type: namespace_pfx typename */ #line 1355 "tools/widl/parser.y" { (yyval.type) = find_type_or_error((yyvsp[-1].namespace), (yyvsp[0].str)); } -#line 6039 "tools/widl/parser.tab.c" +#line 6365 "tools/widl/parser.tab.c" break; case 474: /* type: parameterized_type */ #line 1356 "tools/widl/parser.y" { (yyval.type) = (yyvsp[0].type); } -#line 6045 "tools/widl/parser.tab.c" +#line 6371 "tools/widl/parser.tab.c" break; case 475: /* typedef: m_attributes tTYPEDEF m_attributes decl_spec declarator_list */ @@ -6050,37 +6376,37 @@ reg_typedefs( (yyloc), (yyvsp[-1].declspec), (yyvsp[0].declarator_list), check_typedef_attrs( (yyvsp[-4].attr_list) ) ); (yyval.statement) = make_statement_typedef((yyvsp[0].declarator_list), !(yyvsp[-1].declspec)->type->defined); } -#line 6054 "tools/widl/parser.tab.c" +#line 6380 "tools/widl/parser.tab.c" break; case 476: /* uniondef: tUNION m_typename '{' ne_union_fields '}' */ #line 1367 "tools/widl/parser.y" { (yyval.type) = type_new_nonencapsulated_union((yyvsp[-3].str), current_namespace, TRUE, (yyvsp[-1].var_list)); } -#line 6060 "tools/widl/parser.tab.c" +#line 6386 "tools/widl/parser.tab.c" break; case 477: /* uniondef: tUNION m_typename tSWITCH '(' s_field ')' m_ident '{' cases '}' */ #line 1370 "tools/widl/parser.y" { (yyval.type) = type_new_encapsulated_union((yyvsp[-8].str), (yyvsp[-5].var), (yyvsp[-3].var), (yyvsp[-1].var_list)); } -#line 6066 "tools/widl/parser.tab.c" +#line 6392 "tools/widl/parser.tab.c" break; case 478: /* version: aNUM */ #line 1374 "tools/widl/parser.y" { (yyval.num) = MAKEVERSION((yyvsp[0].num), 0); } -#line 6072 "tools/widl/parser.tab.c" +#line 6398 "tools/widl/parser.tab.c" break; case 479: /* version: aNUM '.' aNUM */ #line 1375 "tools/widl/parser.y" { (yyval.num) = MAKEVERSION((yyvsp[-2].num), (yyvsp[0].num)); } -#line 6078 "tools/widl/parser.tab.c" +#line 6404 "tools/widl/parser.tab.c" break; case 480: /* version: aHEXNUM */ #line 1376 "tools/widl/parser.y" { (yyval.num) = (yyvsp[0].num); } -#line 6084 "tools/widl/parser.tab.c" +#line 6410 "tools/widl/parser.tab.c" break; case 485: /* acf_int_statement: tTYPEDEF acf_attributes aKNOWNTYPE ';' */ @@ -6088,7 +6414,7 @@ { type_t *type = find_type_or_error(current_namespace, (yyvsp[-1].str)); type->attrs = append_attr_list(type->attrs, (yyvsp[-2].attr_list)); } -#line 6092 "tools/widl/parser.tab.c" +#line 6418 "tools/widl/parser.tab.c" break; case 486: /* acf_interface: acf_attributes tINTERFACE aKNOWNTYPE '{' acf_int_statements '}' */ @@ -6098,95 +6424,95 @@ error_loc("%s is not an interface\n", iface->name); iface->attrs = append_attr_list(iface->attrs, (yyvsp[-5].attr_list)); } -#line 6102 "tools/widl/parser.tab.c" +#line 6428 "tools/widl/parser.tab.c" break; case 487: /* acf_attributes: %empty */ #line 1406 "tools/widl/parser.y" { (yyval.attr_list) = NULL; } -#line 6108 "tools/widl/parser.tab.c" +#line 6434 "tools/widl/parser.tab.c" break; case 488: /* acf_attributes: '[' acf_attribute_list ']' */ #line 1407 "tools/widl/parser.y" { (yyval.attr_list) = (yyvsp[-1].attr_list); } -#line 6114 "tools/widl/parser.tab.c" +#line 6440 "tools/widl/parser.tab.c" break; case 489: /* acf_attribute_list: acf_attribute */ #line 1411 "tools/widl/parser.y" { (yyval.attr_list) = append_attr(NULL, (yyvsp[0].attr)); } -#line 6120 "tools/widl/parser.tab.c" +#line 6446 "tools/widl/parser.tab.c" break; case 490: /* acf_attribute_list: acf_attribute_list ',' acf_attribute */ #line 1412 "tools/widl/parser.y" { (yyval.attr_list) = append_attr((yyvsp[-2].attr_list), (yyvsp[0].attr)); } -#line 6126 "tools/widl/parser.tab.c" +#line 6452 "tools/widl/parser.tab.c" break; case 491: /* acf_attribute: tALLOCATE '(' allocate_option_list ')' */ #line 1417 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_ALLOCATE, (yyvsp[-1].num) ); } -#line 6132 "tools/widl/parser.tab.c" +#line 6458 "tools/widl/parser.tab.c" break; case 492: /* acf_attribute: tENCODE */ #line 1418 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_ENCODE, 0 ); } -#line 6138 "tools/widl/parser.tab.c" +#line 6464 "tools/widl/parser.tab.c" break; case 493: /* acf_attribute: tDECODE */ #line 1419 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_DECODE, 0 ); } -#line 6144 "tools/widl/parser.tab.c" +#line 6470 "tools/widl/parser.tab.c" break; case 494: /* acf_attribute: tEXPLICITHANDLE */ #line 1420 "tools/widl/parser.y" { (yyval.attr) = attr_int( (yyloc), ATTR_EXPLICIT_HANDLE, 0 ); } -#line 6150 "tools/widl/parser.tab.c" +#line 6476 "tools/widl/parser.tab.c" break; case 495: /* allocate_option_list: allocate_option */ #line 1424 "tools/widl/parser.y" { (yyval.num) = (yyvsp[0].num); } -#line 6156 "tools/widl/parser.tab.c" +#line 6482 "tools/widl/parser.tab.c" break; case 496: /* allocate_option_list: allocate_option_list ',' allocate_option */ #line 1426 "tools/widl/parser.y" { (yyval.num) = (yyvsp[-2].num) | (yyvsp[0].num); } -#line 6162 "tools/widl/parser.tab.c" +#line 6488 "tools/widl/parser.tab.c" break; case 497: /* allocate_option: tDONTFREE */ #line 1430 "tools/widl/parser.y" { (yyval.num) = FC_DONT_FREE; } -#line 6168 "tools/widl/parser.tab.c" +#line 6494 "tools/widl/parser.tab.c" break; case 498: /* allocate_option: tFREE */ #line 1431 "tools/widl/parser.y" { (yyval.num) = 0; } -#line 6174 "tools/widl/parser.tab.c" +#line 6500 "tools/widl/parser.tab.c" break; case 499: /* allocate_option: tALLNODES */ #line 1432 "tools/widl/parser.y" { (yyval.num) = FC_ALLOCATE_ALL_NODES; } -#line 6180 "tools/widl/parser.tab.c" +#line 6506 "tools/widl/parser.tab.c" break; case 500: /* allocate_option: tSINGLENODE */ #line 1433 "tools/widl/parser.y" { (yyval.num) = 0; } -#line 6186 "tools/widl/parser.tab.c" +#line 6512 "tools/widl/parser.tab.c" break; -#line 6190 "tools/widl/parser.tab.c" +#line 6516 "tools/widl/parser.tab.c" default: break; }
diff --git a/mingw-w64-tools/widl/src/ppy.tab.c b/mingw-w64-tools/widl/src/ppy.tab.c index c79a7b0..57b4bae 100644 --- a/mingw-w64-tools/widl/src/ppy.tab.c +++ b/mingw-w64-tools/widl/src/ppy.tab.c
@@ -195,7 +195,113 @@ # endif # endif -#include "ppy.tab.h" + +/* Debug traces. */ +#ifndef PPY_DEBUG +# if defined YYDEBUG +#if YYDEBUG +# define PPY_DEBUG 1 +# else +# define PPY_DEBUG 0 +# endif +# else /* ! defined YYDEBUG */ +# define PPY_DEBUG 0 +# endif /* ! defined YYDEBUG */ +#endif /* ! defined PPY_DEBUG */ +#if PPY_DEBUG +extern int ppy_debug; +#endif + +/* Token kinds. */ +#ifndef PPY_TOKENTYPE +# define PPY_TOKENTYPE + enum ppy_tokentype + { + PPY_EMPTY = -2, + PPY_EOF = 0, /* "end of file" */ + PPY_error = 256, /* error */ + PPY_UNDEF = 257, /* "invalid token" */ + tRCINCLUDE = 258, /* tRCINCLUDE */ + tIF = 259, /* tIF */ + tIFDEF = 260, /* tIFDEF */ + tIFNDEF = 261, /* tIFNDEF */ + tELSE = 262, /* tELSE */ + tELIF = 263, /* tELIF */ + tENDIF = 264, /* tENDIF */ + tDEFINED = 265, /* tDEFINED */ + tNL = 266, /* tNL */ + tINCLUDE = 267, /* tINCLUDE */ + tLINE = 268, /* tLINE */ + tGCCLINE = 269, /* tGCCLINE */ + tERROR = 270, /* tERROR */ + tWARNING = 271, /* tWARNING */ + tPRAGMA = 272, /* tPRAGMA */ + tPPIDENT = 273, /* tPPIDENT */ + tUNDEF = 274, /* tUNDEF */ + tMACROEND = 275, /* tMACROEND */ + tCONCAT = 276, /* tCONCAT */ + tELLIPSIS = 277, /* tELLIPSIS */ + tSTRINGIZE = 278, /* tSTRINGIZE */ + tIDENT = 279, /* tIDENT */ + tLITERAL = 280, /* tLITERAL */ + tMACRO = 281, /* tMACRO */ + tDEFINE = 282, /* tDEFINE */ + tDQSTRING = 283, /* tDQSTRING */ + tSQSTRING = 284, /* tSQSTRING */ + tIQSTRING = 285, /* tIQSTRING */ + tUINT = 286, /* tUINT */ + tSINT = 287, /* tSINT */ + tULONG = 288, /* tULONG */ + tSLONG = 289, /* tSLONG */ + tULONGLONG = 290, /* tULONGLONG */ + tSLONGLONG = 291, /* tSLONGLONG */ + tRCINCLUDEPATH = 292, /* tRCINCLUDEPATH */ + tLOGOR = 293, /* tLOGOR */ + tLOGAND = 294, /* tLOGAND */ + tEQ = 295, /* tEQ */ + tNE = 296, /* tNE */ + tLTE = 297, /* tLTE */ + tGTE = 298, /* tGTE */ + tLSHIFT = 299, /* tLSHIFT */ + tRSHIFT = 300 /* tRSHIFT */ + }; + typedef enum ppy_tokentype ppy_token_kind_t; +#endif + +/* Value type. */ +#if ! defined PPY_STYPE && ! defined PPY_STYPE_IS_DECLARED +union PPY_STYPE +{ +#line 121 "tools/wrc/ppy.y" + + int sint; + unsigned int uint; + long slong; + unsigned long ulong; + __int64 sll; + unsigned __int64 ull; + int *iptr; + char *cptr; + cval_t cval; + char *marg; + mtext_t *mtext; + +#line 290 "tools/wrc/ppy.tab.c" + +}; +typedef union PPY_STYPE PPY_STYPE; +# define PPY_STYPE_IS_TRIVIAL 1 +# define PPY_STYPE_IS_DECLARED 1 +#endif + + +extern PPY_STYPE ppy_lval; + + +int ppy_parse (void); + + + /* Symbol kind. */ enum yysymbol_kind_t { @@ -1365,25 +1471,25 @@ case 4: /* preprocessor: tINCLUDE tDQSTRING tNL */ #line 181 "tools/wrc/ppy.y" { pp_do_include((yyvsp[-1].cptr), 1); } -#line 1369 "tools/wrc/ppy.tab.c" +#line 1475 "tools/wrc/ppy.tab.c" break; case 5: /* preprocessor: tINCLUDE tIQSTRING tNL */ #line 182 "tools/wrc/ppy.y" { pp_do_include((yyvsp[-1].cptr), 0); } -#line 1375 "tools/wrc/ppy.tab.c" +#line 1481 "tools/wrc/ppy.tab.c" break; case 6: /* preprocessor: tIF pp_expr tNL */ #line 183 "tools/wrc/ppy.y" { pp_next_if_state(boolean(&(yyvsp[-1].cval))); } -#line 1381 "tools/wrc/ppy.tab.c" +#line 1487 "tools/wrc/ppy.tab.c" break; case 7: /* preprocessor: tIFDEF tIDENT tNL */ #line 184 "tools/wrc/ppy.y" { pp_next_if_state(pplookup((yyvsp[-1].cptr)) != NULL); free((yyvsp[-1].cptr)); } -#line 1387 "tools/wrc/ppy.tab.c" +#line 1493 "tools/wrc/ppy.tab.c" break; case 8: /* preprocessor: tIFNDEF tIDENT tNL */ @@ -1408,7 +1514,7 @@ fprintf(stderr, "tIFNDEF: %s:%d: include_state=%d, include_ppp='%s', include_ifdepth=%d\n", pp_status.input, pp_status.line_number, pp_incl_state.state, pp_incl_state.ppp, pp_incl_state.ifdepth); } -#line 1412 "tools/wrc/ppy.tab.c" +#line 1518 "tools/wrc/ppy.tab.c" break; case 9: /* preprocessor: tELIF pp_expr tNL */ @@ -1435,7 +1541,7 @@ break; } } -#line 1439 "tools/wrc/ppy.tab.c" +#line 1545 "tools/wrc/ppy.tab.c" break; case 10: /* preprocessor: tELSE tNL */ @@ -1464,7 +1570,7 @@ break; } } -#line 1468 "tools/wrc/ppy.tab.c" +#line 1574 "tools/wrc/ppy.tab.c" break; case 11: /* preprocessor: tENDIF tNL */ @@ -1486,19 +1592,19 @@ pp_status.input, pp_status.line_number, pp_incl_state.state, pp_incl_state.ppp, pp_incl_state.ifdepth); } } -#line 1490 "tools/wrc/ppy.tab.c" +#line 1596 "tools/wrc/ppy.tab.c" break; case 12: /* preprocessor: tUNDEF tIDENT tNL */ #line 268 "tools/wrc/ppy.y" { pp_del_define((yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); } -#line 1496 "tools/wrc/ppy.tab.c" +#line 1602 "tools/wrc/ppy.tab.c" break; case 13: /* preprocessor: tDEFINE opt_text tNL */ #line 269 "tools/wrc/ppy.y" { pp_add_define((yyvsp[-2].cptr), (yyvsp[-1].cptr)); free((yyvsp[-2].cptr)); free((yyvsp[-1].cptr)); } -#line 1502 "tools/wrc/ppy.tab.c" +#line 1608 "tools/wrc/ppy.tab.c" break; case 14: /* preprocessor: tMACRO res_arg allmargs tMACROEND opt_mtexts tNL */ @@ -1506,67 +1612,67 @@ { pp_add_macro((yyvsp[-5].cptr), macro_args, nmacro_args, macro_variadic, (yyvsp[-1].mtext)); } -#line 1510 "tools/wrc/ppy.tab.c" +#line 1616 "tools/wrc/ppy.tab.c" break; case 15: /* preprocessor: tLINE tSINT tDQSTRING tNL */ #line 273 "tools/wrc/ppy.y" { if((yyvsp[-1].cptr)) fprintf(ppy_out, "# %d %s\n", (yyvsp[-2].sint) , (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); } -#line 1516 "tools/wrc/ppy.tab.c" +#line 1622 "tools/wrc/ppy.tab.c" break; case 16: /* preprocessor: tGCCLINE tSINT tDQSTRING tNL */ #line 274 "tools/wrc/ppy.y" { if((yyvsp[-1].cptr)) fprintf(ppy_out, "# %d %s\n", (yyvsp[-2].sint) , (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); } -#line 1522 "tools/wrc/ppy.tab.c" +#line 1628 "tools/wrc/ppy.tab.c" break; case 17: /* preprocessor: tGCCLINE tSINT tDQSTRING tSINT tNL */ #line 276 "tools/wrc/ppy.y" { if((yyvsp[-2].cptr)) fprintf(ppy_out, "# %d %s %d\n", (yyvsp[-3].sint), (yyvsp[-2].cptr), (yyvsp[-1].sint)); free((yyvsp[-2].cptr)); } -#line 1528 "tools/wrc/ppy.tab.c" +#line 1634 "tools/wrc/ppy.tab.c" break; case 18: /* preprocessor: tGCCLINE tSINT tDQSTRING tSINT tSINT tNL */ #line 278 "tools/wrc/ppy.y" { if((yyvsp[-3].cptr)) fprintf(ppy_out, "# %d %s %d %d\n", (yyvsp[-4].sint) ,(yyvsp[-3].cptr), (yyvsp[-2].sint), (yyvsp[-1].sint)); free((yyvsp[-3].cptr)); } -#line 1534 "tools/wrc/ppy.tab.c" +#line 1640 "tools/wrc/ppy.tab.c" break; case 19: /* preprocessor: tGCCLINE tSINT tDQSTRING tSINT tSINT tSINT tNL */ #line 280 "tools/wrc/ppy.y" { if((yyvsp[-4].cptr)) fprintf(ppy_out, "# %d %s %d %d %d\n", (yyvsp[-5].sint) ,(yyvsp[-4].cptr) ,(yyvsp[-3].sint) ,(yyvsp[-2].sint), (yyvsp[-1].sint)); free((yyvsp[-4].cptr)); } -#line 1540 "tools/wrc/ppy.tab.c" +#line 1646 "tools/wrc/ppy.tab.c" break; case 20: /* preprocessor: tGCCLINE tSINT tDQSTRING tSINT tSINT tSINT tSINT tNL */ #line 282 "tools/wrc/ppy.y" { if((yyvsp[-5].cptr)) fprintf(ppy_out, "# %d %s %d %d %d %d\n", (yyvsp[-6].sint) ,(yyvsp[-5].cptr) ,(yyvsp[-4].sint) ,(yyvsp[-3].sint), (yyvsp[-2].sint), (yyvsp[-1].sint)); free((yyvsp[-5].cptr)); } -#line 1546 "tools/wrc/ppy.tab.c" +#line 1652 "tools/wrc/ppy.tab.c" break; case 22: /* preprocessor: tERROR opt_text tNL */ #line 284 "tools/wrc/ppy.y" { ppy_error("#error directive: '%s'", (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); } -#line 1552 "tools/wrc/ppy.tab.c" +#line 1658 "tools/wrc/ppy.tab.c" break; case 23: /* preprocessor: tWARNING opt_text tNL */ #line 285 "tools/wrc/ppy.y" { ppy_warning("#warning directive: '%s'", (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); } -#line 1558 "tools/wrc/ppy.tab.c" +#line 1664 "tools/wrc/ppy.tab.c" break; case 24: /* preprocessor: tPRAGMA opt_text tNL */ #line 286 "tools/wrc/ppy.y" { fprintf(ppy_out, "#pragma %s\n", (yyvsp[-1].cptr) ? (yyvsp[-1].cptr) : ""); free((yyvsp[-1].cptr)); } -#line 1564 "tools/wrc/ppy.tab.c" +#line 1670 "tools/wrc/ppy.tab.c" break; case 25: /* preprocessor: tPPIDENT opt_text tNL */ #line 287 "tools/wrc/ppy.y" { if(pedantic) ppy_warning("#ident ignored (arg: '%s')", (yyvsp[-1].cptr)); free((yyvsp[-1].cptr)); } -#line 1570 "tools/wrc/ppy.tab.c" +#line 1676 "tools/wrc/ppy.tab.c" break; case 26: /* preprocessor: tRCINCLUDE tRCINCLUDEPATH */ @@ -1574,7 +1680,7 @@ { pp_do_include(strmake( "\"%s\"", (yyvsp[0].cptr) ),1); } -#line 1578 "tools/wrc/ppy.tab.c" +#line 1684 "tools/wrc/ppy.tab.c" break; case 27: /* preprocessor: tRCINCLUDE tDQSTRING */ @@ -1582,109 +1688,109 @@ { pp_do_include((yyvsp[0].cptr),1); } -#line 1586 "tools/wrc/ppy.tab.c" +#line 1692 "tools/wrc/ppy.tab.c" break; case 28: /* opt_text: %empty */ #line 297 "tools/wrc/ppy.y" { (yyval.cptr) = NULL; } -#line 1592 "tools/wrc/ppy.tab.c" +#line 1698 "tools/wrc/ppy.tab.c" break; case 29: /* opt_text: text */ #line 298 "tools/wrc/ppy.y" { (yyval.cptr) = (yyvsp[0].cptr); } -#line 1598 "tools/wrc/ppy.tab.c" +#line 1704 "tools/wrc/ppy.tab.c" break; case 30: /* text: tLITERAL */ #line 301 "tools/wrc/ppy.y" { (yyval.cptr) = (yyvsp[0].cptr); } -#line 1604 "tools/wrc/ppy.tab.c" +#line 1710 "tools/wrc/ppy.tab.c" break; case 31: /* text: tDQSTRING */ #line 302 "tools/wrc/ppy.y" { (yyval.cptr) = (yyvsp[0].cptr); } -#line 1610 "tools/wrc/ppy.tab.c" +#line 1716 "tools/wrc/ppy.tab.c" break; case 32: /* text: tSQSTRING */ #line 303 "tools/wrc/ppy.y" { (yyval.cptr) = (yyvsp[0].cptr); } -#line 1616 "tools/wrc/ppy.tab.c" +#line 1722 "tools/wrc/ppy.tab.c" break; case 33: /* text: text tLITERAL */ #line 304 "tools/wrc/ppy.y" { (yyval.cptr) = merge_text((yyvsp[-1].cptr), (yyvsp[0].cptr)); } -#line 1622 "tools/wrc/ppy.tab.c" +#line 1728 "tools/wrc/ppy.tab.c" break; case 34: /* text: text tDQSTRING */ #line 305 "tools/wrc/ppy.y" { (yyval.cptr) = merge_text((yyvsp[-1].cptr), (yyvsp[0].cptr)); } -#line 1628 "tools/wrc/ppy.tab.c" +#line 1734 "tools/wrc/ppy.tab.c" break; case 35: /* text: text tSQSTRING */ #line 306 "tools/wrc/ppy.y" { (yyval.cptr) = merge_text((yyvsp[-1].cptr), (yyvsp[0].cptr)); } -#line 1634 "tools/wrc/ppy.tab.c" +#line 1740 "tools/wrc/ppy.tab.c" break; case 36: /* res_arg: %empty */ #line 309 "tools/wrc/ppy.y" { macro_args = NULL; nmacro_args = 0; macro_variadic = 0; } -#line 1640 "tools/wrc/ppy.tab.c" +#line 1746 "tools/wrc/ppy.tab.c" break; case 37: /* allmargs: %empty */ #line 312 "tools/wrc/ppy.y" { (yyval.sint) = 0; macro_args = NULL; nmacro_args = 0; macro_variadic = 0; } -#line 1646 "tools/wrc/ppy.tab.c" +#line 1752 "tools/wrc/ppy.tab.c" break; case 38: /* allmargs: emargs */ #line 313 "tools/wrc/ppy.y" { (yyval.sint) = nmacro_args; } -#line 1652 "tools/wrc/ppy.tab.c" +#line 1758 "tools/wrc/ppy.tab.c" break; case 39: /* emargs: margs */ #line 316 "tools/wrc/ppy.y" { (yyval.marg) = (yyvsp[0].marg); } -#line 1658 "tools/wrc/ppy.tab.c" +#line 1764 "tools/wrc/ppy.tab.c" break; case 40: /* emargs: margs ',' tELLIPSIS */ #line 317 "tools/wrc/ppy.y" { macro_variadic = 1; } -#line 1664 "tools/wrc/ppy.tab.c" +#line 1770 "tools/wrc/ppy.tab.c" break; case 41: /* emargs: tELLIPSIS */ #line 318 "tools/wrc/ppy.y" { macro_args = NULL; nmacro_args = 0; macro_variadic = 1; } -#line 1670 "tools/wrc/ppy.tab.c" +#line 1776 "tools/wrc/ppy.tab.c" break; case 42: /* margs: margs ',' tIDENT */ #line 321 "tools/wrc/ppy.y" { (yyval.marg) = add_new_marg((yyvsp[0].cptr)); } -#line 1676 "tools/wrc/ppy.tab.c" +#line 1782 "tools/wrc/ppy.tab.c" break; case 43: /* margs: tIDENT */ #line 322 "tools/wrc/ppy.y" { (yyval.marg) = add_new_marg((yyvsp[0].cptr)); } -#line 1682 "tools/wrc/ppy.tab.c" +#line 1788 "tools/wrc/ppy.tab.c" break; case 44: /* opt_mtexts: %empty */ #line 326 "tools/wrc/ppy.y" { (yyval.mtext) = NULL; } -#line 1688 "tools/wrc/ppy.tab.c" +#line 1794 "tools/wrc/ppy.tab.c" break; case 45: /* opt_mtexts: mtexts */ @@ -1693,43 +1799,43 @@ for((yyval.mtext) = (yyvsp[0].mtext); (yyval.mtext) && (yyval.mtext)->prev; (yyval.mtext) = (yyval.mtext)->prev) ; } -#line 1697 "tools/wrc/ppy.tab.c" +#line 1803 "tools/wrc/ppy.tab.c" break; case 46: /* mtexts: mtext */ #line 333 "tools/wrc/ppy.y" { (yyval.mtext) = (yyvsp[0].mtext); } -#line 1703 "tools/wrc/ppy.tab.c" +#line 1809 "tools/wrc/ppy.tab.c" break; case 47: /* mtexts: mtexts mtext */ #line 334 "tools/wrc/ppy.y" { (yyval.mtext) = combine_mtext((yyvsp[-1].mtext), (yyvsp[0].mtext)); } -#line 1709 "tools/wrc/ppy.tab.c" +#line 1815 "tools/wrc/ppy.tab.c" break; case 48: /* mtext: tLITERAL */ #line 337 "tools/wrc/ppy.y" { (yyval.mtext) = new_mtext((yyvsp[0].cptr), 0, exp_text); } -#line 1715 "tools/wrc/ppy.tab.c" +#line 1821 "tools/wrc/ppy.tab.c" break; case 49: /* mtext: tDQSTRING */ #line 338 "tools/wrc/ppy.y" { (yyval.mtext) = new_mtext((yyvsp[0].cptr), 0, exp_text); } -#line 1721 "tools/wrc/ppy.tab.c" +#line 1827 "tools/wrc/ppy.tab.c" break; case 50: /* mtext: tSQSTRING */ #line 339 "tools/wrc/ppy.y" { (yyval.mtext) = new_mtext((yyvsp[0].cptr), 0, exp_text); } -#line 1727 "tools/wrc/ppy.tab.c" +#line 1833 "tools/wrc/ppy.tab.c" break; case 51: /* mtext: tCONCAT */ #line 340 "tools/wrc/ppy.y" { (yyval.mtext) = new_mtext(NULL, 0, exp_concat); } -#line 1733 "tools/wrc/ppy.tab.c" +#line 1839 "tools/wrc/ppy.tab.c" break; case 52: /* mtext: tSTRINGIZE tIDENT */ @@ -1741,7 +1847,7 @@ else (yyval.mtext) = new_mtext(NULL, mat, exp_stringize); } -#line 1745 "tools/wrc/ppy.tab.c" +#line 1851 "tools/wrc/ppy.tab.c" break; case 53: /* mtext: tIDENT */ @@ -1753,203 +1859,203 @@ else if((yyvsp[0].cptr)) (yyval.mtext) = new_mtext((yyvsp[0].cptr), 0, exp_text); } -#line 1757 "tools/wrc/ppy.tab.c" +#line 1863 "tools/wrc/ppy.tab.c" break; case 54: /* pp_expr: tSINT */ #line 357 "tools/wrc/ppy.y" { (yyval.cval).type = cv_sint; (yyval.cval).val.si = (yyvsp[0].sint); } -#line 1763 "tools/wrc/ppy.tab.c" +#line 1869 "tools/wrc/ppy.tab.c" break; case 55: /* pp_expr: tUINT */ #line 358 "tools/wrc/ppy.y" { (yyval.cval).type = cv_uint; (yyval.cval).val.ui = (yyvsp[0].uint); } -#line 1769 "tools/wrc/ppy.tab.c" +#line 1875 "tools/wrc/ppy.tab.c" break; case 56: /* pp_expr: tSLONG */ #line 359 "tools/wrc/ppy.y" { (yyval.cval).type = cv_slong; (yyval.cval).val.sl = (yyvsp[0].slong); } -#line 1775 "tools/wrc/ppy.tab.c" +#line 1881 "tools/wrc/ppy.tab.c" break; case 57: /* pp_expr: tULONG */ #line 360 "tools/wrc/ppy.y" { (yyval.cval).type = cv_ulong; (yyval.cval).val.ul = (yyvsp[0].ulong); } -#line 1781 "tools/wrc/ppy.tab.c" +#line 1887 "tools/wrc/ppy.tab.c" break; case 58: /* pp_expr: tSLONGLONG */ #line 361 "tools/wrc/ppy.y" { (yyval.cval).type = cv_sll; (yyval.cval).val.sll = (yyvsp[0].sll); } -#line 1787 "tools/wrc/ppy.tab.c" +#line 1893 "tools/wrc/ppy.tab.c" break; case 59: /* pp_expr: tULONGLONG */ #line 362 "tools/wrc/ppy.y" { (yyval.cval).type = cv_ull; (yyval.cval).val.ull = (yyvsp[0].ull); } -#line 1793 "tools/wrc/ppy.tab.c" +#line 1899 "tools/wrc/ppy.tab.c" break; case 60: /* pp_expr: tDEFINED tIDENT */ #line 363 "tools/wrc/ppy.y" { (yyval.cval).type = cv_sint; (yyval.cval).val.si = pplookup((yyvsp[0].cptr)) != NULL; } -#line 1799 "tools/wrc/ppy.tab.c" +#line 1905 "tools/wrc/ppy.tab.c" break; case 61: /* pp_expr: tDEFINED '(' tIDENT ')' */ #line 364 "tools/wrc/ppy.y" { (yyval.cval).type = cv_sint; (yyval.cval).val.si = pplookup((yyvsp[-1].cptr)) != NULL; } -#line 1805 "tools/wrc/ppy.tab.c" +#line 1911 "tools/wrc/ppy.tab.c" break; case 62: /* pp_expr: tIDENT */ #line 365 "tools/wrc/ppy.y" { (yyval.cval).type = cv_sint; (yyval.cval).val.si = 0; } -#line 1811 "tools/wrc/ppy.tab.c" +#line 1917 "tools/wrc/ppy.tab.c" break; case 63: /* pp_expr: pp_expr tLOGOR pp_expr */ #line 366 "tools/wrc/ppy.y" { (yyval.cval).type = cv_sint; (yyval.cval).val.si = boolean(&(yyvsp[-2].cval)) || boolean(&(yyvsp[0].cval)); } -#line 1817 "tools/wrc/ppy.tab.c" +#line 1923 "tools/wrc/ppy.tab.c" break; case 64: /* pp_expr: pp_expr tLOGAND pp_expr */ #line 367 "tools/wrc/ppy.y" { (yyval.cval).type = cv_sint; (yyval.cval).val.si = boolean(&(yyvsp[-2].cval)) && boolean(&(yyvsp[0].cval)); } -#line 1823 "tools/wrc/ppy.tab.c" +#line 1929 "tools/wrc/ppy.tab.c" break; case 65: /* pp_expr: pp_expr tEQ pp_expr */ #line 368 "tools/wrc/ppy.y" { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), ==); } -#line 1829 "tools/wrc/ppy.tab.c" +#line 1935 "tools/wrc/ppy.tab.c" break; case 66: /* pp_expr: pp_expr tNE pp_expr */ #line 369 "tools/wrc/ppy.y" { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), !=); } -#line 1835 "tools/wrc/ppy.tab.c" +#line 1941 "tools/wrc/ppy.tab.c" break; case 67: /* pp_expr: pp_expr '<' pp_expr */ #line 370 "tools/wrc/ppy.y" { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), <); } -#line 1841 "tools/wrc/ppy.tab.c" +#line 1947 "tools/wrc/ppy.tab.c" break; case 68: /* pp_expr: pp_expr '>' pp_expr */ #line 371 "tools/wrc/ppy.y" { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), >); } -#line 1847 "tools/wrc/ppy.tab.c" +#line 1953 "tools/wrc/ppy.tab.c" break; case 69: /* pp_expr: pp_expr tLTE pp_expr */ #line 372 "tools/wrc/ppy.y" { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), <=); } -#line 1853 "tools/wrc/ppy.tab.c" +#line 1959 "tools/wrc/ppy.tab.c" break; case 70: /* pp_expr: pp_expr tGTE pp_expr */ #line 373 "tools/wrc/ppy.y" { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), >=); } -#line 1859 "tools/wrc/ppy.tab.c" +#line 1965 "tools/wrc/ppy.tab.c" break; case 71: /* pp_expr: pp_expr '+' pp_expr */ #line 374 "tools/wrc/ppy.y" { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), +); } -#line 1865 "tools/wrc/ppy.tab.c" +#line 1971 "tools/wrc/ppy.tab.c" break; case 72: /* pp_expr: pp_expr '-' pp_expr */ #line 375 "tools/wrc/ppy.y" { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), -); } -#line 1871 "tools/wrc/ppy.tab.c" +#line 1977 "tools/wrc/ppy.tab.c" break; case 73: /* pp_expr: pp_expr '^' pp_expr */ #line 376 "tools/wrc/ppy.y" { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), ^); } -#line 1877 "tools/wrc/ppy.tab.c" +#line 1983 "tools/wrc/ppy.tab.c" break; case 74: /* pp_expr: pp_expr '&' pp_expr */ #line 377 "tools/wrc/ppy.y" { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), &); } -#line 1883 "tools/wrc/ppy.tab.c" +#line 1989 "tools/wrc/ppy.tab.c" break; case 75: /* pp_expr: pp_expr '|' pp_expr */ #line 378 "tools/wrc/ppy.y" { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), |); } -#line 1889 "tools/wrc/ppy.tab.c" +#line 1995 "tools/wrc/ppy.tab.c" break; case 76: /* pp_expr: pp_expr '*' pp_expr */ #line 379 "tools/wrc/ppy.y" { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), *); } -#line 1895 "tools/wrc/ppy.tab.c" +#line 2001 "tools/wrc/ppy.tab.c" break; case 77: /* pp_expr: pp_expr '/' pp_expr */ #line 380 "tools/wrc/ppy.y" { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), /); } -#line 1901 "tools/wrc/ppy.tab.c" +#line 2007 "tools/wrc/ppy.tab.c" break; case 78: /* pp_expr: pp_expr tLSHIFT pp_expr */ #line 381 "tools/wrc/ppy.y" { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), <<); } -#line 1907 "tools/wrc/ppy.tab.c" +#line 2013 "tools/wrc/ppy.tab.c" break; case 79: /* pp_expr: pp_expr tRSHIFT pp_expr */ #line 382 "tools/wrc/ppy.y" { promote_equal_size(&(yyvsp[-2].cval), &(yyvsp[0].cval)); BIN_OP((yyval.cval), (yyvsp[-2].cval), (yyvsp[0].cval), >>); } -#line 1913 "tools/wrc/ppy.tab.c" +#line 2019 "tools/wrc/ppy.tab.c" break; case 80: /* pp_expr: '+' pp_expr */ #line 383 "tools/wrc/ppy.y" { (yyval.cval) = (yyvsp[0].cval); } -#line 1919 "tools/wrc/ppy.tab.c" +#line 2025 "tools/wrc/ppy.tab.c" break; case 81: /* pp_expr: '-' pp_expr */ #line 384 "tools/wrc/ppy.y" { UNARY_OP((yyval.cval), (yyvsp[0].cval), -); } -#line 1925 "tools/wrc/ppy.tab.c" +#line 2031 "tools/wrc/ppy.tab.c" break; case 82: /* pp_expr: '~' pp_expr */ #line 385 "tools/wrc/ppy.y" { UNARY_OP((yyval.cval), (yyvsp[0].cval), ~); } -#line 1931 "tools/wrc/ppy.tab.c" +#line 2037 "tools/wrc/ppy.tab.c" break; case 83: /* pp_expr: '!' pp_expr */ #line 386 "tools/wrc/ppy.y" { (yyval.cval).type = cv_sint; (yyval.cval).val.si = !boolean(&(yyvsp[0].cval)); } -#line 1937 "tools/wrc/ppy.tab.c" +#line 2043 "tools/wrc/ppy.tab.c" break; case 84: /* pp_expr: '(' pp_expr ')' */ #line 387 "tools/wrc/ppy.y" { (yyval.cval) = (yyvsp[-1].cval); } -#line 1943 "tools/wrc/ppy.tab.c" +#line 2049 "tools/wrc/ppy.tab.c" break; case 85: /* pp_expr: pp_expr '?' pp_expr ':' pp_expr */ #line 388 "tools/wrc/ppy.y" { (yyval.cval) = boolean(&(yyvsp[-4].cval)) ? (yyvsp[-2].cval) : (yyvsp[0].cval); } -#line 1949 "tools/wrc/ppy.tab.c" +#line 2055 "tools/wrc/ppy.tab.c" break; -#line 1953 "tools/wrc/ppy.tab.c" +#line 2059 "tools/wrc/ppy.tab.c" default: break; }
diff --git a/mingw-w64-tools/widl/src/typegen.c b/mingw-w64-tools/widl/src/typegen.c index b3373de..23db655 100644 --- a/mingw-w64-tools/widl/src/typegen.c +++ b/mingw-w64-tools/widl/src/typegen.c
@@ -234,7 +234,6 @@ static inline unsigned int clamp_align(unsigned int align) { - unsigned int packing = (pointer_size == 4) ? win32_packing : win64_packing; if(align > packing) align = packing; return align; }
diff --git a/mingw-w64-tools/widl/src/widl.c b/mingw-w64-tools/widl/src/widl.c index b663d40..6f531a5 100644 --- a/mingw-w64-tools/widl/src/widl.c +++ b/mingw-w64-tools/widl/src/widl.c
@@ -42,6 +42,7 @@ "Usage: widl [options...] infile.idl\n" " or: widl [options...] --dlldata-only name1 [name2...]\n" " --acf=file Use ACF file\n" +" --align=n Set structure packing to 'n'\n" " -app_config Ignored, present for midl compatibility\n" " -b arch Set the target architecture\n" " -c Generate client stub\n" @@ -62,6 +63,7 @@ " -o, --output=NAME Set the output file name\n" " -Otype Type of stubs to generate (-Os, -Oi, -Oif)\n" " -p Generate proxy\n" +" --packing=n Set structure packing to 'n'\n" " --prefix-all=p Prefix names of client stubs / server functions with 'p'\n" " --prefix-client=p Prefix names of client stubs with 'p'\n" " --prefix-server=p Prefix names of server functions with 'p'\n" @@ -74,8 +76,6 @@ " -V Print version and exit\n" " -W Enable pedantic warnings\n" " --win32, --win64 Set the target architecture (Win32 or Win64)\n" -" --win32-align n Set win32 structure alignment to 'n'\n" -" --win64-align n Set win64 structure alignment to 'n'\n" " --winrt Enable Windows Runtime mode\n" "Debug level 'n' is a bitmask with following meaning:\n" " * 0x01 Tell which resource is parsed (verbose mode)\n" @@ -107,8 +107,6 @@ int do_dlldata = 0; static int no_preprocess = 0; int old_names = 0; -int win32_packing = 8; -int win64_packing = 8; int winrt_mode = 0; int use_abi_namespace = 0; static int stdinc = 1; @@ -143,6 +141,7 @@ static FILE *idfile; +unsigned int packing = 8; unsigned int pointer_size = 0; time_t now; @@ -155,6 +154,7 @@ DLLDATA_ONLY_OPTION, LOCAL_STUBS_OPTION, NOSTDINC_OPTION, + PACKING_OPTION, PREFIX_ALL_OPTION, PREFIX_CLIENT_OPTION, PREFIX_SERVER_OPTION, @@ -165,14 +165,13 @@ SYSROOT_OPTION, WIN32_OPTION, WIN64_OPTION, - WIN32_ALIGN_OPTION, - WIN64_ALIGN_OPTION }; static const char short_options[] = "b:cC:d:D:EhH:I:L:m:No:O:pP:rsS:tT:uU:VW"; static const struct long_option long_options[] = { { "acf", 1, ACF_OPTION }, + { "align", 1, PACKING_OPTION }, { "app_config", 0, APP_CONFIG_OPTION }, { "dlldata", 1, DLLDATA_OPTION }, { "dlldata-only", 0, DLLDATA_ONLY_OPTION }, @@ -182,6 +181,7 @@ { "ns_prefix", 0, RT_NS_PREFIX }, { "oldnames", 0, OLDNAMES_OPTION }, { "output", 0, 'o' }, + { "packing", 1, PACKING_OPTION }, { "prefix-all", 1, PREFIX_ALL_OPTION }, { "prefix-client", 1, PREFIX_CLIENT_OPTION }, { "prefix-server", 1, PREFIX_SERVER_OPTION }, @@ -191,8 +191,6 @@ { "winrt", 0, RT_OPTION }, { "win32", 0, WIN32_OPTION }, { "win64", 0, WIN64_OPTION }, - { "win32-align", 1, WIN32_ALIGN_OPTION }, - { "win64-align", 1, WIN64_ALIGN_OPTION }, { NULL } }; @@ -533,15 +531,10 @@ case WIN64_OPTION: pointer_size = 8; break; - case WIN32_ALIGN_OPTION: - win32_packing = strtol(optarg, NULL, 0); - if(win32_packing != 2 && win32_packing != 4 && win32_packing != 8) - error("Packing must be one of 2, 4 or 8\n"); - break; - case WIN64_ALIGN_OPTION: - win64_packing = strtol(optarg, NULL, 0); - if(win64_packing != 2 && win64_packing != 4 && win64_packing != 8) - error("Packing must be one of 2, 4 or 8\n"); + case PACKING_OPTION: + packing = strtol(optarg, NULL, 0); + if(packing != 2 && packing != 4 && packing != 8) + error("Structure packing must be one of 2, 4 or 8\n"); break; case ACF_OPTION: acf_name = xstrdup(optarg);
diff --git a/mingw-w64-tools/widl/src/widl.h b/mingw-w64-tools/widl/src/widl.h index 7595cfe..15ac74b 100644 --- a/mingw-w64-tools/widl/src/widl.h +++ b/mingw-w64-tools/widl/src/widl.h
@@ -46,8 +46,6 @@ extern int do_idfile; extern int do_dlldata; extern int old_names; -extern int win32_packing; -extern int win64_packing; extern int winrt_mode; extern int use_abi_namespace; @@ -69,6 +67,7 @@ extern char *regscript_token; extern const char *prefix_client; extern const char *prefix_server; +extern unsigned int packing; extern unsigned int pointer_size; extern time_t now;
diff --git a/mingw-w64-tools/widl/tools.h b/mingw-w64-tools/widl/tools.h index 7f99205..5372b5b 100644 --- a/mingw-w64-tools/widl/tools.h +++ b/mingw-w64-tools/widl/tools.h
@@ -90,7 +90,7 @@ struct target { - enum { CPU_i386, CPU_x86_64, CPU_ARM, CPU_ARM64 } cpu; + enum { CPU_i386, CPU_x86_64, CPU_ARM, CPU_ARM64, CPU_ARM64EC } cpu; enum { @@ -481,6 +481,7 @@ [CPU_x86_64] = 8, [CPU_ARM] = 4, [CPU_ARM64] = 8, + [CPU_ARM64EC] = 8, }; return sizes[target.cpu]; } @@ -500,6 +501,7 @@ if (size == 8) target->cpu = CPU_ARM64; break; case CPU_ARM64: + case CPU_ARM64EC: if (size == 4) target->cpu = CPU_ARM; break; } @@ -522,6 +524,7 @@ { "x86_64", CPU_x86_64 }, { "amd64", CPU_x86_64 }, { "aarch64", CPU_ARM64 }, + { "arm64ec", CPU_ARM64EC }, { "arm64", CPU_ARM64 }, { "arm", CPU_ARM }, }; @@ -566,10 +569,11 @@ { static const char *cpu_names[] = { - [CPU_i386] = "i386", - [CPU_x86_64] = "x86_64", - [CPU_ARM] = "arm", - [CPU_ARM64] = "aarch64" + [CPU_i386] = "i386", + [CPU_x86_64] = "x86_64", + [CPU_ARM] = "arm", + [CPU_ARM64] = "aarch64", + [CPU_ARM64EC] = "arm64ec", }; if (!cpu_names[target.cpu]) return ""; @@ -769,7 +773,7 @@ char *start, *end; int i; -#define OPT_ERR(fmt) { callback( '?', strmake( fmt, argv[1] )); continue; } +#define OPT_ERR(fmt) { callback( '?', strmake( fmt, argv[i] )); continue; } for (i = 1; i < argc; i++) {