From bf190f73064542fbb21e3ff5d0281d2306bbba82 Mon Sep 17 00:00:00 2001 From: rdb Date: Sun, 8 Oct 2017 23:56:25 +0200 Subject: [PATCH] interrogate: support MAKE_MAP_PROPERTY --- dtool/src/cppparser/cppBison.cxx.prebuilt | 9088 +++++++++-------- dtool/src/cppparser/cppBison.yxx | 277 +- dtool/src/cppparser/cppMakeProperty.cxx | 36 +- dtool/src/cppparser/cppMakeProperty.h | 71 +- dtool/src/dtoolbase/dtoolbase.h | 2 + dtool/src/dtoolutil/executionEnvironment.h | 4 + dtool/src/interrogate/interfaceMaker.cxx | 14 +- dtool/src/interrogate/interfaceMaker.h | 4 +- .../interfaceMakerPythonNative.cxx | 532 +- .../interrogate/interfaceMakerPythonNative.h | 4 + dtool/src/interrogate/interrogateBuilder.cxx | 137 +- dtool/src/interrogatedb/interrogateElement.I | 10 + dtool/src/interrogatedb/interrogateElement.h | 4 + dtool/src/interrogatedb/py_panda.cxx | 218 +- dtool/src/interrogatedb/py_panda.h | 29 +- panda/src/chan/animGroup.h | 5 +- panda/src/chan/partGroup.h | 4 +- panda/src/gobj/geomVertexFormat.h | 3 + panda/src/gobj/texture.h | 2 + panda/src/gobj/transformBlend.I | 11 + panda/src/gobj/transformBlend.h | 6 + panda/src/pgraph/camera.h | 4 + panda/src/pgraph/nodePath.h | 3 + panda/src/pgraph/renderState.h | 2 + panda/src/pgraph/shaderInput.I | 8 + panda/src/pgraph/shaderInput.h | 1 + panda/src/pgraph/textureAttrib.h | 6 + 27 files changed, 5650 insertions(+), 4835 deletions(-) diff --git a/dtool/src/cppparser/cppBison.cxx.prebuilt b/dtool/src/cppparser/cppBison.cxx.prebuilt index a0d5622887..c8b8754035 100644 --- a/dtool/src/cppparser/cppBison.cxx.prebuilt +++ b/dtool/src/cppparser/cppBison.cxx.prebuilt @@ -857,16 +857,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 104 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 7000 +#define YYLAST 7153 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 170 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 109 +#define YYNNTS 110 /* YYNRULES -- Number of rules. */ -#define YYNRULES 757 +#define YYNRULES 761 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 1539 +#define YYNSTATES 1557 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ @@ -927,82 +927,83 @@ static const yytype_uint8 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 448, 448, 449, 453, 460, 461, 462, 466, 467, - 471, 475, 479, 492, 491, 503, 504, 505, 506, 507, - 508, 509, 522, 531, 535, 543, 547, 551, 562, 583, - 613, 630, 658, 695, 717, 750, 772, 783, 797, 796, - 811, 815, 820, 824, 835, 839, 843, 847, 851, 855, - 859, 863, 867, 871, 875, 879, 884, 888, 895, 896, - 900, 901, 902, 907, 906, 922, 932, 931, 948, 956, - 964, 975, 991, 990, 1005, 1020, 1029, 1044, 1043, 1068, - 1067, 1095, 1094, 1125, 1124, 1143, 1142, 1163, 1162, 1194, - 1193, 1219, 1232, 1236, 1240, 1244, 1257, 1261, 1265, 1269, - 1273, 1278, 1283, 1287, 1291, 1295, 1302, 1306, 1310, 1314, - 1318, 1322, 1326, 1330, 1334, 1338, 1342, 1346, 1350, 1354, - 1358, 1362, 1366, 1370, 1374, 1378, 1382, 1386, 1390, 1394, - 1398, 1402, 1406, 1410, 1414, 1418, 1422, 1426, 1430, 1434, - 1438, 1442, 1446, 1450, 1454, 1461, 1462, 1463, 1467, 1469, - 1468, 1476, 1477, 1481, 1482, 1486, 1492, 1501, 1502, 1506, - 1510, 1514, 1518, 1524, 1530, 1536, 1543, 1548, 1557, 1561, - 1566, 1574, 1586, 1590, 1604, 1619, 1624, 1629, 1634, 1639, - 1644, 1649, 1654, 1660, 1659, 1690, 1700, 1710, 1714, 1718, - 1727, 1731, 1736, 1740, 1745, 1753, 1758, 1766, 1770, 1775, - 1779, 1784, 1792, 1797, 1805, 1809, 1816, 1820, 1827, 1831, - 1835, 1839, 1843, 1850, 1854, 1858, 1862, 1866, 1870, 1877, - 1878, 1879, 1883, 1886, 1887, 1888, 1892, 1897, 1903, 1909, - 1914, 1920, 1926, 1930, 1941, 1945, 1955, 1959, 1963, 1968, - 1973, 1978, 1983, 1988, 1993, 2001, 2005, 2009, 2014, 2019, - 2024, 2029, 2034, 2039, 2044, 2050, 2058, 2063, 2068, 2073, - 2078, 2083, 2088, 2093, 2098, 2103, 2109, 2117, 2121, 2126, - 2131, 2136, 2141, 2146, 2151, 2156, 2161, 2169, 2173, 2178, - 2183, 2188, 2193, 2198, 2203, 2208, 2213, 2218, 2224, 2231, - 2238, 2248, 2252, 2260, 2264, 2268, 2272, 2276, 2292, 2308, - 2317, 2321, 2331, 2338, 2349, 2353, 2361, 2365, 2369, 2373, - 2377, 2393, 2409, 2427, 2436, 2440, 2450, 2457, 2461, 2469, - 2473, 2489, 2505, 2514, 2524, 2531, 2535, 2543, 2547, 2552, - 2556, 2564, 2565, 2566, 2567, 2572, 2571, 2596, 2595, 2625, - 2626, 2633, 2634, 2638, 2639, 2643, 2647, 2651, 2655, 2659, - 2663, 2667, 2671, 2675, 2679, 2686, 2694, 2698, 2702, 2707, - 2715, 2719, 2726, 2727, 2732, 2739, 2740, 2745, 2753, 2757, - 2761, 2768, 2772, 2776, 2784, 2783, 2806, 2805, 2828, 2829, - 2833, 2839, 2846, 2855, 2856, 2857, 2861, 2865, 2869, 2873, - 2877, 2881, 2886, 2891, 2896, 2901, 2905, 2910, 2919, 2924, - 2932, 2936, 2940, 2948, 2958, 2958, 2968, 2969, 2973, 2974, - 2975, 2976, 2977, 2978, 2979, 2980, 2981, 2982, 2983, 2984, - 2984, 2984, 2985, 2985, 2985, 2985, 2986, 2986, 2986, 2986, - 2986, 2987, 2987, 2987, 2988, 2988, 2988, 2988, 2988, 2989, - 2989, 2989, 2989, 2989, 2990, 2990, 2991, 2991, 2991, 2991, - 2991, 2992, 2992, 2992, 2992, 2992, 2993, 2993, 2993, 2993, - 2994, 2994, 2994, 2994, 2994, 2995, 2995, 2995, 2995, 2995, - 2996, 2996, 2996, 2996, 2996, 2996, 2997, 2997, 2997, 2997, - 2997, 2998, 2998, 2998, 2998, 2999, 2999, 2999, 2999, 3000, - 3000, 3000, 3000, 3000, 3001, 3001, 3001, 3001, 3002, 3002, - 3002, 3002, 3002, 3003, 3003, 3003, 3003, 3004, 3004, 3004, - 3004, 3004, 3005, 3005, 3008, 3008, 3008, 3008, 3008, 3008, - 3008, 3008, 3008, 3008, 3008, 3009, 3009, 3009, 3009, 3009, - 3009, 3009, 3009, 3009, 3009, 3010, 3010, 3014, 3018, 3025, - 3029, 3036, 3040, 3047, 3051, 3055, 3059, 3063, 3067, 3071, - 3075, 3087, 3091, 3095, 3099, 3103, 3107, 3111, 3115, 3119, - 3123, 3127, 3131, 3135, 3139, 3143, 3147, 3151, 3155, 3159, - 3163, 3167, 3171, 3175, 3179, 3183, 3187, 3191, 3195, 3199, - 3203, 3207, 3215, 3219, 3223, 3227, 3231, 3235, 3239, 3249, - 3259, 3265, 3271, 3277, 3283, 3289, 3295, 3302, 3309, 3316, - 3323, 3329, 3335, 3339, 3351, 3355, 3359, 3363, 3367, 3378, - 3389, 3393, 3397, 3401, 3405, 3409, 3413, 3417, 3421, 3425, - 3429, 3433, 3437, 3441, 3445, 3449, 3453, 3457, 3461, 3465, - 3469, 3473, 3477, 3481, 3485, 3489, 3493, 3497, 3501, 3505, - 3509, 3516, 3520, 3524, 3528, 3532, 3536, 3540, 3544, 3548, - 3554, 3560, 3564, 3570, 3577, 3581, 3585, 3589, 3593, 3597, - 3601, 3605, 3609, 3613, 3617, 3621, 3625, 3629, 3633, 3637, - 3641, 3655, 3659, 3663, 3667, 3671, 3675, 3679, 3683, 3695, - 3699, 3703, 3707, 3711, 3722, 3733, 3737, 3741, 3745, 3749, - 3753, 3757, 3761, 3765, 3769, 3773, 3777, 3781, 3785, 3789, - 3793, 3797, 3801, 3805, 3809, 3813, 3817, 3821, 3825, 3829, - 3833, 3837, 3841, 3845, 3849, 3856, 3860, 3864, 3868, 3872, - 3876, 3880, 3884, 3888, 3894, 3900, 3908, 3912, 3916, 3920, - 3927, 3937, 3943, 3949, 3959, 3971, 3979, 3983, 4013, 4017, - 4021, 4025, 4029, 4033, 4039, 4043, 4047, 4051, 4055, 4066, - 4070, 4074, 4078, 4086, 4090, 4094, 4100, 4111 + 0, 449, 449, 450, 454, 461, 462, 463, 467, 468, + 472, 476, 480, 493, 492, 504, 505, 506, 507, 508, + 509, 510, 523, 532, 536, 544, 548, 552, 573, 600, + 621, 650, 686, 698, 719, 755, 777, 813, 835, 846, + 860, 859, 874, 878, 883, 887, 898, 902, 906, 910, + 914, 918, 922, 926, 930, 934, 938, 942, 947, 951, + 958, 959, 963, 964, 965, 970, 969, 985, 995, 994, + 1011, 1019, 1027, 1038, 1054, 1053, 1068, 1083, 1092, 1107, + 1106, 1131, 1130, 1158, 1157, 1188, 1187, 1206, 1205, 1226, + 1225, 1257, 1256, 1282, 1295, 1299, 1303, 1307, 1320, 1324, + 1328, 1332, 1336, 1341, 1346, 1350, 1354, 1358, 1365, 1369, + 1373, 1377, 1381, 1385, 1389, 1393, 1397, 1401, 1405, 1409, + 1413, 1417, 1421, 1425, 1429, 1433, 1437, 1441, 1445, 1449, + 1453, 1457, 1461, 1465, 1469, 1473, 1477, 1481, 1485, 1489, + 1493, 1497, 1501, 1505, 1509, 1513, 1517, 1524, 1525, 1526, + 1530, 1532, 1531, 1539, 1540, 1544, 1545, 1549, 1555, 1564, + 1565, 1569, 1573, 1577, 1581, 1587, 1593, 1599, 1606, 1611, + 1620, 1624, 1629, 1637, 1649, 1653, 1667, 1682, 1687, 1692, + 1697, 1702, 1707, 1712, 1717, 1723, 1722, 1753, 1763, 1773, + 1777, 1781, 1790, 1794, 1802, 1806, 1811, 1815, 1820, 1828, + 1833, 1841, 1845, 1850, 1854, 1859, 1867, 1872, 1880, 1884, + 1891, 1895, 1902, 1906, 1910, 1914, 1918, 1925, 1929, 1933, + 1937, 1941, 1945, 1952, 1953, 1954, 1958, 1961, 1962, 1963, + 1967, 1972, 1978, 1984, 1989, 1995, 2001, 2005, 2016, 2020, + 2030, 2034, 2038, 2043, 2048, 2053, 2058, 2063, 2068, 2076, + 2080, 2084, 2089, 2094, 2099, 2104, 2109, 2114, 2119, 2125, + 2133, 2138, 2143, 2148, 2153, 2158, 2163, 2168, 2173, 2178, + 2184, 2192, 2196, 2201, 2206, 2211, 2216, 2221, 2226, 2231, + 2236, 2244, 2248, 2253, 2258, 2263, 2268, 2273, 2278, 2283, + 2288, 2293, 2299, 2306, 2313, 2323, 2327, 2335, 2339, 2343, + 2347, 2351, 2367, 2383, 2392, 2396, 2406, 2413, 2424, 2428, + 2436, 2440, 2444, 2448, 2452, 2468, 2484, 2502, 2511, 2515, + 2525, 2532, 2536, 2544, 2548, 2564, 2580, 2589, 2599, 2606, + 2610, 2618, 2622, 2627, 2631, 2639, 2640, 2641, 2642, 2647, + 2646, 2671, 2670, 2700, 2701, 2708, 2709, 2713, 2714, 2718, + 2722, 2726, 2730, 2734, 2738, 2742, 2746, 2750, 2754, 2761, + 2769, 2773, 2777, 2782, 2790, 2794, 2801, 2802, 2807, 2814, + 2815, 2820, 2828, 2832, 2836, 2843, 2847, 2851, 2859, 2858, + 2881, 2880, 2903, 2904, 2908, 2914, 2921, 2930, 2931, 2932, + 2936, 2940, 2944, 2948, 2952, 2956, 2961, 2966, 2971, 2976, + 2980, 2985, 2994, 2999, 3007, 3011, 3015, 3023, 3033, 3033, + 3043, 3044, 3048, 3049, 3050, 3051, 3052, 3053, 3054, 3055, + 3056, 3057, 3058, 3059, 3059, 3059, 3060, 3060, 3060, 3060, + 3061, 3061, 3061, 3061, 3061, 3062, 3062, 3062, 3063, 3063, + 3063, 3063, 3063, 3064, 3064, 3064, 3064, 3064, 3065, 3065, + 3066, 3066, 3066, 3066, 3066, 3067, 3067, 3067, 3067, 3067, + 3068, 3068, 3068, 3068, 3069, 3069, 3069, 3069, 3069, 3070, + 3070, 3070, 3070, 3070, 3071, 3071, 3071, 3071, 3071, 3071, + 3072, 3072, 3072, 3072, 3072, 3073, 3073, 3073, 3073, 3074, + 3074, 3074, 3074, 3075, 3075, 3075, 3075, 3075, 3076, 3076, + 3076, 3076, 3077, 3077, 3077, 3077, 3077, 3078, 3078, 3078, + 3078, 3079, 3079, 3079, 3079, 3079, 3080, 3080, 3083, 3083, + 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3083, 3084, + 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3084, 3085, + 3085, 3089, 3093, 3100, 3104, 3111, 3115, 3122, 3126, 3130, + 3134, 3138, 3142, 3146, 3150, 3162, 3166, 3170, 3174, 3178, + 3182, 3186, 3190, 3194, 3198, 3202, 3206, 3210, 3214, 3218, + 3222, 3226, 3230, 3234, 3238, 3242, 3246, 3250, 3254, 3258, + 3262, 3266, 3270, 3274, 3278, 3282, 3290, 3294, 3298, 3302, + 3306, 3310, 3314, 3324, 3334, 3340, 3346, 3352, 3358, 3364, + 3370, 3377, 3384, 3391, 3398, 3404, 3410, 3414, 3426, 3430, + 3434, 3438, 3442, 3453, 3464, 3468, 3472, 3476, 3480, 3484, + 3488, 3492, 3496, 3500, 3504, 3508, 3512, 3516, 3520, 3524, + 3528, 3532, 3536, 3540, 3544, 3548, 3552, 3556, 3560, 3564, + 3568, 3572, 3576, 3580, 3584, 3591, 3595, 3599, 3603, 3607, + 3611, 3615, 3619, 3623, 3629, 3635, 3639, 3645, 3652, 3656, + 3660, 3664, 3668, 3672, 3676, 3680, 3684, 3688, 3692, 3696, + 3700, 3704, 3708, 3712, 3716, 3730, 3734, 3738, 3742, 3746, + 3750, 3754, 3758, 3770, 3774, 3778, 3782, 3786, 3797, 3808, + 3812, 3816, 3820, 3824, 3828, 3832, 3836, 3840, 3844, 3848, + 3852, 3856, 3860, 3864, 3868, 3872, 3876, 3880, 3884, 3888, + 3892, 3896, 3900, 3904, 3908, 3912, 3916, 3920, 3924, 3931, + 3935, 3939, 3943, 3947, 3951, 3955, 3959, 3963, 3969, 3975, + 3983, 3987, 3991, 3995, 4002, 4012, 4018, 4024, 4034, 4046, + 4054, 4058, 4088, 4092, 4096, 4100, 4104, 4108, 4114, 4118, + 4122, 4126, 4130, 4141, 4145, 4149, 4153, 4161, 4165, 4169, + 4175, 4186 }; #endif @@ -1057,8 +1058,9 @@ static const char *const yytname[] = "template_formal_parameter", "template_formal_parameter_type", "instance_identifier", "$@14", "instance_identifier_and_maybe_trailing_return_type", - "maybe_trailing_return_type", "function_parameter_list", - "function_parameters", "formal_parameter_list", "formal_parameters", + "maybe_trailing_return_type", "maybe_comma_identifier", + "function_parameter_list", "function_parameters", + "formal_parameter_list", "formal_parameters", "template_parameter_maybe_initialize", "maybe_initialize", "maybe_initialize_or_constructor_body", "maybe_initialize_or_function_body", "structure_init", @@ -1106,12 +1108,12 @@ static const yytype_uint16 yytoknum[] = }; # endif -#define YYPACT_NINF -918 +#define YYPACT_NINF -923 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-918))) + (!!((Yystate) == (-923))) -#define YYTABLE_NINF -753 +#define YYTABLE_NINF -757 #define yytable_value_is_error(Yytable_value) \ 0 @@ -1120,160 +1122,162 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 328, -918, 3448, 5658, 36, 4726, -918, -918, -918, -918, - -918, -918, -918, -918, -50, -112, -100, -83, -71, -51, - -98, -22, -52, -918, -918, 11, 56, 78, 95, 116, - 121, 154, 162, 167, 174, 178, 185, 195, 198, 207, - 215, 231, 259, 267, 5969, -918, -918, 13, 269, 285, - 10, 296, -918, 290, 292, 295, 3448, 3448, 3448, 3448, - 3448, 1577, 1319, 3448, 4528, -918, 81, -918, -918, -918, - -918, -918, -918, -918, -918, 5768, 321, -918, -30, -918, - -918, 3803, 4177, 4177, -918, 5453, 325, -918, 4177, -918, - -918, 87, 87, -918, -918, -918, -918, 163, 111, -918, - -918, -918, -918, -918, -918, 6089, 342, -918, 6860, 6860, - 6860, -918, 6860, 5109, 6860, -101, -918, 6851, 347, 348, - 350, 351, 6860, 1165, 237, 368, 373, 6860, 6860, 360, - 6687, 6860, 6860, 5777, 6860, 6860, -918, -918, -918, -918, - 3942, -918, -918, -918, -918, -918, 3448, 3448, 5658, 3448, - 3448, 3448, 3448, 5658, 3448, 5658, 3448, 5658, 3448, 5658, - 5658, 5658, 5658, 5658, 5658, 5658, 5658, 5658, 5658, 5658, - 5658, 5658, 5658, 5658, 3448, -918, -918, 364, 5453, 366, - 370, 5453, -918, -918, 5658, 3448, 3448, 372, 5197, 5658, - 1577, 3448, 3448, 50, 50, 50, 50, 50, -50, -100, - -83, -71, -51, -22, 11, 78, 4083, 5386, 5645, 6631, - 295, 371, -110, 4528, -918, -918, -918, -918, -918, -918, - -918, -918, -918, -918, -918, -918, 5453, 5453, -116, 390, - -918, -918, 50, 3448, 3448, 3448, 3448, 3448, 3448, 3448, - 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, - 3448, 3448, 3448, 3448, 2510, 3448, -918, -918, 87, 87, - 2644, -918, -918, -918, 4177, -918, -918, -918, -918, 5658, - -918, 384, 1154, 401, 87, 87, 401, 401, 4839, 377, - -918, 385, -918, -918, -918, -918, -918, -918, 867, 404, - 4526, -918, 5453, 510, 419, 403, 2237, 5112, 6860, -918, - -918, -918, -918, 6860, -918, -918, -918, -918, 6779, 1693, - -918, 5453, 5453, 5453, 5453, -918, -918, 435, -918, -918, - -918, -918, -918, 3448, -918, 4035, -918, 424, -918, 4121, - -918, 5453, 4, -918, -918, 439, 422, -918, 426, 5854, - 5453, 427, -918, 5453, -918, -9, 440, -918, -918, -918, - -918, 2568, -918, -918, 428, 446, -918, 434, 436, 438, - 441, 442, 447, 468, 459, 470, 462, 463, 464, 466, - 486, 471, -72, 487, 472, 473, 477, 478, 479, 480, - 481, 483, 484, 488, 489, 3448, -918, 5658, 3448, -918, - 6665, 497, 491, 492, 5453, 493, 494, 506, 498, 4247, - 499, 500, 3448, 3448, -918, 621, -918, 2434, 503, 3448, - -918, -918, 3772, 4892, 1052, 1052, 1444, 1444, 1031, 1031, - -918, 2800, 4908, 4924, 4964, 1444, 1444, 75, 75, 50, - 50, 50, -918, -918, -67, 2256, -918, -918, 502, 4268, - 504, 401, 509, 520, 5453, 401, 401, 401, 401, 401, - 515, -918, 377, -918, 377, -918, 515, 515, -918, 401, - 6089, 5744, 5627, 401, 401, 523, 20, -918, 392, 532, - -918, 3448, 5453, 496, -918, -918, -918, -918, 867, -13, - 153, 161, 6089, 526, 232, -918, -918, -918, 546, 6860, - 6089, 1717, -50, 531, 4286, -918, -918, -918, 535, 551, - 552, 555, 557, 6163, -918, 4190, 5400, 383, 542, -9, - -918, -918, 561, -918, 5658, -918, 17, 2778, 5993, 1081, - -918, 5658, -918, 548, 278, -918, -918, 2376, -918, -918, - 310, -918, 564, 4526, -918, -918, -918, -918, -918, -918, - -918, 558, -918, 560, -918, -918, -918, -918, 5658, -918, - 5658, -918, 5658, -918, -918, -918, -918, -918, -918, -918, - -918, -918, -918, -918, 4305, 544, 549, -918, 562, -918, - -918, 559, -918, -918, 565, -918, -918, -918, -918, 50, - 4528, -918, 5453, 390, 5501, 978, -918, 4528, 3448, -918, - -918, -918, -918, -918, 515, 401, -918, 515, 515, 515, - 515, 515, 3448, -39, 680, 5768, 392, 532, -918, 38, - 66, -918, -918, 5532, 571, 392, 392, 392, 392, 392, - 392, -126, -918, -918, 573, 5453, 532, 532, 532, 532, - 532, 532, -77, 566, 4528, -918, 189, -918, 591, 690, - 2237, -918, 663, 6089, -918, -918, -918, -918, -918, -918, - -918, -918, 576, 586, 587, -918, -918, 5969, -918, -918, - 590, 18, 594, -918, 582, 3448, 3448, 3448, 3448, 1577, - 3448, 608, 59, -918, -918, 4546, -918, 81, -918, 6860, - 6860, 6235, -918, 781, 782, 784, 785, -918, -918, 218, - 648, -918, -918, -918, -918, 5415, -918, 641, 652, 4476, - -918, 1139, -918, -918, 17, -918, 310, -918, 653, 5501, - 643, 310, 5501, 639, 4341, 1081, 649, 1081, 1081, 1081, - 1081, 1081, 0, -918, -918, 645, 6307, -918, -918, -918, - 5453, 183, -918, 640, -918, 661, 664, 2912, 3068, 655, - 310, 310, 3875, 310, 310, 310, 310, -918, -5, 411, - -918, 867, -918, 3448, 3448, 650, 651, 656, -918, -918, - -918, 3448, -918, 3448, -918, 657, -918, 5883, 6089, -918, - -918, -918, -918, -918, -918, 660, -918, -918, 673, -918, - 4528, 515, 662, 666, 5627, 392, 532, -126, -77, 668, - 670, 978, -918, -918, 392, 671, 671, 671, 671, 671, - 148, 3448, -918, 532, -918, 672, 672, 672, 672, 672, - 200, 3448, -918, 676, -918, 3448, -918, 669, 4359, 6379, - -918, 689, -918, -918, 5658, 5658, 5658, 678, 5658, 679, - 5283, 5658, 1577, 50, 50, 50, 50, 681, -65, 50, - -918, -918, 3582, 3448, 3448, 3448, 3448, 3448, 3448, 3448, - 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, 3448, - 3448, 3448, 3448, 3448, 3046, 3448, -918, -918, -918, -918, - -23, 674, 697, 698, 6451, 12, -918, 1139, 6739, 5400, - 5453, 696, 692, 1139, 1139, 1139, 1139, 1139, 1139, -25, - 672, -918, 411, -918, 682, 310, 316, 683, -918, -918, - 301, 1081, 687, 687, 687, 687, 687, -918, 3448, -918, - -918, 5501, 686, 354, -918, 52, 707, 708, -918, 2070, - -918, -918, -918, 2912, 693, 710, 4528, -918, -918, 310, - 344, 344, 849, -918, -918, -918, -918, -918, -918, -918, - -918, -918, -918, -918, -918, -918, -918, -918, -918, -918, - -918, -918, -918, -918, -918, -918, -918, -918, -918, -918, - -918, -918, -918, -918, -918, -918, -918, -918, -918, 695, - 705, -918, -918, 344, 344, 344, 398, 858, -918, 3448, - -918, 2376, 718, -918, 591, 53, 97, -918, -918, -918, - 132, 150, -918, 5969, 87, 818, 1059, -918, -918, 5501, - -918, -126, -77, -918, -918, 5501, 5501, -918, 671, 711, - 712, 672, 713, 720, 3336, -918, -918, -918, 5165, 733, - 743, -918, 714, 738, 745, 3448, 747, 5453, 739, 742, - 748, 746, 4456, 3448, -918, -918, -918, 3772, 4892, 1052, - 1052, 1444, 1444, 1031, 1031, -918, 4510, 4908, 4924, 4964, - 1444, 1444, 75, 75, 50, 50, 50, -918, -918, 216, - 3601, 6523, 889, 761, 901, 903, 904, -918, 767, -25, - 672, -918, -918, -918, -918, -918, -918, 5658, 1139, 3721, - -918, -918, 769, -918, -918, 433, 753, -918, -918, 687, - 5501, 759, 764, -918, -918, 5453, 3448, 3448, -918, -918, - -918, -918, -918, -918, -918, -918, -918, -918, -918, -918, - -918, -918, -918, -918, -918, -918, -918, -918, -918, -918, - -918, -918, -918, -918, -918, -918, -918, -918, -918, -918, - -918, -918, -918, -918, -918, -918, -918, -918, -918, -918, - -918, -918, -918, -918, -918, -918, -918, -918, -918, -918, - -918, -918, -918, -918, -918, -918, -918, -918, -918, -918, - -918, -918, -918, -918, -918, -918, -918, -918, -918, -918, - -918, -918, -918, -918, -918, -918, -918, -918, -918, -918, - -918, -918, -918, -918, -918, -918, -918, -918, -918, -918, - -918, -918, -918, -918, -918, -918, -918, -918, -918, -918, - -918, -918, -918, -918, -918, -918, -918, -918, -918, -918, - -918, -918, -918, -918, -918, -918, -918, -918, -918, -918, - -918, -918, -918, -918, -918, -918, -918, -918, -918, -918, - 765, -918, 3180, 344, -918, -918, -918, -918, -918, 1717, - 762, 3068, 310, -918, -918, -918, -918, 978, 87, -918, - -918, -918, -4, 768, 770, -918, -918, 771, 773, 5501, - -918, 5501, -918, -918, 6002, 6061, 6075, 5453, 508, -918, - -918, 919, -918, 5165, -918, 776, 778, 777, 783, 803, - -918, -918, 806, -918, -918, 50, 3448, -918, -918, -918, - 217, -918, 222, 805, 225, -918, -918, -918, 808, 819, - 820, 821, 19, 824, 3721, 3721, 3721, 3721, 3721, 1577, - 3721, 4607, -918, 310, 1275, 809, -918, 1275, 5501, 826, - -918, -918, 817, -918, 827, 831, 1890, -918, 2912, 4528, - 833, -918, -918, 839, -918, 836, -918, -918, -918, -918, - -918, 840, 841, 5618, -918, 5618, -918, 5618, -918, -918, - 5618, 5618, 5618, -918, 6595, -918, 3448, 3448, -918, 3448, - -918, 3448, 4528, 1000, 864, 1005, 868, 869, 1008, 872, - 5658, 5658, 5658, 5658, 859, 5314, 5658, 105, 105, 105, - 105, 105, 856, 228, 105, 3721, 3721, 3721, 3721, 3721, - 3721, 3721, 3721, 3721, 3721, 3721, 3721, 3721, 3721, 3721, - 3721, 3721, 3721, 3721, 3314, 3448, -918, -918, 5501, 860, - -918, 1275, -918, -918, 1018, -918, 870, -918, -918, -918, - 978, 978, 978, -918, -918, -918, -918, -918, -918, -918, - -918, -918, 233, 242, 246, 249, 874, -918, 888, -918, - -918, 251, -918, 876, 880, 887, 890, 5453, 879, 883, - 894, 3721, -918, 4718, 4948, 3957, 3957, 1821, 1821, 1352, - 1352, -918, 4564, 334, 4981, 4990, 169, 169, 105, 105, - 105, -918, -918, 272, 3806, 5501, 885, -918, 1275, -918, - -918, 1275, 891, -918, -918, -918, 1275, 1275, -918, -918, - -918, -918, 907, 1042, 1046, 909, -918, 895, 896, 897, - 899, -918, -918, 902, 105, 3721, -918, -918, 910, -918, - 1275, -918, -918, 912, 913, -918, 3448, 3448, 3448, -918, - 3448, 4607, -918, 978, 915, 932, 273, 287, 289, 294, - 978, -918, -918, -918, -918, -918, -918, -918, -918 + 136, -923, 3707, 5786, 58, 4877, -923, -923, -923, -923, + -923, -923, -923, -923, -63, -85, -54, 20, 66, 72, + -79, 78, -12, -923, -923, 81, 129, 142, 146, 164, + 177, 187, 196, 203, 210, 227, 230, 232, 240, 242, + 244, 250, 266, 268, 6097, -923, -923, 100, 281, 287, + 23, 300, -923, 295, 304, 307, 3707, 3707, 3707, 3707, + 3707, 1818, 2827, 3707, 3915, -923, 326, -923, -923, -923, + -923, -923, -923, -923, -923, 5896, 310, -923, -3, -923, + -923, 4202, 7012, 7012, -923, 5440, 311, -923, 7012, -923, + -923, 337, 337, -923, -923, -923, -923, 15, 61, -923, + -923, -923, -923, -923, -923, 809, 314, -923, 6988, 6988, + 6988, -923, 6988, 5317, 6988, 170, -923, 6979, 319, 322, + 324, 335, 338, 6988, 5237, 312, 321, 341, 6988, 6988, + 340, 6815, 6988, 6988, 5905, 6988, 6988, -923, -923, -923, + -923, 4341, -923, -923, -923, -923, -923, 3707, 3707, 5786, + 3707, 3707, 3707, 3707, 5786, 3707, 5786, 3707, 5786, 3707, + 5786, 5786, 5786, 5786, 5786, 5786, 5786, 5786, 5786, 5786, + 5786, 5786, 5786, 5786, 5786, 3707, -923, -923, 342, 5440, + 343, 346, 5440, -923, -923, 5786, 3707, 3707, 347, 5405, + 5786, 1818, 3707, 3707, 76, 76, 76, 76, 76, -63, + -54, 20, 66, 72, 78, 81, 142, 4482, 5509, 5883, + 6759, 307, 339, -88, 3915, -923, -923, -923, -923, -923, + -923, -923, -923, -923, -923, -923, -923, 5440, 5440, -104, + 362, -923, -923, 76, 3707, 3707, 3707, 3707, 3707, 3707, + 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, + 3707, 3707, 3707, 3707, 3707, 2769, 3707, -923, -923, 337, + 337, 2903, -923, -923, -923, 7012, -923, -923, -923, -923, + 5786, -923, 357, 417, 236, 337, 337, 236, 236, 4990, + 353, -923, 358, -923, -923, -923, -923, -923, -923, 4576, + 371, 5178, -923, 5440, 474, 379, 361, 2496, 5320, 6988, + -923, -923, -923, -923, 6988, -923, -923, -923, -923, 6907, + 5284, -923, 5440, 5440, 5440, 5440, 5440, -923, -923, 382, + -923, -923, -923, -923, -923, 3707, -923, 4434, -923, 376, + -923, 4520, -923, 5440, 223, -923, -923, 104, 370, -923, + 374, 5982, 5440, 397, -923, 5440, -923, 198, 387, -923, + -923, -923, -923, 4617, -923, -923, 396, 418, -923, 400, + 402, 403, 404, 405, 407, 419, 408, 420, 411, 412, + 415, 422, 436, 426, -73, 437, 433, 434, 435, 439, + 440, 443, 448, 449, 450, 460, 462, 3707, -923, 5786, + 3707, -923, 6793, 446, 463, 464, 5440, 466, 467, 479, + 471, 4205, 472, 473, 3707, 3707, -923, 581, -923, 947, + 476, 3707, -923, -923, 4171, 5000, 5113, 5113, 1867, 1867, + 276, 276, -923, 2653, 5043, 2049, 1570, 1867, 1867, 293, + 293, 76, 76, 76, -923, -923, -72, 1648, -923, -923, + 475, 4589, 480, 236, 477, 486, 5440, 236, 236, 236, + 236, 236, 482, -923, 353, -923, 353, -923, 482, 482, + -923, 236, 809, 5872, 5757, 236, 236, 483, 33, -923, + 1286, 355, -923, 3707, 5440, 481, -923, -923, -923, -923, + 4576, -26, -22, -16, 809, 487, 86, -923, -923, -923, + 501, 6988, 809, 3841, -63, 489, 4646, -923, -923, -923, + 506, 509, 510, 511, 512, 515, 6291, -923, 3860, 5608, + 199, 500, 198, -923, -923, 517, -923, 5786, -923, 29, + 3037, 6121, 1306, -923, 5786, -923, 502, 190, -923, -923, + 2635, -923, -923, 1069, -923, 518, 5178, -923, -923, -923, + -923, -923, -923, -923, 504, -923, 505, -923, -923, -923, + -923, 5786, -923, 5786, -923, 5786, -923, -923, -923, -923, + -923, -923, -923, -923, -923, -923, -923, 4667, 513, 514, + -923, 507, -923, -923, 519, -923, -923, 508, -923, -923, + -923, -923, 76, 3915, -923, 5440, 362, 5637, 5228, -923, + 3915, 3707, -923, -923, -923, -923, -923, 482, 236, -923, + 482, 482, 482, 482, 482, 3707, -99, 622, 5896, 1286, + 355, -923, -69, -29, -923, -923, 5666, 522, 1286, 1286, + 1286, 1286, 1286, 1286, -61, -923, -923, 524, 5440, 355, + 355, 355, 355, 355, 355, -6, 520, 3915, -923, -15, + -923, 540, 639, 2496, -923, 612, 809, -923, -923, -923, + -923, -923, -923, -923, -923, 528, 544, 545, -923, -923, + 6097, -923, -923, 546, 32, 547, -923, 539, 3707, 3707, + 3707, 3707, 1818, 3707, 542, 80, -923, -923, 4758, -923, + 326, -923, 6988, 6988, 6363, -923, 696, 704, 709, 715, + 716, -923, -923, 378, 561, -923, -923, -923, -923, 1185, + -923, 571, 582, 1562, -923, 1175, -923, -923, 29, -923, + 1069, -923, 583, 5637, 574, 1069, 5637, 564, 4685, 1306, + 575, 1306, 1306, 1306, 1306, 1306, 49, -923, -923, 570, + 6435, -923, -923, -923, 5440, 105, -923, 577, -923, 593, + 594, 3171, 3059, 586, 1069, 1069, 4274, 1069, 1069, 1069, + 1069, -923, 11, 209, -923, 4576, -923, 3707, 3707, 580, + 584, 587, -923, -923, -923, 3707, -923, 3707, -923, 588, + -923, 6011, 809, -923, -923, -923, -923, -923, -923, 591, + -923, -923, 601, -923, 3915, 482, 579, 596, 5757, 1286, + 355, -61, -6, 597, 598, 5228, -923, -923, 1286, 604, + 604, 604, 604, 604, 157, 3707, -923, 355, -923, 605, + 605, 605, 605, 605, 233, 3707, -923, 608, -923, 3707, + -923, 600, 4703, 6507, -923, 614, -923, -923, 5786, 5786, + 5786, 611, 5786, 613, 5491, 5786, 1818, 76, 76, 76, + 76, 610, -67, 76, -923, -923, 3981, 3707, 3707, 3707, + 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, + 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3305, 3707, + -923, -923, -923, -923, -59, 633, 635, 636, 638, 6579, + 13, -923, 1175, 6867, 5608, 5440, 637, 630, 1175, 1175, + 1175, 1175, 1175, 1175, -2, 605, -923, 209, -923, 626, + 1069, 216, 627, -923, -923, 253, 1306, 634, 634, 634, + 634, 634, -923, 3707, -923, -923, 5637, 631, 277, -923, + -43, 652, 653, -923, 2318, -923, -923, -923, 3171, 640, + 656, 3915, -923, -923, 1069, 302, 302, 796, -923, -923, + -923, -923, -923, -923, -923, -923, -923, -923, -923, -923, + -923, -923, -923, -923, -923, -923, -923, -923, -923, -923, + -923, -923, -923, -923, -923, -923, -923, -923, -923, -923, + -923, -923, -923, -923, 643, 642, -923, -923, 302, 302, + 302, 237, 808, -923, 3707, -923, 2635, 668, -923, 540, + -55, -47, -923, -923, -923, -41, -21, -923, 6097, 337, + 768, 367, -923, -923, 5637, -923, -61, -6, -923, -923, + 5637, 5637, -923, 604, 654, 648, 605, 658, 659, 3327, + -923, -923, -923, 5299, 677, 680, -923, 663, 675, 676, + 3707, 682, 5440, 667, 673, 684, 679, 4740, 3707, -923, + -923, -923, 4171, 5000, 5113, 5113, 1867, 1867, 276, 276, + -923, 3595, 5043, 2049, 1570, 1867, 1867, 293, 293, 76, + 76, 76, -923, -923, 6, 1837, 6651, 831, 694, 836, + 681, -923, 839, 840, 842, -923, 706, -2, 605, -923, + -923, -923, -923, -923, -923, 5786, 1175, 4120, -923, -923, + 714, -923, -923, 256, 707, -923, -923, 634, 5637, 701, + 710, -923, -923, 5440, 3707, 3707, -923, -923, -923, -923, + -923, -923, -923, -923, -923, -923, -923, -923, -923, -923, + -923, -923, -923, -923, -923, -923, -923, -923, -923, -923, + -923, -923, -923, -923, -923, -923, -923, -923, -923, -923, + -923, -923, -923, -923, -923, -923, -923, -923, -923, -923, + -923, -923, -923, -923, -923, -923, -923, -923, -923, -923, + -923, -923, -923, -923, -923, -923, -923, -923, -923, -923, + -923, -923, -923, -923, -923, -923, -923, -923, -923, -923, + -923, -923, -923, -923, -923, -923, -923, -923, -923, -923, + -923, -923, -923, -923, -923, -923, -923, -923, -923, -923, + -923, -923, -923, -923, -923, -923, -923, -923, -923, -923, + -923, -923, -923, -923, -923, -923, -923, -923, -923, -923, + -923, -923, -923, -923, -923, -923, -923, -923, -923, -923, + -923, -923, -923, -923, -923, -923, -923, -923, 708, -923, + 3439, 302, -923, -923, -923, -923, -923, 3841, 711, 3059, + 1069, -923, -923, -923, -923, 5228, 337, -923, -923, -923, + 5, 712, 717, -923, -923, 718, 728, 5637, -923, 5637, + -923, -923, 6130, 6189, 6203, 5440, 297, -923, -923, 862, + -923, 5299, -923, 731, 735, 734, 737, 736, -923, -923, + 740, -923, -923, 76, 3707, -923, -923, -923, 17, -923, + 760, 730, 42, 742, 53, -923, -923, -923, 745, 727, + 759, 761, 40, 763, 4120, 4120, 4120, 4120, 4120, 1818, + 4120, 1494, -923, 1069, 965, 756, -923, 965, 5637, 757, + -923, -923, 758, -923, 771, 762, 2118, -923, 3171, 3915, + 764, -923, -923, 793, -923, 775, -923, -923, -923, -923, + -923, 776, 777, 6217, -923, 6217, -923, 6217, -923, -923, + 6217, 6217, 6217, -923, 6723, -923, 3707, 3707, -923, 3707, + -923, 3707, 3915, 934, 797, 940, -923, 942, 805, 806, + 946, 813, 5786, 5786, 5786, 5786, 799, 5522, 5786, 124, + 124, 124, 124, 124, 807, 62, 124, 4120, 4120, 4120, + 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, + 4120, 4120, 4120, 4120, 4120, 4120, 3573, 3707, -923, -923, + 5637, 812, -923, 965, -923, -923, 969, -923, 819, -923, + -923, -923, 5228, 5228, 5228, -923, -923, -923, -923, -923, + -923, -923, -923, -923, 91, 96, 99, 135, 841, -923, + 821, 850, -923, -923, 137, -923, 833, 844, 845, 846, + 5440, 838, 847, 851, 4120, -923, 4356, 5059, 1194, 1194, + 1898, 1898, 699, 699, -923, 1391, 5075, 5099, 1449, 430, + 430, 124, 124, 124, -923, -923, 138, 1945, 5637, 848, + -923, 965, -923, -923, 965, 849, -923, -923, -923, 965, + 965, -923, -923, -923, -923, 998, 852, 867, 1007, 1009, + 872, -923, 857, 858, 863, 864, -923, -923, 868, 124, + 4120, -923, -923, 865, -923, 965, -923, -923, 880, -923, + 870, 871, -923, 3707, 3707, 3707, -923, 3707, 1494, -923, + 5228, -923, 885, 886, 139, 150, 155, 171, 5228, -923, + -923, -923, -923, -923, -923, -923, -923 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1281,192 +1285,194 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 0, 757, 0, 0, 0, 757, 5, 645, 641, 644, - 753, 754, 647, 648, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 643, 649, 0, 0, 0, 0, 0, + 0, 761, 0, 0, 0, 761, 5, 649, 645, 648, + 757, 758, 651, 652, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 647, 653, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 651, 650, 0, 0, 0, - 0, 0, 642, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 757, 0, 3, 582, 646, 292, 303, 302, - 386, 387, 389, 390, 371, 0, 0, 401, 368, 400, - 395, 392, 391, 394, 372, 0, 0, 373, 393, 403, - 388, 757, 757, 4, 294, 295, 296, 0, 357, 757, - 291, 383, 384, 385, 1, 0, 0, 21, 757, 757, - 757, 22, 757, 757, 757, 0, 38, 757, 0, 0, - 0, 0, 757, 0, 0, 0, 0, 757, 757, 0, - 757, 757, 757, 0, 757, 757, 6, 17, 7, 19, - 0, 15, 16, 18, 69, 40, 757, 757, 0, 757, - 757, 757, 757, 0, 757, 0, 757, 0, 757, 0, + 0, 0, 0, 0, 0, 655, 654, 0, 0, 0, + 0, 0, 646, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 761, 0, 3, 586, 650, 296, 307, 306, + 390, 391, 393, 394, 375, 0, 0, 405, 372, 404, + 399, 396, 395, 398, 376, 0, 0, 377, 397, 407, + 392, 761, 761, 4, 298, 299, 300, 0, 361, 761, + 295, 387, 388, 389, 1, 0, 0, 21, 761, 761, + 761, 22, 761, 761, 761, 0, 40, 761, 0, 0, + 0, 0, 0, 761, 0, 0, 0, 0, 761, 761, + 0, 761, 761, 761, 0, 761, 761, 6, 17, 7, + 19, 0, 15, 16, 18, 71, 42, 761, 761, 0, + 761, 761, 761, 761, 0, 761, 0, 761, 0, 761, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 757, 318, 324, 0, 0, 0, - 606, 0, 757, 317, 0, 757, 757, 0, 0, 0, - 0, 757, 757, 615, 613, 612, 614, 611, 292, 386, - 387, 389, 390, 401, 400, 395, 392, 391, 394, 393, - 388, 0, 0, 541, 738, 739, 740, 748, 741, 744, - 742, 746, 745, 743, 747, 727, 728, 0, 0, 757, - 733, 726, 610, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 761, 322, 328, 0, 0, + 0, 610, 0, 761, 321, 0, 761, 761, 0, 0, + 0, 0, 761, 761, 619, 617, 616, 618, 615, 296, + 390, 391, 393, 394, 405, 404, 399, 396, 395, 398, + 397, 392, 0, 0, 545, 742, 743, 744, 752, 745, + 748, 746, 750, 749, 747, 751, 731, 732, 0, 0, + 761, 737, 730, 614, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 755, 756, 757, 757, - 0, 369, 370, 402, 392, 397, 396, 399, 293, 0, - 398, 0, 278, 757, 757, 757, 757, 757, 757, 0, - 327, 277, 329, 757, 749, 750, 751, 752, 0, 359, - 0, 331, 0, 0, 58, 60, 0, 757, 757, 52, - 41, 51, 53, 757, 42, 148, 47, 23, 757, 0, - 45, 0, 0, 0, 0, 50, 757, 0, 26, 25, - 24, 48, 44, 0, 152, 0, 151, 0, 54, 0, - 20, 0, 0, 46, 49, 326, 305, 316, 0, 0, - 0, 0, 13, 0, 66, 0, 325, 63, 307, 308, - 309, 357, 757, 304, 0, 540, 539, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 759, 760, 761, + 761, 0, 373, 374, 406, 396, 401, 400, 403, 297, + 0, 402, 0, 282, 761, 761, 761, 761, 761, 761, + 0, 331, 281, 333, 761, 753, 754, 755, 756, 0, + 363, 0, 335, 0, 0, 60, 62, 0, 761, 761, + 54, 43, 53, 55, 761, 44, 150, 49, 23, 761, + 0, 47, 0, 0, 0, 0, 0, 52, 761, 0, + 26, 25, 24, 50, 46, 0, 154, 0, 153, 0, + 56, 0, 20, 0, 0, 48, 51, 330, 309, 320, + 0, 0, 0, 0, 13, 0, 68, 0, 329, 65, + 311, 312, 313, 361, 761, 308, 0, 544, 543, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 319, 0, 757, 321, + 0, 0, 0, 0, 0, 0, 0, 0, 323, 0, + 761, 325, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 644, 735, 738, 0, + 761, 0, 733, 210, 628, 629, 630, 631, 632, 633, + 636, 637, 643, 0, 625, 626, 627, 634, 635, 623, + 624, 620, 621, 622, 642, 641, 0, 0, 332, 334, + 0, 0, 0, 761, 283, 0, 272, 761, 761, 761, + 761, 761, 288, 271, 0, 284, 0, 285, 287, 286, + 195, 761, 0, 0, 0, 761, 761, 0, 196, 199, + 761, 0, 194, 761, 369, 0, 366, 365, 360, 364, + 0, 742, 743, 744, 0, 0, 746, 339, 301, 341, + 0, 761, 0, 761, 309, 0, 0, 45, 41, 761, + 0, 0, 0, 0, 0, 0, 761, 378, 0, 761, + 330, 309, 0, 329, 74, 0, 384, 0, 79, 81, + 0, 0, 761, 310, 0, 761, 0, 0, 408, 217, + 0, 70, 67, 0, 316, 363, 0, 593, 592, 609, + 599, 595, 597, 598, 0, 605, 0, 604, 658, 594, + 659, 0, 661, 0, 662, 0, 665, 666, 667, 668, + 669, 670, 671, 672, 673, 674, 601, 0, 0, 0, + 324, 0, 600, 603, 0, 607, 606, 0, 612, 613, + 602, 596, 587, 546, 736, 0, 761, 761, 761, 94, + 211, 0, 640, 639, 304, 303, 305, 289, 761, 273, + 278, 274, 275, 277, 276, 761, 0, 0, 0, 761, + 0, 236, 0, 0, 761, 198, 0, 0, 761, 761, + 761, 761, 761, 761, 761, 250, 249, 0, 260, 0, + 0, 0, 0, 0, 0, 761, 0, 542, 541, 370, + 359, 302, 0, 0, 761, 761, 0, 57, 61, 723, + 719, 722, 725, 726, 202, 0, 0, 0, 721, 727, + 0, 729, 728, 0, 0, 0, 720, 0, 0, 0, + 0, 0, 0, 0, 0, 203, 238, 206, 239, 675, + 724, 201, 761, 761, 761, 380, 0, 0, 0, 0, + 0, 382, 761, 0, 0, 171, 172, 173, 159, 0, + 160, 0, 156, 161, 157, 761, 170, 155, 0, 76, + 0, 386, 0, 761, 0, 0, 761, 0, 0, 761, + 0, 761, 761, 761, 761, 761, 0, 241, 240, 0, + 761, 83, 408, 212, 0, 0, 69, 0, 761, 0, + 0, 761, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 66, 761, 761, 174, 0, 314, 0, 0, 0, + 0, 0, 326, 327, 611, 0, 608, 0, 734, 0, + 101, 0, 0, 95, 103, 98, 102, 97, 99, 0, + 96, 100, 0, 189, 638, 279, 0, 0, 0, 761, + 0, 761, 761, 0, 0, 761, 197, 200, 761, 255, + 251, 252, 254, 253, 0, 761, 230, 0, 261, 266, + 262, 263, 265, 264, 0, 761, 233, 290, 367, 0, + 336, 0, 0, 761, 344, 761, 343, 64, 0, 0, + 0, 685, 0, 0, 0, 0, 0, 693, 692, 691, + 690, 0, 0, 689, 63, 205, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 640, 731, 734, 0, 757, 0, - 729, 206, 624, 625, 626, 627, 628, 629, 632, 633, - 639, 0, 621, 622, 623, 630, 631, 619, 620, 616, - 617, 618, 638, 637, 0, 0, 328, 330, 0, 0, - 0, 757, 279, 0, 268, 757, 757, 757, 757, 757, - 284, 267, 0, 280, 0, 281, 283, 282, 191, 757, - 0, 0, 0, 757, 757, 0, 192, 195, 757, 0, - 190, 757, 365, 0, 362, 361, 356, 360, 0, 738, - 739, 740, 0, 0, 742, 335, 297, 337, 0, 757, - 0, 757, 305, 0, 0, 43, 39, 757, 0, 0, - 0, 0, 0, 757, 374, 0, 757, 326, 305, 0, - 325, 72, 0, 380, 0, 77, 79, 0, 0, 757, - 306, 0, 757, 0, 0, 404, 213, 0, 68, 65, - 0, 312, 359, 0, 589, 588, 605, 595, 591, 593, - 594, 0, 601, 0, 600, 654, 590, 655, 0, 657, - 0, 658, 0, 661, 662, 663, 664, 665, 666, 667, - 668, 669, 670, 597, 0, 0, 0, 320, 0, 596, - 599, 0, 603, 602, 0, 608, 609, 598, 592, 583, - 542, 732, 0, 757, 757, 757, 92, 207, 0, 636, - 635, 300, 299, 301, 285, 757, 269, 274, 270, 271, - 273, 272, 757, 0, 0, 0, 757, 0, 232, 0, - 0, 757, 194, 0, 0, 757, 757, 757, 757, 757, - 757, 757, 246, 245, 0, 256, 0, 0, 0, 0, - 0, 0, 757, 0, 538, 537, 366, 355, 298, 0, - 0, 757, 757, 0, 55, 59, 719, 715, 718, 721, - 722, 198, 0, 0, 0, 717, 723, 0, 725, 724, - 0, 0, 0, 716, 0, 0, 0, 0, 0, 0, - 0, 0, 199, 234, 202, 235, 671, 720, 197, 757, - 757, 757, 376, 0, 0, 0, 0, 378, 757, 0, - 0, 169, 170, 171, 157, 0, 158, 0, 154, 159, - 155, 757, 168, 153, 0, 74, 0, 382, 0, 757, - 0, 0, 757, 0, 0, 757, 0, 757, 757, 757, - 757, 757, 0, 237, 236, 0, 757, 81, 404, 208, - 0, 0, 67, 0, 757, 0, 0, 757, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 64, 757, 757, - 172, 0, 310, 0, 0, 0, 0, 0, 322, 323, - 607, 0, 604, 0, 730, 0, 99, 0, 0, 93, - 101, 96, 100, 95, 97, 0, 94, 98, 0, 187, - 634, 275, 0, 0, 0, 757, 0, 757, 757, 0, - 0, 757, 193, 196, 757, 251, 247, 248, 250, 249, - 0, 757, 226, 0, 257, 262, 258, 259, 261, 260, - 0, 757, 229, 286, 363, 0, 332, 0, 0, 757, - 340, 757, 339, 62, 0, 0, 0, 681, 0, 0, - 0, 0, 0, 689, 688, 687, 686, 0, 0, 685, - 61, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 57, 56, 379, 757, - 0, 0, 0, 0, 757, 0, 37, 757, 757, 0, - 162, 160, 0, 757, 757, 757, 757, 757, 757, 757, - 166, 73, 757, 381, 0, 0, 0, 0, 314, 313, - 0, 757, 242, 238, 239, 241, 240, 87, 757, 315, - 14, 757, 0, 0, 8, 0, 0, 0, 214, 405, - 406, 216, 217, 757, 0, 220, 222, 219, 215, 0, - 179, 175, 0, 116, 117, 118, 119, 120, 121, 124, - 125, 140, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 144, 143, 127, 126, 113, 115, - 114, 122, 123, 111, 112, 108, 109, 110, 107, 0, - 0, 106, 173, 176, 178, 177, 0, 0, 183, 757, - 185, 0, 0, 70, 311, 0, 0, 656, 659, 660, - 0, 0, 757, 0, 757, 0, 0, 404, 276, 757, - 233, 757, 757, 227, 230, 757, 757, 287, 252, 255, - 0, 263, 266, 0, 367, 334, 333, 336, 0, 0, - 342, 341, 0, 0, 0, 757, 0, 0, 0, 0, - 0, 0, 0, 0, 714, 200, 203, 698, 699, 700, - 701, 702, 703, 706, 707, 713, 0, 695, 696, 697, - 704, 705, 693, 694, 690, 691, 692, 712, 711, 0, - 0, 757, 0, 0, 0, 0, 0, 375, 0, 757, - 167, 147, 145, 150, 146, 156, 163, 0, 757, 0, - 164, 204, 0, 75, 757, 0, 0, 757, 89, 243, - 757, 0, 0, 209, 404, 0, 757, 757, 211, 212, - 408, 409, 413, 410, 418, 411, 412, 414, 415, 416, - 417, 419, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 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, 486, - 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 478, 479, 480, 481, 482, 483, 484, 485, 487, - 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, - 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, - 508, 509, 510, 511, 512, 513, 757, 530, 531, 532, - 523, 535, 519, 520, 518, 525, 526, 514, 515, 516, - 517, 524, 522, 529, 527, 533, 528, 521, 534, 407, - 0, 218, 221, 180, 174, 142, 141, 182, 186, 757, - 0, 207, 0, 586, 585, 587, 584, 757, 757, 188, - 105, 102, 0, 0, 0, 228, 231, 0, 0, 757, - 253, 757, 264, 364, 746, 0, 745, 0, 0, 343, - 345, 735, 757, 0, 680, 0, 0, 0, 0, 0, - 678, 677, 0, 683, 684, 672, 0, 710, 709, 377, - 0, 27, 0, 0, 0, 36, 165, 161, 0, 0, + 59, 58, 383, 761, 0, 761, 0, 0, 0, 761, + 0, 39, 761, 761, 0, 164, 162, 0, 761, 761, + 761, 761, 761, 761, 761, 168, 75, 761, 385, 0, + 0, 0, 0, 318, 317, 0, 761, 246, 242, 243, + 245, 244, 89, 761, 319, 14, 761, 0, 0, 8, + 0, 0, 0, 218, 409, 410, 220, 221, 761, 0, + 224, 226, 223, 219, 0, 181, 177, 0, 118, 119, + 120, 121, 122, 123, 126, 127, 142, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 146, + 145, 129, 128, 115, 117, 116, 124, 125, 113, 114, + 110, 111, 112, 109, 0, 0, 108, 175, 178, 180, + 179, 0, 0, 185, 761, 187, 0, 0, 72, 315, + 0, 0, 660, 663, 664, 0, 0, 761, 0, 761, + 0, 0, 408, 280, 761, 237, 761, 761, 231, 234, + 761, 761, 291, 256, 259, 0, 267, 270, 0, 371, + 338, 337, 340, 0, 0, 346, 345, 0, 0, 0, + 761, 0, 0, 0, 0, 0, 0, 0, 0, 718, + 204, 207, 702, 703, 704, 705, 706, 707, 710, 711, + 717, 0, 699, 700, 701, 708, 709, 697, 698, 694, + 695, 696, 716, 715, 0, 0, 761, 0, 0, 0, + 0, 192, 0, 0, 0, 379, 0, 761, 169, 149, + 147, 152, 148, 158, 165, 0, 761, 0, 166, 208, + 0, 77, 761, 0, 0, 761, 91, 247, 761, 0, + 0, 213, 408, 0, 761, 761, 215, 216, 412, 413, + 417, 414, 422, 415, 416, 418, 419, 420, 421, 423, + 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, + 434, 435, 436, 437, 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, 490, 471, 472, + 473, 474, 475, 476, 477, 478, 479, 480, 481, 482, + 483, 484, 485, 486, 487, 488, 489, 491, 492, 493, + 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, + 504, 505, 506, 507, 508, 509, 510, 511, 512, 513, + 514, 515, 516, 517, 761, 534, 535, 536, 527, 539, + 523, 524, 522, 529, 530, 518, 519, 520, 521, 528, + 526, 533, 531, 537, 532, 525, 538, 411, 0, 222, + 225, 182, 176, 144, 143, 184, 188, 761, 0, 211, + 0, 590, 589, 591, 588, 761, 761, 190, 107, 104, + 0, 0, 0, 232, 235, 0, 0, 761, 257, 761, + 268, 368, 750, 0, 749, 0, 0, 347, 349, 739, + 761, 0, 684, 0, 0, 0, 0, 0, 682, 681, + 0, 687, 688, 676, 0, 714, 713, 381, 0, 32, + 193, 0, 0, 0, 0, 38, 167, 163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 205, 543, 0, 78, 0, 83, 80, 757, 0, - 244, 757, 0, 9, 0, 0, 0, 223, 757, 224, - 0, 181, 71, 0, 189, 0, 103, 652, 757, 757, - 757, 0, 0, 0, 348, 0, 347, 0, 346, 736, - 0, 0, 0, 737, 757, 344, 0, 0, 682, 0, - 679, 0, 708, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 558, 556, 555, - 557, 554, 0, 0, 553, 0, 0, 0, 0, 0, + 0, 209, 547, 0, 80, 0, 85, 82, 761, 0, + 248, 761, 0, 9, 0, 0, 0, 227, 761, 228, + 0, 183, 73, 0, 191, 0, 105, 656, 761, 761, + 761, 0, 0, 0, 352, 0, 351, 0, 350, 740, + 0, 0, 0, 741, 761, 348, 0, 0, 686, 0, + 683, 0, 712, 0, 0, 0, 27, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 562, + 560, 559, 561, 558, 0, 0, 557, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 76, 85, 757, 0, - 757, 82, 210, 12, 10, 536, 0, 757, 404, 104, - 757, 757, 757, 757, 757, 354, 353, 352, 351, 350, - 349, 338, 0, 0, 0, 0, 0, 28, 0, 33, - 35, 0, 30, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 581, 567, 568, 569, 570, 571, 572, 573, - 574, 580, 0, 564, 565, 566, 562, 563, 559, 560, - 561, 579, 578, 0, 0, 757, 0, 757, 88, 11, - 225, 184, 0, 290, 289, 288, 254, 265, 675, 674, - 676, 673, 0, 0, 0, 0, 552, 0, 0, 0, - 0, 550, 549, 0, 544, 0, 577, 576, 0, 757, - 90, 653, 29, 0, 0, 31, 0, 0, 0, 551, - 0, 575, 757, 757, 0, 0, 0, 0, 0, 0, - 757, 84, 34, 32, 547, 546, 548, 545, 86 + 0, 0, 0, 0, 0, 0, 0, 0, 78, 87, + 761, 0, 761, 84, 214, 12, 10, 540, 0, 761, + 408, 106, 761, 761, 761, 761, 761, 358, 357, 356, + 355, 354, 353, 342, 0, 0, 0, 0, 761, 33, + 0, 0, 35, 37, 0, 29, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 585, 571, 572, 573, 574, + 575, 576, 577, 578, 584, 0, 568, 569, 570, 566, + 567, 563, 564, 565, 583, 582, 0, 0, 761, 0, + 761, 90, 11, 229, 186, 0, 294, 293, 292, 258, + 269, 679, 678, 680, 677, 0, 0, 0, 0, 0, + 0, 556, 0, 0, 0, 0, 554, 553, 0, 548, + 0, 581, 580, 0, 761, 92, 657, 193, 0, 28, + 0, 0, 30, 0, 0, 0, 555, 0, 579, 761, + 761, 34, 0, 0, 0, 0, 0, 0, 761, 86, + 36, 31, 551, 550, 552, 549, 88 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -918, -918, -304, -918, -28, -918, -918, 774, -103, -918, - 1012, -428, 445, -89, -918, -918, -145, -918, -918, -214, - -918, -918, -918, 772, -918, -918, -918, -918, -918, -308, - -918, -918, -105, -918, -918, -918, -918, 221, 408, -634, - -918, -701, -745, -479, -918, -135, -918, 39, -463, -918, - -500, -917, -918, -436, 265, -649, -409, -59, -158, -88, - -61, 22, -279, -635, 788, 793, -163, -133, -918, -130, - -918, -918, -918, -918, -162, -124, -918, -457, -918, -918, - 16, 21, -918, -918, -918, -918, 48, 47, -918, -918, - -726, -918, -96, -918, -589, -107, -60, 175, 517, 145, - -918, -918, -918, 706, 206, -47, 152, -468, -1 + -923, -923, -309, -923, -65, -923, -923, 733, -118, -923, + 89, -439, 393, -115, -923, -923, -210, -923, -923, -277, + -923, -923, -923, 719, -923, -923, -923, -923, -923, -592, + -923, -923, -109, -923, -923, -923, -923, 165, 352, -663, + -923, -698, -738, -396, -585, -923, -194, -923, -23, -522, + -923, -505, -922, -923, -461, 211, -607, 246, 44, -136, + -82, 332, 197, -282, -642, 724, 1215, -147, -116, -923, + -71, -923, -923, -923, -923, -225, -64, -923, -463, -923, + -923, -33, -7, -923, -923, -923, -923, -36, -42, -923, + -923, -702, -923, -156, -923, -571, -124, -60, 377, 306, + 305, -923, -923, -923, 655, -90, 1188, 245, -488, -1 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 4, 5, 913, 914, 137, 522, 138, 139, 308, - 140, 293, 294, 141, 530, 524, 747, 330, 706, 891, - 344, 709, 712, 345, 911, 1408, 1475, 1090, 1318, 585, - 972, 1073, 142, 327, 697, 698, 699, 700, 701, 748, - 1239, 749, 778, 465, 466, 671, 672, 1080, 410, 732, - 528, 924, 925, 467, 674, 722, 795, 805, 279, 280, - 91, 92, 346, 180, 347, 93, 290, 94, 641, 95, - 642, 821, 1019, 1020, 1269, 96, 97, 476, 472, 473, - 98, 99, 143, 688, 869, 144, 100, 101, 102, 103, - 733, 734, 919, 1229, 633, 354, 355, 1311, 213, 65, - 675, 676, 228, 229, 1270, 1271, 622, 66, 145 + -1, 4, 5, 918, 919, 138, 525, 139, 140, 309, + 141, 294, 295, 142, 533, 527, 751, 332, 710, 896, + 346, 713, 716, 347, 916, 1420, 1488, 1098, 1328, 588, + 977, 1081, 143, 329, 701, 702, 703, 704, 705, 752, + 1247, 753, 782, 1070, 467, 468, 674, 675, 1088, 412, + 736, 531, 929, 930, 469, 677, 726, 799, 809, 280, + 281, 91, 92, 348, 181, 349, 93, 291, 94, 644, + 95, 645, 825, 1024, 1025, 1277, 96, 97, 478, 474, + 475, 98, 99, 144, 692, 873, 145, 100, 101, 102, + 103, 737, 738, 924, 1237, 636, 356, 357, 1321, 214, + 65, 678, 679, 229, 230, 1278, 1279, 625, 66, 146 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1474,1352 +1480,1387 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 6, 212, 912, 980, 282, 892, 1230, 348, 305, 705, - 349, 1335, 503, 782, 258, 230, 350, 493, 256, 390, - 257, 638, 827, 677, 409, 187, 608, 324, 767, 261, - 710, 407, 604, 829, 1374, 612, 104, 403, 268, 801, - 357, 326, 359, 360, 361, 362, 1007, 364, 307, 366, - 510, 368, 148, 408, 639, 673, 404, 153, 295, 621, - 181, 231, 645, -749, 149, 182, 900, 384, 902, 903, - 904, 905, 906, 409, 841, 550, 317, 896, 392, 393, - 403, 150, 403, 241, 400, 401, 332, 256, 811, 257, - 281, 281, 183, 151, 551, 262, 146, 259, 291, 589, - 271, 1034, 272, 155, 273, 765, 930, 931, 241, 973, - 974, 975, 976, 152, 147, 450, 452, 454, 456, 457, - 764, 284, 285, 286, 1062, 1079, 602, 783, 265, 266, - 267, 386, 994, -749, 389, 270, -749, 525, 1393, 526, - 801, 527, 154, 1063, 977, 356, 356, 274, 356, 356, - 356, 356, 513, 356, 514, 356, 351, 356, 802, 978, - 979, 352, 1336, 348, 907, 908, 349, 613, 184, 812, - 436, 437, 350, 356, 188, 156, 711, 793, 1068, 405, - 406, 291, 830, 1375, 356, 356, 453, 455, 353, 533, - 356, 356, 348, 681, 434, 349, 348, 787, 1096, 349, - 403, 350, 1393, 602, 789, 350, 842, 796, 797, 798, - 799, 800, 1010, 253, 254, 255, 1097, 468, 726, 1243, - 157, 875, 1013, 287, 10, 442, 11, 275, 411, -750, - 894, 602, 790, 897, 250, 251, 252, -751, 253, 254, - 255, 276, 158, 486, 403, 488, 277, 916, 917, 983, - 289, 278, 1089, 265, 266, 267, 270, 281, 281, 159, - 288, 1085, 498, 1244, 499, 500, 501, 502, 1403, 1404, - 1405, 1253, 451, 281, 281, 451, 451, 470, 519, 403, - 160, 566, 474, 594, 512, 161, 982, 597, 598, 599, - 600, 601, 889, 520, 984, 1233, 523, 403, 1245, -750, - 469, 603, -750, 791, 531, 609, 610, -751, -752, 283, - -751, 265, 351, 801, 1009, 6, 1246, 352, 162, 1091, - 284, 285, 286, 739, 1003, 1004, 163, 740, 1400, 1401, - 1402, 164, 1403, 1404, 1405, 477, 814, 819, 165, 815, - 995, 351, 166, 567, 353, 351, 352, 571, 1000, 167, - 352, 291, 1387, 1388, 1389, 1390, 1391, 1392, 1248, 168, - 230, 817, 169, 403, 1363, 811, 1012, 1393, 1322, 1365, - 741, 170, 1368, 353, 677, 403, 1001, 353, -752, 171, - 403, -752, 1287, 1364, 874, 1008, 318, 356, 1366, 403, - 1240, 1369, 1083, 403, 1452, 172, 403, 596, 1494, 1488, - 606, 468, 284, 285, 286, 614, 673, 586, 1489, 615, - 632, 1416, 1490, 295, 443, 1491, 444, 1495, 445, 403, - 403, 742, 287, 173, 728, 636, 729, 730, 731, 1082, - 468, 174, 1092, 185, 403, 295, 403, 781, 1506, 1534, - 451, 403, 487, 295, 451, 451, 451, 451, 451, 186, - 743, 189, 616, 1535, 190, 1536, 191, 715, 451, 192, - 1537, 446, 451, 451, 744, 1088, 908, 623, 1069, 745, - 635, 1, 2, 3, 746, 796, 797, 798, 799, 800, - 978, 979, 1086, 607, 469, 260, 752, 1396, 1397, 269, - 678, 1398, 1399, 1400, 1401, 1402, 6, 1403, 1404, 1405, - 1094, 1095, 1333, 532, 287, 703, 296, 348, 978, 979, - 349, 311, 312, 469, 313, 314, 350, 319, 724, 64, - 1254, 6, 320, 468, 323, 477, 1257, 1258, 385, -91, - 387, -91, 617, -91, 388, 405, 394, 402, 1255, 1256, - 409, 447, 471, 441, 785, 624, 618, 625, 788, 626, - -267, 619, 468, 478, 702, 448, 620, 525, 489, 526, - 449, 981, 978, 979, 1237, 1061, 490, 491, 806, 807, - 808, 809, 810, 193, 194, 195, 196, 197, 804, 506, - 232, 504, 411, 470, 779, -91, 516, -91, 529, -91, - 517, 521, 627, 403, 451, 534, 295, 978, 979, 1315, - 535, 635, 536, 515, 537, 623, 469, 538, 539, 838, - 586, 1319, 892, 540, 623, 623, 623, 623, 623, 623, - 411, 1350, 1351, 1352, 541, 542, 543, 786, 544, 545, - 546, 411, 547, 548, 552, 469, 581, 549, 553, 554, - 6, 822, 890, 555, 556, 557, 558, 559, 468, 560, - 561, 468, 881, 568, 562, 563, 351, 569, 570, 572, - 573, 352, 574, 637, 575, 577, 578, 584, 591, 1008, - 593, 723, 628, 181, -269, 1483, 1484, 1485, 182, 595, - 602, 682, 750, 915, 1247, 487, 629, 6, 353, 611, - 640, 630, 1482, 985, 986, 643, 631, 679, 683, 684, - 623, 990, 685, 991, 686, 183, 704, 399, 470, 707, - 759, 470, 727, 751, 724, 760, 724, 724, 724, 724, - 724, 295, 753, 468, 754, 762, 761, 1002, 784, 763, - 794, 469, 803, 920, 469, 813, 927, -358, 816, 820, - 824, 825, 826, 702, 1011, 828, 832, 779, 411, 831, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 677, 435, 1074, 840, 1071, 1314, 439, 1531, 1317, - 1341, 468, 1342, 181, 623, 1538, 411, 411, 182, 1072, - 779, 870, 871, 623, 872, 873, 876, 878, 477, 879, - 635, 893, 895, 673, 1059, 898, 469, 918, 901, 921, - 635, 909, 922, 494, 929, 183, 987, 988, 1070, 997, - 1021, 1064, 989, 992, 996, 806, 807, 808, 809, 810, - 999, 998, 1005, 1076, 1006, 1015, 801, 811, 1018, 1409, - 505, -276, 1025, 1027, 1065, 1066, 1077, 1033, 1084, 1087, - 468, 1078, 908, 1093, 211, 1098, 1099, 1232, 750, 1234, - 1231, 1235, 1238, 750, 469, 1242, 1250, 723, 6, 723, - 723, 723, 723, 723, 1236, 1259, 623, 1261, 475, 1272, - 1274, 1260, 623, 623, 623, 623, 623, 623, 1081, 1262, - 1273, 411, 750, 750, 1275, 750, 750, 750, 750, 1290, - 724, 1276, 564, 1278, 1282, 1280, 1249, 635, 1281, 1291, - 470, 1292, 1283, 1293, 1294, 1295, 1313, 1316, 1277, 579, - 580, 70, 927, 71, 72, 73, 587, 702, 1320, 1476, - 1321, 1331, 1327, 469, 1353, 1337, 1338, 1339, 468, 1340, - 1356, 358, 1357, 1358, 468, 468, 363, 1359, 365, 1252, - 367, 80, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 264, 1354, 1360, - 1361, 1367, 1370, 1407, 1371, 1372, 1373, 391, 635, 1376, - 1279, 396, 397, 398, 1412, 1418, 82, 83, 634, 1324, - 1325, 586, 1410, 281, 1413, 766, 1508, 1414, 470, 1417, - 411, 411, 1419, 88, 470, 470, 1423, 1424, 90, 181, - 1436, 767, 1437, 1411, 182, 1438, 1439, 1440, 1441, 1011, - 1442, 469, 1451, 1447, 356, 768, 1477, 469, 469, 468, - 1420, 1421, 1422, 1479, 714, 1493, 1497, 1480, 769, 770, - 1492, 183, 1496, 1498, 738, 1501, 1499, 750, 915, 1502, - 1503, 1509, 1513, 723, 771, 1512, 1514, 1515, 1511, 1516, - 1517, 1518, 440, 1532, 241, 1519, 1520, 1323, 1081, 214, - 215, 216, 237, 238, 239, 240, 1522, 623, 1524, 1525, - 1533, 750, 496, 586, 772, 241, 586, 773, 823, 470, - 774, 284, 285, 286, 716, 356, 356, 1332, 717, 1406, - 1075, 509, 1478, 877, 1330, 780, 775, 1036, 1296, 1481, - 1326, 1355, 469, 583, 0, 1486, 1487, 511, 776, 634, - 299, 300, 301, 217, 302, 304, 306, 0, 0, 310, - 0, 0, 777, 0, 315, 218, 219, 0, 0, 321, - 322, 718, 325, 328, 329, 0, 333, 334, 0, 284, - 285, 286, 882, 0, 625, 0, 883, 818, 0, 0, - 1334, 0, 0, 0, 214, 215, 216, 0, 0, 1510, - 0, 220, 221, 0, 222, 214, 215, 216, 468, 223, - 565, 224, 833, 834, 835, 836, 0, 839, 248, 249, - 250, 251, 252, 287, 253, 254, 255, 0, 468, 884, - 468, 1523, 0, 0, 0, 920, 0, 246, 247, 248, - 249, 250, 251, 252, 1530, 253, 254, 255, 217, 0, - 1349, 719, 0, 0, 1312, 1251, 0, 0, 0, 217, - 218, 219, 0, 0, 0, 720, 0, 0, 678, 0, - 721, 218, 219, 0, 0, 0, 779, 281, 0, 1383, - 0, 287, 0, 0, 926, 0, 0, 468, 470, 0, - 470, 469, 0, 0, 0, 0, 220, 221, 0, 222, - 0, 6, 0, 0, 223, 0, 224, 220, 221, 885, - 222, 469, 0, 469, 0, 223, 0, 224, 0, 0, - 0, 0, 766, 886, 0, 0, 1432, 1433, 887, 1434, - 0, 1435, 0, 888, 0, 0, 0, 708, 0, 304, - 310, 316, 0, 0, 725, 495, 0, 470, 634, -268, - 586, 0, 768, 0, 0, 0, 0, 927, 634, 214, - 215, 216, 1014, 0, 0, 769, 770, 586, 586, 586, - 469, 755, 0, 756, 1473, 757, 0, 468, 0, 1032, - 0, 771, 0, 0, 0, 0, 0, 0, 0, 0, - 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, - 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, - 1057, 772, 1060, 217, 773, 1393, 0, 774, 0, 0, - 0, 0, 0, 0, 750, 218, 219, 0, 0, 0, - 1500, 0, 0, 775, 0, 0, 0, 470, 0, 586, - 0, 0, 0, 0, 468, 776, 586, 0, 0, 779, - 779, 779, 586, 586, 0, 634, 0, 0, 0, 777, - 469, 220, 221, 0, 222, 0, 0, 0, 0, 223, - 926, 224, 0, 0, 0, 0, 0, 0, 0, 1312, - 1312, 1312, 1312, 1312, 0, 1312, 1526, 1527, 1528, 0, - 1529, 0, 837, 0, 0, 750, 239, 240, 0, 225, - 1344, 1346, 1348, 226, 470, 0, 586, 241, 227, 1377, - 1378, 1379, 1380, 1381, 0, 1384, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 634, 469, 1241, 0, - 0, 644, 0, 0, 0, 0, 0, 0, 586, 1398, - 1399, 1400, 1401, 1402, 0, 1403, 1404, 1405, 0, 0, - 0, 586, 779, 0, 0, 0, 0, 0, 0, 779, - 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, - 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1425, - 1285, 1426, 0, 1427, 0, 0, 1428, 1429, 1430, 0, - 1453, 1454, 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, - 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 0, - 7, 8, 9, 10, 0, 11, 12, 13, 198, 68, - 0, 0, 0, 0, 0, 0, 1312, 0, 0, 0, - 0, 248, 249, 250, 251, 252, 0, 253, 254, 255, - 0, 0, 0, 0, 0, 0, 0, 1022, 1023, 1024, - 0, 1026, 0, 1029, 1030, 1031, 1504, 15, 69, 0, - 0, 199, 0, 200, 201, 202, 74, 75, 0, 20, - 76, 0, 0, 203, 22, 0, 0, 78, 0, 0, - 1312, 0, 23, 24, 204, 0, 0, 0, 26, 0, - 0, 205, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 206, 0, 0, - 1521, 0, 0, 0, 0, 44, 0, 45, 0, 46, - 0, 866, 867, 0, 47, 0, 207, 208, 50, 0, - 0, 51, 84, 214, 215, 216, 52, 0, 0, 53, - 85, 86, 87, 209, 0, 0, 89, 0, 210, 0, - 646, 647, 648, 10, 0, 11, 649, 650, 67, 68, - 0, 56, 651, 0, 57, 58, 59, 0, 0, 60, - 0, 61, 62, 0, 0, 63, 0, 0, 0, 1329, - 0, 0, 0, 0, 0, 0, 0, 217, 0, 0, - 0, 0, 0, 0, 460, 0, 0, 652, 69, 218, - 219, 70, 0, 71, 72, 73, 74, 461, 0, 653, - 76, 0, 0, 77, 654, 0, 0, 78, 0, 0, - 0, 0, 655, 656, 79, 0, 0, 0, 0, 0, - 0, 80, 0, 1362, 0, 220, 221, 0, 222, 0, - 0, 0, 0, 223, 0, 224, 0, 81, 0, 0, - 0, 0, 0, 0, 0, 657, 0, 658, 0, 659, - 0, 0, 0, 462, 660, 0, 82, 83, 661, 497, - 0, 662, 84, 1391, 1392, 926, 663, 0, 0, 664, - 85, 86, 87, 88, 1393, 0, 89, 0, 90, 0, + 6, 213, 769, 611, 306, 680, 1238, 709, 184, 506, + 283, 182, 897, 326, 985, 495, 328, 641, 831, 257, + 1345, 258, 795, 607, 359, 350, 361, 362, 363, 364, + 917, 366, 676, 368, 786, 370, 392, 183, 188, 266, + 267, 268, 714, 409, 771, 642, 271, 833, 615, 513, + -753, 386, 901, 648, -754, 1386, 262, 1012, 104, 405, + -755, 232, 394, 395, 768, 410, 605, 787, 402, 403, + 351, 285, 286, 287, 553, 405, 154, 352, 406, 149, + 405, 935, 936, 147, 978, 979, 980, 981, 1067, 411, + 282, 282, 405, 554, 592, 845, 605, 793, 292, 1039, + 405, 148, 806, 1104, 805, 355, 405, 1068, 353, 242, + 150, 1251, 905, 816, 907, 908, 909, 910, 911, 1252, + -753, 1105, 263, -753, -754, 1253, 405, -754, 899, 999, + -755, 902, 818, -755, 354, 819, 605, 794, 452, 454, + 456, 458, 459, 156, 411, 1254, 358, 358, 1087, 358, + 358, 358, 358, 405, 358, 797, 358, 1405, 358, 815, + 982, 284, -756, 805, 1373, 266, 267, 268, 271, 921, + 922, 1346, 1295, 288, 358, 983, 984, 438, 439, 1076, + 616, 350, 292, 1374, 151, 358, 358, 189, 715, 1377, + 684, 358, 358, 455, 457, 436, 834, 300, 301, 302, + 1380, 303, 305, 307, 1387, 880, 311, 536, 1378, 405, + 289, 350, 317, 912, 913, 350, 730, 323, 324, 1381, + 327, 330, 331, 266, 335, 336, 351, 846, 1465, 413, + 152, 987, -756, 352, 1015, -756, 153, 1093, 405, 254, + 255, 256, 155, 405, 1018, 157, 405, 479, 988, 445, + -93, 446, -93, 447, -93, 185, 351, 1501, 282, 282, + 351, 355, 1502, 352, 353, 1503, 569, 352, 518, 1008, + 1009, 1241, 260, 453, 282, 282, 453, 453, 472, 1, + 2, 3, 405, 476, 1509, 405, 405, 1415, 1416, 1417, + 354, 355, 989, 158, 353, 355, 448, 405, 353, 1097, + 1261, 1504, 405, 1510, 1521, 1552, 159, 597, 64, 242, + 160, 600, 601, 602, 603, 604, 1553, 6, 405, 308, + 354, 1554, 805, 1014, 354, 606, 242, 1005, 161, 612, + 613, 1100, 257, 1000, 258, 823, 732, 1555, 733, 734, + 735, 162, 1099, 290, 528, -93, 529, -93, 530, -93, + 272, 163, 273, 292, 274, 528, 1256, 529, 680, 986, + 164, 821, 194, 195, 196, 197, 198, 165, 627, 233, + 628, 516, 629, 517, 166, 1090, 449, 215, 216, 217, + 983, 984, 1094, 879, 10, 676, 11, 305, 311, 358, + 450, 167, 1091, 497, 168, 451, 169, 275, 815, 1017, + 1332, 983, 984, 1245, 170, 1255, 171, 259, 172, 589, + 1360, 1361, 1362, 1248, 173, 630, 1428, 1096, 913, 1262, + 983, 984, 1325, 1102, 1103, 1265, 1266, 215, 216, 217, + 174, 218, 175, 249, 250, 251, 252, 253, 479, 254, + 255, 256, 453, 219, 220, 186, 453, 453, 453, 453, + 453, 187, 251, 252, 253, 190, 254, 255, 256, 191, + 453, 320, 785, 1405, 453, 453, 983, 984, 192, 626, + 321, 193, 638, 706, 261, 270, 471, 276, 297, 221, + 222, 218, 223, 312, 1263, 1264, 313, 224, 314, 225, + 322, 277, 681, 219, 220, 631, 278, 401, 6, 315, + 1324, 279, 316, 1327, 325, 404, 387, 389, 707, 632, + 390, 396, 411, 1329, 633, 635, 443, 1343, 473, 634, + 480, 728, 491, -271, 6, 493, 492, 350, 507, 221, + 222, 509, 223, 1259, 519, 532, 489, 224, 520, 225, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, + 434, 524, 437, 537, 1066, 405, 538, 441, 539, 540, + 541, 542, 351, 543, 545, 544, 546, 547, 548, 352, + 647, 549, -272, 551, 555, 413, 472, 783, 550, 1412, + 1413, 1414, 552, 1415, 1416, 1417, 584, 453, 535, 556, + 557, 558, 571, 496, 638, 559, 560, 355, 626, 561, + 353, 470, 842, 589, 562, 563, 564, 626, 626, 626, + 626, 626, 626, 413, 184, 897, 565, 182, 566, 572, + 573, 508, 575, 576, 413, 577, 354, 578, 580, 581, + 587, 594, -273, 6, 826, 598, 596, 605, 640, 614, + 646, 643, 685, 183, 792, 682, 686, 687, 688, 689, + 610, 471, 690, 706, 708, 711, 731, 755, 757, 758, + 788, 765, 767, 522, 810, 811, 812, 813, 814, 763, + 764, 798, 1351, 807, 1352, 766, -362, 820, 824, 817, + 471, 6, 828, 567, 1496, 1497, 1498, 990, 991, 829, + 830, 832, 835, 836, 626, 995, 874, 996, 844, 881, + 582, 583, 472, 479, 875, 472, 624, 590, 728, 876, + 728, 728, 728, 728, 728, 877, 878, 883, 1495, 884, + 903, 898, 1405, 900, 906, 184, 914, 925, 182, 1423, + 932, 926, 927, 1421, 923, 934, 992, 1002, 1003, 895, + 993, 783, 413, 994, 997, 1001, 1432, 1433, 1434, 680, + 1004, 1010, 1011, 1023, 183, 1079, 1020, 727, 1080, 805, + 815, 870, 871, -280, 1082, 1030, 1038, 1032, 754, 637, + 1069, 489, 1072, 1073, 471, 1074, 676, 1085, 626, 1086, + 413, 413, 1092, 1095, 783, 609, 470, 626, 1101, 913, + 1106, 1107, 1549, 1240, 638, 790, 1242, 1239, 1064, 1243, + 1556, 1244, 1246, 471, 638, 1250, 1258, 1268, 1267, 215, + 216, 217, 1269, 1280, 1026, 470, 718, 1281, 1270, 1282, + 1491, 1283, 1284, 1288, 1007, 1489, 742, 1494, 1286, 1289, + 1290, 1298, 1299, 1499, 1500, 1291, 1300, 1301, 706, 1302, + 1303, 1016, 1304, 719, 1305, 791, 1410, 1411, 1412, 1413, + 1414, 1323, 1415, 1416, 1417, 800, 801, 802, 803, 804, + 1330, 1326, 6, 218, 1071, 1337, 1331, 1363, 1376, 1347, + 1341, 626, 1383, 1348, 1349, 219, 220, 626, 626, 626, + 626, 626, 626, 1089, 1350, 1366, 413, 784, 1525, 1367, + 1368, 1369, 1370, 1523, 1371, 728, 1285, 1375, 1379, 1382, + 471, 637, 638, 471, 1384, 472, 1385, 1257, 1388, 470, + 1419, 221, 222, 1422, 223, 1424, 1078, 932, 1426, 224, + 1429, 225, 1540, 810, 811, 812, 813, 814, 1425, 1430, + 789, 1431, 1435, 1436, 1448, 1449, 293, 1548, 470, 822, + 1450, 894, 1451, 1452, 1453, 754, 1454, 215, 216, 217, + 754, 1455, 184, 1460, 727, 182, 727, 727, 727, 727, + 727, 1364, 327, 1464, 837, 838, 839, 840, 1490, 843, + 1334, 1335, 770, 638, 1492, 471, 1493, 1507, 1505, 754, + 754, 183, 754, 754, 754, 754, 589, 1508, 282, 1511, + 1512, 1513, 1514, 472, 1516, 413, 413, 1518, 1527, 472, + 472, 218, 772, 1517, 1524, 1529, 1526, 1530, 1528, 1531, + 1532, 1533, 1534, 219, 220, 773, 774, 1535, 1541, 358, + 1536, 1539, 1537, 1550, 1551, 1006, 1542, 1543, 1333, 827, + 1342, 775, 498, 471, 1013, 470, 1418, 931, 470, 1083, + 512, 882, 1506, 1340, 1306, 514, 1365, 1041, 1336, 221, + 222, 0, 223, 0, 586, 0, 0, 224, 0, 225, + 0, 776, 0, 0, 777, 0, 1089, 778, 0, 285, + 286, 287, 743, 0, 0, 626, 744, 0, 0, 0, + 0, 589, 0, 779, 589, 0, 0, 472, 0, 0, + 0, 585, 0, 358, 358, 780, 228, 0, 0, 0, + 0, 637, 0, 471, 0, 0, 0, 0, 0, 781, + 470, 637, 0, 0, 0, 1019, 0, 0, 1077, 745, + 1016, 0, 0, 0, 0, 800, 801, 802, 803, 804, + 0, 0, 1037, 0, 0, 754, 0, 0, 0, 0, + 0, 727, 0, 1042, 1043, 1044, 1045, 1046, 1047, 1048, + 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, + 1059, 1060, 1061, 1062, 1344, 1065, 0, 0, 470, 754, + 746, 288, 1354, 1356, 1358, 285, 286, 287, 887, 0, + 628, 0, 888, 0, 0, 695, 696, 697, 0, 0, + 0, 471, 0, 0, 0, 0, 0, 471, 471, 747, + 0, 0, 0, 925, 1401, 1402, 1403, 1404, 0, 637, + 0, 0, 0, 748, 0, 0, 0, 1405, 749, 0, + 0, 0, 0, 750, 931, 889, 0, 0, 0, 70, + 0, 71, 72, 73, 0, 0, 681, 0, 470, 0, + 231, 77, 0, 0, 783, 282, 0, 0, 0, 1395, + 0, 0, 79, 1437, 0, 1438, 472, 1439, 472, 80, + 1440, 1441, 1442, 269, 0, 0, 212, 0, 0, 6, + 0, 0, 0, 0, 0, 81, 0, 288, 0, 0, + 637, 0, 1249, 296, 0, 471, 285, 286, 287, 617, + 0, 0, 0, 618, 82, 83, 1444, 1445, 0, 1446, + 0, 1447, 319, 0, 0, 890, 285, 286, 287, 720, + 0, 88, 334, 721, 89, 0, 90, 472, 0, 891, + 589, 0, 1013, 0, 892, 0, 470, 932, 0, 893, + 0, 0, 470, 470, 1293, 0, 619, 589, 589, 589, + 0, 1410, 1411, 1412, 1413, 1414, 1486, 1415, 1416, 1417, + 0, 0, 0, 0, 360, 0, 722, 388, 0, 365, + 391, 367, 0, 369, 0, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 0, 0, 1322, 0, 0, 0, 0, 0, 288, 0, + 393, 0, 0, 0, 398, 399, 400, 1397, 1398, 1399, + 1400, 1401, 1402, 1403, 1404, 407, 408, 0, 288, 472, + 0, 589, 0, 0, 1405, 0, 620, 0, 589, 0, + 470, 783, 783, 783, 589, 589, 0, 0, 0, 0, + 621, 0, 0, 0, 471, 622, 723, 1071, 0, 0, + 623, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 724, 444, 0, 0, 471, 725, 471, 1399, 1400, 1401, + 1402, 1403, 1404, 1544, 1545, 1546, 0, 1547, 0, 488, + 0, 490, 1405, 0, 0, 442, 0, 472, 0, 589, + 0, 0, 0, 0, 0, 754, 0, 0, 500, 0, + 501, 502, 503, 504, 505, 0, 0, 0, 0, 0, + 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 0, 0, + 0, 515, 0, 589, 0, 471, 0, 1405, 0, 0, + 523, 0, 0, 526, 0, 0, 0, 0, 589, 783, + 1520, 534, 1406, 1407, 1408, 1409, 1339, 783, 1410, 1411, + 1412, 1413, 1414, 0, 1415, 1416, 1417, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 754, 0, + 0, 0, 215, 216, 217, 0, 0, 885, 0, 470, + 570, 0, 0, 0, 574, 0, 0, 0, 236, 237, + 238, 239, 240, 241, 0, 0, 0, 231, 0, 470, + 1372, 470, 0, 242, 568, 0, 1410, 1411, 1412, 1413, + 1414, 0, 1415, 1416, 1417, 0, 0, 471, 0, 1322, + 1322, 1322, 1322, 1322, 0, 1322, 218, 0, 0, 0, + 0, 0, 0, 0, 599, 0, 0, 0, 219, 220, + 0, 0, 0, 0, 931, 1406, 1407, 1408, 1409, 0, + 296, 1410, 1411, 1412, 1413, 1414, 0, 1415, 1416, 1417, + 470, 0, 639, 0, 234, 235, 236, 237, 238, 239, + 240, 241, 296, 0, 221, 222, 0, 223, 0, 0, + 296, 242, 224, 0, 225, 471, 0, 0, 0, 0, + 0, 1389, 1390, 1391, 1392, 1393, 0, 1396, 0, 0, + 0, 0, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, + 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, 1322, + 1322, 0, 0, 1487, 756, 247, 248, 249, 250, 251, + 252, 253, 712, 254, 255, 256, 0, 0, 0, 729, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1297, 665, 0, 0, 666, 667, 0, 0, 0, 668, - 0, 669, 0, 0, 0, 670, 0, 0, 0, 0, - 325, 0, 0, 1100, 1101, 1102, 1103, 1104, 1105, 1106, - 1107, 1108, 1109, 1110, 0, 1111, 1112, 1113, 1114, 1115, - 1116, 1117, 1118, 1119, 1120, 1121, 0, 0, 0, 0, - 0, 0, 1474, 1122, 1123, 1124, 1125, 1126, 1127, 1128, - 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, - 1139, 1140, 0, 0, 1141, 1142, 1143, 1144, 1145, 1146, - 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 0, - 1156, 0, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, - 1165, 0, 1166, 1167, 1168, 0, 0, 0, 1398, 1399, - 1400, 1401, 1402, 0, 1403, 1404, 1405, 0, 0, 0, - 1169, 0, 0, 0, 0, 0, 1170, 1171, 1172, 0, - 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, + 0, 0, 470, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 759, 0, 760, 1322, + 761, 0, 0, 407, 1466, 1467, 1468, 1469, 1470, 1471, + 1472, 1473, 1474, 1475, 1476, 1477, 1478, 1479, 1480, 1481, + 1482, 1483, 1484, 0, 0, 0, 0, 0, 0, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 0, 254, 255, 256, 0, 0, 808, 593, 0, 0, + 470, 7, 8, 9, 10, 1322, 11, 12, 13, 199, + 68, 0, 0, 0, 296, 0, 0, 0, 0, 0, + 0, 1519, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 234, 235, 236, 237, 238, 239, 240, + 241, 0, 0, 0, 0, 0, 0, 0, 15, 69, + 242, 0, 200, 0, 201, 202, 203, 74, 75, 0, + 20, 76, 0, 0, 204, 22, 0, 841, 78, 240, + 241, 886, 0, 23, 24, 205, 0, 1538, 0, 26, + 242, 0, 206, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 207, 0, + 1403, 1404, 920, 0, 0, 0, 44, 0, 45, 0, + 46, 1405, 0, 0, 0, 47, 0, 208, 209, 50, + 0, 0, 51, 84, 0, 0, 0, 52, 0, 0, + 53, 85, 86, 87, 210, 0, 0, 89, 0, 211, + 296, 234, 235, 236, 237, 238, 239, 240, 241, 0, + 0, 0, 56, 0, 0, 57, 58, 59, 242, 0, + 60, 0, 61, 62, 0, 0, 63, 0, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, + 254, 255, 256, 0, 0, 0, 1296, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 249, 250, 251, 252, 253, 0, + 254, 255, 256, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1027, 1028, 1029, 0, 1031, 0, 1034, + 1035, 1036, 0, 0, 0, 1410, 1411, 1412, 1413, 1414, + 0, 1415, 1416, 1417, 0, 0, 0, 236, 237, 238, + 239, 240, 241, 1084, 0, 0, 0, 0, 0, 0, + 0, 0, 242, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, + 256, 0, 0, 0, 1522, 0, 0, 0, 0, 0, + 0, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, + 1117, 1118, 0, 1119, 1120, 1121, 1122, 1123, 1124, 1125, + 1126, 1127, 1128, 1129, 0, 0, 0, 0, 0, 0, + 0, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, + 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, + 0, 0, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, + 1157, 1158, 1159, 1160, 1161, 1162, 1163, 0, 1164, 1260, + 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 0, + 1174, 1175, 1176, 246, 247, 248, 249, 250, 251, 252, + 253, 0, 254, 255, 256, 0, 0, 0, 1177, 0, + 1287, 0, 0, 0, 1178, 1179, 1180, 0, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, - 1203, 1204, 1205, 0, 0, 0, 1206, 1207, 1208, 1209, - 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, - 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1415, 1227, 1228, + 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, + 1213, 0, 0, 0, 1214, 1215, 1216, 1217, 1218, 1219, + 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, + 1230, 1231, 1232, 1233, 1234, 1427, 1235, 1236, 0, 0, + 0, 920, 0, 0, 0, 0, 0, 0, 0, 0, + 1307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1100, 1101, 1102, 1103, 1104, 1105, 1106, - 1107, 1108, 1109, 1110, 0, 1111, 1112, 1113, 1114, 1115, - 1116, 1117, 1118, 1119, 1120, 1121, 0, 0, 0, 0, - 0, 0, 1382, 1122, 1123, 1124, 1125, 1126, 1127, 1128, - 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, - 1139, 1140, 0, 0, 1141, 1142, 1143, 1144, 1145, 1146, - 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 0, - 1156, 0, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, - 1165, 0, 1166, 1167, 1168, 0, 0, 0, 0, 0, - 0, 0, 0, 1443, 1444, 1445, 1446, 0, 1449, 1450, - 1169, 0, 0, 0, 0, 0, 1170, 1171, 1172, 0, - 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, + 0, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, + 1117, 1118, 0, 1119, 1120, 1121, 1122, 1123, 1124, 1125, + 1126, 1127, 1128, 1129, 0, 0, 0, 0, 0, 0, + 0, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, 1138, + 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, + 0, 0, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156, + 1157, 1158, 1159, 1160, 1161, 1162, 1163, 0, 1164, 0, + 1165, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, 0, + 1174, 1175, 1176, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1177, 0, + 0, 0, 0, 0, 1178, 1179, 1180, 0, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, 1202, - 1203, 1204, 1205, 0, 0, 0, 1206, 1207, 1208, 1209, - 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, - 1220, 1221, 1222, 1223, 1224, 1225, 1226, 0, 1227, 1228, - 7, 8, 9, 10, 0, 11, 12, 13, 492, 0, + 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, + 1213, 0, 0, 1359, 1214, 1215, 1216, 1217, 1218, 1219, + 1220, 1221, 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, + 1230, 1231, 1232, 1233, 1234, 0, 1235, 1236, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, + 8, 9, 10, 0, 11, 12, 13, 494, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 233, 234, 235, 236, 237, 238, 239, 240, - 0, 0, 0, 0, 0, 0, 0, 15, 337, 241, - 0, 199, 0, 200, 201, 202, 74, 0, 0, 20, - 338, 0, 0, 203, 22, 0, 0, 78, 0, 0, - 0, 0, 23, 24, 204, 0, 0, 0, 26, 0, - 0, 205, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 206, 0, 0, + 0, 0, 0, 0, 1394, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 339, 0, 0, + 200, 0, 201, 202, 203, 74, 0, 0, 20, 340, + 0, 0, 204, 22, 0, 0, 78, 0, 0, 0, + 0, 23, 24, 205, 0, 0, 0, 26, 0, 0, + 206, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 207, 1456, 1457, 1458, + 1459, 0, 1462, 1463, 44, 0, 45, 0, 46, 0, + 0, 0, 0, 47, 0, 208, 209, 50, 0, 0, + 51, 84, 0, 0, 0, 52, 0, 0, 53, 342, + 343, 87, 210, 0, 0, 89, 0, 211, 7, 8, + 9, 10, 0, 11, 12, 13, 14, 0, 1515, 0, + 56, 0, 0, 57, 58, 59, 0, 0, 60, 0, + 61, 62, 0, 0, 63, 0, 0, 0, 0, 234, + 235, 236, 237, 238, 239, 240, 241, 0, 0, 0, + 0, 0, 0, 0, 0, 15, 242, 0, 0, 16, + 0, 17, 18, 19, 0, 0, 0, 20, 0, 739, + 740, 21, 22, 0, 0, 0, 0, 0, 0, 0, + 23, 24, 25, 0, 0, 0, 26, 0, 0, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 0, 0, 0, 0, + 0, 0, 0, 44, 0, 45, 0, 46, 0, 0, + 0, 0, 47, 0, 48, 49, 50, 0, 0, 51, + 0, 0, 0, 0, 52, 0, 0, 53, 0, 0, + 0, 54, 7, 8, 9, 10, 55, 11, 12, 13, + 14, 741, 0, 0, 0, 0, 0, 0, 0, 56, + 0, 0, 57, 58, 59, 0, 0, 60, 0, 61, + 62, 0, 591, 63, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 0, 254, 255, 256, 15, + 0, 0, 0, 16, 0, 17, 18, 19, 0, 0, + 0, 20, 0, 0, 0, 21, 22, 215, 216, 217, + 0, 0, 0, 0, 23, 24, 25, 0, 0, 0, + 26, 0, 0, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 0, 0, 0, 0, 0, 0, 0, 44, 0, 45, + 0, 46, 0, 0, 0, 0, 47, 0, 48, 49, + 50, 218, 0, 51, 0, 0, 0, 0, 52, 0, + 0, 53, 0, 219, 220, 54, 7, 8, 9, 10, + 55, 11, 12, 13, 14, 0, 0, 0, 0, 0, + 0, 0, 0, 56, 0, 0, 57, 58, 59, 0, + 0, 60, 0, 61, 62, 435, 0, 63, 0, 221, + 222, 0, 223, 0, 0, 0, 0, 224, 0, 225, + 0, 0, 0, 15, 440, 0, 0, 16, 0, 17, + 18, 19, 0, 0, 0, 20, 0, 0, 0, 21, + 22, 0, 0, 0, 0, 0, 0, 226, 23, 24, + 25, 227, 0, 0, 26, 0, 228, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 0, 0, 0, 0, 0, 0, + 0, 44, 0, 45, 0, 46, 0, 0, 0, 0, + 47, 0, 48, 49, 50, 0, 0, 51, 0, 0, + 0, 0, 52, 0, 0, 53, 0, 0, 0, 54, + 7, 8, 9, 10, 55, 11, 12, 13, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, + 57, 58, 59, 0, 0, 60, 0, 61, 62, 0, + 0, 63, 0, 0, 0, 234, 235, 236, 237, 238, + 239, 240, 241, 0, 0, 0, 0, 15, 717, 0, + 0, 16, 242, 17, 18, 19, 0, 0, 0, 20, + 0, 0, 0, 21, 22, 0, 0, 0, 0, 0, + 0, 0, 23, 24, 25, 0, 0, 0, 26, 0, + 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 0, 0, 0, 0, 0, 0, 0, 44, 0, 45, 0, 46, - 0, 0, 0, 0, 47, 0, 207, 208, 50, 0, - 0, 51, 84, 0, 0, 0, 52, 0, 0, 53, - 340, 341, 87, 209, 0, 0, 89, 0, 210, 7, - 8, 9, 10, 0, 11, 12, 13, 14, 0, 0, + 0, 0, 0, 0, 47, 0, 48, 49, 50, 0, + 0, 51, 0, 0, 0, 0, 52, 0, 0, 53, + 0, 0, 0, 54, 7, 8, 9, 10, 55, 11, + 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 57, 58, 59, 0, 0, 60, - 0, 61, 62, 0, 0, 63, 0, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 0, 253, - 254, 255, 0, 0, 0, 590, 15, 0, 0, 0, - 16, 0, 17, 18, 19, 0, 0, 0, 20, 0, - 735, 736, 21, 22, 214, 215, 216, 0, 0, 0, - 0, 23, 24, 25, 0, 0, 0, 26, 0, 0, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 0, 0, 0, - 0, 0, 0, 0, 44, 0, 45, 0, 46, 0, - 0, 0, 0, 47, 0, 48, 49, 50, 217, 0, - 51, 0, 0, 0, 0, 52, 0, 0, 53, 0, - 218, 219, 54, 7, 8, 9, 10, 55, 11, 12, - 13, 14, 737, 0, 0, 0, 0, 0, 0, 0, - 56, 0, 0, 57, 58, 59, 0, 0, 60, 0, - 61, 62, 0, 0, 63, 0, 220, 221, 0, 222, - 0, 0, 0, 0, 223, 0, 224, 0, 0, 0, - 15, 0, 0, 0, 16, 0, 17, 18, 19, 0, - 0, 0, 20, 0, 0, 0, 21, 22, 479, 480, - 481, 0, 0, 0, 0, 23, 24, 25, 582, 0, - 0, 26, 0, 227, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 0, 0, 0, 0, 0, 0, 0, 44, 0, - 45, 0, 46, 0, 0, 0, 0, 47, 0, 48, - 49, 50, 217, 0, 51, 0, 0, 0, 0, 52, - 0, 0, 53, 0, 218, 219, 54, 7, 8, 9, - 10, 55, 11, 12, 13, 14, 0, 0, 0, 0, - 0, 0, 0, 0, 56, 0, 0, 57, 58, 59, - 0, 0, 60, 0, 61, 62, 433, 0, 63, 0, - 484, 221, 0, 222, 0, 0, 0, 0, 223, 0, - 224, 0, 0, 0, 15, 438, 0, 0, 16, 0, - 17, 18, 19, 0, 0, 0, 20, 0, 0, 0, - 21, 22, 0, 0, 0, 0, 0, 288, 0, 23, - 24, 25, 0, 0, 0, 26, 0, 0, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 0, 0, 0, 0, 0, - 0, 0, 44, 0, 45, 0, 46, 0, 0, 0, - 0, 47, 0, 48, 49, 50, 0, 0, 51, 0, - 0, 0, 0, 52, 0, 0, 53, 0, 0, 0, - 54, 7, 8, 9, 10, 55, 11, 12, 13, 14, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, - 0, 57, 58, 59, 0, 0, 60, 0, 61, 62, - 0, 0, 63, 0, 0, 0, 233, 234, 235, 236, - 237, 238, 239, 240, 0, 0, 0, 0, 15, 713, - 0, 0, 16, 241, 17, 18, 19, 0, 0, 0, - 20, 0, 0, 0, 21, 22, 0, 0, 0, 0, - 0, 0, 0, 23, 24, 25, 0, 0, 0, 26, - 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 0, - 0, 0, 0, 0, 0, 0, 44, 0, 45, 0, - 46, 0, 0, 0, 0, 47, 0, 48, 49, 50, - 0, 0, 51, 0, 0, 0, 0, 52, 0, 0, - 53, 0, 0, 0, 54, 7, 8, 9, 10, 55, - 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, - 0, 0, 56, 0, 0, 57, 58, 59, 0, 0, - 60, 0, 61, 62, 0, 0, 63, 0, 0, 588, - 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 15, 253, 254, 255, 16, 0, 17, 18, - 19, 0, 0, 0, 20, 0, 0, 0, 21, 22, - 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, - 0, 0, 0, 26, 0, 0, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 0, 0, 0, 0, 0, 0, 0, - 44, 0, 45, 0, 46, 0, 0, 0, 0, 47, - 0, 48, 49, 50, 0, 0, 51, 0, 0, 0, - 0, 52, 0, 0, 53, 0, 0, 0, 54, 7, - 8, 9, 10, 55, 11, 12, 13, 14, 923, 0, - 0, 0, 0, 0, 0, 0, 56, 0, 0, 57, - 58, 59, 0, 0, 60, 0, 61, 62, 0, 0, - 63, 0, 0, 0, 233, 234, 235, 236, 237, 238, - 239, 240, 0, 0, 0, 0, 15, 0, 0, 0, - 16, 241, 17, 18, 19, 0, 0, 0, 20, 0, - 0, 0, 21, 22, 0, 0, 0, 0, 0, 0, - 0, 23, 24, 25, 0, 0, 0, 26, 0, 0, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 0, 0, 0, - 0, 0, 0, 0, 44, 0, 45, 0, 46, 0, - 0, 0, 0, 47, 0, 48, 49, 50, 0, 0, - 51, 0, 0, 0, 0, 52, 0, 0, 53, 0, - 0, 0, 54, 7, 8, 9, 10, 55, 11, 12, - 13, 14, 0, 0, 0, 0, 0, 0, 0, 0, - 56, 0, 0, 57, 58, 59, 0, 0, 60, 0, - 61, 62, 1058, 0, 63, 0, 928, 0, 0, 242, + 0, 61, 62, 0, 0, 63, 0, 933, 0, 0, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 15, 253, 254, 255, 16, 0, 17, 18, 19, 0, - 0, 0, 20, 0, 0, 0, 21, 22, 0, 0, - 0, 0, 0, 0, 0, 23, 24, 25, 0, 0, - 0, 26, 0, 0, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 0, 0, 0, 0, 0, 0, 0, 44, 0, - 45, 0, 46, 0, 0, 0, 0, 47, 0, 48, - 49, 50, 0, 0, 51, 0, 0, 0, 0, 52, - 0, 0, 53, 0, 0, 0, 54, 7, 8, 9, - 10, 55, 11, 12, 13, 14, 1328, 0, 0, 0, - 0, 0, 0, 0, 56, 0, 0, 57, 58, 59, - 0, 0, 60, 0, 61, 62, 0, 0, 63, 0, - 0, 0, 233, 234, 235, 236, 237, 238, 239, 240, - 0, 0, 0, 0, 15, 0, 0, 0, 16, 241, - 17, 18, 19, 0, 0, 0, 20, 0, 0, 0, - 21, 22, 0, 0, 0, 0, 0, 0, 0, 23, - 24, 25, 0, 0, 0, 26, 0, 0, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 0, 0, 0, 0, 0, - 0, 0, 44, 0, 45, 0, 46, 0, 0, 0, - 0, 47, 0, 48, 49, 50, 0, 0, 51, 0, - 0, 0, 0, 52, 0, 0, 53, 0, 0, 0, - 54, 7, 8, 9, 10, 55, 11, 12, 13, 14, - 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, - 0, 57, 58, 59, 0, 0, 60, 0, 61, 62, - 1472, 0, 63, 1263, 0, 0, 0, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 15, 253, - 254, 255, 16, 0, 17, 18, 19, 0, 0, 0, - 20, 0, 0, 0, 21, 22, 0, 0, 0, 0, - 0, 0, 0, 23, 24, 25, 0, 0, 0, 26, - 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 0, - 0, 0, 0, 0, 0, 0, 44, 0, 45, 0, - 46, 0, 0, 0, 0, 47, 0, 48, 49, 50, - 0, 0, 51, 0, 0, 0, 0, 52, 0, 0, - 53, 0, 0, 0, 54, 646, 647, 648, 10, 55, - 11, 649, 650, 67, 68, 0, 0, 1035, 0, 0, - 0, 0, 56, 0, 0, 57, 58, 59, 0, 0, - 60, 0, 61, 62, 0, 0, 63, 233, 234, 235, - 236, 237, 238, 239, 240, 0, 0, 0, 0, 460, - 0, 0, 652, 69, 241, 0, 70, 0, 71, 72, - 73, 74, 461, 0, 653, 76, 0, 0, 77, 654, - 0, 0, 78, 0, 0, 0, 0, 655, 656, 79, - 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, - 657, 0, 658, 0, 659, 0, 0, 0, 462, 660, - 0, 82, 83, 661, 0, 0, 662, 84, 0, 0, - 0, 663, 0, 0, 664, 85, 86, 87, 88, 0, - 0, 89, 0, 90, 7, 8, 9, 10, 0, 11, - 12, 13, 0, 0, 0, 0, 665, 0, 0, 666, - 667, 0, 0, 0, 668, 0, 669, 0, 0, 0, - 670, 0, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 0, 253, 254, 255, 0, 0, 0, - 1288, 1298, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1299, 0, 0, 0, 0, 1300, 234, - 235, 236, 237, 238, 239, 240, 23, 24, 0, 0, - 0, 0, 26, 0, 0, 241, 28, 29, 30, 31, + 253, 15, 254, 255, 256, 16, 0, 17, 18, 19, + 0, 0, 0, 20, 0, 0, 0, 21, 22, 0, + 0, 0, 0, 0, 0, 0, 23, 24, 25, 0, + 0, 0, 26, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 0, 233, 234, 235, 236, 237, 238, 239, 240, - 0, 45, 0, 46, 0, 0, 0, 0, 1301, 241, - 0, 0, 1302, 0, 0, 1303, 0, 0, 0, 0, - 52, 0, 0, 0, 0, 0, 0, 70, 0, 71, - 72, 73, 0, 0, 0, 0, 0, 0, 0, 263, - 0, 0, 0, 0, 0, 1304, 0, 0, 1305, 1306, - 1307, 932, 0, 1308, 0, 1309, 62, 80, 0, 1310, - 0, 933, 934, 935, 936, 937, 938, 939, 940, 0, - 0, 0, 0, 264, 0, 0, 0, 0, 941, 0, - 942, 943, 944, 945, 946, 947, 948, 949, 950, 951, - 952, 953, 82, 83, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 0, 253, 254, 255, 0, 88, - 954, 0, 0, 0, 90, 0, 0, 0, 0, 0, - 0, 0, 335, 336, 0, 0, 0, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 0, 253, - 254, 255, 0, 0, 0, 1507, 0, 1389, 1390, 1391, - 1392, 0, 0, 955, 0, 0, 0, 0, 0, 0, - 1393, 0, 0, 337, 0, 0, 70, 0, 71, 72, - 73, 74, 0, 0, 0, 338, 0, 0, 77, 0, - 0, 0, 78, 0, 0, 0, 0, 0, 0, 79, - 0, 0, 956, 0, 0, 957, 80, 958, 959, 960, - 961, 962, 963, 964, 965, 966, 967, 968, 0, 969, - 970, 0, 81, 971, 0, 335, 336, 0, 0, 0, - 0, 0, 0, 339, 0, 0, 0, 0, 0, 0, - 0, 82, 83, 0, 0, 0, 0, 84, 0, 0, - 0, 0, 0, 0, 0, 340, 341, 87, 88, 0, - 0, 89, 0, 90, 0, 0, 337, 0, 342, 70, - 0, 71, 72, 73, 74, 0, 0, 0, 338, 0, - 0, 77, 0, 0, 343, 78, 0, 0, 0, 0, - 0, 0, 79, 0, 1398, 1399, 1400, 1401, 1402, 80, - 1403, 1404, 1405, 0, 0, 0, 0, 0, 0, 0, - 0, 507, 508, 0, 0, 81, 0, 70, 0, 71, - 72, 73, 0, 0, 0, 0, 339, 0, 0, 263, - 0, 0, 0, 0, 82, 83, 0, 0, 0, 0, - 84, 0, 0, 0, 0, 0, 0, 80, 340, 341, - 87, 88, 337, 0, 89, 70, 90, 71, 72, 73, - 74, 0, 0, 264, 338, 0, 0, 77, 0, 0, - 0, 78, 0, 0, 0, 0, 0, 343, 79, 0, - 0, 0, 82, 83, 0, 80, 233, 234, 235, 236, - 237, 238, 239, 240, 0, 0, 0, 0, 0, 88, - 0, 81, 0, 241, 90, 0, 0, 0, 0, 0, - 0, 70, 339, 71, 72, 73, 0, 0, 0, 0, - 82, 83, 0, 0, 0, 0, 84, 174, 0, 0, - 0, 0, 0, 0, 340, 341, 87, 88, 0, 0, - 89, 80, 90, 233, 234, 235, 236, 237, 238, 239, - 240, 0, 0, 0, 0, 0, 0, 264, 0, 0, - 241, 0, 0, 343, 233, 234, 235, 236, 237, 238, - 239, 240, 0, 0, 0, 0, 82, 83, 0, 0, - 0, 241, 233, 234, 235, 236, 237, 238, 239, 240, - 0, 0, 0, 88, 0, 0, 0, 0, 90, 241, - 0, 233, 234, 235, 236, 237, 238, 239, 240, 0, - 0, 0, 0, 0, 0, 0, 0, 689, 241, 0, - 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 0, 253, 254, 255, 690, 233, 234, 235, - 236, 237, 238, 239, 240, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 241, 233, 234, 235, 236, 237, - 238, 239, 240, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 241, 0, 0, 0, 0, 0, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 0, - 253, 254, 255, 576, 0, 0, 0, 0, 0, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 0, 253, 254, 255, 592, 0, 0, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 0, 253, - 254, 255, 680, 0, 0, 0, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 0, 253, 254, - 255, 758, 233, 234, 235, 236, 237, 238, 239, 240, - 0, 0, 0, 0, 0, 0, 214, 215, 216, 241, - 0, 880, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 0, 253, 254, 255, 899, 0, 0, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 0, 253, 254, 255, 1016, 233, 234, 235, 236, - 237, 238, 239, 240, 0, 0, 479, 480, 481, 0, - 217, 0, 0, 241, 233, 234, 235, 236, 237, 238, - 239, 240, 218, 219, 0, 0, 0, 0, 0, 0, - 0, 241, 843, 844, 845, 846, 847, 848, 849, 850, - 0, 0, 0, 482, 0, 483, 0, 0, 0, 851, - 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 220, 221, - 217, 222, 0, 0, 0, 0, 223, 1393, 224, 0, - 0, 0, 218, 219, 0, 0, 0, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 0, 253, - 254, 255, 1284, 1385, 1386, 1387, 1388, 1389, 1390, 1391, - 1392, 0, 0, 0, 0, 0, 0, 0, 484, 221, - 1393, 222, 0, 0, 0, 0, 223, 0, 224, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1286, - 0, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 485, 253, 254, 255, 0, 0, 0, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 0, 253, 254, 255, 0, 0, 0, 852, 853, 854, - 855, 856, 857, 858, 859, 860, 861, 862, 0, 863, - 864, 865, 0, 1505, 0, 1394, 1395, 1396, 1397, 0, - 0, 1398, 1399, 1400, 1401, 1402, -2, 1403, 1404, 1405, - 0, 0, 0, 0, 0, 1386, 1387, 1388, 1389, 1390, - 1391, 1392, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1393, 0, 0, 0, 0, 0, 0, 1394, 1395, - 1396, 1397, 0, 0, 1398, 1399, 1400, 1401, 1402, 0, - 1403, 1404, 1405, 105, 0, 106, 0, 0, 107, 108, - 0, 0, 0, 0, 0, 0, 109, 110, 0, 0, - 0, 0, 0, 0, 0, 111, 0, 112, 113, 114, - 115, 0, 0, 0, 116, 0, 0, 0, 0, 117, + 42, 43, 0, 0, 0, 0, 0, 0, 0, 44, + 0, 45, 0, 46, 0, 0, 0, 0, 47, 0, + 48, 49, 50, 0, 0, 51, 0, 0, 0, 0, + 52, 0, 0, 53, 0, 0, 0, 54, 7, 8, + 9, 10, 55, 11, 12, 13, 14, 928, 0, 0, + 0, 0, 0, 0, 0, 56, 0, 0, 57, 58, + 59, 0, 0, 60, 0, 61, 62, 0, 0, 63, + 0, 0, 0, 234, 235, 236, 237, 238, 239, 240, + 241, 0, 0, 0, 0, 15, 0, 0, 0, 16, + 242, 17, 18, 19, 0, 0, 0, 20, 0, 0, + 0, 21, 22, 0, 0, 0, 0, 0, 0, 0, + 23, 24, 25, 0, 0, 0, 26, 0, 0, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 0, 0, 0, 0, + 0, 0, 0, 44, 0, 45, 0, 46, 0, 0, + 0, 0, 47, 0, 48, 49, 50, 0, 0, 51, + 0, 0, 0, 0, 52, 0, 0, 53, 0, 0, + 0, 54, 7, 8, 9, 10, 55, 11, 12, 13, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 56, + 0, 0, 57, 58, 59, 0, 0, 60, 0, 61, + 62, 1063, 0, 63, 1271, 0, 0, 0, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 15, + 254, 255, 256, 16, 0, 17, 18, 19, 0, 0, + 0, 20, 0, 0, 0, 21, 22, 0, 0, 0, + 0, 0, 0, 0, 23, 24, 25, 0, 0, 0, + 26, 0, 0, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 0, 0, 0, 0, 0, 0, 0, 44, 0, 45, + 0, 46, 0, 0, 0, 0, 47, 0, 48, 49, + 50, 0, 0, 51, 0, 0, 0, 0, 52, 0, + 0, 53, 0, 0, 0, 54, 7, 8, 9, 10, + 55, 11, 12, 13, 14, 1338, 0, 0, 0, 0, + 0, 0, 0, 56, 0, 0, 57, 58, 59, 0, + 0, 60, 0, 61, 62, 0, 0, 63, 0, 0, + 0, 234, 235, 236, 237, 238, 239, 240, 241, 0, + 0, 0, 0, 15, 0, 0, 0, 16, 242, 17, + 18, 19, 0, 0, 0, 20, 0, 0, 0, 21, + 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, + 25, 0, 0, 0, 26, 0, 0, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 0, 0, 0, 0, 0, 0, + 0, 44, 0, 45, 0, 46, 0, 0, 0, 0, + 47, 0, 48, 49, 50, 0, 0, 51, 0, 0, + 0, 0, 52, 0, 0, 53, 0, 0, 0, 54, + 7, 8, 9, 10, 55, 11, 12, 13, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, + 57, 58, 59, 0, 0, 60, 0, 61, 62, 1485, + 0, 63, 0, 0, 1294, 0, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 15, 254, 255, + 256, 16, 0, 17, 18, 19, 0, 0, 0, 20, + 0, 0, 0, 21, 22, 0, 0, 0, 0, 0, + 0, 0, 23, 24, 25, 0, 0, 0, 26, 0, + 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 0, 0, + 0, 0, 0, 0, 0, 44, 0, 45, 0, 46, + 0, 0, 0, 0, 47, 0, 48, 49, 50, 0, + 0, 51, 0, 0, 0, 0, 52, 0, 0, 53, + 0, 0, 0, 54, 649, 650, 651, 10, 55, 11, + 652, 653, 67, 68, 0, 0, 654, 0, 0, 0, + 0, 56, 0, 0, 57, 58, 59, 0, 0, 60, + 0, 61, 62, 0, 0, 63, 234, 235, 236, 237, + 238, 239, 240, 241, 0, 0, 0, 0, 462, 0, + 0, 655, 69, 242, 0, 70, 0, 71, 72, 73, + 74, 463, 0, 656, 76, 0, 0, 77, 657, 0, + 0, 78, 0, 0, 0, 0, 658, 659, 79, 0, + 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, + 0, 234, 235, 236, 237, 238, 239, 240, 241, 0, + 0, 81, 0, 0, 0, 0, 0, 0, 242, 660, + 0, 661, 0, 662, 0, 0, 0, 464, 663, 0, + 82, 83, 664, 0, 0, 665, 84, 0, 0, 0, + 666, 0, 0, 667, 85, 86, 87, 88, 0, 0, + 89, 0, 90, 0, 649, 650, 651, 10, 0, 11, + 652, 653, 67, 68, 0, 668, 1040, 0, 669, 670, + 0, 0, 0, 671, 0, 672, 0, 693, 0, 673, + 0, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 0, 254, 255, 256, 694, 0, 462, 0, + 0, 655, 69, 0, 0, 70, 0, 71, 72, 73, + 74, 463, 0, 656, 76, 0, 0, 77, 657, 0, + 0, 78, 0, 0, 0, 0, 658, 659, 79, 0, + 0, 0, 0, 0, 0, 80, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, + 256, 81, 0, 0, 0, 0, 0, 0, 0, 660, + 0, 661, 0, 662, 0, 0, 0, 464, 663, 0, + 82, 83, 664, 0, 0, 665, 84, 0, 0, 0, + 666, 0, 0, 667, 85, 86, 87, 88, 0, 0, + 89, 0, 90, 7, 8, 9, 10, 0, 11, 12, + 13, 0, 0, 0, 0, 668, 0, 0, 669, 670, + 0, 0, 0, 671, 0, 672, 0, 0, 0, 673, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 118, 119, - 120, 121, 122, 123, 0, 0, 0, 0, 0, 124, - 125, 126, 127, 0, 0, 0, 0, 0, 128, 129, - 67, 68, 130, 131, 458, 0, 459, 132, 0, 0, - 0, 0, 0, 133, 134, 0, 135, 0, 0, 0, - 1395, 1396, 1397, 0, 136, 1398, 1399, 1400, 1401, 1402, - 0, 1403, 1404, 1405, 0, 0, 460, 0, 0, 0, - 69, 0, 0, 70, 0, 71, 72, 73, 74, 461, - 0, 0, 76, 0, 0, 77, 0, 0, 0, 78, - 235, 236, 237, 238, 239, 240, 79, 0, 0, 0, - 0, 0, 0, 80, 0, 241, 235, 236, 237, 238, - 239, 240, 0, 0, 0, 0, 0, 0, 0, 81, - 0, 241, 235, 236, 237, 238, 239, 240, 0, 0, - 0, 0, 0, 0, 0, 462, 0, 241, 82, 83, - 0, 0, 0, 0, 84, 0, 1387, 1388, 1389, 1390, - 1391, 1392, 85, 86, 87, 88, 0, 0, 89, 0, - 90, 1393, 235, 236, 237, 238, 239, 240, 0, 0, - 0, 0, 0, 463, 0, 0, 0, 241, 464, 1387, - 1388, 1389, 1390, 1391, 1392, 0, 0, 0, 1387, 1388, - 1389, 1390, 1391, 1392, 1393, 0, 0, 0, 0, 0, - 0, 0, 0, 1393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 0, 253, 254, 255, 0, 0, - 0, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 0, 253, 254, 255, 0, 0, 0, 0, 245, 246, - 247, 248, 249, 250, 251, 252, 0, 253, 254, 255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1395, 1396, 1397, 0, 0, 1398, 1399, 1400, 1401, 1402, - 0, 1403, 1404, 1405, 0, 303, 0, 0, 303, 246, - 247, 248, 249, 250, 251, 252, 0, 253, 254, 255, - 0, 0, 0, 0, 0, 1397, 0, 0, 1398, 1399, - 1400, 1401, 1402, 0, 1403, 1404, 1405, 1398, 1399, 1400, - 1401, 1402, 0, 1403, 1404, 1405, 105, 0, 106, 105, - 0, 106, 108, 0, 0, 108, 0, 0, 0, 109, - 110, 0, 109, 110, 0, 214, 215, 216, 0, 0, - 112, 113, 114, 112, 297, 114, 0, 0, 0, 0, - 0, 0, 298, 0, 0, 298, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 395, 67, 68, - 0, 0, 0, 0, 0, 122, 0, 0, 122, 0, - 0, 0, 0, 0, 0, 127, 0, 0, 127, 217, - 0, 128, 0, 0, 128, 130, 131, 0, 0, 131, - 0, 218, 219, 0, 0, 0, 0, 134, 69, 135, - 134, 70, 135, 71, 72, 73, 74, 75, 0, 0, - 76, 0, 0, 77, 0, 0, 0, 78, 0, 0, - 0, 0, 0, 0, 79, 0, 0, 220, 1264, 1265, - 1266, 80, 0, 0, 0, 223, 0, 224, 0, 0, - 0, 0, 0, 1028, 67, 68, 0, 81, 1267, 0, - 0, 0, 0, 1268, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 82, 83, 0, 0, - 0, 0, 84, 0, 1448, 67, 68, 0, 0, 0, - 85, 86, 87, 88, 69, 0, 89, 70, 90, 71, - 72, 73, 74, 75, 0, 0, 76, 0, 0, 77, - 0, 0, 0, 78, 0, 0, 0, 0, 0, 0, - 79, 0, 0, 0, 0, 69, 0, 80, 70, 0, - 71, 72, 73, 74, 75, 0, 0, 76, 0, 0, - 77, 0, 0, 81, 78, 0, 0, 0, 0, 0, - 0, 79, 0, 0, 0, 0, 0, 0, 80, 0, - 0, 0, 82, 83, 0, 0, 0, 0, 84, 0, - 691, 692, 693, 0, 81, 0, 85, 86, 87, 88, - 0, 0, 89, 0, 90, 691, 692, 693, 0, 0, + 1308, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1309, 0, 0, 0, 0, 1310, 235, 236, + 237, 238, 239, 240, 241, 23, 24, 0, 0, 0, + 0, 26, 0, 0, 242, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 0, 234, 235, 236, 237, 238, 239, 240, 241, 0, + 45, 0, 46, 0, 0, 0, 0, 1311, 242, 0, + 0, 1312, 0, 0, 1313, 0, 0, 0, 0, 52, + 0, 0, 0, 0, 0, 0, 70, 0, 71, 72, + 73, 0, 0, 0, 0, 0, 0, 0, 264, 0, + 0, 0, 0, 0, 1314, 0, 0, 1315, 1316, 1317, + 937, 0, 1318, 0, 1319, 62, 80, 0, 1320, 0, + 938, 939, 940, 941, 942, 943, 944, 945, 0, 0, + 0, 0, 265, 0, 0, 0, 0, 946, 0, 947, + 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, + 958, 82, 83, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 0, 254, 255, 256, 0, 88, 959, + 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, + 0, 337, 338, 0, 0, 0, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, + 256, 579, 0, 1398, 1399, 1400, 1401, 1402, 1403, 1404, + 0, 0, 960, 0, 0, 0, 0, 0, 0, 1405, + 0, 0, 339, 0, 0, 70, 0, 71, 72, 73, + 74, 0, 0, 0, 340, 0, 0, 77, 0, 0, + 0, 78, 0, 0, 0, 0, 0, 0, 79, 0, + 0, 961, 0, 0, 962, 80, 963, 964, 965, 966, + 967, 968, 969, 970, 971, 972, 973, 0, 974, 975, + 0, 81, 976, 0, 337, 338, 0, 0, 0, 0, + 0, 0, 341, 0, 0, 0, 0, 0, 0, 0, + 82, 83, 0, 0, 0, 0, 84, 0, 0, 0, + 0, 0, 0, 0, 342, 343, 87, 88, 0, 0, + 89, 0, 90, 0, 0, 339, 0, 344, 70, 0, + 71, 72, 73, 74, 0, 0, 0, 340, 0, 0, + 77, 0, 0, 345, 78, 0, 0, 0, 1407, 1408, + 1409, 79, 0, 1410, 1411, 1412, 1413, 1414, 80, 1415, + 1416, 1417, 0, 0, 0, 0, 0, 0, 0, 0, + 510, 511, 0, 0, 81, 0, 70, 0, 71, 72, + 73, 0, 0, 0, 0, 341, 0, 0, 264, 0, 0, 0, 0, 82, 83, 0, 0, 0, 0, 84, - 70, 0, 71, 72, 73, 0, 0, 85, 86, 87, - 88, 0, 0, 89, 70, 90, 71, 72, 73, 694, - 695, 0, 0, 214, 215, 216, 77, 0, 0, 70, - 80, 71, 72, 73, 0, 0, 0, 79, 0, 0, - 0, 77, 0, 0, 80, 0, 264, 0, 0, 0, - 0, 0, 79, 0, 0, 0, 0, 0, 0, 80, - 81, 0, 0, 0, 0, 82, 83, 0, 0, 0, - 0, 0, 67, 68, 0, 81, 458, 217, 0, 82, - 83, 0, 88, 0, 0, 0, 0, 90, 0, 218, - 219, 0, 0, 696, 82, 83, 88, 0, 0, 89, - 0, 90, 0, 67, 68, 0, 0, 792, 460, 0, - 185, 88, 69, 0, 89, 70, 90, 71, 72, 73, - 74, 461, 0, 0, 76, 220, 221, 77, 222, 0, - 0, 78, 0, 223, 0, 224, 0, 0, 79, 460, - 0, 0, 0, 69, 0, 80, 70, 0, 71, 72, - 73, 74, 461, 0, 0, 76, 0, 0, 77, 0, - 0, 81, 78, 0, 0, 0, 0, 0, 0, 79, - 0, 0, 0, 0, 0, 0, 80, 462, 0, 0, - 82, 83, 0, 0, 0, 0, 84, 0, 214, 215, - 216, 0, 81, 0, 85, 86, 87, 88, 67, 68, - 89, 0, 90, 0, 0, 0, 0, 0, 462, 0, - 0, 82, 83, 0, 0, 0, 0, 84, 0, 0, - 0, 0, 0, 0, 0, 85, 86, 87, 88, 67, - 68, 89, 0, 90, 460, 0, 0, 0, 69, 0, - 0, 70, 217, 71, 72, 73, 74, 461, 0, 0, - 76, 0, 0, 77, 218, 219, 0, 78, 0, 70, - 0, 71, 72, 73, 79, 0, 0, 0, 0, 69, - 0, 80, 70, 0, 71, 72, 73, 74, 75, 0, - 0, 76, 0, 0, 77, 0, 0, 81, 78, 80, - 220, 221, 0, 222, 0, 79, 0, 0, 223, 0, - 224, 0, 80, 462, 0, 264, 82, 83, 0, 0, - 0, 1267, 84, 0, 0, 67, 68, 0, 81, 0, - 85, 86, 87, 88, 82, 83, 89, 0, 90, 0, - 0, 0, 0, 0, 0, 0, 0, 82, 83, 67, - 68, 88, 0, 84, 0, 0, 90, 214, 215, 216, - 0, 85, 86, 87, 88, 69, 0, 89, 70, 90, - 71, 72, 73, 74, 0, 0, 0, 76, 0, 186, - 77, 0, 0, 0, 78, 0, 0, 0, 0, 69, - 0, 79, 70, 0, 71, 72, 73, 74, 80, 0, - 0, 76, 0, 0, 77, 0, 0, 0, 78, 0, - 0, 217, 0, 0, 81, 79, 0, 0, 0, 0, - 0, 0, 80, 218, 219, 0, 0, 0, 0, 0, - 605, 0, 0, 82, 83, 67, 0, 0, 81, 84, - 0, 0, 0, 0, 0, 0, 0, 85, 86, 87, - 88, 0, 0, 89, 331, 90, 0, 82, 83, 220, - 221, 0, 222, 84, 175, 0, 0, 223, 0, 224, - 0, 85, 86, 87, 88, 69, 0, 89, 70, 90, - 71, 72, 73, 74, 518, 0, 0, 76, 0, 0, - 77, 0, 0, 0, 78, 0, 0, 0, 0, 0, - 0, 79, 0, 0, 176, 0, 0, 70, 80, 71, - 72, 73, 74, 993, 0, 0, 177, 0, 0, 77, - 0, 0, 0, 78, 81, 0, 0, 0, 0, 0, - 79, 0, 0, 0, 0, 0, 0, 80, 0, 0, - 0, 0, 0, 82, 83, 0, 0, 0, 0, 84, - 175, 0, 0, 81, 0, 0, 0, 85, 86, 87, - 88, 0, 0, 89, 0, 90, 0, 0, 0, 0, - 0, 0, 82, 83, 67, 0, 0, 0, 84, 0, - 0, 0, 214, 215, 216, 0, 178, 179, 87, 88, - 176, 0, 89, 70, 90, 71, 72, 73, 74, 0, - 0, 0, 177, 0, 0, 77, 0, 0, 0, 78, - 0, 0, 0, 0, 69, 0, 79, 70, 0, 71, - 72, 73, 74, 80, 0, 0, 76, 0, 0, 77, - 0, 0, 0, 78, 0, 0, 217, 0, 0, 81, - 79, 214, 215, 216, 0, 0, 0, 80, 218, 219, - 0, 0, 0, 0, 0, 214, 215, 216, 82, 83, - 0, 0, 0, 81, 84, 0, 0, 0, 0, 214, - 215, 216, 178, 179, 87, 88, 0, 0, 89, 0, - 90, 0, 82, 83, 220, 221, 0, 222, 84, 0, - 0, 0, 223, 0, 224, 217, 85, 86, 87, 88, - 0, 0, 89, 0, 90, 1267, 0, 218, 219, 217, - 1343, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 218, 219, 217, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 218, 219, 0, 0, 0, - 0, 0, 0, 220, 221, 0, 222, 0, 0, 0, - 0, 223, 0, 224, 0, 0, 0, 220, 221, 0, - 222, 0, 0, 0, 1267, 223, 0, 224, 0, 1345, - 0, 220, 221, 0, 222, 0, 0, 0, 1267, 223, - 105, 224, 106, 1347, 0, 107, 108, 0, 0, 0, - 0, 0, 0, 109, 110, 0, 292, 0, 0, 0, - 0, 0, 111, 0, 112, 113, 114, 115, 0, 0, - 0, 116, 0, 0, 0, 0, 117, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 80, 342, 343, 87, + 88, 339, 0, 89, 70, 90, 71, 72, 73, 74, + 0, 0, 265, 340, 0, 0, 77, 477, 0, 0, + 78, 0, 0, 0, 0, 0, 345, 79, 0, 0, + 0, 82, 83, 0, 80, 234, 235, 236, 237, 238, + 239, 240, 241, 0, 0, 0, 0, 0, 88, 0, + 81, 0, 242, 90, 0, 0, 0, 481, 482, 483, + 70, 341, 71, 72, 73, 0, 0, 0, 0, 82, + 83, 0, 0, 0, 0, 84, 175, 0, 0, 0, + 0, 0, 0, 342, 343, 87, 88, 0, 0, 89, + 80, 90, 234, 235, 236, 237, 238, 239, 240, 241, + 0, 0, 0, 0, 0, 0, 265, 0, 0, 242, + 0, 218, 345, 234, 235, 236, 237, 238, 239, 240, + 241, 0, 0, 219, 220, 82, 83, 0, 0, 0, + 242, 234, 235, 236, 237, 238, 239, 240, 241, 0, + 0, 0, 88, 0, 0, 0, 0, 90, 242, 234, + 235, 236, 237, 238, 239, 240, 241, 0, 0, 486, + 222, 0, 223, 0, 0, 0, 242, 224, 0, 225, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 0, 254, 255, 256, 595, 234, 235, 236, 237, + 238, 239, 240, 241, 0, 0, 289, 0, 0, 0, + 0, 0, 0, 242, 847, 848, 849, 850, 851, 852, + 853, 854, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 855, 0, 0, 0, 0, 0, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 0, 254, + 255, 256, 683, 0, 0, 0, 0, 0, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 0, + 254, 255, 256, 762, 0, 0, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 0, 254, 255, + 256, 904, 0, 0, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 0, 254, 255, 256, 1021, + 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 118, 119, 120, 121, 122, - 123, 0, 0, 0, 0, 0, 124, 125, 126, 127, - 0, 0, 105, 0, 106, 128, 129, 107, 108, 130, - 131, 0, 0, 0, 132, 109, 110, 0, 0, 0, - 133, 134, 0, 135, 111, 0, 112, 113, 114, 115, - 0, 136, 0, 116, 0, 0, 0, 0, 117, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 687, 0, 0, 0, 0, 0, 0, 118, 119, 120, - 121, 122, 123, 0, 0, 0, 0, 0, 124, 125, - 126, 127, 0, 0, 105, 0, 106, 128, 129, 107, - 108, 130, 131, 0, 0, 0, 132, 109, 110, 0, - 0, 0, 133, 134, 0, 135, 111, 0, 112, 113, - 114, 115, 0, 136, 0, 116, 0, 0, 0, 0, + 0, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 0, 254, 255, 256, 1292, 0, 0, 856, + 857, 858, 859, 860, 861, 862, 863, 864, 865, 866, + 0, 867, 868, 869, 105, 0, 106, 0, 0, 107, + 108, 0, 0, 0, 0, 0, 0, 109, 110, 0, + 0, 0, 0, 0, 0, 0, 111, 0, 112, 113, + 114, 115, 0, 0, 0, 116, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 868, 0, 0, 0, 0, 0, 0, 118, - 119, 120, 121, 122, 123, 0, 0, 0, 0, 0, - 124, 125, 126, 127, 0, 0, 105, 0, 106, 128, - 129, 107, 108, 130, 131, 0, 0, 0, 132, 109, - 110, 0, 0, 0, 133, 134, 0, 135, 111, 0, - 112, 113, 114, 115, 0, 136, 0, 116, 0, 0, - 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 910, 0, 0, 0, 0, 0, - 0, 118, 119, 120, 121, 122, 123, 0, 0, 0, - 0, 0, 124, 125, 126, 127, 0, 0, 105, 0, - 106, 128, 129, 107, 108, 130, 131, 0, 0, 0, - 132, 109, 110, 0, 0, 0, 133, 134, 0, 135, - 111, 0, 112, 113, 114, 115, 0, 136, 0, 116, + 0, 0, 0, 0, 0, 0, 0, 0, 118, 119, + 120, 121, 122, 123, 124, 0, 0, 0, 0, 0, + 125, 126, 127, 128, 0, 0, 0, 0, 0, 129, + 130, 67, 68, 131, 132, 460, 0, 461, 133, 0, + 0, 0, 0, 0, 134, 135, 0, 136, 236, 237, + 238, 239, 240, 241, 0, 137, 0, 0, 0, 0, + 0, 0, 0, 242, 0, 0, 0, 462, 0, 0, + 0, 69, 0, 0, 70, 0, 71, 72, 73, 74, + 463, 0, 0, 76, 0, 0, 77, 0, 0, 0, + 78, 236, 237, 238, 239, 240, 241, 79, 0, 0, + 0, 0, 0, 0, 80, 0, 242, 1399, 1400, 1401, + 1402, 1403, 1404, 0, 0, 0, 0, 0, 0, 0, + 81, 0, 1405, 1399, 1400, 1401, 1402, 1403, 1404, 0, + 0, 0, 0, 0, 0, 0, 464, 0, 1405, 82, + 83, 0, 0, 0, 0, 84, 0, 1399, 1400, 1401, + 1402, 1403, 1404, 85, 86, 87, 88, 0, 0, 89, + 0, 90, 1405, 238, 239, 240, 241, 0, 0, 0, + 0, 0, 0, 0, 465, 0, 242, 0, 0, 466, + 0, 0, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 0, 254, 255, 256, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 481, 482, + 483, 0, 0, 0, 0, 0, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 0, 254, 255, 256, 0, + 0, 1407, 1408, 1409, 0, 0, 1410, 1411, 1412, 1413, + 1414, 0, 1415, 1416, 1417, 484, 0, 485, 1408, 1409, + 0, 0, 1410, 1411, 1412, 1413, 1414, 0, 1415, 1416, + 1417, 0, 218, 0, 0, 770, 0, 215, 216, 217, + 0, 0, 0, 1409, 219, 220, 1410, 1411, 1412, 1413, + 1414, 771, 1415, 1416, 1417, 0, 0, 0, 247, 248, + 249, 250, 251, 252, 253, 772, 254, 255, 256, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 773, 774, + 486, 222, 0, 223, 215, 216, 217, 0, 224, 0, + 225, 218, 0, 0, 775, 0, 0, 0, 0, 215, + 216, 217, 0, 219, 220, 0, 0, 0, 0, 0, + 0, 0, 0, 304, 487, 0, 304, 0, 0, 0, + 0, 0, 0, 0, 776, 0, 0, 777, 0, 0, + 778, 0, 0, 0, 0, 0, 0, 0, 218, 221, + 222, 0, 223, 0, 0, 0, 779, 224, 0, 225, + 219, 220, 0, 218, 105, 0, 106, 105, 780, 106, + 108, 0, 0, 108, 0, 219, 220, 109, 110, 0, + 109, 110, 781, 318, 0, 0, 0, 0, 112, 113, + 114, 112, 298, 114, 0, 0, 221, 222, 0, 223, + 299, 0, 0, 299, 224, 0, 225, 0, 0, 0, + 0, 221, 1272, 1273, 1274, 397, 67, 68, 0, 224, + 0, 225, 0, 123, 0, 0, 123, 0, 0, 0, + 499, 0, 1275, 128, 0, 0, 128, 1276, 0, 129, + 0, 0, 129, 131, 132, 0, 0, 132, 0, 0, + 215, 216, 217, 0, 0, 135, 69, 136, 135, 70, + 136, 71, 72, 73, 74, 75, 0, 0, 76, 0, + 0, 77, 0, 0, 0, 78, 0, 0, 0, 0, + 0, 0, 79, 0, 0, 0, 0, 0, 0, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 1033, 67, 68, 218, 81, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 219, 220, 0, 0, + 0, 0, 0, 0, 82, 83, 0, 0, 0, 0, + 84, 0, 1461, 67, 68, 0, 0, 0, 85, 86, + 87, 88, 69, 0, 89, 70, 90, 71, 72, 73, + 74, 75, 221, 222, 76, 223, 0, 77, 0, 0, + 224, 78, 225, 70, 0, 71, 72, 73, 79, 0, + 0, 0, 0, 69, 0, 80, 70, 0, 71, 72, + 73, 74, 75, 0, 0, 76, 0, 0, 77, 0, + 0, 81, 78, 80, 0, 0, 0, 0, 0, 79, + 0, 0, 0, 0, 0, 0, 80, 0, 0, 265, + 82, 83, 0, 0, 0, 0, 84, 0, 695, 696, + 697, 0, 81, 0, 85, 86, 87, 88, 82, 83, + 89, 0, 90, 0, 0, 0, 0, 0, 0, 0, + 0, 82, 83, 0, 0, 88, 0, 84, 67, 68, + 90, 0, 460, 0, 0, 85, 86, 87, 88, 0, + 0, 89, 70, 90, 71, 72, 73, 698, 699, 0, + 0, 0, 0, 186, 77, 0, 0, 67, 68, 0, + 0, 796, 0, 0, 462, 79, 0, 0, 69, 0, + 0, 70, 80, 71, 72, 73, 74, 463, 0, 0, + 76, 0, 0, 77, 0, 0, 0, 78, 81, 0, + 0, 0, 0, 462, 79, 0, 0, 69, 0, 0, + 70, 80, 71, 72, 73, 74, 463, 82, 83, 76, + 0, 0, 77, 0, 0, 0, 78, 81, 0, 0, + 0, 700, 0, 79, 88, 0, 0, 89, 0, 90, + 80, 0, 0, 464, 0, 0, 82, 83, 0, 0, + 0, 0, 84, 0, 0, 0, 81, 0, 67, 68, + 85, 86, 87, 88, 0, 0, 89, 0, 90, 0, + 0, 0, 464, 0, 0, 82, 83, 0, 0, 0, + 0, 84, 0, 0, 0, 0, 0, 67, 68, 85, + 86, 87, 88, 0, 462, 89, 0, 90, 69, 0, + 0, 70, 0, 71, 72, 73, 74, 463, 0, 0, + 76, 0, 0, 77, 0, 0, 0, 78, 0, 0, + 0, 0, 0, 0, 79, 0, 0, 69, 0, 0, + 70, 80, 71, 72, 73, 74, 75, 0, 0, 76, + 0, 0, 77, 0, 0, 0, 78, 81, 0, 0, + 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, + 80, 0, 0, 464, 0, 0, 82, 83, 0, 0, + 0, 0, 84, 67, 68, 0, 81, 0, 0, 0, + 85, 86, 87, 88, 0, 0, 89, 0, 90, 0, + 0, 0, 0, 0, 0, 82, 83, 67, 68, 0, + 0, 84, 0, 0, 0, 215, 216, 217, 0, 85, + 86, 87, 88, 69, 0, 89, 70, 90, 71, 72, + 73, 74, 0, 0, 0, 76, 0, 70, 77, 71, + 72, 73, 78, 0, 0, 0, 0, 69, 0, 79, + 70, 0, 71, 72, 73, 74, 80, 0, 0, 76, + 0, 0, 77, 0, 0, 0, 78, 80, 0, 218, + 0, 0, 81, 79, 0, 0, 0, 0, 0, 0, + 80, 219, 220, 265, 0, 0, 0, 0, 608, 0, + 0, 82, 83, 67, 0, 0, 81, 84, 0, 0, + 0, 0, 82, 83, 0, 85, 86, 87, 88, 0, + 0, 89, 333, 90, 0, 82, 83, 221, 222, 88, + 223, 84, 176, 0, 90, 224, 0, 225, 0, 85, + 86, 87, 88, 69, 0, 89, 70, 90, 71, 72, + 73, 74, 521, 0, 0, 76, 0, 187, 77, 0, + 0, 0, 78, 0, 0, 0, 0, 0, 0, 79, + 0, 0, 177, 0, 0, 70, 80, 71, 72, 73, + 74, 998, 0, 0, 178, 0, 0, 77, 0, 0, + 0, 78, 81, 0, 0, 0, 0, 0, 79, 0, + 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, + 0, 82, 83, 0, 0, 0, 0, 84, 176, 0, + 0, 81, 0, 0, 0, 85, 86, 87, 88, 0, + 0, 89, 0, 90, 0, 0, 0, 0, 0, 0, + 82, 83, 67, 0, 0, 0, 84, 0, 0, 0, + 215, 216, 217, 0, 179, 180, 87, 88, 177, 0, + 89, 70, 90, 71, 72, 73, 74, 0, 0, 0, + 178, 0, 0, 77, 0, 0, 0, 78, 0, 0, + 0, 0, 69, 0, 79, 70, 0, 71, 72, 73, + 74, 80, 0, 0, 76, 0, 0, 77, 0, 0, + 0, 78, 0, 0, 218, 0, 0, 81, 79, 215, + 216, 217, 0, 0, 0, 80, 219, 220, 0, 0, + 0, 0, 0, 215, 216, 217, 82, 83, 0, 0, + 0, 81, 84, 0, 0, 0, 0, 215, 216, 217, + 179, 180, 87, 88, 0, 0, 89, 0, 90, 0, + 82, 83, 221, 222, 0, 223, 84, 0, 0, 0, + 224, 0, 225, 218, 85, 86, 87, 88, 0, 0, + 89, 0, 90, 1275, 0, 219, 220, 218, 1353, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 219, + 220, 218, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 219, 220, 0, 0, 0, 0, 0, + 0, 221, 222, 0, 223, 0, 0, 0, 0, 224, + 0, 225, 0, 0, 0, 221, 222, 0, 223, 0, + 0, 0, 1275, 224, 0, 225, 0, 1355, 0, 221, + 222, 0, 223, 0, 0, 0, 1275, 224, 105, 225, + 106, 1357, 0, 107, 108, 0, 0, 0, 0, 0, + 1275, 109, 110, 0, 0, 0, 0, 0, 0, 0, + 111, 0, 112, 113, 114, 115, 0, 0, 0, 116, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1017, 0, 0, 0, - 0, 0, 0, 118, 119, 120, 121, 122, 123, 0, - 0, 0, 0, 0, 124, 125, 126, 127, 0, 0, - 105, 0, 106, 128, 129, 107, 108, 130, 131, 0, - 0, 0, 132, 109, 110, 0, 0, 0, 133, 134, - 0, 135, 111, 0, 112, 113, 114, 115, 0, 136, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 118, 119, 120, 121, 122, 123, 124, 0, + 0, 0, 0, 0, 125, 126, 127, 128, 0, 0, + 105, 0, 106, 129, 130, 107, 108, 131, 132, 0, + 0, 0, 133, 109, 110, 0, 0, 0, 134, 135, + 0, 136, 111, 0, 112, 113, 114, 115, 0, 137, 0, 116, 0, 0, 0, 0, 117, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1067, 0, - 0, 0, 0, 0, 0, 118, 119, 120, 121, 122, - 123, 0, 0, 0, 0, 0, 124, 125, 126, 127, - 0, 0, 105, 0, 106, 128, 129, 107, 108, 130, - 131, 0, 0, 0, 132, 109, 110, 0, 0, 0, - 133, 134, 0, 135, 111, 0, 112, 113, 114, 115, - 0, 136, 0, 116, 0, 214, 215, 216, 117, 0, - 0, 0, 0, 0, 0, 70, 0, 71, 72, 73, - 1289, 0, 0, 0, 0, 0, 0, 118, 119, 120, - 121, 122, 123, 0, 0, 0, 0, 0, 124, 125, - 126, 127, 482, 0, 483, 80, 0, 128, 129, 0, - 0, 130, 131, 0, 0, 0, 132, 0, 0, 217, - 0, 264, 133, 134, 105, 135, 106, 0, 0, 0, - 108, 218, 219, 136, 0, 0, 0, 109, 110, 0, - 82, 83, 0, 0, 0, 0, 0, 0, 112, 297, - 114, 0, 1431, 0, 0, 116, 0, 88, 0, 0, - 298, 0, 90, 0, 0, 0, 0, 220, 221, 0, - 222, 0, 0, 0, 0, 223, 105, 224, 106, 0, - 0, 0, 108, 122, 0, 191, 0, 0, 0, 109, - 110, 0, 0, 127, 0, 0, 0, 0, 0, 128, - 112, 113, 114, 0, 131, 0, 0, 116, 0, 0, - 0, 0, 298, 0, 133, 134, 105, 135, 106, 0, - 0, 107, 108, 0, 0, 0, 0, 0, 0, 109, - 110, 0, -149, 0, 0, 122, 0, 0, 111, 0, - 112, 113, 114, 115, 0, 127, 0, 116, 0, 0, - 0, 128, 117, 0, 0, 130, 131, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 133, 134, 0, 135, - 0, 118, 119, 120, 121, 122, 123, 0, 0, 0, - 0, 0, 124, 125, 126, 127, 0, 0, 105, 0, - 106, 128, 129, 0, 108, 130, 131, 105, 0, 106, - 132, 109, 110, 108, 0, 0, 133, 134, 0, 135, - 109, 110, 112, 297, 114, 0, 0, 0, 0, 0, - 0, 112, 297, 114, 298, 0, 0, 0, 0, 0, - 0, 0, 0, 298, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 122, 309, 0, - 0, 0, 0, 0, 0, 0, 122, 127, 0, 0, - 0, 0, 0, 128, 0, 0, 127, 0, 131, 0, - 0, 0, 128, 0, 0, 0, 0, 131, 0, 134, - 0, 135, 0, 0, 0, 0, 0, 0, 134, 0, - 135 + 0, 0, 0, 0, 0, 0, 0, 0, 691, 0, + 0, 0, 0, 0, 118, 119, 120, 121, 122, 123, + 124, 0, 0, 0, 0, 0, 125, 126, 127, 128, + 0, 0, 105, 0, 106, 129, 130, 107, 108, 131, + 132, 0, 0, 0, 133, 109, 110, 0, 0, 0, + 134, 135, 0, 136, 111, 0, 112, 113, 114, 115, + 0, 137, 0, 116, 0, 0, 0, 0, 117, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 872, 0, 0, 0, 0, 0, 118, 119, 120, 121, + 122, 123, 124, 0, 0, 0, 0, 0, 125, 126, + 127, 128, 0, 0, 105, 0, 106, 129, 130, 107, + 108, 131, 132, 0, 0, 0, 133, 109, 110, 0, + 0, 0, 134, 135, 0, 136, 111, 0, 112, 113, + 114, 115, 0, 137, 0, 116, 0, 0, 0, 0, + 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 915, 0, 0, 0, 0, 0, 118, 119, + 120, 121, 122, 123, 124, 0, 0, 0, 0, 0, + 125, 126, 127, 128, 0, 0, 105, 0, 106, 129, + 130, 107, 108, 131, 132, 0, 0, 0, 133, 109, + 110, 0, 0, 0, 134, 135, 0, 136, 111, 0, + 112, 113, 114, 115, 0, 137, 0, 116, 0, 0, + 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1022, 0, 0, 0, 0, 0, + 118, 119, 120, 121, 122, 123, 124, 0, 0, 0, + 0, 0, 125, 126, 127, 128, 0, 0, 105, 0, + 106, 129, 130, 107, 108, 131, 132, 0, 0, 0, + 133, 109, 110, 0, 0, 0, 134, 135, 0, 136, + 111, 0, 112, 113, 114, 115, 0, 137, 0, 116, + 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1075, 0, 0, 0, + 0, 0, 118, 119, 120, 121, 122, 123, 124, 0, + 0, 0, 0, 0, 125, 126, 127, 128, 0, 0, + 105, 0, 106, 129, 130, 107, 108, 131, 132, 0, + 0, 0, 133, 109, 110, 0, 0, 0, 134, 135, + 0, 136, 111, 0, 112, 113, 114, 115, 0, 137, + 0, 116, 0, 215, 216, 217, 117, 0, 0, 0, + 0, 0, 0, 70, 0, 71, 72, 73, 1297, 0, + 0, 0, 0, 0, 118, 119, 120, 121, 122, 123, + 124, 0, 0, 0, 0, 0, 125, 126, 127, 128, + 484, 0, 485, 80, 0, 129, 130, 0, 0, 131, + 132, 0, 0, 0, 133, 0, 0, 218, 0, 265, + 134, 135, 105, 136, 106, 0, 0, 0, 108, 219, + 220, 137, 0, 0, 0, 109, 110, 0, 82, 83, + 0, 0, 0, 0, 0, 0, 112, 298, 114, 0, + 1443, 0, 0, 116, 0, 88, 0, 0, 299, 0, + 90, 0, 0, 0, 0, 221, 222, 0, 223, 0, + 0, 0, 0, 224, 105, 225, 106, 0, 0, 0, + 108, 123, 0, 192, 0, 0, 0, 109, 110, 0, + 0, 128, 0, 0, 0, 0, 0, 129, 112, 113, + 114, 0, 132, 0, 0, 116, 0, 0, 0, 0, + 299, 0, 134, 135, 105, 136, 106, 0, 0, 107, + 108, 0, 0, 0, 0, 0, 0, 109, 110, 0, + -151, 0, 0, 123, 0, 0, 111, 0, 112, 113, + 114, 115, 0, 128, 0, 116, 0, 0, 0, 129, + 117, 0, 0, 131, 132, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 134, 135, 0, 136, 118, 119, + 120, 121, 122, 123, 124, 0, 0, 0, 0, 0, + 125, 126, 127, 128, 0, 0, 105, 0, 106, 129, + 130, 0, 108, 131, 132, 105, 0, 106, 133, 109, + 110, 108, 0, 0, 134, 135, 0, 136, 109, 110, + 112, 298, 114, 0, 0, 0, 0, 0, 0, 112, + 298, 114, 299, 0, 0, 0, 70, 0, 71, 72, + 73, 299, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 123, 310, 0, 0, 0, + 0, 0, 0, 0, 123, 128, 80, 0, 0, 0, + 0, 129, 0, 0, 128, 0, 132, 0, 0, 0, + 129, 0, 265, 0, 0, 132, 0, 135, 0, 136, + 0, 0, 0, 0, 0, 0, 135, 0, 136, 0, + 0, 82, 83, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, + 0, 0, 0, 90 }; static const yytype_int16 yycheck[] = { - 1, 61, 728, 748, 92, 706, 923, 140, 113, 509, - 140, 15, 316, 602, 75, 62, 140, 296, 6, 182, - 8, 478, 657, 491, 150, 15, 462, 130, 33, 59, - 13, 147, 460, 15, 15, 15, 0, 147, 85, 165, - 147, 130, 149, 150, 151, 152, 791, 154, 149, 156, - 329, 158, 164, 169, 482, 491, 166, 155, 105, 468, - 44, 62, 490, 76, 164, 44, 715, 174, 717, 718, - 719, 720, 721, 150, 15, 147, 123, 711, 185, 186, - 147, 164, 147, 33, 191, 192, 133, 6, 165, 8, - 91, 92, 44, 164, 166, 125, 146, 75, 99, 166, - 13, 166, 15, 155, 17, 584, 740, 741, 33, 743, - 744, 745, 746, 164, 164, 273, 274, 275, 276, 277, - 583, 10, 11, 12, 147, 150, 165, 166, 81, 82, - 83, 178, 767, 146, 181, 88, 149, 146, 33, 148, - 165, 150, 164, 166, 149, 146, 147, 60, 149, 150, - 151, 152, 148, 154, 150, 156, 140, 158, 621, 164, - 165, 140, 166, 296, 164, 165, 296, 147, 155, 632, - 258, 259, 296, 174, 164, 164, 159, 613, 166, 226, - 227, 182, 164, 164, 185, 186, 274, 275, 140, 352, - 191, 192, 325, 497, 254, 325, 329, 606, 146, 329, - 147, 325, 33, 165, 166, 329, 147, 616, 617, 618, - 619, 620, 801, 163, 164, 165, 164, 278, 522, 166, - 164, 689, 811, 112, 6, 272, 8, 140, 229, 76, - 709, 165, 166, 712, 159, 160, 161, 76, 163, 164, - 165, 154, 164, 290, 147, 292, 159, 64, 65, 749, - 98, 164, 901, 206, 207, 208, 209, 258, 259, 164, - 149, 895, 309, 166, 311, 312, 313, 314, 163, 164, - 165, 997, 273, 274, 275, 276, 277, 278, 339, 147, - 164, 388, 283, 441, 331, 164, 749, 445, 446, 447, - 448, 449, 701, 340, 751, 929, 343, 147, 166, 146, - 278, 459, 149, 611, 351, 463, 464, 146, 76, 146, - 149, 264, 296, 165, 166, 316, 166, 296, 164, 908, - 10, 11, 12, 13, 787, 788, 164, 17, 159, 160, - 161, 164, 163, 164, 165, 288, 147, 641, 164, 150, - 768, 325, 164, 390, 296, 329, 325, 394, 784, 164, - 329, 352, 18, 19, 20, 21, 22, 23, 993, 164, - 407, 640, 164, 147, 147, 165, 166, 33, 1094, 147, - 60, 164, 147, 325, 842, 147, 785, 329, 146, 164, - 147, 149, 166, 166, 688, 794, 149, 388, 166, 147, - 979, 166, 892, 147, 166, 164, 147, 444, 147, 166, - 461, 462, 10, 11, 12, 13, 842, 408, 166, 17, - 469, 1328, 166, 460, 13, 166, 15, 166, 17, 147, - 147, 111, 112, 164, 146, 472, 148, 149, 150, 892, - 491, 164, 911, 164, 147, 482, 147, 595, 166, 166, - 441, 147, 290, 490, 445, 446, 447, 448, 449, 164, - 140, 155, 60, 166, 164, 166, 164, 518, 459, 164, - 166, 60, 463, 464, 154, 164, 165, 468, 877, 159, - 471, 143, 144, 145, 164, 884, 885, 886, 887, 888, - 164, 165, 166, 461, 462, 164, 533, 153, 154, 164, - 491, 157, 158, 159, 160, 161, 497, 163, 164, 165, - 146, 147, 1247, 351, 112, 506, 164, 640, 164, 165, - 640, 164, 164, 491, 164, 164, 640, 149, 519, 2, - 999, 522, 149, 584, 164, 478, 1005, 1006, 164, 146, - 164, 148, 140, 150, 164, 582, 164, 166, 1001, 1002, - 150, 140, 165, 159, 605, 13, 154, 15, 607, 17, - 165, 159, 613, 149, 506, 154, 164, 146, 48, 148, - 159, 150, 164, 165, 166, 869, 147, 164, 627, 628, - 629, 630, 631, 56, 57, 58, 59, 60, 625, 155, - 63, 146, 583, 584, 585, 146, 164, 148, 148, 150, - 164, 164, 60, 147, 595, 167, 643, 164, 165, 166, - 166, 602, 166, 164, 166, 606, 584, 166, 166, 669, - 611, 1090, 1313, 166, 615, 616, 617, 618, 619, 620, - 621, 113, 114, 115, 156, 166, 156, 605, 166, 166, - 166, 632, 166, 147, 147, 613, 15, 166, 166, 166, - 641, 642, 701, 166, 166, 166, 166, 166, 709, 166, - 166, 712, 699, 156, 166, 166, 640, 166, 166, 166, - 166, 640, 156, 167, 166, 166, 166, 164, 166, 1078, - 166, 519, 140, 657, 165, 1420, 1421, 1422, 657, 159, - 165, 146, 530, 730, 992, 533, 154, 688, 640, 166, - 164, 159, 1418, 753, 754, 149, 164, 166, 147, 147, - 701, 761, 147, 763, 147, 657, 164, 190, 709, 148, - 166, 712, 164, 149, 715, 166, 717, 718, 719, 720, - 721, 768, 164, 784, 164, 166, 164, 786, 48, 164, - 159, 709, 159, 734, 712, 169, 737, 146, 48, 76, - 164, 155, 155, 695, 803, 155, 164, 748, 749, 155, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 1239, 255, 878, 166, 878, 1084, 260, 1523, 1087, - 1259, 842, 1261, 767, 785, 1530, 787, 788, 767, 878, - 791, 10, 10, 794, 10, 10, 148, 156, 751, 147, - 801, 148, 159, 1239, 864, 166, 784, 167, 159, 148, - 811, 166, 148, 296, 159, 767, 166, 166, 877, 146, - 821, 147, 166, 166, 164, 884, 885, 886, 887, 888, - 164, 169, 164, 880, 164, 166, 165, 165, 149, 1318, - 323, 165, 164, 164, 147, 147, 150, 166, 166, 166, - 911, 159, 165, 167, 61, 148, 148, 147, 706, 10, - 167, 166, 4, 711, 842, 147, 48, 715, 869, 717, - 718, 719, 720, 721, 169, 164, 877, 164, 11, 146, - 166, 169, 883, 884, 885, 886, 887, 888, 889, 169, - 147, 892, 740, 741, 156, 743, 744, 745, 746, 10, - 901, 156, 385, 156, 156, 166, 994, 908, 166, 148, - 911, 10, 166, 10, 10, 148, 147, 164, 1025, 402, - 403, 54, 923, 56, 57, 58, 409, 879, 169, 1408, - 166, 169, 167, 911, 15, 167, 166, 166, 999, 166, - 164, 148, 164, 166, 1005, 1006, 153, 164, 155, 996, - 157, 84, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 100, 1272, 166, - 164, 166, 164, 164, 155, 155, 155, 184, 979, 155, - 1027, 188, 189, 190, 167, 146, 119, 120, 471, 1096, - 1097, 992, 166, 994, 167, 17, 1475, 166, 999, 166, - 1001, 1002, 166, 136, 1005, 1006, 166, 166, 141, 993, - 10, 33, 148, 1321, 993, 10, 148, 148, 10, 1078, - 148, 999, 166, 164, 1025, 47, 166, 1005, 1006, 1090, - 1338, 1339, 1340, 15, 517, 147, 156, 167, 60, 61, - 166, 993, 166, 156, 527, 166, 156, 895, 1095, 166, - 156, 166, 10, 901, 76, 148, 10, 148, 167, 164, - 164, 164, 269, 148, 33, 166, 164, 1095, 1069, 10, - 11, 12, 20, 21, 22, 23, 166, 1078, 166, 166, - 148, 929, 308, 1084, 106, 33, 1087, 109, 643, 1090, - 112, 10, 11, 12, 13, 1096, 1097, 1242, 17, 1313, - 879, 329, 1410, 695, 1239, 588, 128, 842, 1069, 1417, - 1206, 1273, 1090, 407, -1, 1423, 1424, 329, 140, 602, - 108, 109, 110, 64, 112, 113, 114, -1, -1, 117, - -1, -1, 154, -1, 122, 76, 77, -1, -1, 127, - 128, 60, 130, 131, 132, -1, 134, 135, -1, 10, - 11, 12, 13, -1, 15, -1, 17, 640, -1, -1, - 1248, -1, -1, -1, 10, 11, 12, -1, -1, 1477, - -1, 112, 113, -1, 115, 10, 11, 12, 1239, 120, - 387, 122, 665, 666, 667, 668, -1, 670, 157, 158, - 159, 160, 161, 112, 163, 164, 165, -1, 1259, 60, - 1261, 1509, -1, -1, -1, 1206, -1, 155, 156, 157, - 158, 159, 160, 161, 1522, 163, 164, 165, 64, -1, - 1267, 140, -1, -1, 1079, 166, -1, -1, -1, 64, - 76, 77, -1, -1, -1, 154, -1, -1, 1239, -1, - 159, 76, 77, -1, -1, -1, 1247, 1248, -1, 1309, - -1, 112, -1, -1, 737, -1, -1, 1318, 1259, -1, - 1261, 1239, -1, -1, -1, -1, 112, 113, -1, 115, - -1, 1272, -1, -1, 120, -1, 122, 112, 113, 140, - 115, 1259, -1, 1261, -1, 120, -1, 122, -1, -1, - -1, -1, 17, 154, -1, -1, 1356, 1357, 159, 1359, - -1, 1361, -1, 164, -1, -1, -1, 514, -1, 297, - 298, 146, -1, -1, 521, 303, -1, 1318, 801, 165, - 1321, -1, 47, -1, -1, -1, -1, 1328, 811, 10, - 11, 12, 815, -1, -1, 60, 61, 1338, 1339, 1340, - 1318, 548, -1, 550, 1404, 552, -1, 1408, -1, 832, - -1, 76, -1, -1, -1, -1, -1, -1, -1, -1, - 843, 844, 845, 846, 847, 848, 849, 850, 851, 852, - 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, - 863, 106, 865, 64, 109, 33, -1, 112, -1, -1, - -1, -1, -1, -1, 1242, 76, 77, -1, -1, -1, - 1447, -1, -1, 128, -1, -1, -1, 1408, -1, 1410, - -1, -1, -1, -1, 1475, 140, 1417, -1, -1, 1420, - 1421, 1422, 1423, 1424, -1, 908, -1, -1, -1, 154, - 1408, 112, 113, -1, 115, -1, -1, -1, -1, 120, - 923, 122, -1, -1, -1, -1, -1, -1, -1, 1304, - 1305, 1306, 1307, 1308, -1, 1310, 1516, 1517, 1518, -1, - 1520, -1, 669, -1, -1, 1313, 22, 23, -1, 150, - 1264, 1265, 1266, 154, 1475, -1, 1477, 33, 159, 1304, - 1305, 1306, 1307, 1308, -1, 1310, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 979, 1475, 981, -1, - -1, 489, -1, -1, -1, -1, -1, -1, 1509, 157, - 158, 159, 160, 161, -1, 163, 164, 165, -1, -1, - -1, 1522, 1523, -1, -1, -1, -1, -1, -1, 1530, - 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, - 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1343, - 1033, 1345, -1, 1347, -1, -1, 1350, 1351, 1352, -1, - 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, - 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 1403, -1, - 3, 4, 5, 6, -1, 8, 9, 10, 11, 12, - -1, -1, -1, -1, -1, -1, 1451, -1, -1, -1, - -1, 157, 158, 159, 160, 161, -1, 163, 164, 165, - -1, -1, -1, -1, -1, -1, -1, 824, 825, 826, - -1, 828, -1, 830, 831, 832, 1451, 50, 51, -1, - -1, 54, -1, 56, 57, 58, 59, 60, -1, 62, - 63, -1, -1, 66, 67, -1, -1, 70, -1, -1, - 1505, -1, 75, 76, 77, -1, -1, -1, 81, -1, - -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, - 1505, -1, -1, -1, -1, 108, -1, 110, -1, 112, - -1, 679, 680, -1, 117, -1, 119, 120, 121, -1, - -1, 124, 125, 10, 11, 12, 129, -1, -1, 132, - 133, 134, 135, 136, -1, -1, 139, -1, 141, -1, - 3, 4, 5, 6, -1, 8, 9, 10, 11, 12, - -1, 154, 15, -1, 157, 158, 159, -1, -1, 162, - -1, 164, 165, -1, -1, 168, -1, -1, -1, 1232, - -1, -1, -1, -1, -1, -1, -1, 64, -1, -1, - -1, -1, -1, -1, 47, -1, -1, 50, 51, 76, - 77, 54, -1, 56, 57, 58, 59, 60, -1, 62, - 63, -1, -1, 66, 67, -1, -1, 70, -1, -1, - -1, -1, 75, 76, 77, -1, -1, -1, -1, -1, - -1, 84, -1, 1286, -1, 112, 113, -1, 115, -1, - -1, -1, -1, 120, -1, 122, -1, 100, -1, -1, - -1, -1, -1, -1, -1, 108, -1, 110, -1, 112, - -1, -1, -1, 116, 117, -1, 119, 120, 121, 146, - -1, 124, 125, 22, 23, 1328, 129, -1, -1, 132, - 133, 134, 135, 136, 33, -1, 139, -1, 141, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 1077, 154, -1, -1, 157, 158, -1, -1, -1, 162, - -1, 164, -1, -1, -1, 168, -1, -1, -1, -1, - 878, -1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, -1, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, - -1, -1, 1405, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, -1, -1, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, -1, - 70, -1, 72, 73, 74, 75, 76, 77, 78, 79, - 80, -1, 82, 83, 84, -1, -1, -1, 157, 158, + 1, 61, 587, 464, 113, 493, 928, 512, 44, 318, + 92, 44, 710, 131, 752, 297, 131, 480, 660, 6, + 15, 8, 614, 462, 148, 141, 150, 151, 152, 153, + 732, 155, 493, 157, 605, 159, 183, 44, 15, 81, + 82, 83, 13, 147, 33, 484, 88, 15, 15, 331, + 76, 175, 715, 492, 76, 15, 59, 795, 0, 147, + 76, 62, 186, 187, 586, 169, 165, 166, 192, 193, + 141, 10, 11, 12, 147, 147, 155, 141, 166, 164, + 147, 744, 745, 146, 747, 748, 749, 750, 147, 150, + 91, 92, 147, 166, 166, 15, 165, 166, 99, 166, + 147, 164, 624, 146, 165, 141, 147, 166, 141, 33, + 164, 166, 719, 635, 721, 722, 723, 724, 725, 166, + 146, 164, 125, 149, 146, 166, 147, 149, 713, 771, + 146, 716, 147, 149, 141, 150, 165, 166, 274, 275, + 276, 277, 278, 155, 150, 166, 147, 148, 150, 150, + 151, 152, 153, 147, 155, 616, 157, 33, 159, 165, + 149, 146, 76, 165, 147, 207, 208, 209, 210, 64, + 65, 166, 166, 112, 175, 164, 165, 259, 260, 166, + 147, 297, 183, 166, 164, 186, 187, 164, 159, 147, + 499, 192, 193, 275, 276, 255, 164, 108, 109, 110, + 147, 112, 113, 114, 164, 693, 117, 354, 166, 147, + 149, 327, 123, 164, 165, 331, 525, 128, 129, 166, + 131, 132, 133, 265, 135, 136, 297, 147, 166, 230, + 164, 753, 146, 297, 805, 149, 164, 900, 147, 163, + 164, 165, 164, 147, 815, 164, 147, 289, 753, 13, + 146, 15, 148, 17, 150, 155, 327, 166, 259, 260, + 331, 297, 166, 327, 297, 166, 390, 331, 164, 791, + 792, 934, 75, 274, 275, 276, 277, 278, 279, 143, + 144, 145, 147, 284, 147, 147, 147, 163, 164, 165, + 297, 327, 755, 164, 327, 331, 60, 147, 331, 906, + 1002, 166, 147, 166, 166, 166, 164, 443, 2, 33, + 164, 447, 448, 449, 450, 451, 166, 318, 147, 149, + 327, 166, 165, 166, 331, 461, 33, 788, 164, 465, + 466, 916, 6, 772, 8, 644, 146, 166, 148, 149, + 150, 164, 913, 98, 146, 146, 148, 148, 150, 150, + 13, 164, 15, 354, 17, 146, 998, 148, 846, 150, + 164, 643, 56, 57, 58, 59, 60, 164, 13, 63, + 15, 148, 17, 150, 164, 897, 140, 10, 11, 12, + 164, 165, 166, 692, 6, 846, 8, 298, 299, 390, + 154, 164, 897, 304, 164, 159, 164, 60, 165, 166, + 1102, 164, 165, 166, 164, 997, 164, 75, 164, 410, + 113, 114, 115, 984, 164, 60, 1338, 164, 165, 1004, + 164, 165, 166, 146, 147, 1010, 1011, 10, 11, 12, + 164, 64, 164, 157, 158, 159, 160, 161, 480, 163, + 164, 165, 443, 76, 77, 164, 447, 448, 449, 450, + 451, 164, 159, 160, 161, 155, 163, 164, 165, 164, + 461, 149, 598, 33, 465, 466, 164, 165, 164, 470, + 149, 164, 473, 509, 164, 164, 279, 140, 164, 112, + 113, 64, 115, 164, 1006, 1007, 164, 120, 164, 122, + 149, 154, 493, 76, 77, 140, 159, 191, 499, 164, + 1092, 164, 164, 1095, 164, 166, 164, 164, 509, 154, + 164, 164, 150, 1098, 159, 471, 159, 1255, 165, 164, + 149, 522, 48, 165, 525, 164, 147, 643, 146, 112, + 113, 155, 115, 166, 164, 148, 291, 120, 164, 122, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 164, 256, 167, 873, 147, 166, 261, 166, 166, + 166, 166, 643, 166, 166, 156, 156, 166, 166, 643, + 491, 166, 165, 147, 147, 586, 587, 588, 166, 159, + 160, 161, 166, 163, 164, 165, 15, 598, 353, 166, + 166, 166, 156, 297, 605, 166, 166, 643, 609, 166, + 643, 279, 672, 614, 166, 166, 166, 618, 619, 620, + 621, 622, 623, 624, 660, 1323, 166, 660, 166, 166, + 166, 325, 166, 166, 635, 156, 643, 166, 166, 166, + 164, 166, 165, 644, 645, 159, 166, 165, 167, 166, + 149, 164, 146, 660, 610, 166, 147, 147, 147, 147, + 463, 464, 147, 699, 164, 148, 164, 149, 164, 164, + 48, 164, 164, 341, 630, 631, 632, 633, 634, 166, + 166, 159, 1267, 159, 1269, 166, 146, 48, 76, 169, + 493, 692, 164, 387, 1432, 1433, 1434, 757, 758, 155, + 155, 155, 155, 164, 705, 765, 10, 767, 166, 148, + 404, 405, 713, 755, 10, 716, 470, 411, 719, 10, + 721, 722, 723, 724, 725, 10, 10, 156, 1430, 147, + 166, 148, 33, 159, 159, 771, 166, 738, 771, 1331, + 741, 148, 148, 1328, 167, 159, 166, 146, 169, 705, + 166, 752, 753, 166, 166, 164, 1348, 1349, 1350, 1247, + 164, 164, 164, 149, 771, 883, 166, 522, 883, 165, + 165, 682, 683, 165, 883, 164, 166, 164, 533, 473, + 147, 536, 147, 147, 587, 147, 1247, 150, 789, 159, + 791, 792, 166, 166, 795, 463, 464, 798, 167, 165, + 148, 148, 1540, 147, 805, 608, 10, 167, 868, 166, + 1548, 169, 4, 616, 815, 147, 48, 169, 164, 10, + 11, 12, 164, 146, 825, 493, 520, 147, 169, 166, + 1422, 156, 156, 166, 790, 1420, 530, 1429, 156, 166, + 156, 10, 148, 1435, 1436, 166, 10, 166, 884, 10, + 10, 807, 10, 521, 148, 609, 157, 158, 159, 160, + 161, 147, 163, 164, 165, 619, 620, 621, 622, 623, + 169, 164, 873, 64, 875, 167, 166, 15, 148, 167, + 169, 882, 155, 166, 166, 76, 77, 888, 889, 890, + 891, 892, 893, 894, 166, 164, 897, 591, 1490, 164, + 166, 164, 166, 1488, 164, 906, 1030, 147, 166, 164, + 713, 605, 913, 716, 155, 916, 155, 999, 155, 587, + 164, 112, 113, 166, 115, 167, 882, 928, 166, 120, + 166, 122, 1524, 889, 890, 891, 892, 893, 167, 146, + 608, 166, 166, 166, 10, 148, 137, 1539, 616, 643, + 10, 705, 10, 148, 148, 710, 10, 10, 11, 12, + 715, 148, 998, 164, 719, 998, 721, 722, 723, 724, + 725, 1280, 883, 166, 668, 669, 670, 671, 166, 673, + 1104, 1105, 17, 984, 15, 788, 167, 166, 147, 744, + 745, 998, 747, 748, 749, 750, 997, 147, 999, 166, + 156, 156, 156, 1004, 166, 1006, 1007, 156, 10, 1010, + 1011, 64, 47, 166, 166, 148, 167, 10, 166, 10, + 148, 164, 164, 76, 77, 60, 61, 164, 148, 1030, + 166, 166, 164, 148, 148, 789, 166, 166, 1103, 646, + 1250, 76, 309, 846, 798, 713, 1323, 741, 716, 884, + 331, 699, 1448, 1247, 1077, 331, 1281, 846, 1214, 112, + 113, -1, 115, -1, 409, -1, -1, 120, -1, 122, + -1, 106, -1, -1, 109, -1, 1077, 112, -1, 10, + 11, 12, 13, -1, -1, 1086, 17, -1, -1, -1, + -1, 1092, -1, 128, 1095, -1, -1, 1098, -1, -1, + -1, 154, -1, 1104, 1105, 140, 159, -1, -1, -1, + -1, 805, -1, 916, -1, -1, -1, -1, -1, 154, + 788, 815, -1, -1, -1, 819, -1, -1, 882, 60, + 1086, -1, -1, -1, -1, 889, 890, 891, 892, 893, + -1, -1, 836, -1, -1, 900, -1, -1, -1, -1, + -1, 906, -1, 847, 848, 849, 850, 851, 852, 853, + 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, + 864, 865, 866, 867, 1256, 869, -1, -1, 846, 934, + 111, 112, 1272, 1273, 1274, 10, 11, 12, 13, -1, + 15, -1, 17, -1, -1, 10, 11, 12, -1, -1, + -1, 1004, -1, -1, -1, -1, -1, 1010, 1011, 140, + -1, -1, -1, 1214, 20, 21, 22, 23, -1, 913, + -1, -1, -1, 154, -1, -1, -1, 33, 159, -1, + -1, -1, -1, 164, 928, 60, -1, -1, -1, 54, + -1, 56, 57, 58, -1, -1, 1247, -1, 916, -1, + 62, 66, -1, -1, 1255, 1256, -1, -1, -1, 1319, + -1, -1, 77, 1353, -1, 1355, 1267, 1357, 1269, 84, + 1360, 1361, 1362, 85, -1, -1, 61, -1, -1, 1280, + -1, -1, -1, -1, -1, 100, -1, 112, -1, -1, + 984, -1, 986, 105, -1, 1098, 10, 11, 12, 13, + -1, -1, -1, 17, 119, 120, 1366, 1367, -1, 1369, + -1, 1371, 124, -1, -1, 140, 10, 11, 12, 13, + -1, 136, 134, 17, 139, -1, 141, 1328, -1, 154, + 1331, -1, 1086, -1, 159, -1, 1004, 1338, -1, 164, + -1, -1, 1010, 1011, 1038, -1, 60, 1348, 1349, 1350, + -1, 157, 158, 159, 160, 161, 1416, 163, 164, 165, + -1, -1, -1, -1, 149, -1, 60, 179, -1, 154, + 182, 156, -1, 158, -1, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + -1, -1, 1087, -1, -1, -1, -1, -1, 112, -1, + 185, -1, -1, -1, 189, 190, 191, 16, 17, 18, + 19, 20, 21, 22, 23, 227, 228, -1, 112, 1420, + -1, 1422, -1, -1, 33, -1, 140, -1, 1429, -1, + 1098, 1432, 1433, 1434, 1435, 1436, -1, -1, -1, -1, + 154, -1, -1, -1, 1247, 159, 140, 1448, -1, -1, + 164, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 154, 273, -1, -1, 1267, 159, 1269, 18, 19, 20, + 21, 22, 23, 1533, 1534, 1535, -1, 1537, -1, 291, + -1, 293, 33, -1, -1, 270, -1, 1488, -1, 1490, + -1, -1, -1, -1, -1, 1250, -1, -1, 310, -1, + 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, + 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, + -1, 333, -1, 1524, -1, 1328, -1, 33, -1, -1, + 342, -1, -1, 345, -1, -1, -1, -1, 1539, 1540, + 149, 353, 151, 152, 153, 154, 1240, 1548, 157, 158, 159, 160, 161, -1, 163, 164, 165, -1, -1, -1, - 100, -1, -1, -1, -1, -1, 106, 107, 108, -1, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, -1, -1, -1, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + -1, -1, -1, -1, -1, -1, -1, -1, 1323, -1, + -1, -1, 10, 11, 12, -1, -1, 15, -1, 1247, + 392, -1, -1, -1, 396, -1, -1, -1, 18, 19, + 20, 21, 22, 23, -1, -1, -1, 409, -1, 1267, + 1294, 1269, -1, 33, 389, -1, 157, 158, 159, 160, + 161, -1, 163, 164, 165, -1, -1, 1420, -1, 1314, + 1315, 1316, 1317, 1318, -1, 1320, 64, -1, -1, -1, + -1, -1, -1, -1, 446, -1, -1, -1, 76, 77, + -1, -1, -1, -1, 1338, 151, 152, 153, 154, -1, + 462, 157, 158, 159, 160, 161, -1, 163, 164, 165, + 1328, -1, 474, -1, 16, 17, 18, 19, 20, 21, + 22, 23, 484, -1, 112, 113, -1, 115, -1, -1, + 492, 33, 120, -1, 122, 1488, -1, -1, -1, -1, + -1, 1314, 1315, 1316, 1317, 1318, -1, 1320, -1, -1, + -1, -1, 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, + 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, 1413, 1414, + 1415, -1, -1, 1417, 536, 155, 156, 157, 158, 159, + 160, 161, 517, 163, 164, 165, -1, -1, -1, 524, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, -1, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, - -1, -1, 1309, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, -1, -1, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, -1, - 70, -1, 72, 73, 74, 75, 76, 77, 78, 79, - 80, -1, 82, 83, 84, -1, -1, -1, -1, -1, - -1, -1, -1, 1370, 1371, 1372, 1373, -1, 1375, 1376, - 100, -1, -1, -1, -1, -1, 106, 107, 108, -1, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, -1, -1, -1, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, - 3, 4, 5, 6, -1, 8, 9, 10, 11, -1, + -1, -1, 1420, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 551, -1, 553, 1464, + 555, -1, -1, 585, 1397, 1398, 1399, 1400, 1401, 1402, + 1403, 1404, 1405, 1406, 1407, 1408, 1409, 1410, 1411, 1412, + 1413, 1414, 1415, -1, -1, -1, -1, -1, -1, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + -1, 163, 164, 165, -1, -1, 628, 169, -1, -1, + 1488, 3, 4, 5, 6, 1520, 8, 9, 10, 11, + 12, -1, -1, -1, 646, -1, -1, -1, -1, -1, + -1, 1464, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 16, 17, 18, 19, 20, 21, 22, + 23, -1, -1, -1, -1, -1, -1, -1, 50, 51, + 33, -1, 54, -1, 56, 57, 58, 59, 60, -1, + 62, 63, -1, -1, 66, 67, -1, 672, 70, 22, + 23, 703, -1, 75, 76, 77, -1, 1520, -1, 81, + 33, -1, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, + 22, 23, 734, -1, -1, -1, 108, -1, 110, -1, + 112, 33, -1, -1, -1, 117, -1, 119, 120, 121, + -1, -1, 124, 125, -1, -1, -1, 129, -1, -1, + 132, 133, 134, 135, 136, -1, -1, 139, -1, 141, + 772, 16, 17, 18, 19, 20, 21, 22, 23, -1, + -1, -1, 154, -1, -1, 157, 158, 159, 33, -1, + 162, -1, 164, 165, -1, -1, 168, -1, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, -1, + 163, 164, 165, -1, -1, -1, 169, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 157, 158, 159, 160, 161, -1, + 163, 164, 165, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 828, 829, 830, -1, 832, -1, 834, + 835, 836, -1, -1, -1, 157, 158, 159, 160, 161, + -1, 163, 164, 165, -1, -1, -1, 18, 19, 20, + 21, 22, 23, 885, -1, -1, -1, -1, -1, -1, + -1, -1, 33, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, -1, 163, 164, + 165, -1, -1, -1, 169, -1, -1, -1, -1, -1, + -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, -1, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, + -1, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, -1, 70, 1001, + 72, 73, 74, 75, 76, 77, 78, 79, 80, -1, + 82, 83, 84, 154, 155, 156, 157, 158, 159, 160, + 161, -1, 163, 164, 165, -1, -1, -1, 100, -1, + 1032, -1, -1, -1, 106, 107, 108, -1, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, -1, -1, -1, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, -1, -1, + -1, 1103, -1, -1, -1, -1, -1, -1, -1, -1, + 1085, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, -1, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, + -1, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, -1, 70, -1, + 72, 73, 74, 75, 76, 77, 78, 79, 80, -1, + 82, 83, 84, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 100, -1, + -1, -1, -1, -1, 106, 107, 108, -1, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, -1, -1, 1275, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, 168, 169, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 3, + 4, 5, 6, -1, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 16, 17, 18, 19, 20, 21, 22, 23, - -1, -1, -1, -1, -1, -1, -1, 50, 51, 33, - -1, 54, -1, 56, 57, 58, 59, -1, -1, 62, - 63, -1, -1, 66, 67, -1, -1, 70, -1, -1, + -1, -1, -1, -1, 1319, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 50, 51, -1, -1, + 54, -1, 56, 57, 58, 59, -1, -1, 62, 63, + -1, -1, 66, 67, -1, -1, 70, -1, -1, -1, + -1, 75, 76, 77, -1, -1, -1, 81, -1, -1, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 1382, 1383, 1384, + 1385, -1, 1387, 1388, 108, -1, 110, -1, 112, -1, + -1, -1, -1, 117, -1, 119, 120, 121, -1, -1, + 124, 125, -1, -1, -1, 129, -1, -1, 132, 133, + 134, 135, 136, -1, -1, 139, -1, 141, 3, 4, + 5, 6, -1, 8, 9, 10, 11, -1, 1460, -1, + 154, -1, -1, 157, 158, 159, -1, -1, 162, -1, + 164, 165, -1, -1, 168, -1, -1, -1, -1, 16, + 17, 18, 19, 20, 21, 22, 23, -1, -1, -1, + -1, -1, -1, -1, -1, 50, 33, -1, -1, 54, + -1, 56, 57, 58, -1, -1, -1, 62, -1, 64, + 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, + 75, 76, 77, -1, -1, -1, 81, -1, -1, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, + -1, -1, -1, 108, -1, 110, -1, 112, -1, -1, + -1, -1, 117, -1, 119, 120, 121, -1, -1, 124, + -1, -1, -1, -1, 129, -1, -1, 132, -1, -1, + -1, 136, 3, 4, 5, 6, 141, 8, 9, 10, + 11, 146, -1, -1, -1, -1, -1, -1, -1, 154, + -1, -1, 157, 158, 159, -1, -1, 162, -1, 164, + 165, -1, 149, 168, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, -1, 163, 164, 165, 50, + -1, -1, -1, 54, -1, 56, 57, 58, -1, -1, + -1, 62, -1, -1, -1, 66, 67, 10, 11, 12, + -1, -1, -1, -1, 75, 76, 77, -1, -1, -1, + 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + -1, -1, -1, -1, -1, -1, -1, 108, -1, 110, + -1, 112, -1, -1, -1, -1, 117, -1, 119, 120, + 121, 64, -1, 124, -1, -1, -1, -1, 129, -1, + -1, 132, -1, 76, 77, 136, 3, 4, 5, 6, + 141, 8, 9, 10, 11, -1, -1, -1, -1, -1, + -1, -1, -1, 154, -1, -1, 157, 158, 159, -1, + -1, 162, -1, 164, 165, 166, -1, 168, -1, 112, + 113, -1, 115, -1, -1, -1, -1, 120, -1, 122, + -1, -1, -1, 50, 51, -1, -1, 54, -1, 56, + 57, 58, -1, -1, -1, 62, -1, -1, -1, 66, + 67, -1, -1, -1, -1, -1, -1, 150, 75, 76, + 77, 154, -1, -1, 81, -1, 159, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, + -1, 108, -1, 110, -1, 112, -1, -1, -1, -1, + 117, -1, 119, 120, 121, -1, -1, 124, -1, -1, + -1, -1, 129, -1, -1, 132, -1, -1, -1, 136, + 3, 4, 5, 6, 141, 8, 9, 10, 11, -1, + -1, -1, -1, -1, -1, -1, -1, 154, -1, -1, + 157, 158, 159, -1, -1, 162, -1, 164, 165, -1, + -1, 168, -1, -1, -1, 16, 17, 18, 19, 20, + 21, 22, 23, -1, -1, -1, -1, 50, 51, -1, + -1, 54, 33, 56, 57, 58, -1, -1, -1, 62, + -1, -1, -1, 66, 67, -1, -1, -1, -1, -1, -1, -1, 75, 76, 77, -1, -1, -1, 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, -1, 108, -1, 110, -1, 112, -1, -1, -1, -1, 117, -1, 119, 120, 121, -1, - -1, 124, 125, -1, -1, -1, 129, -1, -1, 132, - 133, 134, 135, 136, -1, -1, 139, -1, 141, 3, - 4, 5, 6, -1, 8, 9, 10, 11, -1, -1, + -1, 124, -1, -1, -1, -1, 129, -1, -1, 132, + -1, -1, -1, 136, 3, 4, 5, 6, 141, 8, + 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, 154, -1, -1, 157, 158, 159, -1, -1, 162, - -1, 164, 165, -1, -1, 168, -1, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, -1, 163, - 164, 165, -1, -1, -1, 169, 50, -1, -1, -1, - 54, -1, 56, 57, 58, -1, -1, -1, 62, -1, - 64, 65, 66, 67, 10, 11, 12, -1, -1, -1, - -1, 75, 76, 77, -1, -1, -1, 81, -1, -1, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, -1, -1, -1, - -1, -1, -1, -1, 108, -1, 110, -1, 112, -1, - -1, -1, -1, 117, -1, 119, 120, 121, 64, -1, - 124, -1, -1, -1, -1, 129, -1, -1, 132, -1, - 76, 77, 136, 3, 4, 5, 6, 141, 8, 9, - 10, 11, 146, -1, -1, -1, -1, -1, -1, -1, - 154, -1, -1, 157, 158, 159, -1, -1, 162, -1, - 164, 165, -1, -1, 168, -1, 112, 113, -1, 115, - -1, -1, -1, -1, 120, -1, 122, -1, -1, -1, - 50, -1, -1, -1, 54, -1, 56, 57, 58, -1, - -1, -1, 62, -1, -1, -1, 66, 67, 10, 11, - 12, -1, -1, -1, -1, 75, 76, 77, 154, -1, - -1, 81, -1, 159, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, -1, -1, -1, -1, -1, -1, -1, 108, -1, - 110, -1, 112, -1, -1, -1, -1, 117, -1, 119, - 120, 121, 64, -1, 124, -1, -1, -1, -1, 129, - -1, -1, 132, -1, 76, 77, 136, 3, 4, 5, - 6, 141, 8, 9, 10, 11, -1, -1, -1, -1, - -1, -1, -1, -1, 154, -1, -1, 157, 158, 159, - -1, -1, 162, -1, 164, 165, 166, -1, 168, -1, - 112, 113, -1, 115, -1, -1, -1, -1, 120, -1, - 122, -1, -1, -1, 50, 51, -1, -1, 54, -1, - 56, 57, 58, -1, -1, -1, 62, -1, -1, -1, - 66, 67, -1, -1, -1, -1, -1, 149, -1, 75, - 76, 77, -1, -1, -1, 81, -1, -1, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, -1, -1, -1, -1, -1, - -1, -1, 108, -1, 110, -1, 112, -1, -1, -1, - -1, 117, -1, 119, 120, 121, -1, -1, 124, -1, - -1, -1, -1, 129, -1, -1, 132, -1, -1, -1, - 136, 3, 4, 5, 6, 141, 8, 9, 10, 11, - -1, -1, -1, -1, -1, -1, -1, -1, 154, -1, - -1, 157, 158, 159, -1, -1, 162, -1, 164, 165, - -1, -1, 168, -1, -1, -1, 16, 17, 18, 19, - 20, 21, 22, 23, -1, -1, -1, -1, 50, 51, - -1, -1, 54, 33, 56, 57, 58, -1, -1, -1, - 62, -1, -1, -1, 66, 67, -1, -1, -1, -1, - -1, -1, -1, 75, 76, 77, -1, -1, -1, 81, - -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, - -1, -1, -1, -1, -1, -1, 108, -1, 110, -1, - 112, -1, -1, -1, -1, 117, -1, 119, 120, 121, - -1, -1, 124, -1, -1, -1, -1, 129, -1, -1, - 132, -1, -1, -1, 136, 3, 4, 5, 6, 141, - 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, - -1, -1, 154, -1, -1, 157, 158, 159, -1, -1, - 162, -1, 164, 165, -1, -1, 168, -1, -1, 149, - -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 50, 163, 164, 165, 54, -1, 56, 57, - 58, -1, -1, -1, 62, -1, -1, -1, 66, 67, - -1, -1, -1, -1, -1, -1, -1, 75, 76, 77, - -1, -1, -1, 81, -1, -1, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, -1, -1, -1, -1, -1, -1, -1, - 108, -1, 110, -1, 112, -1, -1, -1, -1, 117, - -1, 119, 120, 121, -1, -1, 124, -1, -1, -1, - -1, 129, -1, -1, 132, -1, -1, -1, 136, 3, - 4, 5, 6, 141, 8, 9, 10, 11, 146, -1, - -1, -1, -1, -1, -1, -1, 154, -1, -1, 157, - 158, 159, -1, -1, 162, -1, 164, 165, -1, -1, - 168, -1, -1, -1, 16, 17, 18, 19, 20, 21, - 22, 23, -1, -1, -1, -1, 50, -1, -1, -1, - 54, 33, 56, 57, 58, -1, -1, -1, 62, -1, - -1, -1, 66, 67, -1, -1, -1, -1, -1, -1, - -1, 75, 76, 77, -1, -1, -1, 81, -1, -1, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, -1, -1, -1, - -1, -1, -1, -1, 108, -1, 110, -1, 112, -1, - -1, -1, -1, 117, -1, 119, 120, 121, -1, -1, - 124, -1, -1, -1, -1, 129, -1, -1, 132, -1, - -1, -1, 136, 3, 4, 5, 6, 141, 8, 9, - 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, - 154, -1, -1, 157, 158, 159, -1, -1, 162, -1, - 164, 165, 166, -1, 168, -1, 148, -1, -1, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 50, 163, 164, 165, 54, -1, 56, 57, 58, -1, - -1, -1, 62, -1, -1, -1, 66, 67, -1, -1, - -1, -1, -1, -1, -1, 75, 76, 77, -1, -1, - -1, 81, -1, -1, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, -1, -1, -1, -1, -1, -1, -1, 108, -1, - 110, -1, 112, -1, -1, -1, -1, 117, -1, 119, - 120, 121, -1, -1, 124, -1, -1, -1, -1, 129, - -1, -1, 132, -1, -1, -1, 136, 3, 4, 5, - 6, 141, 8, 9, 10, 11, 146, -1, -1, -1, - -1, -1, -1, -1, 154, -1, -1, 157, 158, 159, - -1, -1, 162, -1, 164, 165, -1, -1, 168, -1, - -1, -1, 16, 17, 18, 19, 20, 21, 22, 23, - -1, -1, -1, -1, 50, -1, -1, -1, 54, 33, - 56, 57, 58, -1, -1, -1, 62, -1, -1, -1, - 66, 67, -1, -1, -1, -1, -1, -1, -1, 75, - 76, 77, -1, -1, -1, 81, -1, -1, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, -1, -1, -1, -1, -1, - -1, -1, 108, -1, 110, -1, 112, -1, -1, -1, - -1, 117, -1, 119, 120, 121, -1, -1, 124, -1, - -1, -1, -1, 129, -1, -1, 132, -1, -1, -1, - 136, 3, 4, 5, 6, 141, 8, 9, 10, 11, - -1, -1, -1, -1, -1, -1, -1, -1, 154, -1, - -1, 157, 158, 159, -1, -1, 162, -1, 164, 165, - 166, -1, 168, 147, -1, -1, -1, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 50, 163, - 164, 165, 54, -1, 56, 57, 58, -1, -1, -1, - 62, -1, -1, -1, 66, 67, -1, -1, -1, -1, - -1, -1, -1, 75, 76, 77, -1, -1, -1, 81, - -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, - -1, -1, -1, -1, -1, -1, 108, -1, 110, -1, - 112, -1, -1, -1, -1, 117, -1, 119, 120, 121, - -1, -1, 124, -1, -1, -1, -1, 129, -1, -1, - 132, -1, -1, -1, 136, 3, 4, 5, 6, 141, - 8, 9, 10, 11, 12, -1, -1, 15, -1, -1, - -1, -1, 154, -1, -1, 157, 158, 159, -1, -1, - 162, -1, 164, 165, -1, -1, 168, 16, 17, 18, - 19, 20, 21, 22, 23, -1, -1, -1, -1, 47, - -1, -1, 50, 51, 33, -1, 54, -1, 56, 57, - 58, 59, 60, -1, 62, 63, -1, -1, 66, 67, - -1, -1, 70, -1, -1, -1, -1, 75, 76, 77, - -1, -1, -1, -1, -1, -1, 84, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 100, -1, -1, -1, -1, -1, -1, -1, - 108, -1, 110, -1, 112, -1, -1, -1, 116, 117, - -1, 119, 120, 121, -1, -1, 124, 125, -1, -1, - -1, 129, -1, -1, 132, 133, 134, 135, 136, -1, - -1, 139, -1, 141, 3, 4, 5, 6, -1, 8, - 9, 10, -1, -1, -1, -1, 154, -1, -1, 157, - 158, -1, -1, -1, 162, -1, 164, -1, -1, -1, - 168, -1, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, -1, 163, 164, 165, -1, -1, -1, - 169, 50, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 62, -1, -1, -1, -1, 67, 17, - 18, 19, 20, 21, 22, 23, 75, 76, -1, -1, - -1, -1, 81, -1, -1, 33, 85, 86, 87, 88, + -1, 164, 165, -1, -1, 168, -1, 148, -1, -1, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 50, 163, 164, 165, 54, -1, 56, 57, 58, + -1, -1, -1, 62, -1, -1, -1, 66, 67, -1, + -1, -1, -1, -1, -1, -1, 75, 76, 77, -1, + -1, -1, 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, -1, 16, 17, 18, 19, 20, 21, 22, 23, - -1, 110, -1, 112, -1, -1, -1, -1, 117, 33, - -1, -1, 121, -1, -1, 124, -1, -1, -1, -1, - 129, -1, -1, -1, -1, -1, -1, 54, -1, 56, - 57, 58, -1, -1, -1, -1, -1, -1, -1, 66, + 99, 100, -1, -1, -1, -1, -1, -1, -1, 108, + -1, 110, -1, 112, -1, -1, -1, -1, 117, -1, + 119, 120, 121, -1, -1, 124, -1, -1, -1, -1, + 129, -1, -1, 132, -1, -1, -1, 136, 3, 4, + 5, 6, 141, 8, 9, 10, 11, 146, -1, -1, -1, -1, -1, -1, -1, 154, -1, -1, 157, 158, - 159, 6, -1, 162, -1, 164, 165, 84, -1, 168, + 159, -1, -1, 162, -1, 164, 165, -1, -1, 168, + -1, -1, -1, 16, 17, 18, 19, 20, 21, 22, + 23, -1, -1, -1, -1, 50, -1, -1, -1, 54, + 33, 56, 57, 58, -1, -1, -1, 62, -1, -1, + -1, 66, 67, -1, -1, -1, -1, -1, -1, -1, + 75, 76, 77, -1, -1, -1, 81, -1, -1, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, + -1, -1, -1, 108, -1, 110, -1, 112, -1, -1, + -1, -1, 117, -1, 119, 120, 121, -1, -1, 124, + -1, -1, -1, -1, 129, -1, -1, 132, -1, -1, + -1, 136, 3, 4, 5, 6, 141, 8, 9, 10, + 11, -1, -1, -1, -1, -1, -1, -1, -1, 154, + -1, -1, 157, 158, 159, -1, -1, 162, -1, 164, + 165, 166, -1, 168, 147, -1, -1, -1, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 50, + 163, 164, 165, 54, -1, 56, 57, 58, -1, -1, + -1, 62, -1, -1, -1, 66, 67, -1, -1, -1, + -1, -1, -1, -1, 75, 76, 77, -1, -1, -1, + 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + -1, -1, -1, -1, -1, -1, -1, 108, -1, 110, + -1, 112, -1, -1, -1, -1, 117, -1, 119, 120, + 121, -1, -1, 124, -1, -1, -1, -1, 129, -1, + -1, 132, -1, -1, -1, 136, 3, 4, 5, 6, + 141, 8, 9, 10, 11, 146, -1, -1, -1, -1, + -1, -1, -1, 154, -1, -1, 157, 158, 159, -1, + -1, 162, -1, 164, 165, -1, -1, 168, -1, -1, -1, 16, 17, 18, 19, 20, 21, 22, 23, -1, - -1, -1, -1, 100, -1, -1, -1, -1, 33, -1, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 119, 120, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, -1, 163, 164, 165, -1, 136, - 65, -1, -1, -1, 141, -1, -1, -1, -1, -1, - -1, -1, 10, 11, -1, -1, -1, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, -1, 163, - 164, 165, -1, -1, -1, 169, -1, 20, 21, 22, - 23, -1, -1, 108, -1, -1, -1, -1, -1, -1, - 33, -1, -1, 51, -1, -1, 54, -1, 56, 57, - 58, 59, -1, -1, -1, 63, -1, -1, 66, -1, - -1, -1, 70, -1, -1, -1, -1, -1, -1, 77, - -1, -1, 147, -1, -1, 150, 84, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, -1, 164, - 165, -1, 100, 168, -1, 10, 11, -1, -1, -1, - -1, -1, -1, 111, -1, -1, -1, -1, -1, -1, - -1, 119, 120, -1, -1, -1, -1, 125, -1, -1, - -1, -1, -1, -1, -1, 133, 134, 135, 136, -1, - -1, 139, -1, 141, -1, -1, 51, -1, 146, 54, - -1, 56, 57, 58, 59, -1, -1, -1, 63, -1, - -1, 66, -1, -1, 162, 70, -1, -1, -1, -1, - -1, -1, 77, -1, 157, 158, 159, 160, 161, 84, - 163, 164, 165, -1, -1, -1, -1, -1, -1, -1, - -1, 10, 11, -1, -1, 100, -1, 54, -1, 56, - 57, 58, -1, -1, -1, -1, 111, -1, -1, 66, - -1, -1, -1, -1, 119, 120, -1, -1, -1, -1, - 125, -1, -1, -1, -1, -1, -1, 84, 133, 134, - 135, 136, 51, -1, 139, 54, 141, 56, 57, 58, - 59, -1, -1, 100, 63, -1, -1, 66, -1, -1, - -1, 70, -1, -1, -1, -1, -1, 162, 77, -1, - -1, -1, 119, 120, -1, 84, 16, 17, 18, 19, - 20, 21, 22, 23, -1, -1, -1, -1, -1, 136, - -1, 100, -1, 33, 141, -1, -1, -1, -1, -1, - -1, 54, 111, 56, 57, 58, -1, -1, -1, -1, - 119, 120, -1, -1, -1, -1, 125, 164, -1, -1, - -1, -1, -1, -1, 133, 134, 135, 136, -1, -1, - 139, 84, 141, 16, 17, 18, 19, 20, 21, 22, - 23, -1, -1, -1, -1, -1, -1, 100, -1, -1, - 33, -1, -1, 162, 16, 17, 18, 19, 20, 21, - 22, 23, -1, -1, -1, -1, 119, 120, -1, -1, - -1, 33, 16, 17, 18, 19, 20, 21, 22, 23, - -1, -1, -1, 136, -1, -1, -1, -1, 141, 33, + -1, -1, -1, 50, -1, -1, -1, 54, 33, 56, + 57, 58, -1, -1, -1, 62, -1, -1, -1, 66, + 67, -1, -1, -1, -1, -1, -1, -1, 75, 76, + 77, -1, -1, -1, 81, -1, -1, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, + -1, 108, -1, 110, -1, 112, -1, -1, -1, -1, + 117, -1, 119, 120, 121, -1, -1, 124, -1, -1, + -1, -1, 129, -1, -1, 132, -1, -1, -1, 136, + 3, 4, 5, 6, 141, 8, 9, 10, 11, -1, + -1, -1, -1, -1, -1, -1, -1, 154, -1, -1, + 157, 158, 159, -1, -1, 162, -1, 164, 165, 166, + -1, 168, -1, -1, 149, -1, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 50, 163, 164, + 165, 54, -1, 56, 57, 58, -1, -1, -1, 62, + -1, -1, -1, 66, 67, -1, -1, -1, -1, -1, + -1, -1, 75, 76, 77, -1, -1, -1, 81, -1, + -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, + -1, -1, -1, -1, -1, 108, -1, 110, -1, 112, + -1, -1, -1, -1, 117, -1, 119, 120, 121, -1, + -1, 124, -1, -1, -1, -1, 129, -1, -1, 132, + -1, -1, -1, 136, 3, 4, 5, 6, 141, 8, + 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, + -1, 154, -1, -1, 157, 158, 159, -1, -1, 162, + -1, 164, 165, -1, -1, 168, 16, 17, 18, 19, + 20, 21, 22, 23, -1, -1, -1, -1, 47, -1, + -1, 50, 51, 33, -1, 54, -1, 56, 57, 58, + 59, 60, -1, 62, 63, -1, -1, 66, 67, -1, + -1, 70, -1, -1, -1, -1, 75, 76, 77, -1, + -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, -1, 16, 17, 18, 19, 20, 21, 22, 23, -1, - -1, -1, -1, -1, -1, -1, -1, 147, 33, -1, + -1, 100, -1, -1, -1, -1, -1, -1, 33, 108, + -1, 110, -1, 112, -1, -1, -1, 116, 117, -1, + 119, 120, 121, -1, -1, 124, 125, -1, -1, -1, + 129, -1, -1, 132, 133, 134, 135, 136, -1, -1, + 139, -1, 141, -1, 3, 4, 5, 6, -1, 8, + 9, 10, 11, 12, -1, 154, 15, -1, 157, 158, + -1, -1, -1, 162, -1, 164, -1, 147, -1, 168, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, -1, 163, 164, 165, 166, 16, 17, 18, - 19, 20, 21, 22, 23, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 33, 16, 17, 18, 19, 20, - 21, 22, 23, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 33, -1, -1, -1, -1, -1, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, -1, - 163, 164, 165, 166, -1, -1, -1, -1, -1, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - -1, 163, 164, 165, 166, -1, -1, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, -1, 163, - 164, 165, 166, -1, -1, -1, 151, 152, 153, 154, + 160, 161, -1, 163, 164, 165, 166, -1, 47, -1, + -1, 50, 51, -1, -1, 54, -1, 56, 57, 58, + 59, 60, -1, 62, 63, -1, -1, 66, 67, -1, + -1, 70, -1, -1, -1, -1, 75, 76, 77, -1, + -1, -1, -1, -1, -1, 84, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, -1, 163, 164, - 165, 166, 16, 17, 18, 19, 20, 21, 22, 23, - -1, -1, -1, -1, -1, -1, 10, 11, 12, 33, - -1, 15, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, -1, 163, 164, 165, 166, -1, -1, + 165, 100, -1, -1, -1, -1, -1, -1, -1, 108, + -1, 110, -1, 112, -1, -1, -1, 116, 117, -1, + 119, 120, 121, -1, -1, 124, 125, -1, -1, -1, + 129, -1, -1, 132, 133, 134, 135, 136, -1, -1, + 139, -1, 141, 3, 4, 5, 6, -1, 8, 9, + 10, -1, -1, -1, -1, 154, -1, -1, 157, 158, + -1, -1, -1, 162, -1, 164, -1, -1, -1, 168, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 50, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 62, -1, -1, -1, -1, 67, 17, 18, + 19, 20, 21, 22, 23, 75, 76, -1, -1, -1, + -1, 81, -1, -1, 33, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + -1, 16, 17, 18, 19, 20, 21, 22, 23, -1, + 110, -1, 112, -1, -1, -1, -1, 117, 33, -1, + -1, 121, -1, -1, 124, -1, -1, -1, -1, 129, + -1, -1, -1, -1, -1, -1, 54, -1, 56, 57, + 58, -1, -1, -1, -1, -1, -1, -1, 66, -1, + -1, -1, -1, -1, 154, -1, -1, 157, 158, 159, + 6, -1, 162, -1, 164, 165, 84, -1, 168, -1, + 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, + -1, -1, 100, -1, -1, -1, -1, 33, -1, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 119, 120, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, -1, 163, 164, 165, -1, 136, 65, + -1, -1, -1, 141, -1, -1, -1, -1, -1, -1, + -1, 10, 11, -1, -1, -1, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, -1, 163, 164, + 165, 166, -1, 17, 18, 19, 20, 21, 22, 23, + -1, -1, 108, -1, -1, -1, -1, -1, -1, 33, + -1, -1, 51, -1, -1, 54, -1, 56, 57, 58, + 59, -1, -1, -1, 63, -1, -1, 66, -1, -1, + -1, 70, -1, -1, -1, -1, -1, -1, 77, -1, + -1, 147, -1, -1, 150, 84, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, + -1, 100, 168, -1, 10, 11, -1, -1, -1, -1, + -1, -1, 111, -1, -1, -1, -1, -1, -1, -1, + 119, 120, -1, -1, -1, -1, 125, -1, -1, -1, + -1, -1, -1, -1, 133, 134, 135, 136, -1, -1, + 139, -1, 141, -1, -1, 51, -1, 146, 54, -1, + 56, 57, 58, 59, -1, -1, -1, 63, -1, -1, + 66, -1, -1, 162, 70, -1, -1, -1, 152, 153, + 154, 77, -1, 157, 158, 159, 160, 161, 84, 163, + 164, 165, -1, -1, -1, -1, -1, -1, -1, -1, + 10, 11, -1, -1, 100, -1, 54, -1, 56, 57, + 58, -1, -1, -1, -1, 111, -1, -1, 66, -1, + -1, -1, -1, 119, 120, -1, -1, -1, -1, 125, + -1, -1, -1, -1, -1, -1, 84, 133, 134, 135, + 136, 51, -1, 139, 54, 141, 56, 57, 58, 59, + -1, -1, 100, 63, -1, -1, 66, 11, -1, -1, + 70, -1, -1, -1, -1, -1, 162, 77, -1, -1, + -1, 119, 120, -1, 84, 16, 17, 18, 19, 20, + 21, 22, 23, -1, -1, -1, -1, -1, 136, -1, + 100, -1, 33, 141, -1, -1, -1, 10, 11, 12, + 54, 111, 56, 57, 58, -1, -1, -1, -1, 119, + 120, -1, -1, -1, -1, 125, 164, -1, -1, -1, + -1, -1, -1, 133, 134, 135, 136, -1, -1, 139, + 84, 141, 16, 17, 18, 19, 20, 21, 22, 23, + -1, -1, -1, -1, -1, -1, 100, -1, -1, 33, + -1, 64, 162, 16, 17, 18, 19, 20, 21, 22, + 23, -1, -1, 76, 77, 119, 120, -1, -1, -1, + 33, 16, 17, 18, 19, 20, 21, 22, 23, -1, + -1, -1, 136, -1, -1, -1, -1, 141, 33, 16, + 17, 18, 19, 20, 21, 22, 23, -1, -1, 112, + 113, -1, 115, -1, -1, -1, 33, 120, -1, 122, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, -1, 163, 164, 165, 166, 16, 17, 18, 19, - 20, 21, 22, 23, -1, -1, 10, 11, 12, -1, - 64, -1, -1, 33, 16, 17, 18, 19, 20, 21, - 22, 23, 76, 77, -1, -1, -1, -1, -1, -1, - -1, 33, 16, 17, 18, 19, 20, 21, 22, 23, - -1, -1, -1, 47, -1, 49, -1, -1, -1, 33, - 16, 17, 18, 19, 20, 21, 22, 23, 112, 113, - 64, 115, -1, -1, -1, -1, 120, 33, 122, -1, - -1, -1, 76, 77, -1, -1, -1, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, -1, 163, - 164, 165, 166, 16, 17, 18, 19, 20, 21, 22, - 23, -1, -1, -1, -1, -1, -1, -1, 112, 113, - 33, 115, -1, -1, -1, -1, 120, -1, 122, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 149, - -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 146, 163, 164, 165, -1, -1, -1, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - -1, 163, 164, 165, -1, -1, -1, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, -1, 163, - 164, 165, -1, 149, -1, 151, 152, 153, 154, -1, - -1, 157, 158, 159, 160, 161, 0, 163, 164, 165, - -1, -1, -1, -1, -1, 17, 18, 19, 20, 21, + 20, 21, 22, 23, -1, -1, 149, -1, -1, -1, + -1, -1, -1, 33, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 33, -1, -1, -1, -1, -1, -1, 151, 152, - 153, 154, -1, -1, 157, 158, 159, 160, 161, -1, - 163, 164, 165, 47, -1, 49, -1, -1, 52, 53, - -1, -1, -1, -1, -1, -1, 60, 61, -1, -1, - -1, -1, -1, -1, -1, 69, -1, 71, 72, 73, - 74, -1, -1, -1, 78, -1, -1, -1, -1, 83, + -1, 33, -1, -1, -1, -1, -1, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, -1, 163, + 164, 165, 166, -1, -1, -1, -1, -1, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, -1, + 163, 164, 165, 166, -1, -1, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, -1, 163, 164, + 165, 166, -1, -1, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, -1, 163, 164, 165, 166, + -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 102, 103, - 104, 105, 106, 107, -1, -1, -1, -1, -1, 113, - 114, 115, 116, -1, -1, -1, -1, -1, 122, 123, - 11, 12, 126, 127, 15, -1, 17, 131, -1, -1, - -1, -1, -1, 137, 138, -1, 140, -1, -1, -1, - 152, 153, 154, -1, 148, 157, 158, 159, 160, 161, - -1, 163, 164, 165, -1, -1, 47, -1, -1, -1, - 51, -1, -1, 54, -1, 56, 57, 58, 59, 60, - -1, -1, 63, -1, -1, 66, -1, -1, -1, 70, - 18, 19, 20, 21, 22, 23, 77, -1, -1, -1, - -1, -1, -1, 84, -1, 33, 18, 19, 20, 21, - 22, 23, -1, -1, -1, -1, -1, -1, -1, 100, - -1, 33, 18, 19, 20, 21, 22, 23, -1, -1, - -1, -1, -1, -1, -1, 116, -1, 33, 119, 120, - -1, -1, -1, -1, 125, -1, 18, 19, 20, 21, - 22, 23, 133, 134, 135, 136, -1, -1, 139, -1, - 141, 33, 18, 19, 20, 21, 22, 23, -1, -1, - -1, -1, -1, 154, -1, -1, -1, 33, 159, 18, - 19, 20, 21, 22, 23, -1, -1, -1, 18, 19, - 20, 21, 22, 23, 33, -1, -1, -1, -1, -1, - -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, + -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, -1, 163, 164, 165, 166, -1, -1, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + -1, 163, 164, 165, 47, -1, 49, -1, -1, 52, + 53, -1, -1, -1, -1, -1, -1, 60, 61, -1, + -1, -1, -1, -1, -1, -1, 69, -1, 71, 72, + 73, 74, -1, -1, -1, 78, -1, -1, -1, -1, + 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 101, 102, + 103, 104, 105, 106, 107, -1, -1, -1, -1, -1, + 113, 114, 115, 116, -1, -1, -1, -1, -1, 122, + 123, 11, 12, 126, 127, 15, -1, 17, 131, -1, + -1, -1, -1, -1, 137, 138, -1, 140, 18, 19, + 20, 21, 22, 23, -1, 148, -1, -1, -1, -1, + -1, -1, -1, 33, -1, -1, -1, 47, -1, -1, + -1, 51, -1, -1, 54, -1, 56, 57, 58, 59, + 60, -1, -1, 63, -1, -1, 66, -1, -1, -1, + 70, 18, 19, 20, 21, 22, 23, 77, -1, -1, + -1, -1, -1, -1, 84, -1, 33, 18, 19, 20, + 21, 22, 23, -1, -1, -1, -1, -1, -1, -1, + 100, -1, 33, 18, 19, 20, 21, 22, 23, -1, + -1, -1, -1, -1, -1, -1, 116, -1, 33, 119, + 120, -1, -1, -1, -1, 125, -1, 18, 19, 20, + 21, 22, 23, 133, 134, 135, 136, -1, -1, 139, + -1, 141, 33, 20, 21, 22, 23, -1, -1, -1, + -1, -1, -1, -1, 154, -1, 33, -1, -1, 159, + -1, -1, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, -1, 163, 164, 165, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, -1, 163, 164, 165, -1, -1, - -1, 153, 154, 155, 156, 157, 158, 159, 160, 161, - -1, 163, 164, 165, -1, -1, -1, -1, 154, 155, - 156, 157, 158, 159, 160, 161, -1, 163, 164, 165, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 152, 153, 154, -1, -1, 157, 158, 159, 160, 161, - -1, 163, 164, 165, -1, 6, -1, -1, 6, 155, - 156, 157, 158, 159, 160, 161, -1, 163, 164, 165, - -1, -1, -1, -1, -1, 154, -1, -1, 157, 158, - 159, 160, 161, -1, 163, 164, 165, 157, 158, 159, - 160, 161, -1, 163, 164, 165, 47, -1, 49, 47, - -1, 49, 53, -1, -1, 53, -1, -1, -1, 60, - 61, -1, 60, 61, -1, 10, 11, 12, -1, -1, - 71, 72, 73, 71, 72, 73, -1, -1, -1, -1, - -1, -1, 83, -1, -1, 83, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 10, 11, 12, - -1, -1, -1, -1, -1, 106, -1, -1, 106, -1, - -1, -1, -1, -1, -1, 116, -1, -1, 116, 64, - -1, 122, -1, -1, 122, 126, 127, -1, -1, 127, - -1, 76, 77, -1, -1, -1, -1, 138, 51, 140, - 138, 54, 140, 56, 57, 58, 59, 60, -1, -1, - 63, -1, -1, 66, -1, -1, -1, 70, -1, -1, - -1, -1, -1, -1, 77, -1, -1, 112, 113, 114, - 115, 84, -1, -1, -1, 120, -1, 122, -1, -1, - -1, -1, -1, 10, 11, 12, -1, 100, 133, -1, - -1, -1, -1, 138, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 119, 120, -1, -1, - -1, -1, 125, -1, 10, 11, 12, -1, -1, -1, - 133, 134, 135, 136, 51, -1, 139, 54, 141, 56, - 57, 58, 59, 60, -1, -1, 63, -1, -1, 66, - -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, - 77, -1, -1, -1, -1, 51, -1, 84, 54, -1, - 56, 57, 58, 59, 60, -1, -1, 63, -1, -1, - 66, -1, -1, 100, 70, -1, -1, -1, -1, -1, - -1, 77, -1, -1, -1, -1, -1, -1, 84, -1, - -1, -1, 119, 120, -1, -1, -1, -1, 125, -1, - 10, 11, 12, -1, 100, -1, 133, 134, 135, 136, - -1, -1, 139, -1, 141, 10, 11, 12, -1, -1, - -1, -1, -1, 119, 120, -1, -1, -1, -1, 125, - 54, -1, 56, 57, 58, -1, -1, 133, 134, 135, - 136, -1, -1, 139, 54, 141, 56, 57, 58, 59, - 60, -1, -1, 10, 11, 12, 66, -1, -1, 54, - 84, 56, 57, 58, -1, -1, -1, 77, -1, -1, - -1, 66, -1, -1, 84, -1, 100, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 10, 11, + 12, -1, -1, -1, -1, -1, 153, 154, 155, 156, + 157, 158, 159, 160, 161, -1, 163, 164, 165, -1, + -1, 152, 153, 154, -1, -1, 157, 158, 159, 160, + 161, -1, 163, 164, 165, 47, -1, 49, 153, 154, + -1, -1, 157, 158, 159, 160, 161, -1, 163, 164, + 165, -1, 64, -1, -1, 17, -1, 10, 11, 12, + -1, -1, -1, 154, 76, 77, 157, 158, 159, 160, + 161, 33, 163, 164, 165, -1, -1, -1, 155, 156, + 157, 158, 159, 160, 161, 47, 163, 164, 165, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 60, 61, + 112, 113, -1, 115, 10, 11, 12, -1, 120, -1, + 122, 64, -1, -1, 76, -1, -1, -1, -1, 10, + 11, 12, -1, 76, 77, -1, -1, -1, -1, -1, + -1, -1, -1, 6, 146, -1, 6, -1, -1, -1, + -1, -1, -1, -1, 106, -1, -1, 109, -1, -1, + 112, -1, -1, -1, -1, -1, -1, -1, 64, 112, + 113, -1, 115, -1, -1, -1, 128, 120, -1, 122, + 76, 77, -1, 64, 47, -1, 49, 47, 140, 49, + 53, -1, -1, 53, -1, 76, 77, 60, 61, -1, + 60, 61, 154, 146, -1, -1, -1, -1, 71, 72, + 73, 71, 72, 73, -1, -1, 112, 113, -1, 115, + 83, -1, -1, 83, 120, -1, 122, -1, -1, -1, + -1, 112, 113, 114, 115, 10, 11, 12, -1, 120, + -1, 122, -1, 106, -1, -1, 106, -1, -1, -1, + 146, -1, 133, 116, -1, -1, 116, 138, -1, 122, + -1, -1, 122, 126, 127, -1, -1, 127, -1, -1, + 10, 11, 12, -1, -1, 138, 51, 140, 138, 54, + 140, 56, 57, 58, 59, 60, -1, -1, 63, -1, + -1, 66, -1, -1, -1, 70, -1, -1, -1, -1, -1, -1, 77, -1, -1, -1, -1, -1, -1, 84, - 100, -1, -1, -1, -1, 119, 120, -1, -1, -1, - -1, -1, 11, 12, -1, 100, 15, 64, -1, 119, - 120, -1, 136, -1, -1, -1, -1, 141, -1, 76, - 77, -1, -1, 133, 119, 120, 136, -1, -1, 139, - -1, 141, -1, 11, 12, -1, -1, 15, 47, -1, - 164, 136, 51, -1, 139, 54, 141, 56, 57, 58, - 59, 60, -1, -1, 63, 112, 113, 66, 115, -1, - -1, 70, -1, 120, -1, 122, -1, -1, 77, 47, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 10, 11, 12, 64, 100, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 76, 77, -1, -1, + -1, -1, -1, -1, 119, 120, -1, -1, -1, -1, + 125, -1, 10, 11, 12, -1, -1, -1, 133, 134, + 135, 136, 51, -1, 139, 54, 141, 56, 57, 58, + 59, 60, 112, 113, 63, 115, -1, 66, -1, -1, + 120, 70, 122, 54, -1, 56, 57, 58, 77, -1, -1, -1, -1, 51, -1, 84, 54, -1, 56, 57, 58, 59, 60, -1, -1, 63, -1, -1, 66, -1, - -1, 100, 70, -1, -1, -1, -1, -1, -1, 77, - -1, -1, -1, -1, -1, -1, 84, 116, -1, -1, + -1, 100, 70, 84, -1, -1, -1, -1, -1, 77, + -1, -1, -1, -1, -1, -1, 84, -1, -1, 100, 119, 120, -1, -1, -1, -1, 125, -1, 10, 11, - 12, -1, 100, -1, 133, 134, 135, 136, 11, 12, - 139, -1, 141, -1, -1, -1, -1, -1, 116, -1, - -1, 119, 120, -1, -1, -1, -1, 125, -1, -1, - -1, -1, -1, -1, -1, 133, 134, 135, 136, 11, - 12, 139, -1, 141, 47, -1, -1, -1, 51, -1, - -1, 54, 64, 56, 57, 58, 59, 60, -1, -1, - 63, -1, -1, 66, 76, 77, -1, 70, -1, 54, - -1, 56, 57, 58, 77, -1, -1, -1, -1, 51, - -1, 84, 54, -1, 56, 57, 58, 59, 60, -1, - -1, 63, -1, -1, 66, -1, -1, 100, 70, 84, - 112, 113, -1, 115, -1, 77, -1, -1, 120, -1, - 122, -1, 84, 116, -1, 100, 119, 120, -1, -1, - -1, 133, 125, -1, -1, 11, 12, -1, 100, -1, - 133, 134, 135, 136, 119, 120, 139, -1, 141, -1, - -1, -1, -1, -1, -1, -1, -1, 119, 120, 11, - 12, 136, -1, 125, -1, -1, 141, 10, 11, 12, - -1, 133, 134, 135, 136, 51, -1, 139, 54, 141, - 56, 57, 58, 59, -1, -1, -1, 63, -1, 164, - 66, -1, -1, -1, 70, -1, -1, -1, -1, 51, - -1, 77, 54, -1, 56, 57, 58, 59, 84, -1, - -1, 63, -1, -1, 66, -1, -1, -1, 70, -1, - -1, 64, -1, -1, 100, 77, -1, -1, -1, -1, - -1, -1, 84, 76, 77, -1, -1, -1, -1, -1, - 116, -1, -1, 119, 120, 11, -1, -1, 100, 125, - -1, -1, -1, -1, -1, -1, -1, 133, 134, 135, - 136, -1, -1, 139, 107, 141, -1, 119, 120, 112, - 113, -1, 115, 125, 11, -1, -1, 120, -1, 122, - -1, 133, 134, 135, 136, 51, -1, 139, 54, 141, - 56, 57, 58, 59, 60, -1, -1, 63, -1, -1, - 66, -1, -1, -1, 70, -1, -1, -1, -1, -1, - -1, 77, -1, -1, 51, -1, -1, 54, 84, 56, - 57, 58, 59, 60, -1, -1, 63, -1, -1, 66, - -1, -1, -1, 70, 100, -1, -1, -1, -1, -1, - 77, -1, -1, -1, -1, -1, -1, 84, -1, -1, - -1, -1, -1, 119, 120, -1, -1, -1, -1, 125, - 11, -1, -1, 100, -1, -1, -1, 133, 134, 135, - 136, -1, -1, 139, -1, 141, -1, -1, -1, -1, - -1, -1, 119, 120, 11, -1, -1, -1, 125, -1, - -1, -1, 10, 11, 12, -1, 133, 134, 135, 136, - 51, -1, 139, 54, 141, 56, 57, 58, 59, -1, - -1, -1, 63, -1, -1, 66, -1, -1, -1, 70, - -1, -1, -1, -1, 51, -1, 77, 54, -1, 56, - 57, 58, 59, 84, -1, -1, 63, -1, -1, 66, - -1, -1, -1, 70, -1, -1, 64, -1, -1, 100, - 77, 10, 11, 12, -1, -1, -1, 84, 76, 77, - -1, -1, -1, -1, -1, 10, 11, 12, 119, 120, - -1, -1, -1, 100, 125, -1, -1, -1, -1, 10, - 11, 12, 133, 134, 135, 136, -1, -1, 139, -1, - 141, -1, 119, 120, 112, 113, -1, 115, 125, -1, - -1, -1, 120, -1, 122, 64, 133, 134, 135, 136, - -1, -1, 139, -1, 141, 133, -1, 76, 77, 64, - 138, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 76, 77, 64, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 76, 77, -1, -1, -1, - -1, -1, -1, 112, 113, -1, 115, -1, -1, -1, - -1, 120, -1, 122, -1, -1, -1, 112, 113, -1, - 115, -1, -1, -1, 133, 120, -1, 122, -1, 138, - -1, 112, 113, -1, 115, -1, -1, -1, 133, 120, - 47, 122, 49, 138, -1, 52, 53, -1, -1, -1, - -1, -1, -1, 60, 61, -1, 137, -1, -1, -1, - -1, -1, 69, -1, 71, 72, 73, 74, -1, -1, - -1, 78, -1, -1, -1, -1, 83, -1, -1, -1, + 12, -1, 100, -1, 133, 134, 135, 136, 119, 120, + 139, -1, 141, -1, -1, -1, -1, -1, -1, -1, + -1, 119, 120, -1, -1, 136, -1, 125, 11, 12, + 141, -1, 15, -1, -1, 133, 134, 135, 136, -1, + -1, 139, 54, 141, 56, 57, 58, 59, 60, -1, + -1, -1, -1, 164, 66, -1, -1, 11, 12, -1, + -1, 15, -1, -1, 47, 77, -1, -1, 51, -1, + -1, 54, 84, 56, 57, 58, 59, 60, -1, -1, + 63, -1, -1, 66, -1, -1, -1, 70, 100, -1, + -1, -1, -1, 47, 77, -1, -1, 51, -1, -1, + 54, 84, 56, 57, 58, 59, 60, 119, 120, 63, + -1, -1, 66, -1, -1, -1, 70, 100, -1, -1, + -1, 133, -1, 77, 136, -1, -1, 139, -1, 141, + 84, -1, -1, 116, -1, -1, 119, 120, -1, -1, + -1, -1, 125, -1, -1, -1, 100, -1, 11, 12, + 133, 134, 135, 136, -1, -1, 139, -1, 141, -1, + -1, -1, 116, -1, -1, 119, 120, -1, -1, -1, + -1, 125, -1, -1, -1, -1, -1, 11, 12, 133, + 134, 135, 136, -1, 47, 139, -1, 141, 51, -1, + -1, 54, -1, 56, 57, 58, 59, 60, -1, -1, + 63, -1, -1, 66, -1, -1, -1, 70, -1, -1, + -1, -1, -1, -1, 77, -1, -1, 51, -1, -1, + 54, 84, 56, 57, 58, 59, 60, -1, -1, 63, + -1, -1, 66, -1, -1, -1, 70, 100, -1, -1, + -1, -1, -1, 77, -1, -1, -1, -1, -1, -1, + 84, -1, -1, 116, -1, -1, 119, 120, -1, -1, + -1, -1, 125, 11, 12, -1, 100, -1, -1, -1, + 133, 134, 135, 136, -1, -1, 139, -1, 141, -1, + -1, -1, -1, -1, -1, 119, 120, 11, 12, -1, + -1, 125, -1, -1, -1, 10, 11, 12, -1, 133, + 134, 135, 136, 51, -1, 139, 54, 141, 56, 57, + 58, 59, -1, -1, -1, 63, -1, 54, 66, 56, + 57, 58, 70, -1, -1, -1, -1, 51, -1, 77, + 54, -1, 56, 57, 58, 59, 84, -1, -1, 63, + -1, -1, 66, -1, -1, -1, 70, 84, -1, 64, + -1, -1, 100, 77, -1, -1, -1, -1, -1, -1, + 84, 76, 77, 100, -1, -1, -1, -1, 116, -1, + -1, 119, 120, 11, -1, -1, 100, 125, -1, -1, + -1, -1, 119, 120, -1, 133, 134, 135, 136, -1, + -1, 139, 107, 141, -1, 119, 120, 112, 113, 136, + 115, 125, 11, -1, 141, 120, -1, 122, -1, 133, + 134, 135, 136, 51, -1, 139, 54, 141, 56, 57, + 58, 59, 60, -1, -1, 63, -1, 164, 66, -1, + -1, -1, 70, -1, -1, -1, -1, -1, -1, 77, + -1, -1, 51, -1, -1, 54, 84, 56, 57, 58, + 59, 60, -1, -1, 63, -1, -1, 66, -1, -1, + -1, 70, 100, -1, -1, -1, -1, -1, 77, -1, + -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, + -1, 119, 120, -1, -1, -1, -1, 125, 11, -1, + -1, 100, -1, -1, -1, 133, 134, 135, 136, -1, + -1, 139, -1, 141, -1, -1, -1, -1, -1, -1, + 119, 120, 11, -1, -1, -1, 125, -1, -1, -1, + 10, 11, 12, -1, 133, 134, 135, 136, 51, -1, + 139, 54, 141, 56, 57, 58, 59, -1, -1, -1, + 63, -1, -1, 66, -1, -1, -1, 70, -1, -1, + -1, -1, 51, -1, 77, 54, -1, 56, 57, 58, + 59, 84, -1, -1, 63, -1, -1, 66, -1, -1, + -1, 70, -1, -1, 64, -1, -1, 100, 77, 10, + 11, 12, -1, -1, -1, 84, 76, 77, -1, -1, + -1, -1, -1, 10, 11, 12, 119, 120, -1, -1, + -1, 100, 125, -1, -1, -1, -1, 10, 11, 12, + 133, 134, 135, 136, -1, -1, 139, -1, 141, -1, + 119, 120, 112, 113, -1, 115, 125, -1, -1, -1, + 120, -1, 122, 64, 133, 134, 135, 136, -1, -1, + 139, -1, 141, 133, -1, 76, 77, 64, 138, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 76, + 77, 64, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 76, 77, -1, -1, -1, -1, -1, + -1, 112, 113, -1, 115, -1, -1, -1, -1, 120, + -1, 122, -1, -1, -1, 112, 113, -1, 115, -1, + -1, -1, 133, 120, -1, 122, -1, 138, -1, 112, + 113, -1, 115, -1, -1, -1, 133, 120, 47, 122, + 49, 138, -1, 52, 53, -1, -1, -1, -1, -1, + 133, 60, 61, -1, -1, -1, -1, -1, -1, -1, + 69, -1, 71, 72, 73, 74, -1, -1, -1, 78, + -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + -1, -1, 101, 102, 103, 104, 105, 106, 107, -1, + -1, -1, -1, -1, 113, 114, 115, 116, -1, -1, + 47, -1, 49, 122, 123, 52, 53, 126, 127, -1, + -1, -1, 131, 60, 61, -1, -1, -1, 137, 138, + -1, 140, 69, -1, 71, 72, 73, 74, -1, 148, + -1, 78, -1, -1, -1, -1, 83, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 167, -1, + -1, -1, -1, -1, 101, 102, 103, 104, 105, 106, 107, -1, -1, -1, -1, -1, 113, 114, 115, 116, -1, -1, 47, -1, 49, 122, 123, 52, 53, 126, 127, -1, -1, -1, 131, 60, 61, -1, -1, -1, 137, 138, -1, 140, 69, -1, 71, 72, 73, 74, -1, 148, -1, 78, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 167, -1, -1, -1, -1, -1, -1, 102, 103, 104, + 167, -1, -1, -1, -1, -1, 101, 102, 103, 104, 105, 106, 107, -1, -1, -1, -1, -1, 113, 114, 115, 116, -1, -1, 47, -1, 49, 122, 123, 52, 53, 126, 127, -1, -1, -1, 131, 60, 61, -1, -1, -1, 137, 138, -1, 140, 69, -1, 71, 72, 73, 74, -1, 148, -1, 78, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 167, -1, -1, -1, -1, -1, -1, 102, + -1, -1, 167, -1, -1, -1, -1, -1, 101, 102, 103, 104, 105, 106, 107, -1, -1, -1, -1, -1, 113, 114, 115, 116, -1, -1, 47, -1, 49, 122, 123, 52, 53, 126, 127, -1, -1, -1, 131, 60, @@ -2827,219 +2868,216 @@ static const yytype_int16 yycheck[] = 71, 72, 73, 74, -1, 148, -1, 78, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 167, -1, -1, -1, -1, -1, - -1, 102, 103, 104, 105, 106, 107, -1, -1, -1, + 101, 102, 103, 104, 105, 106, 107, -1, -1, -1, -1, -1, 113, 114, 115, 116, -1, -1, 47, -1, 49, 122, 123, 52, 53, 126, 127, -1, -1, -1, 131, 60, 61, -1, -1, -1, 137, 138, -1, 140, 69, -1, 71, 72, 73, 74, -1, 148, -1, 78, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 167, -1, -1, -1, - -1, -1, -1, 102, 103, 104, 105, 106, 107, -1, + -1, -1, 101, 102, 103, 104, 105, 106, 107, -1, -1, -1, -1, -1, 113, 114, 115, 116, -1, -1, 47, -1, 49, 122, 123, 52, 53, 126, 127, -1, -1, -1, 131, 60, 61, -1, -1, -1, 137, 138, -1, 140, 69, -1, 71, 72, 73, 74, -1, 148, - -1, 78, -1, -1, -1, -1, 83, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 167, -1, - -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, + -1, 78, -1, 10, 11, 12, 83, -1, -1, -1, + -1, -1, -1, 54, -1, 56, 57, 58, 167, -1, + -1, -1, -1, -1, 101, 102, 103, 104, 105, 106, 107, -1, -1, -1, -1, -1, 113, 114, 115, 116, - -1, -1, 47, -1, 49, 122, 123, 52, 53, 126, - 127, -1, -1, -1, 131, 60, 61, -1, -1, -1, - 137, 138, -1, 140, 69, -1, 71, 72, 73, 74, - -1, 148, -1, 78, -1, 10, 11, 12, 83, -1, - -1, -1, -1, -1, -1, 54, -1, 56, 57, 58, - 167, -1, -1, -1, -1, -1, -1, 102, 103, 104, - 105, 106, 107, -1, -1, -1, -1, -1, 113, 114, - 115, 116, 47, -1, 49, 84, -1, 122, 123, -1, - -1, 126, 127, -1, -1, -1, 131, -1, -1, 64, - -1, 100, 137, 138, 47, 140, 49, -1, -1, -1, - 53, 76, 77, 148, -1, -1, -1, 60, 61, -1, - 119, 120, -1, -1, -1, -1, -1, -1, 71, 72, - 73, -1, 167, -1, -1, 78, -1, 136, -1, -1, - 83, -1, 141, -1, -1, -1, -1, 112, 113, -1, - 115, -1, -1, -1, -1, 120, 47, 122, 49, -1, - -1, -1, 53, 106, -1, 164, -1, -1, -1, 60, - 61, -1, -1, 116, -1, -1, -1, -1, -1, 122, - 71, 72, 73, -1, 127, -1, -1, 78, -1, -1, - -1, -1, 83, -1, 137, 138, 47, 140, 49, -1, - -1, 52, 53, -1, -1, -1, -1, -1, -1, 60, - 61, -1, 155, -1, -1, 106, -1, -1, 69, -1, - 71, 72, 73, 74, -1, 116, -1, 78, -1, -1, - -1, 122, 83, -1, -1, 126, 127, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 137, 138, -1, 140, - -1, 102, 103, 104, 105, 106, 107, -1, -1, -1, - -1, -1, 113, 114, 115, 116, -1, -1, 47, -1, - 49, 122, 123, -1, 53, 126, 127, 47, -1, 49, - 131, 60, 61, 53, -1, -1, 137, 138, -1, 140, - 60, 61, 71, 72, 73, -1, -1, -1, -1, -1, - -1, 71, 72, 73, 83, -1, -1, -1, -1, -1, - -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 106, 107, -1, - -1, -1, -1, -1, -1, -1, 106, 116, -1, -1, - -1, -1, -1, 122, -1, -1, 116, -1, 127, -1, - -1, -1, 122, -1, -1, -1, -1, 127, -1, 138, - -1, 140, -1, -1, -1, -1, -1, -1, 138, -1, - 140 + 47, -1, 49, 84, -1, 122, 123, -1, -1, 126, + 127, -1, -1, -1, 131, -1, -1, 64, -1, 100, + 137, 138, 47, 140, 49, -1, -1, -1, 53, 76, + 77, 148, -1, -1, -1, 60, 61, -1, 119, 120, + -1, -1, -1, -1, -1, -1, 71, 72, 73, -1, + 167, -1, -1, 78, -1, 136, -1, -1, 83, -1, + 141, -1, -1, -1, -1, 112, 113, -1, 115, -1, + -1, -1, -1, 120, 47, 122, 49, -1, -1, -1, + 53, 106, -1, 164, -1, -1, -1, 60, 61, -1, + -1, 116, -1, -1, -1, -1, -1, 122, 71, 72, + 73, -1, 127, -1, -1, 78, -1, -1, -1, -1, + 83, -1, 137, 138, 47, 140, 49, -1, -1, 52, + 53, -1, -1, -1, -1, -1, -1, 60, 61, -1, + 155, -1, -1, 106, -1, -1, 69, -1, 71, 72, + 73, 74, -1, 116, -1, 78, -1, -1, -1, 122, + 83, -1, -1, 126, 127, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 137, 138, -1, 140, 101, 102, + 103, 104, 105, 106, 107, -1, -1, -1, -1, -1, + 113, 114, 115, 116, -1, -1, 47, -1, 49, 122, + 123, -1, 53, 126, 127, 47, -1, 49, 131, 60, + 61, 53, -1, -1, 137, 138, -1, 140, 60, 61, + 71, 72, 73, -1, -1, -1, -1, -1, -1, 71, + 72, 73, 83, -1, -1, -1, 54, -1, 56, 57, + 58, 83, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 106, 107, -1, -1, -1, + -1, -1, -1, -1, 106, 116, 84, -1, -1, -1, + -1, 122, -1, -1, 116, -1, 127, -1, -1, -1, + 122, -1, 100, -1, -1, 127, -1, 138, -1, 140, + -1, -1, -1, -1, -1, -1, 138, -1, 140, -1, + -1, 119, 120, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 136, -1, + -1, -1, -1, 141 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { - 0, 143, 144, 145, 171, 172, 278, 3, 4, 5, + 0, 143, 144, 145, 171, 172, 279, 3, 4, 5, 6, 8, 9, 10, 11, 50, 54, 56, 57, 58, 62, 66, 67, 75, 76, 77, 81, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 108, 110, 112, 117, 119, 120, 121, 124, 129, 132, 136, 141, 154, 157, 158, 159, - 162, 164, 165, 168, 268, 269, 277, 11, 12, 51, + 162, 164, 165, 168, 269, 270, 278, 11, 12, 51, 54, 56, 57, 58, 59, 60, 63, 66, 70, 77, 84, 100, 119, 120, 125, 133, 134, 135, 136, 139, - 141, 230, 231, 235, 237, 239, 245, 246, 250, 251, - 256, 257, 258, 259, 0, 47, 49, 52, 53, 60, - 61, 69, 71, 72, 73, 74, 78, 83, 102, 103, - 104, 105, 106, 107, 113, 114, 115, 116, 122, 123, - 126, 127, 131, 137, 138, 140, 148, 175, 177, 178, - 180, 183, 202, 252, 255, 278, 146, 164, 164, 164, - 164, 164, 164, 155, 164, 155, 164, 164, 164, 164, + 141, 231, 232, 236, 238, 240, 246, 247, 251, 252, + 257, 258, 259, 260, 0, 47, 49, 52, 53, 60, + 61, 69, 71, 72, 73, 74, 78, 83, 101, 102, + 103, 104, 105, 106, 107, 113, 114, 115, 116, 122, + 123, 126, 127, 131, 137, 138, 140, 148, 175, 177, + 178, 180, 183, 202, 253, 256, 279, 146, 164, 164, + 164, 164, 164, 164, 155, 164, 155, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, - 164, 164, 164, 164, 164, 11, 51, 63, 133, 134, - 233, 250, 251, 256, 155, 164, 164, 15, 164, 155, - 164, 164, 164, 268, 268, 268, 268, 268, 11, 54, - 56, 57, 58, 66, 77, 84, 100, 119, 120, 136, - 141, 235, 266, 268, 10, 11, 12, 64, 76, 77, - 112, 113, 115, 120, 122, 150, 154, 159, 272, 273, - 275, 278, 268, 16, 17, 18, 19, 20, 21, 22, - 23, 33, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 163, 164, 165, 6, 8, 230, 231, - 164, 59, 125, 66, 100, 257, 257, 257, 275, 164, - 257, 13, 15, 17, 60, 140, 154, 159, 164, 228, - 229, 278, 229, 146, 10, 11, 12, 112, 149, 276, - 236, 278, 137, 181, 182, 275, 164, 72, 83, 180, - 180, 180, 180, 6, 180, 202, 180, 149, 179, 107, - 180, 164, 164, 164, 164, 180, 146, 275, 149, 149, - 149, 180, 180, 164, 178, 180, 183, 203, 180, 180, - 187, 107, 275, 180, 180, 10, 11, 51, 63, 111, - 133, 134, 146, 162, 190, 193, 232, 234, 237, 239, - 245, 250, 251, 256, 265, 266, 278, 265, 235, 265, - 265, 265, 265, 235, 265, 235, 265, 235, 265, 235, - 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, - 235, 235, 235, 235, 265, 164, 275, 164, 164, 275, - 236, 235, 265, 265, 164, 10, 235, 235, 235, 268, - 265, 265, 166, 147, 166, 275, 275, 147, 169, 150, - 218, 278, 268, 268, 268, 268, 268, 268, 268, 268, - 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, - 268, 268, 268, 166, 266, 268, 229, 229, 51, 268, - 235, 159, 275, 13, 15, 17, 60, 140, 154, 159, - 228, 278, 228, 229, 228, 229, 228, 228, 15, 17, - 47, 60, 116, 154, 159, 213, 214, 223, 230, 231, - 278, 165, 248, 249, 278, 11, 247, 257, 149, 10, - 11, 12, 47, 49, 112, 146, 275, 276, 275, 48, - 147, 164, 11, 232, 268, 180, 177, 146, 275, 275, - 275, 275, 275, 172, 146, 268, 155, 10, 11, 193, - 232, 234, 275, 148, 150, 164, 164, 164, 60, 230, - 275, 164, 176, 275, 185, 146, 148, 150, 220, 148, - 184, 275, 276, 236, 167, 166, 166, 166, 166, 166, - 166, 156, 166, 156, 166, 166, 166, 166, 147, 166, - 147, 166, 147, 166, 166, 166, 166, 166, 166, 166, - 166, 166, 166, 166, 268, 235, 265, 275, 156, 166, - 166, 275, 166, 166, 156, 166, 166, 166, 166, 268, - 268, 15, 154, 273, 164, 199, 278, 268, 149, 166, - 169, 166, 166, 166, 228, 159, 275, 228, 228, 228, - 228, 228, 165, 228, 181, 116, 230, 231, 223, 228, - 228, 166, 15, 147, 13, 17, 60, 140, 154, 159, - 164, 226, 276, 278, 13, 15, 17, 60, 140, 154, - 159, 164, 227, 264, 268, 278, 275, 167, 247, 181, - 164, 238, 240, 149, 180, 181, 3, 4, 5, 9, - 10, 15, 50, 62, 67, 75, 76, 108, 110, 112, - 117, 121, 124, 129, 132, 154, 157, 158, 162, 164, - 168, 215, 216, 223, 224, 270, 271, 277, 278, 166, - 166, 172, 146, 147, 147, 147, 147, 167, 253, 147, - 166, 10, 11, 12, 59, 60, 133, 204, 205, 206, - 207, 208, 256, 278, 164, 220, 188, 148, 235, 191, - 13, 159, 192, 51, 268, 230, 13, 17, 60, 140, - 154, 159, 225, 276, 278, 235, 172, 164, 146, 148, - 149, 150, 219, 260, 261, 64, 65, 146, 268, 13, - 17, 60, 111, 140, 154, 159, 164, 186, 209, 211, - 276, 149, 275, 164, 164, 235, 235, 235, 166, 166, - 166, 164, 166, 164, 218, 213, 17, 33, 47, 60, - 61, 76, 106, 109, 112, 128, 140, 154, 212, 278, - 268, 228, 264, 166, 48, 230, 231, 226, 227, 166, - 166, 199, 15, 223, 159, 226, 226, 226, 226, 226, - 226, 165, 218, 159, 275, 227, 227, 227, 227, 227, - 227, 165, 218, 169, 147, 150, 48, 232, 268, 172, - 76, 241, 278, 182, 164, 155, 155, 233, 155, 15, - 164, 155, 164, 268, 268, 268, 268, 235, 266, 268, - 166, 15, 147, 16, 17, 18, 19, 20, 21, 22, - 23, 33, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 163, 164, 165, 180, 180, 167, 254, - 10, 10, 10, 10, 172, 277, 148, 208, 156, 147, - 15, 275, 13, 17, 60, 140, 154, 159, 164, 226, - 227, 189, 211, 148, 213, 159, 209, 213, 166, 166, - 225, 159, 225, 225, 225, 225, 225, 164, 165, 166, - 167, 194, 260, 173, 174, 275, 64, 65, 167, 262, - 278, 148, 148, 146, 221, 222, 268, 278, 148, 159, - 209, 209, 6, 16, 17, 18, 19, 20, 21, 22, - 23, 33, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 65, 108, 147, 150, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 164, - 165, 168, 200, 209, 209, 209, 209, 149, 164, 165, - 212, 150, 218, 220, 247, 266, 266, 166, 166, 166, - 266, 266, 166, 60, 233, 181, 164, 146, 169, 164, - 223, 226, 227, 218, 218, 164, 164, 212, 226, 166, - 264, 227, 166, 264, 268, 166, 166, 167, 149, 242, - 243, 278, 235, 235, 235, 164, 235, 164, 10, 235, - 235, 235, 268, 166, 166, 15, 224, 268, 268, 268, - 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, - 268, 268, 268, 268, 268, 268, 268, 268, 166, 266, - 268, 172, 147, 166, 147, 147, 147, 167, 166, 226, - 227, 178, 183, 201, 202, 207, 275, 150, 159, 150, - 217, 278, 218, 220, 166, 209, 166, 166, 164, 225, - 197, 264, 213, 167, 146, 147, 146, 164, 148, 148, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 70, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 82, 83, 84, 100, - 106, 107, 108, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 168, 169, 263, - 221, 167, 147, 209, 10, 166, 169, 166, 4, 210, - 264, 268, 147, 166, 166, 166, 166, 199, 233, 229, - 48, 166, 275, 260, 213, 218, 218, 213, 213, 164, - 169, 164, 169, 147, 113, 114, 115, 133, 138, 244, - 274, 275, 146, 147, 166, 156, 156, 265, 156, 275, - 166, 166, 156, 166, 166, 268, 149, 166, 169, 167, - 10, 148, 10, 10, 10, 148, 217, 235, 50, 62, + 164, 164, 164, 164, 164, 164, 11, 51, 63, 133, + 134, 234, 251, 252, 257, 155, 164, 164, 15, 164, + 155, 164, 164, 164, 269, 269, 269, 269, 269, 11, + 54, 56, 57, 58, 66, 77, 84, 100, 119, 120, + 136, 141, 236, 267, 269, 10, 11, 12, 64, 76, + 77, 112, 113, 115, 120, 122, 150, 154, 159, 273, + 274, 276, 279, 269, 16, 17, 18, 19, 20, 21, + 22, 23, 33, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 163, 164, 165, 6, 8, 231, + 232, 164, 59, 125, 66, 100, 258, 258, 258, 276, + 164, 258, 13, 15, 17, 60, 140, 154, 159, 164, + 229, 230, 279, 230, 146, 10, 11, 12, 112, 149, + 277, 237, 279, 137, 181, 182, 276, 164, 72, 83, + 180, 180, 180, 180, 6, 180, 202, 180, 149, 179, + 107, 180, 164, 164, 164, 164, 164, 180, 146, 276, + 149, 149, 149, 180, 180, 164, 178, 180, 183, 203, + 180, 180, 187, 107, 276, 180, 180, 10, 11, 51, + 63, 111, 133, 134, 146, 162, 190, 193, 233, 235, + 238, 240, 246, 251, 252, 257, 266, 267, 279, 266, + 236, 266, 266, 266, 266, 236, 266, 236, 266, 236, + 266, 236, 236, 236, 236, 236, 236, 236, 236, 236, + 236, 236, 236, 236, 236, 236, 266, 164, 276, 164, + 164, 276, 237, 236, 266, 266, 164, 10, 236, 236, + 236, 269, 266, 266, 166, 147, 166, 276, 276, 147, + 169, 150, 219, 279, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 166, 267, 269, 230, 230, + 51, 269, 236, 159, 276, 13, 15, 17, 60, 140, + 154, 159, 229, 279, 229, 230, 229, 230, 229, 229, + 15, 17, 47, 60, 116, 154, 159, 214, 215, 224, + 231, 232, 279, 165, 249, 250, 279, 11, 248, 258, + 149, 10, 11, 12, 47, 49, 112, 146, 276, 277, + 276, 48, 147, 164, 11, 233, 269, 180, 177, 146, + 276, 276, 276, 276, 276, 276, 172, 146, 269, 155, + 10, 11, 193, 233, 235, 276, 148, 150, 164, 164, + 164, 60, 231, 276, 164, 176, 276, 185, 146, 148, + 150, 221, 148, 184, 276, 277, 237, 167, 166, 166, + 166, 166, 166, 166, 156, 166, 156, 166, 166, 166, + 166, 147, 166, 147, 166, 147, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 269, 236, 266, + 276, 156, 166, 166, 276, 166, 166, 156, 166, 166, + 166, 166, 269, 269, 15, 154, 274, 164, 199, 279, + 269, 149, 166, 169, 166, 166, 166, 229, 159, 276, + 229, 229, 229, 229, 229, 165, 229, 181, 116, 231, + 232, 224, 229, 229, 166, 15, 147, 13, 17, 60, + 140, 154, 159, 164, 227, 277, 279, 13, 15, 17, + 60, 140, 154, 159, 164, 228, 265, 269, 279, 276, + 167, 248, 181, 164, 239, 241, 149, 180, 181, 3, + 4, 5, 9, 10, 15, 50, 62, 67, 75, 76, + 108, 110, 112, 117, 121, 124, 129, 132, 154, 157, + 158, 162, 164, 168, 216, 217, 224, 225, 271, 272, + 278, 279, 166, 166, 172, 146, 147, 147, 147, 147, + 147, 167, 254, 147, 166, 10, 11, 12, 59, 60, + 133, 204, 205, 206, 207, 208, 257, 279, 164, 221, + 188, 148, 236, 191, 13, 159, 192, 51, 269, 231, + 13, 17, 60, 140, 154, 159, 226, 277, 279, 236, + 172, 164, 146, 148, 149, 150, 220, 261, 262, 64, + 65, 146, 269, 13, 17, 60, 111, 140, 154, 159, + 164, 186, 209, 211, 277, 149, 276, 164, 164, 236, + 236, 236, 166, 166, 166, 164, 166, 164, 219, 214, + 17, 33, 47, 60, 61, 76, 106, 109, 112, 128, + 140, 154, 212, 279, 269, 229, 265, 166, 48, 231, + 232, 227, 228, 166, 166, 199, 15, 224, 159, 227, + 227, 227, 227, 227, 227, 165, 219, 159, 276, 228, + 228, 228, 228, 228, 228, 165, 219, 169, 147, 150, + 48, 233, 269, 172, 76, 242, 279, 182, 164, 155, + 155, 234, 155, 15, 164, 155, 164, 269, 269, 269, + 269, 236, 267, 269, 166, 15, 147, 16, 17, 18, + 19, 20, 21, 22, 23, 33, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 163, 164, 165, + 180, 180, 167, 255, 10, 10, 10, 10, 10, 172, + 278, 148, 208, 156, 147, 15, 276, 13, 17, 60, + 140, 154, 159, 164, 227, 228, 189, 211, 148, 214, + 159, 209, 214, 166, 166, 226, 159, 226, 226, 226, + 226, 226, 164, 165, 166, 167, 194, 261, 173, 174, + 276, 64, 65, 167, 263, 279, 148, 148, 146, 222, + 223, 269, 279, 148, 159, 209, 209, 6, 16, 17, + 18, 19, 20, 21, 22, 23, 33, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 65, + 108, 147, 150, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 164, 165, 168, 200, 209, 209, + 209, 209, 149, 164, 165, 212, 150, 219, 221, 248, + 267, 267, 166, 166, 166, 267, 267, 166, 60, 234, + 181, 164, 146, 169, 164, 224, 227, 228, 219, 219, + 164, 164, 212, 227, 166, 265, 228, 166, 265, 269, + 166, 166, 167, 149, 243, 244, 279, 236, 236, 236, + 164, 236, 164, 10, 236, 236, 236, 269, 166, 166, + 15, 225, 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 166, 267, 269, 172, 147, 166, 147, + 213, 279, 147, 147, 147, 167, 166, 227, 228, 178, + 183, 201, 202, 207, 276, 150, 159, 150, 218, 279, + 219, 221, 166, 209, 166, 166, 164, 226, 197, 265, + 214, 167, 146, 147, 146, 164, 148, 148, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 70, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 82, 83, 84, 100, 106, 107, + 108, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 168, 169, 264, 222, 167, + 147, 209, 10, 166, 169, 166, 4, 210, 265, 269, + 147, 166, 166, 166, 166, 199, 234, 230, 48, 166, + 276, 261, 214, 219, 219, 214, 214, 164, 169, 164, + 169, 147, 113, 114, 115, 133, 138, 245, 275, 276, + 146, 147, 166, 156, 156, 266, 156, 276, 166, 166, + 156, 166, 166, 269, 149, 166, 169, 167, 10, 148, + 10, 166, 10, 10, 10, 148, 218, 236, 50, 62, 67, 117, 121, 124, 154, 157, 158, 159, 162, 164, - 168, 267, 269, 147, 199, 166, 164, 199, 198, 213, - 169, 166, 260, 174, 265, 265, 262, 167, 146, 268, - 215, 169, 186, 212, 229, 15, 166, 167, 166, 166, - 166, 213, 213, 138, 274, 138, 274, 138, 274, 275, - 113, 114, 115, 15, 172, 244, 164, 164, 166, 164, - 166, 164, 268, 147, 166, 147, 166, 166, 147, 166, - 164, 155, 155, 155, 15, 164, 155, 267, 267, 267, - 267, 267, 235, 266, 267, 16, 17, 18, 19, 20, - 21, 22, 23, 33, 151, 152, 153, 154, 157, 158, - 159, 160, 161, 163, 164, 165, 189, 164, 195, 213, - 166, 199, 167, 167, 166, 167, 221, 166, 146, 166, - 199, 199, 199, 166, 166, 274, 274, 274, 274, 274, - 274, 167, 266, 266, 266, 266, 10, 148, 10, 148, - 148, 10, 148, 235, 235, 235, 235, 164, 10, 235, - 235, 166, 166, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 166, 266, 268, 196, 213, 166, 199, 15, - 167, 199, 260, 212, 212, 212, 199, 199, 166, 166, - 166, 166, 166, 147, 147, 166, 166, 156, 156, 156, - 275, 166, 166, 156, 267, 149, 166, 169, 213, 166, - 199, 167, 148, 10, 10, 148, 164, 164, 164, 166, - 164, 267, 166, 199, 166, 166, 266, 266, 266, 266, - 199, 212, 148, 148, 166, 166, 166, 166, 212 + 168, 268, 270, 147, 199, 166, 164, 199, 198, 214, + 169, 166, 261, 174, 266, 266, 263, 167, 146, 269, + 216, 169, 186, 212, 230, 15, 166, 167, 166, 166, + 166, 214, 214, 138, 275, 138, 275, 138, 275, 276, + 113, 114, 115, 15, 172, 245, 164, 164, 166, 164, + 166, 164, 269, 147, 166, 147, 148, 147, 166, 166, + 147, 166, 164, 155, 155, 155, 15, 164, 155, 268, + 268, 268, 268, 268, 236, 267, 268, 16, 17, 18, + 19, 20, 21, 22, 23, 33, 151, 152, 153, 154, + 157, 158, 159, 160, 161, 163, 164, 165, 189, 164, + 195, 214, 166, 199, 167, 167, 166, 167, 222, 166, + 146, 166, 199, 199, 199, 166, 166, 275, 275, 275, + 275, 275, 275, 167, 267, 267, 267, 267, 10, 148, + 10, 10, 148, 148, 10, 148, 236, 236, 236, 236, + 164, 10, 236, 236, 166, 166, 268, 268, 268, 268, + 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, + 268, 268, 268, 268, 268, 166, 267, 269, 196, 214, + 166, 199, 15, 167, 199, 261, 212, 212, 212, 199, + 199, 166, 166, 166, 166, 147, 213, 166, 147, 147, + 166, 166, 156, 156, 156, 276, 166, 166, 156, 268, + 149, 166, 169, 214, 166, 199, 167, 10, 166, 148, + 10, 10, 148, 164, 164, 164, 166, 164, 268, 166, + 199, 148, 166, 166, 267, 267, 267, 267, 199, 212, + 148, 148, 166, 166, 166, 166, 212 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -3048,79 +3086,80 @@ static const yytype_uint16 yyr1[] = 0, 170, 171, 171, 171, 172, 172, 172, 173, 173, 174, 174, 174, 176, 175, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, - 177, 177, 177, 177, 177, 177, 177, 177, 179, 178, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 179, 178, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 181, 181, - 182, 182, 182, 184, 183, 183, 185, 183, 183, 183, - 186, 186, 188, 187, 187, 189, 189, 191, 190, 192, - 190, 194, 193, 195, 193, 196, 193, 197, 193, 198, - 193, 193, 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 200, 200, 200, 200, + 181, 181, 182, 182, 182, 184, 183, 183, 185, 183, + 183, 183, 186, 186, 188, 187, 187, 189, 189, 191, + 190, 192, 190, 194, 193, 195, 193, 196, 193, 197, + 193, 198, 193, 193, 199, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 199, 199, 199, 199, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, 200, - 200, 200, 200, 200, 200, 201, 201, 201, 202, 203, - 202, 202, 202, 204, 204, 205, 205, 206, 206, 207, - 207, 207, 207, 207, 207, 207, 207, 207, 208, 208, - 208, 208, 209, 209, 209, 209, 209, 209, 209, 209, - 209, 209, 209, 210, 209, 211, 211, 212, 212, 212, - 213, 213, 213, 213, 213, 214, 214, 215, 215, 215, - 215, 215, 216, 216, 217, 217, 218, 218, 219, 219, - 219, 219, 219, 220, 220, 220, 220, 220, 220, 221, - 221, 221, 222, 222, 222, 222, 223, 223, 223, 223, - 223, 223, 223, 223, 224, 224, 225, 225, 225, 225, - 225, 225, 225, 225, 225, 226, 226, 226, 226, 226, - 226, 226, 226, 226, 226, 226, 227, 227, 227, 227, - 227, 227, 227, 227, 227, 227, 227, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 229, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, + 200, 200, 200, 200, 200, 200, 200, 201, 201, 201, + 202, 203, 202, 202, 202, 204, 204, 205, 205, 206, + 206, 207, 207, 207, 207, 207, 207, 207, 207, 207, + 208, 208, 208, 208, 209, 209, 209, 209, 209, 209, + 209, 209, 209, 209, 209, 210, 209, 211, 211, 212, + 212, 212, 213, 213, 214, 214, 214, 214, 214, 215, + 215, 216, 216, 216, 216, 216, 217, 217, 218, 218, + 219, 219, 220, 220, 220, 220, 220, 221, 221, 221, + 221, 221, 221, 222, 222, 222, 223, 223, 223, 223, + 224, 224, 224, 224, 224, 224, 224, 224, 225, 225, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 227, + 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 230, 230, 230, 230, 230, 230, 230, 230, 230, - 230, 230, 230, 231, 232, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 233, 233, 233, - 233, 233, 233, 233, 233, 234, 234, 235, 235, 235, - 235, 236, 236, 236, 236, 238, 237, 240, 239, 241, - 241, 242, 242, 243, 243, 244, 244, 244, 244, 244, - 244, 244, 244, 244, 244, 245, 246, 246, 246, 246, - 247, 247, 248, 248, 248, 249, 249, 249, 250, 250, - 250, 251, 251, 251, 253, 252, 254, 252, 252, 252, - 255, 255, 255, 256, 256, 256, 257, 257, 257, 257, - 257, 257, 257, 257, 257, 257, 257, 257, 257, 257, - 258, 258, 258, 259, 261, 260, 262, 262, 263, 263, - 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, - 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, - 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, - 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, - 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, - 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, - 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, - 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, - 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, - 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, - 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, - 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, - 263, 263, 263, 263, 263, 263, 263, 264, 264, 265, - 265, 266, 266, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 268, 268, 268, 268, 268, 268, 268, 268, + 230, 230, 230, 230, 230, 231, 231, 231, 231, 231, + 231, 231, 231, 231, 231, 231, 231, 232, 233, 233, + 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, + 233, 234, 234, 234, 234, 234, 234, 234, 234, 235, + 235, 236, 236, 236, 236, 237, 237, 237, 237, 239, + 238, 241, 240, 242, 242, 243, 243, 244, 244, 245, + 245, 245, 245, 245, 245, 245, 245, 245, 245, 246, + 247, 247, 247, 247, 248, 248, 249, 249, 249, 250, + 250, 250, 251, 251, 251, 252, 252, 252, 254, 253, + 255, 253, 253, 253, 256, 256, 256, 257, 257, 257, + 258, 258, 258, 258, 258, 258, 258, 258, 258, 258, + 258, 258, 258, 258, 259, 259, 259, 260, 262, 261, + 263, 263, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 265, 265, 266, 266, 267, 267, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, - 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, - 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, - 268, 269, 269, 269, 269, 269, 269, 269, 269, 269, + 268, 268, 268, 268, 268, 268, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, - 269, 270, 270, 270, 270, 270, 270, 270, 270, 270, - 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, + 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 270, 271, 271, 271, 271, 271, - 271, 271, 271, 271, 271, 271, 272, 272, 272, 272, - 272, 273, 273, 273, 273, 274, 274, 274, 275, 275, - 275, 275, 275, 275, 275, 275, 275, 275, 275, 276, - 276, 276, 276, 277, 277, 277, 277, 278 + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 271, 271, 271, 271, 272, + 272, 272, 272, 272, 272, 272, 272, 272, 272, 272, + 273, 273, 273, 273, 273, 274, 274, 274, 274, 275, + 275, 275, 276, 276, 276, 276, 276, 276, 276, 276, + 276, 276, 276, 277, 277, 277, 277, 278, 278, 278, + 278, 279 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -3128,45 +3167,46 @@ static const yytype_uint8 yyr2[] = { 0, 2, 2, 2, 2, 1, 2, 2, 1, 3, 4, 5, 4, 0, 5, 1, 1, 1, 1, 1, - 2, 1, 1, 2, 2, 2, 2, 7, 9, 11, - 9, 11, 13, 9, 13, 9, 7, 5, 0, 3, - 1, 2, 2, 3, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 4, 5, 5, 1, 3, - 1, 4, 4, 0, 4, 3, 0, 4, 3, 1, - 2, 4, 0, 4, 3, 2, 4, 0, 6, 0, - 6, 0, 7, 0, 11, 0, 12, 0, 8, 0, - 9, 1, 1, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 4, 5, 6, 4, 1, 1, 1, 1, + 2, 1, 1, 2, 2, 2, 2, 8, 11, 9, + 11, 13, 7, 9, 12, 9, 13, 9, 7, 5, + 0, 3, 1, 2, 2, 3, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 4, 5, 5, + 1, 3, 1, 4, 4, 0, 4, 3, 0, 4, + 3, 1, 2, 4, 0, 4, 3, 2, 4, 0, + 6, 0, 6, 0, 7, 0, 11, 0, 12, 0, + 8, 0, 9, 1, 1, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 4, 5, 6, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 1, 1, 1, 1, 1, 2, 0, - 6, 2, 2, 1, 1, 1, 3, 1, 1, 1, - 2, 4, 2, 3, 3, 4, 2, 3, 1, 1, - 1, 1, 1, 2, 3, 2, 2, 2, 2, 2, - 3, 4, 3, 0, 6, 2, 3, 1, 3, 4, - 1, 1, 1, 3, 2, 1, 3, 1, 1, 1, - 3, 2, 1, 3, 1, 2, 1, 2, 1, 3, - 5, 3, 3, 1, 3, 3, 3, 3, 4, 1, - 1, 2, 1, 3, 3, 5, 3, 4, 5, 3, - 4, 5, 2, 4, 1, 1, 1, 1, 2, 2, - 2, 2, 2, 3, 4, 1, 1, 2, 2, 2, - 2, 2, 3, 4, 7, 3, 1, 2, 2, 2, - 2, 2, 2, 3, 4, 7, 3, 1, 1, 2, - 2, 2, 2, 2, 2, 3, 4, 1, 1, 2, - 2, 2, 2, 2, 2, 3, 4, 5, 9, 9, - 9, 1, 1, 2, 1, 1, 1, 3, 4, 4, - 4, 4, 1, 1, 1, 1, 2, 1, 1, 1, - 3, 4, 2, 4, 4, 4, 1, 1, 1, 2, - 3, 2, 4, 4, 1, 1, 1, 2, 3, 2, - 3, 1, 4, 5, 5, 0, 6, 0, 9, 1, - 1, 1, 1, 2, 3, 1, 2, 2, 2, 3, - 3, 3, 3, 3, 3, 4, 3, 1, 4, 2, - 1, 1, 1, 3, 5, 1, 2, 4, 1, 2, - 2, 1, 1, 1, 0, 6, 0, 7, 4, 5, - 3, 5, 4, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, - 1, 1, 2, 1, 0, 2, 1, 2, 1, 1, + 1, 1, 1, 2, 2, 1, 1, 1, 1, 1, + 2, 0, 6, 2, 2, 1, 1, 1, 3, 1, + 1, 1, 2, 4, 2, 3, 3, 4, 2, 3, + 1, 1, 1, 1, 1, 2, 3, 2, 2, 2, + 2, 2, 3, 4, 3, 0, 6, 2, 3, 1, + 3, 4, 1, 2, 1, 1, 1, 3, 2, 1, + 3, 1, 1, 1, 3, 2, 1, 3, 1, 2, + 1, 2, 1, 3, 5, 3, 3, 1, 3, 3, + 3, 3, 4, 1, 1, 2, 1, 3, 3, 5, + 3, 4, 5, 3, 4, 5, 2, 4, 1, 1, + 1, 1, 2, 2, 2, 2, 2, 3, 4, 1, + 1, 2, 2, 2, 2, 2, 3, 4, 7, 3, + 1, 2, 2, 2, 2, 2, 2, 3, 4, 7, + 3, 1, 1, 2, 2, 2, 2, 2, 2, 3, + 4, 1, 1, 2, 2, 2, 2, 2, 2, 3, + 4, 5, 9, 9, 9, 1, 1, 2, 1, 1, + 1, 3, 4, 4, 4, 4, 1, 1, 1, 1, + 2, 1, 1, 1, 3, 4, 2, 4, 4, 4, + 1, 1, 1, 2, 3, 2, 4, 4, 1, 1, + 1, 2, 3, 2, 3, 1, 4, 5, 5, 0, + 6, 0, 9, 1, 1, 1, 1, 2, 3, 1, + 2, 2, 2, 3, 3, 3, 3, 3, 3, 4, + 3, 1, 4, 2, 1, 1, 1, 3, 5, 1, + 2, 4, 1, 2, 2, 1, 1, 1, 0, 6, + 0, 7, 4, 5, 3, 5, 4, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 2, 2, 1, 1, 2, 1, 0, 2, + 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -3179,29 +3219,29 @@ static const yytype_uint8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, - 1, 1, 3, 1, 4, 7, 7, 7, 7, 4, - 4, 5, 4, 2, 2, 2, 2, 2, 2, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 5, 4, 4, 3, 3, - 3, 3, 1, 4, 7, 7, 7, 7, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 5, 4, 2, 5, 4, 4, - 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 5, 4, 4, 3, 3, 3, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 8, 11, 4, 4, 6, 4, 4, 6, - 6, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 1, 4, 7, 7, 7, 7, 4, 4, 5, - 4, 2, 5, 4, 4, 2, 2, 2, 2, 2, + 3, 1, 1, 1, 1, 1, 3, 1, 4, 7, + 7, 7, 7, 4, 4, 5, 4, 2, 2, 2, + 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, + 4, 4, 3, 3, 3, 3, 1, 4, 7, 7, + 7, 7, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, + 2, 5, 4, 4, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 4, 4, 3, 3, 3, 3, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, - 4, 2, 3, 1, 2, 1, 2, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 8, 11, 4, 4, + 6, 4, 4, 6, 6, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 1, 4, 7, 7, 7, + 7, 4, 4, 5, 4, 2, 5, 4, 4, 2, + 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 5, 4, 4, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 0 + 1, 1, 1, 2, 4, 2, 3, 1, 2, 1, + 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, + 2, 0 }; @@ -3977,64 +4017,64 @@ yyreduce: switch (yyn) { case 3: -#line 450 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 451 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_expr = (yyvsp[0].u.expr); } -#line 3985 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4025 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 4: -#line 454 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 455 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_type = (yyvsp[0].u.type); } -#line 3993 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4033 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 10: -#line 472 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 473 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { delete (yyvsp[-1].u.expr); } -#line 4001 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4041 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 11: -#line 476 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 477 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { delete (yyvsp[-2].u.expr); } -#line 4009 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4049 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 12: -#line 480 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 481 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { delete (yyvsp[-1].u.expr); } -#line 4017 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4057 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 13: -#line 492 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 493 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { push_storage_class((current_storage_class & ~CPPInstance::SC_c_binding) | ((yyvsp[-1].u.integer) & CPPInstance::SC_c_binding)); } -#line 4026 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4066 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 14: -#line 497 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 498 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_storage_class(); } -#line 4034 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4074 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 21: -#line 510 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 511 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if (publish_nest_level != 0) { yyerror("Unclosed __begin_publish", publish_loc); @@ -4047,11 +4087,11 @@ yyreduce: publish_nest_level++; current_scope->set_current_vis(V_published); } -#line 4051 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4091 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 22: -#line 523 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 524 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if (publish_nest_level != 1) { yyerror("Unmatched __end_publish", (yylsp[0])); @@ -4060,19 +4100,19 @@ yyreduce: } publish_nest_level = 0; } -#line 4064 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4104 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 23: -#line 532 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 533 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_scope->set_current_vis(V_published); } -#line 4072 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4112 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 24: -#line 536 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 537 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if (publish_nest_level > 0) { current_scope->set_current_vis(V_published); @@ -4080,258 +4120,328 @@ yyreduce: current_scope->set_current_vis(V_public); } } -#line 4084 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4124 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 25: -#line 544 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 545 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_scope->set_current_vis(V_protected); } -#line 4092 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4132 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 26: -#line 548 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 549 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_scope->set_current_vis(V_private); } -#line 4100 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 27: -#line 552 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - - CPPDeclaration *getter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); - if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); - } - - CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-4].u.identifier), getter->as_function_group(), NULL, current_scope, (yylsp[-6]).file); - current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-6])); -} -#line 4115 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 28: -#line 563 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - CPPDeclaration *getter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); - if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); - - } else { - CPPDeclaration *setter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); - CPPFunctionGroup *setter_func = NULL; - - if (setter == (CPPDeclaration *)NULL || setter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid setter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); - } else { - setter_func = setter->as_function_group(); - } - - CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-6].u.identifier), getter->as_function_group(), - setter_func, current_scope, (yylsp[-8]).file); - current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-8])); - } -} #line 4140 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 29: -#line 584 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 27: +#line 553 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + CPPDeclaration *getter = (yyvsp[-3].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-3].u.identifier)->get_fully_scoped_name(), (yylsp[-3])); + } else { + CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-5].u.identifier), CPPMakeProperty::T_normal, current_scope, (yylsp[-7]).file); + make_property->_get_function = getter->as_function_group(); + + if ((yyvsp[-2].u.identifier) != nullptr) { + CPPDeclaration *setter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + if (setter == nullptr || setter->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("Reference to non-existent or invalid setter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); + } else { + make_property->_set_function = setter->as_function_group(); + } + } + + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-7])); + } +} +#line 4165 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 28: +#line 574 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPDeclaration *getter = (yyvsp[-6].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); - if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { + if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-6].u.identifier)->get_fully_scoped_name(), (yylsp[-6])); } else { - CPPDeclaration *setter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); - CPPFunctionGroup *setter_func = NULL; + CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-8].u.identifier), CPPMakeProperty::T_normal, current_scope, (yylsp[-10]).file); + make_property->_get_function = getter->as_function_group(); - if (setter == (CPPDeclaration *)NULL || setter->get_subtype() != CPPDeclaration::ST_function_group) { + CPPDeclaration *setter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + if (setter == nullptr || setter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid setter: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); } else { - setter_func = setter->as_function_group(); + make_property->_set_function = setter->as_function_group(); } CPPDeclaration *deleter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); - if (deleter == (CPPDeclaration *)NULL || deleter->get_subtype() != CPPDeclaration::ST_function_group) { + if (deleter == nullptr || deleter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid delete method: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); - deleter = NULL; - } - - CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-8].u.identifier), getter->as_function_group(), - setter_func, current_scope, (yylsp[-10]).file); - if (deleter) { + } else { make_property->_del_function = deleter->as_function_group(); } + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-10])); } } -#line 4174 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4196 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 30: -#line 614 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 29: +#line 601 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPDeclaration *length_getter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); - if (length_getter == (CPPDeclaration *)NULL || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { + if (length_getter == nullptr || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid length method: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); - length_getter = NULL; + length_getter = nullptr; } CPPDeclaration *getter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); - if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { + if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); + getter = nullptr; } - CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-6].u.identifier), getter->as_function_group(), NULL, current_scope, (yylsp[-8]).file); - make_property->_length_function = length_getter->as_function_group(); - current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-8])); + if (getter != nullptr && length_getter != nullptr) { + CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-6].u.identifier), CPPMakeProperty::T_sequence, current_scope, (yylsp[-8]).file); + make_property->_get_function = getter->as_function_group(); + make_property->_length_function = length_getter->as_function_group(); + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-8])); + } } -#line 4195 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4221 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 31: -#line 631 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 30: +#line 622 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPDeclaration *length_getter = (yyvsp[-6].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); - if (length_getter == (CPPDeclaration *)NULL || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { + if (length_getter == nullptr || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid length method: " + (yyvsp[-6].u.identifier)->get_fully_scoped_name(), (yylsp[-6])); - length_getter = NULL; + length_getter = nullptr; } CPPDeclaration *getter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); - if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { + if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); + getter = nullptr; + } + + if (getter != nullptr && length_getter != nullptr) { + CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-8].u.identifier), CPPMakeProperty::T_sequence, current_scope, (yylsp[-10]).file); + make_property->_get_function = getter->as_function_group(); + make_property->_length_function = length_getter->as_function_group(); - } else { CPPDeclaration *setter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); - CPPFunctionGroup *setter_func = NULL; - - if (setter == (CPPDeclaration *)NULL || setter->get_subtype() != CPPDeclaration::ST_function_group) { + if (setter == nullptr || setter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid setter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); } else { - setter_func = setter->as_function_group(); + make_property->_set_function = setter->as_function_group(); } - CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-8].u.identifier), getter->as_function_group(), - setter_func, current_scope, (yylsp[-10]).file); - make_property->_length_function = length_getter->as_function_group(); current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-10])); } } -#line 4227 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4254 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 32: -#line 659 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 31: +#line 651 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPDeclaration *length_getter = (yyvsp[-8].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); - if (length_getter == (CPPDeclaration *)NULL || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { + if (length_getter == nullptr || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid length method: " + (yyvsp[-8].u.identifier)->get_fully_scoped_name(), (yylsp[-8])); length_getter = NULL; } CPPDeclaration *getter = (yyvsp[-6].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); - if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { + if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-6].u.identifier)->get_fully_scoped_name(), (yylsp[-6])); + getter = nullptr; + } + + if (getter != nullptr && length_getter != nullptr) { + CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-10].u.identifier), CPPMakeProperty::T_sequence, current_scope, (yylsp[-12]).file); + make_property->_get_function = getter->as_function_group(); + make_property->_length_function = length_getter->as_function_group(); - } else { CPPDeclaration *setter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); - CPPFunctionGroup *setter_func = NULL; - - if (setter == (CPPDeclaration *)NULL || setter->get_subtype() != CPPDeclaration::ST_function_group) { + if (setter == nullptr || setter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid setter: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); } else { - setter_func = setter->as_function_group(); + make_property->_set_function = setter->as_function_group(); } CPPDeclaration *deleter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); - if (deleter == (CPPDeclaration *)NULL || deleter->get_subtype() != CPPDeclaration::ST_function_group) { + if (deleter == nullptr || deleter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid delete method: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); - deleter = NULL; - } - - CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-10].u.identifier), getter->as_function_group(), - setter_func, current_scope, (yylsp[-12]).file); - make_property->_length_function = length_getter->as_function_group(); - if (deleter) { + } else { make_property->_del_function = deleter->as_function_group(); } + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-12])); } } -#line 4268 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 33: -#line 696 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - CPPDeclaration *hasser = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); - if (hasser == (CPPDeclaration *)NULL || hasser->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid has-function: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); - } - - CPPDeclaration *getter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); - if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); - } - - if (hasser && getter) { - CPPMakeProperty *make_property; - make_property = new CPPMakeProperty((yyvsp[-6].u.identifier), - hasser->as_function_group(), - getter->as_function_group(), - NULL, NULL, - current_scope, (yylsp[-8]).file); - current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-8])); - } -} #line 4294 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 34: -#line 718 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 32: +#line 687 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPDeclaration *hasser = (yyvsp[-8].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); - if (hasser == (CPPDeclaration *)NULL || hasser->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid has-function: " + (yyvsp[-8].u.identifier)->get_fully_scoped_name(), (yylsp[-8])); - } + CPPDeclaration *getter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("reference to non-existent or invalid item getter method: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); - CPPDeclaration *getter = (yyvsp[-6].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); - if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-6].u.identifier)->get_fully_scoped_name(), (yylsp[-6])); - } - - CPPDeclaration *setter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); - if (setter == (CPPDeclaration *)NULL || setter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid setter: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); - } - - CPPDeclaration *clearer = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); - if (clearer == (CPPDeclaration *)NULL || clearer->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid clear-function: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); - } - - if (hasser && getter && setter && clearer) { - CPPMakeProperty *make_property; - make_property = new CPPMakeProperty((yyvsp[-10].u.identifier), - hasser->as_function_group(), - getter->as_function_group(), - setter->as_function_group(), - clearer->as_function_group(), - current_scope, (yylsp[-12]).file); - current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-12])); + } else { + CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-4].u.identifier), CPPMakeProperty::T_mapping, current_scope, (yylsp[-6]).file); + make_property->_get_function = getter->as_function_group(); + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-6])); } } -#line 4331 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4310 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 33: +#line 699 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + CPPDeclaration *getter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); + + } else { + CPPMakeProperty *make_property; + make_property = new CPPMakeProperty((yyvsp[-6].u.identifier), CPPMakeProperty::T_mapping, current_scope, (yylsp[-8]).file); + make_property->_get_function = getter->as_function_group(); + + CPPDeclaration *hasser = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + if (hasser == nullptr || hasser->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("reference to non-existent or invalid has/find method: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); + } else { + make_property->_has_function = hasser->as_function_group(); + } + + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-8])); + } +} +#line 4335 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 34: +#line 720 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + CPPDeclaration *getter = (yyvsp[-5].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-5].u.identifier)->get_fully_scoped_name(), (yylsp[-5])); + + } else { + CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-9].u.identifier), CPPMakeProperty::T_mapping, current_scope, (yylsp[-11]).file); + make_property->_get_function = getter->as_function_group(); + + CPPDeclaration *hasser = (yyvsp[-7].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + if (hasser == nullptr || hasser->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("reference to non-existent or invalid has/find method: " + (yyvsp[-7].u.identifier)->get_fully_scoped_name(), (yylsp[-7])); + } else { + make_property->_has_function = hasser->as_function_group(); + } + + CPPDeclaration *setter = (yyvsp[-3].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + if (setter == nullptr || setter->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("Reference to non-existent or invalid setter: " + (yyvsp[-3].u.identifier)->get_fully_scoped_name(), (yylsp[-3])); + } else { + make_property->_set_function = setter->as_function_group(); + } + + if ((yyvsp[-2].u.identifier) != nullptr) { + CPPDeclaration *deleter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + if (deleter == nullptr || deleter->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("reference to non-existent or invalid delete method: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); + } else { + make_property->_del_function = deleter->as_function_group(); + } + } + + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-11])); + } +} +#line 4375 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 35: -#line 751 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 756 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + CPPDeclaration *getter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); + + } else { + CPPMakeProperty *make_property; + make_property = new CPPMakeProperty((yyvsp[-6].u.identifier), CPPMakeProperty::T_normal, + current_scope, (yylsp[-8]).file); + make_property->_get_function = getter->as_function_group(); + + CPPDeclaration *hasser = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + if (hasser == nullptr || hasser->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("reference to non-existent or invalid has/find method: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); + } else { + make_property->_has_function = hasser->as_function_group(); + } + + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-8])); + } +} +#line 4401 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 36: +#line 778 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + CPPDeclaration *getter = (yyvsp[-6].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-6].u.identifier)->get_fully_scoped_name(), (yylsp[-6])); + + } else { + CPPMakeProperty *make_property; + make_property = new CPPMakeProperty((yyvsp[-10].u.identifier), CPPMakeProperty::T_normal, + current_scope, (yylsp[-12]).file); + make_property->_get_function = getter->as_function_group(); + + CPPDeclaration *hasser = (yyvsp[-8].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + if (hasser == nullptr || hasser->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("reference to non-existent or invalid has/find method: " + (yyvsp[-8].u.identifier)->get_fully_scoped_name(), (yylsp[-8])); + } else { + make_property->_has_function = hasser->as_function_group(); + } + + CPPDeclaration *setter = (yyvsp[-6].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + if (setter == nullptr || setter->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("reference to non-existent or invalid setter: " + (yyvsp[-6].u.identifier)->get_fully_scoped_name(), (yylsp[-6])); + } else { + make_property->_set_function = setter->as_function_group(); + } + + CPPDeclaration *clearer = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + if (clearer == nullptr || clearer->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("reference to non-existent or invalid clear method: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); + } else { + make_property->_clear_function = clearer->as_function_group(); + } + + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-12])); + } +} +#line 4441 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 37: +#line 814 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPDeclaration *length_getter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (length_getter == (CPPDeclaration *)NULL || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { @@ -4353,11 +4463,11 @@ yyreduce: current_scope->add_declaration(make_seq, global_scope, current_lexer, (yylsp[-8])); } } -#line 4357 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4467 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 36: -#line 773 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 38: +#line 836 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPExpression::Result result = (yyvsp[-4].u.expr)->evaluate(); if (result._type == CPPExpression::RT_error) { @@ -4368,11 +4478,11 @@ yyreduce: yywarning("static_assert failed: " + str.str(), (yylsp[-4])); } } -#line 4372 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4482 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 37: -#line 784 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 39: +#line 847 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // This alternative version of static_assert was introduced in C++17. CPPExpression::Result result = (yyvsp[-2].u.expr)->evaluate(); @@ -4382,55 +4492,55 @@ yyreduce: yywarning("static_assert failed", (yylsp[-2])); } } -#line 4386 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4496 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 38: -#line 797 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 40: +#line 860 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPScope *new_scope = new CPPScope(current_scope, CPPNameComponent("temp"), V_public); push_scope(new_scope); } -#line 4396 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4506 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 39: -#line 803 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 41: +#line 866 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { delete current_scope; pop_scope(); } -#line 4405 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4515 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 40: -#line 812 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 42: +#line 875 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.integer) = 0; } -#line 4413 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4523 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 41: -#line 816 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 43: +#line 879 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // This isn't really a storage class, but it helps with parsing. (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_const; } -#line 4422 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4532 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 42: -#line 821 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 44: +#line 884 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_extern; } -#line 4430 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4540 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 43: -#line 825 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 45: +#line 888 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_extern; if ((yyvsp[-1].str) == "C") { @@ -4441,124 +4551,124 @@ yyreduce: yywarning("Ignoring unknown linkage type \"" + (yyvsp[-1].str) + "\"", (yylsp[-1])); } } -#line 4445 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 44: -#line 836 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_static; -} -#line 4453 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 45: -#line 840 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_inline; -} -#line 4461 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4555 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 46: -#line 844 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 899 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_virtual; + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_static; } -#line 4469 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4563 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 47: -#line 848 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 903 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_explicit; + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_inline; } -#line 4477 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4571 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 48: -#line 852 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 907 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_register; + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_virtual; } -#line 4485 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4579 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 49: -#line 856 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 911 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_volatile; + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_explicit; } -#line 4493 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4587 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 50: -#line 860 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 915 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_mutable; + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_register; } -#line 4501 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4595 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 51: -#line 864 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 919 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_constexpr; + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_volatile; } -#line 4509 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4603 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 52: -#line 868 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 923 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_blocking; + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_mutable; } -#line 4517 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4611 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 53: -#line 872 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 927 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_extension; + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_constexpr; } -#line 4525 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4619 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 54: -#line 876 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 931 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_thread_local; + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_blocking; } -#line 4533 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4627 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 55: -#line 880 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 935 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_extension; +} +#line 4635 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 56: +#line 939 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_thread_local; +} +#line 4643 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 57: +#line 943 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // Ignore attribute specifiers for now. (yyval.u.integer) = (yyvsp[0].u.integer); } -#line 4542 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4652 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 56: -#line 885 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 58: +#line 948 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.integer) = (yyvsp[0].u.integer); } -#line 4550 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4660 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 57: -#line 889 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 59: +#line 952 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.integer) = (yyvsp[0].u.integer); } -#line 4558 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4668 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 63: -#line 907 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 65: +#line 970 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // We don't need to push/pop type, because we can't nest // type_like_declaration. @@ -4569,19 +4679,19 @@ yyreduce: } push_storage_class((yyvsp[-1].u.integer)); } -#line 4573 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4683 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 64: -#line 918 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 66: +#line 981 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_storage_class(); } -#line 4581 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4691 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 65: -#line 923 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 67: +#line 986 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // We don't really care about the storage class here. In fact, it's // not actually legal to define a class or struct using a particular @@ -4590,11 +4700,11 @@ yyreduce: current_scope->add_declaration((yyvsp[-1].u.decl), global_scope, current_lexer, (yylsp[-1])); } -#line 4594 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4704 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 66: -#line 932 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 68: +#line 995 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if ((yyvsp[0].u.instance) != (CPPInstance *)NULL) { // Push the scope so that the initializers can make use of things defined @@ -4603,11 +4713,11 @@ yyreduce: (yyvsp[0].u.instance)->_storage_class |= (current_storage_class | (yyvsp[-1].u.integer)); } } -#line 4607 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4717 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 67: -#line 941 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 69: +#line 1004 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if ((yyvsp[-2].u.instance) != (CPPInstance *)NULL) { pop_scope(); @@ -4615,11 +4725,11 @@ yyreduce: (yyvsp[-2].u.instance)->set_initializer((yyvsp[0].u.expr)); } } -#line 4619 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4729 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 68: -#line 949 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 70: +#line 1012 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if ((yyvsp[-1].u.instance) != (CPPInstance *)NULL) { (yyvsp[-1].u.instance)->_storage_class |= (current_storage_class | (yyvsp[-2].u.integer)); @@ -4627,11 +4737,11 @@ yyreduce: (yyvsp[-1].u.instance)->set_initializer((yyvsp[0].u.expr)); } } -#line 4631 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4741 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 70: -#line 965 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 72: +#line 1028 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if (current_storage_class & CPPInstance::SC_const) { (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); @@ -4642,11 +4752,11 @@ yyreduce: inst->set_initializer((yyvsp[0].u.expr)); current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[-1])); } -#line 4646 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4756 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 71: -#line 976 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 73: +#line 1039 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if (current_storage_class & CPPInstance::SC_const) { (yyvsp[-3].u.inst_ident)->add_modifier(IIT_const); @@ -4657,11 +4767,11 @@ yyreduce: inst->set_initializer((yyvsp[-2].u.expr)); current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[-3])); } -#line 4661 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4771 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 72: -#line 991 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 74: +#line 1054 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // We don't need to push/pop type, because we can't nest // multiple_var_declarations. @@ -4672,19 +4782,19 @@ yyreduce: } push_storage_class((yyvsp[-1].u.integer)); } -#line 4676 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4786 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 73: -#line 1002 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 75: +#line 1065 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_storage_class(); } -#line 4684 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4794 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 74: -#line 1006 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 76: +#line 1069 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if ((yyvsp[-1].u.instance) != (CPPDeclaration *)NULL) { CPPInstance *inst = (yyvsp[-1].u.instance)->as_instance(); @@ -4696,11 +4806,11 @@ yyreduce: } } } -#line 4700 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4810 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 75: -#line 1021 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 77: +#line 1084 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if (current_storage_class & CPPInstance::SC_const) { (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); @@ -4709,11 +4819,11 @@ yyreduce: CPPTypedefType *typedef_type = new CPPTypedefType(target_type, (yyvsp[-1].u.inst_ident), current_scope, (yylsp[-1]).file); current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, (yylsp[-1])); } -#line 4713 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4823 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 76: -#line 1030 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 78: +#line 1093 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if (current_storage_class & CPPInstance::SC_const) { (yyvsp[-3].u.inst_ident)->add_modifier(IIT_const); @@ -4722,19 +4832,19 @@ yyreduce: CPPTypedefType *typedef_type = new CPPTypedefType(target_type, (yyvsp[-3].u.inst_ident), current_scope, (yylsp[-3]).file); current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, (yylsp[-3])); } -#line 4726 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4836 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 77: -#line 1044 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 79: +#line 1107 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { push_scope((yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope)); } -#line 4734 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4844 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 78: -#line 1048 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 80: +#line 1111 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type; if ((yyvsp[-5].u.identifier)->get_simple_name() == current_scope->get_simple_name() || @@ -4754,19 +4864,19 @@ yyreduce: (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-5]).file); } -#line 4758 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4868 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 79: -#line 1068 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 81: +#line 1131 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { push_scope((yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope)); } -#line 4766 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4876 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 80: -#line 1072 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 82: +#line 1135 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_scope(); CPPType *type; @@ -4784,19 +4894,19 @@ yyreduce: (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-5]).file); } -#line 4788 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4898 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 81: -#line 1095 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 83: +#line 1158 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { push_scope((yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope)); } -#line 4796 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4906 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 82: -#line 1099 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 84: +#line 1162 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_scope(); if ((yyvsp[-5].u.identifier)->is_scoped()) { @@ -4815,19 +4925,19 @@ yyreduce: (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-5]).file); } } -#line 4819 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4929 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 83: -#line 1125 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 85: +#line 1188 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { push_scope((yyvsp[-2].u.inst_ident)->get_scope(current_scope, global_scope)); } -#line 4827 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4937 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 84: -#line 1129 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 86: +#line 1192 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_scope(); CPPType *type = (yyvsp[-10].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); @@ -4841,19 +4951,19 @@ yyreduce: ii->add_func_modifier((yyvsp[-3].u.param_list), (yyvsp[-1].u.integer)); (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-10]).file); } -#line 4845 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4955 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 85: -#line 1143 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 87: +#line 1206 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { push_scope((yyvsp[-2].u.inst_ident)->get_scope(current_scope, global_scope)); } -#line 4853 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4963 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 86: -#line 1147 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 88: +#line 1210 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_scope(); CPPType *type = (yyvsp[-11].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); @@ -4867,21 +4977,21 @@ yyreduce: ii->add_func_modifier((yyvsp[-3].u.param_list), (yyvsp[-1].u.integer)); (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-11]).file); } -#line 4871 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4981 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 87: -#line 1163 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 89: +#line 1226 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if ((yyvsp[-3].u.identifier) != NULL) { push_scope((yyvsp[-3].u.identifier)->get_scope(current_scope, global_scope)); } } -#line 4881 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4991 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 88: -#line 1169 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 90: +#line 1232 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if ((yyvsp[-7].u.identifier) != NULL) { pop_scope(); @@ -4906,21 +5016,21 @@ yyreduce: (yyval.u.instance) = CPPInstance::make_typecast_function (new CPPInstance((yyvsp[-6].u.type), (yyvsp[-5].u.inst_ident), 0, (yylsp[-5]).file), ident, (yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); } -#line 4910 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5020 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 89: -#line 1194 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 91: +#line 1257 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if ((yyvsp[-4].u.identifier) != NULL) { push_scope((yyvsp[-4].u.identifier)->get_scope(current_scope, global_scope)); } } -#line 4920 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5030 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 90: -#line 1200 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 92: +#line 1263 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if ((yyvsp[-8].u.identifier) != NULL) { pop_scope(); @@ -4936,11 +5046,11 @@ yyreduce: (yyval.u.instance) = CPPInstance::make_typecast_function (new CPPInstance((yyvsp[-6].u.type), (yyvsp[-5].u.inst_ident), 0, (yylsp[-5]).file), ident, (yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); } -#line 4940 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5050 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 91: -#line 1220 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 93: +#line 1283 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPDeclaration *decl = (yyvsp[0].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); @@ -4950,606 +5060,606 @@ yyreduce: (yyval.u.instance) = (CPPInstance *)NULL; } } -#line 4954 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 92: -#line 1233 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.integer) = 0; -} -#line 4962 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 93: -#line 1237 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_const_method; -} -#line 4970 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5064 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 94: -#line 1241 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1296 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_volatile_method; + (yyval.u.integer) = 0; } -#line 4978 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5072 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 95: -#line 1245 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1300 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_noexcept; + (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_const_method; } -#line 4986 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5080 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 96: -#line 1258 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1304 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_final; + (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_volatile_method; } -#line 4994 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5088 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 97: -#line 1262 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1308 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_override; + (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_noexcept; } -#line 5002 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5096 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 98: -#line 1266 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1321 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_lvalue_method; + (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_final; } -#line 5010 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5104 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 99: -#line 1270 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1325 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_rvalue_method; + (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_override; } -#line 5018 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5112 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 100: -#line 1274 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1329 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_lvalue_method; +} +#line 5120 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 101: +#line 1333 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_rvalue_method; +} +#line 5128 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 102: +#line 1337 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // Used for lambdas, currently ignored. (yyval.u.integer) = (yyvsp[-1].u.integer); } -#line 5027 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5137 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 101: -#line 1279 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 103: +#line 1342 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // Used for lambdas in C++17, currently ignored. (yyval.u.integer) = (yyvsp[-1].u.integer); } -#line 5036 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 102: -#line 1284 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.integer) = (yyvsp[-3].u.integer); -} -#line 5044 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 103: -#line 1288 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.integer) = (yyvsp[-4].u.integer); -} -#line 5052 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5146 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 104: -#line 1292 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.integer) = (yyvsp[-5].u.integer); -} -#line 5060 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 105: -#line 1296 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1347 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.integer) = (yyvsp[-3].u.integer); } -#line 5068 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5154 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 105: +#line 1351 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.integer) = (yyvsp[-4].u.integer); +} +#line 5162 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 106: -#line 1303 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1355 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "!"; + (yyval.u.integer) = (yyvsp[-5].u.integer); } -#line 5076 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5170 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 107: -#line 1307 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1359 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "~"; + (yyval.u.integer) = (yyvsp[-3].u.integer); } -#line 5084 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5178 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 108: -#line 1311 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1366 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "*"; + (yyval.str) = "!"; } -#line 5092 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5186 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 109: -#line 1315 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1370 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "/"; + (yyval.str) = "~"; } -#line 5100 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5194 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 110: -#line 1319 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1374 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "%"; + (yyval.str) = "*"; } -#line 5108 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5202 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 111: -#line 1323 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1378 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "+"; + (yyval.str) = "/"; } -#line 5116 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5210 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 112: -#line 1327 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1382 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "-"; + (yyval.str) = "%"; } -#line 5124 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5218 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 113: -#line 1331 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1386 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "|"; + (yyval.str) = "+"; } -#line 5132 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5226 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 114: -#line 1335 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1390 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "&"; + (yyval.str) = "-"; } -#line 5140 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5234 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 115: -#line 1339 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1394 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "^"; + (yyval.str) = "|"; } -#line 5148 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5242 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 116: -#line 1343 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1398 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "||"; + (yyval.str) = "&"; } -#line 5156 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5250 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 117: -#line 1347 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1402 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "&&"; + (yyval.str) = "^"; } -#line 5164 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5258 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 118: -#line 1351 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1406 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "=="; + (yyval.str) = "||"; } -#line 5172 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5266 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 119: -#line 1355 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1410 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "!="; + (yyval.str) = "&&"; } -#line 5180 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5274 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 120: -#line 1359 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1414 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "<="; + (yyval.str) = "=="; } -#line 5188 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5282 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 121: -#line 1363 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1418 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = ">="; + (yyval.str) = "!="; } -#line 5196 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5290 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 122: -#line 1367 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1422 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "<"; + (yyval.str) = "<="; } -#line 5204 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5298 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 123: -#line 1371 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1426 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = ">"; + (yyval.str) = ">="; } -#line 5212 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5306 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 124: -#line 1375 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1430 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "<<"; + (yyval.str) = "<"; } -#line 5220 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5314 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 125: -#line 1379 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1434 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = ">>"; + (yyval.str) = ">"; } -#line 5228 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5322 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 126: -#line 1383 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1438 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "="; + (yyval.str) = "<<"; } -#line 5236 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5330 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 127: -#line 1387 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1442 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = ","; + (yyval.str) = ">>"; } -#line 5244 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5338 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 128: -#line 1391 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1446 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "++"; + (yyval.str) = "="; } -#line 5252 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5346 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 129: -#line 1395 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1450 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "--"; + (yyval.str) = ","; } -#line 5260 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5354 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 130: -#line 1399 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1454 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "*="; + (yyval.str) = "++"; } -#line 5268 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5362 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 131: -#line 1403 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1458 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "/="; + (yyval.str) = "--"; } -#line 5276 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5370 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 132: -#line 1407 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1462 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "%="; + (yyval.str) = "*="; } -#line 5284 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5378 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 133: -#line 1411 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1466 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "+="; + (yyval.str) = "/="; } -#line 5292 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5386 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 134: -#line 1415 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1470 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "-="; + (yyval.str) = "%="; } -#line 5300 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5394 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 135: -#line 1419 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1474 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "|="; + (yyval.str) = "+="; } -#line 5308 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5402 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 136: -#line 1423 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1478 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "&="; + (yyval.str) = "-="; } -#line 5316 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5410 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 137: -#line 1427 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1482 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "^="; + (yyval.str) = "|="; } -#line 5324 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5418 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 138: -#line 1431 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1486 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "<<="; + (yyval.str) = "&="; } -#line 5332 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5426 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 139: -#line 1435 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1490 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = ">>="; + (yyval.str) = "^="; } -#line 5340 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5434 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 140: -#line 1439 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1494 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "->"; + (yyval.str) = "<<="; } -#line 5348 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5442 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 141: -#line 1443 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1498 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "[]"; + (yyval.str) = ">>="; } -#line 5356 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5450 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 142: -#line 1447 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1502 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "()"; + (yyval.str) = "->"; } -#line 5364 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5458 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 143: -#line 1451 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1506 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "new"; + (yyval.str) = "[]"; } -#line 5372 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5466 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 144: -#line 1455 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1510 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.str) = "()"; +} +#line 5474 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 145: +#line 1514 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.str) = "new"; +} +#line 5482 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 146: +#line 1518 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "delete"; } -#line 5380 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5490 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 149: -#line 1469 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 151: +#line 1532 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { push_scope(new CPPTemplateScope(current_scope)); } -#line 5388 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5498 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 150: -#line 1473 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 152: +#line 1536 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_scope(); } -#line 5396 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5506 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 155: -#line 1487 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 157: +#line 1550 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPTemplateScope *ts = current_scope->as_template_scope(); assert(ts != NULL); ts->add_template_parameter((yyvsp[0].u.decl)); } -#line 5406 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5516 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 156: -#line 1493 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 158: +#line 1556 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPTemplateScope *ts = current_scope->as_template_scope(); assert(ts != NULL); ts->add_template_parameter((yyvsp[0].u.decl)); } -#line 5416 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 159: -#line 1507 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((CPPIdentifier *)NULL)); -} -#line 5424 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 160: -#line 1511 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((yyvsp[0].u.identifier))); -} -#line 5432 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5526 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 161: -#line 1515 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1570 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((yyvsp[-2].u.identifier), (yyvsp[0].u.type))); + (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((CPPIdentifier *)NULL)); } -#line 5440 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5534 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 162: -#line 1519 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1574 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((yyvsp[0].u.identifier))); +} +#line 5542 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 163: +#line 1578 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((yyvsp[-2].u.identifier), (yyvsp[0].u.type))); +} +#line 5550 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 164: +#line 1582 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPClassTemplateParameter *ctp = new CPPClassTemplateParameter((CPPIdentifier *)NULL); ctp->_packed = true; (yyval.u.decl) = CPPType::new_type(ctp); } -#line 5450 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5560 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 163: -#line 1525 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 165: +#line 1588 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPClassTemplateParameter *ctp = new CPPClassTemplateParameter((yyvsp[0].u.identifier)); ctp->_packed = true; (yyval.u.decl) = CPPType::new_type(ctp); } -#line 5460 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5570 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 164: -#line 1531 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 166: +#line 1594 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPInstance *inst = new CPPInstance((yyvsp[-2].u.type), (yyvsp[-1].u.inst_ident), 0, (yylsp[-1]).file); inst->set_initializer((yyvsp[0].u.expr)); (yyval.u.decl) = inst; } -#line 5470 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5580 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 165: -#line 1537 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 167: +#line 1600 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); CPPInstance *inst = new CPPInstance((yyvsp[-2].u.type), (yyvsp[-1].u.inst_ident), 0, (yylsp[-1]).file); inst->set_initializer((yyvsp[0].u.expr)); (yyval.u.decl) = inst; } -#line 5481 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5591 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 166: -#line 1544 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 168: +#line 1607 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPInstance *inst = new CPPInstance((yyvsp[-1].u.type), (yyvsp[0].u.inst_ident), 0, (yylsp[0]).file); (yyval.u.decl) = inst; } -#line 5490 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5600 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 167: -#line 1549 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 169: +#line 1612 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyvsp[0].u.inst_ident)->add_modifier(IIT_const); CPPInstance *inst = new CPPInstance((yyvsp[-1].u.type), (yyvsp[0].u.inst_ident), 0, (yylsp[0]).file); (yyval.u.decl) = inst; } -#line 5500 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5610 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 168: -#line 1558 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 170: +#line 1621 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); } -#line 5508 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5618 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 169: -#line 1562 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 171: +#line 1625 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { yywarning("Not a type: " + (yyvsp[0].u.identifier)->get_fully_scoped_name(), (yylsp[0])); (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_unknown)); } -#line 5517 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 170: -#line 1567 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.type) = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); - if ((yyval.u.type) == NULL) { - yyerror(string("internal error resolving type ") + (yyvsp[0].u.identifier)->get_fully_scoped_name(), (yylsp[0])); - } - assert((yyval.u.type) != NULL); -} -#line 5529 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 171: -#line 1575 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.type) = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); - if ((yyval.u.type) == NULL) { - yyerror(string("internal error resolving type ") + (yyvsp[0].u.identifier)->get_fully_scoped_name(), (yylsp[0])); - } - assert((yyval.u.type) != NULL); -} -#line 5541 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5627 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 172: -#line 1587 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1630 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); + (yyval.u.type) = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if ((yyval.u.type) == NULL) { + yyerror(string("internal error resolving type ") + (yyvsp[0].u.identifier)->get_fully_scoped_name(), (yylsp[0])); + } + assert((yyval.u.type) != NULL); } -#line 5549 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5639 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 173: -#line 1591 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1638 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.type) = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if ((yyval.u.type) == NULL) { + yyerror(string("internal error resolving type ") + (yyvsp[0].u.identifier)->get_fully_scoped_name(), (yylsp[0])); + } + assert((yyval.u.type) != NULL); +} +#line 5651 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 174: +#line 1650 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); +} +#line 5659 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 175: +#line 1654 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // For an operator function. We implement this simply by building a // ficticious name for the function; in other respects it's just @@ -5563,11 +5673,11 @@ yyreduce: (yyval.u.inst_ident) = new CPPInstanceIdentifier(ident); } -#line 5567 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5677 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 174: -#line 1605 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 176: +#line 1668 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // A C++11 literal operator. if (!(yyvsp[-1].str).empty()) { @@ -5582,83 +5692,83 @@ yyreduce: (yyval.u.inst_ident) = new CPPInstanceIdentifier(ident); } -#line 5586 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5696 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 175: -#line 1620 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 177: +#line 1683 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_const); } -#line 5595 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5705 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 176: -#line 1625 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 178: +#line 1688 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_volatile); } -#line 5604 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5714 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 177: -#line 1630 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 179: +#line 1693 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_pointer); } -#line 5613 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5723 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 178: -#line 1635 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 180: +#line 1698 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_reference); } -#line 5622 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5732 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 179: -#line 1640 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 181: +#line 1703 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } -#line 5631 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5741 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 180: -#line 1645 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 182: +#line 1708 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier)); } -#line 5640 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5750 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 181: -#line 1650 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 183: +#line 1713 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident); (yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr)); } -#line 5649 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5759 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 182: -#line 1655 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 184: +#line 1718 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_paren); } -#line 5658 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5768 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 183: -#line 1660 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 185: +#line 1723 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // Create a scope for this function (in case it is a function) CPPScope *scope = new CPPScope((yyvsp[-1].u.inst_ident)->get_scope(current_scope, global_scope), @@ -5671,11 +5781,11 @@ yyreduce: push_scope(scope); } -#line 5675 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5785 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 184: -#line 1673 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 186: +#line 1736 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_scope(); (yyval.u.inst_ident) = (yyvsp[-5].u.inst_ident); @@ -5689,11 +5799,11 @@ yyreduce: (yyval.u.inst_ident)->add_func_modifier((yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); } } -#line 5693 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5803 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 185: -#line 1691 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 187: +#line 1754 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // This is handled a bit awkwardly right now. Ideally it'd be wrapped // up in the instance_identifier rule, but then more needs to happen in @@ -5703,894 +5813,910 @@ yyreduce: } (yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident); } -#line 5707 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5817 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 186: -#line 1701 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 188: +#line 1764 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // Bitfield definition. (yyvsp[-2].u.inst_ident)->_bit_width = (yyvsp[0].u.integer); (yyval.u.inst_ident) = (yyvsp[-2].u.inst_ident); } -#line 5717 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 187: -#line 1711 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.type) = NULL; -} -#line 5725 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 188: -#line 1715 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); -} -#line 5733 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5827 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 189: -#line 1719 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1774 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.type) = NULL; +} +#line 5835 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 190: +#line 1778 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); +} +#line 5843 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 191: +#line 1782 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyvsp[0].u.inst_ident)->add_modifier(IIT_const); (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); } -#line 5742 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 190: -#line 1728 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.param_list) = new CPPParameterList; -} -#line 5750 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 191: -#line 1732 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.param_list) = new CPPParameterList; - (yyval.u.param_list)->_includes_ellipsis = true; -} -#line 5759 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5852 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 192: -#line 1737 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1791 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.param_list) = (yyvsp[0].u.param_list); + (yyval.u.identifier) = NULL; } -#line 5767 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5860 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 193: -#line 1741 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1795 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.param_list) = (yyvsp[-2].u.param_list); - (yyval.u.param_list)->_includes_ellipsis = true; + (yyval.u.identifier) = (yyvsp[0].u.identifier); } -#line 5776 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5868 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 194: -#line 1746 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1803 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.param_list) = (yyvsp[-1].u.param_list); - (yyval.u.param_list)->_includes_ellipsis = true; + (yyval.u.param_list) = new CPPParameterList; } -#line 5785 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5876 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 195: -#line 1754 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1807 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.param_list) = new CPPParameterList; - (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); + (yyval.u.param_list)->_includes_ellipsis = true; } -#line 5794 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5885 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 196: -#line 1759 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.param_list) = (yyvsp[-2].u.param_list); - (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); -} -#line 5803 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 197: -#line 1767 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.param_list) = new CPPParameterList; -} -#line 5811 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 198: -#line 1771 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.param_list) = new CPPParameterList; - (yyval.u.param_list)->_includes_ellipsis = true; -} -#line 5820 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 199: -#line 1776 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1812 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.param_list) = (yyvsp[0].u.param_list); } -#line 5828 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5893 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 200: -#line 1780 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 197: +#line 1816 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.param_list) = (yyvsp[-2].u.param_list); (yyval.u.param_list)->_includes_ellipsis = true; } -#line 5837 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5902 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 201: -#line 1785 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 198: +#line 1821 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.param_list) = (yyvsp[-1].u.param_list); (yyval.u.param_list)->_includes_ellipsis = true; } -#line 5846 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5911 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 202: -#line 1793 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 199: +#line 1829 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.param_list) = new CPPParameterList; (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); } -#line 5855 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 203: -#line 1798 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.param_list) = (yyvsp[-2].u.param_list); - (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); -} -#line 5864 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 204: -#line 1806 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (CPPExpression *)NULL; -} -#line 5872 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 205: -#line 1810 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (yyvsp[0].u.expr); -} -#line 5880 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 206: -#line 1817 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (CPPExpression *)NULL; -} -#line 5888 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 207: -#line 1821 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (yyvsp[0].u.expr); -} -#line 5896 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 208: -#line 1828 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (CPPExpression *)NULL; -} -#line 5904 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 209: -#line 1832 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (CPPExpression *)NULL; -} -#line 5912 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 210: -#line 1836 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (CPPExpression *)NULL; -} #line 5920 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 211: -#line 1840 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 200: +#line 1834 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::get_default()); + (yyval.u.param_list) = (yyvsp[-2].u.param_list); + (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); } -#line 5928 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5929 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 201: +#line 1842 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.param_list) = new CPPParameterList; +} +#line 5937 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 202: +#line 1846 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.param_list) = new CPPParameterList; + (yyval.u.param_list)->_includes_ellipsis = true; +} +#line 5946 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 203: +#line 1851 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.param_list) = (yyvsp[0].u.param_list); +} +#line 5954 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 204: +#line 1855 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.param_list) = (yyvsp[-2].u.param_list); + (yyval.u.param_list)->_includes_ellipsis = true; +} +#line 5963 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 205: +#line 1860 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.param_list) = (yyvsp[-1].u.param_list); + (yyval.u.param_list)->_includes_ellipsis = true; +} +#line 5972 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 206: +#line 1868 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.param_list) = new CPPParameterList; + (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); +} +#line 5981 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 207: +#line 1873 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.param_list) = (yyvsp[-2].u.param_list); + (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); +} +#line 5990 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 208: +#line 1881 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (CPPExpression *)NULL; +} +#line 5998 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 209: +#line 1885 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[0].u.expr); +} +#line 6006 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 210: +#line 1892 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (CPPExpression *)NULL; +} +#line 6014 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 211: +#line 1896 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[0].u.expr); +} +#line 6022 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 212: -#line 1844 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1903 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::get_delete()); + (yyval.u.expr) = (CPPExpression *)NULL; } -#line 5936 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6030 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 213: -#line 1851 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1907 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = (CPPExpression *)NULL; } -#line 5944 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6038 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 214: -#line 1855 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1911 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = (CPPExpression *)NULL; } -#line 5952 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6046 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 215: -#line 1859 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (yyvsp[-1].u.expr); -} -#line 5960 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 216: -#line 1863 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1915 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(CPPExpression::get_default()); } -#line 5968 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6054 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 217: -#line 1867 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 216: +#line 1919 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(CPPExpression::get_delete()); } -#line 5976 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6062 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 218: -#line 1871 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 217: +#line 1926 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = (CPPExpression *)NULL; } -#line 5984 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6070 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 218: +#line 1930 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (CPPExpression *)NULL; +} +#line 6078 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 219: +#line 1934 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[-1].u.expr); +} +#line 6086 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 220: +#line 1938 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::get_default()); +} +#line 6094 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 221: +#line 1942 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::get_delete()); +} +#line 6102 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 222: -#line 1884 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1946 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { + (yyval.u.expr) = (CPPExpression *)NULL; } -#line 5991 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6110 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 226: -#line 1893 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1959 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.instance) = new CPPInstance((yyvsp[-2].u.type), (yyvsp[-1].u.inst_ident), 0, (yylsp[-1]).file); - (yyval.u.instance)->set_initializer((yyvsp[0].u.expr)); } -#line 6000 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 227: -#line 1898 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); - (yyval.u.instance) = new CPPInstance((yyvsp[-2].u.type), (yyvsp[-1].u.inst_ident), 0, (yylsp[-1]).file); - (yyval.u.instance)->set_initializer((yyvsp[0].u.expr)); -} -#line 6010 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 228: -#line 1904 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); - (yyval.u.instance) = new CPPInstance((yyvsp[-2].u.type), (yyvsp[-1].u.inst_ident), 0, (yylsp[-2]).file); - (yyval.u.instance)->set_initializer((yyvsp[0].u.expr)); -} -#line 6020 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 229: -#line 1910 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.instance) = new CPPInstance((yyvsp[-2].u.type), (yyvsp[-1].u.inst_ident), 0, (yylsp[-1]).file); - (yyval.u.instance)->set_initializer((yyvsp[0].u.expr)); -} -#line 6029 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6117 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 230: -#line 1915 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1968 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.instance) = new CPPInstance((yyvsp[-2].u.type), (yyvsp[-1].u.inst_ident), 0, (yylsp[-1]).file); + (yyval.u.instance)->set_initializer((yyvsp[0].u.expr)); +} +#line 6126 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 231: +#line 1973 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); (yyval.u.instance) = new CPPInstance((yyvsp[-2].u.type), (yyvsp[-1].u.inst_ident), 0, (yylsp[-1]).file); (yyval.u.instance)->set_initializer((yyvsp[0].u.expr)); } -#line 6039 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6136 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 231: -#line 1921 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 232: +#line 1979 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); (yyval.u.instance) = new CPPInstance((yyvsp[-2].u.type), (yyvsp[-1].u.inst_ident), 0, (yylsp[-2]).file); (yyval.u.instance)->set_initializer((yyvsp[0].u.expr)); } -#line 6049 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 232: -#line 1927 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.instance) = (yyvsp[0].u.instance); -} -#line 6057 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6146 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 233: -#line 1931 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1985 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.instance) = (yyvsp[0].u.instance); + (yyval.u.instance) = new CPPInstance((yyvsp[-2].u.type), (yyvsp[-1].u.inst_ident), 0, (yylsp[-1]).file); + (yyval.u.instance)->set_initializer((yyvsp[0].u.expr)); } -#line 6065 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6155 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 234: -#line 1942 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1990 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.instance) = (yyvsp[0].u.instance); + (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); + (yyval.u.instance) = new CPPInstance((yyvsp[-2].u.type), (yyvsp[-1].u.inst_ident), 0, (yylsp[-1]).file); + (yyval.u.instance)->set_initializer((yyvsp[0].u.expr)); } -#line 6073 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6165 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 235: -#line 1946 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1996 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); + (yyval.u.instance) = new CPPInstance((yyvsp[-2].u.type), (yyvsp[-1].u.inst_ident), 0, (yylsp[-2]).file); + (yyval.u.instance)->set_initializer((yyvsp[0].u.expr)); +} +#line 6175 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 236: +#line 2002 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.instance) = (yyvsp[0].u.instance); +} +#line 6183 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 237: +#line 2006 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.instance) = (yyvsp[0].u.instance); +} +#line 6191 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 238: +#line 2017 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.instance) = (yyvsp[0].u.instance); +} +#line 6199 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 239: +#line 2021 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_parameter)); (yyval.u.instance) = new CPPInstance(type, "expr"); (yyval.u.instance)->set_initializer((yyvsp[0].u.expr)); } -#line 6084 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 236: -#line 1956 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); -} -#line 6092 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 237: -#line 1960 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); -} -#line 6100 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 238: -#line 1964 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_const); -} -#line 6109 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 239: -#line 1969 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_volatile); -} -#line 6118 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6210 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 240: -#line 1974 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 2031 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_pointer); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); } -#line 6127 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6218 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 241: -#line 1979 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_reference); -} -#line 6136 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 242: -#line 1984 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); -} -#line 6145 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 243: -#line 1989 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier)); -} -#line 6154 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 244: -#line 1994 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident); - (yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr)); -} -#line 6163 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 245: -#line 2002 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); -} -#line 6171 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 246: -#line 2006 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 2035 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); } -#line 6179 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6226 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 247: -#line 2010 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 242: +#line 2039 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_const); } -#line 6188 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6235 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 248: -#line 2015 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 243: +#line 2044 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_volatile); } -#line 6197 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6244 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 249: -#line 2020 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 244: +#line 2049 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_pointer); } -#line 6206 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6253 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 250: -#line 2025 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 245: +#line 2054 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_reference); } -#line 6215 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6262 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 251: -#line 2030 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 246: +#line 2059 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } -#line 6224 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6271 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 252: -#line 2035 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 247: +#line 2064 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier)); } -#line 6233 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6280 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 253: -#line 2040 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 248: +#line 2069 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident); (yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr)); } -#line 6242 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6289 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 254: -#line 2045 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = (yyvsp[-5].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_paren); - (yyval.u.inst_ident)->add_func_modifier((yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); -} -#line 6252 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 255: -#line 2051 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_paren); -} -#line 6261 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 256: -#line 2059 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 249: +#line 2077 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); - (yyval.u.inst_ident)->_packed = true; -} -#line 6270 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 257: -#line 2064 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); - (yyval.u.inst_ident)->_packed = true; -} -#line 6279 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 258: -#line 2069 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_const); -} -#line 6288 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 259: -#line 2074 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_volatile); } #line 6297 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 260: -#line 2079 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 250: +#line 2081 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); +} +#line 6305 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 251: +#line 2085 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_const); +} +#line 6314 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 252: +#line 2090 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_volatile); +} +#line 6323 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 253: +#line 2095 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_pointer); } -#line 6306 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6332 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 261: -#line 2084 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 254: +#line 2100 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_reference); } -#line 6315 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6341 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 262: -#line 2089 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 255: +#line 2105 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } -#line 6324 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6350 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 263: -#line 2094 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 256: +#line 2110 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier)); } -#line 6333 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6359 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 264: -#line 2099 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 257: +#line 2115 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident); (yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr)); } -#line 6342 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6368 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 265: -#line 2104 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 258: +#line 2120 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[-5].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_paren); (yyval.u.inst_ident)->add_func_modifier((yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); } -#line 6352 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6378 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 266: -#line 2110 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 259: +#line 2126 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_paren); } -#line 6361 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 267: -#line 2118 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); -} -#line 6369 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 268: -#line 2122 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); - (yyval.u.inst_ident)->_packed = true; -} -#line 6378 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 269: -#line 2127 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); - (yyval.u.inst_ident)->_packed = true; -} #line 6387 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 270: -#line 2132 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 260: +#line 2134 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_const); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); + (yyval.u.inst_ident)->_packed = true; } #line 6396 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 271: -#line 2137 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_volatile); -} -#line 6405 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 272: -#line 2142 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_pointer); -} -#line 6414 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 273: -#line 2147 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_reference); -} -#line 6423 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 274: -#line 2152 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); -} -#line 6432 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 275: -#line 2157 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier)); -} -#line 6441 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 276: -#line 2162 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident); - (yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr)); -} -#line 6450 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 277: -#line 2170 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); -} -#line 6458 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 278: -#line 2174 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); - (yyval.u.inst_ident)->_packed = true; -} -#line 6467 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 279: -#line 2179 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 261: +#line 2139 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); (yyval.u.inst_ident)->_packed = true; } -#line 6476 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6405 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 280: -#line 2184 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 262: +#line 2144 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_const); } -#line 6485 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6414 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 281: -#line 2189 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 263: +#line 2149 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_volatile); } -#line 6494 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6423 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 282: -#line 2194 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 264: +#line 2154 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_pointer); } -#line 6503 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6432 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 283: -#line 2199 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 265: +#line 2159 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_reference); } -#line 6512 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6441 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 284: -#line 2204 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 266: +#line 2164 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } -#line 6521 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6450 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 285: -#line 2209 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 267: +#line 2169 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier)); } -#line 6530 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6459 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 286: -#line 2214 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 268: +#line 2174 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident); (yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr)); } -#line 6539 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6468 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 269: +#line 2179 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = (yyvsp[-5].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_paren); + (yyval.u.inst_ident)->add_func_modifier((yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); +} +#line 6478 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 270: +#line 2185 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_paren); +} +#line 6487 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 271: +#line 2193 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); +} +#line 6495 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 272: +#line 2197 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); + (yyval.u.inst_ident)->_packed = true; +} +#line 6504 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 273: +#line 2202 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); + (yyval.u.inst_ident)->_packed = true; +} +#line 6513 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 274: +#line 2207 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_const); +} +#line 6522 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 275: +#line 2212 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_volatile); +} +#line 6531 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 276: +#line 2217 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_pointer); +} +#line 6540 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 277: +#line 2222 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_reference); +} +#line 6549 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 278: +#line 2227 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); +} +#line 6558 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 279: +#line 2232 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier)); +} +#line 6567 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 280: +#line 2237 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident); + (yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr)); +} +#line 6576 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 281: +#line 2245 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); +} +#line 6584 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 282: +#line 2249 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); + (yyval.u.inst_ident)->_packed = true; +} +#line 6593 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 283: +#line 2254 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); + (yyval.u.inst_ident)->_packed = true; +} +#line 6602 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 284: +#line 2259 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_const); +} +#line 6611 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 285: +#line 2264 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_volatile); +} +#line 6620 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 286: +#line 2269 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_pointer); +} +#line 6629 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 287: -#line 2219 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 2274 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_reference); +} +#line 6638 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 288: +#line 2279 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); +} +#line 6647 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 289: +#line 2284 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier)); +} +#line 6656 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 290: +#line 2289 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident); + (yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr)); +} +#line 6665 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 291: +#line 2294 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); (yyval.u.inst_ident)->add_modifier(IIT_paren); (yyval.u.inst_ident)->add_func_modifier((yyvsp[-3].u.param_list), (yyvsp[-1].u.integer), (yyvsp[0].u.type)); } -#line 6549 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6675 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 288: -#line 2225 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 292: +#line 2300 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[-6].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_pointer); (yyval.u.inst_ident)->add_modifier(IIT_paren); (yyval.u.inst_ident)->add_func_modifier((yyvsp[-3].u.param_list), (yyvsp[-1].u.integer), (yyvsp[0].u.type)); } -#line 6560 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6686 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 289: -#line 2232 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 293: +#line 2307 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[-6].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_reference); (yyval.u.inst_ident)->add_modifier(IIT_paren); (yyval.u.inst_ident)->add_func_modifier((yyvsp[-3].u.param_list), (yyvsp[-1].u.integer), (yyvsp[0].u.type)); } -#line 6571 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6697 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 290: -#line 2239 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 294: +#line 2314 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = (yyvsp[-6].u.inst_ident); (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); (yyval.u.inst_ident)->add_modifier(IIT_paren); (yyval.u.inst_ident)->add_func_modifier((yyvsp[-3].u.param_list), (yyvsp[-1].u.integer), (yyvsp[0].u.type)); } -#line 6582 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6708 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 291: -#line 2249 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 295: +#line 2324 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); } -#line 6590 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6716 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 292: -#line 2253 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 296: +#line 2328 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if ((yyval.u.type) == NULL) { @@ -6598,43 +6724,43 @@ yyreduce: } assert((yyval.u.type) != NULL); } -#line 6602 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 293: -#line 2261 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); -} -#line 6610 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 294: -#line 2265 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.type) = CPPType::new_type((yyvsp[0].u.struct_type)); -} -#line 6618 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 295: -#line 2269 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.type) = CPPType::new_type((yyvsp[0].u.struct_type)); -} -#line 6626 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 296: -#line 2273 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.type) = CPPType::new_type((yyvsp[0].u.enum_type)); -} -#line 6634 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6728 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 297: -#line 2277 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 2336 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); +} +#line 6736 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 298: +#line 2340 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.type) = CPPType::new_type((yyvsp[0].u.struct_type)); +} +#line 6744 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 299: +#line 2344 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.type) = CPPType::new_type((yyvsp[0].u.struct_type)); +} +#line 6752 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 300: +#line 2348 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.type) = CPPType::new_type((yyvsp[0].u.enum_type)); +} +#line 6760 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 301: +#line 2352 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != NULL) { @@ -6650,11 +6776,11 @@ yyreduce: (yyval.u.type) = et; } } -#line 6654 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6780 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 298: -#line 2293 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 302: +#line 2368 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type = (yyvsp[-2].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != NULL) { @@ -6670,11 +6796,11 @@ yyreduce: (yyval.u.type) = et; } } -#line 6674 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6800 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 299: -#line 2309 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 303: +#line 2384 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = (yyvsp[-1].u.expr)->determine_type(); if ((yyval.u.type) == (CPPType *)NULL) { @@ -6683,19 +6809,19 @@ yyreduce: yyerror("could not determine type of " + str.str(), (yylsp[-1])); } } -#line 6687 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6813 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 300: -#line 2318 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 304: +#line 2393 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } -#line 6695 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6821 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 301: -#line 2322 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 305: +#line 2397 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPEnumType *enum_type = (yyvsp[-1].u.type)->as_enum_type(); if (enum_type == NULL) { @@ -6705,19 +6831,19 @@ yyreduce: (yyval.u.type) = enum_type->get_underlying_type(); } } -#line 6709 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6835 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 302: -#line 2332 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 306: +#line 2407 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } -#line 6717 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6843 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 303: -#line 2339 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 307: +#line 2414 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if ((yyval.u.type) == NULL) { @@ -6725,19 +6851,19 @@ yyreduce: } assert((yyval.u.type) != NULL); } -#line 6729 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6855 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 304: -#line 2350 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 308: +#line 2425 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.decl) = CPPType::new_type((yyvsp[0].u.simple_type)); } -#line 6737 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6863 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 305: -#line 2354 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 309: +#line 2429 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.decl) = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if ((yyval.u.decl) == NULL) { @@ -6745,43 +6871,43 @@ yyreduce: } assert((yyval.u.decl) != NULL); } -#line 6749 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 306: -#line 2362 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.decl) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); -} -#line 6757 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 307: -#line 2366 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.decl) = CPPType::new_type((yyvsp[0].u.struct_type)); -} -#line 6765 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 308: -#line 2370 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.decl) = new CPPTypeDeclaration(CPPType::new_type((yyvsp[0].u.struct_type))); -} -#line 6773 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 309: -#line 2374 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.decl) = new CPPTypeDeclaration(CPPType::new_type((yyvsp[0].u.enum_type))); -} -#line 6781 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6875 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 310: -#line 2378 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 2437 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.decl) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); +} +#line 6883 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 311: +#line 2441 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.decl) = CPPType::new_type((yyvsp[0].u.struct_type)); +} +#line 6891 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 312: +#line 2445 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.decl) = new CPPTypeDeclaration(CPPType::new_type((yyvsp[0].u.struct_type))); +} +#line 6899 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 313: +#line 2449 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.decl) = new CPPTypeDeclaration(CPPType::new_type((yyvsp[0].u.enum_type))); +} +#line 6907 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 314: +#line 2453 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != NULL) { @@ -6797,11 +6923,11 @@ yyreduce: (yyval.u.decl) = et; } } -#line 6801 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6927 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 311: -#line 2394 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 315: +#line 2469 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type = (yyvsp[-2].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != NULL) { @@ -6817,11 +6943,11 @@ yyreduce: (yyval.u.decl) = et; } } -#line 6821 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6947 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 312: -#line 2410 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 316: +#line 2485 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { yywarning(string("C++ does not permit forward declaration of untyped enum ") + (yyvsp[0].u.identifier)->get_fully_scoped_name(), (yylsp[-1])); @@ -6839,11 +6965,11 @@ yyreduce: (yyval.u.decl) = et; } } -#line 6843 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6969 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 313: -#line 2428 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 317: +#line 2503 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.decl) = (yyvsp[-1].u.expr)->determine_type(); if ((yyval.u.decl) == (CPPType *)NULL) { @@ -6852,19 +6978,19 @@ yyreduce: yyerror("could not determine type of " + str.str(), (yylsp[-1])); } } -#line 6856 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6982 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 314: -#line 2437 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 318: +#line 2512 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.decl) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } -#line 6864 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6990 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 315: -#line 2441 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 319: +#line 2516 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPEnumType *enum_type = (yyvsp[-1].u.type)->as_enum_type(); if (enum_type == NULL) { @@ -6874,27 +7000,27 @@ yyreduce: (yyval.u.decl) = enum_type->get_underlying_type(); } } -#line 6878 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7004 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 316: -#line 2451 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 320: +#line 2526 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.decl) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } -#line 6886 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7012 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 317: -#line 2458 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 321: +#line 2533 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); } -#line 6894 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7020 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 318: -#line 2462 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 322: +#line 2537 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if ((yyval.u.type) == NULL) { @@ -6902,19 +7028,19 @@ yyreduce: } assert((yyval.u.type) != NULL); } -#line 6906 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7032 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 319: -#line 2470 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 323: +#line 2545 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); } -#line 6914 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7040 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 320: -#line 2474 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 324: +#line 2549 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != NULL) { @@ -6930,11 +7056,11 @@ yyreduce: (yyval.u.type) = et; } } -#line 6934 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7060 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 321: -#line 2490 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 325: +#line 2565 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != NULL) { @@ -6950,11 +7076,11 @@ yyreduce: (yyval.u.type) = et; } } -#line 6954 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7080 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 322: -#line 2506 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 326: +#line 2581 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = (yyvsp[-1].u.expr)->determine_type(); if ((yyval.u.type) == (CPPType *)NULL) { @@ -6963,11 +7089,11 @@ yyreduce: yyerror("could not determine type of " + str.str(), (yylsp[-1])); } } -#line 6967 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7093 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 323: -#line 2515 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 327: +#line 2590 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPEnumType *enum_type = (yyvsp[-1].u.type)->as_enum_type(); if (enum_type == NULL) { @@ -6977,71 +7103,71 @@ yyreduce: (yyval.u.type) = enum_type->get_underlying_type(); } } -#line 6981 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7107 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 324: -#line 2525 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 328: +#line 2600 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } -#line 6989 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7115 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 325: -#line 2532 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 329: +#line 2607 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.decl) = (yyvsp[0].u.decl); } -#line 6997 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7123 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 326: -#line 2536 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 330: +#line 2611 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { yyerror(string("unknown type '") + (yyvsp[0].u.identifier)->get_fully_scoped_name() + "'", (yylsp[0])); (yyval.u.decl) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_unknown)); } -#line 7007 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7133 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 327: -#line 2544 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 331: +#line 2619 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); } -#line 7015 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7141 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 328: -#line 2548 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 332: +#line 2623 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyvsp[0].u.inst_ident)->add_modifier(IIT_const); (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); } -#line 7024 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7150 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 329: -#line 2553 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 333: +#line 2628 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); } -#line 7032 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7158 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 330: -#line 2557 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 334: +#line 2632 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyvsp[0].u.inst_ident)->add_modifier(IIT_const); (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); } -#line 7041 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7167 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 335: -#line 2572 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 339: +#line 2647 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPVisibility starting_vis = ((yyvsp[-2].u.extension_enum) == CPPExtensionType::T_class) ? V_private : V_public; @@ -7055,22 +7181,22 @@ yyreduce: push_scope(new_scope); push_struct(st); } -#line 7059 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7185 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 336: -#line 2586 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 340: +#line 2661 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.struct_type) = current_struct; current_struct->_incomplete = false; pop_struct(); pop_scope(); } -#line 7070 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7196 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 337: -#line 2596 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 341: +#line 2671 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPVisibility starting_vis = ((yyvsp[-2].u.extension_enum) == CPPExtensionType::T_class) ? V_private : V_public; @@ -7090,253 +7216,253 @@ yyreduce: push_scope(new_scope); push_struct(st); } -#line 7094 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7220 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 338: -#line 2616 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 342: +#line 2691 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.struct_type) = current_struct; current_struct->_incomplete = false; pop_struct(); pop_scope(); } -#line 7105 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7231 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 340: -#line 2627 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 344: +#line 2702 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_struct->_final = true; } -#line 7113 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 345: -#line 2644 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - current_struct->append_derivation((yyvsp[0].u.type), V_unknown, false); -} -#line 7121 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 346: -#line 2648 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - current_struct->append_derivation((yyvsp[0].u.type), V_public, false); -} -#line 7129 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 347: -#line 2652 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - current_struct->append_derivation((yyvsp[0].u.type), V_protected, false); -} -#line 7137 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 348: -#line 2656 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - current_struct->append_derivation((yyvsp[0].u.type), V_private, false); -} -#line 7145 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7239 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 349: -#line 2660 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 2719 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - current_struct->append_derivation((yyvsp[0].u.type), V_public, true); + current_struct->append_derivation((yyvsp[0].u.type), V_unknown, false); } -#line 7153 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7247 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 350: -#line 2664 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 2723 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - current_struct->append_derivation((yyvsp[0].u.type), V_protected, true); + current_struct->append_derivation((yyvsp[0].u.type), V_public, false); } -#line 7161 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7255 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 351: -#line 2668 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 2727 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - current_struct->append_derivation((yyvsp[0].u.type), V_private, true); + current_struct->append_derivation((yyvsp[0].u.type), V_protected, false); } -#line 7169 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7263 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 352: -#line 2672 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 2731 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - current_struct->append_derivation((yyvsp[0].u.type), V_public, true); + current_struct->append_derivation((yyvsp[0].u.type), V_private, false); } -#line 7177 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7271 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 353: -#line 2676 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 2735 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - current_struct->append_derivation((yyvsp[0].u.type), V_protected, true); -} -#line 7185 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 354: -#line 2680 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - current_struct->append_derivation((yyvsp[0].u.type), V_private, true); -} -#line 7193 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 355: -#line 2687 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.enum_type) = current_enum; - current_enum = NULL; -} -#line 7202 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 356: -#line 2695 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - current_enum = new CPPEnumType((yyvsp[-2].u.extension_enum), NULL, (yyvsp[0].u.type), current_scope, NULL, (yylsp[-2]).file); -} -#line 7210 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 357: -#line 2699 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - current_enum = new CPPEnumType((yyvsp[0].u.extension_enum), NULL, current_scope, NULL, (yylsp[0]).file); -} -#line 7218 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 358: -#line 2703 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - CPPScope *new_scope = new CPPScope(current_scope, (yyvsp[-2].u.identifier)->_names.back(), V_public); - current_enum = new CPPEnumType((yyvsp[-3].u.extension_enum), (yyvsp[-2].u.identifier), (yyvsp[0].u.type), current_scope, new_scope, (yylsp[-3]).file); -} -#line 7227 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 359: -#line 2708 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - CPPScope *new_scope = new CPPScope(current_scope, (yyvsp[0].u.identifier)->_names.back(), V_public); - current_enum = new CPPEnumType((yyvsp[-1].u.extension_enum), (yyvsp[0].u.identifier), current_scope, new_scope, (yylsp[-1]).file); -} -#line 7236 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 360: -#line 2716 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); -} -#line 7244 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 361: -#line 2720 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.type) = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); -} -#line 7252 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 363: -#line 2728 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - assert(current_enum != NULL); - current_enum->add_element((yyvsp[-1].u.identifier)->get_simple_name(), NULL, current_lexer, (yylsp[-1])); -} -#line 7261 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 364: -#line 2733 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - assert(current_enum != NULL); - current_enum->add_element((yyvsp[-3].u.identifier)->get_simple_name(), (yyvsp[-1].u.expr), current_lexer, (yylsp[-3])); -} -#line 7270 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 366: -#line 2741 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - assert(current_enum != NULL); - current_enum->add_element((yyvsp[0].u.identifier)->get_simple_name(), NULL, current_lexer, (yylsp[0])); + current_struct->append_derivation((yyvsp[0].u.type), V_public, true); } #line 7279 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 367: -#line 2746 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 354: +#line 2739 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - assert(current_enum != NULL); - current_enum->add_element((yyvsp[-2].u.identifier)->get_simple_name(), (yyvsp[0].u.expr), current_lexer, (yylsp[-2])); + current_struct->append_derivation((yyvsp[0].u.type), V_protected, true); } -#line 7288 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7287 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 368: -#line 2754 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 355: +#line 2743 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.extension_enum) = CPPExtensionType::T_enum; + current_struct->append_derivation((yyvsp[0].u.type), V_private, true); } -#line 7296 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7295 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 369: -#line 2758 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 356: +#line 2747 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.extension_enum) = CPPExtensionType::T_enum_class; + current_struct->append_derivation((yyvsp[0].u.type), V_public, true); } -#line 7304 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7303 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 370: + case 357: +#line 2751 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + current_struct->append_derivation((yyvsp[0].u.type), V_protected, true); +} +#line 7311 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 358: +#line 2755 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + current_struct->append_derivation((yyvsp[0].u.type), V_private, true); +} +#line 7319 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 359: #line 2762 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.extension_enum) = CPPExtensionType::T_enum_struct; -} -#line 7312 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 371: -#line 2769 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.extension_enum) = CPPExtensionType::T_class; -} -#line 7320 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 372: -#line 2773 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.extension_enum) = CPPExtensionType::T_struct; + (yyval.u.enum_type) = current_enum; + current_enum = NULL; } #line 7328 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 373: -#line 2777 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 360: +#line 2770 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.extension_enum) = CPPExtensionType::T_union; + current_enum = new CPPEnumType((yyvsp[-2].u.extension_enum), NULL, (yyvsp[0].u.type), current_scope, NULL, (yylsp[-2]).file); } #line 7336 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; + case 361: +#line 2774 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + current_enum = new CPPEnumType((yyvsp[0].u.extension_enum), NULL, current_scope, NULL, (yylsp[0]).file); +} +#line 7344 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 362: +#line 2778 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + CPPScope *new_scope = new CPPScope(current_scope, (yyvsp[-2].u.identifier)->_names.back(), V_public); + current_enum = new CPPEnumType((yyvsp[-3].u.extension_enum), (yyvsp[-2].u.identifier), (yyvsp[0].u.type), current_scope, new_scope, (yylsp[-3]).file); +} +#line 7353 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 363: +#line 2783 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + CPPScope *new_scope = new CPPScope(current_scope, (yyvsp[0].u.identifier)->_names.back(), V_public); + current_enum = new CPPEnumType((yyvsp[-1].u.extension_enum), (yyvsp[0].u.identifier), current_scope, new_scope, (yylsp[-1]).file); +} +#line 7362 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 364: +#line 2791 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); +} +#line 7370 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 365: +#line 2795 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.type) = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); +} +#line 7378 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 367: +#line 2803 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + assert(current_enum != NULL); + current_enum->add_element((yyvsp[-1].u.identifier)->get_simple_name(), NULL, current_lexer, (yylsp[-1])); +} +#line 7387 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 368: +#line 2808 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + assert(current_enum != NULL); + current_enum->add_element((yyvsp[-3].u.identifier)->get_simple_name(), (yyvsp[-1].u.expr), current_lexer, (yylsp[-3])); +} +#line 7396 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 370: +#line 2816 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + assert(current_enum != NULL); + current_enum->add_element((yyvsp[0].u.identifier)->get_simple_name(), NULL, current_lexer, (yylsp[0])); +} +#line 7405 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 371: +#line 2821 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + assert(current_enum != NULL); + current_enum->add_element((yyvsp[-2].u.identifier)->get_simple_name(), (yyvsp[0].u.expr), current_lexer, (yylsp[-2])); +} +#line 7414 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 372: +#line 2829 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.extension_enum) = CPPExtensionType::T_enum; +} +#line 7422 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 373: +#line 2833 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.extension_enum) = CPPExtensionType::T_enum_class; +} +#line 7430 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + case 374: -#line 2784 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 2837 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.extension_enum) = CPPExtensionType::T_enum_struct; +} +#line 7438 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 375: +#line 2844 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.extension_enum) = CPPExtensionType::T_class; +} +#line 7446 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 376: +#line 2848 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.extension_enum) = CPPExtensionType::T_struct; +} +#line 7454 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 377: +#line 2852 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.extension_enum) = CPPExtensionType::T_union; +} +#line 7462 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 378: +#line 2859 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPScope *scope = (yyvsp[-1].u.identifier)->find_scope(current_scope, global_scope, current_lexer); if (scope == NULL) { @@ -7354,19 +7480,19 @@ yyreduce: current_scope->define_namespace(nspace); push_scope(scope); } -#line 7358 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7484 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 375: -#line 2802 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 379: +#line 2877 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_scope(); } -#line 7366 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7492 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 376: -#line 2806 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 380: +#line 2881 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPScope *scope = (yyvsp[-1].u.identifier)->find_scope(current_scope, global_scope, current_lexer); if (scope == NULL) { @@ -7385,143 +7511,143 @@ yyreduce: current_scope->define_namespace(nspace); push_scope(scope); } -#line 7389 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7515 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 377: -#line 2825 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 381: +#line 2900 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_scope(); } -#line 7397 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7523 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 380: -#line 2834 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 384: +#line 2909 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPUsing *using_decl = new CPPUsing((yyvsp[-1].u.identifier), false, (yylsp[-2]).file); current_scope->add_declaration(using_decl, global_scope, current_lexer, (yylsp[-2])); current_scope->add_using(using_decl, global_scope, current_lexer); } -#line 7407 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7533 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 381: -#line 2840 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 385: +#line 2915 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // This is really just an alternative way to declare a typedef. CPPTypedefType *typedef_type = new CPPTypedefType((yyvsp[-1].u.type), (yyvsp[-3].u.identifier), current_scope); typedef_type->_using = true; current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, (yylsp[-4])); } -#line 7418 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7544 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 382: -#line 2847 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 386: +#line 2922 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPUsing *using_decl = new CPPUsing((yyvsp[-1].u.identifier), true, (yylsp[-3]).file); current_scope->add_declaration(using_decl, global_scope, current_lexer, (yylsp[-3])); current_scope->add_using(using_decl, global_scope, current_lexer); } -#line 7428 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 386: -#line 2862 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_bool); -} -#line 7436 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 387: -#line 2866 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char); -} -#line 7444 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 388: -#line 2870 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_wchar_t); -} -#line 7452 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 389: -#line 2874 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char16_t); -} -#line 7460 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7554 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 390: -#line 2878 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 2937 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char32_t); + (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_bool); } -#line 7468 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7562 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 391: -#line 2882 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 2941 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char); +} +#line 7570 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 392: +#line 2945 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_wchar_t); +} +#line 7578 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 393: +#line 2949 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char16_t); +} +#line 7586 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 394: +#line 2953 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char32_t); +} +#line 7594 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 395: +#line 2957 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_short); } -#line 7477 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7603 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 392: -#line 2887 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 396: +#line 2962 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_long); } -#line 7486 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7612 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 393: -#line 2892 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 397: +#line 2967 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_unsigned); } -#line 7495 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7621 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 394: -#line 2897 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 398: +#line 2972 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_signed); } -#line 7504 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7630 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 395: -#line 2902 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 399: +#line 2977 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int); } -#line 7512 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7638 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 396: -#line 2906 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 400: +#line 2981 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = (yyvsp[0].u.simple_type); (yyval.u.simple_type)->_flags |= CPPSimpleType::F_short; } -#line 7521 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7647 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 397: -#line 2911 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 401: +#line 2986 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = (yyvsp[0].u.simple_type); if ((yyval.u.simple_type)->_flags & CPPSimpleType::F_long) { @@ -7530,189 +7656,189 @@ yyreduce: (yyval.u.simple_type)->_flags |= CPPSimpleType::F_long; } } -#line 7534 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7660 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 398: -#line 2920 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 402: +#line 2995 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = (yyvsp[0].u.simple_type); (yyval.u.simple_type)->_flags |= CPPSimpleType::F_unsigned; } -#line 7543 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7669 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 399: -#line 2925 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 403: +#line 3000 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = (yyvsp[0].u.simple_type); (yyval.u.simple_type)->_flags |= CPPSimpleType::F_signed; } -#line 7552 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7678 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 400: -#line 2933 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 404: +#line 3008 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_float); } -#line 7560 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7686 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 401: -#line 2937 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 405: +#line 3012 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_double); } -#line 7568 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7694 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 402: -#line 2941 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 406: +#line 3016 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_double, CPPSimpleType::F_long); } -#line 7577 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7703 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 403: -#line 2949 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 407: +#line 3024 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_void); } -#line 7585 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7711 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 404: -#line 2958 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 408: +#line 3033 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_lexer->_resolve_identifiers = false; } -#line 7593 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7719 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 405: -#line 2962 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 409: +#line 3037 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_lexer->_resolve_identifiers = true; } -#line 7601 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7727 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 513: -#line 3006 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 517: +#line 3081 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { } -#line 7608 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 537: -#line 3015 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (CPPExpression *)NULL; -} -#line 7616 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 538: -#line 3019 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (yyvsp[0].u.expr); -} -#line 7624 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 539: -#line 3026 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (CPPExpression *)NULL; -} -#line 7632 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 540: -#line 3030 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (yyvsp[0].u.expr); -} -#line 7640 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7734 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 541: -#line 3037 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3090 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (yyvsp[0].u.expr); + (yyval.u.expr) = (CPPExpression *)NULL; } -#line 7648 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7742 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 542: -#line 3041 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(',', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7656 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 543: -#line 3048 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3094 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = (yyvsp[0].u.expr); } -#line 7664 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7750 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 543: +#line 3101 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (CPPExpression *)NULL; +} +#line 7758 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 544: -#line 3052 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3105 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-2].u.type), (yyvsp[0].u.expr))); + (yyval.u.expr) = (yyvsp[0].u.expr); } -#line 7672 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7766 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 545: -#line 3056 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3112 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_static_cast)); + (yyval.u.expr) = (yyvsp[0].u.expr); } -#line 7680 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7774 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 546: -#line 3060 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3116 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_dynamic_cast)); + (yyval.u.expr) = new CPPExpression(',', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7688 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7782 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 547: -#line 3064 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3123 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_const_cast)); + (yyval.u.expr) = (yyvsp[0].u.expr); } -#line 7696 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7790 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 548: -#line 3068 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3127 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_reinterpret_cast)); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-2].u.type), (yyvsp[0].u.expr))); } -#line 7704 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7798 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 549: -#line 3072 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3131 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[-1].u.type))); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_static_cast)); } -#line 7712 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7806 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 550: -#line 3076 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3135 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_dynamic_cast)); +} +#line 7814 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 551: +#line 3139 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_const_cast)); +} +#line 7822 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 552: +#line 3143 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_reinterpret_cast)); +} +#line 7830 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 553: +#line 3147 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[-1].u.type))); +} +#line 7838 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 554: +#line 3151 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPDeclaration *arg = (yyvsp[-1].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (arg == (CPPDeclaration *)NULL) { @@ -7724,307 +7850,307 @@ yyreduce: (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func(arg->as_type())); } } -#line 7728 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 551: -#line 3088 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[-1].u.identifier))); -} -#line 7736 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 552: -#line 3092 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[-1].u.type))); -} -#line 7744 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 553: -#line 3096 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr)); -} -#line 7752 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 554: -#line 3100 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr)); -} -#line 7760 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7854 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 555: -#line 3104 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3163 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[-1].u.identifier))); } -#line 7768 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7862 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 556: -#line 3108 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3167 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[-1].u.type))); } -#line 7776 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7870 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 557: -#line 3112 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3171 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr)); } -#line 7784 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7878 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 558: -#line 3116 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3175 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr)); } -#line 7792 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7886 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 559: -#line 3120 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3179 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr)); } -#line 7800 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7894 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 560: -#line 3124 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3183 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr)); } -#line 7808 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7902 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 561: -#line 3128 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3187 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[0].u.expr)); } -#line 7816 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7910 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 562: -#line 3132 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3191 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr)); } -#line 7824 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7918 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 563: -#line 3136 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3195 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7832 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7926 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 564: -#line 3140 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3199 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7840 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7934 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 565: -#line 3144 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3203 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7848 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7942 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 566: -#line 3148 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3207 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7856 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7950 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 567: -#line 3152 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3211 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7864 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7958 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 568: -#line 3156 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3215 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7872 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7966 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 569: -#line 3160 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3219 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7880 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7974 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 570: -#line 3164 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3223 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7888 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7982 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 571: -#line 3168 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3227 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7896 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7990 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 572: -#line 3172 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3231 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7904 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7998 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 573: -#line 3176 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3235 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7912 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8006 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 574: -#line 3180 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3239 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7920 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8014 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 575: -#line 3184 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3243 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('?', (yyvsp[-4].u.expr), (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7928 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8022 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 576: -#line 3188 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3247 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); + (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7936 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8030 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 577: -#line 3192 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3251 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); + (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7944 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8038 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 578: -#line 3196 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3255 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr)); + (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7952 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8046 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 579: -#line 3200 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3259 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('.', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('?', (yyvsp[-4].u.expr), (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7960 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8054 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 580: -#line 3204 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3263 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } -#line 7968 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8062 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 581: -#line 3208 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3267 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (yyvsp[-1].u.expr); + (yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } -#line 7976 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8070 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 582: -#line 3216 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3271 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (yyvsp[0].u.expr); + (yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr)); } -#line 7984 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8078 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 583: -#line 3220 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3275 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-2].u.type), (yyvsp[0].u.expr))); + (yyval.u.expr) = new CPPExpression('.', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7992 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8086 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 584: -#line 3224 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3279 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_static_cast)); + (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8000 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8094 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 585: -#line 3228 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3283 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_dynamic_cast)); + (yyval.u.expr) = (yyvsp[-1].u.expr); } -#line 8008 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8102 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 586: -#line 3232 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3291 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_const_cast)); + (yyval.u.expr) = (yyvsp[0].u.expr); } -#line 8016 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8110 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 587: -#line 3236 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3295 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_reinterpret_cast)); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-2].u.type), (yyvsp[0].u.expr))); } -#line 8024 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8118 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 588: -#line 3240 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3299 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_static_cast)); +} +#line 8126 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 589: +#line 3303 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_dynamic_cast)); +} +#line 8134 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 590: +#line 3307 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_const_cast)); +} +#line 8142 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 591: +#line 3311 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_reinterpret_cast)); +} +#line 8150 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 592: +#line 3315 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // A constructor call. CPPType *type = (yyvsp[-3].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); @@ -8034,11 +8160,11 @@ yyreduce: assert(type != NULL); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } -#line 8038 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8164 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 589: -#line 3250 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 593: +#line 3325 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // Aggregate initialization. CPPType *type = (yyvsp[-3].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); @@ -8048,143 +8174,143 @@ yyreduce: assert(type != NULL); (yyval.u.expr) = new CPPExpression(CPPExpression::aggregate_init_op(type, (yyvsp[-1].u.expr))); } -#line 8052 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8178 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 590: -#line 3260 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 594: +#line 3335 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_int)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } -#line 8062 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8188 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 591: -#line 3266 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 595: +#line 3341 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_char)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } -#line 8072 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8198 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 592: -#line 3272 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 596: +#line 3347 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_wchar_t)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } -#line 8082 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8208 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 593: -#line 3278 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 597: +#line 3353 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_char16_t)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } -#line 8092 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8218 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 594: -#line 3284 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 598: +#line 3359 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_char32_t)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } -#line 8102 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8228 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 595: -#line 3290 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 599: +#line 3365 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_bool)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } -#line 8112 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8238 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 596: -#line 3296 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 600: +#line 3371 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_short)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } -#line 8123 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8249 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 597: -#line 3303 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 601: +#line 3378 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_long)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } -#line 8134 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8260 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 598: -#line 3310 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 602: +#line 3385 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_unsigned)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } -#line 8145 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8271 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 599: -#line 3317 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 603: +#line 3392 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_signed)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } -#line 8156 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8282 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 600: -#line 3324 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 604: +#line 3399 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_float)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } -#line 8166 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8292 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 601: -#line 3330 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 605: +#line 3405 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_double)); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } -#line 8176 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8302 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 602: -#line 3336 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 606: +#line 3411 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[-1].u.type))); } -#line 8184 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8310 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 603: -#line 3340 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 607: +#line 3415 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPDeclaration *arg = (yyvsp[-1].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (arg == (CPPDeclaration *)NULL) { @@ -8196,43 +8322,43 @@ yyreduce: (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func(arg->as_type())); } } -#line 8200 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 604: -#line 3352 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[-1].u.identifier))); -} -#line 8208 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 605: -#line 3356 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[-1].u.type))); -} -#line 8216 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 606: -#line 3360 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[0].u.type))); -} -#line 8224 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 607: -#line 3364 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[-3].u.type), (yyvsp[-1].u.expr))); -} -#line 8232 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8326 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 608: -#line 3368 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3427 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[-1].u.identifier))); +} +#line 8334 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 609: +#line 3431 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[-1].u.type))); +} +#line 8342 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 610: +#line 3435 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[0].u.type))); +} +#line 8350 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 611: +#line 3439 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[-3].u.type), (yyvsp[-1].u.expr))); +} +#line 8358 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 612: +#line 3443 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPIdentifier ident(""); ident.add_name("std"); @@ -8243,11 +8369,11 @@ yyreduce: } (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.type), std_type_info)); } -#line 8247 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8373 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 609: -#line 3379 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 613: +#line 3454 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPIdentifier ident(""); ident.add_name("std"); @@ -8258,564 +8384,564 @@ yyreduce: } (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.expr), std_type_info)); } -#line 8262 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 610: -#line 3390 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr)); -} -#line 8270 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 611: -#line 3394 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr)); -} -#line 8278 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 612: -#line 3398 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr)); -} -#line 8286 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 613: -#line 3402 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr)); -} -#line 8294 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8388 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 614: -#line 3406 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3465 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr)); } -#line 8302 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8396 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 615: -#line 3410 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3469 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr)); } -#line 8310 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8404 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 616: -#line 3414 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3473 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr)); } -#line 8318 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8412 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 617: -#line 3418 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3477 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr)); } -#line 8326 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8420 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 618: -#line 3422 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3481 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[0].u.expr)); } -#line 8334 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8428 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 619: -#line 3426 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3485 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr)); } -#line 8342 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8436 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 620: -#line 3430 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3489 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8350 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8444 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 621: -#line 3434 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3493 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8358 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8452 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 622: -#line 3438 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3497 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8366 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8460 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 623: -#line 3442 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3501 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8374 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8468 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 624: -#line 3446 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3505 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8382 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8476 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 625: -#line 3450 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3509 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8390 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8484 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 626: -#line 3454 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3513 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8398 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8492 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 627: -#line 3458 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3517 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8406 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8500 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 628: -#line 3462 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3521 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8414 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8508 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 629: -#line 3466 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3525 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8422 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8516 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 630: -#line 3470 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3529 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('<', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8430 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8524 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 631: -#line 3474 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3533 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('>', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8438 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8532 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 632: -#line 3478 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3537 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8446 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8540 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 633: -#line 3482 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3541 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8454 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8548 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 634: -#line 3486 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3545 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('?', (yyvsp[-4].u.expr), (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('<', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8462 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8556 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 635: -#line 3490 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3549 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); + (yyval.u.expr) = new CPPExpression('>', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8470 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8564 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 636: -#line 3494 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3553 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); + (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8478 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8572 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 637: -#line 3498 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3557 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr)); + (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8486 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8580 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 638: -#line 3502 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3561 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('.', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('?', (yyvsp[-4].u.expr), (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8494 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8588 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 639: -#line 3506 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3565 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } -#line 8502 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8596 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 640: -#line 3510 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3569 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (yyvsp[-1].u.expr); + (yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } -#line 8510 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8604 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 641: -#line 3517 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3573 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); + (yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr)); } -#line 8518 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8612 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 642: -#line 3521 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3577 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(true); + (yyval.u.expr) = new CPPExpression('.', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8526 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8620 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 643: -#line 3525 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3581 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(false); + (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8534 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8628 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 644: -#line 3529 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3585 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); + (yyval.u.expr) = (yyvsp[-1].u.expr); } -#line 8542 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8636 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 645: -#line 3533 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3592 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression((yyvsp[0].u.real)); + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); } -#line 8550 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8644 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 646: -#line 3537 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3596 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (yyvsp[0].u.expr); + (yyval.u.expr) = new CPPExpression(true); } -#line 8558 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8652 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 647: -#line 3541 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3600 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (yyvsp[0].u.expr); + (yyval.u.expr) = new CPPExpression(false); } -#line 8566 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8660 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 648: -#line 3545 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3604 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression((yyvsp[0].u.identifier), current_scope, global_scope, current_lexer); + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); } -#line 8574 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8668 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 649: -#line 3549 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3608 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.real)); +} +#line 8676 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 650: +#line 3612 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[0].u.expr); +} +#line 8684 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 651: +#line 3616 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[0].u.expr); +} +#line 8692 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 652: +#line 3620 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.identifier), current_scope, global_scope, current_lexer); +} +#line 8700 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 653: +#line 3624 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // A variable named "final". C++11 explicitly permits this. CPPIdentifier *ident = new CPPIdentifier("final", (yylsp[0])); (yyval.u.expr) = new CPPExpression(ident, current_scope, global_scope, current_lexer); } -#line 8584 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8710 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 650: -#line 3555 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 654: +#line 3630 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // A variable named "override". C++11 explicitly permits this. CPPIdentifier *ident = new CPPIdentifier("override", (yylsp[0])); (yyval.u.expr) = new CPPExpression(ident, current_scope, global_scope, current_lexer); } -#line 8594 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8720 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 651: -#line 3561 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 655: +#line 3636 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr()); } -#line 8602 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8728 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 652: -#line 3565 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 656: +#line 3640 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyvsp[-6].u.closure_type)->_flags = (yyvsp[-4].u.integer); (yyvsp[-6].u.closure_type)->_return_type = (yyvsp[-3].u.type); (yyval.u.expr) = new CPPExpression(CPPExpression::lambda((yyvsp[-6].u.closure_type))); } -#line 8612 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8738 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 653: -#line 3571 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 657: +#line 3646 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyvsp[-9].u.closure_type)->_parameters = (yyvsp[-6].u.param_list); (yyvsp[-9].u.closure_type)->_flags = (yyvsp[-4].u.integer); (yyvsp[-9].u.closure_type)->_return_type = (yyvsp[-3].u.type); (yyval.u.expr) = new CPPExpression(CPPExpression::lambda((yyvsp[-9].u.closure_type))); } -#line 8623 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 654: -#line 3578 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_HAS_VIRTUAL_DESTRUCTOR, (yyvsp[-1].u.type))); -} -#line 8631 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 655: -#line 3582 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_ABSTRACT, (yyvsp[-1].u.type))); -} -#line 8639 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 656: -#line 3586 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CLASS, (yyvsp[-3].u.type), (yyvsp[-1].u.type))); -} -#line 8647 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 657: -#line 3590 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CLASS, (yyvsp[-1].u.type))); -} -#line 8655 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8749 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 658: -#line 3594 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3653 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CONSTRUCTIBLE, (yyvsp[-1].u.type))); + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_HAS_VIRTUAL_DESTRUCTOR, (yyvsp[-1].u.type))); } -#line 8663 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8757 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 659: -#line 3598 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3657 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CONSTRUCTIBLE, (yyvsp[-3].u.type), (yyvsp[-1].u.type))); + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_ABSTRACT, (yyvsp[-1].u.type))); } -#line 8671 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8765 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 660: -#line 3602 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3661 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CONVERTIBLE_TO, (yyvsp[-3].u.type), (yyvsp[-1].u.type))); + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CLASS, (yyvsp[-3].u.type), (yyvsp[-1].u.type))); } -#line 8679 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8773 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 661: -#line 3606 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3665 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_DESTRUCTIBLE, (yyvsp[-1].u.type))); + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CLASS, (yyvsp[-1].u.type))); } -#line 8687 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8781 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 662: -#line 3610 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3669 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_EMPTY, (yyvsp[-1].u.type))); + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CONSTRUCTIBLE, (yyvsp[-1].u.type))); } -#line 8695 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8789 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 663: -#line 3614 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3673 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_ENUM, (yyvsp[-1].u.type))); + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CONSTRUCTIBLE, (yyvsp[-3].u.type), (yyvsp[-1].u.type))); } -#line 8703 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8797 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 664: -#line 3618 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3677 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_FINAL, (yyvsp[-1].u.type))); + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CONVERTIBLE_TO, (yyvsp[-3].u.type), (yyvsp[-1].u.type))); } -#line 8711 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8805 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 665: -#line 3622 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3681 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_FUNDAMENTAL, (yyvsp[-1].u.type))); + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_DESTRUCTIBLE, (yyvsp[-1].u.type))); } -#line 8719 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8813 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 666: -#line 3626 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3685 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_POD, (yyvsp[-1].u.type))); + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_EMPTY, (yyvsp[-1].u.type))); } -#line 8727 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8821 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 667: -#line 3630 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3689 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_POLYMORPHIC, (yyvsp[-1].u.type))); + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_ENUM, (yyvsp[-1].u.type))); } -#line 8735 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8829 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 668: -#line 3634 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3693 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_STANDARD_LAYOUT, (yyvsp[-1].u.type))); + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_FINAL, (yyvsp[-1].u.type))); } -#line 8743 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8837 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 669: -#line 3638 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3697 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_TRIVIAL, (yyvsp[-1].u.type))); + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_FUNDAMENTAL, (yyvsp[-1].u.type))); } -#line 8751 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8845 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 670: -#line 3642 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3701 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_UNION, (yyvsp[-1].u.type))); + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_POD, (yyvsp[-1].u.type))); } -#line 8759 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8853 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 671: -#line 3656 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3705 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (yyvsp[0].u.expr); + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_POLYMORPHIC, (yyvsp[-1].u.type))); } -#line 8767 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8861 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 672: -#line 3660 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3709 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-2].u.type), (yyvsp[0].u.expr))); + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_STANDARD_LAYOUT, (yyvsp[-1].u.type))); } -#line 8775 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8869 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 673: -#line 3664 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3713 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_static_cast)); + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_TRIVIAL, (yyvsp[-1].u.type))); } -#line 8783 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8877 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 674: -#line 3668 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3717 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_dynamic_cast)); + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_UNION, (yyvsp[-1].u.type))); } -#line 8791 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8885 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 675: -#line 3672 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3731 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_const_cast)); + (yyval.u.expr) = (yyvsp[0].u.expr); } -#line 8799 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8893 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 676: -#line 3676 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3735 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_reinterpret_cast)); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-2].u.type), (yyvsp[0].u.expr))); } -#line 8807 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8901 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 677: -#line 3680 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3739 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[-1].u.type))); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_static_cast)); } -#line 8815 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8909 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 678: -#line 3684 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3743 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_dynamic_cast)); +} +#line 8917 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 679: +#line 3747 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_const_cast)); +} +#line 8925 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 680: +#line 3751 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_reinterpret_cast)); +} +#line 8933 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 681: +#line 3755 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[-1].u.type))); +} +#line 8941 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 682: +#line 3759 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPDeclaration *arg = (yyvsp[-1].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (arg == (CPPDeclaration *)NULL) { @@ -8827,43 +8953,43 @@ yyreduce: (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func(arg->as_type())); } } -#line 8831 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 679: -#line 3696 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[-1].u.identifier))); -} -#line 8839 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 680: -#line 3700 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[-1].u.type))); -} -#line 8847 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 681: -#line 3704 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[0].u.type))); -} -#line 8855 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 682: -#line 3708 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[-3].u.type), (yyvsp[-1].u.expr))); -} -#line 8863 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8957 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 683: -#line 3712 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3771 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[-1].u.identifier))); +} +#line 8965 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 684: +#line 3775 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[-1].u.type))); +} +#line 8973 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 685: +#line 3779 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[0].u.type))); +} +#line 8981 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 686: +#line 3783 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[-3].u.type), (yyvsp[-1].u.expr))); +} +#line 8989 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 687: +#line 3787 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPIdentifier ident(""); ident.add_name("std"); @@ -8874,11 +9000,11 @@ yyreduce: } (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.type), std_type_info)); } -#line 8878 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9004 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 684: -#line 3723 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 688: +#line 3798 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPIdentifier ident(""); ident.add_name("std"); @@ -8889,409 +9015,409 @@ yyreduce: } (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.expr), std_type_info)); } -#line 8893 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 685: -#line 3734 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr)); -} -#line 8901 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 686: -#line 3738 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr)); -} -#line 8909 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 687: -#line 3742 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr)); -} -#line 8917 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 688: -#line 3746 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr)); -} -#line 8925 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9019 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 689: -#line 3750 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3809 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr)); } -#line 8933 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9027 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 690: -#line 3754 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3813 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr)); } -#line 8941 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9035 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 691: -#line 3758 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3817 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr)); } -#line 8949 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9043 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 692: -#line 3762 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3821 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr)); } -#line 8957 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9051 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 693: -#line 3766 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3825 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr)); } -#line 8965 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9059 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 694: -#line 3770 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3829 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8973 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9067 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 695: -#line 3774 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3833 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8981 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9075 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 696: -#line 3778 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3837 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8989 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9083 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 697: -#line 3782 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3841 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8997 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9091 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 698: -#line 3786 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3845 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9005 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9099 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 699: -#line 3790 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3849 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9013 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9107 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 700: -#line 3794 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3853 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9021 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9115 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 701: -#line 3798 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3857 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9029 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9123 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 702: -#line 3802 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3861 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9037 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9131 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 703: -#line 3806 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3865 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9045 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9139 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 704: -#line 3810 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3869 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('<', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9053 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9147 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 705: -#line 3814 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3873 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('>', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9061 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9155 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 706: -#line 3818 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3877 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9069 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9163 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 707: -#line 3822 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3881 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9077 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9171 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 708: -#line 3826 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3885 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('?', (yyvsp[-4].u.expr), (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('<', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9085 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9179 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 709: -#line 3830 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3889 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); + (yyval.u.expr) = new CPPExpression('>', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9093 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9187 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 710: -#line 3834 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3893 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); + (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9101 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9195 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 711: -#line 3838 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3897 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr)); + (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9109 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9203 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 712: -#line 3842 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3901 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('.', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('?', (yyvsp[-4].u.expr), (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9117 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9211 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 713: -#line 3846 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3905 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } -#line 9125 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9219 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 714: -#line 3850 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3909 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (yyvsp[-1].u.expr); + (yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } -#line 9133 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9227 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 715: -#line 3857 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3913 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); + (yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr)); } -#line 9141 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9235 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 716: -#line 3861 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3917 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(true); + (yyval.u.expr) = new CPPExpression('.', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9149 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9243 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 717: -#line 3865 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3921 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(false); + (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 9157 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9251 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 718: -#line 3869 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3925 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); + (yyval.u.expr) = (yyvsp[-1].u.expr); } -#line 9165 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9259 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 719: -#line 3873 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3932 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression((yyvsp[0].u.real)); + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); } -#line 9173 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9267 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 720: -#line 3877 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3936 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (yyvsp[0].u.expr); + (yyval.u.expr) = new CPPExpression(true); } -#line 9181 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9275 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 721: -#line 3881 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3940 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (yyvsp[0].u.expr); + (yyval.u.expr) = new CPPExpression(false); } -#line 9189 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9283 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 722: -#line 3885 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3944 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression((yyvsp[0].u.identifier), current_scope, global_scope, current_lexer); + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); } -#line 9197 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9291 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 723: -#line 3889 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3948 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.real)); +} +#line 9299 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 724: +#line 3952 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[0].u.expr); +} +#line 9307 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 725: +#line 3956 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[0].u.expr); +} +#line 9315 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 726: +#line 3960 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.identifier), current_scope, global_scope, current_lexer); +} +#line 9323 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 727: +#line 3964 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // A variable named "final". C++11 explicitly permits this. CPPIdentifier *ident = new CPPIdentifier("final", (yylsp[0])); (yyval.u.expr) = new CPPExpression(ident, current_scope, global_scope, current_lexer); } -#line 9207 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9333 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 724: -#line 3895 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 728: +#line 3970 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // A variable named "override". C++11 explicitly permits this. CPPIdentifier *ident = new CPPIdentifier("override", (yylsp[0])); (yyval.u.expr) = new CPPExpression(ident, current_scope, global_scope, current_lexer); } -#line 9217 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 725: -#line 3901 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr()); -} -#line 9225 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 726: -#line 3909 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.closure_type) = new CPPClosureType(); -} -#line 9233 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 727: -#line 3913 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.closure_type) = new CPPClosureType(CPPClosureType::CT_by_value); -} -#line 9241 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 728: -#line 3917 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.closure_type) = new CPPClosureType(CPPClosureType::CT_by_reference); -} -#line 9249 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9343 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 729: -#line 3921 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3976 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr()); +} +#line 9351 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 730: +#line 3984 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.closure_type) = new CPPClosureType(); +} +#line 9359 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 731: +#line 3988 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.closure_type) = new CPPClosureType(CPPClosureType::CT_by_value); +} +#line 9367 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 732: +#line 3992 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.closure_type) = new CPPClosureType(CPPClosureType::CT_by_reference); +} +#line 9375 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 733: +#line 3996 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.closure_type) = new CPPClosureType(); (yyvsp[-1].u.capture)->_initializer = (yyvsp[0].u.expr); (yyval.u.closure_type)->_captures.push_back(*(yyvsp[-1].u.capture)); delete (yyvsp[-1].u.capture); } -#line 9260 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9386 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 730: -#line 3928 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 734: +#line 4003 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.closure_type) = (yyvsp[-3].u.closure_type); (yyvsp[-1].u.capture)->_initializer = (yyvsp[0].u.expr); (yyval.u.closure_type)->_captures.push_back(*(yyvsp[-1].u.capture)); delete (yyvsp[-1].u.capture); } -#line 9271 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9397 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 731: -#line 3938 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 735: +#line 4013 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.capture) = new CPPClosureType::Capture; (yyval.u.capture)->_name = (yyvsp[0].u.identifier)->get_simple_name(); (yyval.u.capture)->_type = CPPClosureType::CT_by_reference; } -#line 9281 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9407 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 732: -#line 3944 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 736: +#line 4019 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.capture) = new CPPClosureType::Capture; (yyval.u.capture)->_name = (yyvsp[-1].u.identifier)->get_simple_name(); (yyval.u.capture)->_type = CPPClosureType::CT_by_reference; } -#line 9291 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9417 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 733: -#line 3950 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 737: +#line 4025 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.capture) = new CPPClosureType::Capture; (yyval.u.capture)->_name = (yyvsp[0].u.identifier)->get_simple_name(); @@ -9301,11 +9427,11 @@ yyreduce: (yyval.u.capture)->_type = CPPClosureType::CT_by_value; } } -#line 9305 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9431 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 734: -#line 3960 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 738: +#line 4035 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.capture) = new CPPClosureType::Capture; (yyval.u.capture)->_name = (yyvsp[0].u.identifier)->get_simple_name(); @@ -9314,11 +9440,11 @@ yyreduce: yywarning("only capture name 'this' may be preceded by an asterisk", (yylsp[0])); } } -#line 9318 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9444 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 735: -#line 3972 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 739: +#line 4047 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, true); if (type == NULL) { @@ -9326,177 +9452,177 @@ yyreduce: } (yyval.u.type) = type; } -#line 9330 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9456 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 736: -#line 3980 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 740: +#line 4055 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); } -#line 9338 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9464 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 737: -#line 3984 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 741: +#line 4059 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPClassTemplateParameter *ctp = new CPPClassTemplateParameter((yyvsp[-1].u.identifier)); ctp->_packed = true; (yyval.u.type) = CPPType::new_type(ctp); } -#line 9348 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 738: -#line 4014 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.identifier) = (yyvsp[0].u.identifier); -} -#line 9356 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 739: -#line 4018 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.identifier) = (yyvsp[0].u.identifier); -} -#line 9364 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 740: -#line 4022 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.identifier) = (yyvsp[0].u.identifier); -} -#line 9372 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 741: -#line 4026 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.identifier) = new CPPIdentifier("final", (yylsp[0])); -} -#line 9380 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9474 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 742: -#line 4030 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 4089 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.identifier) = new CPPIdentifier("override", (yylsp[0])); + (yyval.u.identifier) = (yyvsp[0].u.identifier); } -#line 9388 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9482 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 743: -#line 4034 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 4093 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.identifier) = (yyvsp[0].u.identifier); +} +#line 9490 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 744: +#line 4097 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.identifier) = (yyvsp[0].u.identifier); +} +#line 9498 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 745: +#line 4101 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.identifier) = new CPPIdentifier("final", (yylsp[0])); +} +#line 9506 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 746: +#line 4105 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.identifier) = new CPPIdentifier("override", (yylsp[0])); +} +#line 9514 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 747: +#line 4109 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // This is not a keyword in Python, so it is useful to be able to use this // in MAKE_PROPERTY definitions, etc. (yyval.u.identifier) = new CPPIdentifier("signed", (yylsp[0])); } -#line 9398 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 744: -#line 4040 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.identifier) = new CPPIdentifier("float", (yylsp[0])); -} -#line 9406 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 745: -#line 4044 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.identifier) = new CPPIdentifier("public", (yylsp[0])); -} -#line 9414 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 746: -#line 4048 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.identifier) = new CPPIdentifier("private", (yylsp[0])); -} -#line 9422 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 747: -#line 4052 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.identifier) = new CPPIdentifier("static", (yylsp[0])); -} -#line 9430 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9524 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 748: -#line 4056 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 4115 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.identifier) = new CPPIdentifier("default", (yylsp[0])); + (yyval.u.identifier) = new CPPIdentifier("float", (yylsp[0])); } -#line 9438 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9532 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 749: -#line 4067 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 4119 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.identifier) = (yyvsp[0].u.identifier); + (yyval.u.identifier) = new CPPIdentifier("public", (yylsp[0])); } -#line 9446 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9540 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 750: -#line 4071 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 4123 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.identifier) = (yyvsp[0].u.identifier); + (yyval.u.identifier) = new CPPIdentifier("private", (yylsp[0])); } -#line 9454 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9548 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 751: -#line 4075 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 4127 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.identifier) = (yyvsp[0].u.identifier); + (yyval.u.identifier) = new CPPIdentifier("static", (yylsp[0])); } -#line 9462 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9556 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 752: -#line 4079 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 4131 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.identifier) = new CPPIdentifier("override", (yylsp[0])); + (yyval.u.identifier) = new CPPIdentifier("default", (yylsp[0])); } -#line 9470 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9564 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 753: -#line 4087 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 4142 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression((yyvsp[0].str)); + (yyval.u.identifier) = (yyvsp[0].u.identifier); } -#line 9478 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9572 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 754: -#line 4091 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 4146 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (yyvsp[0].u.expr); + (yyval.u.identifier) = (yyvsp[0].u.identifier); } -#line 9486 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9580 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 755: -#line 4095 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 4150 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.identifier) = (yyvsp[0].u.identifier); +} +#line 9588 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 756: +#line 4154 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.identifier) = new CPPIdentifier("override", (yylsp[0])); +} +#line 9596 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 757: +#line 4162 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression((yyvsp[0].str)); +} +#line 9604 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 758: +#line 4166 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[0].u.expr); +} +#line 9612 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 759: +#line 4170 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // The right string takes on the literal type of the left. (yyval.u.expr) = (yyvsp[-1].u.expr); (yyval.u.expr)->_str += (yyvsp[0].str); } -#line 9496 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9622 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 756: -#line 4101 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 760: +#line 4176 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // We have to check that the two literal types match up. (yyval.u.expr) = (yyvsp[-1].u.expr); @@ -9505,11 +9631,11 @@ yyreduce: } (yyval.u.expr)->_str += (yyvsp[0].u.expr)->_str; } -#line 9509 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9635 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; -#line 9513 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9639 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires diff --git a/dtool/src/cppparser/cppBison.yxx b/dtool/src/cppparser/cppBison.yxx index 5c834d5851..00e5c87397 100644 --- a/dtool/src/cppparser/cppBison.yxx +++ b/dtool/src/cppparser/cppBison.yxx @@ -397,6 +397,7 @@ pop_struct() { %type class_derivation_name %type enum_element_type %type maybe_trailing_return_type +%type maybe_comma_identifier /*%type typedefname*/ %type name %type name_no_final @@ -548,202 +549,264 @@ declaration: { current_scope->set_current_vis(V_private); } - | KW_MAKE_PROPERTY '(' name ',' IDENTIFIER ')' ';' -{ - - CPPDeclaration *getter = $5->find_symbol(current_scope, global_scope, current_lexer); - if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid getter: " + $5->get_fully_scoped_name(), @5); - } - - CPPMakeProperty *make_property = new CPPMakeProperty($3, getter->as_function_group(), NULL, current_scope, @1.file); - current_scope->add_declaration(make_property, global_scope, current_lexer, @1); -} - | KW_MAKE_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' + | KW_MAKE_PROPERTY '(' name ',' IDENTIFIER maybe_comma_identifier ')' ';' { CPPDeclaration *getter = $5->find_symbol(current_scope, global_scope, current_lexer); - if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { + if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid getter: " + $5->get_fully_scoped_name(), @5); - } else { - CPPDeclaration *setter = $7->find_symbol(current_scope, global_scope, current_lexer); - CPPFunctionGroup *setter_func = NULL; + CPPMakeProperty *make_property = new CPPMakeProperty($3, CPPMakeProperty::T_normal, current_scope, @1.file); + make_property->_get_function = getter->as_function_group(); - if (setter == (CPPDeclaration *)NULL || setter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid setter: " + $7->get_fully_scoped_name(), @7); - } else { - setter_func = setter->as_function_group(); + if ($6 != nullptr) { + CPPDeclaration *setter = $6->find_symbol(current_scope, global_scope, current_lexer); + if (setter == nullptr || setter->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("Reference to non-existent or invalid setter: " + $6->get_fully_scoped_name(), @6); + } else { + make_property->_set_function = setter->as_function_group(); + } } - CPPMakeProperty *make_property = new CPPMakeProperty($3, getter->as_function_group(), - setter_func, current_scope, @1.file); current_scope->add_declaration(make_property, global_scope, current_lexer, @1); } } | KW_MAKE_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' { CPPDeclaration *getter = $5->find_symbol(current_scope, global_scope, current_lexer); - if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { + if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid getter: " + $5->get_fully_scoped_name(), @5); } else { - CPPDeclaration *setter = $7->find_symbol(current_scope, global_scope, current_lexer); - CPPFunctionGroup *setter_func = NULL; + CPPMakeProperty *make_property = new CPPMakeProperty($3, CPPMakeProperty::T_normal, current_scope, @1.file); + make_property->_get_function = getter->as_function_group(); - if (setter == (CPPDeclaration *)NULL || setter->get_subtype() != CPPDeclaration::ST_function_group) { + CPPDeclaration *setter = $7->find_symbol(current_scope, global_scope, current_lexer); + if (setter == nullptr || setter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid setter: " + $7->get_fully_scoped_name(), @7); } else { - setter_func = setter->as_function_group(); + make_property->_set_function = setter->as_function_group(); } CPPDeclaration *deleter = $9->find_symbol(current_scope, global_scope, current_lexer); - if (deleter == (CPPDeclaration *)NULL || deleter->get_subtype() != CPPDeclaration::ST_function_group) { + if (deleter == nullptr || deleter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid delete method: " + $9->get_fully_scoped_name(), @9); - deleter = NULL; - } - - CPPMakeProperty *make_property = new CPPMakeProperty($3, getter->as_function_group(), - setter_func, current_scope, @1.file); - if (deleter) { + } else { make_property->_del_function = deleter->as_function_group(); } + current_scope->add_declaration(make_property, global_scope, current_lexer, @1); } } | KW_MAKE_SEQ_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' { CPPDeclaration *length_getter = $5->find_symbol(current_scope, global_scope, current_lexer); - if (length_getter == (CPPDeclaration *)NULL || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { + if (length_getter == nullptr || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid length method: " + $5->get_fully_scoped_name(), @5); - length_getter = NULL; + length_getter = nullptr; } CPPDeclaration *getter = $7->find_symbol(current_scope, global_scope, current_lexer); - if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { + if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid getter: " + $7->get_fully_scoped_name(), @7); + getter = nullptr; } - CPPMakeProperty *make_property = new CPPMakeProperty($3, getter->as_function_group(), NULL, current_scope, @1.file); - make_property->_length_function = length_getter->as_function_group(); - current_scope->add_declaration(make_property, global_scope, current_lexer, @1); + if (getter != nullptr && length_getter != nullptr) { + CPPMakeProperty *make_property = new CPPMakeProperty($3, CPPMakeProperty::T_sequence, current_scope, @1.file); + make_property->_get_function = getter->as_function_group(); + make_property->_length_function = length_getter->as_function_group(); + current_scope->add_declaration(make_property, global_scope, current_lexer, @1); + } } | KW_MAKE_SEQ_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' { CPPDeclaration *length_getter = $5->find_symbol(current_scope, global_scope, current_lexer); - if (length_getter == (CPPDeclaration *)NULL || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { + if (length_getter == nullptr || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid length method: " + $5->get_fully_scoped_name(), @5); - length_getter = NULL; + length_getter = nullptr; } CPPDeclaration *getter = $7->find_symbol(current_scope, global_scope, current_lexer); - if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { + if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid getter: " + $7->get_fully_scoped_name(), @7); + getter = nullptr; + } + + if (getter != nullptr && length_getter != nullptr) { + CPPMakeProperty *make_property = new CPPMakeProperty($3, CPPMakeProperty::T_sequence, current_scope, @1.file); + make_property->_get_function = getter->as_function_group(); + make_property->_length_function = length_getter->as_function_group(); - } else { CPPDeclaration *setter = $9->find_symbol(current_scope, global_scope, current_lexer); - CPPFunctionGroup *setter_func = NULL; - - if (setter == (CPPDeclaration *)NULL || setter->get_subtype() != CPPDeclaration::ST_function_group) { + if (setter == nullptr || setter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid setter: " + $9->get_fully_scoped_name(), @9); } else { - setter_func = setter->as_function_group(); + make_property->_set_function = setter->as_function_group(); } - CPPMakeProperty *make_property = new CPPMakeProperty($3, getter->as_function_group(), - setter_func, current_scope, @1.file); - make_property->_length_function = length_getter->as_function_group(); current_scope->add_declaration(make_property, global_scope, current_lexer, @1); } } | KW_MAKE_SEQ_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' { CPPDeclaration *length_getter = $5->find_symbol(current_scope, global_scope, current_lexer); - if (length_getter == (CPPDeclaration *)NULL || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { + if (length_getter == nullptr || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid length method: " + $5->get_fully_scoped_name(), @5); length_getter = NULL; } CPPDeclaration *getter = $7->find_symbol(current_scope, global_scope, current_lexer); - if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { + if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid getter: " + $7->get_fully_scoped_name(), @7); + getter = nullptr; + } + + if (getter != nullptr && length_getter != nullptr) { + CPPMakeProperty *make_property = new CPPMakeProperty($3, CPPMakeProperty::T_sequence, current_scope, @1.file); + make_property->_get_function = getter->as_function_group(); + make_property->_length_function = length_getter->as_function_group(); - } else { CPPDeclaration *setter = $9->find_symbol(current_scope, global_scope, current_lexer); - CPPFunctionGroup *setter_func = NULL; - - if (setter == (CPPDeclaration *)NULL || setter->get_subtype() != CPPDeclaration::ST_function_group) { + if (setter == nullptr || setter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid setter: " + $9->get_fully_scoped_name(), @9); } else { - setter_func = setter->as_function_group(); + make_property->_set_function = setter->as_function_group(); } CPPDeclaration *deleter = $11->find_symbol(current_scope, global_scope, current_lexer); - if (deleter == (CPPDeclaration *)NULL || deleter->get_subtype() != CPPDeclaration::ST_function_group) { + if (deleter == nullptr || deleter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("reference to non-existent or invalid delete method: " + $11->get_fully_scoped_name(), @11); - deleter = NULL; - } - - CPPMakeProperty *make_property = new CPPMakeProperty($3, getter->as_function_group(), - setter_func, current_scope, @1.file); - make_property->_length_function = length_getter->as_function_group(); - if (deleter) { + } else { make_property->_del_function = deleter->as_function_group(); } + + current_scope->add_declaration(make_property, global_scope, current_lexer, @1); + } +} + | KW_MAKE_MAP_PROPERTY '(' name ',' IDENTIFIER ')' ';' +{ + CPPDeclaration *getter = $5->find_symbol(current_scope, global_scope, current_lexer); + if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("reference to non-existent or invalid item getter method: " + $5->get_fully_scoped_name(), @5); + + } else { + CPPMakeProperty *make_property = new CPPMakeProperty($3, CPPMakeProperty::T_mapping, current_scope, @1.file); + make_property->_get_function = getter->as_function_group(); + current_scope->add_declaration(make_property, global_scope, current_lexer, @1); + } +} + | KW_MAKE_MAP_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' +{ + CPPDeclaration *getter = $7->find_symbol(current_scope, global_scope, current_lexer); + if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("Reference to non-existent or invalid getter: " + $7->get_fully_scoped_name(), @7); + + } else { + CPPMakeProperty *make_property; + make_property = new CPPMakeProperty($3, CPPMakeProperty::T_mapping, current_scope, @1.file); + make_property->_get_function = getter->as_function_group(); + + CPPDeclaration *hasser = $5->find_symbol(current_scope, global_scope, current_lexer); + if (hasser == nullptr || hasser->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("reference to non-existent or invalid has/find method: " + $5->get_fully_scoped_name(), @5); + } else { + make_property->_has_function = hasser->as_function_group(); + } + + current_scope->add_declaration(make_property, global_scope, current_lexer, @1); + } +} + | KW_MAKE_MAP_PROPERTY '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER maybe_comma_identifier ')' ';' +{ + CPPDeclaration *getter = $7->find_symbol(current_scope, global_scope, current_lexer); + if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("Reference to non-existent or invalid getter: " + $7->get_fully_scoped_name(), @7); + + } else { + CPPMakeProperty *make_property = new CPPMakeProperty($3, CPPMakeProperty::T_mapping, current_scope, @1.file); + make_property->_get_function = getter->as_function_group(); + + CPPDeclaration *hasser = $5->find_symbol(current_scope, global_scope, current_lexer); + if (hasser == nullptr || hasser->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("reference to non-existent or invalid has/find method: " + $5->get_fully_scoped_name(), @5); + } else { + make_property->_has_function = hasser->as_function_group(); + } + + CPPDeclaration *setter = $9->find_symbol(current_scope, global_scope, current_lexer); + if (setter == nullptr || setter->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("Reference to non-existent or invalid setter: " + $9->get_fully_scoped_name(), @9); + } else { + make_property->_set_function = setter->as_function_group(); + } + + if ($10 != nullptr) { + CPPDeclaration *deleter = $10->find_symbol(current_scope, global_scope, current_lexer); + if (deleter == nullptr || deleter->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("reference to non-existent or invalid delete method: " + $10->get_fully_scoped_name(), @10); + } else { + make_property->_del_function = deleter->as_function_group(); + } + } + current_scope->add_declaration(make_property, global_scope, current_lexer, @1); } } | KW_MAKE_PROPERTY2 '(' name ',' IDENTIFIER ',' IDENTIFIER ')' ';' { - CPPDeclaration *hasser = $5->find_symbol(current_scope, global_scope, current_lexer); - if (hasser == (CPPDeclaration *)NULL || hasser->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid has-function: " + $5->get_fully_scoped_name(), @5); - } - CPPDeclaration *getter = $7->find_symbol(current_scope, global_scope, current_lexer); - if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { + if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid getter: " + $7->get_fully_scoped_name(), @7); - } - if (hasser && getter) { + } else { CPPMakeProperty *make_property; - make_property = new CPPMakeProperty($3, - hasser->as_function_group(), - getter->as_function_group(), - NULL, NULL, + make_property = new CPPMakeProperty($3, CPPMakeProperty::T_normal, current_scope, @1.file); + make_property->_get_function = getter->as_function_group(); + + CPPDeclaration *hasser = $5->find_symbol(current_scope, global_scope, current_lexer); + if (hasser == nullptr || hasser->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("reference to non-existent or invalid has/find method: " + $5->get_fully_scoped_name(), @5); + } else { + make_property->_has_function = hasser->as_function_group(); + } + current_scope->add_declaration(make_property, global_scope, current_lexer, @1); } } | KW_MAKE_PROPERTY2 '(' name ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ',' IDENTIFIER ')' ';' { - CPPDeclaration *hasser = $5->find_symbol(current_scope, global_scope, current_lexer); - if (hasser == (CPPDeclaration *)NULL || hasser->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid has-function: " + $5->get_fully_scoped_name(), @5); - } - CPPDeclaration *getter = $7->find_symbol(current_scope, global_scope, current_lexer); - if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { + if (getter == nullptr || getter->get_subtype() != CPPDeclaration::ST_function_group) { yyerror("Reference to non-existent or invalid getter: " + $7->get_fully_scoped_name(), @7); - } - CPPDeclaration *setter = $9->find_symbol(current_scope, global_scope, current_lexer); - if (setter == (CPPDeclaration *)NULL || setter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid setter: " + $9->get_fully_scoped_name(), @9); - } - - CPPDeclaration *clearer = $11->find_symbol(current_scope, global_scope, current_lexer); - if (clearer == (CPPDeclaration *)NULL || clearer->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid clear-function: " + $11->get_fully_scoped_name(), @11); - } - - if (hasser && getter && setter && clearer) { + } else { CPPMakeProperty *make_property; - make_property = new CPPMakeProperty($3, - hasser->as_function_group(), - getter->as_function_group(), - setter->as_function_group(), - clearer->as_function_group(), + make_property = new CPPMakeProperty($3, CPPMakeProperty::T_normal, current_scope, @1.file); + make_property->_get_function = getter->as_function_group(); + + CPPDeclaration *hasser = $5->find_symbol(current_scope, global_scope, current_lexer); + if (hasser == nullptr || hasser->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("reference to non-existent or invalid has/find method: " + $5->get_fully_scoped_name(), @5); + } else { + make_property->_has_function = hasser->as_function_group(); + } + + CPPDeclaration *setter = $7->find_symbol(current_scope, global_scope, current_lexer); + if (setter == nullptr || setter->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("reference to non-existent or invalid setter: " + $7->get_fully_scoped_name(), @7); + } else { + make_property->_set_function = setter->as_function_group(); + } + + CPPDeclaration *clearer = $11->find_symbol(current_scope, global_scope, current_lexer); + if (clearer == nullptr || clearer->get_subtype() != CPPDeclaration::ST_function_group) { + yyerror("reference to non-existent or invalid clear method: " + $11->get_fully_scoped_name(), @11); + } else { + make_property->_clear_function = clearer->as_function_group(); + } + current_scope->add_declaration(make_property, global_scope, current_lexer, @1); } } @@ -1723,6 +1786,18 @@ maybe_trailing_return_type: ; +maybe_comma_identifier: + empty +{ + $$ = NULL; +} + | ',' IDENTIFIER +{ + $$ = $2; +} + ; + + function_parameter_list: empty { diff --git a/dtool/src/cppparser/cppMakeProperty.cxx b/dtool/src/cppparser/cppMakeProperty.cxx index c65fcf93b6..745ae8a745 100644 --- a/dtool/src/cppparser/cppMakeProperty.cxx +++ b/dtool/src/cppparser/cppMakeProperty.cxx @@ -18,37 +18,17 @@ * */ CPPMakeProperty:: -CPPMakeProperty(CPPIdentifier *ident, - CPPFunctionGroup *getter, CPPFunctionGroup *setter, +CPPMakeProperty(CPPIdentifier *ident, Type type, CPPScope *current_scope, const CPPFile &file) : CPPDeclaration(file), _ident(ident), - _length_function(NULL), - _has_function(NULL), - _get_function(getter), - _set_function(setter), - _clear_function(NULL), - _del_function(NULL) -{ - _ident->_native_scope = current_scope; -} - -/** - * - */ -CPPMakeProperty:: -CPPMakeProperty(CPPIdentifier *ident, - CPPFunctionGroup *hasser, CPPFunctionGroup *getter, - CPPFunctionGroup *setter, CPPFunctionGroup *clearer, - CPPScope *current_scope, const CPPFile &file) : - CPPDeclaration(file), - _ident(ident), - _length_function(NULL), - _has_function(hasser), - _get_function(getter), - _set_function(setter), - _clear_function(clearer), - _del_function(NULL) + _type(type), + _length_function(nullptr), + _has_function(nullptr), + _get_function(nullptr), + _set_function(nullptr), + _clear_function(nullptr), + _del_function(nullptr) { _ident->_native_scope = current_scope; } diff --git a/dtool/src/cppparser/cppMakeProperty.h b/dtool/src/cppparser/cppMakeProperty.h index 44a1a5671a..52ba3641bf 100644 --- a/dtool/src/cppparser/cppMakeProperty.h +++ b/dtool/src/cppparser/cppMakeProperty.h @@ -23,16 +23,72 @@ * This is a MAKE_PROPERTY() declaration appearing within a class body. It * means to generate a property within Python, replacing (for instance) * get_something()/set_something() with a synthetic 'something' attribute. + * + * This is an example of a simple property (MAKE_PROPERTY is defined as + * the built-in __make_property): + * @@code + * Thing get_thing() const; + * void set_thing(const Thing &); + * + * MAKE_PROPERTY(thing, get_thing, set_thing); + * @@endcode + * The setter may be omitted to make the property read-only. + * + * There is also a secondary macro that allows the property to be set to a + * cleared state using separate clear functions. In the scripting language, + * this would be represented by a "null" value, or an "optional" construct in + * languages that have no notion of a null value. + * + * @@code + * bool has_thing() const; + * Thing get_thing() const; + * void set_thing(const Thing &); + * void clear_thing(); + * MAKE_PROPERTY2(thing, has_thing, get_thing, set_thing, clear_thing); + * @@endcode + * As with MAKE_PROPERTY, both the setter and clearer can be omitted to create + * a read-only property. + * + * Thirdly, there is a variant called MAKE_SEQ_PROPERTY. It takes a length + * function as argument and the getter and setter take an index as first + * argument: + * @@code + * size_t get_num_things() const; + * Thing &get_thing(size_t i) const; + * void set_thing(size_t i, Thing value) const; + * void remove_thing(size_t i) const; + * + * MAKE_SEQ_PROPERTY(get_num_things, get_thing, set_thing, remove_thing); + * @@endcode + * + * Lastly, there is the possibility to have properties with key/value + * associations, often called a "map" or "dictionary" in scripting languages: + * @@code + * bool has_thing(string key) const; + * Thing &get_thing(string key) const; + * void set_thing(string key, Thing value) const; + * void clear_thing(string key) const; + * + * MAKE_MAP_PROPERTY(things, has_thing, get_thing, set_thing, clear_thing); + * @@endcode + * You may also replace the "has" function with a "find" function that returns + * an index. If the returned index is negative (or in the case of an unsigned + * integer, the maximum value), the item is assumed not to be present in the + * mapping. + * + * It is also possible to use both MAKE_SEQ_PROPERTY and MAKE_MAP_PROPERTY on + * the same property name. This implies that this property has both a + * sequence and mapping interface. */ class CPPMakeProperty : public CPPDeclaration { public: - CPPMakeProperty(CPPIdentifier *ident, - CPPFunctionGroup *getter, CPPFunctionGroup *setter, - CPPScope *current_scope, const CPPFile &file); + enum Type { + T_normal = 0x0, + T_sequence = 0x1, + T_mapping = 0x2, + }; - CPPMakeProperty(CPPIdentifier *ident, - CPPFunctionGroup *hasser, CPPFunctionGroup *getter, - CPPFunctionGroup *setter, CPPFunctionGroup *clearer, + CPPMakeProperty(CPPIdentifier *ident, Type type, CPPScope *current_scope, const CPPFile &file); virtual string get_simple_name() const; @@ -46,8 +102,7 @@ public: virtual CPPMakeProperty *as_make_property(); CPPIdentifier *_ident; - // If length_function is not NULL, this is actually a sequence property, - // and the other functions take an additional index argument. + Type _type; CPPFunctionGroup *_length_function; CPPFunctionGroup *_has_function; CPPFunctionGroup *_get_function; diff --git a/dtool/src/dtoolbase/dtoolbase.h b/dtool/src/dtoolbase/dtoolbase.h index a3cb5f0614..5afa70df03 100644 --- a/dtool/src/dtoolbase/dtoolbase.h +++ b/dtool/src/dtoolbase/dtoolbase.h @@ -456,6 +456,7 @@ typedef struct _object PyObject; #define MAKE_PROPERTY2(property_name, ...) __make_property2(property_name, __VA_ARGS__) #define MAKE_SEQ(seq_name, num_name, element_name) __make_seq(seq_name, num_name, element_name) #define MAKE_SEQ_PROPERTY(property_name, ...) __make_seq_property(property_name, __VA_ARGS__) +#define MAKE_MAP_PROPERTY(property_name, ...) __make_map_property(property_name, __VA_ARGS__) #define EXTENSION(x) __extension x #define EXTEND __extension #else @@ -466,6 +467,7 @@ typedef struct _object PyObject; #define MAKE_PROPERTY2(property_name, ...) #define MAKE_SEQ(seq_name, num_name, element_name) #define MAKE_SEQ_PROPERTY(property_name, ...) +#define MAKE_MAP_PROPERTY(property_name, ...) #define EXTENSION(x) #define EXTEND #endif diff --git a/dtool/src/dtoolutil/executionEnvironment.h b/dtool/src/dtoolutil/executionEnvironment.h index f2f5472193..f954a1e44d 100644 --- a/dtool/src/dtoolutil/executionEnvironment.h +++ b/dtool/src/dtoolutil/executionEnvironment.h @@ -51,6 +51,10 @@ PUBLISHED: static Filename get_cwd(); +PUBLISHED: + MAKE_MAP_PROPERTY(environment_variables, has_environment_variable, + get_environment_variable, set_environment_variable); + MAKE_SEQ_PROPERTY(args, get_num_args, get_arg); MAKE_PROPERTY(binary_name, get_binary_name, set_binary_name); MAKE_PROPERTY(dtool_name, get_dtool_name, set_dtool_name); diff --git a/dtool/src/interrogate/interfaceMaker.cxx b/dtool/src/interrogate/interfaceMaker.cxx index 5c2e589e3c..9cc7b96973 100644 --- a/dtool/src/interrogate/interfaceMaker.cxx +++ b/dtool/src/interrogate/interfaceMaker.cxx @@ -75,8 +75,8 @@ InterfaceMaker::MakeSeq:: MakeSeq(const string &name, const InterrogateMakeSeq &imake_seq) : _name(name), _imake_seq(imake_seq), - _length_getter(NULL), - _element_getter(NULL) + _length_getter(nullptr), + _element_getter(nullptr) { } @@ -86,12 +86,10 @@ MakeSeq(const string &name, const InterrogateMakeSeq &imake_seq) : InterfaceMaker::Property:: Property(const InterrogateElement &ielement) : _ielement(ielement), - _length_function(NULL), - _getter(NULL), - _setter(NULL), - _has_function(NULL), - _clear_function(NULL), - _deleter(NULL), + _length_function(nullptr), + _has_function(nullptr), + _clear_function(nullptr), + _deleter(nullptr), _has_this(false) { } diff --git a/dtool/src/interrogate/interfaceMaker.h b/dtool/src/interrogate/interfaceMaker.h index eb23e28430..2dbea5921e 100644 --- a/dtool/src/interrogate/interfaceMaker.h +++ b/dtool/src/interrogate/interfaceMaker.h @@ -126,9 +126,9 @@ public: Property(const InterrogateElement &ielement); const InterrogateElement &_ielement; + vector _getter_remaps; + vector _setter_remaps; Function *_length_function; - Function *_getter; - Function *_setter; Function *_has_function; Function *_clear_function; Function *_deleter; diff --git a/dtool/src/interrogate/interfaceMakerPythonNative.cxx b/dtool/src/interrogate/interfaceMakerPythonNative.cxx index 9f8820ffee..a5e5295e4e 100644 --- a/dtool/src/interrogate/interfaceMakerPythonNative.cxx +++ b/dtool/src/interrogate/interfaceMakerPythonNative.cxx @@ -2640,8 +2640,7 @@ write_module_class(ostream &out, Object *obj) { for (pit = obj->_properties.begin(); pit != obj->_properties.end(); ++pit) { Property *property = (*pit); const InterrogateElement &ielem = property->_ielement; - if (!property->_has_this || - property->_getter == NULL || !is_function_legal(property->_getter)) { + if (!property->_has_this || property->_getter_remaps.empty()) { continue; } @@ -2652,8 +2651,7 @@ write_module_class(ostream &out, Object *obj) { string getter = "&Dtool_" + ClassName + "_" + ielem.get_name() + "_Getter"; string setter = "NULL"; - if (property->_length_function == NULL && - property->_setter != NULL && is_function_legal(property->_setter)) { + if (!ielem.is_sequence() && !ielem.is_mapping() && !property->_setter_remaps.empty()) { setter = "&Dtool_" + ClassName + "_" + ielem.get_name() + "_Setter"; } @@ -3190,8 +3188,7 @@ write_module_class(ostream &out, Object *obj) { for (pit = obj->_properties.begin(); pit != obj->_properties.end(); ++pit) { Property *property = (*pit); const InterrogateElement &ielem = property->_ielement; - if (property->_has_this || - property->_getter == NULL || !is_function_legal(property->_getter)) { + if (property->_has_this || property->_getter_remaps.empty()) { continue; } @@ -3200,8 +3197,7 @@ write_module_class(ostream &out, Object *obj) { string getter = "&Dtool_" + ClassName + "_" + ielem.get_name() + "_Getter"; string setter = "NULL"; - if (property->_length_function == NULL && - property->_setter != NULL && is_function_legal(property->_setter)) { + if (!ielem.is_sequence() && !ielem.is_mapping() && !property->_setter_remaps.empty()) { setter = "&Dtool_" + ClassName + "_" + ielem.get_name() + "_Setter"; } @@ -5997,7 +5993,7 @@ write_function_instance(ostream &out, FunctionRemap *remap, // this for coercion constructors since they are called by other wrapper // functions which already check this on their own. Generated getters // obviously can't raise asserts. - if (watch_asserts && (return_flags & RF_coerced) == 0 && + if (watch_asserts && (return_flags & (RF_coerced | RF_raise_keyerror)) == 0 && remap->_type != FunctionRemap::T_getter && remap->_type != FunctionRemap::T_setter) { out << "#ifndef NDEBUG\n"; @@ -6126,6 +6122,27 @@ write_function_instance(ostream &out, FunctionRemap *remap, indent(out, indent_level) << "manage = true;\n"; indent(out, indent_level) << "return true;\n"; } + + } else if (return_flags & RF_raise_keyerror) { + CPPType *orig_type = remap->_return_type->get_orig_type(); + + if (TypeManager::is_bool(orig_type) || TypeManager::is_pointer(orig_type)) { + indent(out, indent_level) << "if (!" << return_expr << ") {\n"; + } else if (TypeManager::is_unsigned_integer(orig_type)) { + indent(out, indent_level) << "if ((int)" << return_expr << " == -1) {\n"; + } else if (TypeManager::is_integer(orig_type)) { + indent(out, indent_level) << "if (" << return_expr << " < 0) {\n"; + } else { + indent(out, indent_level) << "if (false) {\n"; + } + + if (args_type == AT_single_arg) { + indent(out, indent_level) << " PyErr_SetObject(PyExc_KeyError, arg);\n"; + } else { + indent(out, indent_level) << " PyErr_SetObject(PyExc_KeyError, key);\n"; + } + error_return(out, indent_level + 2, return_flags); + indent(out, indent_level) << "}\n"; } // Close the extra braces opened earlier. @@ -6398,19 +6415,21 @@ write_make_seq(ostream &out, Object *obj, const std::string &ClassName, */ void InterfaceMakerPythonNative:: write_getset(ostream &out, Object *obj, Property *property) { + // We keep around this empty vector for passing to get_call_str. + const vector_string pexprs; string ClassName = make_safe_name(obj->_itype.get_scoped_name()); std::string cClassName = obj->_itype.get_true_name(); const InterrogateElement &ielem = property->_ielement; - if (property->_length_function != NULL) { + FunctionRemap *len_remap = nullptr; + if (property->_length_function != nullptr) { // This is actually a sequence. Wrap this with a special class. - FunctionRemap *len_remap = property->_length_function->_remaps.front(); - vector_string pexprs; + len_remap = property->_length_function->_remaps.front(); out << "/**\n" - " * sequence length function for property " << cClassName << "::" << ielem.get_name() << "\n" + " * sequence length function for property " << ielem.get_scoped_name() << "\n" " */\n" "static Py_ssize_t Dtool_" + ClassName + "_" + ielem.get_name() + "_Len(PyObject *self) {\n"; if (property->_length_function->_has_this) { @@ -6424,72 +6443,72 @@ write_getset(ostream &out, Object *obj, Property *property) { out << " return (Py_ssize_t)" << len_remap->get_call_str("", pexprs) << ";\n"; } out << "}\n\n"; + } - // Now write out the getitem helper function. - if (property->_getter != NULL) { + if (property->_getter_remaps.empty()) { + return; + } + + if (ielem.is_sequence()) { + out << + "/**\n" + " * sequence getter for property " << ielem.get_scoped_name() << "\n" + " */\n" + "static PyObject *Dtool_" + ClassName + "_" + ielem.get_name() + "_Sequence_Getitem(PyObject *self, Py_ssize_t index) {\n"; + + if (property->_has_this) { out << - "/**\n" - " * sequence getter for property " << cClassName << "::" << ielem.get_name() << "\n" - " */\n" - "static PyObject *Dtool_" + ClassName + "_" + ielem.get_name() + "_Getitem(PyObject *self, Py_ssize_t index) {\n"; - if (property->_getter->_has_this || - (property->_has_function && property->_has_function->_has_this)) { - out << - " " << cClassName << " *local_this = NULL;\n" - " if (!Dtool_Call_ExtractThisPointer(self, Dtool_" << ClassName << ", (void **)&local_this)) {\n" - " return NULL;\n" - " }\n"; - } - - // This is a getitem of a sequence type. This means we *need* to raise - // IndexError if we're out of bounds. - out << " if (index < 0 || index >= (Py_ssize_t)" - << len_remap->get_call_str("local_this", pexprs) << ") {\n"; - out << " PyErr_SetString(PyExc_IndexError, \"" << ClassName << "." << ielem.get_name() << "[] index out of range\");\n"; - out << " return NULL;\n"; - out << " }\n"; - - if (property->_has_function != NULL) { - if (property->_has_function->_has_this) { - out << " if (!local_this->" << property->_has_function->_ifunc.get_name() << "(index)) {\n"; - } else { - out << " if (!" << cClassName << "::" << property->_has_function->_ifunc.get_name() << "(index)) {\n"; - } - out << " Py_INCREF(Py_None);\n" - << " return Py_None;\n" - << " }\n"; - } - - std::set remaps; - - // Extract only the getters that take one argument. - Function::Remaps::iterator it; - for (it = property->_getter->_remaps.begin(); - it != property->_getter->_remaps.end(); - ++it) { - FunctionRemap *remap = *it; - int min_num_args = remap->get_min_num_args(); - int max_num_args = remap->get_max_num_args(); - if (min_num_args <= 1 && max_num_args >= 1) { - remaps.insert(remap); - } - } - - string expected_params; - write_function_forset(out, remaps, 1, 1, expected_params, 2, true, true, - AT_no_args, RF_pyobject | RF_err_null, false, true, "index"); - - out << " if (!_PyErr_OCCURRED()) {\n"; - out << " return Dtool_Raise_BadArgumentsError(\n"; - output_quoted(out, 6, expected_params); - out << ");\n" - " }\n" - "}\n\n"; + " " << cClassName << " *local_this = NULL;\n" + " if (!Dtool_Call_ExtractThisPointer(self, Dtool_" << ClassName << ", (void **)&local_this)) {\n" + " return NULL;\n" + " }\n"; } + // This is a getitem of a sequence type. This means we *need* to raise + // IndexError if we're out of bounds. + out << " if (index < 0 || index >= (Py_ssize_t)" + << len_remap->get_call_str("local_this", pexprs) << ") {\n"; + out << " PyErr_SetString(PyExc_IndexError, \"" << ClassName << "." << ielem.get_name() << "[] index out of range\");\n"; + out << " return NULL;\n"; + out << " }\n"; + + /*if (property->_has_function != NULL) { + out << " if (!local_this->" << property->_has_function->_ifunc.get_name() << "(index)) {\n" + << " Py_INCREF(Py_None);\n" + << " return Py_None;\n" + << " }\n"; + }*/ + + std::set remaps; + + // Extract only the getters that take one integral argument. + Function::Remaps::iterator it; + for (it = property->_getter_remaps.begin(); + it != property->_getter_remaps.end(); + ++it) { + FunctionRemap *remap = *it; + int min_num_args = remap->get_min_num_args(); + int max_num_args = remap->get_max_num_args(); + if (min_num_args <= 1 && max_num_args >= 1 && + TypeManager::is_integer(remap->_parameters[(size_t)remap->_has_this]._remap->get_new_type())) { + remaps.insert(remap); + } + } + + string expected_params; + write_function_forset(out, remaps, 1, 1, expected_params, 2, true, true, + AT_no_args, RF_pyobject | RF_err_null, false, true, "index"); + + out << " if (!_PyErr_OCCURRED()) {\n"; + out << " return Dtool_Raise_BadArgumentsError(\n"; + output_quoted(out, 6, expected_params); + out << ");\n" + " }\n" + "}\n\n"; + // Write out a setitem if this is not a read-only property. - if (property->_setter != NULL) { - out << "static int Dtool_" + ClassName + "_" + ielem.get_name() + "_Setitem(PyObject *self, Py_ssize_t index, PyObject *arg) {\n"; + if (!property->_setter_remaps.empty()) { + out << "static int Dtool_" + ClassName + "_" + ielem.get_name() + "_Sequence_Setitem(PyObject *self, Py_ssize_t index, PyObject *arg) {\n"; if (property->_has_this) { out << " " << cClassName << " *local_this = NULL;\n"; out << " if (!Dtool_Call_ExtractThisPointer_NonConst(self, Dtool_" << ClassName << ", (void **)&local_this, \"" @@ -6527,13 +6546,14 @@ write_getset(ostream &out, Object *obj, Property *property) { // Extract only the setters that take two arguments. Function::Remaps::iterator it; - for (it = property->_setter->_remaps.begin(); - it != property->_setter->_remaps.end(); + for (it = property->_setter_remaps.begin(); + it != property->_setter_remaps.end(); ++it) { FunctionRemap *remap = *it; int min_num_args = remap->get_min_num_args(); int max_num_args = remap->get_max_num_args(); - if (min_num_args <= 2 && max_num_args >= 2) { + if (min_num_args <= 2 && max_num_args >= 2 && + TypeManager::is_integer(remap->_parameters[1]._remap->get_new_type())) { remaps.insert(remap); } } @@ -6551,8 +6571,192 @@ write_getset(ostream &out, Object *obj, Property *property) { out << " return -1;\n"; out << "}\n\n"; } + } - // Now write the getter, which returns a special wrapper object. + + // Write the getitem functions. + if (ielem.is_mapping()) { + out << + "/**\n" + " * mapping getitem for property " << ielem.get_scoped_name() << "\n" + " */\n" + "static PyObject *Dtool_" + ClassName + "_" + ielem.get_name() + "_Mapping_Getitem(PyObject *self, PyObject *arg) {\n"; + + // Before we do the has_function: if this is also a sequence, then we have + // to also handle the case here that we were passed an index. + if (ielem.is_sequence()) { + out << + "#if PY_MAJOR_VERSION >= 3\n" + " if (PyLong_CheckExact(arg)) {\n" + "#else\n" + " if (PyLong_CheckExact(arg) || PyInt_CheckExact(arg)) {\n" + "#endif\n" + " return Dtool_" << ClassName << "_" << ielem.get_name() << "_Sequence_Getitem(self, PyLongOrInt_AsSize_t(arg));\n" + " }\n\n"; + } + + if (property->_has_this) { + out << + " " << cClassName << " *local_this = NULL;\n" + " if (!Dtool_Call_ExtractThisPointer(self, Dtool_" << ClassName << ", (void **)&local_this)) {\n" + " return NULL;\n" + " }\n"; + } + + if (property->_has_function != NULL) { + std::set remaps; + remaps.insert(property->_has_function->_remaps.begin(), + property->_has_function->_remaps.end()); + + out << " {\n"; + string expected_params; + write_function_forset(out, remaps, 1, 1, expected_params, 4, true, true, + AT_single_arg, RF_raise_keyerror | RF_err_null, false, true); + out << " }\n"; + } + + std::set remaps; + // Extract only the getters that take one argument. Fish out the ones + // already taken by the sequence getter. + Function::Remaps::iterator it; + for (it = property->_getter_remaps.begin(); + it != property->_getter_remaps.end(); + ++it) { + FunctionRemap *remap = *it; + int min_num_args = remap->get_min_num_args(); + int max_num_args = remap->get_max_num_args(); + if (min_num_args <= 1 && max_num_args >= 1 && + (!ielem.is_sequence() || !TypeManager::is_integer(remap->_parameters[(size_t)remap->_has_this]._remap->get_new_type()))) { + remaps.insert(remap); + } + } + + string expected_params; + write_function_forset(out, remaps, 1, 1, expected_params, 2, true, true, + AT_single_arg, RF_pyobject | RF_err_null, false, true); + + out << " if (!_PyErr_OCCURRED()) {\n"; + out << " return Dtool_Raise_BadArgumentsError(\n"; + output_quoted(out, 6, expected_params); + out << ");\n" + " }\n" + " return NULL;\n" + "}\n\n"; + + // Write out a setitem if this is not a read-only property. + if (!property->_setter_remaps.empty()) { + out << + "/**\n" + " * mapping setitem for property " << ielem.get_scoped_name() << "\n" + " */\n" + "static int Dtool_" + ClassName + "_" + ielem.get_name() + "_Mapping_Setitem(PyObject *self, PyObject *key, PyObject *value) {\n"; + + if (property->_has_this) { + out << + " " << cClassName << " *local_this = NULL;\n" + " if (!Dtool_Call_ExtractThisPointer_NonConst(self, Dtool_" << ClassName << ", (void **)&local_this, \"" + << classNameFromCppName(cClassName, false) << "." << ielem.get_name() << "\")) {\n" + " return -1;\n" + " }\n\n"; + } + + out << " if (value == (PyObject *)NULL) {\n"; + if (property->_deleter != NULL) { + out << " PyObject *arg = key;\n"; + std::set remaps; + remaps.insert(property->_deleter->_remaps.begin(), + property->_deleter->_remaps.end()); + + string expected_params; + write_function_forset(out, remaps, 1, 1, + expected_params, 4, true, true, AT_single_arg, + RF_int, false, false); + out << " return -1;\n"; + } else { + out << " Dtool_Raise_TypeError(\"can't delete " << ielem.get_name() << "[] attribute\");\n" + " return -1;\n"; + } + out << " }\n"; + + if (property->_clear_function != NULL) { + out << " if (value == Py_None) {\n" + << " local_this->" << property->_clear_function->_ifunc.get_name() << "(key);\n" + << " return 0;\n" + << " }\n"; + } + + std::set remaps; + remaps.insert(property->_setter_remaps.begin(), + property->_setter_remaps.end()); + + // We have to create an args tuple only to unpack it alter, ugh. + out << " PyObject *args = PyTuple_New(2);\n" + << " PyTuple_SET_ITEM(args, 0, key);\n" + << " PyTuple_SET_ITEM(args, 1, value);\n" + << " Py_INCREF(key);\n" + << " Py_INCREF(value);\n"; + + string expected_params; + write_function_forset(out, remaps, 2, 2, + expected_params, 2, true, true, AT_varargs, + RF_int | RF_decref_args, false, false); + + out << " if (!_PyErr_OCCURRED()) {\n"; + out << " Dtool_Raise_BadArgumentsError(\n"; + output_quoted(out, 6, expected_params); + out << ");\n"; + out << " }\n"; + out << " Py_DECREF(args);\n"; + out << " return -1;\n"; + out << "}\n\n"; + } + } + + // Now write the actual getter wrapper. It will be a different wrapper + // depending on whether it's a mapping, sequence, or both. + if (ielem.is_mapping() && ielem.is_sequence()) { + out << "static PyObject *Dtool_" + ClassName + "_" + ielem.get_name() + "_Getter(PyObject *self, void *) {\n"; + if (property->_has_this) { + out << " nassertr(self != NULL, NULL);\n" + " Py_INCREF(self);\n"; + } else { + out << " Py_XINCREF(self);\n"; + } + out << " Dtool_SeqMapWrapper *wrap = PyObject_New(Dtool_SeqMapWrapper, &Dtool_SeqMapWrapper_Type);\n" + " wrap->_seq._base._self = self;\n" + " wrap->_seq._len_func = &Dtool_" << ClassName << "_" << ielem.get_name() << "_Len;\n" + " wrap->_seq._getitem_func = &Dtool_" << ClassName << "_" << ielem.get_name() << "_Sequence_Getitem;\n" + " wrap->_map_getitem_func = &Dtool_" << ClassName << "_" << ielem.get_name() << "_Mapping_Getitem;\n"; + if (!property->_setter_remaps.empty()) { + out << " wrap->_seq._setitem_func = &Dtool_" << ClassName << "_" << ielem.get_name() << "_Sequence_Setitem;\n"; + out << " wrap->_map_setitem_func = &Dtool_" << ClassName << "_" << ielem.get_name() << "_Mapping_Setitem;\n"; + } else { + out << " wrap->_seq._setitem_func = NULL;\n"; + out << " wrap->_map_setitem_func = NULL;\n"; + } + out << " return (PyObject *)wrap;\n" + "}\n\n"; + + } else if (ielem.is_mapping()) { + out << "static PyObject *Dtool_" + ClassName + "_" + ielem.get_name() + "_Getter(PyObject *self, void *) {\n"; + if (property->_has_this) { + out << " nassertr(self != NULL, NULL);\n" + " Py_INCREF(self);\n"; + } else { + out << " Py_XINCREF(self);\n"; + } + out << " Dtool_MappingWrapper *wrap = PyObject_New(Dtool_MappingWrapper, &Dtool_MappingWrapper_Type);\n" + " wrap->_base._self = self;\n" + " wrap->_getitem_func = &Dtool_" << ClassName << "_" << ielem.get_name() << "_Mapping_Getitem;\n"; + if (!property->_setter_remaps.empty()) { + out << " wrap->_setitem_func = &Dtool_" << ClassName << "_" << ielem.get_name() << "_Mapping_Setitem;\n"; + } else { + out << " wrap->_setitem_func = NULL;\n"; + } + out << " return (PyObject *)wrap;\n" + "}\n\n"; + + } else if (ielem.is_sequence()) { out << "static PyObject *Dtool_" + ClassName + "_" + ielem.get_name() + "_Getter(PyObject *self, void *) {\n"; if (property->_has_this) { out << " nassertr(self != NULL, NULL);\n" @@ -6561,21 +6765,21 @@ write_getset(ostream &out, Object *obj, Property *property) { out << " Py_XINCREF(self);\n"; } out << " Dtool_SequenceWrapper *wrap = PyObject_New(Dtool_SequenceWrapper, &Dtool_SequenceWrapper_Type);\n" - " wrap->_base = self;\n" + " wrap->_base._self = self;\n" " wrap->_len_func = &Dtool_" << ClassName << "_" << ielem.get_name() << "_Len;\n" - " wrap->_getitem_func = &Dtool_" << ClassName << "_" << ielem.get_name() << "_Getitem;\n"; - if (property->_setter != NULL) { - out << " wrap->_setitem_func = &Dtool_" << ClassName << "_" << ielem.get_name() << "_Setitem;\n"; + " wrap->_getitem_func = &Dtool_" << ClassName << "_" << ielem.get_name() << "_Sequence_Getitem;\n"; + if (!property->_setter_remaps.empty()) { + out << " wrap->_setitem_func = &Dtool_" << ClassName << "_" << ielem.get_name() << "_Sequence_Setitem;\n"; } else { out << " wrap->_setitem_func = NULL;\n"; } out << " return (PyObject *)wrap;\n" - "}\n\n"; + "}\n\n"; - } else if (property->_getter != NULL) { + } else { // Write out a regular, unwrapped getter. out << "static PyObject *Dtool_" + ClassName + "_" + ielem.get_name() + "_Getter(PyObject *self, void *) {\n"; - FunctionRemap *remap = property->_getter->_remaps.front(); + FunctionRemap *remap = property->_getter_remaps.front(); if (remap->_has_this) { if (remap->_const_method) { @@ -6611,7 +6815,7 @@ write_getset(ostream &out, Object *obj, Property *property) { out << "}\n\n"; // Write out a setter if this is not a read-only property. - if (property->_setter != NULL) { + if (!property->_setter_remaps.empty()) { out << "static int Dtool_" + ClassName + "_" + ielem.get_name() + "_Setter(PyObject *self, PyObject *arg, void *) {\n"; if (remap->_has_this) { out << " " << cClassName << " *local_this = NULL;\n"; @@ -6630,7 +6834,7 @@ write_getset(ostream &out, Object *obj, Property *property) { << " return 0;\n"; } else { out << " Dtool_Raise_TypeError(\"can't delete " << ielem.get_name() << " attribute\");\n" - " return -1;\n"; + " return -1;\n"; } out << " }\n"; @@ -6649,9 +6853,9 @@ write_getset(ostream &out, Object *obj, Property *property) { // Extract only the setters that take one argument. Function::Remaps::iterator it; - for (it = property->_setter->_remaps.begin(); - it != property->_setter->_remaps.end(); - ++it) { + for (it = property->_setter_remaps.begin(); + it != property->_setter_remaps.end(); + ++it) { FunctionRemap *remap = *it; int min_num_args = remap->get_min_num_args(); int max_num_args = remap->get_max_num_args(); @@ -6763,62 +6967,8 @@ record_object(TypeIndex type_index) { ElementIndex element_index = itype.get_element(ei); const InterrogateElement &ielement = idb->get_element(element_index); - Property *property = new Property(ielement); - - if (ielement.has_setter()) { - FunctionIndex func_index = ielement.get_setter(); - Function *setter = record_function(itype, func_index); - if (is_function_legal(setter)) { - property->_setter = setter; - property->_has_this |= setter->_has_this; - } - } - - if (ielement.has_getter()) { - FunctionIndex func_index = ielement.get_getter(); - Function *getter = record_function(itype, func_index); - if (is_function_legal(getter)) { - property->_getter = getter; - property->_has_this |= getter->_has_this; - } - } - - if (ielement.has_has_function()) { - FunctionIndex func_index = ielement.get_has_function(); - Function *has_function = record_function(itype, func_index); - if (is_function_legal(has_function)) { - property->_has_function = has_function; - property->_has_this |= has_function->_has_this; - } - } - - if (ielement.has_clear_function()) { - FunctionIndex func_index = ielement.get_clear_function(); - Function *clear_function = record_function(itype, func_index); - if (is_function_legal(clear_function)) { - property->_clear_function = clear_function; - property->_has_this |= clear_function->_has_this; - } - } - - if (ielement.has_del_function()) { - FunctionIndex func_index = ielement.get_del_function(); - Function *del_function = record_function(itype, func_index); - if (is_function_legal(del_function)) { - property->_deleter = del_function; - property->_has_this |= del_function->_has_this; - } - } - - if (ielement.is_sequence()) { - FunctionIndex func_index = ielement.get_length_function(); - property->_length_function = record_function(itype, func_index); - if (property->_length_function != nullptr) { - property->_has_this |= property->_length_function->_has_this; - } - } - - if (property->_getter != NULL) { + Property *property = record_property(itype, itype.get_element(ei)); + if (property != nullptr) { object->_properties.push_back(property); } else { // No use exporting a property without a getter. @@ -6850,6 +7000,96 @@ record_object(TypeIndex type_index) { } return object; } + +/** + * + */ +InterfaceMaker::Property *InterfaceMakerPythonNative:: +record_property(const InterrogateType &itype, ElementIndex element_index) { + InterrogateDatabase *idb = InterrogateDatabase::get_ptr(); + const InterrogateElement &ielement = idb->get_element(element_index); + if (!ielement.has_getter()) { + // A property needs at the very least a getter. + return nullptr; + } + + Property *property; + { + FunctionIndex func_index = ielement.get_getter(); + if (func_index != 0) { + const InterrogateFunction &ifunc = idb->get_function(func_index); + property = new Property(ielement); + + InterrogateFunction::Instances::const_iterator ii; + for (ii = ifunc._instances->begin(); ii != ifunc._instances->end(); ++ii) { + CPPInstance *cppfunc = (*ii).second; + FunctionRemap *remap = + make_function_remap(itype, ifunc, cppfunc, 0); + + if (remap != nullptr && is_remap_legal(remap)) { + property->_getter_remaps.push_back(remap); + property->_has_this |= remap->_has_this; + } + } + } else { + return nullptr; + } + } + + if (ielement.has_setter()) { + FunctionIndex func_index = ielement.get_setter(); + if (func_index != 0) { + const InterrogateFunction &ifunc = idb->get_function(func_index); + + InterrogateFunction::Instances::const_iterator ii; + for (ii = ifunc._instances->begin(); ii != ifunc._instances->end(); ++ii) { + CPPInstance *cppfunc = (*ii).second; + FunctionRemap *remap = + make_function_remap(itype, ifunc, cppfunc, 0); + + if (remap != nullptr && is_remap_legal(remap)) { + property->_setter_remaps.push_back(remap); + property->_has_this |= remap->_has_this; + } + } + } + } + + if (ielement.has_has_function()) { + FunctionIndex func_index = ielement.get_has_function(); + Function *has_function = record_function(itype, func_index); + if (is_function_legal(has_function)) { + property->_has_function = has_function; + property->_has_this |= has_function->_has_this; + } + } + + if (ielement.has_clear_function()) { + FunctionIndex func_index = ielement.get_clear_function(); + Function *clear_function = record_function(itype, func_index); + if (is_function_legal(clear_function)) { + property->_clear_function = clear_function; + property->_has_this |= clear_function->_has_this; + } + } + + if (ielement.has_del_function()) { + FunctionIndex func_index = ielement.get_del_function(); + Function *del_function = record_function(itype, func_index); + if (is_function_legal(del_function)) { + property->_deleter = del_function; + property->_has_this |= del_function->_has_this; + } + } + + if (ielement.is_sequence()) { + FunctionIndex func_index = ielement.get_length_function(); + property->_length_function = record_function(itype, func_index); + } + + return property; +} + /** * Walks through the set of functions in the database and generates wrappers * for each function, storing these in the database. No actual code should be diff --git a/dtool/src/interrogate/interfaceMakerPythonNative.h b/dtool/src/interrogate/interfaceMakerPythonNative.h index 8f66fcf3b0..2c0195fdbf 100644 --- a/dtool/src/interrogate/interfaceMakerPythonNative.h +++ b/dtool/src/interrogate/interfaceMakerPythonNative.h @@ -47,6 +47,7 @@ public: virtual bool separate_overloading(); virtual Object *record_object(TypeIndex type_index); + Property *record_property(const InterrogateType &itype, ElementIndex element_index); protected: virtual string get_wrapper_prefix(); @@ -111,6 +112,9 @@ private: // Decref temporary args object before returning. RF_decref_args = 0x1000, + + // This raises a KeyError on falsey (or -1) return value. + RF_raise_keyerror = 0x4000, }; class SlottedFunctionDef { diff --git a/dtool/src/interrogate/interrogateBuilder.cxx b/dtool/src/interrogate/interrogateBuilder.cxx index 349e9c46ad..a8fd7e1e57 100644 --- a/dtool/src/interrogate/interrogateBuilder.cxx +++ b/dtool/src/interrogate/interrogateBuilder.cxx @@ -1798,34 +1798,46 @@ get_make_property(CPPMakeProperty *make_property, CPPStructType *struct_type, CP } string property_name = make_property->get_local_name(&parser); + InterrogateDatabase *idb = InterrogateDatabase::get_ptr(); // First, check to see if it's already there. + ElementIndex index = 0; PropertiesByName::const_iterator tni = _properties_by_name.find(property_name); if (tni != _properties_by_name.end()) { - ElementIndex index = (*tni).second; - return index; + index = (*tni).second; + const InterrogateElement &ielem = idb->get_element(index); + if (ielem._make_property == make_property) { + // This is the same property. + return index; + } + + // It is possible to have property definitions with the same name, but + // they cannot define conflicting interfaces. + if ((ielem.is_sequence() || ielem.is_mapping()) != + (make_property->_type != CPPMakeProperty::T_normal)) { + cerr << "Conflicting property definitions for " << property_name << "!\n"; + return index; + } } // If we have a length function (ie. this is a sequence property), we should // find the function that will give us the length. FunctionIndex length_function = 0; - bool is_seq = false; - - CPPFunctionGroup::Instances::const_iterator fi; - CPPFunctionGroup *fgroup = make_property->_length_function; - if (fgroup != NULL) { - is_seq = true; - - for (fi = fgroup->_instances.begin(); fi != fgroup->_instances.end(); ++fi) { - CPPInstance *function = (*fi); - CPPFunctionType *ftype = - function->_type->as_function_type(); - if (ftype != NULL) { - length_function = get_function(function, "", struct_type, - struct_type->get_scope(), 0); - if (length_function != 0) { - break; + if (make_property->_type & CPPMakeProperty::T_sequence) { + CPPFunctionGroup::Instances::const_iterator fi; + CPPFunctionGroup *fgroup = make_property->_length_function; + if (fgroup != NULL) { + for (fi = fgroup->_instances.begin(); fi != fgroup->_instances.end(); ++fi) { + CPPInstance *function = (*fi); + CPPFunctionType *ftype = + function->_type->as_function_type(); + if (ftype != NULL) { + length_function = get_function(function, "", struct_type, + struct_type->get_scope(), 0); + if (length_function != 0) { + break; + } } } } @@ -1840,7 +1852,10 @@ get_make_property(CPPMakeProperty *make_property, CPPStructType *struct_type, CP CPPInstance *getter = NULL; CPPType *return_type = NULL; - fgroup = make_property->_get_function; + // How many arguments we expect the getter to have. + size_t num_args = (size_t)(make_property->_type != CPPMakeProperty::T_normal); + + CPPFunctionGroup *fgroup = make_property->_get_function; if (fgroup != NULL) { CPPFunctionGroup::Instances::const_iterator fi; for (fi = fgroup->_instances.begin(); fi != fgroup->_instances.end(); ++fi) { @@ -1852,9 +1867,13 @@ get_make_property(CPPMakeProperty *make_property, CPPStructType *struct_type, CP const CPPParameterList::Parameters ¶ms = ftype->_parameters->_parameters; - size_t expected_num_args = (size_t)is_seq; + size_t expected_num_args = 0; size_t index_arg = 0; + if (make_property->_type != CPPMakeProperty::T_normal) { + ++expected_num_args; + } + if (!params.empty() && params[0]->get_simple_name() == "self" && TypeManager::is_pointer_to_PyObject(params[0]->_type)) { // Taking a PyObject *self argument. @@ -1867,7 +1886,8 @@ get_make_property(CPPMakeProperty *make_property, CPPStructType *struct_type, CP (params.size() > expected_num_args && params[expected_num_args]->_initializer != NULL)) { // If this is a sequence getter, it must take an index argument. - if (is_seq && !TypeManager::is_integer(params[index_arg]->_type)) { + if (make_property->_type == CPPMakeProperty::T_sequence && + !TypeManager::is_integer(params[index_arg]->_type)) { continue; } @@ -1899,13 +1919,14 @@ get_make_property(CPPMakeProperty *make_property, CPPStructType *struct_type, CP CPPInstance *function = (*fi); CPPFunctionType *ftype = function->_type->as_function_type(); - if (ftype != NULL && TypeManager::is_bool(ftype->_return_type)) { + if (ftype != nullptr && (TypeManager::is_integer(ftype->_return_type) || + TypeManager::is_pointer(ftype->_return_type))) { hasser = function; break; } } - if (hasser == NULL || return_type == NULL) { + if (hasser == nullptr) { cerr << "No instance of has-function '" << fgroup->_name << "' is suitable!\n"; return 0; @@ -1921,44 +1942,77 @@ get_make_property(CPPMakeProperty *make_property, CPPStructType *struct_type, CP for (fi = fgroup->_instances.begin(); fi != fgroup->_instances.end(); ++fi) { CPPInstance *function = (*fi); CPPFunctionType *ftype = function->_type->as_function_type(); - if (ftype != NULL && ftype->_parameters->_parameters.size() == (size_t)is_seq) { + if (ftype != NULL && ftype->_parameters->_parameters.size() == num_args) { deleter = function; break; } } - if (deleter == NULL || return_type == NULL) { + if (deleter == nullptr) { cerr << "No instance of delete-function '" << fgroup->_name << "' is suitable!\n"; return 0; } } - InterrogateDatabase *idb = InterrogateDatabase::get_ptr(); - // It isn't here, so we'll have to define it. - ElementIndex index = idb->get_next_index(); - _properties_by_name[property_name] = index; + if (index == 0) { + // It isn't here, so we'll have to define it. + index = idb->get_next_index(); + _properties_by_name[property_name] = index; - InterrogateElement iproperty; - iproperty._name = make_property->get_simple_name(); - iproperty._scoped_name = descope(make_property->get_local_name(&parser)); + InterrogateElement iproperty; + iproperty._name = make_property->get_simple_name(); + iproperty._scoped_name = descope(make_property->get_local_name(&parser)); + idb->add_element(index, iproperty); + } + + InterrogateElement &iproperty = idb->update_element(index); if (return_type != NULL) { - iproperty._type = get_type(TypeManager::unwrap_reference(return_type), false); + TypeIndex return_index = get_type(TypeManager::unwrap_reference(return_type), false); + if (iproperty._type != 0 && iproperty._type != return_index) { + cerr << "Property " << property_name << " has inconsistent element type!\n"; + } } else { iproperty._type = 0; } - if (length_function != 0) { + if (make_property->_type & CPPMakeProperty::T_sequence) { iproperty._flags |= InterrogateElement::F_sequence; iproperty._length_function = length_function; } - if (getter != NULL) { - iproperty._flags |= InterrogateElement::F_has_getter; - iproperty._getter = get_function(getter, "", struct_type, - struct_type->get_scope(), 0); - nassertr(iproperty._getter, 0); + if (make_property->_type & CPPMakeProperty::T_mapping) { + iproperty._flags |= InterrogateElement::F_mapping; + } + + if (make_property->_type == CPPMakeProperty::T_normal) { + if (getter != NULL) { + iproperty._flags |= InterrogateElement::F_has_getter; + iproperty._getter = get_function(getter, "", struct_type, + struct_type->get_scope(), 0); + nassertr(iproperty._getter, 0); + } + } else { + // We could have a mixed sequence/mapping property, so synthesize a + // getitem function. We don't really care what's in here; we just use + // this to store the remaps. + if (!iproperty.has_getter()) { + iproperty._flags |= InterrogateElement::F_has_getter; + iproperty._getter = InterrogateDatabase::get_ptr()->get_next_index(); + InterrogateFunction *ifunction = new InterrogateFunction; + ifunction->_instances = new InterrogateFunction::Instances; + InterrogateDatabase::get_ptr()->add_function(iproperty._getter, ifunction); + } + + // Add our getter to the generated getitem function. + string signature = TypeManager::get_function_signature(getter); + InterrogateFunction &ifunction = + InterrogateDatabase::get_ptr()->update_function(iproperty._getter); + if (ifunction._instances == nullptr) { + ifunction._instances = new InterrogateFunction::Instances; + } + ifunction._instances->insert(InterrogateFunction::Instances::value_type(signature, getter)); } if (hasser != NULL) { @@ -2011,7 +2065,6 @@ get_make_property(CPPMakeProperty *make_property, CPPStructType *struct_type, CP } } - idb->add_element(index, iproperty); return index; } @@ -2621,7 +2674,9 @@ define_struct_type(InterrogateType &itype, CPPStructType *cpptype, } else if ((*di)->get_subtype() == CPPDeclaration::ST_make_property) { ElementIndex element_index = get_make_property((*di)->as_make_property(), cpptype, scope); - itype._elements.push_back(element_index); + if (find(itype._elements.begin(), itype._elements.end(), element_index) == itype._elements.end()) { + itype._elements.push_back(element_index); + } } else if ((*di)->get_subtype() == CPPDeclaration::ST_make_seq) { MakeSeqIndex make_seq_index = get_make_seq((*di)->as_make_seq(), cpptype); diff --git a/dtool/src/interrogatedb/interrogateElement.I b/dtool/src/interrogatedb/interrogateElement.I index 7e3ba61f77..9dc587efab 100644 --- a/dtool/src/interrogatedb/interrogateElement.I +++ b/dtool/src/interrogatedb/interrogateElement.I @@ -26,6 +26,7 @@ InterrogateElement(InterrogateModuleDef *def) : _clear_function = 0; _del_function = 0; _length_function = 0; + _make_property = nullptr; } /** @@ -52,6 +53,7 @@ operator = (const InterrogateElement ©) { _clear_function = copy._clear_function; _del_function = copy._del_function; _length_function = copy._length_function; + _make_property = copy._make_property; } /** @@ -199,6 +201,14 @@ get_length_function() const { return _length_function; } +/** + * + */ +INLINE bool InterrogateElement:: +is_mapping() const { + return (_flags & F_mapping) != 0; +} + INLINE ostream & operator << (ostream &out, const InterrogateElement &element) { diff --git a/dtool/src/interrogatedb/interrogateElement.h b/dtool/src/interrogatedb/interrogateElement.h index 3506d7b9a8..5488cc4cfe 100644 --- a/dtool/src/interrogatedb/interrogateElement.h +++ b/dtool/src/interrogatedb/interrogateElement.h @@ -19,6 +19,7 @@ #include "interrogateComponent.h" class IndexRemapper; +class CPPMakeProperty; /** * An internal representation of a data element, like a data member or a @@ -51,6 +52,7 @@ public: INLINE FunctionIndex get_del_function() const; INLINE bool is_sequence() const; INLINE FunctionIndex get_length_function() const; + INLINE bool is_mapping() const; void output(ostream &out) const; void input(istream &in); @@ -80,6 +82,8 @@ private: FunctionIndex _clear_function; FunctionIndex _del_function; + CPPMakeProperty *_make_property; + friend class InterrogateBuilder; }; diff --git a/dtool/src/interrogatedb/py_panda.cxx b/dtool/src/interrogatedb/py_panda.cxx index 1156b6dfef..d629fd6d60 100644 --- a/dtool/src/interrogatedb/py_panda.cxx +++ b/dtool/src/interrogatedb/py_panda.cxx @@ -614,6 +614,14 @@ PyObject *Dtool_PyModuleInitHelper(LibraryDef *defs[], const char *modulename) { return Dtool_Raise_TypeError("PyType_Ready(Dtool_SequenceWrapper)"); } + if (PyType_Ready(&Dtool_MappingWrapper_Type) < 0) { + return Dtool_Raise_TypeError("PyType_Ready(Dtool_MappingWrapper)"); + } + + if (PyType_Ready(&Dtool_SeqMapWrapper_Type) < 0) { + return Dtool_Raise_TypeError("PyType_Ready(Dtool_SeqMapWrapper)"); + } + if (PyType_Ready(&Dtool_StaticProperty_Type) < 0) { return Dtool_Raise_TypeError("PyType_Ready(Dtool_StaticProperty_Type)"); } @@ -1028,34 +1036,79 @@ bool Dtool_ExtractOptionalArg(PyObject **result, PyObject *args, PyObject *kwds) } /** - * This class is returned from properties that require a settable interface, - * ie. something.children[i] = 3. + * These classes are returned from properties that require a subscript + * interface, ie. something.children[i] = 3. */ -static void Dtool_SequenceWrapper_dealloc(PyObject *self) { - Dtool_SequenceWrapper *wrap = (Dtool_SequenceWrapper *)self; +static void Dtool_WrapperBase_dealloc(PyObject *self) { + Dtool_WrapperBase *wrap = (Dtool_WrapperBase *)self; nassertv(wrap); - Py_XDECREF(wrap->_base); + Py_XDECREF(wrap->_self); } static Py_ssize_t Dtool_SequenceWrapper_length(PyObject *self) { Dtool_SequenceWrapper *wrap = (Dtool_SequenceWrapper *)self; nassertr(wrap, -1); - nassertr(wrap->_len_func, -1); - return wrap->_len_func(wrap->_base); + if (wrap->_len_func != nullptr) { + nassertr(wrap->_len_func, -1); + return wrap->_len_func(wrap->_base._self); + } else { + Dtool_Raise_TypeError("property does not support len()"); + return -1; + } } static PyObject *Dtool_SequenceWrapper_getitem(PyObject *self, Py_ssize_t index) { Dtool_SequenceWrapper *wrap = (Dtool_SequenceWrapper *)self; - nassertr(wrap, NULL); - nassertr(wrap->_getitem_func, NULL); - return wrap->_getitem_func(wrap->_base, index); + nassertr(wrap, nullptr); + nassertr(wrap->_getitem_func, nullptr); + return wrap->_getitem_func(wrap->_base._self, index); } static int Dtool_SequenceWrapper_setitem(PyObject *self, Py_ssize_t index, PyObject *value) { Dtool_SequenceWrapper *wrap = (Dtool_SequenceWrapper *)self; nassertr(wrap, -1); - nassertr(wrap->_setitem_func, -1); - return wrap->_setitem_func(wrap->_base, index, value); + if (wrap->_setitem_func != nullptr) { + return wrap->_setitem_func(wrap->_base._self, index, value); + } else { + Dtool_Raise_TypeError("property does not support item assignment"); + return -1; + } +} + +static PyObject *Dtool_MappingWrapper_getitem(PyObject *self, PyObject *key) { + Dtool_MappingWrapper *wrap = (Dtool_MappingWrapper *)self; + nassertr(wrap, nullptr); + nassertr(wrap->_getitem_func, nullptr); + return wrap->_getitem_func(wrap->_base._self, key); +} + +static int Dtool_MappingWrapper_setitem(PyObject *self, PyObject *key, PyObject *value) { + Dtool_MappingWrapper *wrap = (Dtool_MappingWrapper *)self; + nassertr(wrap, -1); + if (wrap->_setitem_func != nullptr) { + return wrap->_setitem_func(wrap->_base._self, key, value); + } else { + Dtool_Raise_TypeError("property does not support item assignment"); + return -1; + } +} + +static PyObject *Dtool_SeqMapWrapper_getitem(PyObject *self, PyObject *key) { + Dtool_SeqMapWrapper *wrap = (Dtool_SeqMapWrapper *)self; + nassertr(wrap, nullptr); + nassertr(wrap->_map_getitem_func, nullptr); + return wrap->_map_getitem_func(wrap->_seq._base._self, key); +} + +static int Dtool_SeqMapWrapper_setitem(PyObject *self, PyObject *key, PyObject *value) { + Dtool_SeqMapWrapper *wrap = (Dtool_SeqMapWrapper *)self; + nassertr(wrap, -1); + if (wrap->_map_setitem_func != nullptr) { + return wrap->_map_setitem_func(wrap->_seq._base._self, key, value); + } else { + Dtool_Raise_TypeError("property does not support item assignment"); + return -1; + } } static PySequenceMethods Dtool_SequenceWrapper_SequenceMethods = { @@ -1071,12 +1124,27 @@ static PySequenceMethods Dtool_SequenceWrapper_SequenceMethods = { 0, // sq_inplace_repeat }; +static PyMappingMethods Dtool_MappingWrapper_MappingMethods = { + 0, // mp_length + Dtool_MappingWrapper_getitem, + Dtool_MappingWrapper_setitem, +}; + +static PyMappingMethods Dtool_SeqMapWrapper_MappingMethods = { + Dtool_SequenceWrapper_length, + Dtool_SeqMapWrapper_getitem, + Dtool_SeqMapWrapper_setitem, +}; + +/** + * This variant defines only a sequence interface. + */ PyTypeObject Dtool_SequenceWrapper_Type = { PyVarObject_HEAD_INIT(NULL, 0) "sequence wrapper", sizeof(Dtool_SequenceWrapper), 0, // tp_itemsize - Dtool_SequenceWrapper_dealloc, + Dtool_WrapperBase_dealloc, 0, // tp_print 0, // tp_getattr 0, // tp_setattr @@ -1262,4 +1330,128 @@ PyTypeObject Dtool_StaticProperty_Type = { #endif }; +/** + * This variant defines only a mapping interface. + */ +PyTypeObject Dtool_MappingWrapper_Type = { + PyVarObject_HEAD_INIT(NULL, 0) + "mapping wrapper", + sizeof(Dtool_MappingWrapper), + 0, // tp_itemsize + Dtool_WrapperBase_dealloc, + 0, // tp_print + 0, // tp_getattr + 0, // tp_setattr +#if PY_MAJOR_VERSION >= 3 + 0, // tp_reserved +#else + 0, // tp_compare +#endif + 0, // tp_repr + 0, // tp_as_number + 0, // tp_as_sequence + &Dtool_MappingWrapper_MappingMethods, + 0, // tp_hash + 0, // tp_call + 0, // tp_str + PyObject_GenericGetAttr, + PyObject_GenericSetAttr, + 0, // tp_as_buffer + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES, + 0, // tp_doc + 0, // tp_traverse + 0, // tp_clear + 0, // tp_richcompare + 0, // tp_weaklistoffset + 0, // tp_iter + 0, // tp_iternext + 0, // tp_methods + 0, // tp_members + 0, // tp_getset + 0, // tp_base + 0, // tp_dict + 0, // tp_descr_get + 0, // tp_descr_set + 0, // tp_dictoffset + 0, // tp_init + PyType_GenericAlloc, + 0, // tp_new + PyObject_Del, + 0, // tp_is_gc + 0, // tp_bases + 0, // tp_mro + 0, // tp_cache + 0, // tp_subclasses + 0, // tp_weaklist + 0, // tp_del +#if PY_VERSION_HEX >= 0x02060000 + 0, // tp_version_tag +#endif +#if PY_VERSION_HEX >= 0x03040000 + 0, // tp_finalize +#endif +}; + +/** + * This variant defines both a sequence and mapping interface. + */ +PyTypeObject Dtool_SeqMapWrapper_Type = { + PyVarObject_HEAD_INIT(NULL, 0) + "sequence/mapping wrapper", + sizeof(Dtool_SeqMapWrapper), + 0, // tp_itemsize + Dtool_WrapperBase_dealloc, + 0, // tp_print + 0, // tp_getattr + 0, // tp_setattr +#if PY_MAJOR_VERSION >= 3 + 0, // tp_reserved +#else + 0, // tp_compare +#endif + 0, // tp_repr + 0, // tp_as_number + &Dtool_SequenceWrapper_SequenceMethods, + &Dtool_SeqMapWrapper_MappingMethods, + 0, // tp_hash + 0, // tp_call + 0, // tp_str + PyObject_GenericGetAttr, + PyObject_GenericSetAttr, + 0, // tp_as_buffer + Py_TPFLAGS_DEFAULT | Py_TPFLAGS_CHECKTYPES, + 0, // tp_doc + 0, // tp_traverse + 0, // tp_clear + 0, // tp_richcompare + 0, // tp_weaklistoffset + 0, // tp_iter + 0, // tp_iternext + 0, // tp_methods + 0, // tp_members + 0, // tp_getset + 0, // tp_base + 0, // tp_dict + 0, // tp_descr_get + 0, // tp_descr_set + 0, // tp_dictoffset + 0, // tp_init + PyType_GenericAlloc, + 0, // tp_new + PyObject_Del, + 0, // tp_is_gc + 0, // tp_bases + 0, // tp_mro + 0, // tp_cache + 0, // tp_subclasses + 0, // tp_weaklist + 0, // tp_del +#if PY_VERSION_HEX >= 0x02060000 + 0, // tp_version_tag +#endif +#if PY_VERSION_HEX >= 0x03040000 + 0, // tp_finalize +#endif +}; + #endif // HAVE_PYTHON diff --git a/dtool/src/interrogatedb/py_panda.h b/dtool/src/interrogatedb/py_panda.h index 9df9fad4af..21b4a8b53e 100644 --- a/dtool/src/interrogatedb/py_panda.h +++ b/dtool/src/interrogatedb/py_panda.h @@ -339,6 +339,9 @@ EXPCL_INTERROGATEDB PyObject *_Dtool_Raise_BadArgumentsError(); #define Dtool_Raise_BadArgumentsError(x) Dtool_Raise_TypeError("Arguments must match:\n" x) #endif +// These functions are similar to Dtool_WrapValue, except that they also +// contain code for checking assertions and exceptions when compiling with +// NDEBUG mode on. EXPCL_INTERROGATEDB PyObject *_Dtool_Return_None(); EXPCL_INTERROGATEDB PyObject *Dtool_Return_Bool(bool value); EXPCL_INTERROGATEDB PyObject *_Dtool_Return(PyObject *value); @@ -465,18 +468,36 @@ EXPCL_INTERROGATEDB PyObject * map_deepcopy_to_copy(PyObject *self, PyObject *args); /** - * This class is returned from properties that require a settable interface, - * ie. something.children[i] = 3. + * These classes are returned from properties that require a subscript + * interface, ie. something.children[i] = 3. */ +struct Dtool_WrapperBase { + PyObject_HEAD; + PyObject *_self; +}; + struct Dtool_SequenceWrapper { - PyObject_HEAD - PyObject *_base; + Dtool_WrapperBase _base; lenfunc _len_func; ssizeargfunc _getitem_func; ssizeobjargproc _setitem_func; }; +struct Dtool_MappingWrapper { + Dtool_WrapperBase _base; + binaryfunc _getitem_func; + objobjargproc _setitem_func; +}; + +struct Dtool_SeqMapWrapper { + Dtool_SequenceWrapper _seq; + binaryfunc _map_getitem_func; + objobjargproc _map_setitem_func; +}; + EXPCL_INTERROGATEDB extern PyTypeObject Dtool_SequenceWrapper_Type; +EXPCL_INTERROGATEDB extern PyTypeObject Dtool_MappingWrapper_Type; +EXPCL_INTERROGATEDB extern PyTypeObject Dtool_SeqMapWrapper_Type; EXPCL_INTERROGATEDB extern PyTypeObject Dtool_StaticProperty_Type; EXPCL_INTERROGATEDB PyObject *Dtool_NewStaticProperty(PyTypeObject *obj, const PyGetSetDef *getset); diff --git a/panda/src/chan/animGroup.h b/panda/src/chan/animGroup.h index af81aba3b1..22b1366c84 100644 --- a/panda/src/chan/animGroup.h +++ b/panda/src/chan/animGroup.h @@ -44,12 +44,13 @@ PUBLISHED: AnimGroup *get_child(int n) const; MAKE_SEQ(get_children, get_num_children, get_child); - MAKE_SEQ_PROPERTY(children, get_num_children, get_child); - AnimGroup *get_child_named(const string &name) const; AnimGroup *find_child(const string &name) const; void sort_descendants(); + MAKE_SEQ_PROPERTY(children, get_num_children, get_child); + MAKE_MAP_PROPERTY(children, get_child_named, get_child_named); + public: virtual TypeHandle get_value_type() const; diff --git a/panda/src/chan/partGroup.h b/panda/src/chan/partGroup.h index 0d5967a39a..5265846c19 100644 --- a/panda/src/chan/partGroup.h +++ b/panda/src/chan/partGroup.h @@ -70,12 +70,14 @@ PUBLISHED: int get_num_children() const; PartGroup *get_child(int n) const; MAKE_SEQ(get_children, get_num_children, get_child); - MAKE_SEQ_PROPERTY(children, get_num_children, get_child); PartGroup *get_child_named(const string &name) const; PartGroup *find_child(const string &name) const; void sort_descendants(); + MAKE_SEQ_PROPERTY(children, get_num_children, get_child); + MAKE_MAP_PROPERTY(children, get_child_named, get_child_named); + bool apply_freeze(const TransformState *transform); virtual bool apply_freeze_matrix(const LVecBase3 &pos, const LVecBase3 &hpr, const LVecBase3 &scale); virtual bool apply_freeze_scalar(PN_stdfloat value); diff --git a/panda/src/gobj/geomVertexFormat.h b/panda/src/gobj/geomVertexFormat.h index c7451225e2..23d1ab5a7b 100644 --- a/panda/src/gobj/geomVertexFormat.h +++ b/panda/src/gobj/geomVertexFormat.h @@ -125,6 +125,9 @@ PUBLISHED: MAKE_SEQ_PROPERTY(points, get_num_points, get_point); MAKE_SEQ_PROPERTY(vectors, get_num_vectors, get_vector); + // We also define this as a mapping interface, for lookups by name. + MAKE_MAP_PROPERTY(columns, has_column, get_column); + void output(ostream &out) const; void write(ostream &out, int indent_level = 0) const; void write_with_data(ostream &out, int indent_level, diff --git a/panda/src/gobj/texture.h b/panda/src/gobj/texture.h index e40ca6f8e5..15dae5f02d 100644 --- a/panda/src/gobj/texture.h +++ b/panda/src/gobj/texture.h @@ -539,6 +539,8 @@ PUBLISHED: void set_aux_data(const string &key, TypedReferenceCount *aux_data); void clear_aux_data(const string &key); TypedReferenceCount *get_aux_data(const string &key) const; + MAKE_MAP_PROPERTY(aux_data, get_aux_data, get_aux_data, + set_aux_data, clear_aux_data); INLINE static void set_textures_power_2(AutoTextureScale scale); INLINE static AutoTextureScale get_textures_power_2(); diff --git a/panda/src/gobj/transformBlend.I b/panda/src/gobj/transformBlend.I index 2d1f3624c2..936ca57cc4 100644 --- a/panda/src/gobj/transformBlend.I +++ b/panda/src/gobj/transformBlend.I @@ -142,6 +142,17 @@ get_weight(size_t n) const { return _entries[n]._weight; } +/** + * Removes the nth transform stored in the blend object. + */ +INLINE void TransformBlend:: +remove_transform(size_t n) { + nassertv(n < _entries.size()); + _entries.erase(_entries.begin() + n); + Thread *current_thread = Thread::get_current_thread(); + clear_result(current_thread); +} + /** * Replaces the nth transform stored in the blend object. */ diff --git a/panda/src/gobj/transformBlend.h b/panda/src/gobj/transformBlend.h index 02f39f05d1..9ca49ab9c4 100644 --- a/panda/src/gobj/transformBlend.h +++ b/panda/src/gobj/transformBlend.h @@ -62,9 +62,15 @@ PUBLISHED: INLINE const VertexTransform *get_transform(size_t n) const; MAKE_SEQ(get_transforms, get_num_transforms, get_transform); INLINE PN_stdfloat get_weight(size_t n) const; + INLINE void remove_transform(size_t n); INLINE void set_transform(size_t n, const VertexTransform *transform); INLINE void set_weight(size_t n, PN_stdfloat weight); + MAKE_SEQ_PROPERTY(transforms, get_num_transforms, get_transform, + set_transform, remove_transform); + MAKE_SEQ_PROPERTY(weights, get_num_transforms, get_weight, set_weight); + MAKE_MAP_PROPERTY(weights, has_transform, get_weight); + INLINE void update_blend(Thread *current_thread) const; INLINE void get_blend(LMatrix4 &result, Thread *current_thread) const; diff --git a/panda/src/pgraph/camera.h b/panda/src/pgraph/camera.h index f983773846..84b33bf55b 100644 --- a/panda/src/pgraph/camera.h +++ b/panda/src/pgraph/camera.h @@ -91,12 +91,16 @@ PUBLISHED: void clear_tag_states(); bool has_tag_state(const string &tag_state) const; CPT(RenderState) get_tag_state(const string &tag_state) const; + MAKE_MAP_PROPERTY(tag_states, has_tag_state, get_tag_state, + set_tag_state, clear_tag_state); void set_aux_scene_data(const NodePath &node_path, AuxSceneData *data); bool clear_aux_scene_data(const NodePath &node_path); AuxSceneData *get_aux_scene_data(const NodePath &node_path) const; void list_aux_scene_data(ostream &out) const; int cleanup_aux_scene_data(Thread *current_thread = Thread::get_current_thread()); + MAKE_MAP_PROPERTY(aux_scene_data, get_aux_scene_data, get_aux_scene_data, + set_aux_scene_data, clear_aux_scene_data); private: void add_display_region(DisplayRegion *display_region); diff --git a/panda/src/pgraph/nodePath.h b/panda/src/pgraph/nodePath.h index 85eb068d55..2225ea745e 100644 --- a/panda/src/pgraph/nodePath.h +++ b/panda/src/pgraph/nodePath.h @@ -913,6 +913,9 @@ PUBLISHED: INLINE bool has_net_tag(const string &key) const; NodePath find_net_tag(const string &key) const; + MAKE_MAP_PROPERTY(tags, has_tag, get_tag, set_tag, clear_tag); + MAKE_MAP_PROPERTY(net_tags, has_net_tag, get_net_tag); + EXTENSION(INLINE PyObject *get_tag_keys() const); EXTENSION(PyObject *get_python_tags()); diff --git a/panda/src/pgraph/renderState.h b/panda/src/pgraph/renderState.h index 0cdcca07a1..aa337bbb04 100644 --- a/panda/src/pgraph/renderState.h +++ b/panda/src/pgraph/renderState.h @@ -109,6 +109,8 @@ PUBLISHED: INLINE int get_override(TypeHandle type) const; INLINE int get_override(int slot) const; + MAKE_MAP_PROPERTY(attribs, has_attrib, get_attrib); + INLINE CPT(RenderState) get_unique() const; virtual bool unref() const; diff --git a/panda/src/pgraph/shaderInput.I b/panda/src/pgraph/shaderInput.I index 30d1bab97a..8c37322082 100644 --- a/panda/src/pgraph/shaderInput.I +++ b/panda/src/pgraph/shaderInput.I @@ -417,6 +417,14 @@ ShaderInput(CPT_InternalName name, const LVecBase2i &vec, int priority) : { } +/** + * + */ +INLINE ShaderInput:: +operator bool () const { + return _type != M_invalid; +} + /** * */ diff --git a/panda/src/pgraph/shaderInput.h b/panda/src/pgraph/shaderInput.h index 1947dc0f86..d0ae3eae20 100644 --- a/panda/src/pgraph/shaderInput.h +++ b/panda/src/pgraph/shaderInput.h @@ -104,6 +104,7 @@ PUBLISHED: M_buffer, }; + INLINE operator bool() const; INLINE bool operator == (const ShaderInput &other) const; INLINE bool operator != (const ShaderInput &other) const; INLINE bool operator < (const ShaderInput &other) const; diff --git a/panda/src/pgraph/textureAttrib.h b/panda/src/pgraph/textureAttrib.h index aa9eea03c9..040cde7ef2 100644 --- a/panda/src/pgraph/textureAttrib.h +++ b/panda/src/pgraph/textureAttrib.h @@ -64,12 +64,18 @@ PUBLISHED: int find_on_stage(const TextureStage *stage) const; + MAKE_SEQ_PROPERTY(on_stages, get_num_on_stages, get_on_stage); + MAKE_MAP_PROPERTY(on_stages, find_on_stage, get_on_stage); + INLINE int get_num_off_stages() const; INLINE TextureStage *get_off_stage(int n) const; MAKE_SEQ(get_off_stages, get_num_off_stages, get_off_stage); INLINE bool has_off_stage(TextureStage *stage) const; INLINE bool has_all_off() const; + MAKE_SEQ_PROPERTY(off_stages, get_num_off_stages, get_off_stage); + MAKE_MAP_PROPERTY(off_stages, has_off_stage, get_off_stage); + INLINE bool is_identity() const; CPT(RenderAttrib) add_on_stage(TextureStage *stage, Texture *tex, int override = 0) const;