diff --git a/reactos/tools/widl/parser.l b/reactos/tools/widl/parser.l index d2fd3c1248c..98f17af45fb 100644 --- a/reactos/tools/widl/parser.l +++ b/reactos/tools/widl/parser.l @@ -299,6 +299,7 @@ static const struct keyword attr_keywords[] = {"single", tSINGLE}, {"size_is", tSIZEIS}, {"source", tSOURCE}, + {"strict_context_handle", tSTRICTCONTEXTHANDLE}, {"string", tSTRING}, {"switch_is", tSWITCHIS}, {"switch_type", tSWITCHTYPE}, diff --git a/reactos/tools/widl/parser.tab.c b/reactos/tools/widl/parser.tab.c index 4c5f1c2d1a8..9cf10d2a0e7 100644 --- a/reactos/tools/widl/parser.tab.c +++ b/reactos/tools/widl/parser.tab.c @@ -175,28 +175,29 @@ tSMALL = 366, tSOURCE = 367, tSTDCALL = 368, - tSTRING = 369, - tSTRUCT = 370, - tSWITCH = 371, - tSWITCHIS = 372, - tSWITCHTYPE = 373, - tTRANSMITAS = 374, - tTRUE = 375, - tTYPEDEF = 376, - tUNION = 377, - tUNIQUE = 378, - tUNSIGNED = 379, - tUUID = 380, - tV1ENUM = 381, - tVARARG = 382, - tVERSION = 383, - tVOID = 384, - tWCHAR = 385, - tWIREMARSHAL = 386, - CAST = 387, - PPTR = 388, - NEG = 389, - ADDRESSOF = 390 + tSTRICTCONTEXTHANDLE = 369, + tSTRING = 370, + tSTRUCT = 371, + tSWITCH = 372, + tSWITCHIS = 373, + tSWITCHTYPE = 374, + tTRANSMITAS = 375, + tTRUE = 376, + tTYPEDEF = 377, + tUNION = 378, + tUNIQUE = 379, + tUNSIGNED = 380, + tUUID = 381, + tV1ENUM = 382, + tVARARG = 383, + tVERSION = 384, + tVOID = 385, + tWCHAR = 386, + tWIREMARSHAL = 387, + CAST = 388, + PPTR = 389, + NEG = 390, + ADDRESSOF = 391 }; #endif /* Tokens. */ @@ -311,28 +312,29 @@ #define tSMALL 366 #define tSOURCE 367 #define tSTDCALL 368 -#define tSTRING 369 -#define tSTRUCT 370 -#define tSWITCH 371 -#define tSWITCHIS 372 -#define tSWITCHTYPE 373 -#define tTRANSMITAS 374 -#define tTRUE 375 -#define tTYPEDEF 376 -#define tUNION 377 -#define tUNIQUE 378 -#define tUNSIGNED 379 -#define tUUID 380 -#define tV1ENUM 381 -#define tVARARG 382 -#define tVERSION 383 -#define tVOID 384 -#define tWCHAR 385 -#define tWIREMARSHAL 386 -#define CAST 387 -#define PPTR 388 -#define NEG 389 -#define ADDRESSOF 390 +#define tSTRICTCONTEXTHANDLE 369 +#define tSTRING 370 +#define tSTRUCT 371 +#define tSWITCH 372 +#define tSWITCHIS 373 +#define tSWITCHTYPE 374 +#define tTRANSMITAS 375 +#define tTRUE 376 +#define tTYPEDEF 377 +#define tUNION 378 +#define tUNIQUE 379 +#define tUNSIGNED 380 +#define tUUID 381 +#define tV1ENUM 382 +#define tVARARG 383 +#define tVERSION 384 +#define tVOID 385 +#define tWCHAR 386 +#define tWIREMARSHAL 387 +#define CAST 388 +#define PPTR 389 +#define NEG 390 +#define ADDRESSOF 391 @@ -518,7 +520,7 @@ typedef union YYSTYPE { interface_info_t ifinfo; } YYSTYPE; /* Line 196 of yacc.c. */ -#line 522 "parser.tab.c" +#line 524 "parser.tab.c" # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 @@ -530,7 +532,7 @@ typedef union YYSTYPE { /* Line 219 of yacc.c. */ -#line 534 "parser.tab.c" +#line 536 "parser.tab.c" #if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) # define YYSIZE_T __SIZE_TYPE__ @@ -681,20 +683,20 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 3 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 1065 +#define YYLAST 1019 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 155 +#define YYNTOKENS 156 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 76 /* YYNRULES -- Number of rules. */ -#define YYNRULES 271 +#define YYNRULES 272 /* YYNRULES -- Number of states. */ -#define YYNSTATES 499 +#define YYNSTATES 500 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 390 +#define YYMAXUTOK 391 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -705,16 +707,16 @@ static const unsigned char yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 136, 2, - 147, 148, 139, 138, 132, 137, 154, 140, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 134, 146, - 2, 153, 2, 133, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 137, 2, + 148, 149, 140, 139, 133, 138, 155, 141, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 135, 147, + 2, 154, 2, 134, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 151, 2, 152, 2, 2, 2, 2, 2, 2, + 2, 152, 2, 153, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 149, 135, 150, 141, 2, 2, 2, + 2, 2, 2, 150, 136, 151, 142, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -740,8 +742,8 @@ static const unsigned char yytranslate[] = 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 142, 143, 144, - 145 + 125, 126, 127, 128, 129, 130, 131, 132, 143, 144, + 145, 146 }; #if YYDEBUG @@ -761,144 +763,145 @@ static const unsigned short int yyprhs[] = 279, 284, 289, 291, 296, 298, 303, 305, 311, 313, 315, 320, 322, 324, 326, 328, 330, 332, 334, 336, 338, 343, 345, 347, 349, 351, 358, 360, 362, 364, - 366, 371, 373, 375, 380, 385, 390, 395, 397, 399, - 404, 409, 411, 413, 415, 416, 418, 419, 422, 427, - 431, 437, 438, 441, 443, 445, 449, 453, 455, 461, - 463, 467, 468, 470, 472, 474, 476, 478, 480, 482, - 488, 492, 496, 500, 504, 508, 512, 516, 520, 523, - 526, 529, 532, 537, 542, 546, 548, 552, 554, 559, - 560, 563, 566, 570, 573, 575, 580, 588, 589, 591, - 592, 594, 596, 598, 600, 602, 604, 606, 609, 612, - 614, 616, 618, 620, 622, 624, 626, 627, 629, 631, - 634, 636, 639, 642, 644, 646, 649, 652, 655, 660, - 661, 664, 667, 670, 673, 676, 679, 683, 686, 690, - 696, 702, 703, 706, 709, 712, 715, 721, 729, 731, - 734, 737, 740, 743, 746, 751, 754, 757, 759, 761, - 765, 767, 771, 773, 775, 777, 783, 785, 787, 789, - 792, 794, 797, 799, 802, 804, 807, 812, 817, 823, - 834, 836 + 366, 371, 373, 375, 377, 382, 387, 392, 397, 399, + 401, 406, 411, 413, 415, 417, 418, 420, 421, 424, + 429, 433, 439, 440, 443, 445, 447, 451, 455, 457, + 463, 465, 469, 470, 472, 474, 476, 478, 480, 482, + 484, 490, 494, 498, 502, 506, 510, 514, 518, 522, + 525, 528, 531, 534, 539, 544, 548, 550, 554, 556, + 561, 562, 565, 568, 572, 575, 577, 582, 590, 591, + 593, 594, 596, 598, 600, 602, 604, 606, 608, 611, + 614, 616, 618, 620, 622, 624, 626, 628, 629, 631, + 633, 636, 638, 641, 644, 646, 648, 651, 654, 657, + 662, 663, 666, 669, 672, 675, 678, 681, 685, 688, + 692, 698, 704, 705, 708, 711, 714, 717, 723, 731, + 733, 736, 739, 742, 745, 748, 753, 756, 759, 761, + 763, 767, 769, 773, 775, 777, 779, 785, 787, 789, + 791, 794, 796, 799, 801, 804, 806, 809, 814, 819, + 825, 836, 838 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const short int yyrhs[] = { - 156, 0, -1, 157, -1, -1, 157, 218, -1, 157, - 217, -1, 157, 204, 146, -1, 157, 206, -1, 157, - 221, -1, 157, 167, -1, 157, 160, -1, -1, 158, - 218, -1, 158, 217, -1, 158, 204, 146, -1, 158, - 206, -1, 158, 221, -1, 158, 160, -1, 158, 164, - -1, -1, 159, 197, 146, -1, 159, 160, -1, 146, - -1, 183, 146, -1, 161, -1, 187, 146, -1, 193, - 146, -1, 163, -1, 226, 146, -1, 228, 146, -1, - 229, 146, -1, 37, 147, 8, 148, -1, 69, 8, - 146, -1, 162, 158, 10, -1, 70, 147, 8, 148, - -1, 79, 3, -1, 175, 165, 149, -1, 166, 158, - 150, -1, -1, 170, -1, 129, -1, 171, -1, 170, - 132, 171, -1, 169, -1, 175, 227, 223, 172, -1, - 227, 223, 172, -1, 175, 227, 223, 147, 168, 148, - -1, 227, 223, 147, 168, 148, -1, -1, 151, 173, - 152, -1, 151, 139, 152, -1, 189, -1, 173, 132, - 190, -1, 173, 152, 151, 190, -1, -1, 175, -1, - 151, 176, 152, -1, 178, -1, 176, 132, 178, -1, - 176, 152, 151, 178, -1, 8, -1, 177, 132, 8, + 157, 0, -1, 158, -1, -1, 158, 219, -1, 158, + 218, -1, 158, 205, 147, -1, 158, 207, -1, 158, + 222, -1, 158, 168, -1, 158, 161, -1, -1, 159, + 219, -1, 159, 218, -1, 159, 205, 147, -1, 159, + 207, -1, 159, 222, -1, 159, 161, -1, 159, 165, + -1, -1, 160, 198, 147, -1, 160, 161, -1, 147, + -1, 184, 147, -1, 162, -1, 188, 147, -1, 194, + 147, -1, 164, -1, 227, 147, -1, 229, 147, -1, + 230, 147, -1, 37, 148, 8, 149, -1, 69, 8, + 147, -1, 163, 159, 10, -1, 70, 148, 8, 149, + -1, 79, 3, -1, 176, 166, 150, -1, 167, 159, + 151, -1, -1, 171, -1, 130, -1, 172, -1, 171, + 133, 172, -1, 170, -1, 176, 228, 224, 173, -1, + 228, 224, 173, -1, 176, 228, 224, 148, 169, 149, + -1, 228, 224, 148, 169, 149, -1, -1, 152, 174, + 153, -1, 152, 140, 153, -1, 190, -1, 174, 133, + 191, -1, 174, 153, 152, 191, -1, -1, 176, -1, + 152, 177, 153, -1, 179, -1, 177, 133, 179, -1, + 177, 153, 152, 179, -1, 8, -1, 178, 133, 8, -1, -1, 13, -1, 15, -1, 16, -1, 18, -1, - 19, -1, 24, 147, 200, 148, -1, 26, 147, 191, - 148, -1, 33, -1, 34, -1, 35, -1, 36, -1, - 38, -1, 39, -1, 40, 147, 192, 148, -1, 40, - 147, 8, 148, -1, 41, -1, 42, -1, 44, 147, - 8, 148, -1, 46, -1, 47, 147, 177, 148, -1, - 48, 147, 8, 148, -1, 48, 147, 192, 148, -1, - 51, -1, 55, -1, 57, 147, 192, 148, -1, 58, - 147, 8, 148, -1, 59, 147, 8, 148, -1, 60, - 147, 192, 148, -1, 61, 147, 8, 148, -1, 62, - -1, 64, 147, 192, 148, -1, 65, -1, 66, 147, - 190, 148, -1, 67, -1, 68, 147, 56, 3, 148, - -1, 71, -1, 73, -1, 78, 147, 188, 148, -1, + 19, -1, 24, 148, 201, 149, -1, 26, 148, 192, + 149, -1, 33, -1, 34, -1, 35, -1, 36, -1, + 38, -1, 39, -1, 40, 148, 193, 149, -1, 40, + 148, 8, 149, -1, 41, -1, 42, -1, 44, 148, + 8, 149, -1, 46, -1, 47, 148, 178, 149, -1, + 48, 148, 8, 149, -1, 48, 148, 193, 149, -1, + 51, -1, 55, -1, 57, 148, 193, 149, -1, 58, + 148, 8, 149, -1, 59, 148, 8, 149, -1, 60, + 148, 193, 149, -1, 61, 148, 8, 149, -1, 62, + -1, 64, 148, 193, 149, -1, 65, -1, 66, 148, + 191, 149, -1, 67, -1, 68, 148, 56, 3, 149, + -1, 71, -1, 73, -1, 78, 148, 189, 149, -1, 80, -1, 84, -1, 85, -1, 86, -1, 87, -1, - 88, -1, 89, -1, 90, -1, 91, -1, 92, 147, - 225, 148, -1, 94, -1, 95, -1, 96, -1, 98, - -1, 99, 147, 192, 132, 192, 148, -1, 100, -1, - 102, -1, 103, -1, 104, -1, 109, 147, 188, 148, - -1, 112, -1, 114, -1, 117, 147, 190, 148, -1, - 118, 147, 227, 148, -1, 119, 147, 227, 148, -1, - 125, 147, 179, 148, -1, 126, -1, 127, -1, 128, - 147, 230, 148, -1, 131, 147, 227, 148, -1, 225, - -1, 9, -1, 8, -1, -1, 113, -1, -1, 181, - 182, -1, 26, 190, 134, 195, -1, 38, 134, 195, - -1, 32, 227, 200, 153, 192, -1, -1, 185, 132, - -1, 185, -1, 186, -1, 185, 132, 186, -1, 200, - 153, 192, -1, 200, -1, 49, 199, 149, 184, 150, - -1, 189, -1, 188, 132, 189, -1, -1, 190, -1, - 5, -1, 6, -1, 7, -1, 53, -1, 120, -1, - 3, -1, 190, 133, 190, 134, 190, -1, 190, 135, - 190, -1, 190, 136, 190, -1, 190, 138, 190, -1, - 190, 137, 190, -1, 190, 139, 190, -1, 190, 140, - 190, -1, 190, 11, 190, -1, 190, 12, 190, -1, - 141, 190, -1, 137, 190, -1, 136, 190, -1, 139, - 190, -1, 147, 227, 148, 190, -1, 110, 147, 227, - 148, -1, 147, 190, 148, -1, 192, -1, 191, 132, - 192, -1, 190, -1, 52, 32, 227, 200, -1, -1, - 194, 195, -1, 196, 146, -1, 174, 229, 146, -1, - 175, 146, -1, 146, -1, 174, 227, 223, 172, -1, - 174, 227, 180, 223, 147, 168, 148, -1, -1, 200, - -1, -1, 3, -1, 4, -1, 3, -1, 4, -1, - 22, -1, 130, -1, 203, -1, 107, 203, -1, 124, - 203, -1, 124, -1, 54, -1, 108, -1, 45, -1, - 20, -1, 50, -1, 56, -1, -1, 74, -1, 74, - -1, 106, 202, -1, 111, -1, 81, 202, -1, 63, - 202, -1, 75, -1, 28, -1, 29, 3, -1, 29, - 4, -1, 175, 204, -1, 205, 149, 207, 150, -1, - -1, 207, 208, -1, 174, 218, -1, 43, 3, -1, - 43, 4, -1, 175, 209, -1, 93, 134, -1, 211, - 196, 146, -1, 82, 134, -1, 212, 197, 146, -1, - 210, 149, 211, 212, 150, -1, 210, 149, 215, 146, - 150, -1, -1, 134, 4, -1, 76, 3, -1, 76, - 4, -1, 175, 215, -1, 216, 214, 149, 159, 150, - -1, 216, 134, 3, 149, 163, 159, 150, -1, 213, - -1, 215, 146, -1, 209, 146, -1, 83, 3, -1, - 83, 4, -1, 175, 219, -1, 220, 149, 159, 150, - -1, 139, 223, -1, 32, 222, -1, 200, -1, 222, - -1, 147, 223, 148, -1, 223, -1, 224, 132, 223, - -1, 101, -1, 123, -1, 97, -1, 115, 199, 149, - 194, 150, -1, 129, -1, 4, -1, 201, -1, 32, - 227, -1, 187, -1, 49, 3, -1, 226, -1, 115, - 3, -1, 229, -1, 122, 3, -1, 105, 147, 227, - 148, -1, 121, 174, 227, 224, -1, 122, 199, 149, - 194, 150, -1, 122, 199, 116, 147, 196, 148, 198, - 149, 181, 150, -1, 5, -1, 5, 154, 5, -1 + 88, -1, 89, -1, 90, -1, 91, -1, 92, 148, + 226, 149, -1, 94, -1, 95, -1, 96, -1, 98, + -1, 99, 148, 193, 133, 193, 149, -1, 100, -1, + 102, -1, 103, -1, 104, -1, 109, 148, 189, 149, + -1, 112, -1, 114, -1, 115, -1, 118, 148, 191, + 149, -1, 119, 148, 228, 149, -1, 120, 148, 228, + 149, -1, 126, 148, 180, 149, -1, 127, -1, 128, + -1, 129, 148, 231, 149, -1, 132, 148, 228, 149, + -1, 226, -1, 9, -1, 8, -1, -1, 113, -1, + -1, 182, 183, -1, 26, 191, 135, 196, -1, 38, + 135, 196, -1, 32, 228, 201, 154, 193, -1, -1, + 186, 133, -1, 186, -1, 187, -1, 186, 133, 187, + -1, 201, 154, 193, -1, 201, -1, 49, 200, 150, + 185, 151, -1, 190, -1, 189, 133, 190, -1, -1, + 191, -1, 5, -1, 6, -1, 7, -1, 53, -1, + 121, -1, 3, -1, 191, 134, 191, 135, 191, -1, + 191, 136, 191, -1, 191, 137, 191, -1, 191, 139, + 191, -1, 191, 138, 191, -1, 191, 140, 191, -1, + 191, 141, 191, -1, 191, 11, 191, -1, 191, 12, + 191, -1, 142, 191, -1, 138, 191, -1, 137, 191, + -1, 140, 191, -1, 148, 228, 149, 191, -1, 110, + 148, 228, 149, -1, 148, 191, 149, -1, 193, -1, + 192, 133, 193, -1, 191, -1, 52, 32, 228, 201, + -1, -1, 195, 196, -1, 197, 147, -1, 175, 230, + 147, -1, 176, 147, -1, 147, -1, 175, 228, 224, + 173, -1, 175, 228, 181, 224, 148, 169, 149, -1, + -1, 201, -1, -1, 3, -1, 4, -1, 3, -1, + 4, -1, 22, -1, 131, -1, 204, -1, 107, 204, + -1, 125, 204, -1, 125, -1, 54, -1, 108, -1, + 45, -1, 20, -1, 50, -1, 56, -1, -1, 74, + -1, 74, -1, 106, 203, -1, 111, -1, 81, 203, + -1, 63, 203, -1, 75, -1, 28, -1, 29, 3, + -1, 29, 4, -1, 176, 205, -1, 206, 150, 208, + 151, -1, -1, 208, 209, -1, 175, 219, -1, 43, + 3, -1, 43, 4, -1, 176, 210, -1, 93, 135, + -1, 212, 197, 147, -1, 82, 135, -1, 213, 198, + 147, -1, 211, 150, 212, 213, 151, -1, 211, 150, + 216, 147, 151, -1, -1, 135, 4, -1, 76, 3, + -1, 76, 4, -1, 176, 216, -1, 217, 215, 150, + 160, 151, -1, 217, 135, 3, 150, 164, 160, 151, + -1, 214, -1, 216, 147, -1, 210, 147, -1, 83, + 3, -1, 83, 4, -1, 176, 220, -1, 221, 150, + 160, 151, -1, 140, 224, -1, 32, 223, -1, 201, + -1, 223, -1, 148, 224, 149, -1, 224, -1, 225, + 133, 224, -1, 101, -1, 124, -1, 97, -1, 116, + 200, 150, 195, 151, -1, 130, -1, 4, -1, 202, + -1, 32, 228, -1, 188, -1, 49, 3, -1, 227, + -1, 116, 3, -1, 230, -1, 123, 3, -1, 105, + 148, 228, 149, -1, 122, 175, 228, 225, -1, 123, + 200, 150, 195, 151, -1, 123, 200, 117, 148, 197, + 149, 199, 150, 182, 151, -1, 5, -1, 5, 155, + 5, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const unsigned short int yyrline[] = { - 0, 285, 285, 294, 295, 296, 297, 301, 306, 307, - 308, 311, 312, 313, 314, 315, 319, 320, 321, 324, - 325, 326, 329, 330, 331, 332, 337, 338, 339, 344, - 345, 352, 354, 357, 360, 363, 365, 370, 373, 374, - 377, 380, 381, 382, 386, 391, 395, 401, 408, 409, - 410, 413, 414, 415, 418, 419, 423, 429, 430, 431, - 434, 435, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, - 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, - 476, 477, 478, 479, 480, 481, 482, 483, 484, 485, - 486, 487, 488, 489, 490, 491, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, - 508, 509, 513, 514, 519, 520, 523, 524, 527, 531, - 537, 543, 544, 545, 548, 552, 561, 565, 570, 579, - 580, 593, 594, 597, 598, 599, 600, 601, 602, 603, - 604, 605, 606, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 617, 618, 621, 622, 625, 631, 636, - 637, 640, 641, 642, 643, 646, 654, 666, 667, 670, - 671, 672, 675, 677, 680, 681, 682, 683, 684, 700, - 701, 702, 703, 704, 705, 706, 709, 710, 713, 714, - 715, 716, 717, 718, 719, 722, 723, 729, 738, 744, - 745, 749, 752, 753, 756, 768, 769, 772, 773, 776, - 785, 794, 795, 798, 799, 802, 813, 825, 836, 840, - 841, 844, 845, 848, 853, 859, 860, 863, 864, 865, - 869, 870, 874, 875, 876, 879, 890, 891, 892, 893, - 894, 895, 896, 897, 898, 899, 900, 903, 908, 913, - 930, 931 + 0, 286, 286, 295, 296, 297, 298, 302, 307, 308, + 309, 312, 313, 314, 315, 316, 320, 321, 322, 325, + 326, 327, 330, 331, 332, 333, 338, 339, 340, 345, + 346, 353, 355, 358, 361, 364, 366, 371, 374, 375, + 378, 381, 382, 383, 387, 392, 396, 402, 409, 410, + 411, 414, 415, 416, 419, 420, 424, 430, 431, 432, + 435, 436, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 478, 479, 480, 481, 482, 483, 484, 485, 486, + 487, 488, 489, 490, 491, 492, 495, 496, 497, 498, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, + 509, 510, 511, 515, 516, 521, 522, 525, 526, 529, + 533, 539, 545, 546, 547, 550, 554, 563, 567, 572, + 581, 582, 595, 596, 599, 600, 601, 602, 603, 604, + 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, + 615, 616, 617, 618, 619, 620, 623, 624, 627, 633, + 638, 639, 642, 643, 644, 645, 648, 656, 668, 669, + 672, 673, 674, 677, 679, 682, 683, 684, 685, 686, + 702, 703, 704, 705, 706, 707, 708, 711, 712, 715, + 716, 717, 718, 719, 720, 721, 724, 725, 731, 740, + 746, 747, 751, 754, 755, 758, 770, 771, 774, 775, + 778, 787, 796, 797, 800, 801, 804, 815, 827, 838, + 842, 843, 846, 847, 850, 855, 861, 862, 865, 866, + 867, 871, 872, 876, 877, 878, 881, 892, 893, 894, + 895, 896, 897, 898, 899, 900, 901, 902, 905, 910, + 915, 932, 933 }; #endif @@ -928,19 +931,19 @@ static const char *const yytname[] = "tPROPGET", "tPROPPUT", "tPROPPUTREF", "tPTR", "tPUBLIC", "tRANGE", "tREADONLY", "tREF", "tREQUESTEDIT", "tRESTRICTED", "tRETVAL", "tSAFEARRAY", "tSHORT", "tSIGNED", "tSINGLE", "tSIZEIS", "tSIZEOF", - "tSMALL", "tSOURCE", "tSTDCALL", "tSTRING", "tSTRUCT", "tSWITCH", - "tSWITCHIS", "tSWITCHTYPE", "tTRANSMITAS", "tTRUE", "tTYPEDEF", "tUNION", - "tUNIQUE", "tUNSIGNED", "tUUID", "tV1ENUM", "tVARARG", "tVERSION", - "tVOID", "tWCHAR", "tWIREMARSHAL", "','", "'?'", "':'", "'|'", "'&'", - "'-'", "'+'", "'*'", "'/'", "'~'", "CAST", "PPTR", "NEG", "ADDRESSOF", - "';'", "'('", "')'", "'{'", "'}'", "'['", "']'", "'='", "'.'", "$accept", - "input", "gbl_statements", "imp_statements", "int_statements", - "statement", "cppquote", "import_start", "import", "importlib", - "libraryhdr", "library_start", "librarydef", "m_args", "no_args", "args", - "arg", "array", "array_list", "m_attributes", "attributes", - "attrib_list", "str_list", "attribute", "uuid_string", "callconv", - "cases", "case", "constdef", "enums", "enum_list", "enum", "enumdef", - "m_exprs", "m_expr", "expr", "expr_list_const", "expr_const", + "tSMALL", "tSOURCE", "tSTDCALL", "tSTRICTCONTEXTHANDLE", "tSTRING", + "tSTRUCT", "tSWITCH", "tSWITCHIS", "tSWITCHTYPE", "tTRANSMITAS", "tTRUE", + "tTYPEDEF", "tUNION", "tUNIQUE", "tUNSIGNED", "tUUID", "tV1ENUM", + "tVARARG", "tVERSION", "tVOID", "tWCHAR", "tWIREMARSHAL", "','", "'?'", + "':'", "'|'", "'&'", "'-'", "'+'", "'*'", "'/'", "'~'", "CAST", "PPTR", + "NEG", "ADDRESSOF", "';'", "'('", "')'", "'{'", "'}'", "'['", "']'", + "'='", "'.'", "$accept", "input", "gbl_statements", "imp_statements", + "int_statements", "statement", "cppquote", "import_start", "import", + "importlib", "libraryhdr", "library_start", "librarydef", "m_args", + "no_args", "args", "arg", "array", "array_list", "m_attributes", + "attributes", "attrib_list", "str_list", "attribute", "uuid_string", + "callconv", "cases", "case", "constdef", "enums", "enum_list", "enum", + "enumdef", "m_exprs", "m_expr", "expr", "expr_list_const", "expr_const", "externdef", "fields", "field", "s_field", "funcdef", "m_ident", "t_ident", "ident", "base_type", "m_int", "int_std", "coclass", "coclasshdr", "coclassdef", "coclass_ints", "coclass_int", @@ -970,43 +973,43 @@ static const unsigned short int yytoknum[] = 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 44, 63, 58, 124, 38, 45, 43, 42, - 47, 126, 387, 388, 389, 390, 59, 40, 41, 123, - 125, 91, 93, 61, 46 + 385, 386, 387, 44, 63, 58, 124, 38, 45, 43, + 42, 47, 126, 388, 389, 390, 391, 59, 40, 41, + 123, 125, 91, 93, 61, 46 }; # endif /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const unsigned char yyr1[] = { - 0, 155, 156, 157, 157, 157, 157, 157, 157, 157, - 157, 158, 158, 158, 158, 158, 158, 158, 158, 159, - 159, 159, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 168, - 169, 170, 170, 170, 171, 171, 171, 171, 172, 172, - 172, 173, 173, 173, 174, 174, 175, 176, 176, 176, - 177, 177, 178, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, - 178, 178, 179, 179, 180, 180, 181, 181, 182, 182, - 183, 184, 184, 184, 185, 185, 186, 186, 187, 188, - 188, 189, 189, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 190, 190, 191, 191, 192, 193, 194, - 194, 195, 195, 195, 195, 196, 197, 198, 198, 199, - 199, 199, 200, 200, 201, 201, 201, 201, 201, 201, - 201, 201, 201, 201, 201, 201, 202, 202, 203, 203, - 203, 203, 203, 203, 203, 204, 204, 205, 206, 207, - 207, 208, 209, 209, 210, 211, 211, 212, 212, 213, - 213, 214, 214, 215, 215, 216, 217, 217, 217, 218, - 218, 219, 219, 220, 221, 222, 222, 223, 223, 223, - 224, 224, 225, 225, 225, 226, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 228, 229, 229, - 230, 230 + 0, 156, 157, 158, 158, 158, 158, 158, 158, 158, + 158, 159, 159, 159, 159, 159, 159, 159, 159, 160, + 160, 160, 161, 161, 161, 161, 161, 161, 161, 161, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 169, + 170, 171, 171, 171, 172, 172, 172, 172, 173, 173, + 173, 174, 174, 174, 175, 175, 176, 177, 177, 177, + 178, 178, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, + 179, 179, 179, 180, 180, 181, 181, 182, 182, 183, + 183, 184, 185, 185, 185, 186, 186, 187, 187, 188, + 189, 189, 190, 190, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 191, 191, 192, 192, 193, 194, + 195, 195, 196, 196, 196, 196, 197, 198, 199, 199, + 200, 200, 200, 201, 201, 202, 202, 202, 202, 202, + 202, 202, 202, 202, 202, 202, 202, 203, 203, 204, + 204, 204, 204, 204, 204, 204, 205, 205, 206, 207, + 208, 208, 209, 210, 210, 211, 212, 212, 213, 213, + 214, 214, 215, 215, 216, 216, 217, 218, 218, 218, + 219, 219, 220, 220, 221, 222, 223, 223, 224, 224, + 224, 225, 225, 226, 226, 226, 227, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 229, 230, + 230, 231, 231 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -1024,22 +1027,22 @@ static const unsigned char yyr2[] = 4, 4, 1, 4, 1, 4, 1, 5, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 1, 6, 1, 1, 1, 1, - 4, 1, 1, 4, 4, 4, 4, 1, 1, 4, - 4, 1, 1, 1, 0, 1, 0, 2, 4, 3, - 5, 0, 2, 1, 1, 3, 3, 1, 5, 1, - 3, 0, 1, 1, 1, 1, 1, 1, 1, 5, - 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, - 2, 2, 4, 4, 3, 1, 3, 1, 4, 0, - 2, 2, 3, 2, 1, 4, 7, 0, 1, 0, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, - 1, 1, 1, 1, 1, 1, 0, 1, 1, 2, - 1, 2, 2, 1, 1, 2, 2, 2, 4, 0, - 2, 2, 2, 2, 2, 2, 3, 2, 3, 5, - 5, 0, 2, 2, 2, 2, 5, 7, 1, 2, - 2, 2, 2, 2, 4, 2, 2, 1, 1, 3, - 1, 3, 1, 1, 1, 5, 1, 1, 1, 2, - 1, 2, 1, 2, 1, 2, 4, 4, 5, 10, - 1, 3 + 4, 1, 1, 1, 4, 4, 4, 4, 1, 1, + 4, 4, 1, 1, 1, 0, 1, 0, 2, 4, + 3, 5, 0, 2, 1, 1, 3, 3, 1, 5, + 1, 3, 0, 1, 1, 1, 1, 1, 1, 1, + 5, 3, 3, 3, 3, 3, 3, 3, 3, 2, + 2, 2, 2, 4, 4, 3, 1, 3, 1, 4, + 0, 2, 2, 3, 2, 1, 4, 7, 0, 1, + 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, + 2, 1, 2, 2, 1, 1, 2, 2, 2, 4, + 0, 2, 2, 2, 2, 2, 2, 3, 2, 3, + 5, 5, 0, 2, 2, 2, 2, 5, 7, 1, + 2, 2, 2, 2, 2, 4, 2, 2, 1, 1, + 3, 1, 3, 1, 1, 1, 5, 1, 1, 1, + 2, 1, 2, 1, 2, 1, 2, 4, 4, 5, + 10, 1, 3 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -1047,422 +1050,412 @@ static const unsigned char yyr2[] = means the default is an error. */ static const unsigned short int yydefact[] = { - 3, 0, 2, 1, 0, 0, 0, 0, 189, 0, - 0, 0, 189, 54, 189, 22, 62, 10, 24, 11, + 3, 0, 2, 1, 0, 0, 0, 0, 190, 0, + 0, 0, 190, 54, 190, 22, 62, 10, 24, 11, 27, 11, 9, 0, 0, 0, 0, 0, 0, 7, - 0, 0, 238, 0, 231, 5, 4, 0, 8, 0, - 0, 0, 215, 216, 257, 203, 194, 214, 0, 202, - 189, 204, 200, 205, 206, 208, 213, 206, 0, 206, - 0, 201, 210, 189, 189, 199, 256, 195, 260, 258, - 196, 262, 0, 264, 0, 222, 223, 190, 191, 0, - 0, 0, 233, 234, 0, 0, 55, 0, 63, 64, + 0, 0, 239, 0, 232, 5, 4, 0, 8, 0, + 0, 0, 216, 217, 258, 204, 195, 215, 0, 203, + 190, 205, 201, 206, 207, 209, 214, 207, 0, 207, + 0, 202, 211, 190, 190, 200, 257, 196, 261, 259, + 197, 263, 0, 265, 0, 223, 224, 191, 192, 0, + 0, 0, 234, 235, 0, 0, 55, 0, 63, 64, 65, 66, 67, 0, 0, 70, 71, 72, 73, 74, 75, 0, 78, 79, 0, 81, 0, 0, 85, 86, 0, 0, 0, 0, 0, 92, 0, 94, 0, 96, 0, 98, 99, 0, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 0, 111, 112, 113, 254, 114, 0, - 116, 252, 117, 118, 119, 0, 121, 122, 0, 0, - 0, 253, 0, 127, 128, 0, 0, 0, 57, 131, - 0, 0, 0, 0, 0, 217, 224, 235, 243, 23, - 25, 26, 6, 219, 240, 0, 239, 0, 0, 19, - 28, 29, 30, 259, 261, 207, 212, 211, 0, 209, - 197, 263, 265, 198, 192, 193, 0, 0, 141, 0, - 32, 179, 0, 0, 179, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 151, - 0, 0, 151, 0, 0, 0, 0, 0, 0, 62, - 56, 33, 0, 17, 18, 0, 0, 15, 13, 12, - 16, 37, 35, 241, 242, 36, 54, 0, 54, 0, - 0, 232, 19, 54, 0, 0, 31, 0, 143, 144, - 147, 178, 54, 0, 0, 0, 247, 248, 250, 267, - 54, 54, 0, 158, 153, 154, 155, 156, 0, 157, - 0, 0, 0, 0, 0, 177, 0, 175, 0, 0, - 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 149, 152, 0, 0, 0, 0, - 0, 0, 133, 132, 0, 270, 0, 0, 58, 62, - 0, 14, 218, 0, 220, 225, 0, 0, 0, 54, - 0, 0, 54, 244, 21, 0, 0, 266, 140, 148, - 142, 0, 184, 255, 0, 55, 180, 0, 246, 245, - 0, 0, 0, 268, 68, 0, 170, 169, 171, 168, + 107, 108, 109, 0, 111, 112, 113, 255, 114, 0, + 116, 253, 117, 118, 119, 0, 121, 122, 123, 0, + 0, 0, 254, 0, 128, 129, 0, 0, 0, 57, + 132, 0, 0, 0, 0, 0, 218, 225, 236, 244, + 23, 25, 26, 6, 220, 241, 0, 240, 0, 0, + 19, 28, 29, 30, 260, 262, 208, 213, 212, 0, + 210, 198, 264, 266, 199, 193, 194, 0, 0, 142, + 0, 32, 180, 0, 0, 180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 69, 77, 76, 80, 0, 82, 83, 84, - 87, 88, 89, 90, 91, 93, 95, 0, 151, 100, - 110, 0, 120, 123, 124, 125, 126, 0, 129, 130, - 59, 0, 221, 227, 0, 226, 229, 0, 230, 19, - 236, 134, 20, 145, 146, 264, 183, 181, 249, 251, - 187, 0, 174, 0, 166, 167, 0, 160, 161, 163, - 162, 164, 165, 176, 61, 97, 150, 0, 271, 34, - 48, 228, 54, 135, 0, 182, 0, 188, 173, 172, - 0, 115, 151, 185, 237, 0, 136, 159, 0, 0, - 51, 38, 0, 50, 0, 49, 256, 0, 43, 39, - 41, 0, 0, 0, 0, 269, 137, 52, 0, 186, - 0, 0, 48, 0, 54, 53, 42, 48, 38, 45, - 54, 139, 38, 44, 0, 138, 0, 47, 46 + 152, 0, 0, 152, 0, 0, 0, 0, 0, 0, + 62, 56, 33, 0, 17, 18, 0, 0, 15, 13, + 12, 16, 37, 35, 242, 243, 36, 54, 0, 54, + 0, 0, 233, 19, 54, 0, 0, 31, 0, 144, + 145, 148, 179, 54, 0, 0, 0, 248, 249, 251, + 268, 54, 54, 0, 159, 154, 155, 156, 157, 0, + 158, 0, 0, 0, 0, 0, 178, 0, 176, 0, + 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 150, 153, 0, 0, 0, + 0, 0, 0, 134, 133, 0, 271, 0, 0, 58, + 62, 0, 14, 219, 0, 221, 226, 0, 0, 0, + 54, 0, 0, 54, 245, 21, 0, 0, 267, 141, + 149, 143, 0, 185, 256, 0, 55, 181, 0, 247, + 246, 0, 0, 0, 269, 68, 0, 171, 170, 172, + 169, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 69, 77, 76, 80, 0, 82, 83, + 84, 87, 88, 89, 90, 91, 93, 95, 0, 152, + 100, 110, 0, 120, 124, 125, 126, 127, 0, 130, + 131, 59, 0, 222, 228, 0, 227, 230, 0, 231, + 19, 237, 135, 20, 146, 147, 265, 184, 182, 250, + 252, 188, 0, 175, 0, 167, 168, 0, 161, 162, + 164, 163, 165, 166, 177, 61, 97, 151, 0, 272, + 34, 48, 229, 54, 136, 0, 183, 0, 189, 174, + 173, 0, 115, 152, 186, 238, 0, 137, 160, 0, + 0, 51, 38, 0, 50, 0, 49, 257, 0, 43, + 39, 41, 0, 0, 0, 0, 270, 138, 52, 0, + 187, 0, 0, 48, 0, 54, 53, 42, 48, 38, + 45, 54, 140, 38, 44, 0, 139, 0, 47, 46 }; /* YYDEFGOTO[NTERM-NUM]. */ static const short int yydefgoto[] = { - -1, 1, 2, 160, 253, 334, 18, 19, 20, 234, - 164, 21, 22, 467, 468, 469, 470, 453, 459, 335, - 86, 157, 292, 158, 314, 444, 462, 476, 24, 257, - 258, 259, 68, 303, 304, 285, 286, 287, 26, 262, - 346, 347, 336, 446, 79, 266, 69, 186, 70, 165, - 28, 237, 246, 324, 30, 31, 248, 329, 32, 178, - 33, 34, 238, 239, 168, 37, 240, 267, 268, 269, - 159, 71, 472, 40, 73, 316 + -1, 1, 2, 161, 254, 335, 18, 19, 20, 235, + 165, 21, 22, 468, 469, 470, 471, 454, 460, 336, + 86, 158, 293, 159, 315, 445, 463, 477, 24, 258, + 259, 260, 68, 304, 305, 286, 287, 288, 26, 263, + 347, 348, 337, 447, 79, 267, 69, 187, 70, 166, + 28, 238, 247, 325, 30, 31, 249, 330, 32, 179, + 33, 34, 239, 240, 169, 37, 241, 268, 269, 270, + 160, 71, 473, 40, 73, 317 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -376 +#define YYPACT_NINF -446 static const short int yypact[] = { - -376, 24, 773, -376, 86, 684, -43, 190, 193, 79, - 109, 210, 193, -28, 193, -376, 934, -376, -376, -376, - -376, -376, -376, 27, -20, -14, -7, -5, 20, -376, - 14, 40, -376, 53, 0, -376, -376, 59, -376, 77, - 89, 92, -376, -376, -376, -376, -376, -376, 684, -376, - 213, -376, -376, -376, 178, -376, -376, 178, 108, 178, - -6, -376, -376, 226, 228, -6, -376, -376, -376, -376, - -376, -376, 237, -376, 251, -376, -376, -376, -376, 115, - 684, 122, -376, -376, 123, 684, -376, -91, -376, -376, - -376, -376, -376, 128, 132, -376, -376, -376, -376, -376, - -376, 136, -376, -376, 138, -376, 143, 145, -376, -376, - 146, 147, 148, 151, 152, -376, 153, -376, 154, -376, - 155, -376, -376, 158, -376, -376, -376, -376, -376, -376, - -376, -376, -376, 159, -376, -376, -376, -376, -376, 160, - -376, -376, -376, -376, -376, 161, -376, -376, 162, 163, - 164, -376, 165, -376, -376, 167, 169, -79, -376, -376, - 615, 731, 314, 239, 170, -376, -376, -376, -376, -376, - -376, -376, -376, -376, -376, -16, -376, 241, 171, -376, - -376, -376, -376, -376, 173, -376, -376, -376, 684, -376, - -376, 173, -85, -376, -376, -376, 175, 176, 237, 237, - -376, -376, 48, 179, -376, 237, 382, 243, 310, 321, - 450, 382, 322, 324, 382, 326, 382, 382, 280, 382, - -51, 382, 382, 382, 684, 684, 217, 334, 684, 934, - 195, -376, 194, -376, -376, 16, 198, -376, -376, -376, - -376, -376, -376, -376, -376, -376, 116, 214, -63, 206, - 205, -376, -376, 605, 216, 382, -376, 215, 234, -376, - 218, -376, -32, -15, 48, 48, -376, -376, -376, 240, - -28, -30, 221, -376, -376, -376, -376, -376, 229, -376, - 382, 382, 382, 382, 502, 17, -93, -376, 225, 227, - 230, -376, -83, 233, 235, 238, 244, 245, 246, 247, - 248, 67, 374, -47, -376, 17, 249, 259, -46, 222, - 254, 255, -376, -376, 257, 252, 261, 262, -376, 934, - 399, -376, -376, -10, -376, -376, 277, 684, 266, 131, - 263, 345, 786, -376, -376, 684, 270, -376, -376, -376, - 237, 382, -376, -376, 684, 272, -376, 273, -376, -376, - 285, 48, 286, -376, -376, 684, -376, -376, -376, -376, - 542, 288, 382, 382, 382, 382, 382, 382, 382, 382, - 382, 382, -376, -376, -376, -376, 412, -376, -376, -376, - -376, -376, -376, -376, -376, -376, -376, 289, 382, -376, - -376, 382, -376, -376, -376, -376, -376, 416, -376, -376, - -376, 290, -376, -376, 48, -376, -376, 295, -376, -376, - -376, 333, -376, -376, -376, 303, -376, -376, -376, -376, - 237, 291, -376, 382, -376, -376, 292, 9, 72, -3, - -3, 276, 276, -376, -376, -376, -376, 302, -376, -376, - 300, -376, 795, -376, 48, -376, 305, -376, -376, -376, - 382, -376, 509, -376, -376, 313, -376, 17, 137, -78, - -376, 293, -12, -376, 382, 311, -41, 315, -376, 329, - -376, 684, 48, 382, 330, -376, -376, 17, 382, -376, - 420, 48, -80, 561, -104, 17, -376, 23, 293, -376, - -104, -376, 293, -376, 318, -376, 320, -376, -376 + -446, 35, 724, -446, 46, 664, -106, 102, 146, 85, + 84, 186, 146, -18, 146, -446, 887, -446, -446, -446, + -446, -446, -446, 40, 0, 22, 25, 44, -10, -446, + 54, 37, -446, 80, 58, -446, -446, 82, -446, 92, + 94, 97, -446, -446, -446, -446, -446, -446, 664, -446, + 200, -446, -446, -446, 77, -446, -446, 77, 104, 77, + 205, -446, -446, 202, 214, 205, -446, -446, -446, -446, + -446, -446, 227, -446, 248, -446, -446, -446, -446, 110, + 664, 118, -446, -446, 117, 664, -446, -96, -446, -446, + -446, -446, -446, 121, 129, -446, -446, -446, -446, -446, + -446, 136, -446, -446, 154, -446, 156, 157, -446, -446, + 158, 159, 160, 162, 164, -446, 166, -446, 167, -446, + 170, -446, -446, 174, -446, -446, -446, -446, -446, -446, + -446, -446, -446, 175, -446, -446, -446, -446, -446, 177, + -446, -446, -446, -446, -446, 179, -446, -446, -446, 181, + 185, 191, -446, 192, -446, -446, 194, 195, -95, -446, + -446, 72, 674, 344, 231, 198, -446, -446, -446, -446, + -446, -446, -446, -446, -446, -446, -42, -446, 270, 199, + -446, -446, -446, -446, -446, 204, -446, -446, -446, 664, + -446, -446, 204, -93, -446, -446, -446, 196, 208, 227, + 227, -446, -446, 13, 210, -446, 227, 314, 243, 351, + 352, 292, 314, 353, 355, 314, 357, 314, 314, 310, + 314, -71, 314, 314, 314, 664, 664, 267, 363, 664, + 887, 217, -446, 222, -446, -446, 31, 224, -446, -446, + -446, -446, -446, -446, -446, -446, -446, 131, 237, -63, + 226, 225, -446, -446, 663, 228, 314, -446, 223, 249, + -446, 230, -446, -72, -7, 13, 13, -446, -446, -446, + 257, -18, -25, 244, -446, -446, -446, -446, -446, 246, + -446, 314, 314, 314, 314, 511, 367, -85, -446, 247, + 250, 251, -446, -61, 252, 254, 256, 258, 259, 260, + 261, 265, 282, 373, -56, -446, 367, 266, 262, -46, + 474, 268, 277, -446, -446, 278, 273, 287, 288, -446, + 887, 390, -446, -446, -14, -446, -446, 303, 664, 295, + 137, 294, 370, 697, -446, -446, 664, 300, -446, -446, + -446, 227, 314, -446, -446, 664, 308, -446, 311, -446, + -446, 301, 13, 318, -446, -446, 664, -446, -446, -446, + -446, 524, 320, 314, 314, 314, 314, 314, 314, 314, + 314, 314, 314, -446, -446, -446, -446, 449, -446, -446, + -446, -446, -446, -446, -446, -446, -446, -446, 323, 314, + -446, -446, 314, -446, -446, -446, -446, -446, 454, -446, + -446, -446, 324, -446, -446, 13, -446, -446, 327, -446, + -446, -446, 365, -446, -446, -446, 333, -446, -446, -446, + -446, 227, 332, -446, 314, -446, -446, 73, 59, 16, + -3, -3, 279, 279, -446, -446, -446, -446, 339, -446, + -446, 338, -446, 785, -446, 13, -446, 342, -446, -446, + -446, 314, -446, 458, -446, -446, 345, -446, 367, 105, + -86, -446, 281, -6, -446, 314, 346, -31, 348, -446, + 361, -446, 664, 13, 314, 364, -446, -446, 367, 314, + -446, 421, 13, -20, 542, -84, 367, -446, -17, 281, + -446, -84, -446, 281, -446, 360, -446, 371, -446, -446 }; /* YYPGOTO[NTERM-NUM]. */ static const short int yypgoto[] = { - -376, -376, -376, 451, -236, 11, -376, -376, 140, -376, - -376, -376, -376, -300, -376, -376, -1, -360, -376, -9, - -2, -376, -376, -211, -376, -376, -376, -376, -376, -376, - -376, 133, 3, 258, -365, -187, -376, -173, -376, 281, - -375, -208, 168, -376, 49, -70, -376, 74, 65, 25, - -376, 475, -376, -376, -13, -376, -376, -376, -376, -376, - -8, -376, 482, 4, -376, -376, 485, 236, -253, -376, - 269, 5, -4, -376, 1, -376 + -446, -446, -446, 479, -235, 9, -446, -446, 178, -446, + -446, -446, -446, -350, -446, -446, 32, -410, -446, -9, + -2, -446, -446, -207, -446, -446, -446, -446, -446, -446, + -446, 171, 3, 296, -367, -187, -446, -156, -446, 316, + -445, -206, 193, -446, 27, -70, -446, 87, 60, 12, + -446, 520, -446, -446, -13, -446, -446, -446, -446, -446, + -8, -446, 522, 4, -446, -446, 523, 274, -253, -446, + 309, 5, -4, -446, 1, -446 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If positive, shift that token. If negative, reduce the rule which number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -191 +#define YYTABLE_NINF -192 static const short int yytable[] = { - 23, 72, 196, 41, 85, 25, 36, 39, 362, 363, - 166, 349, 350, 17, 473, 167, 332, 263, 318, 326, - 362, 363, 47, 436, 3, 203, 474, 27, 362, 363, - 301, -190, 305, 7, 289, 305, 309, 294, 295, 371, - 328, 298, 342, 300, 183, 4, 137, 16, 307, 376, - 141, 194, 195, 229, 464, 372, 4, 54, 204, 7, - 11, 84, 352, 87, -190, 377, 11, 488, 55, 56, - 7, 452, 151, 230, 465, 57, 199, 247, 362, 363, - 263, 202, 338, 362, 363, 388, 388, 460, 16, 42, - 43, -40, 11, 356, 357, 358, 359, 360, 419, 163, - 59, 389, 392, 11, 74, 62, 162, -40, 400, 491, - 163, 80, 84, 87, 342, 495, 342, 81, 343, 16, - 353, 16, 489, 16, 264, 190, 169, 493, 260, 261, - 193, 187, 170, 189, 177, 272, 369, 370, 475, 171, - 273, 172, 274, 275, 276, 366, 367, 368, 369, 370, - 364, 440, 365, 366, 367, 368, 369, 370, 235, 235, - 174, 41, 41, 25, 25, 39, 39, 249, 414, 173, - 492, 233, 233, 442, 452, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 254, 236, 236, 264, 494, 175, - 277, 455, 496, 75, 76, 265, 77, 78, 433, 176, - 364, 305, 365, 366, 367, 368, 369, 370, 179, 367, - 368, 369, 370, 82, 83, 386, 184, 78, 437, 482, - 310, 311, 166, 180, 317, 312, 313, 167, 487, 191, - 78, 192, 78, 362, 363, 181, 449, 323, 182, 327, - 194, 195, 243, 244, 250, 251, 273, 278, 274, 275, - 276, 288, 185, 344, 41, 188, 25, 279, 39, 197, - 345, 327, 344, 457, 198, 305, 322, 16, 200, 345, - 260, 358, 201, 280, 281, 205, 282, 477, 283, 206, - 361, 406, 16, 207, 284, 208, 483, 362, 363, 463, - 209, 485, 210, 211, 212, 213, 277, 44, 214, 215, - 216, 217, 218, 362, 363, 219, 220, 221, 222, 223, - 224, 225, 226, 45, 227, 46, 228, 242, 290, 245, - 252, 47, -190, 404, 256, 48, 270, 402, 255, 291, - 296, 411, 297, 41, 299, 25, 302, 39, 49, 315, - 404, 320, 50, 51, 321, 415, 319, 52, 325, 53, - 447, 421, 330, 278, 331, 364, 54, 365, 366, 367, - 368, 369, 370, 279, 337, 339, 340, 55, 56, 354, - 393, 341, 351, 373, 57, 374, 355, 387, 375, 280, - 281, 378, 282, 379, 283, 273, 380, 274, 275, 276, - 284, 391, 381, 382, 383, 384, 385, 390, 58, 59, - 60, 61, 394, 395, 62, 396, 397, 401, 63, 398, - 399, 403, 405, 408, 10, 64, 412, 65, 416, 417, - 434, 438, 466, 67, 44, 364, 450, 365, 366, 367, - 368, 369, 370, 418, 420, 277, 423, 435, 439, 448, - 45, 441, 46, 41, 16, 25, 443, 39, 47, 445, - 451, 452, 48, 273, 456, 274, 275, 276, 293, 471, - 461, 480, 478, 479, 484, 49, 497, 481, 498, 50, - 51, 409, 161, 413, 52, 344, 53, 29, 471, 486, - 308, 344, 345, 54, 35, 271, 471, 38, 345, 306, - 471, 0, 278, 0, 55, 56, 0, 407, 0, 348, - 0, 57, 279, 277, 0, 273, 44, 274, 275, 276, - 0, 0, 273, 0, 274, 275, 276, 0, 280, 281, - 0, 282, 45, 283, 46, 58, 59, 60, 61, 284, - 47, 62, 0, 0, 48, 63, 0, 0, 0, 0, - 0, 0, 64, 0, 65, 0, 0, 49, 0, 66, - 67, 50, 51, 362, 363, 277, 52, 0, 53, 0, - 278, 0, 277, 0, 0, 54, 0, 0, 0, 0, - 279, 16, 362, 363, 0, 0, 55, 56, 0, 0, - 0, 0, 0, 57, 0, 0, 280, 281, 0, 282, - 0, 283, 0, 0, 0, 0, 0, 284, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 58, 59, 60, - 61, 0, 278, 62, 0, 0, 0, 63, 0, 278, - 0, 0, 279, 0, 64, 231, 65, 0, 0, 279, - 0, 66, 67, 0, 0, 0, 0, 5, 280, 281, - 0, 282, 6, 283, 4, 280, 281, 5, 458, 284, - 283, 0, 6, 0, 8, 0, 284, 9, 7, 0, + 23, 72, 197, 41, 85, 25, 36, 39, 363, 364, + 167, 17, 350, 351, 27, 168, 195, 196, 333, 327, + 474, 204, 437, 319, -191, 264, 137, 363, 364, 7, + 141, 302, 475, 306, 11, 3, 306, 310, 230, 84, + 492, 87, 74, 329, 184, 264, 496, 465, 372, 42, + 43, 248, 290, 152, 205, 295, 296, -191, 231, 299, + 4, 301, 11, 343, 373, 353, 308, 466, 16, 4, + 363, 364, 377, 490, 7, 343, 200, 389, 494, 344, + 16, 203, 232, 7, 363, 364, 461, 389, 378, 16, + 84, 87, 81, 390, 357, 358, 359, 360, 361, 420, + 339, 4, -40, 393, 5, 75, 76, 11, 274, 6, + 275, 276, 277, 401, 164, 7, 11, 80, -40, 163, + 191, 8, 343, 164, 9, 194, 354, 16, 489, 261, + 262, 493, 453, 265, 16, 453, 273, 370, 371, 495, + 174, 10, 233, 497, 188, 476, 190, 170, 11, 77, + 78, 186, 441, 265, 368, 369, 370, 371, 278, 236, + 236, 266, 41, 41, 25, 25, 39, 39, 250, 171, + 234, 234, 172, 237, 237, 443, 425, 426, 427, 428, + 429, 430, 431, 432, 433, 255, 415, 176, 12, 82, + 83, 173, 456, 178, 13, 14, 367, 368, 369, 370, + 371, 175, 306, 185, 78, 192, 78, 365, 451, 366, + 367, 368, 369, 370, 371, 279, 434, 193, 78, 15, + 483, 311, 312, 167, 16, 318, 280, 177, 168, 488, + 195, 196, 180, 47, 244, 245, 438, 450, 324, 181, + 328, 182, 281, 282, 183, 283, 274, 284, 275, 276, + 277, 289, 189, 285, 345, 41, 198, 25, 464, 39, + 199, 346, 328, 345, 458, 201, 306, 202, 54, 206, + 346, 261, 359, 251, 252, 313, 314, 207, 478, 55, + 56, 362, 323, 16, 208, 44, 57, 484, 407, 16, + 363, 364, 486, 363, 364, 274, 278, 275, 276, 277, + 294, 45, 209, 46, 210, 211, 212, 213, 214, 47, + 215, 59, 216, 48, 217, 218, 62, 274, 219, 275, + 276, 277, 220, 221, 405, 222, 49, 223, 403, 224, + 50, 51, 412, 225, 41, 52, 25, 53, 39, 226, + 227, 405, 228, 229, 54, 278, 416, 243, 246, 253, + 256, 448, 422, 279, -191, 55, 56, 257, 271, 291, + 292, 297, 57, 298, 280, 300, 303, 278, 316, 320, + 321, 322, 326, 331, 340, 332, 388, 338, 363, 364, + 281, 282, 341, 283, 342, 284, 58, 59, 60, 61, + 352, 285, 62, 355, 356, 392, 374, 63, 402, 375, + 376, 379, 279, 380, 64, 381, 65, 382, 383, 384, + 385, 467, 67, 280, 386, 391, 365, 395, 366, 367, + 368, 369, 370, 371, 279, 44, 396, 397, 398, 281, + 282, 387, 283, 16, 284, 280, 399, 400, 404, 10, + 285, 45, 406, 46, 41, 409, 25, 413, 39, 47, + 419, 281, 282, 48, 283, 417, 284, 435, 418, 439, + 472, 274, 285, 275, 276, 277, 49, 421, 482, 424, + 50, 51, 436, 440, 442, 52, 345, 53, 444, 472, + 446, 449, 345, 346, 54, 363, 364, 472, 452, 346, + 453, 472, 457, 462, 481, 55, 56, 480, 479, 485, + 162, 365, 57, 366, 367, 368, 369, 370, 371, 498, + 410, 278, 414, 487, 274, 44, 275, 276, 277, 309, + 499, 272, 29, 408, 35, 38, 58, 59, 60, 61, + 307, 45, 62, 46, 0, 363, 364, 63, 349, 47, + 0, 0, 0, 48, 64, 0, 65, 0, 0, 0, + 0, 66, 67, 363, 364, 0, 49, 0, 0, 0, + 50, 51, 0, 0, 278, 52, 0, 53, 279, 0, + 0, 0, 0, 16, 54, 0, 0, 0, 0, 280, + 0, 0, 0, 0, 0, 55, 56, 0, 0, 0, + 0, 0, 57, 0, 0, 281, 282, 0, 459, 0, + 284, 0, 0, 0, 0, 0, 285, 0, 365, 0, + 366, 367, 368, 369, 370, 371, 58, 59, 60, 61, + 0, 279, 62, 394, 0, 0, 0, 63, 0, 0, + 0, 0, 280, 0, 64, 0, 65, 0, 0, 0, + 0, 66, 67, 0, 0, 0, 0, 0, 281, 282, + 0, 283, 0, 284, 0, 0, 0, 0, 365, 285, + 366, 367, 368, 369, 370, 371, 0, 0, 44, 0, + 0, 0, 0, 423, 0, 0, 365, 491, 366, 367, + 368, 369, 370, 371, 45, 0, 46, 0, 0, 0, + 0, 0, 47, 0, 0, 5, 48, 0, 0, 0, + 6, 0, 0, 4, 0, 0, 5, 0, 0, 49, + 0, 6, 8, 50, 51, 9, 0, 7, 52, 0, + 53, 0, 0, 8, 0, 0, 9, 54, 0, 5, + 0, 0, 10, 0, 6, 0, 0, 0, 55, 56, + 0, 0, 0, 10, 233, 57, 8, 0, 0, 9, + 11, 0, 0, 4, 0, 0, 5, 0, 0, 0, + 0, 6, 0, 0, 0, 0, 10, 7, 0, 58, + 59, 60, 61, 8, 0, 62, 9, 0, 0, 12, + 63, 0, 0, 0, 0, 13, 14, 64, 0, 65, + 12, 0, 0, 10, 66, 67, 13, 14, 0, 0, + 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 15, 0, 0, 12, 334, 16, 0, 5, 0, 13, + 14, 15, 6, 0, 0, 242, 16, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 9, 0, 0, - 0, 0, 0, 0, 10, 364, 0, 365, 366, 367, - 368, 369, 370, 0, 10, 232, 0, 0, 44, 0, - 422, 11, 0, 0, 364, 490, 365, 366, 367, 368, - 369, 370, 0, 0, 45, 0, 46, 0, 0, 0, - 0, 0, 47, 0, 0, 0, 48, 0, 0, 0, - 12, 0, 0, 0, 0, 0, 13, 14, 0, 49, - 12, 0, 0, 50, 51, 0, 13, 14, 52, 0, - 53, 0, 0, 0, 0, 0, 0, 54, 0, 0, - 0, 15, 0, 0, 0, 333, 16, 0, 55, 56, - 4, 15, 0, 5, 0, 57, 16, 0, 6, 0, - 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, - 8, 0, 0, 9, 0, 0, 0, 0, 0, 58, - 59, 60, 61, 0, 0, 62, 0, 0, 0, 63, - 10, 232, 4, 0, 0, 5, 64, 11, 65, 0, - 6, 0, 0, 66, 67, 0, 7, 0, 5, 0, - 0, 0, 8, 6, 0, 9, 0, 5, 0, 0, - 0, 0, 6, 0, 0, 8, 0, 0, 9, 0, - 0, 0, 10, 0, 8, 0, 12, 9, 0, 11, - 0, 0, 13, 14, 0, 10, 0, 0, 0, 0, + 12, 0, 0, 0, 15, 0, 13, 14, 411, 16, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, - 0, 241, 16, 0, 0, 0, 0, 0, 12, 0, - 0, 0, 0, 0, 13, 14, 0, 0, 0, 0, - 0, 12, 0, 0, 0, 0, 0, 13, 14, 0, - 12, 0, 0, 0, 0, 0, 13, 14, 0, 15, - 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, - 0, 0, 15, 0, 0, 0, 410, 16, 0, 0, - 0, 15, 0, 0, 0, 454, 16, 88, 0, 89, - 90, 0, 91, 92, 0, 0, 0, 0, 93, 0, - 94, 0, 0, 0, 0, 0, 0, 95, 96, 97, - 98, 0, 99, 100, 101, 102, 103, 0, 104, 0, - 105, 106, 107, 0, 0, 108, 0, 0, 0, 109, - 0, 110, 111, 112, 113, 114, 115, 0, 116, 117, - 118, 119, 120, 0, 0, 121, 0, 122, 0, 0, - 0, 0, 123, 0, 124, 0, 0, 0, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 0, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 0, - 0, 0, 0, 145, 0, 0, 146, 0, 147, 0, - 0, 148, 149, 150, 0, 0, 0, 151, 0, 152, - 153, 154, 155, 0, 0, 156 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 15, 0, 0, 0, 0, 16, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 12, 89, 90, 0, 91, 92, 13, 14, 0, + 0, 93, 0, 94, 0, 0, 0, 0, 0, 0, + 95, 96, 97, 98, 0, 99, 100, 101, 102, 103, + 0, 104, 15, 105, 106, 107, 455, 16, 108, 0, + 0, 0, 109, 0, 110, 111, 112, 113, 114, 115, + 0, 116, 117, 118, 119, 120, 0, 0, 121, 0, + 122, 0, 0, 0, 0, 123, 0, 124, 0, 0, + 0, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 0, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 0, 0, 0, 0, 145, 0, 0, 146, + 0, 147, 148, 0, 0, 149, 150, 151, 0, 0, + 0, 152, 0, 153, 154, 155, 156, 0, 0, 157 }; static const short int yycheck[] = { 2, 5, 72, 2, 13, 2, 2, 2, 11, 12, - 23, 264, 265, 2, 26, 23, 252, 32, 229, 82, - 11, 12, 28, 388, 0, 116, 38, 2, 11, 12, - 217, 116, 219, 43, 207, 222, 223, 210, 211, 132, - 248, 214, 146, 216, 48, 29, 97, 151, 221, 132, - 101, 3, 4, 132, 132, 148, 29, 63, 149, 43, - 76, 12, 270, 14, 149, 148, 76, 147, 74, 75, - 43, 151, 123, 152, 152, 81, 80, 93, 11, 12, - 32, 85, 255, 11, 12, 132, 132, 452, 151, 3, - 4, 132, 76, 280, 281, 282, 283, 284, 351, 83, - 106, 148, 148, 76, 147, 111, 79, 148, 319, 484, - 83, 32, 63, 64, 146, 490, 146, 8, 150, 151, - 150, 151, 482, 151, 139, 60, 146, 487, 198, 199, - 65, 57, 146, 59, 134, 205, 139, 140, 150, 146, - 3, 146, 5, 6, 7, 136, 137, 138, 139, 140, - 133, 404, 135, 136, 137, 138, 139, 140, 160, 161, - 146, 160, 161, 160, 161, 160, 161, 175, 341, 149, - 147, 160, 161, 409, 151, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 188, 160, 161, 139, 488, 149, - 53, 444, 492, 3, 4, 147, 3, 4, 371, 146, - 133, 388, 135, 136, 137, 138, 139, 140, 149, 137, - 138, 139, 140, 3, 4, 148, 3, 4, 391, 472, - 224, 225, 235, 146, 228, 8, 9, 235, 481, 3, - 4, 3, 4, 11, 12, 146, 423, 246, 146, 248, - 3, 4, 3, 4, 3, 4, 3, 110, 5, 6, - 7, 8, 74, 262, 253, 147, 253, 120, 253, 8, - 262, 270, 271, 450, 149, 452, 150, 151, 146, 271, - 340, 458, 149, 136, 137, 147, 139, 464, 141, 147, - 284, 150, 151, 147, 147, 147, 473, 11, 12, 152, - 147, 478, 147, 147, 147, 147, 53, 4, 147, 147, - 147, 147, 147, 11, 12, 147, 147, 147, 147, 147, - 147, 147, 147, 20, 147, 22, 147, 3, 8, 149, - 149, 28, 149, 327, 148, 32, 147, 323, 153, 8, - 8, 335, 8, 332, 8, 332, 56, 332, 45, 5, - 344, 147, 49, 50, 146, 344, 151, 54, 134, 56, - 420, 355, 146, 110, 149, 133, 63, 135, 136, 137, - 138, 139, 140, 120, 148, 150, 132, 74, 75, 148, - 148, 153, 132, 148, 81, 148, 147, 3, 148, 136, - 137, 148, 139, 148, 141, 3, 148, 5, 6, 7, - 147, 132, 148, 148, 148, 148, 148, 148, 105, 106, - 107, 108, 148, 148, 111, 148, 154, 8, 115, 148, - 148, 134, 146, 150, 69, 122, 146, 124, 146, 146, - 8, 5, 129, 130, 4, 133, 134, 135, 136, 137, - 138, 139, 140, 148, 148, 53, 148, 148, 148, 148, - 20, 146, 22, 442, 151, 442, 113, 442, 28, 146, - 148, 151, 32, 3, 149, 5, 6, 7, 8, 461, - 147, 132, 151, 148, 134, 45, 148, 471, 148, 49, - 50, 331, 21, 340, 54, 484, 56, 2, 480, 480, - 222, 490, 484, 63, 2, 204, 488, 2, 490, 220, - 492, -1, 110, -1, 74, 75, -1, 329, -1, 263, - -1, 81, 120, 53, -1, 3, 4, 5, 6, 7, - -1, -1, 3, -1, 5, 6, 7, -1, 136, 137, - -1, 139, 20, 141, 22, 105, 106, 107, 108, 147, - 28, 111, -1, -1, 32, 115, -1, -1, -1, -1, - -1, -1, 122, -1, 124, -1, -1, 45, -1, 129, - 130, 49, 50, 11, 12, 53, 54, -1, 56, -1, - 110, -1, 53, -1, -1, 63, -1, -1, -1, -1, - 120, 151, 11, 12, -1, -1, 74, 75, -1, -1, - -1, -1, -1, 81, -1, -1, 136, 137, -1, 139, - -1, 141, -1, -1, -1, -1, -1, 147, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 105, 106, 107, - 108, -1, 110, 111, -1, -1, -1, 115, -1, 110, - -1, -1, 120, -1, 122, 10, 124, -1, -1, 120, - -1, 129, 130, -1, -1, -1, -1, 32, 136, 137, - -1, 139, 37, 141, 29, 136, 137, 32, 139, 147, - 141, -1, 37, -1, 49, -1, 147, 52, 43, -1, + 23, 2, 265, 266, 2, 23, 3, 4, 253, 82, + 26, 117, 389, 230, 117, 32, 97, 11, 12, 43, + 101, 218, 38, 220, 76, 0, 223, 224, 133, 12, + 485, 14, 148, 249, 48, 32, 491, 133, 133, 3, + 4, 93, 208, 124, 150, 211, 212, 150, 153, 215, + 29, 217, 76, 147, 149, 271, 222, 153, 152, 29, + 11, 12, 133, 483, 43, 147, 80, 133, 488, 151, + 152, 85, 10, 43, 11, 12, 453, 133, 149, 152, + 63, 64, 8, 149, 281, 282, 283, 284, 285, 352, + 256, 29, 133, 149, 32, 3, 4, 76, 3, 37, + 5, 6, 7, 320, 83, 43, 76, 32, 149, 79, + 60, 49, 147, 83, 52, 65, 151, 152, 148, 199, + 200, 148, 152, 140, 152, 152, 206, 140, 141, 489, + 150, 69, 70, 493, 57, 151, 59, 147, 76, 3, + 4, 74, 405, 140, 138, 139, 140, 141, 53, 161, + 162, 148, 161, 162, 161, 162, 161, 162, 176, 147, + 161, 162, 147, 161, 162, 410, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 189, 342, 150, 116, 3, + 4, 147, 445, 135, 122, 123, 137, 138, 139, 140, + 141, 147, 389, 3, 4, 3, 4, 134, 135, 136, + 137, 138, 139, 140, 141, 110, 372, 3, 4, 147, + 473, 225, 226, 236, 152, 229, 121, 147, 236, 482, + 3, 4, 150, 28, 3, 4, 392, 424, 247, 147, + 249, 147, 137, 138, 147, 140, 3, 142, 5, 6, + 7, 8, 148, 148, 263, 254, 8, 254, 153, 254, + 150, 263, 271, 272, 451, 147, 453, 150, 63, 148, + 272, 341, 459, 3, 4, 8, 9, 148, 465, 74, + 75, 285, 151, 152, 148, 4, 81, 474, 151, 152, + 11, 12, 479, 11, 12, 3, 53, 5, 6, 7, + 8, 20, 148, 22, 148, 148, 148, 148, 148, 28, + 148, 106, 148, 32, 148, 148, 111, 3, 148, 5, + 6, 7, 148, 148, 328, 148, 45, 148, 324, 148, + 49, 50, 336, 148, 333, 54, 333, 56, 333, 148, + 148, 345, 148, 148, 63, 53, 345, 3, 150, 150, + 154, 421, 356, 110, 150, 74, 75, 149, 148, 8, + 8, 8, 81, 8, 121, 8, 56, 53, 5, 152, + 148, 147, 135, 147, 151, 150, 3, 149, 11, 12, + 137, 138, 133, 140, 154, 142, 105, 106, 107, 108, + 133, 148, 111, 149, 148, 133, 149, 116, 8, 149, + 149, 149, 110, 149, 123, 149, 125, 149, 149, 149, + 149, 130, 131, 121, 149, 149, 134, 149, 136, 137, + 138, 139, 140, 141, 110, 4, 149, 149, 155, 137, + 138, 149, 140, 152, 142, 121, 149, 149, 135, 69, + 148, 20, 147, 22, 443, 151, 443, 147, 443, 28, + 149, 137, 138, 32, 140, 147, 142, 8, 147, 5, + 462, 3, 148, 5, 6, 7, 45, 149, 472, 149, + 49, 50, 149, 149, 147, 54, 485, 56, 113, 481, + 147, 149, 491, 485, 63, 11, 12, 489, 149, 491, + 152, 493, 150, 148, 133, 74, 75, 149, 152, 135, + 21, 134, 81, 136, 137, 138, 139, 140, 141, 149, + 332, 53, 341, 481, 3, 4, 5, 6, 7, 223, + 149, 205, 2, 330, 2, 2, 105, 106, 107, 108, + 221, 20, 111, 22, -1, 11, 12, 116, 264, 28, + -1, -1, -1, 32, 123, -1, 125, -1, -1, -1, + -1, 130, 131, 11, 12, -1, 45, -1, -1, -1, + 49, 50, -1, -1, 53, 54, -1, 56, 110, -1, + -1, -1, -1, 152, 63, -1, -1, -1, -1, 121, + -1, -1, -1, -1, -1, 74, 75, -1, -1, -1, + -1, -1, 81, -1, -1, 137, 138, -1, 140, -1, + 142, -1, -1, -1, -1, -1, 148, -1, 134, -1, + 136, 137, 138, 139, 140, 141, 105, 106, 107, 108, + -1, 110, 111, 149, -1, -1, -1, 116, -1, -1, + -1, -1, 121, -1, 123, -1, 125, -1, -1, -1, + -1, 130, 131, -1, -1, -1, -1, -1, 137, 138, + -1, 140, -1, 142, -1, -1, -1, -1, 134, 148, + 136, 137, 138, 139, 140, 141, -1, -1, 4, -1, + -1, -1, -1, 149, -1, -1, 134, 135, 136, 137, + 138, 139, 140, 141, 20, -1, 22, -1, -1, -1, + -1, -1, 28, -1, -1, 32, 32, -1, -1, -1, + 37, -1, -1, 29, -1, -1, 32, -1, -1, 45, + -1, 37, 49, 49, 50, 52, -1, 43, 54, -1, + 56, -1, -1, 49, -1, -1, 52, 63, -1, 32, + -1, -1, 69, -1, 37, -1, -1, -1, 74, 75, + -1, -1, -1, 69, 70, 81, 49, -1, -1, 52, + 76, -1, -1, 29, -1, -1, 32, -1, -1, -1, + -1, 37, -1, -1, -1, -1, 69, 43, -1, 105, + 106, 107, 108, 49, -1, 111, 52, -1, -1, 116, + 116, -1, -1, -1, -1, 122, 123, 123, -1, 125, + 116, -1, -1, 69, 130, 131, 122, 123, -1, -1, + 76, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 147, -1, -1, 116, 151, 152, -1, 32, -1, 122, + 123, 147, 37, -1, -1, 151, 152, -1, -1, -1, -1, -1, -1, -1, 49, -1, -1, 52, -1, -1, - -1, -1, -1, -1, 69, 133, -1, 135, 136, 137, - 138, 139, 140, -1, 69, 70, -1, -1, 4, -1, - 148, 76, -1, -1, 133, 134, 135, 136, 137, 138, - 139, 140, -1, -1, 20, -1, 22, -1, -1, -1, - -1, -1, 28, -1, -1, -1, 32, -1, -1, -1, - 115, -1, -1, -1, -1, -1, 121, 122, -1, 45, - 115, -1, -1, 49, 50, -1, 121, 122, 54, -1, - 56, -1, -1, -1, -1, -1, -1, 63, -1, -1, - -1, 146, -1, -1, -1, 150, 151, -1, 74, 75, - 29, 146, -1, 32, -1, 81, 151, -1, 37, -1, - -1, -1, -1, -1, 43, -1, -1, -1, -1, -1, - 49, -1, -1, 52, -1, -1, -1, -1, -1, 105, - 106, 107, 108, -1, -1, 111, -1, -1, -1, 115, - 69, 70, 29, -1, -1, 32, 122, 76, 124, -1, - 37, -1, -1, 129, 130, -1, 43, -1, 32, -1, - -1, -1, 49, 37, -1, 52, -1, 32, -1, -1, - -1, -1, 37, -1, -1, 49, -1, -1, 52, -1, - -1, -1, 69, -1, 49, -1, 115, 52, -1, 76, - -1, -1, 121, 122, -1, 69, -1, -1, -1, -1, + 116, -1, -1, -1, 147, -1, 122, 123, 151, 152, -1, -1, -1, -1, 69, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 146, -1, -1, - -1, 150, 151, -1, -1, -1, -1, -1, 115, -1, - -1, -1, -1, -1, 121, 122, -1, -1, -1, -1, - -1, 115, -1, -1, -1, -1, -1, 121, 122, -1, - 115, -1, -1, -1, -1, -1, 121, 122, -1, 146, - -1, -1, -1, -1, 151, -1, -1, -1, -1, -1, - -1, -1, 146, -1, -1, -1, 150, 151, -1, -1, - -1, 146, -1, -1, -1, 150, 151, 13, -1, 15, - 16, -1, 18, 19, -1, -1, -1, -1, 24, -1, - 26, -1, -1, -1, -1, -1, -1, 33, 34, 35, - 36, -1, 38, 39, 40, 41, 42, -1, 44, -1, - 46, 47, 48, -1, -1, 51, -1, -1, -1, 55, - -1, 57, 58, 59, 60, 61, 62, -1, 64, 65, - 66, 67, 68, -1, -1, 71, -1, 73, -1, -1, - -1, -1, 78, -1, 80, -1, -1, -1, 84, 85, - 86, 87, 88, 89, 90, 91, 92, -1, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, -1, - -1, -1, -1, 109, -1, -1, 112, -1, 114, -1, - -1, 117, 118, 119, -1, -1, -1, 123, -1, 125, - 126, 127, 128, -1, -1, 131 + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 147, -1, -1, -1, -1, 152, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 13, 116, 15, 16, -1, 18, 19, 122, 123, -1, + -1, 24, -1, 26, -1, -1, -1, -1, -1, -1, + 33, 34, 35, 36, -1, 38, 39, 40, 41, 42, + -1, 44, 147, 46, 47, 48, 151, 152, 51, -1, + -1, -1, 55, -1, 57, 58, 59, 60, 61, 62, + -1, 64, 65, 66, 67, 68, -1, -1, 71, -1, + 73, -1, -1, -1, -1, 78, -1, 80, -1, -1, + -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, + -1, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, -1, -1, -1, -1, 109, -1, -1, 112, + -1, 114, 115, -1, -1, 118, 119, 120, -1, -1, + -1, 124, -1, 126, 127, 128, 129, -1, -1, 132 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const unsigned char yystos[] = { - 0, 156, 157, 0, 29, 32, 37, 43, 49, 52, - 69, 76, 115, 121, 122, 146, 151, 160, 161, 162, - 163, 166, 167, 175, 183, 187, 193, 204, 205, 206, - 209, 210, 213, 215, 216, 217, 218, 220, 221, 226, - 228, 229, 3, 4, 4, 20, 22, 28, 32, 45, + 0, 157, 158, 0, 29, 32, 37, 43, 49, 52, + 69, 76, 116, 122, 123, 147, 152, 161, 162, 163, + 164, 167, 168, 176, 184, 188, 194, 205, 206, 207, + 210, 211, 214, 216, 217, 218, 219, 221, 222, 227, + 229, 230, 3, 4, 4, 20, 22, 28, 32, 45, 49, 50, 54, 56, 63, 74, 75, 81, 105, 106, - 107, 108, 111, 115, 122, 124, 129, 130, 187, 201, - 203, 226, 227, 229, 147, 3, 4, 3, 4, 199, - 32, 8, 3, 4, 199, 174, 175, 199, 13, 15, + 107, 108, 111, 116, 123, 125, 130, 131, 188, 202, + 204, 227, 228, 230, 148, 3, 4, 3, 4, 200, + 32, 8, 3, 4, 200, 175, 176, 200, 13, 15, 16, 18, 19, 24, 26, 33, 34, 35, 36, 38, 39, 40, 41, 42, 44, 46, 47, 48, 51, 55, 57, 58, 59, 60, 61, 62, 64, 65, 66, 67, 68, 71, 73, 78, 80, 84, 85, 86, 87, 88, 89, 90, 91, 92, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 109, 112, 114, 117, 118, - 119, 123, 125, 126, 127, 128, 131, 176, 178, 225, - 158, 158, 79, 83, 165, 204, 209, 215, 219, 146, - 146, 146, 146, 149, 146, 149, 146, 134, 214, 149, - 146, 146, 146, 227, 3, 74, 202, 202, 147, 202, - 203, 3, 3, 203, 3, 4, 200, 8, 149, 227, - 146, 149, 227, 116, 149, 147, 147, 147, 147, 147, - 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, - 147, 147, 147, 147, 147, 147, 147, 147, 147, 132, - 152, 10, 70, 160, 164, 175, 204, 206, 217, 218, - 221, 150, 3, 3, 4, 149, 207, 93, 211, 215, - 3, 4, 149, 159, 227, 153, 148, 184, 185, 186, - 200, 200, 194, 32, 139, 147, 200, 222, 223, 224, - 147, 194, 200, 3, 5, 6, 7, 53, 110, 120, - 136, 137, 139, 141, 147, 190, 191, 192, 8, 192, - 8, 8, 177, 8, 192, 192, 8, 8, 192, 8, - 192, 190, 56, 188, 189, 190, 225, 192, 188, 190, - 227, 227, 8, 9, 179, 5, 230, 227, 178, 151, - 147, 146, 150, 174, 208, 134, 82, 174, 196, 212, - 146, 149, 159, 150, 160, 174, 197, 148, 192, 150, - 132, 153, 146, 150, 174, 175, 195, 196, 222, 223, - 223, 132, 196, 150, 148, 147, 190, 190, 190, 190, - 190, 227, 11, 12, 133, 135, 136, 137, 138, 139, - 140, 132, 148, 148, 148, 148, 132, 148, 148, 148, - 148, 148, 148, 148, 148, 148, 148, 3, 132, 148, - 148, 132, 148, 148, 148, 148, 148, 154, 148, 148, - 178, 8, 218, 134, 227, 146, 150, 197, 150, 163, - 150, 227, 146, 186, 192, 229, 146, 146, 148, 223, - 148, 227, 148, 148, 190, 190, 190, 190, 190, 190, - 190, 190, 190, 192, 8, 148, 189, 192, 5, 148, - 223, 146, 159, 113, 180, 146, 198, 200, 148, 190, - 134, 148, 151, 172, 150, 223, 149, 190, 139, 173, - 189, 147, 181, 152, 132, 152, 129, 168, 169, 170, - 171, 175, 227, 26, 38, 150, 182, 190, 151, 148, - 132, 227, 223, 190, 134, 190, 171, 223, 147, 172, - 134, 195, 147, 172, 168, 195, 168, 148, 148 + 100, 101, 102, 103, 104, 109, 112, 114, 115, 118, + 119, 120, 124, 126, 127, 128, 129, 132, 177, 179, + 226, 159, 159, 79, 83, 166, 205, 210, 216, 220, + 147, 147, 147, 147, 150, 147, 150, 147, 135, 215, + 150, 147, 147, 147, 228, 3, 74, 203, 203, 148, + 203, 204, 3, 3, 204, 3, 4, 201, 8, 150, + 228, 147, 150, 228, 117, 150, 148, 148, 148, 148, + 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, + 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, + 133, 153, 10, 70, 161, 165, 176, 205, 207, 218, + 219, 222, 151, 3, 3, 4, 150, 208, 93, 212, + 216, 3, 4, 150, 160, 228, 154, 149, 185, 186, + 187, 201, 201, 195, 32, 140, 148, 201, 223, 224, + 225, 148, 195, 201, 3, 5, 6, 7, 53, 110, + 121, 137, 138, 140, 142, 148, 191, 192, 193, 8, + 193, 8, 8, 178, 8, 193, 193, 8, 8, 193, + 8, 193, 191, 56, 189, 190, 191, 226, 193, 189, + 191, 228, 228, 8, 9, 180, 5, 231, 228, 179, + 152, 148, 147, 151, 175, 209, 135, 82, 175, 197, + 213, 147, 150, 160, 151, 161, 175, 198, 149, 193, + 151, 133, 154, 147, 151, 175, 176, 196, 197, 223, + 224, 224, 133, 197, 151, 149, 148, 191, 191, 191, + 191, 191, 228, 11, 12, 134, 136, 137, 138, 139, + 140, 141, 133, 149, 149, 149, 149, 133, 149, 149, + 149, 149, 149, 149, 149, 149, 149, 149, 3, 133, + 149, 149, 133, 149, 149, 149, 149, 149, 155, 149, + 149, 179, 8, 219, 135, 228, 147, 151, 198, 151, + 164, 151, 228, 147, 187, 193, 230, 147, 147, 149, + 224, 149, 228, 149, 149, 191, 191, 191, 191, 191, + 191, 191, 191, 191, 193, 8, 149, 190, 193, 5, + 149, 224, 147, 160, 113, 181, 147, 199, 201, 149, + 191, 135, 149, 152, 173, 151, 224, 150, 191, 140, + 174, 190, 148, 182, 153, 133, 153, 130, 169, 170, + 171, 172, 176, 228, 26, 38, 151, 183, 191, 152, + 149, 133, 228, 224, 191, 135, 191, 172, 224, 148, + 173, 135, 196, 148, 173, 169, 196, 169, 149, 149 }; #define yyerrok (yyerrstatus = 0) @@ -2132,7 +2125,7 @@ yyreduce: switch (yyn) { case 2: -#line 285 "parser.y" +#line 286 "parser.y" { fix_incomplete(); check_all_user_types((yyvsp[0].ifref_list)); write_proxies((yyvsp[0].ifref_list)); @@ -2143,22 +2136,22 @@ yyreduce: break; case 3: -#line 294 "parser.y" +#line 295 "parser.y" { (yyval.ifref_list) = NULL; ;} break; case 4: -#line 295 "parser.y" +#line 296 "parser.y" { (yyval.ifref_list) = (yyvsp[-1].ifref_list); ;} break; case 5: -#line 296 "parser.y" +#line 297 "parser.y" { (yyval.ifref_list) = append_ifref( (yyvsp[-1].ifref_list), make_ifref((yyvsp[0].type)) ); ;} break; case 6: -#line 297 "parser.y" +#line 298 "parser.y" { (yyval.ifref_list) = (yyvsp[-2].ifref_list); reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, 0); if (!parse_only && do_header) write_coclass_forward((yyvsp[-1].type)); @@ -2166,7 +2159,7 @@ yyreduce: break; case 7: -#line 301 "parser.y" +#line 302 "parser.y" { (yyval.ifref_list) = (yyvsp[-1].ifref_list); add_typelib_entry((yyvsp[0].type)); reg_type((yyvsp[0].type), (yyvsp[0].type)->name, 0); @@ -2175,42 +2168,42 @@ yyreduce: break; case 8: -#line 306 "parser.y" +#line 307 "parser.y" { (yyval.ifref_list) = (yyvsp[-1].ifref_list); add_typelib_entry((yyvsp[0].type)); ;} break; case 9: -#line 307 "parser.y" - { (yyval.ifref_list) = (yyvsp[-1].ifref_list); ;} - break; - - case 10: #line 308 "parser.y" { (yyval.ifref_list) = (yyvsp[-1].ifref_list); ;} break; + case 10: +#line 309 "parser.y" + { (yyval.ifref_list) = (yyvsp[-1].ifref_list); ;} + break; + case 11: -#line 311 "parser.y" +#line 312 "parser.y" {;} break; case 12: -#line 312 "parser.y" - { if (!parse_only) add_typelib_entry((yyvsp[0].type)); ;} - break; - - case 13: #line 313 "parser.y" { if (!parse_only) add_typelib_entry((yyvsp[0].type)); ;} break; - case 14: + case 13: #line 314 "parser.y" + { if (!parse_only) add_typelib_entry((yyvsp[0].type)); ;} + break; + + case 14: +#line 315 "parser.y" { reg_type((yyvsp[-1].type), (yyvsp[-1].type)->name, 0); if (!parse_only && do_header) write_coclass_forward((yyvsp[-1].type)); ;} break; case 15: -#line 315 "parser.y" +#line 316 "parser.y" { if (!parse_only) add_typelib_entry((yyvsp[0].type)); reg_type((yyvsp[0].type), (yyvsp[0].type)->name, 0); if (!parse_only && do_header) write_coclass_forward((yyvsp[0].type)); @@ -2218,52 +2211,52 @@ yyreduce: break; case 16: -#line 319 "parser.y" +#line 320 "parser.y" { if (!parse_only) add_typelib_entry((yyvsp[0].type)); ;} break; case 17: -#line 320 "parser.y" - {;} - break; - - case 18: #line 321 "parser.y" {;} break; + case 18: +#line 322 "parser.y" + {;} + break; + case 19: -#line 324 "parser.y" +#line 325 "parser.y" { (yyval.func_list) = NULL; ;} break; case 20: -#line 325 "parser.y" +#line 326 "parser.y" { (yyval.func_list) = append_func( (yyvsp[-2].func_list), (yyvsp[-1].func) ); ;} break; case 21: -#line 326 "parser.y" +#line 327 "parser.y" { (yyval.func_list) = (yyvsp[-1].func_list); ;} break; case 22: -#line 329 "parser.y" +#line 330 "parser.y" {;} break; case 23: -#line 330 "parser.y" +#line 331 "parser.y" { if (!parse_only && do_header) { write_constdef((yyvsp[-1].var)); } ;} break; case 24: -#line 331 "parser.y" +#line 332 "parser.y" {;} break; case 25: -#line 332 "parser.y" +#line 333 "parser.y" { if (!parse_only && do_header) { write_type_def_or_decl(header, (yyvsp[-1].type), FALSE, NULL); fprintf(header, ";\n\n"); @@ -2272,17 +2265,17 @@ yyreduce: break; case 26: -#line 337 "parser.y" +#line 338 "parser.y" { if (!parse_only && do_header) { write_externdef((yyvsp[-1].var)); } ;} break; case 27: -#line 338 "parser.y" +#line 339 "parser.y" {;} break; case 28: -#line 339 "parser.y" +#line 340 "parser.y" { if (!parse_only && do_header) { write_type_def_or_decl(header, (yyvsp[-1].type), FALSE, NULL); fprintf(header, ";\n\n"); @@ -2291,12 +2284,12 @@ yyreduce: break; case 29: -#line 344 "parser.y" +#line 345 "parser.y" {;} break; case 30: -#line 345 "parser.y" +#line 346 "parser.y" { if (!parse_only && do_header) { write_type_def_or_decl(header, (yyvsp[-1].type), FALSE, NULL); fprintf(header, ";\n\n"); @@ -2305,33 +2298,33 @@ yyreduce: break; case 31: -#line 352 "parser.y" +#line 353 "parser.y" { if (!parse_only && do_header) fprintf(header, "%s\n", (yyvsp[-1].str)); ;} break; case 32: -#line 354 "parser.y" +#line 355 "parser.y" { assert(yychar == YYEMPTY); if (!do_import((yyvsp[-1].str))) yychar = aEOF; ;} break; case 33: -#line 357 "parser.y" +#line 358 "parser.y" {;} break; case 34: -#line 360 "parser.y" +#line 361 "parser.y" { if(!parse_only) add_importlib((yyvsp[-1].str)); ;} break; case 35: -#line 363 "parser.y" +#line 364 "parser.y" { (yyval.str) = (yyvsp[0].str); ;} break; case 36: -#line 365 "parser.y" +#line 366 "parser.y" { start_typelib((yyvsp[-1].str), (yyvsp[-2].attr_list)); if (!parse_only && do_header) write_library((yyvsp[-1].str), (yyvsp[-2].attr_list)); if (!parse_only && do_idfile) write_libid((yyvsp[-1].str), (yyvsp[-2].attr_list)); @@ -2339,32 +2332,32 @@ yyreduce: break; case 37: -#line 370 "parser.y" +#line 371 "parser.y" { end_typelib(); ;} break; case 38: -#line 373 "parser.y" +#line 374 "parser.y" { (yyval.var_list) = NULL; ;} break; case 40: -#line 377 "parser.y" +#line 378 "parser.y" { (yyval.var_list) = NULL; ;} break; case 41: -#line 380 "parser.y" +#line 381 "parser.y" { check_arg((yyvsp[0].var)); (yyval.var_list) = append_var( NULL, (yyvsp[0].var) ); ;} break; case 42: -#line 381 "parser.y" +#line 382 "parser.y" { check_arg((yyvsp[0].var)); (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[0].var)); ;} break; case 44: -#line 386 "parser.y" +#line 387 "parser.y" { (yyval.var) = (yyvsp[-1].pident)->var; (yyval.var)->attrs = (yyvsp[-3].attr_list); set_type((yyval.var), (yyvsp[-2].type), (yyvsp[-1].pident)->ptr_level, (yyvsp[0].array_dims), TRUE); @@ -2373,7 +2366,7 @@ yyreduce: break; case 45: -#line 391 "parser.y" +#line 392 "parser.y" { (yyval.var) = (yyvsp[-1].pident)->var; set_type((yyval.var), (yyvsp[-2].type), (yyvsp[-1].pident)->ptr_level, (yyvsp[0].array_dims), TRUE); free((yyvsp[-1].pident)); @@ -2381,7 +2374,7 @@ yyreduce: break; case 46: -#line 395 "parser.y" +#line 396 "parser.y" { (yyval.var) = (yyvsp[-3].pident)->var; (yyval.var)->attrs = (yyvsp[-5].attr_list); set_type((yyval.var), (yyvsp[-4].type), (yyvsp[-3].pident)->ptr_level - 1, NULL, TRUE); @@ -2391,7 +2384,7 @@ yyreduce: break; case 47: -#line 401 "parser.y" +#line 402 "parser.y" { (yyval.var) = (yyvsp[-3].pident)->var; set_type((yyval.var), (yyvsp[-4].type), (yyvsp[-3].pident)->ptr_level - 1, NULL, TRUE); free((yyvsp[-3].pident)); @@ -2400,42 +2393,42 @@ yyreduce: break; case 48: -#line 408 "parser.y" +#line 409 "parser.y" { (yyval.array_dims) = NULL; ;} break; case 49: -#line 409 "parser.y" +#line 410 "parser.y" { (yyval.array_dims) = (yyvsp[-1].array_dims); ;} break; case 50: -#line 410 "parser.y" +#line 411 "parser.y" { (yyval.array_dims) = append_array( NULL, make_expr(EXPR_VOID) ); ;} break; case 51: -#line 413 "parser.y" +#line 414 "parser.y" { (yyval.array_dims) = append_array( NULL, (yyvsp[0].expr) ); ;} break; case 52: -#line 414 "parser.y" +#line 415 "parser.y" { (yyval.array_dims) = append_array( (yyvsp[-2].array_dims), (yyvsp[0].expr) ); ;} break; case 53: -#line 415 "parser.y" +#line 416 "parser.y" { (yyval.array_dims) = append_array( (yyvsp[-3].array_dims), (yyvsp[0].expr) ); ;} break; case 54: -#line 418 "parser.y" +#line 419 "parser.y" { (yyval.attr_list) = NULL; ;} break; case 56: -#line 423 "parser.y" +#line 424 "parser.y" { (yyval.attr_list) = (yyvsp[-1].attr_list); if (!(yyval.attr_list)) error_loc("empty attribute lists unsupported\n"); @@ -2443,443 +2436,448 @@ yyreduce: break; case 57: -#line 429 "parser.y" +#line 430 "parser.y" { (yyval.attr_list) = append_attr( NULL, (yyvsp[0].attr) ); ;} break; case 58: -#line 430 "parser.y" +#line 431 "parser.y" { (yyval.attr_list) = append_attr( (yyvsp[-2].attr_list), (yyvsp[0].attr) ); ;} break; case 59: -#line 431 "parser.y" +#line 432 "parser.y" { (yyval.attr_list) = append_attr( (yyvsp[-3].attr_list), (yyvsp[0].attr) ); ;} break; case 60: -#line 434 "parser.y" +#line 435 "parser.y" { (yyval.str_list) = append_str( NULL, (yyvsp[0].str) ); ;} break; case 61: -#line 435 "parser.y" +#line 436 "parser.y" { (yyval.str_list) = append_str( (yyvsp[-2].str_list), (yyvsp[0].str) ); ;} break; case 62: -#line 438 "parser.y" +#line 439 "parser.y" { (yyval.attr) = NULL; ;} break; case 63: -#line 439 "parser.y" +#line 440 "parser.y" { (yyval.attr) = make_attr(ATTR_AGGREGATABLE); ;} break; case 64: -#line 440 "parser.y" +#line 441 "parser.y" { (yyval.attr) = make_attr(ATTR_APPOBJECT); ;} break; case 65: -#line 441 "parser.y" +#line 442 "parser.y" { (yyval.attr) = make_attr(ATTR_ASYNC); ;} break; case 66: -#line 442 "parser.y" +#line 443 "parser.y" { (yyval.attr) = make_attr(ATTR_AUTO_HANDLE); ;} break; case 67: -#line 443 "parser.y" +#line 444 "parser.y" { (yyval.attr) = make_attr(ATTR_BINDABLE); ;} break; case 68: -#line 444 "parser.y" +#line 445 "parser.y" { (yyval.attr) = make_attrp(ATTR_CALLAS, (yyvsp[-1].var)); ;} break; case 69: -#line 445 "parser.y" +#line 446 "parser.y" { (yyval.attr) = make_attrp(ATTR_CASE, (yyvsp[-1].expr_list)); ;} break; case 70: -#line 446 "parser.y" +#line 447 "parser.y" { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); ;} break; case 71: -#line 447 "parser.y" +#line 448 "parser.y" { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_DONT_SERIALIZE */ ;} break; case 72: -#line 448 "parser.y" +#line 449 "parser.y" { (yyval.attr) = make_attrv(ATTR_CONTEXTHANDLE, 0); /* RPC_CONTEXT_HANDLE_SERIALIZE */ ;} break; case 73: -#line 449 "parser.y" +#line 450 "parser.y" { (yyval.attr) = make_attr(ATTR_CONTROL); ;} break; case 74: -#line 450 "parser.y" +#line 451 "parser.y" { (yyval.attr) = make_attr(ATTR_DEFAULT); ;} break; case 75: -#line 451 "parser.y" +#line 452 "parser.y" { (yyval.attr) = make_attr(ATTR_DEFAULTCOLLELEM); ;} break; case 76: -#line 452 "parser.y" +#line 453 "parser.y" { (yyval.attr) = make_attrp(ATTR_DEFAULTVALUE_EXPR, (yyvsp[-1].expr)); ;} break; case 77: -#line 453 "parser.y" +#line 454 "parser.y" { (yyval.attr) = make_attrp(ATTR_DEFAULTVALUE_STRING, (yyvsp[-1].str)); ;} break; case 78: -#line 454 "parser.y" +#line 455 "parser.y" { (yyval.attr) = make_attr(ATTR_DEFAULTVTABLE); ;} break; case 79: -#line 455 "parser.y" +#line 456 "parser.y" { (yyval.attr) = make_attr(ATTR_DISPLAYBIND); ;} break; case 80: -#line 456 "parser.y" +#line 457 "parser.y" { (yyval.attr) = make_attrp(ATTR_DLLNAME, (yyvsp[-1].str)); ;} break; case 81: -#line 457 "parser.y" +#line 458 "parser.y" { (yyval.attr) = make_attr(ATTR_DUAL); ;} break; case 82: -#line 458 "parser.y" +#line 459 "parser.y" { (yyval.attr) = make_attrp(ATTR_ENDPOINT, (yyvsp[-1].str_list)); ;} break; case 83: -#line 459 "parser.y" +#line 460 "parser.y" { (yyval.attr) = make_attrp(ATTR_ENTRY_STRING, (yyvsp[-1].str)); ;} break; case 84: -#line 460 "parser.y" +#line 461 "parser.y" { (yyval.attr) = make_attrp(ATTR_ENTRY_ORDINAL, (yyvsp[-1].expr)); ;} break; case 85: -#line 461 "parser.y" +#line 462 "parser.y" { (yyval.attr) = make_attr(ATTR_EXPLICIT_HANDLE); ;} break; case 86: -#line 462 "parser.y" +#line 463 "parser.y" { (yyval.attr) = make_attr(ATTR_HANDLE); ;} break; case 87: -#line 463 "parser.y" +#line 464 "parser.y" { (yyval.attr) = make_attrp(ATTR_HELPCONTEXT, (yyvsp[-1].expr)); ;} break; case 88: -#line 464 "parser.y" +#line 465 "parser.y" { (yyval.attr) = make_attrp(ATTR_HELPFILE, (yyvsp[-1].str)); ;} break; case 89: -#line 465 "parser.y" +#line 466 "parser.y" { (yyval.attr) = make_attrp(ATTR_HELPSTRING, (yyvsp[-1].str)); ;} break; case 90: -#line 466 "parser.y" +#line 467 "parser.y" { (yyval.attr) = make_attrp(ATTR_HELPSTRINGCONTEXT, (yyvsp[-1].expr)); ;} break; case 91: -#line 467 "parser.y" +#line 468 "parser.y" { (yyval.attr) = make_attrp(ATTR_HELPSTRINGDLL, (yyvsp[-1].str)); ;} break; case 92: -#line 468 "parser.y" +#line 469 "parser.y" { (yyval.attr) = make_attr(ATTR_HIDDEN); ;} break; case 93: -#line 469 "parser.y" +#line 470 "parser.y" { (yyval.attr) = make_attrp(ATTR_ID, (yyvsp[-1].expr)); ;} break; case 94: -#line 470 "parser.y" +#line 471 "parser.y" { (yyval.attr) = make_attr(ATTR_IDEMPOTENT); ;} break; case 95: -#line 471 "parser.y" +#line 472 "parser.y" { (yyval.attr) = make_attrp(ATTR_IIDIS, (yyvsp[-1].expr)); ;} break; case 96: -#line 472 "parser.y" +#line 473 "parser.y" { (yyval.attr) = make_attr(ATTR_IMMEDIATEBIND); ;} break; case 97: -#line 473 "parser.y" +#line 474 "parser.y" { (yyval.attr) = make_attrp(ATTR_IMPLICIT_HANDLE, (yyvsp[-1].str)); ;} break; case 98: -#line 474 "parser.y" +#line 475 "parser.y" { (yyval.attr) = make_attr(ATTR_IN); ;} break; case 99: -#line 475 "parser.y" +#line 476 "parser.y" { (yyval.attr) = make_attr(ATTR_INPUTSYNC); ;} break; case 100: -#line 476 "parser.y" +#line 477 "parser.y" { (yyval.attr) = make_attrp(ATTR_LENGTHIS, (yyvsp[-1].expr_list)); ;} break; case 101: -#line 477 "parser.y" +#line 478 "parser.y" { (yyval.attr) = make_attr(ATTR_LOCAL); ;} break; case 102: -#line 478 "parser.y" +#line 479 "parser.y" { (yyval.attr) = make_attr(ATTR_NONBROWSABLE); ;} break; case 103: -#line 479 "parser.y" +#line 480 "parser.y" { (yyval.attr) = make_attr(ATTR_NONCREATABLE); ;} break; case 104: -#line 480 "parser.y" +#line 481 "parser.y" { (yyval.attr) = make_attr(ATTR_NONEXTENSIBLE); ;} break; case 105: -#line 481 "parser.y" +#line 482 "parser.y" { (yyval.attr) = make_attr(ATTR_OBJECT); ;} break; case 106: -#line 482 "parser.y" +#line 483 "parser.y" { (yyval.attr) = make_attr(ATTR_ODL); ;} break; case 107: -#line 483 "parser.y" +#line 484 "parser.y" { (yyval.attr) = make_attr(ATTR_OLEAUTOMATION); ;} break; case 108: -#line 484 "parser.y" +#line 485 "parser.y" { (yyval.attr) = make_attr(ATTR_OPTIONAL); ;} break; case 109: -#line 485 "parser.y" +#line 486 "parser.y" { (yyval.attr) = make_attr(ATTR_OUT); ;} break; case 110: -#line 486 "parser.y" +#line 487 "parser.y" { (yyval.attr) = make_attrv(ATTR_POINTERDEFAULT, (yyvsp[-1].num)); ;} break; case 111: -#line 487 "parser.y" +#line 488 "parser.y" { (yyval.attr) = make_attr(ATTR_PROPGET); ;} break; case 112: -#line 488 "parser.y" +#line 489 "parser.y" { (yyval.attr) = make_attr(ATTR_PROPPUT); ;} break; case 113: -#line 489 "parser.y" +#line 490 "parser.y" { (yyval.attr) = make_attr(ATTR_PROPPUTREF); ;} break; case 114: -#line 490 "parser.y" +#line 491 "parser.y" { (yyval.attr) = make_attr(ATTR_PUBLIC); ;} break; case 115: -#line 491 "parser.y" +#line 492 "parser.y" { expr_list_t *list = append_expr( NULL, (yyvsp[-3].expr) ); list = append_expr( list, (yyvsp[-1].expr) ); (yyval.attr) = make_attrp(ATTR_RANGE, list); ;} break; case 116: -#line 494 "parser.y" +#line 495 "parser.y" { (yyval.attr) = make_attr(ATTR_READONLY); ;} break; case 117: -#line 495 "parser.y" +#line 496 "parser.y" { (yyval.attr) = make_attr(ATTR_REQUESTEDIT); ;} break; case 118: -#line 496 "parser.y" +#line 497 "parser.y" { (yyval.attr) = make_attr(ATTR_RESTRICTED); ;} break; case 119: -#line 497 "parser.y" +#line 498 "parser.y" { (yyval.attr) = make_attr(ATTR_RETVAL); ;} break; case 120: -#line 498 "parser.y" +#line 499 "parser.y" { (yyval.attr) = make_attrp(ATTR_SIZEIS, (yyvsp[-1].expr_list)); ;} break; case 121: -#line 499 "parser.y" +#line 500 "parser.y" { (yyval.attr) = make_attr(ATTR_SOURCE); ;} break; case 122: -#line 500 "parser.y" - { (yyval.attr) = make_attr(ATTR_STRING); ;} +#line 501 "parser.y" + { (yyval.attr) = make_attr(ATTR_STRICTCONTEXTHANDLE); ;} break; case 123: -#line 501 "parser.y" - { (yyval.attr) = make_attrp(ATTR_SWITCHIS, (yyvsp[-1].expr)); ;} +#line 502 "parser.y" + { (yyval.attr) = make_attr(ATTR_STRING); ;} break; case 124: -#line 502 "parser.y" - { (yyval.attr) = make_attrp(ATTR_SWITCHTYPE, (yyvsp[-1].type)); ;} +#line 503 "parser.y" + { (yyval.attr) = make_attrp(ATTR_SWITCHIS, (yyvsp[-1].expr)); ;} break; case 125: -#line 503 "parser.y" - { (yyval.attr) = make_attrp(ATTR_TRANSMITAS, (yyvsp[-1].type)); ;} +#line 504 "parser.y" + { (yyval.attr) = make_attrp(ATTR_SWITCHTYPE, (yyvsp[-1].type)); ;} break; case 126: -#line 504 "parser.y" - { (yyval.attr) = make_attrp(ATTR_UUID, (yyvsp[-1].uuid)); ;} +#line 505 "parser.y" + { (yyval.attr) = make_attrp(ATTR_TRANSMITAS, (yyvsp[-1].type)); ;} break; case 127: -#line 505 "parser.y" - { (yyval.attr) = make_attr(ATTR_V1ENUM); ;} +#line 506 "parser.y" + { (yyval.attr) = make_attrp(ATTR_UUID, (yyvsp[-1].uuid)); ;} break; case 128: -#line 506 "parser.y" - { (yyval.attr) = make_attr(ATTR_VARARG); ;} +#line 507 "parser.y" + { (yyval.attr) = make_attr(ATTR_V1ENUM); ;} break; case 129: -#line 507 "parser.y" - { (yyval.attr) = make_attrv(ATTR_VERSION, (yyvsp[-1].num)); ;} +#line 508 "parser.y" + { (yyval.attr) = make_attr(ATTR_VARARG); ;} break; case 130: -#line 508 "parser.y" - { (yyval.attr) = make_attrp(ATTR_WIREMARSHAL, (yyvsp[-1].type)); ;} +#line 509 "parser.y" + { (yyval.attr) = make_attrv(ATTR_VERSION, (yyvsp[-1].num)); ;} break; case 131: -#line 509 "parser.y" +#line 510 "parser.y" + { (yyval.attr) = make_attrp(ATTR_WIREMARSHAL, (yyvsp[-1].type)); ;} + break; + + case 132: +#line 511 "parser.y" { (yyval.attr) = make_attrv(ATTR_POINTERTYPE, (yyvsp[0].num)); ;} break; - case 133: -#line 514 "parser.y" + case 134: +#line 516 "parser.y" { if (!is_valid_uuid((yyvsp[0].str))) error_loc("invalid UUID: %s\n", (yyvsp[0].str)); (yyval.uuid) = parse_uuid((yyvsp[0].str)); ;} break; - case 136: -#line 523 "parser.y" + case 137: +#line 525 "parser.y" { (yyval.var_list) = NULL; ;} break; - case 137: -#line 524 "parser.y" + case 138: +#line 526 "parser.y" { (yyval.var_list) = append_var( (yyvsp[-1].var_list), (yyvsp[0].var) ); ;} break; - case 138: -#line 527 "parser.y" + case 139: +#line 529 "parser.y" { attr_t *a = make_attrp(ATTR_CASE, append_expr( NULL, (yyvsp[-2].expr) )); (yyval.var) = (yyvsp[0].var); if (!(yyval.var)) (yyval.var) = make_var(NULL); (yyval.var)->attrs = append_attr( (yyval.var)->attrs, a ); ;} break; - case 139: -#line 531 "parser.y" + case 140: +#line 533 "parser.y" { attr_t *a = make_attr(ATTR_DEFAULT); (yyval.var) = (yyvsp[0].var); if (!(yyval.var)) (yyval.var) = make_var(NULL); (yyval.var)->attrs = append_attr( (yyval.var)->attrs, a ); ;} break; - case 140: -#line 537 "parser.y" + case 141: +#line 539 "parser.y" { (yyval.var) = reg_const((yyvsp[-2].var)); set_type((yyval.var), (yyvsp[-3].type), 0, NULL, FALSE); (yyval.var)->eval = (yyvsp[0].expr); ;} break; - case 141: -#line 543 "parser.y" + case 142: +#line 545 "parser.y" { (yyval.var_list) = NULL; ;} break; - case 142: -#line 544 "parser.y" + case 143: +#line 546 "parser.y" { (yyval.var_list) = (yyvsp[-1].var_list); ;} break; - case 144: -#line 548 "parser.y" + case 145: +#line 550 "parser.y" { if (!(yyvsp[0].var)->eval) (yyvsp[0].var)->eval = make_exprl(EXPR_NUM, 0 /* default for first enum entry */); (yyval.var_list) = append_var( NULL, (yyvsp[0].var) ); ;} break; - case 145: -#line 552 "parser.y" + case 146: +#line 554 "parser.y" { if (!(yyvsp[0].var)->eval) { var_t *last = LIST_ENTRY( list_tail((yyval.var_list)), var_t, entry ); @@ -2889,23 +2887,23 @@ yyreduce: ;} break; - case 146: -#line 561 "parser.y" + case 147: +#line 563 "parser.y" { (yyval.var) = reg_const((yyvsp[-2].var)); (yyval.var)->eval = (yyvsp[0].expr); (yyval.var)->type = make_int(0); ;} break; - case 147: -#line 565 "parser.y" + case 148: +#line 567 "parser.y" { (yyval.var) = reg_const((yyvsp[0].var)); (yyval.var)->type = make_int(0); ;} break; - case 148: -#line 570 "parser.y" + case 149: +#line 572 "parser.y" { (yyval.type) = get_typev(RPC_FC_ENUM16, (yyvsp[-3].var), tsENUM); (yyval.type)->kind = TKIND_ENUM; (yyval.type)->fields = (yyvsp[-1].var_list); @@ -2915,188 +2913,188 @@ yyreduce: ;} break; - case 149: -#line 579 "parser.y" - { (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); ;} - break; - case 150: -#line 580 "parser.y" - { (yyval.expr_list) = append_expr( (yyvsp[-2].expr_list), (yyvsp[0].expr) ); ;} +#line 581 "parser.y" + { (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); ;} break; case 151: -#line 593 "parser.y" - { (yyval.expr) = make_expr(EXPR_VOID); ;} - break; - - case 153: -#line 597 "parser.y" - { (yyval.expr) = make_exprl(EXPR_NUM, (yyvsp[0].num)); ;} - break; - - case 154: -#line 598 "parser.y" - { (yyval.expr) = make_exprl(EXPR_HEXNUM, (yyvsp[0].num)); ;} - break; - - case 155: -#line 599 "parser.y" - { (yyval.expr) = make_exprd(EXPR_DOUBLE, (yyvsp[0].dbl)); ;} - break; - - case 156: -#line 600 "parser.y" - { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 0); ;} - break; - - case 157: -#line 601 "parser.y" - { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 1); ;} - break; - - case 158: -#line 602 "parser.y" - { (yyval.expr) = make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str)); ;} - break; - - case 159: -#line 603 "parser.y" - { (yyval.expr) = make_expr3(EXPR_COND, (yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); ;} - break; - - case 160: -#line 604 "parser.y" - { (yyval.expr) = make_expr2(EXPR_OR , (yyvsp[-2].expr), (yyvsp[0].expr)); ;} - break; - - case 161: -#line 605 "parser.y" - { (yyval.expr) = make_expr2(EXPR_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); ;} - break; - - case 162: -#line 606 "parser.y" - { (yyval.expr) = make_expr2(EXPR_ADD, (yyvsp[-2].expr), (yyvsp[0].expr)); ;} - break; - - case 163: -#line 607 "parser.y" - { (yyval.expr) = make_expr2(EXPR_SUB, (yyvsp[-2].expr), (yyvsp[0].expr)); ;} - break; - - case 164: -#line 608 "parser.y" - { (yyval.expr) = make_expr2(EXPR_MUL, (yyvsp[-2].expr), (yyvsp[0].expr)); ;} - break; - - case 165: -#line 609 "parser.y" - { (yyval.expr) = make_expr2(EXPR_DIV, (yyvsp[-2].expr), (yyvsp[0].expr)); ;} - break; - - case 166: -#line 610 "parser.y" - { (yyval.expr) = make_expr2(EXPR_SHL, (yyvsp[-2].expr), (yyvsp[0].expr)); ;} - break; - - case 167: -#line 611 "parser.y" - { (yyval.expr) = make_expr2(EXPR_SHR, (yyvsp[-2].expr), (yyvsp[0].expr)); ;} - break; - - case 168: -#line 612 "parser.y" - { (yyval.expr) = make_expr1(EXPR_NOT, (yyvsp[0].expr)); ;} - break; - - case 169: -#line 613 "parser.y" - { (yyval.expr) = make_expr1(EXPR_NEG, (yyvsp[0].expr)); ;} - break; - - case 170: -#line 614 "parser.y" - { (yyval.expr) = make_expr1(EXPR_ADDRESSOF, (yyvsp[0].expr)); ;} - break; - - case 171: -#line 615 "parser.y" - { (yyval.expr) = make_expr1(EXPR_PPTR, (yyvsp[0].expr)); ;} - break; - - case 172: -#line 616 "parser.y" - { (yyval.expr) = make_exprt(EXPR_CAST, (yyvsp[-2].type), (yyvsp[0].expr)); ;} - break; - - case 173: -#line 617 "parser.y" - { (yyval.expr) = make_exprt(EXPR_SIZEOF, (yyvsp[-1].type), NULL); ;} - break; - - case 174: -#line 618 "parser.y" - { (yyval.expr) = (yyvsp[-1].expr); ;} - break; - - case 175: -#line 621 "parser.y" - { (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); ;} - break; - - case 176: -#line 622 "parser.y" +#line 582 "parser.y" { (yyval.expr_list) = append_expr( (yyvsp[-2].expr_list), (yyvsp[0].expr) ); ;} break; + case 152: +#line 595 "parser.y" + { (yyval.expr) = make_expr(EXPR_VOID); ;} + break; + + case 154: +#line 599 "parser.y" + { (yyval.expr) = make_exprl(EXPR_NUM, (yyvsp[0].num)); ;} + break; + + case 155: +#line 600 "parser.y" + { (yyval.expr) = make_exprl(EXPR_HEXNUM, (yyvsp[0].num)); ;} + break; + + case 156: +#line 601 "parser.y" + { (yyval.expr) = make_exprd(EXPR_DOUBLE, (yyvsp[0].dbl)); ;} + break; + + case 157: +#line 602 "parser.y" + { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 0); ;} + break; + + case 158: +#line 603 "parser.y" + { (yyval.expr) = make_exprl(EXPR_TRUEFALSE, 1); ;} + break; + + case 159: +#line 604 "parser.y" + { (yyval.expr) = make_exprs(EXPR_IDENTIFIER, (yyvsp[0].str)); ;} + break; + + case 160: +#line 605 "parser.y" + { (yyval.expr) = make_expr3(EXPR_COND, (yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); ;} + break; + + case 161: +#line 606 "parser.y" + { (yyval.expr) = make_expr2(EXPR_OR , (yyvsp[-2].expr), (yyvsp[0].expr)); ;} + break; + + case 162: +#line 607 "parser.y" + { (yyval.expr) = make_expr2(EXPR_AND, (yyvsp[-2].expr), (yyvsp[0].expr)); ;} + break; + + case 163: +#line 608 "parser.y" + { (yyval.expr) = make_expr2(EXPR_ADD, (yyvsp[-2].expr), (yyvsp[0].expr)); ;} + break; + + case 164: +#line 609 "parser.y" + { (yyval.expr) = make_expr2(EXPR_SUB, (yyvsp[-2].expr), (yyvsp[0].expr)); ;} + break; + + case 165: +#line 610 "parser.y" + { (yyval.expr) = make_expr2(EXPR_MUL, (yyvsp[-2].expr), (yyvsp[0].expr)); ;} + break; + + case 166: +#line 611 "parser.y" + { (yyval.expr) = make_expr2(EXPR_DIV, (yyvsp[-2].expr), (yyvsp[0].expr)); ;} + break; + + case 167: +#line 612 "parser.y" + { (yyval.expr) = make_expr2(EXPR_SHL, (yyvsp[-2].expr), (yyvsp[0].expr)); ;} + break; + + case 168: +#line 613 "parser.y" + { (yyval.expr) = make_expr2(EXPR_SHR, (yyvsp[-2].expr), (yyvsp[0].expr)); ;} + break; + + case 169: +#line 614 "parser.y" + { (yyval.expr) = make_expr1(EXPR_NOT, (yyvsp[0].expr)); ;} + break; + + case 170: +#line 615 "parser.y" + { (yyval.expr) = make_expr1(EXPR_NEG, (yyvsp[0].expr)); ;} + break; + + case 171: +#line 616 "parser.y" + { (yyval.expr) = make_expr1(EXPR_ADDRESSOF, (yyvsp[0].expr)); ;} + break; + + case 172: +#line 617 "parser.y" + { (yyval.expr) = make_expr1(EXPR_PPTR, (yyvsp[0].expr)); ;} + break; + + case 173: +#line 618 "parser.y" + { (yyval.expr) = make_exprt(EXPR_CAST, (yyvsp[-2].type), (yyvsp[0].expr)); ;} + break; + + case 174: +#line 619 "parser.y" + { (yyval.expr) = make_exprt(EXPR_SIZEOF, (yyvsp[-1].type), NULL); ;} + break; + + case 175: +#line 620 "parser.y" + { (yyval.expr) = (yyvsp[-1].expr); ;} + break; + + case 176: +#line 623 "parser.y" + { (yyval.expr_list) = append_expr( NULL, (yyvsp[0].expr) ); ;} + break; + case 177: -#line 625 "parser.y" +#line 624 "parser.y" + { (yyval.expr_list) = append_expr( (yyvsp[-2].expr_list), (yyvsp[0].expr) ); ;} + break; + + case 178: +#line 627 "parser.y" { (yyval.expr) = (yyvsp[0].expr); if (!(yyval.expr)->is_const) error_loc("expression is not constant\n"); ;} break; - case 178: -#line 631 "parser.y" + case 179: +#line 633 "parser.y" { (yyval.var) = (yyvsp[0].var); set_type((yyval.var), (yyvsp[-1].type), 0, NULL, FALSE); ;} break; - case 179: -#line 636 "parser.y" + case 180: +#line 638 "parser.y" { (yyval.var_list) = NULL; ;} break; - case 180: -#line 637 "parser.y" + case 181: +#line 639 "parser.y" { (yyval.var_list) = append_var( (yyvsp[-1].var_list), (yyvsp[0].var) ); ;} break; - case 181: -#line 640 "parser.y" + case 182: +#line 642 "parser.y" { (yyval.var) = (yyvsp[-1].var); ;} break; - case 182: -#line 641 "parser.y" + case 183: +#line 643 "parser.y" { (yyval.var) = make_var(NULL); (yyval.var)->type = (yyvsp[-1].type); (yyval.var)->attrs = (yyvsp[-2].attr_list); ;} break; - case 183: -#line 642 "parser.y" + case 184: +#line 644 "parser.y" { (yyval.var) = make_var(NULL); (yyval.var)->attrs = (yyvsp[-1].attr_list); ;} break; - case 184: -#line 643 "parser.y" + case 185: +#line 645 "parser.y" { (yyval.var) = NULL; ;} break; - case 185: -#line 646 "parser.y" + case 186: +#line 648 "parser.y" { (yyval.var) = (yyvsp[-1].pident)->var; (yyval.var)->attrs = (yyvsp[-3].attr_list); set_type((yyval.var), (yyvsp[-2].type), (yyvsp[-1].pident)->ptr_level, (yyvsp[0].array_dims), FALSE); @@ -3104,8 +3102,8 @@ yyreduce: ;} break; - case 186: -#line 655 "parser.y" + case 187: +#line 657 "parser.y" { var_t *v = (yyvsp[-3].pident)->var; v->attrs = (yyvsp[-6].attr_list); set_type(v, (yyvsp[-5].type), (yyvsp[-3].pident)->ptr_level, NULL, FALSE); @@ -3117,28 +3115,23 @@ yyreduce: ;} break; - case 187: -#line 666 "parser.y" - { (yyval.var) = NULL; ;} - break; - - case 189: -#line 670 "parser.y" + case 188: +#line 668 "parser.y" { (yyval.var) = NULL; ;} break; case 190: -#line 671 "parser.y" - { (yyval.var) = make_var((yyvsp[0].str)); ;} +#line 672 "parser.y" + { (yyval.var) = NULL; ;} break; case 191: -#line 672 "parser.y" +#line 673 "parser.y" { (yyval.var) = make_var((yyvsp[0].str)); ;} break; case 192: -#line 675 "parser.y" +#line 674 "parser.y" { (yyval.var) = make_var((yyvsp[0].str)); ;} break; @@ -3148,22 +3141,27 @@ yyreduce: break; case 194: -#line 680 "parser.y" - { (yyval.type) = make_builtin((yyvsp[0].str)); ;} +#line 679 "parser.y" + { (yyval.var) = make_var((yyvsp[0].str)); ;} break; case 195: -#line 681 "parser.y" +#line 682 "parser.y" { (yyval.type) = make_builtin((yyvsp[0].str)); ;} break; - case 197: + case 196: #line 683 "parser.y" - { (yyval.type) = (yyvsp[0].type); (yyval.type)->sign = 1; ;} + { (yyval.type) = make_builtin((yyvsp[0].str)); ;} break; case 198: -#line 684 "parser.y" +#line 685 "parser.y" + { (yyval.type) = (yyvsp[0].type); (yyval.type)->sign = 1; ;} + break; + + case 199: +#line 686 "parser.y" { (yyval.type) = (yyvsp[0].type); (yyval.type)->sign = -1; switch ((yyval.type)->type) { case RPC_FC_CHAR: break; @@ -3182,91 +3180,91 @@ yyreduce: ;} break; - case 199: -#line 700 "parser.y" + case 200: +#line 702 "parser.y" { (yyval.type) = make_int(-1); ;} break; - case 200: -#line 701 "parser.y" - { (yyval.type) = make_builtin((yyvsp[0].str)); ;} - break; - case 201: -#line 702 "parser.y" - { (yyval.type) = duptype(find_type("float", 0), 1); ;} - break; - - case 202: #line 703 "parser.y" { (yyval.type) = make_builtin((yyvsp[0].str)); ;} break; - case 203: + case 202: #line 704 "parser.y" - { (yyval.type) = make_builtin((yyvsp[0].str)); ;} + { (yyval.type) = duptype(find_type("float", 0), 1); ;} break; - case 204: + case 203: #line 705 "parser.y" { (yyval.type) = make_builtin((yyvsp[0].str)); ;} break; - case 205: + case 204: #line 706 "parser.y" { (yyval.type) = make_builtin((yyvsp[0].str)); ;} break; - case 208: -#line 713 "parser.y" + case 205: +#line 707 "parser.y" + { (yyval.type) = make_builtin((yyvsp[0].str)); ;} + break; + + case 206: +#line 708 "parser.y" { (yyval.type) = make_builtin((yyvsp[0].str)); ;} break; case 209: -#line 714 "parser.y" - { (yyval.type) = make_builtin((yyvsp[-1].str)); ;} - break; - - case 210: #line 715 "parser.y" { (yyval.type) = make_builtin((yyvsp[0].str)); ;} break; - case 211: + case 210: #line 716 "parser.y" { (yyval.type) = make_builtin((yyvsp[-1].str)); ;} break; - case 212: + case 211: #line 717 "parser.y" + { (yyval.type) = make_builtin((yyvsp[0].str)); ;} + break; + + case 212: +#line 718 "parser.y" { (yyval.type) = make_builtin((yyvsp[-1].str)); ;} break; case 213: -#line 718 "parser.y" - { (yyval.type) = make_builtin((yyvsp[0].str)); ;} +#line 719 "parser.y" + { (yyval.type) = make_builtin((yyvsp[-1].str)); ;} break; case 214: -#line 719 "parser.y" +#line 720 "parser.y" { (yyval.type) = make_builtin((yyvsp[0].str)); ;} break; case 215: -#line 722 "parser.y" - { (yyval.type) = make_class((yyvsp[0].str)); ;} +#line 721 "parser.y" + { (yyval.type) = make_builtin((yyvsp[0].str)); ;} break; case 216: -#line 723 "parser.y" +#line 724 "parser.y" + { (yyval.type) = make_class((yyvsp[0].str)); ;} + break; + + case 217: +#line 725 "parser.y" { (yyval.type) = find_type((yyvsp[0].str), 0); if ((yyval.type)->defined) error_loc("multiple definition error\n"); if ((yyval.type)->kind != TKIND_COCLASS) error_loc("%s was not declared a coclass\n", (yyvsp[0].str)); ;} break; - case 217: -#line 729 "parser.y" + case 218: +#line 731 "parser.y" { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = (yyvsp[-1].attr_list); if (!parse_only && do_header) @@ -3276,41 +3274,41 @@ yyreduce: ;} break; - case 218: -#line 738 "parser.y" + case 219: +#line 740 "parser.y" { (yyval.type) = (yyvsp[-3].type); (yyval.type)->ifaces = (yyvsp[-1].ifref_list); (yyval.type)->defined = TRUE; ;} break; - case 219: -#line 744 "parser.y" + case 220: +#line 746 "parser.y" { (yyval.ifref_list) = NULL; ;} break; - case 220: -#line 745 "parser.y" + case 221: +#line 747 "parser.y" { (yyval.ifref_list) = append_ifref( (yyvsp[-1].ifref_list), (yyvsp[0].ifref) ); ;} break; - case 221: -#line 749 "parser.y" + case 222: +#line 751 "parser.y" { (yyval.ifref) = make_ifref((yyvsp[0].type)); (yyval.ifref)->attrs = (yyvsp[-1].attr_list); ;} break; - case 222: -#line 752 "parser.y" - { (yyval.type) = get_type(0, (yyvsp[0].str), 0); (yyval.type)->kind = TKIND_DISPATCH; ;} - break; - case 223: -#line 753 "parser.y" +#line 754 "parser.y" { (yyval.type) = get_type(0, (yyvsp[0].str), 0); (yyval.type)->kind = TKIND_DISPATCH; ;} break; case 224: -#line 756 "parser.y" +#line 755 "parser.y" + { (yyval.type) = get_type(0, (yyvsp[0].str), 0); (yyval.type)->kind = TKIND_DISPATCH; ;} + break; + + case 225: +#line 758 "parser.y" { attr_t *attrs; (yyval.type) = (yyvsp[0].type); if ((yyval.type)->defined) error_loc("multiple definition error\n"); @@ -3323,28 +3321,28 @@ yyreduce: ;} break; - case 225: -#line 768 "parser.y" + case 226: +#line 770 "parser.y" { (yyval.var_list) = NULL; ;} break; - case 226: -#line 769 "parser.y" + case 227: +#line 771 "parser.y" { (yyval.var_list) = append_var( (yyvsp[-2].var_list), (yyvsp[-1].var) ); ;} break; - case 227: -#line 772 "parser.y" + case 228: +#line 774 "parser.y" { (yyval.func_list) = NULL; ;} break; - case 228: -#line 773 "parser.y" + case 229: +#line 775 "parser.y" { (yyval.func_list) = append_func( (yyvsp[-2].func_list), (yyvsp[-1].func) ); ;} break; - case 229: -#line 779 "parser.y" + case 230: +#line 781 "parser.y" { (yyval.type) = (yyvsp[-4].type); (yyval.type)->fields = (yyvsp[-2].var_list); (yyval.type)->funcs = (yyvsp[-1].func_list); @@ -3353,8 +3351,8 @@ yyreduce: ;} break; - case 230: -#line 786 "parser.y" + case 231: +#line 788 "parser.y" { (yyval.type) = (yyvsp[-4].type); (yyval.type)->fields = (yyvsp[-2].type)->fields; (yyval.type)->funcs = (yyvsp[-2].type)->funcs; @@ -3363,28 +3361,28 @@ yyreduce: ;} break; - case 231: -#line 794 "parser.y" + case 232: +#line 796 "parser.y" { (yyval.type) = NULL; ;} break; - case 232: -#line 795 "parser.y" + case 233: +#line 797 "parser.y" { (yyval.type) = find_type2((yyvsp[0].str), 0); ;} break; - case 233: -#line 798 "parser.y" - { (yyval.type) = get_type(RPC_FC_IP, (yyvsp[0].str), 0); (yyval.type)->kind = TKIND_INTERFACE; ;} - break; - case 234: -#line 799 "parser.y" +#line 800 "parser.y" { (yyval.type) = get_type(RPC_FC_IP, (yyvsp[0].str), 0); (yyval.type)->kind = TKIND_INTERFACE; ;} break; case 235: -#line 802 "parser.y" +#line 801 "parser.y" + { (yyval.type) = get_type(RPC_FC_IP, (yyvsp[0].str), 0); (yyval.type)->kind = TKIND_INTERFACE; ;} + break; + + case 236: +#line 804 "parser.y" { (yyval.ifinfo).interface = (yyvsp[0].type); (yyval.ifinfo).old_pointer_default = pointer_default; if (is_attr((yyvsp[-1].attr_list), ATTR_POINTERDEFAULT)) @@ -3396,8 +3394,8 @@ yyreduce: ;} break; - case 236: -#line 814 "parser.y" + case 237: +#line 816 "parser.y" { (yyval.type) = (yyvsp[-4].ifinfo).interface; (yyval.type)->ref = (yyvsp[-3].type); (yyval.type)->funcs = (yyvsp[-1].func_list); @@ -3409,8 +3407,8 @@ yyreduce: ;} break; - case 237: -#line 826 "parser.y" + case 238: +#line 828 "parser.y" { (yyval.type) = (yyvsp[-6].ifinfo).interface; (yyval.type)->ref = find_type2((yyvsp[-4].str), 0); if (!(yyval.type)->ref) error_loc("base class '%s' not found in import\n", (yyvsp[-4].str)); @@ -3423,93 +3421,93 @@ yyreduce: ;} break; - case 238: -#line 836 "parser.y" + case 239: +#line 838 "parser.y" { (yyval.type) = (yyvsp[0].type); ;} break; - case 239: -#line 840 "parser.y" - { (yyval.type) = (yyvsp[-1].type); if (!parse_only && do_header) write_forward((yyval.type)); ;} - break; - case 240: -#line 841 "parser.y" +#line 842 "parser.y" { (yyval.type) = (yyvsp[-1].type); if (!parse_only && do_header) write_forward((yyval.type)); ;} break; case 241: -#line 844 "parser.y" - { (yyval.type) = make_type(0, NULL); (yyval.type)->name = (yyvsp[0].str); (yyval.type)->kind = TKIND_MODULE; ;} +#line 843 "parser.y" + { (yyval.type) = (yyvsp[-1].type); if (!parse_only && do_header) write_forward((yyval.type)); ;} break; case 242: -#line 845 "parser.y" +#line 846 "parser.y" { (yyval.type) = make_type(0, NULL); (yyval.type)->name = (yyvsp[0].str); (yyval.type)->kind = TKIND_MODULE; ;} break; case 243: -#line 848 "parser.y" +#line 847 "parser.y" + { (yyval.type) = make_type(0, NULL); (yyval.type)->name = (yyvsp[0].str); (yyval.type)->kind = TKIND_MODULE; ;} + break; + + case 244: +#line 850 "parser.y" { (yyval.type) = (yyvsp[0].type); (yyval.type)->attrs = (yyvsp[-1].attr_list); ;} break; - case 244: -#line 853 "parser.y" + case 245: +#line 855 "parser.y" { (yyval.type) = (yyvsp[-3].type); (yyval.type)->funcs = (yyvsp[-1].func_list); /* FIXME: if (!parse_only && do_header) write_module($$); */ ;} break; - case 245: -#line 859 "parser.y" + case 246: +#line 861 "parser.y" { (yyval.pident) = (yyvsp[0].pident); (yyval.pident)->ptr_level++; ;} break; - case 246: -#line 860 "parser.y" + case 247: +#line 862 "parser.y" { (yyval.pident) = (yyvsp[0].pident); /* FIXME */ ;} break; - case 247: -#line 863 "parser.y" + case 248: +#line 865 "parser.y" { (yyval.pident) = make_pident((yyvsp[0].var)); ;} break; - case 249: -#line 865 "parser.y" + case 250: +#line 867 "parser.y" { (yyval.pident) = (yyvsp[-1].pident); ;} break; - case 250: -#line 869 "parser.y" + case 251: +#line 871 "parser.y" { (yyval.pident_list) = append_pident( NULL, (yyvsp[0].pident) ); ;} break; - case 251: -#line 870 "parser.y" + case 252: +#line 872 "parser.y" { (yyval.pident_list) = append_pident( (yyvsp[-2].pident_list), (yyvsp[0].pident) ); ;} break; - case 252: -#line 874 "parser.y" + case 253: +#line 876 "parser.y" { (yyval.num) = RPC_FC_RP; ;} break; - case 253: -#line 875 "parser.y" + case 254: +#line 877 "parser.y" { (yyval.num) = RPC_FC_UP; ;} break; - case 254: -#line 876 "parser.y" + case 255: +#line 878 "parser.y" { (yyval.num) = RPC_FC_FP; ;} break; - case 255: -#line 879 "parser.y" + case 256: +#line 881 "parser.y" { (yyval.type) = get_typev(RPC_FC_STRUCT, (yyvsp[-3].var), tsSTRUCT); /* overwrite RPC_FC_STRUCT with a more exact type */ (yyval.type)->type = get_struct_type( (yyvsp[-1].var_list) ); @@ -3521,70 +3519,70 @@ yyreduce: ;} break; - case 256: -#line 890 "parser.y" + case 257: +#line 892 "parser.y" { (yyval.type) = duptype(find_type("void", 0), 1); ;} break; - case 257: -#line 891 "parser.y" + case 258: +#line 893 "parser.y" { (yyval.type) = find_type((yyvsp[0].str), 0); ;} break; - case 258: -#line 892 "parser.y" - { (yyval.type) = (yyvsp[0].type); ;} - break; - case 259: -#line 893 "parser.y" - { (yyval.type) = duptype((yyvsp[0].type), 1); (yyval.type)->is_const = TRUE; ;} - break; - - case 260: #line 894 "parser.y" { (yyval.type) = (yyvsp[0].type); ;} break; - case 261: + case 260: #line 895 "parser.y" - { (yyval.type) = find_type2((yyvsp[0].str), tsENUM); ;} + { (yyval.type) = duptype((yyvsp[0].type), 1); (yyval.type)->is_const = TRUE; ;} break; - case 262: + case 261: #line 896 "parser.y" { (yyval.type) = (yyvsp[0].type); ;} break; - case 263: + case 262: #line 897 "parser.y" - { (yyval.type) = get_type(RPC_FC_STRUCT, (yyvsp[0].str), tsSTRUCT); ;} + { (yyval.type) = find_type2((yyvsp[0].str), tsENUM); ;} break; - case 264: + case 263: #line 898 "parser.y" { (yyval.type) = (yyvsp[0].type); ;} break; - case 265: + case 264: #line 899 "parser.y" - { (yyval.type) = find_type2((yyvsp[0].str), tsUNION); ;} + { (yyval.type) = get_type(RPC_FC_STRUCT, (yyvsp[0].str), tsSTRUCT); ;} + break; + + case 265: +#line 900 "parser.y" + { (yyval.type) = (yyvsp[0].type); ;} break; case 266: -#line 900 "parser.y" - { (yyval.type) = make_safearray((yyvsp[-1].type)); ;} +#line 901 "parser.y" + { (yyval.type) = find_type2((yyvsp[0].str), tsUNION); ;} break; case 267: -#line 903 "parser.y" +#line 902 "parser.y" + { (yyval.type) = make_safearray((yyvsp[-1].type)); ;} + break; + + case 268: +#line 905 "parser.y" { reg_typedefs((yyvsp[-1].type), (yyvsp[0].pident_list), (yyvsp[-2].attr_list)); process_typedefs((yyvsp[0].pident_list)); ;} break; - case 268: -#line 908 "parser.y" + case 269: +#line 910 "parser.y" { (yyval.type) = get_typev(RPC_FC_NON_ENCAPSULATED_UNION, (yyvsp[-3].var), tsUNION); (yyval.type)->kind = TKIND_UNION; (yyval.type)->fields = (yyvsp[-1].var_list); @@ -3592,8 +3590,8 @@ yyreduce: ;} break; - case 269: -#line 915 "parser.y" + case 270: +#line 917 "parser.y" { var_t *u = (yyvsp[-3].var); (yyval.type) = get_typev(RPC_FC_ENCAPSULATED_UNION, (yyvsp[-8].var), tsUNION); (yyval.type)->kind = TKIND_UNION; @@ -3608,13 +3606,13 @@ yyreduce: ;} break; - case 270: -#line 930 "parser.y" + case 271: +#line 932 "parser.y" { (yyval.num) = MAKEVERSION((yyvsp[0].num), 0); ;} break; - case 271: -#line 931 "parser.y" + case 272: +#line 933 "parser.y" { (yyval.num) = MAKEVERSION((yyvsp[-2].num), (yyvsp[0].num)); ;} break; @@ -3623,7 +3621,7 @@ yyreduce: } /* Line 1126 of yacc.c. */ -#line 3627 "parser.tab.c" +#line 3625 "parser.tab.c" yyvsp -= yylen; yyssp -= yylen; @@ -3891,7 +3889,7 @@ yyreturn: } -#line 934 "parser.y" +#line 936 "parser.y" static void decl_builtin(const char *name, unsigned char type) diff --git a/reactos/tools/widl/parser.tab.h b/reactos/tools/widl/parser.tab.h index 33694501d63..ac6a94f502f 100644 --- a/reactos/tools/widl/parser.tab.h +++ b/reactos/tools/widl/parser.tab.h @@ -140,28 +140,29 @@ tSMALL = 366, tSOURCE = 367, tSTDCALL = 368, - tSTRING = 369, - tSTRUCT = 370, - tSWITCH = 371, - tSWITCHIS = 372, - tSWITCHTYPE = 373, - tTRANSMITAS = 374, - tTRUE = 375, - tTYPEDEF = 376, - tUNION = 377, - tUNIQUE = 378, - tUNSIGNED = 379, - tUUID = 380, - tV1ENUM = 381, - tVARARG = 382, - tVERSION = 383, - tVOID = 384, - tWCHAR = 385, - tWIREMARSHAL = 386, - CAST = 387, - PPTR = 388, - NEG = 389, - ADDRESSOF = 390 + tSTRICTCONTEXTHANDLE = 369, + tSTRING = 370, + tSTRUCT = 371, + tSWITCH = 372, + tSWITCHIS = 373, + tSWITCHTYPE = 374, + tTRANSMITAS = 375, + tTRUE = 376, + tTYPEDEF = 377, + tUNION = 378, + tUNIQUE = 379, + tUNSIGNED = 380, + tUUID = 381, + tV1ENUM = 382, + tVARARG = 383, + tVERSION = 384, + tVOID = 385, + tWCHAR = 386, + tWIREMARSHAL = 387, + CAST = 388, + PPTR = 389, + NEG = 390, + ADDRESSOF = 391 }; #endif /* Tokens. */ @@ -276,28 +277,29 @@ #define tSMALL 366 #define tSOURCE 367 #define tSTDCALL 368 -#define tSTRING 369 -#define tSTRUCT 370 -#define tSWITCH 371 -#define tSWITCHIS 372 -#define tSWITCHTYPE 373 -#define tTRANSMITAS 374 -#define tTRUE 375 -#define tTYPEDEF 376 -#define tUNION 377 -#define tUNIQUE 378 -#define tUNSIGNED 379 -#define tUUID 380 -#define tV1ENUM 381 -#define tVARARG 382 -#define tVERSION 383 -#define tVOID 384 -#define tWCHAR 385 -#define tWIREMARSHAL 386 -#define CAST 387 -#define PPTR 388 -#define NEG 389 -#define ADDRESSOF 390 +#define tSTRICTCONTEXTHANDLE 369 +#define tSTRING 370 +#define tSTRUCT 371 +#define tSWITCH 372 +#define tSWITCHIS 373 +#define tSWITCHTYPE 374 +#define tTRANSMITAS 375 +#define tTRUE 376 +#define tTYPEDEF 377 +#define tUNION 378 +#define tUNIQUE 379 +#define tUNSIGNED 380 +#define tUUID 381 +#define tV1ENUM 382 +#define tVARARG 383 +#define tVERSION 384 +#define tVOID 385 +#define tWCHAR 386 +#define tWIREMARSHAL 387 +#define CAST 388 +#define PPTR 389 +#define NEG 390 +#define ADDRESSOF 391 @@ -327,7 +329,7 @@ typedef union YYSTYPE { interface_info_t ifinfo; } YYSTYPE; /* Line 1447 of yacc.c. */ -#line 331 "parser.tab.h" +#line 333 "parser.tab.h" # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 # define YYSTYPE_IS_TRIVIAL 1 diff --git a/reactos/tools/widl/parser.y b/reactos/tools/widl/parser.y index 6c8337efefc..499ae155271 100644 --- a/reactos/tools/widl/parser.y +++ b/reactos/tools/widl/parser.y @@ -225,6 +225,7 @@ static void check_all_user_types(ifref_list_t *ifaces); %token tSMALL %token tSOURCE %token tSTDCALL +%token tSTRICTCONTEXTHANDLE %token tSTRING tSTRUCT %token tSWITCH tSWITCHIS tSWITCHTYPE %token tTRANSMITAS @@ -497,6 +498,7 @@ attribute: { $$ = NULL; } | tRETVAL { $$ = make_attr(ATTR_RETVAL); } | tSIZEIS '(' m_exprs ')' { $$ = make_attrp(ATTR_SIZEIS, $3); } | tSOURCE { $$ = make_attr(ATTR_SOURCE); } + | tSTRICTCONTEXTHANDLE { $$ = make_attr(ATTR_STRICTCONTEXTHANDLE); } | tSTRING { $$ = make_attr(ATTR_STRING); } | tSWITCHIS '(' expr ')' { $$ = make_attrp(ATTR_SWITCHIS, $3); } | tSWITCHTYPE '(' type ')' { $$ = make_attrp(ATTR_SWITCHTYPE, $3); } diff --git a/reactos/tools/widl/parser.yy.c b/reactos/tools/widl/parser.yy.c index fbe3c5d00ca..6bc079aa957 100644 --- a/reactos/tools/widl/parser.yy.c +++ b/reactos/tools/widl/parser.yy.c @@ -16,10 +16,11 @@ #define yytext parser_text #define yywrap parser_wrap +#line 20 "parser.yy.c" /* A lexical scanner generated by flex */ /* Scanner skeleton version: - * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.85 95/04/24 10:48:47 vern Exp $ + * $Header: /home/daffy/u0/vern/flex/RCS/flex.skl,v 2.91 96/09/10 16:58:48 vern Exp $ */ #define FLEX_SCANNER @@ -144,6 +145,7 @@ extern FILE *yyin, *yyout; { \ /* Undo effects of setting up yytext. */ \ *yy_cp = yy_hold_char; \ + YY_RESTORE_YY_MORE_OFFSET \ yy_c_buf_p = yy_cp = yy_bp + n - YY_MORE_ADJ; \ YY_DO_BEFORE_ACTION; /* set up yytext again */ \ } \ @@ -253,7 +255,7 @@ void yy_flush_buffer YY_PROTO(( YY_BUFFER_STATE b )); #define YY_FLUSH_BUFFER yy_flush_buffer( yy_current_buffer ) YY_BUFFER_STATE yy_scan_buffer YY_PROTO(( char *base, yy_size_t size )); -YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *str )); +YY_BUFFER_STATE yy_scan_string YY_PROTO(( yyconst char *yy_str )); YY_BUFFER_STATE yy_scan_bytes YY_PROTO(( yyconst char *bytes, int len )); static void *yy_flex_alloc YY_PROTO(( yy_size_t )); @@ -480,6 +482,7 @@ static char *yy_last_accepting_cpos; #define REJECT reject_used_but_not_detected #define yymore() yymore_used_but_not_detected #define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET char *yytext; #line 1 "parser.l" #define INITIAL 0 @@ -580,7 +583,7 @@ UUID *parse_uuid(const char *u) * The flexer starts here ************************************************************************** */ -#line 584 "lex.parser_.c" +#line 587 "parser.yy.c" /* Macros after this point can all be overridden by user definitions in * section 1. @@ -602,6 +605,10 @@ static void yyunput YY_PROTO(( int c, char *buf_ptr )); static void yy_flex_strncpy YY_PROTO(( char *, yyconst char *, int )); #endif +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen YY_PROTO(( yyconst char * )); +#endif + #ifndef YY_NO_INPUT #ifdef __cplusplus static int yyinput YY_PROTO(( void )); @@ -732,7 +739,7 @@ YY_DECL #line 108 "parser.l" -#line 736 "lex.parser_.c" +#line 743 "parser.yy.c" if ( yy_init ) { @@ -978,7 +985,7 @@ YY_RULE_SETUP #line 172 "parser.l" ECHO; YY_BREAK -#line 982 "lex.parser_.c" +#line 989 "parser.yy.c" case YY_END_OF_BUFFER: { @@ -987,6 +994,7 @@ ECHO; /* Undo the effects of YY_DO_BEFORE_ACTION. */ *yy_cp = yy_hold_char; + YY_RESTORE_YY_MORE_OFFSET if ( yy_current_buffer->yy_buffer_status == YY_BUFFER_NEW ) { @@ -1132,7 +1140,7 @@ static int yy_get_next_buffer() { /* Don't try to fill the buffer, so this is an EOF. */ if ( yy_c_buf_p - yytext_ptr - YY_MORE_ADJ == 1 ) { - /* We matched a singled characater, the EOB, so + /* We matched a single character, the EOB, so * treat this as a final EOF. */ return EOB_ACT_END_OF_FILE; @@ -1159,7 +1167,7 @@ static int yy_get_next_buffer() /* don't do the read, it's not guaranteed to return an EOF, * just force an EOF */ - yy_n_chars = 0; + yy_current_buffer->yy_n_chars = yy_n_chars = 0; else { @@ -1214,6 +1222,8 @@ static int yy_get_next_buffer() /* Read in more data. */ YY_INPUT( (&yy_current_buffer->yy_ch_buf[number_to_move]), yy_n_chars, num_to_read ); + + yy_current_buffer->yy_n_chars = yy_n_chars; } if ( yy_n_chars == 0 ) @@ -1339,7 +1349,8 @@ register char *yy_bp; yy_cp += (int) (dest - source); yy_bp += (int) (dest - source); - yy_n_chars = yy_current_buffer->yy_buf_size; + yy_current_buffer->yy_n_chars = + yy_n_chars = yy_current_buffer->yy_buf_size; if ( yy_cp < yy_current_buffer->yy_ch_buf + 2 ) YY_FATAL_ERROR( "flex scanner push-back overflow" ); @@ -1377,19 +1388,31 @@ static int input() else { /* need more input */ - yytext_ptr = yy_c_buf_p; + int offset = yy_c_buf_p - yytext_ptr; ++yy_c_buf_p; switch ( yy_get_next_buffer() ) { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart( yyin ); + + /* fall through */ + case EOB_ACT_END_OF_FILE: { if ( yywrap() ) - { - yy_c_buf_p = - yytext_ptr + YY_MORE_ADJ; return EOF; - } if ( ! yy_did_buffer_switch_on_eof ) YY_NEW_FILE; @@ -1401,17 +1424,8 @@ static int input() } case EOB_ACT_CONTINUE_SCAN: - yy_c_buf_p = yytext_ptr + YY_MORE_ADJ; + yy_c_buf_p = yytext_ptr + offset; break; - - case EOB_ACT_LAST_MATCH: -#ifdef __cplusplus - YY_FATAL_ERROR( - "unexpected last match in yyinput()" ); -#else - YY_FATAL_ERROR( - "unexpected last match in input()" ); -#endif } } } @@ -1576,6 +1590,9 @@ YY_BUFFER_STATE b; #endif { + if ( ! b ) + return; + b->yy_n_chars = 0; /* We always need two end-of-buffer characters. The first causes @@ -1635,17 +1652,17 @@ yy_size_t size; #ifndef YY_NO_SCAN_STRING #ifdef YY_USE_PROTOS -YY_BUFFER_STATE yy_scan_string( yyconst char *str ) +YY_BUFFER_STATE yy_scan_string( yyconst char *yy_str ) #else -YY_BUFFER_STATE yy_scan_string( str ) -yyconst char *str; +YY_BUFFER_STATE yy_scan_string( yy_str ) +yyconst char *yy_str; #endif { int len; - for ( len = 0; str[len]; ++len ) + for ( len = 0; yy_str[len]; ++len ) ; - return yy_scan_bytes( str, len ); + return yy_scan_bytes( yy_str, len ); } #endif @@ -1766,7 +1783,7 @@ char msg[]; { \ /* Undo effects of setting up yytext. */ \ yytext[yyleng] = yy_hold_char; \ - yy_c_buf_p = yytext + n - YY_MORE_ADJ; \ + yy_c_buf_p = yytext + n; \ yy_hold_char = *yy_c_buf_p; \ *yy_c_buf_p = '\0'; \ yyleng = n; \ @@ -1792,6 +1809,22 @@ int n; } #endif +#ifdef YY_NEED_STRLEN +#ifdef YY_USE_PROTOS +static int yy_flex_strlen( yyconst char *s ) +#else +static int yy_flex_strlen( s ) +yyconst char *s; +#endif + { + register int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; + } +#endif + #ifdef YY_USE_PROTOS static void *yy_flex_alloc( yy_size_t size ) @@ -1969,6 +2002,7 @@ static const struct keyword attr_keywords[] = {"single", tSINGLE}, {"size_is", tSIZEIS}, {"source", tSOURCE}, + {"strict_context_handle", tSTRICTCONTEXTHANDLE}, {"string", tSTRING}, {"switch_is", tSWITCHIS}, {"switch_type", tSWITCHTYPE}, diff --git a/reactos/tools/widl/typegen.c b/reactos/tools/widl/typegen.c index 59bb635f5c0..041e183c386 100644 --- a/reactos/tools/widl/typegen.c +++ b/reactos/tools/widl/typegen.c @@ -43,6 +43,7 @@ static const func_t *current_func; static const type_t *current_structure; +static const ifref_t *current_iface; static struct list expr_eval_routines = LIST_INIT(expr_eval_routines); struct expr_eval_routine @@ -1472,11 +1473,9 @@ static size_t write_string_tfs(FILE *file, const attr_list_t *attrs, const char *name, unsigned int *typestring_offset, int toplevel) { - size_t start_offset = *typestring_offset; + size_t start_offset; unsigned char rtype; - update_tfsoff(type, start_offset, file); - if (toplevel && is_declptr(type)) { unsigned char flag = is_conformant_array(type) ? 0 : RPC_FC_P_SIMPLEPOINTER; @@ -1494,6 +1493,9 @@ static size_t write_string_tfs(FILE *file, const attr_list_t *attrs, } } + start_offset = *typestring_offset; + update_tfsoff(type, start_offset, file); + rtype = type->ref->type; if ((rtype != RPC_FC_BYTE) && (rtype != RPC_FC_CHAR) && (rtype != RPC_FC_WCHAR)) @@ -2056,7 +2058,10 @@ static size_t write_contexthandle_tfs(FILE *file, const type_t *type, unsigned int *typeformat_offset) { size_t start_offset = *typeformat_offset; - unsigned char flags = 0x08 /* strict */; + unsigned char flags = 0; + + if (is_attr(current_iface->attrs, ATTR_STRICTCONTEXTHANDLE)) + flags |= NDR_STRICT_CONTEXT_HANDLE; if (is_ptr(type)) flags |= 0x80; @@ -2064,20 +2069,21 @@ static size_t write_contexthandle_tfs(FILE *file, const type_t *type, { flags |= 0x40; if (!is_attr(var->attrs, ATTR_OUT)) - flags |= 0x01; + flags |= NDR_CONTEXT_HANDLE_CANNOT_BE_NULL; } if (is_attr(var->attrs, ATTR_OUT)) flags |= 0x20; WRITE_FCTYPE(file, FC_BIND_CONTEXT, *typeformat_offset); print_file(file, 2, "0x%x,\t/* Context flags: ", flags); - if (((flags & 0x21) != 0x21) && (flags & 0x01)) + /* return and can't be null values overlap */ + if (((flags & 0x21) != 0x21) && (flags & NDR_CONTEXT_HANDLE_CANNOT_BE_NULL)) print_file(file, 0, "can't be null, "); - if (flags & 0x02) + if (flags & NDR_CONTEXT_HANDLE_SERIALIZE) print_file(file, 0, "serialize, "); - if (flags & 0x04) + if (flags & NDR_CONTEXT_HANDLE_NO_SERIALIZE) print_file(file, 0, "no serialize, "); - if (flags & 0x08) + if (flags & NDR_STRICT_CONTEXT_HANDLE) print_file(file, 0, "strict, "); if ((flags & 0x21) == 0x20) print_file(file, 0, "out, "); @@ -2279,6 +2285,7 @@ static size_t process_tfs(FILE *file, const ifref_list_t *ifaces, type_pred_t pr if (iface->iface->funcs) { const func_t *func; + current_iface = iface; LIST_FOR_EACH_ENTRY( func, iface->iface->funcs, const func_t, entry ) { if (is_local(func->def->attrs)) continue; @@ -2706,10 +2713,11 @@ static void write_remoting_arg(FILE *file, int indent, const func_t *func, } else { - print_file(file, indent, "NdrServerContextMarshall(\n"); + print_file(file, indent, "NdrServerContextNewMarshall(\n"); print_file(file, indent + 1, "&_StubMsg,\n"); print_file(file, indent + 1, "(NDR_SCONTEXT)%s,\n", var->name); - print_file(file, indent + 1, "(NDR_RUNDOWN)%s_rundown);\n", get_context_handle_type_name(var->type)); + print_file(file, indent + 1, "(NDR_RUNDOWN)%s_rundown,\n", get_context_handle_type_name(var->type)); + print_file(file, indent + 1, "(PFORMAT_STRING)&__MIDL_TypeFormatString.Format[%d]);\n", start_offset); } } else if (phase == PHASE_UNMARSHAL) @@ -2722,7 +2730,11 @@ static void write_remoting_arg(FILE *file, int indent, const func_t *func, print_file(file, indent + 1, "_Handle);\n"); } else - print_file(file, indent, "%s = NdrServerContextUnmarshall(&_StubMsg);\n", var->name); + { + print_file(file, indent, "%s = NdrServerContextNewUnmarshall(\n", var->name); + print_file(file, indent + 1, "&_StubMsg,\n"); + print_file(file, indent + 1, "(PFORMAT_STRING)&__MIDL_TypeFormatString.Format[%d]);\n", start_offset); + } } } else if (is_user_type(var->type)) @@ -2743,10 +2755,11 @@ static void write_remoting_arg(FILE *file, int indent, const func_t *func, } if ((phase == PHASE_FREE) || (pointer_type == RPC_FC_UP)) - print_phase_function(file, indent, "Pointer", phase, var, start_offset); + print_phase_function(file, indent, "Pointer", phase, var, + start_offset - (type->size_is ? 4 : 2)); else print_phase_function(file, indent, "ConformantString", phase, var, - start_offset + (type->size_is ? 4 : 2)); + start_offset); } } else if (is_array(type)) @@ -2813,7 +2826,8 @@ static void write_remoting_arg(FILE *file, int indent, const func_t *func, if (type->type == RPC_FC_BOGUS_ARRAY || type->type == RPC_FC_CVARRAY || ((type->type == RPC_FC_SMVARRAY || type->type == RPC_FC_LGVARRAY) && in_attr) || - (type->type == RPC_FC_CARRAY && !in_attr)) { + (type->type == RPC_FC_CARRAY && !in_attr)) + { print_file(file, indent, "if (%s)\n", var->name); indent++; print_file(file, indent, "_StubMsg.pfnFree(%s);\n", var->name); diff --git a/reactos/tools/widl/widl_ros.diff b/reactos/tools/widl/widl_ros.diff index 12cad2ba1a1..9c2902e3584 100644 --- a/reactos/tools/widl/widl_ros.diff +++ b/reactos/tools/widl/widl_ros.diff @@ -1,6 +1,6 @@ Index: hash.c =================================================================== ---- hash.c (revision 31815) +--- hash.c (revision 31863) +++ hash.c (working copy) @@ -21,9 +21,7 @@ #include @@ -36,7 +36,7 @@ Index: hash.c break; Index: server.c =================================================================== ---- server.c (revision 31815) +--- server.c (revision 31863) +++ server.c (working copy) @@ -390,6 +390,7 @@ print_server("/*** Autogenerated by WIDL %s from %s - Do not edit ***/\n", PACKAGE_VERSION, input_name); @@ -48,7 +48,7 @@ Index: server.c } Index: typelib.c =================================================================== ---- typelib.c (revision 31815) +--- typelib.c (revision 31863) +++ typelib.c (working copy) @@ -35,8 +35,7 @@ #define NONAMELESSUNION @@ -62,7 +62,7 @@ Index: typelib.c #include "utils.h" Index: utils.c =================================================================== ---- utils.c (revision 31815) +--- utils.c (revision 31863) +++ utils.c (working copy) @@ -136,6 +136,9 @@ name = "widl.tab"; @@ -76,7 +76,7 @@ Index: utils.c Index: widl.c =================================================================== ---- widl.c (revision 31815) +--- widl.c (revision 31863) +++ widl.c (working copy) @@ -166,6 +166,9 @@ int i; @@ -90,7 +90,7 @@ Index: widl.c token = xstrdup(name); Index: widltypes.h =================================================================== ---- widltypes.h (revision 31815) +--- widltypes.h (revision 31863) +++ widltypes.h (working copy) @@ -21,6 +21,13 @@ #ifndef __WIDL_WIDLTYPES_H @@ -108,7 +108,7 @@ Index: widltypes.h #include "wine/rpcfc.h" Index: write_msft.c =================================================================== ---- write_msft.c (revision 31815) +--- write_msft.c (revision 31863) +++ write_msft.c (working copy) @@ -40,10 +40,8 @@ #define NONAMELESSUNION diff --git a/reactos/tools/widl/widltypes.h b/reactos/tools/widl/widltypes.h index 71b403c314a..af602f40c8a 100644 --- a/reactos/tools/widl/widltypes.h +++ b/reactos/tools/widl/widltypes.h @@ -128,6 +128,7 @@ enum attr_type ATTR_RETVAL, ATTR_SIZEIS, ATTR_SOURCE, + ATTR_STRICTCONTEXTHANDLE, ATTR_STRING, ATTR_SWITCHIS, ATTR_SWITCHTYPE,