From 22f0b508510cf2daa9a5f7e555d463d1d45ecfe2 Mon Sep 17 00:00:00 2001 From: rdb Date: Thu, 3 Nov 2016 12:13:06 +0100 Subject: [PATCH] More Interrogate C++11 support changes: * Parse variadic templates * Add (incomplete) type_traits support * Parse anonymous class template params * Parse volatile/lvalue/rvalue methods * Don't generate destructor for indestructible types * Add xmmintrin.h header * Allow invoking extensions with references --- dtool/src/cppparser/cppArrayType.cxx | 11 +- dtool/src/cppparser/cppArrayType.h | 1 + dtool/src/cppparser/cppBison.cxx.prebuilt | 9516 +++++++++-------- dtool/src/cppparser/cppBison.h.prebuilt | 492 +- dtool/src/cppparser/cppBison.yxx | 346 +- .../cppparser/cppClassTemplateParameter.cxx | 30 +- .../src/cppparser/cppClassTemplateParameter.h | 1 + dtool/src/cppparser/cppConstType.cxx | 43 +- dtool/src/cppparser/cppConstType.h | 5 + dtool/src/cppparser/cppDeclaration.cxx | 10 +- dtool/src/cppparser/cppDeclaration.h | 71 +- dtool/src/cppparser/cppExpression.cxx | 219 +- dtool/src/cppparser/cppExpression.h | 11 +- dtool/src/cppparser/cppExtensionType.cxx | 26 +- dtool/src/cppparser/cppExtensionType.h | 2 + dtool/src/cppparser/cppFunctionType.cxx | 11 +- dtool/src/cppparser/cppFunctionType.h | 3 + dtool/src/cppparser/cppInstance.cxx | 13 +- dtool/src/cppparser/cppInstance.h | 3 + dtool/src/cppparser/cppInstanceIdentifier.cxx | 14 +- dtool/src/cppparser/cppInstanceIdentifier.h | 4 + dtool/src/cppparser/cppPointerType.cxx | 65 + dtool/src/cppparser/cppPointerType.h | 2 + dtool/src/cppparser/cppPreprocessor.cxx | 58 +- dtool/src/cppparser/cppReferenceType.cxx | 79 + dtool/src/cppparser/cppReferenceType.h | 3 + dtool/src/cppparser/cppScope.cxx | 1 - dtool/src/cppparser/cppSimpleType.cxx | 53 + dtool/src/cppparser/cppSimpleType.h | 18 +- dtool/src/cppparser/cppStructType.cxx | 377 +- dtool/src/cppparser/cppStructType.h | 12 + dtool/src/cppparser/cppTemplateScope.cxx | 6 +- dtool/src/cppparser/cppType.cxx | 176 +- dtool/src/cppparser/cppType.h | 17 + dtool/src/cppparser/cppTypedefType.cxx | 41 + dtool/src/cppparser/cppTypedefType.h | 5 + dtool/src/interrogate/interrogateBuilder.cxx | 10 +- dtool/src/interrogatedb/extension.h | 16 + dtool/src/parser-inc/type_traits | 96 + dtool/src/parser-inc/xmmintrin.h | 1 + 40 files changed, 7175 insertions(+), 4693 deletions(-) create mode 100644 dtool/src/parser-inc/type_traits create mode 100644 dtool/src/parser-inc/xmmintrin.h diff --git a/dtool/src/cppparser/cppArrayType.cxx b/dtool/src/cppparser/cppArrayType.cxx index ac891e259f..ce861c1d69 100644 --- a/dtool/src/cppparser/cppArrayType.cxx +++ b/dtool/src/cppparser/cppArrayType.cxx @@ -13,6 +13,7 @@ #include "cppArrayType.h" #include "cppExpression.h" +#include "cppPointerType.h" /** * @@ -63,6 +64,14 @@ is_tbd() const { return _element_type->is_tbd(); } +/** + * Returns true if the type is considered a standard layout type. + */ +bool CPPArrayType:: +is_standard_layout() const { + return _element_type->is_standard_layout(); +} + /** * Returns true if the type is considered a Plain Old Data (POD) type. */ @@ -76,7 +85,7 @@ is_trivial() const { */ bool CPPArrayType:: is_default_constructible() const { - return _element_type->is_default_constructible(); + return _bounds != NULL && _element_type->is_default_constructible(); } /** diff --git a/dtool/src/cppparser/cppArrayType.h b/dtool/src/cppparser/cppArrayType.h index 4633e95aa4..9e2489be72 100644 --- a/dtool/src/cppparser/cppArrayType.h +++ b/dtool/src/cppparser/cppArrayType.h @@ -38,6 +38,7 @@ public: virtual CPPType *resolve_type(CPPScope *current_scope, CPPScope *global_scope); virtual bool is_tbd() const; + virtual bool is_standard_layout() const; virtual bool is_trivial() const; virtual bool is_default_constructible() const; virtual bool is_copy_constructible() const; diff --git a/dtool/src/cppparser/cppBison.cxx.prebuilt b/dtool/src/cppparser/cppBison.cxx.prebuilt index 427e91bf55..dcc103b178 100644 --- a/dtool/src/cppparser/cppBison.cxx.prebuilt +++ b/dtool/src/cppparser/cppBison.cxx.prebuilt @@ -306,120 +306,138 @@ extern int cppyydebug; CUSTOM_LITERAL = 264, IDENTIFIER = 265, TYPENAME_IDENTIFIER = 266, - SCOPING = 267, - TYPEDEFNAME = 268, - ELLIPSIS = 269, - OROR = 270, - ANDAND = 271, - EQCOMPARE = 272, - NECOMPARE = 273, - LECOMPARE = 274, - GECOMPARE = 275, - LSHIFT = 276, - RSHIFT = 277, - POINTSAT_STAR = 278, - DOT_STAR = 279, - UNARY = 280, - UNARY_NOT = 281, - UNARY_NEGATE = 282, - UNARY_MINUS = 283, - UNARY_PLUS = 284, - UNARY_STAR = 285, - UNARY_REF = 286, - POINTSAT = 287, - SCOPE = 288, - PLUSPLUS = 289, - MINUSMINUS = 290, - TIMESEQUAL = 291, - DIVIDEEQUAL = 292, - MODEQUAL = 293, - PLUSEQUAL = 294, - MINUSEQUAL = 295, - OREQUAL = 296, - ANDEQUAL = 297, - XOREQUAL = 298, - LSHIFTEQUAL = 299, - RSHIFTEQUAL = 300, - KW_ALIGNAS = 301, - KW_ALIGNOF = 302, - KW_AUTO = 303, - KW_BEGIN_PUBLISH = 304, - KW_BLOCKING = 305, - KW_BOOL = 306, - KW_CATCH = 307, - KW_CHAR = 308, - KW_CHAR16_T = 309, - KW_CHAR32_T = 310, - KW_CLASS = 311, - KW_CONST = 312, - KW_CONSTEXPR = 313, - KW_CONST_CAST = 314, - KW_DECLTYPE = 315, - KW_DEFAULT = 316, - KW_DELETE = 317, - KW_DOUBLE = 318, - KW_DYNAMIC_CAST = 319, - KW_ELSE = 320, - KW_END_PUBLISH = 321, - KW_ENUM = 322, - KW_EXTENSION = 323, - KW_EXTERN = 324, - KW_EXPLICIT = 325, - KW_PUBLISHED = 326, - KW_FALSE = 327, - KW_FINAL = 328, - KW_FLOAT = 329, - KW_FRIEND = 330, - KW_FOR = 331, - KW_GOTO = 332, - KW_IF = 333, - KW_INLINE = 334, - KW_INT = 335, - KW_LONG = 336, - KW_MAKE_MAP_PROPERTY = 337, - KW_MAKE_PROPERTY = 338, - KW_MAKE_PROPERTY2 = 339, - KW_MAKE_SEQ = 340, - KW_MAKE_SEQ_PROPERTY = 341, - KW_MUTABLE = 342, - KW_NAMESPACE = 343, - KW_NEW = 344, - KW_NOEXCEPT = 345, - KW_NULLPTR = 346, - KW_OPERATOR = 347, - KW_OVERRIDE = 348, - KW_PRIVATE = 349, - KW_PROTECTED = 350, - KW_PUBLIC = 351, - KW_REGISTER = 352, - KW_REINTERPRET_CAST = 353, - KW_RETURN = 354, - KW_SHORT = 355, - KW_SIGNED = 356, - KW_SIZEOF = 357, - KW_STATIC = 358, - KW_STATIC_ASSERT = 359, - KW_STATIC_CAST = 360, - KW_STRUCT = 361, - KW_TEMPLATE = 362, - KW_THREAD_LOCAL = 363, - KW_THROW = 364, - KW_TRUE = 365, - KW_TRY = 366, - KW_TYPEDEF = 367, - KW_TYPEID = 368, - KW_TYPENAME = 369, - KW_UNION = 370, - KW_UNSIGNED = 371, - KW_USING = 372, - KW_VIRTUAL = 373, - KW_VOID = 374, - KW_VOLATILE = 375, - KW_WCHAR_T = 376, - KW_WHILE = 377, - START_CPP = 378, - START_CONST_EXPR = 379, - START_TYPE = 380 + TYPEPACK_IDENTIFIER = 267, + SCOPING = 268, + TYPEDEFNAME = 269, + ELLIPSIS = 270, + OROR = 271, + ANDAND = 272, + EQCOMPARE = 273, + NECOMPARE = 274, + LECOMPARE = 275, + GECOMPARE = 276, + LSHIFT = 277, + RSHIFT = 278, + POINTSAT_STAR = 279, + DOT_STAR = 280, + UNARY = 281, + UNARY_NOT = 282, + UNARY_NEGATE = 283, + UNARY_MINUS = 284, + UNARY_PLUS = 285, + UNARY_STAR = 286, + UNARY_REF = 287, + POINTSAT = 288, + SCOPE = 289, + PLUSPLUS = 290, + MINUSMINUS = 291, + TIMESEQUAL = 292, + DIVIDEEQUAL = 293, + MODEQUAL = 294, + PLUSEQUAL = 295, + MINUSEQUAL = 296, + OREQUAL = 297, + ANDEQUAL = 298, + XOREQUAL = 299, + LSHIFTEQUAL = 300, + RSHIFTEQUAL = 301, + KW_ALIGNAS = 302, + KW_ALIGNOF = 303, + KW_AUTO = 304, + KW_BEGIN_PUBLISH = 305, + KW_BLOCKING = 306, + KW_BOOL = 307, + KW_CATCH = 308, + KW_CHAR = 309, + KW_CHAR16_T = 310, + KW_CHAR32_T = 311, + KW_CLASS = 312, + KW_CONST = 313, + KW_CONSTEXPR = 314, + KW_CONST_CAST = 315, + KW_DECLTYPE = 316, + KW_DEFAULT = 317, + KW_DELETE = 318, + KW_DOUBLE = 319, + KW_DYNAMIC_CAST = 320, + KW_ELSE = 321, + KW_END_PUBLISH = 322, + KW_ENUM = 323, + KW_EXTENSION = 324, + KW_EXTERN = 325, + KW_EXPLICIT = 326, + KW_PUBLISHED = 327, + KW_FALSE = 328, + KW_FINAL = 329, + KW_FLOAT = 330, + KW_FRIEND = 331, + KW_FOR = 332, + KW_GOTO = 333, + KW_HAS_VIRTUAL_DESTRUCTOR = 334, + KW_IF = 335, + KW_INLINE = 336, + KW_INT = 337, + KW_IS_ABSTRACT = 338, + KW_IS_BASE_OF = 339, + KW_IS_CLASS = 340, + KW_IS_CONSTRUCTIBLE = 341, + KW_IS_CONVERTIBLE_TO = 342, + KW_IS_DESTRUCTIBLE = 343, + KW_IS_EMPTY = 344, + KW_IS_ENUM = 345, + KW_IS_FINAL = 346, + KW_IS_FUNDAMENTAL = 347, + KW_IS_POD = 348, + KW_IS_POLYMORPHIC = 349, + KW_IS_STANDARD_LAYOUT = 350, + KW_IS_TRIVIAL = 351, + KW_IS_UNION = 352, + KW_LONG = 353, + KW_MAKE_MAP_PROPERTY = 354, + KW_MAKE_PROPERTY = 355, + KW_MAKE_PROPERTY2 = 356, + KW_MAKE_SEQ = 357, + KW_MAKE_SEQ_PROPERTY = 358, + KW_MUTABLE = 359, + KW_NAMESPACE = 360, + KW_NEW = 361, + KW_NOEXCEPT = 362, + KW_NULLPTR = 363, + KW_OPERATOR = 364, + KW_OVERRIDE = 365, + KW_PRIVATE = 366, + KW_PROTECTED = 367, + KW_PUBLIC = 368, + KW_REGISTER = 369, + KW_REINTERPRET_CAST = 370, + KW_RETURN = 371, + KW_SHORT = 372, + KW_SIGNED = 373, + KW_SIZEOF = 374, + KW_STATIC = 375, + KW_STATIC_ASSERT = 376, + KW_STATIC_CAST = 377, + KW_STRUCT = 378, + KW_TEMPLATE = 379, + KW_THREAD_LOCAL = 380, + KW_THROW = 381, + KW_TRUE = 382, + KW_TRY = 383, + KW_TYPEDEF = 384, + KW_TYPEID = 385, + KW_TYPENAME = 386, + KW_UNDERLYING_TYPE = 387, + KW_UNION = 388, + KW_UNSIGNED = 389, + KW_USING = 390, + KW_VIRTUAL = 391, + KW_VOID = 392, + KW_VOLATILE = 393, + KW_WCHAR_T = 394, + KW_WHILE = 395, + START_CPP = 396, + START_CONST_EXPR = 397, + START_TYPE = 398 }; #endif /* Tokens. */ @@ -432,120 +450,138 @@ extern int cppyydebug; #define CUSTOM_LITERAL 264 #define IDENTIFIER 265 #define TYPENAME_IDENTIFIER 266 -#define SCOPING 267 -#define TYPEDEFNAME 268 -#define ELLIPSIS 269 -#define OROR 270 -#define ANDAND 271 -#define EQCOMPARE 272 -#define NECOMPARE 273 -#define LECOMPARE 274 -#define GECOMPARE 275 -#define LSHIFT 276 -#define RSHIFT 277 -#define POINTSAT_STAR 278 -#define DOT_STAR 279 -#define UNARY 280 -#define UNARY_NOT 281 -#define UNARY_NEGATE 282 -#define UNARY_MINUS 283 -#define UNARY_PLUS 284 -#define UNARY_STAR 285 -#define UNARY_REF 286 -#define POINTSAT 287 -#define SCOPE 288 -#define PLUSPLUS 289 -#define MINUSMINUS 290 -#define TIMESEQUAL 291 -#define DIVIDEEQUAL 292 -#define MODEQUAL 293 -#define PLUSEQUAL 294 -#define MINUSEQUAL 295 -#define OREQUAL 296 -#define ANDEQUAL 297 -#define XOREQUAL 298 -#define LSHIFTEQUAL 299 -#define RSHIFTEQUAL 300 -#define KW_ALIGNAS 301 -#define KW_ALIGNOF 302 -#define KW_AUTO 303 -#define KW_BEGIN_PUBLISH 304 -#define KW_BLOCKING 305 -#define KW_BOOL 306 -#define KW_CATCH 307 -#define KW_CHAR 308 -#define KW_CHAR16_T 309 -#define KW_CHAR32_T 310 -#define KW_CLASS 311 -#define KW_CONST 312 -#define KW_CONSTEXPR 313 -#define KW_CONST_CAST 314 -#define KW_DECLTYPE 315 -#define KW_DEFAULT 316 -#define KW_DELETE 317 -#define KW_DOUBLE 318 -#define KW_DYNAMIC_CAST 319 -#define KW_ELSE 320 -#define KW_END_PUBLISH 321 -#define KW_ENUM 322 -#define KW_EXTENSION 323 -#define KW_EXTERN 324 -#define KW_EXPLICIT 325 -#define KW_PUBLISHED 326 -#define KW_FALSE 327 -#define KW_FINAL 328 -#define KW_FLOAT 329 -#define KW_FRIEND 330 -#define KW_FOR 331 -#define KW_GOTO 332 -#define KW_IF 333 -#define KW_INLINE 334 -#define KW_INT 335 -#define KW_LONG 336 -#define KW_MAKE_MAP_PROPERTY 337 -#define KW_MAKE_PROPERTY 338 -#define KW_MAKE_PROPERTY2 339 -#define KW_MAKE_SEQ 340 -#define KW_MAKE_SEQ_PROPERTY 341 -#define KW_MUTABLE 342 -#define KW_NAMESPACE 343 -#define KW_NEW 344 -#define KW_NOEXCEPT 345 -#define KW_NULLPTR 346 -#define KW_OPERATOR 347 -#define KW_OVERRIDE 348 -#define KW_PRIVATE 349 -#define KW_PROTECTED 350 -#define KW_PUBLIC 351 -#define KW_REGISTER 352 -#define KW_REINTERPRET_CAST 353 -#define KW_RETURN 354 -#define KW_SHORT 355 -#define KW_SIGNED 356 -#define KW_SIZEOF 357 -#define KW_STATIC 358 -#define KW_STATIC_ASSERT 359 -#define KW_STATIC_CAST 360 -#define KW_STRUCT 361 -#define KW_TEMPLATE 362 -#define KW_THREAD_LOCAL 363 -#define KW_THROW 364 -#define KW_TRUE 365 -#define KW_TRY 366 -#define KW_TYPEDEF 367 -#define KW_TYPEID 368 -#define KW_TYPENAME 369 -#define KW_UNION 370 -#define KW_UNSIGNED 371 -#define KW_USING 372 -#define KW_VIRTUAL 373 -#define KW_VOID 374 -#define KW_VOLATILE 375 -#define KW_WCHAR_T 376 -#define KW_WHILE 377 -#define START_CPP 378 -#define START_CONST_EXPR 379 -#define START_TYPE 380 +#define TYPEPACK_IDENTIFIER 267 +#define SCOPING 268 +#define TYPEDEFNAME 269 +#define ELLIPSIS 270 +#define OROR 271 +#define ANDAND 272 +#define EQCOMPARE 273 +#define NECOMPARE 274 +#define LECOMPARE 275 +#define GECOMPARE 276 +#define LSHIFT 277 +#define RSHIFT 278 +#define POINTSAT_STAR 279 +#define DOT_STAR 280 +#define UNARY 281 +#define UNARY_NOT 282 +#define UNARY_NEGATE 283 +#define UNARY_MINUS 284 +#define UNARY_PLUS 285 +#define UNARY_STAR 286 +#define UNARY_REF 287 +#define POINTSAT 288 +#define SCOPE 289 +#define PLUSPLUS 290 +#define MINUSMINUS 291 +#define TIMESEQUAL 292 +#define DIVIDEEQUAL 293 +#define MODEQUAL 294 +#define PLUSEQUAL 295 +#define MINUSEQUAL 296 +#define OREQUAL 297 +#define ANDEQUAL 298 +#define XOREQUAL 299 +#define LSHIFTEQUAL 300 +#define RSHIFTEQUAL 301 +#define KW_ALIGNAS 302 +#define KW_ALIGNOF 303 +#define KW_AUTO 304 +#define KW_BEGIN_PUBLISH 305 +#define KW_BLOCKING 306 +#define KW_BOOL 307 +#define KW_CATCH 308 +#define KW_CHAR 309 +#define KW_CHAR16_T 310 +#define KW_CHAR32_T 311 +#define KW_CLASS 312 +#define KW_CONST 313 +#define KW_CONSTEXPR 314 +#define KW_CONST_CAST 315 +#define KW_DECLTYPE 316 +#define KW_DEFAULT 317 +#define KW_DELETE 318 +#define KW_DOUBLE 319 +#define KW_DYNAMIC_CAST 320 +#define KW_ELSE 321 +#define KW_END_PUBLISH 322 +#define KW_ENUM 323 +#define KW_EXTENSION 324 +#define KW_EXTERN 325 +#define KW_EXPLICIT 326 +#define KW_PUBLISHED 327 +#define KW_FALSE 328 +#define KW_FINAL 329 +#define KW_FLOAT 330 +#define KW_FRIEND 331 +#define KW_FOR 332 +#define KW_GOTO 333 +#define KW_HAS_VIRTUAL_DESTRUCTOR 334 +#define KW_IF 335 +#define KW_INLINE 336 +#define KW_INT 337 +#define KW_IS_ABSTRACT 338 +#define KW_IS_BASE_OF 339 +#define KW_IS_CLASS 340 +#define KW_IS_CONSTRUCTIBLE 341 +#define KW_IS_CONVERTIBLE_TO 342 +#define KW_IS_DESTRUCTIBLE 343 +#define KW_IS_EMPTY 344 +#define KW_IS_ENUM 345 +#define KW_IS_FINAL 346 +#define KW_IS_FUNDAMENTAL 347 +#define KW_IS_POD 348 +#define KW_IS_POLYMORPHIC 349 +#define KW_IS_STANDARD_LAYOUT 350 +#define KW_IS_TRIVIAL 351 +#define KW_IS_UNION 352 +#define KW_LONG 353 +#define KW_MAKE_MAP_PROPERTY 354 +#define KW_MAKE_PROPERTY 355 +#define KW_MAKE_PROPERTY2 356 +#define KW_MAKE_SEQ 357 +#define KW_MAKE_SEQ_PROPERTY 358 +#define KW_MUTABLE 359 +#define KW_NAMESPACE 360 +#define KW_NEW 361 +#define KW_NOEXCEPT 362 +#define KW_NULLPTR 363 +#define KW_OPERATOR 364 +#define KW_OVERRIDE 365 +#define KW_PRIVATE 366 +#define KW_PROTECTED 367 +#define KW_PUBLIC 368 +#define KW_REGISTER 369 +#define KW_REINTERPRET_CAST 370 +#define KW_RETURN 371 +#define KW_SHORT 372 +#define KW_SIGNED 373 +#define KW_SIZEOF 374 +#define KW_STATIC 375 +#define KW_STATIC_ASSERT 376 +#define KW_STATIC_CAST 377 +#define KW_STRUCT 378 +#define KW_TEMPLATE 379 +#define KW_THREAD_LOCAL 380 +#define KW_THROW 381 +#define KW_TRUE 382 +#define KW_TRY 383 +#define KW_TYPEDEF 384 +#define KW_TYPEID 385 +#define KW_TYPENAME 386 +#define KW_UNDERLYING_TYPE 387 +#define KW_UNION 388 +#define KW_UNSIGNED 389 +#define KW_USING 390 +#define KW_VIRTUAL 391 +#define KW_VOID 392 +#define KW_VOLATILE 393 +#define KW_WCHAR_T 394 +#define KW_WHILE 395 +#define START_CPP 396 +#define START_CONST_EXPR 397 +#define START_TYPE 398 /* Value type. */ @@ -571,7 +607,7 @@ int cppyyparse (void); /* Copy the second part of user declarations. */ -#line 575 "built/tmp/cppBison.yxx.c" /* yacc.c:358 */ +#line 611 "built/tmp/cppBison.yxx.c" /* yacc.c:358 */ #ifdef short # undef short @@ -813,23 +849,23 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 85 +#define YYFINAL 104 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 5547 +#define YYLAST 6206 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 150 +#define YYNTOKENS 168 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 104 +#define YYNNTS 107 /* YYNRULES -- Number of rules. */ -#define YYNRULES 672 +#define YYNRULES 733 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 1320 +#define YYNSTATES 1482 /* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 380 +#define YYMAXUTOK 398 #define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) @@ -841,16 +877,16 @@ static const yytype_uint8 yytranslate[] = 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 149, 2, 2, 2, 141, 134, 2, - 144, 146, 139, 137, 127, 138, 143, 140, 2, 2, - 2, 2, 2, 2, 2, 2, 2, 2, 129, 128, - 135, 130, 136, 131, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 167, 2, 2, 2, 159, 152, 2, + 162, 164, 157, 155, 145, 156, 161, 158, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 147, 146, + 153, 148, 154, 149, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 145, 2, 148, 133, 2, 2, 2, 2, 2, + 2, 163, 2, 166, 151, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 126, 132, 147, 142, 2, 2, 2, + 2, 2, 2, 144, 150, 165, 160, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -876,81 +912,88 @@ static const yytype_uint8 yytranslate[] = 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125 + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 424, 424, 425, 429, 436, 437, 438, 442, 443, - 447, 451, 464, 463, 475, 476, 477, 478, 479, 480, - 481, 494, 503, 507, 515, 519, 523, 534, 555, 585, - 602, 630, 667, 689, 722, 744, 755, 769, 768, 783, - 787, 792, 796, 807, 811, 815, 819, 823, 827, 831, - 835, 839, 843, 847, 851, 859, 860, 864, 865, 870, - 869, 885, 894, 902, 910, 918, 929, 945, 944, 959, - 974, 983, 998, 997, 1022, 1021, 1049, 1048, 1079, 1078, - 1097, 1096, 1117, 1116, 1148, 1147, 1173, 1186, 1190, 1194, - 1198, 1202, 1206, 1211, 1215, 1226, 1230, 1234, 1238, 1242, - 1246, 1250, 1254, 1258, 1262, 1266, 1270, 1274, 1278, 1282, - 1286, 1290, 1294, 1298, 1302, 1306, 1310, 1314, 1318, 1322, - 1326, 1330, 1334, 1338, 1342, 1346, 1350, 1354, 1358, 1362, - 1366, 1370, 1374, 1378, 1385, 1386, 1391, 1390, 1398, 1402, - 1403, 1407, 1413, 1422, 1426, 1430, 1434, 1438, 1444, 1454, - 1458, 1463, 1475, 1479, 1493, 1508, 1513, 1518, 1523, 1528, - 1533, 1538, 1543, 1549, 1548, 1570, 1580, 1590, 1594, 1598, - 1607, 1611, 1616, 1620, 1625, 1633, 1638, 1646, 1650, 1655, - 1659, 1664, 1672, 1677, 1685, 1689, 1696, 1700, 1707, 1711, - 1715, 1719, 1723, 1730, 1734, 1738, 1742, 1746, 1750, 1757, - 1758, 1759, 1763, 1766, 1767, 1768, 1772, 1777, 1783, 1789, - 1800, 1804, 1814, 1818, 1822, 1827, 1832, 1837, 1842, 1847, - 1852, 1860, 1864, 1868, 1873, 1878, 1883, 1888, 1893, 1898, - 1903, 1909, 1917, 1921, 1926, 1931, 1936, 1941, 1946, 1951, - 1959, 1963, 1968, 1973, 1978, 1983, 1988, 1993, 1998, 2004, - 2011, 2018, 2028, 2032, 2040, 2044, 2048, 2052, 2056, 2072, - 2088, 2097, 2104, 2108, 2116, 2120, 2124, 2128, 2132, 2148, - 2164, 2182, 2191, 2198, 2202, 2210, 2214, 2230, 2246, 2255, - 2262, 2266, 2274, 2278, 2287, 2286, 2311, 2310, 2340, 2341, - 2348, 2349, 2353, 2354, 2358, 2362, 2366, 2370, 2374, 2378, - 2382, 2386, 2390, 2394, 2401, 2409, 2413, 2417, 2422, 2430, - 2434, 2441, 2442, 2447, 2454, 2455, 2460, 2468, 2472, 2476, - 2483, 2487, 2491, 2499, 2498, 2521, 2520, 2543, 2544, 2548, - 2554, 2561, 2570, 2571, 2572, 2576, 2580, 2584, 2588, 2592, - 2596, 2601, 2606, 2611, 2616, 2620, 2625, 2634, 2639, 2647, - 2651, 2655, 2663, 2673, 2673, 2683, 2684, 2688, 2689, 2690, - 2691, 2692, 2693, 2694, 2695, 2696, 2697, 2698, 2698, 2698, - 2699, 2699, 2699, 2699, 2700, 2700, 2700, 2700, 2700, 2701, - 2701, 2701, 2702, 2702, 2702, 2702, 2702, 2703, 2703, 2703, - 2703, 2703, 2704, 2704, 2704, 2704, 2704, 2705, 2705, 2705, - 2705, 2705, 2706, 2706, 2706, 2706, 2707, 2707, 2707, 2707, - 2707, 2708, 2708, 2708, 2708, 2708, 2709, 2709, 2709, 2709, - 2709, 2709, 2710, 2710, 2710, 2710, 2710, 2711, 2711, 2711, - 2711, 2712, 2712, 2712, 2712, 2713, 2713, 2713, 2713, 2713, - 2714, 2714, 2714, 2715, 2715, 2715, 2715, 2715, 2716, 2716, - 2716, 2716, 2716, 2717, 2717, 2717, 2717, 2717, 2720, 2720, - 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2720, 2721, - 2721, 2721, 2721, 2721, 2721, 2721, 2721, 2721, 2721, 2722, - 2722, 2726, 2730, 2737, 2741, 2748, 2752, 2759, 2763, 2767, - 2771, 2775, 2779, 2783, 2787, 2791, 2795, 2799, 2803, 2807, - 2811, 2815, 2819, 2823, 2827, 2831, 2835, 2839, 2843, 2847, - 2851, 2855, 2859, 2863, 2867, 2871, 2875, 2879, 2883, 2887, - 2891, 2895, 2899, 2903, 2911, 2915, 2919, 2923, 2927, 2931, - 2935, 2945, 2951, 2957, 2963, 2969, 2975, 2981, 2988, 2995, - 3002, 3009, 3015, 3021, 3025, 3029, 3033, 3037, 3048, 3059, - 3063, 3067, 3071, 3075, 3079, 3083, 3087, 3091, 3095, 3099, - 3103, 3107, 3111, 3115, 3119, 3123, 3127, 3131, 3135, 3139, - 3143, 3147, 3151, 3155, 3159, 3163, 3167, 3171, 3175, 3179, - 3186, 3190, 3194, 3198, 3202, 3206, 3210, 3214, 3218, 3224, - 3230, 3234, 3238, 3252, 3256, 3260, 3264, 3268, 3272, 3276, - 3280, 3284, 3288, 3292, 3303, 3314, 3318, 3322, 3326, 3330, - 3334, 3338, 3342, 3346, 3350, 3354, 3358, 3362, 3366, 3370, - 3374, 3378, 3382, 3386, 3390, 3394, 3398, 3402, 3406, 3410, - 3414, 3418, 3422, 3426, 3430, 3437, 3441, 3445, 3449, 3453, - 3457, 3461, 3465, 3469, 3475, 3481, 3489, 3490, 3491, 3495, - 3496, 3497, 3498, 3502, 3510, 3518, 3546, 3550, 3554, 3558, - 3562, 3568, 3572, 3576, 3580, 3591, 3595, 3599, 3607, 3611, - 3615, 3621, 3632 + 0, 442, 442, 443, 447, 454, 455, 456, 460, 461, + 465, 469, 473, 486, 485, 497, 498, 499, 500, 501, + 502, 503, 516, 525, 529, 537, 541, 545, 556, 577, + 607, 624, 652, 689, 711, 744, 766, 777, 791, 790, + 805, 809, 814, 818, 829, 833, 837, 841, 845, 849, + 853, 857, 861, 865, 869, 873, 881, 882, 886, 887, + 892, 891, 907, 916, 924, 932, 940, 951, 967, 966, + 981, 996, 1005, 1020, 1019, 1044, 1043, 1071, 1070, 1101, + 1100, 1119, 1118, 1139, 1138, 1170, 1169, 1195, 1208, 1212, + 1216, 1220, 1224, 1228, 1232, 1236, 1240, 1245, 1249, 1253, + 1264, 1268, 1272, 1276, 1280, 1284, 1288, 1292, 1296, 1300, + 1304, 1308, 1312, 1316, 1320, 1324, 1328, 1332, 1336, 1340, + 1344, 1348, 1352, 1356, 1360, 1364, 1368, 1372, 1376, 1380, + 1384, 1388, 1392, 1396, 1400, 1404, 1408, 1412, 1416, 1423, + 1424, 1429, 1428, 1436, 1440, 1441, 1445, 1451, 1460, 1461, + 1465, 1469, 1473, 1477, 1483, 1489, 1495, 1502, 1507, 1516, + 1520, 1525, 1533, 1545, 1549, 1563, 1578, 1583, 1588, 1593, + 1598, 1603, 1608, 1613, 1619, 1618, 1640, 1650, 1660, 1664, + 1668, 1677, 1681, 1686, 1690, 1695, 1703, 1708, 1716, 1720, + 1725, 1729, 1734, 1742, 1747, 1755, 1759, 1766, 1770, 1777, + 1781, 1785, 1789, 1793, 1800, 1804, 1808, 1812, 1816, 1820, + 1827, 1828, 1829, 1833, 1836, 1837, 1838, 1842, 1847, 1853, + 1859, 1864, 1870, 1876, 1887, 1891, 1901, 1905, 1909, 1914, + 1919, 1924, 1929, 1934, 1939, 1947, 1951, 1955, 1960, 1965, + 1970, 1975, 1980, 1985, 1990, 1996, 2004, 2009, 2014, 2019, + 2024, 2029, 2034, 2039, 2044, 2049, 2055, 2063, 2067, 2072, + 2077, 2082, 2087, 2092, 2097, 2102, 2107, 2115, 2119, 2124, + 2129, 2134, 2139, 2144, 2149, 2154, 2159, 2164, 2170, 2177, + 2184, 2194, 2198, 2206, 2210, 2214, 2218, 2222, 2238, 2254, + 2263, 2273, 2280, 2291, 2295, 2303, 2307, 2311, 2315, 2319, + 2335, 2351, 2369, 2378, 2388, 2395, 2399, 2407, 2411, 2427, + 2443, 2452, 2462, 2469, 2473, 2481, 2485, 2490, 2494, 2503, + 2502, 2527, 2526, 2556, 2557, 2564, 2565, 2569, 2570, 2574, + 2578, 2582, 2586, 2590, 2594, 2598, 2602, 2606, 2610, 2617, + 2625, 2629, 2633, 2638, 2646, 2650, 2657, 2658, 2663, 2670, + 2671, 2676, 2684, 2688, 2692, 2699, 2703, 2707, 2715, 2714, + 2737, 2736, 2759, 2760, 2764, 2770, 2777, 2786, 2787, 2788, + 2792, 2796, 2800, 2804, 2808, 2812, 2817, 2822, 2827, 2832, + 2836, 2841, 2850, 2855, 2863, 2867, 2871, 2879, 2889, 2889, + 2899, 2900, 2904, 2905, 2906, 2907, 2908, 2909, 2910, 2911, + 2912, 2913, 2914, 2915, 2915, 2915, 2916, 2916, 2916, 2916, + 2917, 2917, 2917, 2917, 2917, 2918, 2918, 2918, 2919, 2919, + 2919, 2919, 2919, 2920, 2920, 2920, 2920, 2920, 2921, 2921, + 2921, 2921, 2921, 2922, 2922, 2922, 2922, 2922, 2923, 2923, + 2923, 2923, 2924, 2924, 2924, 2924, 2924, 2925, 2925, 2925, + 2925, 2925, 2926, 2926, 2926, 2926, 2926, 2926, 2927, 2927, + 2927, 2927, 2927, 2928, 2928, 2928, 2928, 2929, 2929, 2929, + 2929, 2930, 2930, 2930, 2930, 2930, 2931, 2931, 2931, 2931, + 2932, 2932, 2932, 2932, 2932, 2933, 2933, 2933, 2933, 2934, + 2934, 2934, 2934, 2934, 2935, 2935, 2938, 2938, 2938, 2938, + 2938, 2938, 2938, 2938, 2938, 2938, 2938, 2939, 2939, 2939, + 2939, 2939, 2939, 2939, 2939, 2939, 2939, 2940, 2940, 2944, + 2948, 2955, 2959, 2966, 2970, 2977, 2981, 2985, 2989, 2993, + 2997, 3001, 3005, 3009, 3013, 3017, 3021, 3025, 3029, 3033, + 3037, 3041, 3045, 3049, 3053, 3057, 3061, 3065, 3069, 3073, + 3077, 3081, 3085, 3089, 3093, 3097, 3101, 3105, 3109, 3113, + 3117, 3121, 3125, 3133, 3137, 3141, 3145, 3149, 3153, 3157, + 3167, 3173, 3179, 3185, 3191, 3197, 3203, 3210, 3217, 3224, + 3231, 3237, 3243, 3247, 3251, 3255, 3259, 3263, 3274, 3285, + 3289, 3293, 3297, 3301, 3305, 3309, 3313, 3317, 3321, 3325, + 3329, 3333, 3337, 3341, 3345, 3349, 3353, 3357, 3361, 3365, + 3369, 3373, 3377, 3381, 3385, 3389, 3393, 3397, 3401, 3405, + 3412, 3416, 3420, 3424, 3428, 3432, 3436, 3440, 3444, 3450, + 3456, 3460, 3464, 3468, 3472, 3476, 3480, 3484, 3488, 3492, + 3496, 3500, 3504, 3508, 3512, 3516, 3520, 3524, 3528, 3532, + 3546, 3550, 3554, 3558, 3562, 3566, 3570, 3574, 3578, 3582, + 3586, 3590, 3601, 3612, 3616, 3620, 3624, 3628, 3632, 3636, + 3640, 3644, 3648, 3652, 3656, 3660, 3664, 3668, 3672, 3676, + 3680, 3684, 3688, 3692, 3696, 3700, 3704, 3708, 3712, 3716, + 3720, 3724, 3728, 3735, 3739, 3743, 3747, 3751, 3755, 3759, + 3763, 3767, 3773, 3779, 3787, 3788, 3789, 3793, 3794, 3795, + 3796, 3800, 3808, 3816, 3820, 3850, 3854, 3858, 3862, 3866, + 3870, 3876, 3880, 3884, 3888, 3899, 3903, 3907, 3911, 3919, + 3923, 3927, 3933, 3944 }; #endif @@ -961,20 +1004,25 @@ static const char *const yytname[] = { "$end", "error", "$undefined", "REAL", "INTEGER", "CHAR_TOK", "SIMPLE_STRING", "SIMPLE_IDENTIFIER", "STRING_LITERAL", "CUSTOM_LITERAL", - "IDENTIFIER", "TYPENAME_IDENTIFIER", "SCOPING", "TYPEDEFNAME", - "ELLIPSIS", "OROR", "ANDAND", "EQCOMPARE", "NECOMPARE", "LECOMPARE", - "GECOMPARE", "LSHIFT", "RSHIFT", "POINTSAT_STAR", "DOT_STAR", "UNARY", - "UNARY_NOT", "UNARY_NEGATE", "UNARY_MINUS", "UNARY_PLUS", "UNARY_STAR", - "UNARY_REF", "POINTSAT", "SCOPE", "PLUSPLUS", "MINUSMINUS", "TIMESEQUAL", - "DIVIDEEQUAL", "MODEQUAL", "PLUSEQUAL", "MINUSEQUAL", "OREQUAL", - "ANDEQUAL", "XOREQUAL", "LSHIFTEQUAL", "RSHIFTEQUAL", "KW_ALIGNAS", - "KW_ALIGNOF", "KW_AUTO", "KW_BEGIN_PUBLISH", "KW_BLOCKING", "KW_BOOL", - "KW_CATCH", "KW_CHAR", "KW_CHAR16_T", "KW_CHAR32_T", "KW_CLASS", - "KW_CONST", "KW_CONSTEXPR", "KW_CONST_CAST", "KW_DECLTYPE", "KW_DEFAULT", - "KW_DELETE", "KW_DOUBLE", "KW_DYNAMIC_CAST", "KW_ELSE", "KW_END_PUBLISH", - "KW_ENUM", "KW_EXTENSION", "KW_EXTERN", "KW_EXPLICIT", "KW_PUBLISHED", - "KW_FALSE", "KW_FINAL", "KW_FLOAT", "KW_FRIEND", "KW_FOR", "KW_GOTO", - "KW_IF", "KW_INLINE", "KW_INT", "KW_LONG", "KW_MAKE_MAP_PROPERTY", + "IDENTIFIER", "TYPENAME_IDENTIFIER", "TYPEPACK_IDENTIFIER", "SCOPING", + "TYPEDEFNAME", "ELLIPSIS", "OROR", "ANDAND", "EQCOMPARE", "NECOMPARE", + "LECOMPARE", "GECOMPARE", "LSHIFT", "RSHIFT", "POINTSAT_STAR", + "DOT_STAR", "UNARY", "UNARY_NOT", "UNARY_NEGATE", "UNARY_MINUS", + "UNARY_PLUS", "UNARY_STAR", "UNARY_REF", "POINTSAT", "SCOPE", "PLUSPLUS", + "MINUSMINUS", "TIMESEQUAL", "DIVIDEEQUAL", "MODEQUAL", "PLUSEQUAL", + "MINUSEQUAL", "OREQUAL", "ANDEQUAL", "XOREQUAL", "LSHIFTEQUAL", + "RSHIFTEQUAL", "KW_ALIGNAS", "KW_ALIGNOF", "KW_AUTO", "KW_BEGIN_PUBLISH", + "KW_BLOCKING", "KW_BOOL", "KW_CATCH", "KW_CHAR", "KW_CHAR16_T", + "KW_CHAR32_T", "KW_CLASS", "KW_CONST", "KW_CONSTEXPR", "KW_CONST_CAST", + "KW_DECLTYPE", "KW_DEFAULT", "KW_DELETE", "KW_DOUBLE", "KW_DYNAMIC_CAST", + "KW_ELSE", "KW_END_PUBLISH", "KW_ENUM", "KW_EXTENSION", "KW_EXTERN", + "KW_EXPLICIT", "KW_PUBLISHED", "KW_FALSE", "KW_FINAL", "KW_FLOAT", + "KW_FRIEND", "KW_FOR", "KW_GOTO", "KW_HAS_VIRTUAL_DESTRUCTOR", "KW_IF", + "KW_INLINE", "KW_INT", "KW_IS_ABSTRACT", "KW_IS_BASE_OF", "KW_IS_CLASS", + "KW_IS_CONSTRUCTIBLE", "KW_IS_CONVERTIBLE_TO", "KW_IS_DESTRUCTIBLE", + "KW_IS_EMPTY", "KW_IS_ENUM", "KW_IS_FINAL", "KW_IS_FUNDAMENTAL", + "KW_IS_POD", "KW_IS_POLYMORPHIC", "KW_IS_STANDARD_LAYOUT", + "KW_IS_TRIVIAL", "KW_IS_UNION", "KW_LONG", "KW_MAKE_MAP_PROPERTY", "KW_MAKE_PROPERTY", "KW_MAKE_PROPERTY2", "KW_MAKE_SEQ", "KW_MAKE_SEQ_PROPERTY", "KW_MUTABLE", "KW_NAMESPACE", "KW_NEW", "KW_NOEXCEPT", "KW_NULLPTR", "KW_OPERATOR", "KW_OVERRIDE", "KW_PRIVATE", @@ -982,22 +1030,23 @@ static const char *const yytname[] = "KW_RETURN", "KW_SHORT", "KW_SIGNED", "KW_SIZEOF", "KW_STATIC", "KW_STATIC_ASSERT", "KW_STATIC_CAST", "KW_STRUCT", "KW_TEMPLATE", "KW_THREAD_LOCAL", "KW_THROW", "KW_TRUE", "KW_TRY", "KW_TYPEDEF", - "KW_TYPEID", "KW_TYPENAME", "KW_UNION", "KW_UNSIGNED", "KW_USING", - "KW_VIRTUAL", "KW_VOID", "KW_VOLATILE", "KW_WCHAR_T", "KW_WHILE", - "START_CPP", "START_CONST_EXPR", "START_TYPE", "'{'", "','", "';'", - "':'", "'='", "'?'", "'|'", "'^'", "'&'", "'<'", "'>'", "'+'", "'-'", - "'*'", "'/'", "'%'", "'~'", "'.'", "'('", "'['", "')'", "'}'", "']'", - "'!'", "$accept", "grammar", "cpp", "constructor_inits", - "constructor_init", "extern_c", "$@1", "declaration", - "friend_declaration", "$@2", "storage_class", "attribute_specifiers", - "attribute_specifier", "type_like_declaration", "$@3", - "multiple_instance_identifiers", "typedef_declaration", "$@4", + "KW_TYPEID", "KW_TYPENAME", "KW_UNDERLYING_TYPE", "KW_UNION", + "KW_UNSIGNED", "KW_USING", "KW_VIRTUAL", "KW_VOID", "KW_VOLATILE", + "KW_WCHAR_T", "KW_WHILE", "START_CPP", "START_CONST_EXPR", "START_TYPE", + "'{'", "','", "';'", "':'", "'='", "'?'", "'|'", "'^'", "'&'", "'<'", + "'>'", "'+'", "'-'", "'*'", "'/'", "'%'", "'~'", "'.'", "'('", "'['", + "')'", "'}'", "']'", "'!'", "$accept", "grammar", "cpp", + "constructor_inits", "constructor_init", "extern_c", "$@1", + "declaration", "friend_declaration", "$@2", "storage_class", + "attribute_specifiers", "attribute_specifier", "type_like_declaration", + "$@3", "multiple_instance_identifiers", "typedef_declaration", "$@4", "typedef_instance_identifiers", "constructor_prototype", "$@5", "$@6", "function_prototype", "$@7", "$@8", "$@9", "$@10", "$@11", "function_post", "function_operator", "more_template_declaration", "template_declaration", "$@12", "template_formal_parameters", - "template_nonempty_formal_parameters", "template_formal_parameter", - "template_formal_parameter_type", "instance_identifier", "$@13", + "template_nonempty_formal_parameters", "typename_keyword", + "template_formal_parameter", "template_formal_parameter_type", + "instance_identifier", "$@13", "instance_identifier_and_maybe_trailing_return_type", "maybe_trailing_return_type", "function_parameter_list", "function_parameters", "formal_parameter_list", "formal_parameters", @@ -1006,13 +1055,14 @@ static const char *const yytname[] = "maybe_initialize_or_function_body", "structure_init", "structure_init_body", "function_parameter", "formal_parameter", "not_paren_formal_parameter_identifier", "formal_parameter_identifier", - "not_paren_empty_instance_identifier", "empty_instance_identifier", - "type", "type_decl", "predefined_type", "var_type_decl", "full_type", - "anonymous_struct", "$@14", "named_struct", "$@15", "maybe_final", - "maybe_class_derivation", "class_derivation", "base_specification", - "enum", "enum_decl", "enum_element_type", "enum_body_trailing_comma", - "enum_body", "enum_keyword", "struct_keyword", "namespace_declaration", - "$@16", "$@17", "using_declaration", "simple_type", "simple_int_type", + "parameter_pack_identifier", "not_paren_empty_instance_identifier", + "empty_instance_identifier", "type", "type_pack", "type_decl", + "predefined_type", "var_type_decl", "full_type", "anonymous_struct", + "$@14", "named_struct", "$@15", "maybe_final", "maybe_class_derivation", + "class_derivation", "base_specification", "enum", "enum_decl", + "enum_element_type", "enum_body_trailing_comma", "enum_body", + "enum_keyword", "struct_keyword", "namespace_declaration", "$@16", + "$@17", "using_declaration", "simple_type", "simple_int_type", "simple_float_type", "simple_void_type", "code", "$@18", "code_block", "element", "optional_const_expr", "optional_const_expr_comma", "const_expr_comma", "no_angle_bracket_const_expr", "const_expr", @@ -1039,18 +1089,20 @@ static const yytype_uint16 yytoknum[] = 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 123, 44, 59, 58, - 61, 63, 124, 94, 38, 60, 62, 43, 45, 42, - 47, 37, 126, 46, 40, 91, 41, 125, 93, 33 + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, 123, 44, 59, 58, 61, 63, + 124, 94, 38, 60, 62, 43, 45, 42, 47, 37, + 126, 46, 40, 91, 41, 125, 93, 33 }; # endif -#define YYPACT_NINF -734 +#define YYPACT_NINF -868 #define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-734))) + (!!((Yystate) == (-868))) -#define YYTABLE_NINF -668 +#define YYTABLE_NINF -729 #define yytable_value_is_error(Yytable_value) \ 0 @@ -1059,138 +1111,155 @@ static const yytype_uint16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 234, -734, 2792, 4509, 43, 3003, -734, -734, -734, -734, - -734, -734, -734, -734, -90, -84, -79, -70, -48, -32, - -11, -24, 10, -734, -734, 15, 41, 65, 4717, -734, - -734, 77, 76, 99, 129, 147, -734, 142, 164, 178, - 2792, 2792, 2792, 2792, 2792, 1390, 310, 2792, 3797, -734, - 252, -734, -734, -734, -734, -734, -734, -734, 4739, 181, - -734, -23, -734, -734, 1575, 1958, 1958, -734, 2339, -734, - 1958, -734, -734, 144, -734, -734, -734, -734, -22, 82, - 1087, -734, -734, -734, -734, -734, -734, 5402, 5402, 5402, - -734, 5402, 895, 5402, 162, -734, 5366, 203, 216, 219, - 225, 5402, 1487, 244, 251, 258, 5402, 5402, 250, 5297, - 5402, 5402, 2433, 5402, 5402, -734, 253, -734, -734, -734, - 3265, -734, -734, -734, -734, -734, 2792, 4509, 2792, 2792, - 2792, 2792, 4509, 2792, 4509, 2792, 2792, 2792, -734, -734, - 264, 2339, 266, 2339, 2339, -734, 4509, 2792, 2792, 4509, - 4509, 1390, 2792, 2792, 74, 74, 74, 74, 74, -90, - -79, -70, -48, -32, -24, 15, 41, 1421, 2122, 2253, - 2350, 178, 278, -88, 3797, -734, -734, -734, -734, -734, - -734, -734, -734, -734, -734, 2339, 280, 304, -734, -734, - 74, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, - 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, - 2792, 2792, 2222, 2792, -734, -734, 144, 2792, -734, -734, - -734, 1958, -734, -734, -734, -734, -734, 299, 256, 144, - 144, 256, 256, 4068, 305, -734, 315, -734, -734, -734, - -734, 1226, 342, -18, -3, 13, -734, -734, -734, 5402, - -734, -734, -734, -734, 5402, -734, -734, -734, 5241, 2111, - -734, 2339, 2339, 2339, 2339, -734, -734, 341, -734, -734, - -734, -734, -734, 2792, 3339, -734, 340, -734, 3411, -734, - 2339, 249, -734, -734, 2339, 291, 333, -734, 358, 4581, - 2339, -734, 2339, 323, 313, 390, -734, -734, -734, -734, - 412, 1087, -734, 368, 392, -734, 376, 377, 382, 387, - 388, 400, 389, 401, 403, 411, 425, 2792, -734, 2792, - -734, -734, 402, 428, 429, 431, 409, 433, 3518, 434, - 437, 2792, 2792, -734, -734, -42, 310, 969, 1108, 928, - 928, 744, 744, 318, 318, -734, 3707, 4017, 4074, 4158, - 744, 744, 386, 386, 74, 74, 74, -734, -734, -45, - 2009, -734, 3539, 256, 408, 256, 256, 256, 256, 256, - 439, -734, 305, -734, 305, -734, 439, 439, -734, 256, - 4638, 4487, 256, 256, 441, 30, -734, 106, -734, 2792, - 2339, 442, -734, -734, -734, -734, 1226, -734, 517, -734, - -734, -734, 465, 474, 475, 476, 479, 4849, -734, 3478, - 4271, 338, 448, 313, -734, -734, 481, -734, 4509, 459, - 483, 468, -734, 14, 2792, 4739, 236, -734, -734, 469, - -734, -734, 2339, 93, -734, -734, -734, 2108, -734, -734, - 817, -734, 485, -734, -734, -734, -734, -734, -734, -734, - 471, -734, 472, -734, -734, -734, 3557, 477, 473, -734, - -734, -734, 478, -734, -734, -734, -734, 74, 3797, -734, - 4343, 339, -734, -734, 2792, -734, -734, -734, 439, 256, - 439, 439, 439, 439, 439, 2792, 185, 4739, 106, -734, - 270, 300, 561, -734, 4415, 482, 106, 106, 106, 106, - 106, 106, 52, -734, -734, 480, 3797, -734, 49, -734, - 498, 4905, -734, 496, -734, 4961, -734, 616, 619, 622, - 623, -734, -734, 399, 506, -734, -734, 2339, 2209, 2339, - 499, 510, -734, 106, -734, -734, 14, -734, 817, -734, - 511, 490, 2339, 1544, 4343, 502, 817, 4343, 3575, 236, - 503, 236, 236, 236, 236, 236, 247, -734, -734, 5017, - -734, 501, -734, 275, -734, 5, 521, 523, 505, 525, - 529, 2336, 3742, 515, 817, 817, 3118, 817, 817, 817, - 817, -734, 78, 346, -734, 1226, 2792, 2792, -734, -734, - 2792, 2792, 504, 4660, -734, -734, -734, -734, 514, 542, - -734, 3797, 439, 524, 530, 106, 52, 534, 538, 339, - -734, -734, 106, 540, 540, 540, 540, 540, 337, 2792, - 2792, -734, -734, 541, -734, 2792, -734, 2866, 557, 560, - -734, -734, -734, -37, 564, 565, 566, 5073, 28, -734, - 558, 106, 567, 5323, 4271, 80, -734, 346, -734, 5402, - -734, -734, -734, -734, -734, -734, -734, 550, 568, 571, - -734, -734, 4717, -734, -734, 572, 551, 573, -734, 590, - 2792, 2792, 2792, 2792, 1390, 2792, 591, 42, -734, -734, - 3839, -734, 252, -734, 594, 817, 89, 595, -734, 365, - 236, 598, 598, 598, 598, 598, -734, 2792, -734, 4343, - -734, 1842, -734, -734, 2339, 2792, 2792, -734, -734, -734, - -734, -734, 2336, 563, 585, 3797, -734, -734, 817, 372, - 372, 726, -734, -734, -734, -734, -734, -734, -734, -734, - -734, -734, -734, -734, -734, -734, -734, -734, -734, -734, - -734, -734, -734, -734, -734, -734, -734, -734, -734, -734, - -734, -734, -734, -734, -734, -734, -734, -734, 599, 601, - -734, -734, 372, 372, 372, 335, 742, -734, 2792, -734, - 2108, 624, -734, 498, -13, -8, -6, 31, 561, 4717, - 144, 243, -734, -734, 4343, 52, -734, 4343, 4343, -734, - 540, 606, 3797, 604, 3761, 4160, 4778, 4794, 2339, 394, - -734, 2339, -734, -734, -734, 2866, 5129, 743, 627, 746, - 747, 748, -734, 631, 4509, 80, 4509, -734, -734, -734, - -734, 2906, -734, -734, 633, -734, -734, 4509, 4509, 4509, - 626, 4509, 4509, 4509, 1390, 74, 74, 74, 74, 617, - 34, 74, -734, -734, 1989, 2792, 2792, 2792, 2792, 2792, - 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, 2792, - 2792, 2792, 2792, 2792, 2792, 2792, 2450, 2792, 561, 348, - 630, 561, -734, 598, 4343, 620, 625, -734, -734, -734, - -734, -734, -734, -734, -734, -734, -734, -734, -734, -734, - -734, -734, -734, -734, -734, -734, -734, -734, -734, -734, - -734, -734, -734, -734, -734, -734, -734, -734, -734, -734, - -734, -734, -734, -734, -734, -734, -734, -734, -734, -734, - -734, -734, -734, -734, -734, -734, -734, -734, -734, -734, - -734, -734, -734, -734, -734, -734, -734, -734, -734, -734, - -734, -734, -734, -734, -734, -734, -734, -734, -734, -734, - -734, -734, -734, -734, -734, -734, -734, -734, -734, -734, - -734, -734, -734, -734, -734, -734, -734, -734, -734, -734, - -734, -734, -734, -734, -734, -734, -734, -734, -734, -734, - -734, -734, -734, -734, -734, -734, -734, -734, -734, -734, - -734, -734, -734, -734, -734, -734, -734, -734, -734, -734, - -734, -734, 634, -734, 635, 639, 644, -734, 2564, 372, - -734, -734, -734, -734, -734, 1544, 632, 3742, 817, -734, - -734, -734, -734, 339, 144, -734, -734, 646, 647, 650, - -734, 653, 654, 4343, -734, -734, 2953, -734, 2953, -734, - 2953, -734, -734, 2953, 2953, 2953, -734, 5185, -734, -734, - 56, -734, 110, 655, 124, -734, -734, -734, -734, 649, - 667, 670, 671, 663, 673, 2906, 2906, 2906, 2906, 2906, - 1390, 2906, 3970, -734, 817, 664, 676, 677, 2792, 679, - 675, 687, 680, 3610, 2792, -734, -734, -734, 969, 1108, - 928, 928, 744, 744, 318, 318, -734, 3779, 4017, 4074, - 4158, 744, 744, 386, 386, 74, 74, 74, -734, -734, - 128, 3149, -2, 665, -734, -2, 4343, 690, -734, 561, - 1695, -734, -734, -734, -734, 2336, 3797, 692, -734, -734, - 699, -734, -734, -734, 561, 561, 561, 694, -734, -734, - -734, -734, -734, -734, -734, 832, 718, 841, 727, 728, - 847, 730, 4509, 4509, 4509, 4509, 4509, 4509, 209, 209, - 209, 209, 209, 713, 139, 209, 2906, 2906, 2906, 2906, - 2906, 2906, 2906, 2906, 2906, 2906, 2906, 2906, 2906, 2906, - 2906, 2906, 2906, 2906, 2906, 2678, 2792, -734, -734, 716, - 717, 719, 720, -734, 722, -734, -734, 74, 2792, -734, - -734, -734, 4343, 723, 561, -2, -734, 715, 561, -734, - 339, 339, 339, 561, 725, -734, 745, -734, -734, 160, - -734, 731, 740, 750, 754, 734, 755, 2906, -734, 3197, - 4000, 2848, 2848, 1434, 1434, 526, 526, -734, 3928, 4174, - 4203, 1131, 536, 536, 209, 209, 209, -734, -734, 163, - 3167, 2792, 2792, -734, 2792, 2792, 3797, 4343, 749, 561, - -2, -734, -2, 751, -734, -734, -734, -2, 764, 883, - 884, 768, -734, 756, 758, 759, -734, 760, 209, 2906, - -734, -734, 169, 177, 187, 192, 753, 561, -2, -734, - -734, 762, 766, -734, 2792, 2792, 2792, 2792, 3970, -734, - -734, -734, -734, 561, 339, 777, 778, 199, 205, 215, - 228, 339, -734, -734, -734, -734, -734, -734, -734, -734 + 347, -868, 2997, 4826, 28, 3474, -868, -868, -868, -868, + -868, -868, -868, -868, -138, -102, -81, -45, -31, -27, + 9, 23, 52, -868, -868, 66, 89, 100, 114, 117, + 123, 131, 134, 144, 172, 199, 210, 213, 239, 243, + 252, 254, 266, 274, 5078, -868, -868, 60, 292, 293, + 7, 164, -868, 304, 305, 308, 2997, 2997, 2997, 2997, + 2997, 2040, 1052, 2997, 2753, -868, 185, -868, -868, -868, + -868, -868, -868, -868, -868, 4939, 310, -868, 27, -868, + -868, 1717, 4467, 4467, -868, 2604, 311, -868, 4467, -868, + -868, 16, 16, -868, -868, -868, -868, 334, 276, 464, + -868, -868, -868, -868, -868, -868, 5981, 5981, 5981, -868, + 5981, 3092, 5981, 152, -868, 5972, 317, 321, 329, 332, + 5981, 2208, 357, 358, 360, 5981, 5981, 336, 5884, 5981, + 5981, 2823, 5981, 5981, -868, 345, -868, -868, -868, 3672, + -868, -868, -868, -868, -868, 2997, 4826, 2997, 2997, 2997, + 2997, 4826, 2997, 4826, 2997, 4826, 2997, 4826, 4826, 4826, + 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, 4826, + 4826, 4826, 2997, -868, -868, 353, 2604, 355, 370, 2604, + 2604, -868, 4826, 2997, 2997, 372, 4826, 4826, 2040, 2997, + 2997, 73, 73, 73, 73, 73, -138, -81, -45, -31, + -27, 23, 66, 100, 6011, 4837, 5211, 6044, 308, 373, + -93, 2753, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, 2604, 356, 374, -868, -868, 73, 2997, + 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, + 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, + 2337, 2997, -868, -868, 16, 16, 2997, -868, -868, -868, + 4467, -868, -868, -868, -868, 4826, -868, 379, 560, 354, + 16, 16, 354, 354, 4375, 377, -868, 378, -868, -868, + -868, -868, -868, -868, 3578, 400, -26, -10, 33, 130, + -868, -868, -868, 5981, -868, -868, -868, -868, 5981, -868, + -868, -868, 5858, 2295, -868, 2604, 2604, 2604, 2604, -868, + -868, 406, -868, -868, -868, -868, -868, 2997, 3763, -868, + 396, -868, 3803, -868, 2604, 83, -868, -868, 2604, 338, + 389, -868, 390, 4968, 2604, 391, -868, 2604, -6, 314, + 409, -868, -868, -868, -868, 2065, 464, -868, 394, 414, + -868, 397, 398, 399, 401, 403, 425, 404, 426, 419, + 428, 429, 430, 415, 432, -82, 452, 434, 436, 437, + 441, 442, 445, 446, 453, 455, 458, 466, 2997, -868, + 4826, 2997, -868, -868, 477, 468, 473, 2604, 475, 487, + 478, 3948, 481, 482, 2997, 2997, -868, -868, 486, 1052, + 1325, 4243, 3013, 3013, 1096, 1096, 579, 579, -868, 4038, + 1056, 4259, 3516, 1096, 1096, 233, 233, 73, 73, 73, + -868, -868, -79, 1807, -868, -868, 3966, 492, 354, 498, + 493, 2604, 354, 354, 354, 354, 354, 502, -868, 377, + -868, 377, -868, 502, 502, -868, 354, 4850, 4737, 354, + 354, 503, 31, -868, 821, 85, -868, 2997, 2604, 501, + -868, -868, -868, -868, 3578, -868, 595, -868, -868, -868, + 530, 531, 532, 534, 537, 5354, -868, 1433, 4571, 315, + 513, 314, -868, -868, 539, -868, 4826, 520, 546, 533, + -868, 4, 2997, 5164, 247, -868, 4826, -868, 541, -868, + -868, 2604, -22, -868, -868, -868, 2205, -868, -868, 371, + -868, 557, -868, -868, -868, -868, -868, -868, -868, 544, + -868, 545, -868, -868, -868, -868, 4826, -868, 4826, -868, + 4826, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, 3984, 529, 548, 547, -868, -868, 549, -868, + 552, -868, -868, -868, -868, 73, 2753, 4619, 3321, -868, + -868, 2997, -868, -868, -868, -868, 502, 354, -868, 502, + 502, 502, 502, 502, 2997, -68, 4939, 821, 85, -868, + 34, 75, -868, -868, 4708, 551, 821, 821, 821, 821, + 821, 821, -44, -868, -868, 553, 2604, 85, 85, 85, + 85, 85, 85, -18, 554, 2753, -868, -40, -868, 578, + 5426, -868, 581, -868, 5498, -868, 715, 716, 719, 720, + -868, -868, 405, 593, -868, -868, -868, -868, 3877, -868, + 590, 601, 2472, -868, 647, -868, -868, 4, -868, 371, + -868, 602, 583, 2604, 3129, 4619, 603, 371, 4619, 4002, + 247, 604, 247, 247, 247, 247, 247, 93, -868, -868, + 599, 5570, -868, 582, -868, 179, -868, -61, 613, 618, + 610, 620, 621, 2469, 2225, 624, 371, 371, 3605, 371, + 371, 371, 371, -868, 151, 351, -868, 3578, 2997, 2997, + 614, 619, 623, -868, -868, -868, 2997, -868, 2997, 631, + -868, 5054, -868, -868, -868, -868, -868, 622, -868, -868, + 638, -868, 2753, 502, 636, 635, 821, 85, -44, -18, + 641, 644, 3321, -868, -868, 821, 645, 645, 645, 645, + 645, 262, 2997, 2997, -868, -868, 85, -868, 648, 648, + 648, 648, 648, 275, 2997, -868, 649, -868, 2997, -868, + 5194, 672, 673, -868, -868, -868, -67, 676, 677, 681, + 5642, 15, -868, 647, 5944, 4571, 2604, 669, 666, 647, + 647, 647, 647, 647, 647, 39, 648, -868, 351, -868, + 5981, -868, -868, -868, -868, -868, -868, -868, 667, 675, + 682, -868, -868, 5078, -868, -868, 688, 10, 691, -868, + 683, 2997, 2997, 2997, 2997, 2040, 2997, 685, 36, -868, + -868, 4204, -868, 185, -868, 686, 371, 202, 689, -868, + 284, 247, 684, 684, 684, 684, 684, -868, 2997, -868, + -868, 4619, -868, 1873, -868, -868, 2604, 2997, 2997, -868, + -868, -868, -868, -868, 2469, 687, 701, 2753, -868, -868, + 371, 288, 288, 844, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + 692, 693, -868, -868, 288, 288, 288, 350, 854, -868, + 2997, -868, 2205, 718, -868, 578, -42, -12, -868, -868, + -868, 51, 58, -868, 5078, 16, 678, -868, -868, 4619, + -44, -18, -868, -868, 4619, 4619, -868, 645, 698, 2753, + 700, 648, 702, 703, 2489, 5245, 5264, 5278, 2604, 413, + -868, 2604, -868, 852, -868, 5194, 5714, 858, 725, 862, + 863, 864, -868, 729, 39, 648, -868, -868, -868, -868, + -868, 4826, 647, 3404, -868, -868, 735, -868, -868, 4826, + 4826, 4826, 723, 4826, 724, 4826, 4826, 2040, 73, 73, + 73, 73, 717, 82, 73, -868, -868, 3267, 2997, 2997, + 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, + 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2601, + 2997, -868, 367, 726, -868, -868, 684, 4619, 721, 727, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, 728, -868, + 731, 733, 736, -868, 2733, 288, -868, -868, -868, -868, + -868, 3129, 732, 2225, 371, -868, -868, -868, -868, 3321, + 16, -868, -868, 11, 738, 740, -868, -868, 741, 742, + 4619, -868, 4619, -868, -868, 4456, -868, 4456, -868, 4456, + -868, -868, 4456, 4456, 4456, -868, -868, 5786, -868, -868, + 116, -868, 137, 751, 138, -868, -868, -868, 730, 737, + 763, 768, 24, 769, 3404, 3404, 3404, 3404, 3404, 2040, + 3404, 3685, -868, 371, 762, 773, 774, 2997, 775, 2604, + 766, 778, 770, 4020, 2997, -868, -868, -868, 1325, 4243, + 3013, 3013, 1096, 1096, 579, 579, -868, 4186, 1056, 4259, + 3516, 1096, 1096, 233, 233, 73, 73, 73, -868, -868, + 139, 3287, 2124, 771, -868, 2124, 4619, 772, -868, -868, + 1596, -868, -868, 867, -868, 2469, 2753, 780, -868, -868, + 794, -868, 783, -868, -868, -868, -868, -868, 784, 786, + -868, -868, -868, -868, -868, -868, -868, 942, 808, 946, + 814, 817, 954, 819, 4826, 4826, 4826, 4826, 804, 4826, + 4826, 87, 87, 87, 87, 87, 803, 146, 87, 3404, + 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404, + 3404, 3404, 3404, 3404, 3404, 3404, 3404, 3404, 2865, 2997, + -868, -868, 812, 813, 806, 815, 818, -868, 822, -868, + -868, 73, 2997, -868, -868, -868, 4619, 824, -868, 2124, + -868, -868, 816, -868, -868, -868, 3321, 3321, 3321, -868, + -868, 825, -868, 840, -868, -868, 155, -868, 829, 832, + 841, 842, 2604, 830, 845, 3404, -868, 3201, 4290, 1525, + 1525, 1338, 1338, 1374, 1374, -868, 4222, 4441, 4457, 4482, + 975, 975, 87, 87, 87, -868, -868, 171, 3927, 2997, + 2997, -868, 2997, -868, 2997, 2753, 4619, 837, -868, 2124, + -868, 2124, 838, -868, -868, -868, 2124, 2124, 856, 994, + 995, 860, -868, 849, 850, 853, 855, -868, 861, 87, + 3404, -868, -868, 214, 215, 223, 229, 868, -868, 2124, + -868, -868, 870, 872, -868, 2997, 2997, 2997, -868, 2997, + 3685, -868, -868, -868, -868, -868, 3321, 871, 874, 244, + 255, 257, 258, 3321, -868, -868, -868, -868, -868, -868, + -868, -868 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1198,170 +1267,187 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_uint16 yydefact[] = { - 0, 672, 0, 0, 0, 672, 5, 584, 580, 583, - 668, 669, 586, 587, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 582, 588, 0, 0, 0, 0, 590, - 589, 0, 0, 0, 0, 0, 581, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 672, 0, 3, 524, - 585, 253, 261, 335, 336, 338, 339, 320, 0, 0, - 350, 317, 349, 344, 341, 340, 343, 321, 0, 322, - 342, 352, 337, 672, 4, 255, 256, 257, 0, 306, - 0, 252, 332, 333, 334, 1, 20, 672, 672, 672, - 21, 672, 672, 672, 0, 37, 672, 0, 0, 0, - 0, 672, 0, 0, 0, 0, 672, 672, 0, 672, - 672, 672, 0, 672, 672, 6, 0, 16, 7, 18, - 0, 14, 15, 17, 64, 39, 672, 0, 672, 672, - 672, 672, 0, 672, 0, 672, 672, 672, 274, 279, - 0, 0, 545, 0, 0, 273, 0, 672, 672, 0, - 0, 0, 672, 672, 554, 552, 551, 553, 550, 253, - 335, 336, 338, 339, 350, 349, 344, 341, 340, 343, - 342, 337, 0, 0, 485, 656, 657, 658, 661, 659, - 663, 662, 660, 664, 650, 649, 0, 647, 652, 646, - 549, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 733, 0, 0, 0, 733, 5, 624, 620, 623, + 729, 730, 626, 627, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 622, 628, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 670, 671, 672, 0, 318, 319, - 351, 341, 346, 345, 348, 254, 347, 0, 672, 672, - 672, 672, 672, 672, 0, 282, 240, 672, 665, 666, - 667, 0, 308, 656, 657, 659, 284, 258, 286, 672, - 51, 40, 50, 52, 672, 41, 46, 22, 672, 0, - 44, 0, 0, 0, 0, 49, 672, 0, 25, 24, - 23, 47, 43, 0, 0, 138, 0, 53, 0, 19, - 0, 0, 45, 48, 0, 281, 263, 272, 0, 0, - 0, 12, 0, 0, 0, 280, 59, 265, 266, 267, - 306, 0, 262, 0, 484, 483, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 275, 672, - 277, 276, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 579, 651, 672, 672, 563, 564, 565, - 566, 567, 568, 571, 572, 578, 0, 560, 561, 562, - 569, 570, 558, 559, 555, 556, 557, 577, 576, 0, - 0, 283, 0, 672, 0, 672, 672, 672, 672, 672, - 245, 232, 0, 241, 0, 242, 244, 243, 171, 672, - 0, 0, 672, 672, 0, 172, 175, 672, 170, 672, - 314, 0, 311, 310, 305, 309, 0, 672, 672, 42, - 38, 672, 0, 0, 0, 0, 0, 672, 323, 0, - 672, 281, 263, 0, 280, 67, 0, 329, 0, 0, - 55, 57, 72, 74, 0, 0, 672, 264, 672, 0, - 353, 188, 0, 0, 62, 353, 193, 0, 63, 61, - 0, 270, 308, 268, 530, 544, 536, 532, 534, 535, - 0, 542, 0, 541, 531, 538, 0, 0, 0, 537, - 540, 543, 0, 547, 548, 539, 533, 525, 486, 88, - 672, 672, 87, 648, 0, 575, 574, 260, 246, 672, - 237, 233, 234, 236, 235, 672, 0, 0, 672, 209, - 0, 0, 672, 174, 0, 0, 672, 672, 672, 672, - 672, 672, 672, 222, 221, 0, 482, 481, 315, 304, - 259, 672, 289, 672, 288, 672, 325, 0, 0, 0, - 0, 327, 672, 0, 0, 150, 151, 0, 0, 0, - 0, 140, 141, 672, 149, 139, 0, 69, 0, 331, - 0, 0, 0, 672, 672, 0, 0, 672, 0, 672, - 0, 672, 672, 672, 672, 672, 0, 213, 212, 672, - 76, 0, 672, 0, 8, 0, 0, 0, 0, 0, - 0, 672, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 60, 672, 672, 152, 0, 0, 0, 278, 546, - 0, 0, 0, 0, 90, 92, 89, 91, 0, 0, - 167, 573, 238, 0, 0, 672, 672, 0, 0, 672, - 173, 176, 672, 227, 223, 224, 226, 225, 0, 0, - 672, 206, 186, 247, 312, 0, 285, 0, 0, 291, - 290, 328, 672, 0, 0, 0, 0, 672, 0, 36, - 143, 672, 145, 672, 0, 672, 68, 672, 330, 672, - 56, 639, 635, 638, 641, 642, 178, 0, 0, 0, - 637, 643, 0, 645, 644, 0, 0, 0, 636, 0, - 0, 0, 0, 0, 0, 0, 0, 179, 210, 182, - 211, 593, 640, 177, 0, 0, 0, 0, 271, 0, - 672, 218, 214, 215, 217, 216, 82, 672, 13, 672, - 189, 354, 355, 353, 0, 672, 672, 191, 192, 194, - 196, 197, 672, 0, 200, 202, 199, 195, 0, 159, - 155, 0, 105, 106, 107, 108, 109, 110, 113, 114, - 129, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 133, 132, 116, 115, 102, 104, 103, - 111, 112, 100, 101, 97, 98, 99, 96, 0, 0, - 95, 153, 156, 158, 157, 0, 0, 163, 672, 165, - 0, 0, 65, 269, 0, 0, 0, 0, 672, 0, - 672, 0, 353, 239, 672, 672, 207, 672, 672, 248, - 228, 231, 187, 0, 316, 663, 0, 662, 0, 0, - 292, 0, 294, 653, 672, 0, 672, 0, 0, 0, - 0, 0, 324, 0, 0, 672, 0, 134, 137, 135, - 142, 0, 147, 184, 0, 70, 54, 0, 0, 0, - 601, 0, 0, 0, 0, 609, 608, 607, 606, 0, - 0, 605, 58, 181, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 630, 629, 0, 0, 0, + 0, 0, 621, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 733, 0, 3, 563, 625, 282, 292, 291, + 370, 371, 373, 374, 355, 0, 0, 385, 352, 384, + 379, 376, 375, 378, 356, 0, 0, 357, 377, 387, + 372, 733, 733, 4, 284, 285, 286, 0, 341, 0, + 281, 367, 368, 369, 1, 21, 733, 733, 733, 22, + 733, 733, 733, 0, 38, 733, 0, 0, 0, 0, + 733, 0, 0, 0, 0, 733, 733, 0, 733, 733, + 733, 0, 733, 733, 6, 0, 17, 7, 19, 0, + 15, 16, 18, 65, 40, 733, 0, 733, 733, 733, + 733, 0, 733, 0, 733, 0, 733, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 672, 0, - 0, 672, 84, 219, 672, 0, 0, 357, 358, 362, - 359, 366, 360, 361, 363, 364, 365, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 432, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 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, 672, 474, - 475, 476, 467, 479, 463, 464, 462, 469, 470, 458, - 459, 460, 461, 468, 466, 473, 471, 477, 472, 478, - 465, 356, 0, 9, 0, 0, 0, 198, 201, 160, - 154, 131, 130, 162, 166, 672, 0, 187, 0, 528, - 527, 529, 526, 672, 672, 168, 93, 0, 0, 0, - 208, 0, 0, 672, 229, 313, 0, 297, 0, 296, - 0, 295, 655, 0, 0, 0, 654, 672, 293, 326, - 0, 26, 0, 0, 0, 35, 144, 148, 146, 0, + 0, 0, 733, 306, 312, 0, 0, 0, 585, 0, + 0, 305, 0, 733, 733, 0, 0, 0, 0, 733, + 733, 594, 592, 591, 593, 590, 282, 370, 371, 373, + 374, 385, 384, 379, 376, 375, 378, 377, 372, 0, + 0, 523, 715, 716, 717, 718, 721, 719, 723, 722, + 720, 724, 708, 707, 0, 705, 710, 704, 589, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 185, 487, 0, 0, 0, 0, 672, 0, - 0, 0, 0, 0, 0, 634, 180, 183, 618, 619, - 620, 621, 622, 623, 626, 627, 633, 0, 615, 616, - 617, 624, 625, 613, 614, 610, 611, 612, 632, 631, - 0, 0, 73, 0, 78, 75, 672, 0, 220, 672, - 0, 190, 11, 10, 203, 672, 204, 0, 161, 66, - 0, 169, 94, 591, 672, 672, 672, 0, 303, 302, - 301, 300, 299, 298, 287, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 500, 498, - 497, 499, 496, 0, 0, 495, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 71, 600, 0, - 0, 0, 0, 599, 0, 603, 604, 594, 0, 630, - 629, 80, 672, 0, 672, 77, 480, 0, 672, 353, - 672, 672, 672, 672, 0, 27, 0, 32, 34, 0, - 29, 0, 0, 0, 0, 0, 0, 0, 523, 509, - 510, 511, 512, 513, 514, 515, 516, 522, 0, 506, - 507, 508, 504, 505, 501, 502, 503, 521, 520, 0, - 0, 0, 0, 602, 0, 0, 628, 672, 0, 672, - 83, 205, 164, 0, 251, 250, 249, 230, 0, 0, - 0, 0, 494, 0, 0, 0, 493, 0, 488, 0, - 519, 518, 0, 0, 0, 0, 0, 672, 85, 592, - 28, 0, 0, 30, 0, 0, 0, 0, 517, 597, - 596, 598, 595, 672, 672, 0, 0, 0, 0, 0, - 0, 672, 79, 33, 31, 491, 490, 492, 489, 81 + 0, 0, 731, 732, 733, 733, 0, 353, 354, 386, + 376, 381, 380, 383, 283, 0, 382, 0, 268, 733, + 733, 733, 733, 733, 733, 0, 315, 267, 317, 733, + 725, 726, 727, 728, 0, 343, 715, 716, 717, 719, + 319, 287, 321, 733, 52, 41, 51, 53, 733, 42, + 47, 23, 733, 0, 45, 0, 0, 0, 0, 50, + 733, 0, 26, 25, 24, 48, 44, 0, 0, 143, + 0, 54, 0, 20, 0, 0, 46, 49, 0, 314, + 294, 304, 0, 0, 0, 0, 13, 0, 0, 0, + 313, 60, 296, 297, 298, 341, 0, 293, 0, 522, + 521, 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, 0, 307, + 0, 733, 309, 308, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 619, 709, 733, 733, + 603, 604, 605, 606, 607, 608, 611, 612, 618, 0, + 600, 601, 602, 609, 610, 598, 599, 595, 596, 597, + 617, 616, 0, 0, 316, 318, 0, 0, 733, 269, + 0, 258, 733, 733, 733, 733, 733, 274, 257, 0, + 270, 0, 271, 273, 272, 182, 733, 0, 0, 733, + 733, 0, 183, 186, 733, 0, 181, 733, 349, 0, + 346, 345, 340, 344, 0, 733, 733, 43, 39, 733, + 0, 0, 0, 0, 0, 733, 358, 0, 733, 314, + 294, 0, 313, 68, 0, 364, 0, 0, 56, 58, + 73, 75, 0, 0, 733, 295, 0, 733, 0, 388, + 199, 0, 0, 63, 388, 204, 0, 64, 62, 0, + 301, 343, 299, 569, 584, 575, 571, 573, 574, 0, + 581, 0, 580, 633, 570, 634, 0, 636, 0, 637, + 0, 640, 641, 642, 643, 644, 645, 646, 647, 648, + 649, 577, 0, 0, 0, 0, 576, 579, 0, 582, + 0, 587, 588, 578, 572, 564, 524, 733, 733, 88, + 706, 0, 615, 614, 289, 290, 275, 733, 259, 264, + 260, 261, 263, 262, 733, 0, 0, 733, 0, 223, + 0, 0, 733, 185, 0, 0, 733, 733, 733, 733, + 733, 733, 733, 236, 235, 0, 246, 0, 0, 0, + 0, 0, 0, 733, 0, 520, 519, 350, 339, 288, + 733, 324, 733, 323, 733, 360, 0, 0, 0, 0, + 362, 733, 0, 0, 160, 161, 162, 148, 0, 149, + 0, 145, 150, 146, 733, 159, 144, 0, 70, 0, + 366, 0, 0, 0, 733, 733, 0, 0, 733, 0, + 733, 0, 733, 733, 733, 733, 733, 0, 227, 226, + 0, 733, 77, 0, 733, 0, 8, 0, 0, 0, + 0, 0, 0, 733, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 61, 733, 733, 163, 0, 0, 0, + 0, 0, 0, 310, 311, 586, 0, 583, 0, 0, + 95, 0, 89, 92, 96, 91, 93, 0, 90, 94, + 0, 178, 613, 265, 0, 0, 733, 0, 733, 733, + 0, 0, 733, 184, 187, 733, 241, 237, 238, 240, + 239, 0, 0, 733, 217, 197, 0, 247, 252, 248, + 249, 251, 250, 0, 733, 220, 276, 347, 0, 320, + 0, 0, 326, 325, 363, 733, 0, 0, 0, 0, + 733, 0, 37, 733, 733, 0, 153, 151, 0, 733, + 733, 733, 733, 733, 733, 733, 157, 69, 733, 365, + 733, 57, 697, 693, 696, 699, 700, 189, 0, 0, + 0, 695, 701, 0, 703, 702, 0, 0, 0, 694, + 0, 0, 0, 0, 0, 0, 0, 0, 190, 224, + 193, 225, 650, 698, 188, 0, 0, 0, 0, 302, + 0, 733, 232, 228, 229, 231, 230, 83, 733, 303, + 14, 733, 200, 389, 390, 388, 0, 733, 733, 202, + 203, 205, 207, 208, 733, 0, 211, 213, 210, 206, + 0, 170, 166, 0, 110, 111, 112, 113, 114, 115, + 118, 119, 134, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 138, 137, 121, 120, 107, + 109, 108, 116, 117, 105, 106, 102, 103, 104, 101, + 0, 0, 100, 164, 167, 169, 168, 0, 0, 174, + 733, 176, 0, 0, 66, 300, 0, 0, 635, 638, + 639, 0, 0, 733, 0, 733, 0, 388, 266, 733, + 733, 733, 218, 221, 733, 733, 277, 242, 245, 198, + 0, 253, 256, 0, 351, 723, 0, 722, 0, 0, + 327, 0, 329, 711, 733, 0, 733, 0, 0, 0, + 0, 0, 359, 0, 733, 158, 139, 142, 140, 147, + 154, 0, 733, 0, 155, 195, 0, 71, 55, 0, + 0, 0, 659, 0, 0, 0, 0, 0, 667, 666, + 665, 664, 0, 0, 663, 59, 192, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 733, 0, 0, 733, 85, 233, 733, 0, 0, + 392, 393, 397, 394, 402, 395, 396, 398, 399, 400, + 401, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 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, 468, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 464, 465, 466, 467, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 490, 491, + 492, 493, 494, 495, 733, 512, 513, 514, 505, 517, + 501, 502, 500, 507, 508, 496, 497, 498, 499, 506, + 504, 511, 509, 515, 510, 516, 503, 391, 0, 9, + 0, 0, 0, 209, 212, 171, 165, 136, 135, 173, + 177, 733, 0, 198, 0, 567, 566, 568, 565, 733, + 733, 179, 97, 0, 0, 0, 219, 222, 0, 0, + 733, 243, 733, 254, 348, 0, 332, 0, 331, 0, + 330, 713, 0, 0, 0, 712, 714, 733, 328, 361, + 0, 27, 0, 0, 0, 36, 156, 152, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 196, 525, 0, 0, 0, 0, 733, 0, 0, + 0, 0, 0, 0, 0, 692, 191, 194, 676, 677, + 678, 679, 680, 681, 684, 685, 691, 0, 673, 674, + 675, 682, 683, 671, 672, 668, 669, 670, 690, 689, + 0, 0, 74, 0, 79, 76, 733, 0, 234, 733, + 0, 201, 12, 10, 214, 733, 215, 0, 172, 67, + 0, 180, 0, 98, 631, 733, 733, 733, 0, 0, + 338, 337, 336, 335, 334, 333, 322, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 539, 537, 536, 538, 535, 0, 0, 534, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 658, 0, 0, 0, 0, 0, 656, 0, 661, + 662, 651, 0, 688, 687, 81, 733, 0, 733, 78, + 518, 11, 0, 733, 388, 99, 733, 733, 733, 733, + 733, 0, 28, 0, 33, 35, 0, 30, 0, 0, + 0, 0, 0, 0, 0, 0, 562, 548, 549, 550, + 551, 552, 553, 554, 555, 561, 0, 545, 546, 547, + 543, 544, 540, 541, 542, 560, 559, 0, 0, 0, + 0, 660, 0, 657, 0, 686, 733, 0, 733, 84, + 216, 175, 0, 280, 279, 278, 244, 255, 0, 0, + 0, 0, 533, 0, 0, 0, 0, 531, 0, 526, + 0, 558, 557, 0, 0, 0, 0, 0, 733, 86, + 632, 29, 0, 0, 31, 0, 0, 0, 532, 0, + 556, 654, 653, 655, 652, 733, 733, 0, 0, 0, + 0, 0, 0, 733, 80, 34, 32, 529, 528, 530, + 527, 82 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -734, -734, -260, -734, 210, -734, -734, 657, -734, -734, - 188, 371, -734, -104, -734, -102, -734, -734, -134, -734, - -734, -734, 666, -734, -734, -734, -734, -734, -435, -734, - -734, 298, -734, -734, -734, 311, 414, -480, -734, -534, - -550, -460, -734, -72, -734, 143, -571, -734, -405, -705, - -734, -379, 113, -474, 97, -179, -213, -40, 684, -573, - 688, 16, -83, -734, -82, -734, -734, -734, -734, 149, - -80, -734, -377, -734, -734, -15, -7, -734, -734, -734, - -734, -17, 3, -734, -734, -434, -734, -10, -734, -476, - -106, -31, 246, 522, -249, -734, -734, 637, -734, -733, - 795, 799, -495, -1 + -868, -868, -245, -868, 178, -868, -868, 722, -868, -868, + -53, 375, -868, -124, -868, -142, -868, -868, -192, -868, + -868, -868, 734, -868, -868, -868, -868, -868, -493, -868, + -868, 294, -868, -868, -868, -868, 273, 412, -553, -868, + -628, -666, -100, -868, -101, -868, 103, -511, -868, -466, + -838, -868, -445, 72, -540, -147, -442, 756, -54, -41, + -30, 739, -682, 746, 884, -104, -868, -97, -868, -868, + -868, -868, 124, -92, -868, -444, -868, -868, -14, 55, + -868, -868, -868, -868, -7, 5, -868, -868, -502, -868, + -51, -868, -538, -140, -60, 188, 107, 104, -868, -868, + 694, -868, -867, 634, 652, -617, -1 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 4, 5, 563, 564, 117, 428, 118, 119, 258, - 120, 419, 420, 121, 440, 581, 279, 538, 646, 293, - 544, 547, 294, 699, 1202, 1257, 874, 1116, 471, 761, - 818, 122, 276, 530, 531, 532, 533, 582, 1015, 583, - 599, 384, 385, 676, 677, 822, 621, 434, 438, 713, - 714, 386, 679, 556, 502, 234, 235, 73, 295, 142, - 296, 74, 75, 397, 76, 398, 513, 628, 629, 800, - 77, 78, 394, 390, 391, 79, 80, 123, 522, 632, - 124, 81, 82, 83, 84, 561, 562, 701, 1001, 505, - 303, 304, 1072, 174, 49, 680, 681, 186, 187, 802, - 803, 584, 50, 125 + -1, 4, 5, 665, 666, 136, 497, 137, 138, 302, + 139, 487, 488, 140, 509, 683, 323, 639, 777, 338, + 645, 648, 339, 831, 1356, 1416, 1017, 1266, 558, 893, + 957, 141, 320, 630, 631, 632, 633, 634, 684, 1161, + 685, 710, 451, 452, 807, 808, 964, 734, 503, 507, + 845, 846, 453, 810, 657, 726, 738, 275, 276, 91, + 92, 340, 178, 341, 93, 94, 465, 95, 466, 612, + 751, 752, 940, 96, 97, 462, 458, 459, 98, 99, + 142, 621, 755, 143, 100, 101, 102, 103, 663, 664, + 833, 1147, 604, 348, 349, 1221, 211, 65, 811, 812, + 224, 225, 942, 943, 593, 66, 144 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1369,1372 +1455,1531 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 6, 568, 489, 361, 647, 275, 407, 1006, 537, 603, - 592, 145, 771, 143, 173, 469, 373, 375, 216, 510, - 780, 144, 307, 308, 309, 310, 545, 312, 638, 314, - 315, 316, 769, 218, 214, 786, 215, 297, 298, 332, - 299, 323, 324, 85, 493, 189, 329, 330, 682, 370, - 372, 374, 376, 377, 126, -665, 843, 609, 333, 789, - 127, 172, 1037, 1039, 1041, 128, 686, 222, 223, 224, - -666, 594, 236, 226, 129, 689, 824, 691, 692, 693, - 694, 695, 332, 219, 684, 595, -667, 687, 596, 830, - 807, 597, 238, 239, 719, 720, 130, 762, 763, 764, - 765, 475, 470, 302, 237, 300, 199, 598, -665, 808, - 593, -665, 131, 301, 332, 611, 238, 239, 495, 332, - 133, 332, 496, -666, 132, 305, -666, 305, 305, 305, - 305, 705, 305, 1019, 305, 305, 305, 511, 1020, -667, - 1021, 515, -667, 306, 793, 134, 305, 305, 311, 706, - 313, 305, 305, 546, 566, 567, 227, 494, 332, 135, - 228, 332, 322, 497, 678, 325, 326, 327, 559, 844, - 222, 223, 224, 226, 813, 240, 624, 1022, 772, 625, - 1085, 359, 619, 1145, 478, 136, 480, 481, 482, 483, - 484, 297, 298, 387, 299, 297, 298, 620, 299, 240, - 486, 229, 1146, 490, 491, 869, 1024, 766, 773, 137, - 821, 241, 146, 457, 1030, 236, 873, 211, 212, 213, - 147, 875, 767, 768, 222, 620, 498, 371, 236, 236, - 371, 371, 388, 767, 768, 870, 392, 1147, 1009, 876, - 499, 1174, 825, 148, 395, 500, 238, 239, 550, 426, - 501, 1150, 551, 175, 176, 332, 1148, 302, 214, 300, - 215, 302, 637, 300, 230, 6, 332, 301, 364, 1002, - 1151, 301, 365, 149, 1199, 250, 251, 252, 231, 253, - 255, 256, 150, 232, 260, 1228, 151, 1270, 233, 265, - 332, 257, 1016, 552, 271, 272, 332, 274, 277, 278, - 602, 282, 283, 1138, 332, 1139, 1271, 1140, 152, 1280, - 1141, 1142, 1143, 366, 332, 1299, 177, 178, 305, 332, - 175, 176, 153, 1300, 1029, 217, 332, 1031, 1032, 240, - 485, 604, 332, 1301, 472, 189, 179, 180, 1302, 181, - 488, 387, 332, 1023, 182, 1315, 183, 261, 1028, 682, - 199, 1316, 1184, 1185, 1186, 332, 553, 1, 2, 3, - 262, 1317, 371, 263, 371, 371, 371, 371, 371, 264, - 554, 593, 806, 268, 1318, 555, 367, 417, 371, 418, - 269, 371, 371, 177, 178, 549, 504, 270, 507, 1026, - 368, 696, 697, 534, 273, 369, 6, 514, 284, 395, - 6, 703, 704, 179, 180, 10, 181, 11, 317, 535, - 319, 182, 594, 183, 1117, 485, 607, -86, 199, -86, - 1207, -86, 243, 244, 331, 558, 595, 6, 335, 596, - 387, 336, 597, 1112, 540, 422, 1115, 260, 363, 435, - 184, 436, 399, 437, 185, 485, 608, 605, 598, 430, - 389, 431, 432, 433, 387, 206, 207, 208, 209, 210, - -232, 211, 212, 213, -86, 678, -86, 408, -86, 388, - 600, 396, 435, 1130, 436, 410, 770, 423, 371, 767, - 768, 1013, 620, 791, 507, 177, 178, 504, 1043, 1044, - 1045, 472, 767, 768, 1113, 504, 504, 504, 504, 504, - 504, 622, 424, 387, 387, 245, 180, 387, 181, 872, - 697, 534, 630, 182, 444, 183, 767, 768, 439, 332, - 682, 6, 445, 446, 48, 208, 209, 210, 447, 211, - 212, 213, 504, 448, 449, 451, 450, 452, 458, 817, - 647, 241, 683, 388, 1047, 462, 388, 479, 558, 453, - 558, 558, 558, 558, 558, 774, 775, 454, 1174, 776, - 777, 702, 154, 155, 156, 157, 158, 1025, 1174, 190, - 716, 455, 1073, 1137, 459, 460, 145, 461, 143, 463, - 465, 600, 622, 466, 485, 606, 144, 492, 395, 509, - 512, 516, 536, 613, 614, 615, 616, 617, 618, 1004, - 1005, 517, 518, 519, 504, 622, 520, 541, 600, 539, - 542, 504, 543, 560, 585, 586, 587, 590, 469, 507, - 801, 612, 591, 589, -307, 627, 633, 534, 623, 634, - 645, 6, 635, 636, 639, 643, 678, 644, 649, 648, - 504, 685, 690, 840, 823, 145, 622, 143, 700, 707, - 778, 708, 709, 710, 718, 144, 1203, 711, 781, 387, - 1264, 1265, 1266, 1179, 1180, 1181, 1182, 1183, 782, 1184, - 1185, 1186, 783, 328, 784, 1181, 1182, 1183, 787, 1184, - 1185, 1186, 788, 804, 1205, 620, -239, 805, 814, 558, - 839, 809, 810, 811, 827, 832, 507, 816, 388, 1210, - 1211, 1212, 785, 828, 305, 305, 829, 831, 833, 790, - 1007, 716, 1008, 337, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 834, 360, 1010, 842, 815, 362, - 868, 871, 1258, 697, 387, 1011, 1014, 387, 387, 1012, - 1033, 1018, 1034, 1050, 1312, 1051, 1052, 1053, 1054, 1055, - 1074, 1319, 145, 1084, 143, 197, 198, 507, 1118, 1260, - 1078, 1119, 144, 1262, 1114, 1263, 199, 472, 1267, 236, - 1128, 1121, 1122, 388, 622, 1123, 388, 388, 801, 801, - 801, 1124, 1132, 1152, 1133, 409, 1134, 1286, 801, 1135, - 1136, 1149, 1153, 6, 387, 1154, 1155, 1156, 1157, 1201, - 1188, 1131, 1189, 1190, 823, 1192, 1073, 1073, 1073, 1073, - 1073, 1193, 1073, 1194, 1288, 1209, 1195, 238, 239, 573, - 1056, 274, 1058, 574, 387, 1110, 1204, 826, 1208, 456, - 1213, 188, 1214, 1075, 1076, 1077, 1215, 1079, 1080, 1081, - 1082, 1216, 1304, 467, 468, 1217, 1218, 1219, 1220, 1227, - 1251, 1252, 1261, 225, 1254, 1253, 1255, 472, 1311, 1259, - 472, 1268, 1269, 388, 575, 247, 1273, 1272, 242, 248, - 1276, 206, 207, 208, 209, 210, 1274, 211, 212, 213, - 1275, 1277, 1290, 1291, 1292, 1287, 1293, 267, 1289, 1303, - 1294, 254, 1295, 1296, 1297, 1313, 1314, 281, 1305, 576, - 240, 506, 1306, 650, 1003, 400, 1129, 1073, 1073, 1073, - 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, 1073, - 1073, 1073, 1073, 1073, 1073, 1073, 318, 577, 320, 321, - 1187, 819, 641, 1127, 413, 87, 548, 195, 196, 197, - 198, 578, 88, 89, 1048, 820, 579, 1087, 1057, 572, - 199, 580, 414, 91, 92, 93, 415, 0, 1120, 0, - 0, 0, 1191, 473, 249, 387, 0, 702, 1073, 0, - 334, 0, 101, 0, 0, 192, 193, 194, 195, 196, - 197, 198, 106, 387, 0, 0, 601, 0, 107, 0, - 0, 199, 0, 110, 0, 0, 0, 506, 0, 0, - 0, 0, 0, 113, 683, 114, 0, 0, 0, 0, - 0, 0, 600, 236, 0, 0, 0, 0, 0, 801, - 1073, 801, 388, 801, 0, 0, 801, 801, 801, 1164, - 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 402, 0, 403, 404, 405, 406, - 0, 0, 0, 204, 205, 206, 207, 208, 209, 210, - 0, 211, 212, 213, 0, 416, 387, 305, 0, 421, - 0, 0, 0, 0, 0, 427, 1163, 429, 0, 0, - 0, 0, 0, 715, 0, 441, 443, 243, 244, 442, - 248, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 0, 211, 212, 213, 388, 0, 0, 472, 0, - 0, 0, 0, 0, 716, 193, 194, 195, 196, 197, - 198, 188, 0, 472, 472, 472, 0, 0, 0, 0, - 199, 792, 506, 0, 0, 0, 0, 794, 1168, 1169, - 1170, 1171, 1172, 1173, 1249, 0, 0, 0, 0, 0, - 177, 178, 387, 1174, 0, 0, 0, 0, 1221, 1222, - 1223, 1224, 1225, 1226, 0, 0, 0, 0, 0, 0, - 245, 180, 0, 181, 0, 508, 503, 0, 182, 0, - 183, 0, 835, 836, 837, 838, 0, 841, 0, 0, - 0, 388, 0, 472, 0, 0, 0, 472, 0, 600, - 600, 600, 472, 246, 0, 0, 0, 387, 0, 506, - 1282, 1283, 0, 1284, 1285, 557, 0, 565, 0, 0, - 0, 0, 0, 0, 715, 0, 0, 393, 0, 0, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 0, 211, 212, 213, 0, 0, 388, 0, 472, 0, - 0, 0, 0, 1307, 1308, 1309, 1310, 0, 1179, 1180, - 1181, 1182, 1183, 0, 1184, 1185, 1186, 53, 0, 54, - 55, 56, 0, 0, 0, 0, 472, 503, 0, 0, - 506, 0, 1017, 0, 0, 503, 503, 503, 503, 503, - 503, 0, 472, 600, 0, 0, 63, 221, 0, 0, - 600, 1158, 1159, 1160, 1161, 1162, 0, 1165, 0, 0, - 0, 0, 640, 0, 642, 0, 65, 66, 0, 0, - 0, 0, 503, 0, 0, 0, 0, 421, 0, 0, - 0, 0, 70, 0, 0, 0, 0, 72, 557, 0, - 557, 557, 557, 557, 557, 0, 1083, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1088, 1089, 1090, - 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, - 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 0, 1111, - 0, 0, 0, 7, 8, 9, 10, 0, 11, 12, - 13, 159, 0, 0, 503, 0, 0, 0, 0, 0, - 0, 503, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236, - 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246, - 1247, 0, 0, 0, 0, 0, 0, 15, 52, 0, - 503, 160, 0, 161, 162, 163, 57, 58, 0, 20, - 59, 0, 0, 164, 22, 1172, 1173, 61, 0, 0, - 0, 0, 23, 24, 165, 0, 1174, 0, 0, 0, - 166, 167, 53, 1278, 54, 55, 56, 0, 0, 28, - 0, 29, 0, 30, 220, 0, 0, 0, 31, 557, - 168, 169, 34, 0, 0, 35, 67, 175, 176, 565, - 36, 63, 221, 37, 68, 69, 170, 0, 0, 71, - 0, 171, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 65, 66, 0, 40, 1298, 0, 41, 42, 43, - 1126, 0, 44, 0, 45, 46, 0, 70, 0, 47, - 0, 0, 72, 0, 0, 0, 0, 651, 652, 653, - 10, 0, 11, 654, 655, 51, 0, 0, 656, 0, - 177, 178, 0, 0, 0, 137, 0, 0, 0, 0, - 0, 1179, 1180, 1181, 1182, 1183, 1027, 1184, 1185, 1186, - 179, 180, 0, 181, 0, 0, 0, 0, 182, 0, - 183, 657, 52, 1042, 0, 53, 1046, 54, 55, 56, - 57, 380, 0, 658, 59, 0, 1197, 60, 659, 0, - 0, 61, 0, 266, 0, 0, 660, 661, 62, 0, - 0, 0, 0, 0, 63, 64, 53, 0, 54, 55, - 56, 0, 0, 662, 0, 663, 0, 664, 220, 0, - 0, 381, 665, 0, 65, 66, 666, 715, 0, 667, - 67, 0, 0, 0, 668, 63, 221, 669, 68, 69, - 70, 0, 0, 71, 0, 72, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 65, 66, 0, 670, 0, - 0, 671, 672, 0, 0, 0, 673, 0, 674, 0, - 0, 70, 0, 675, 0, 0, 72, 0, 877, 878, - 879, 880, 881, 882, 883, 884, 885, 886, 1250, 887, - 888, 889, 890, 891, 892, 893, 894, 895, 896, 897, - 1256, 0, 0, 0, 0, 0, 0, 898, 899, 900, - 901, 902, 903, 904, 905, 906, 907, 908, 909, 910, - 911, 912, 913, 914, 0, 0, 915, 916, 917, 918, - 919, 920, 921, 922, 923, 924, 925, 926, 927, 928, - 929, 0, 930, 0, 931, 932, 933, 934, 935, 936, - 937, 938, 939, 940, 941, 942, 943, 0, 0, 0, - 0, 0, 944, 945, 946, 0, 947, 948, 949, 950, - 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, - 961, 962, 0, 963, 964, 965, 966, 967, 968, 969, - 970, 971, 972, 973, 974, 975, 976, 977, 0, 0, - 0, 978, 979, 980, 981, 982, 983, 984, 985, 986, - 987, 988, 989, 990, 991, 992, 993, 994, 995, 996, - 997, 998, 1206, 999, 1000, 877, 878, 879, 880, 881, - 882, 883, 884, 885, 886, 0, 887, 888, 889, 890, - 891, 892, 893, 894, 895, 896, 897, 0, 0, 0, - 0, 0, 0, 0, 898, 899, 900, 901, 902, 903, - 904, 905, 906, 907, 908, 909, 910, 911, 912, 913, - 914, 0, 0, 915, 916, 917, 918, 919, 920, 921, - 922, 923, 924, 925, 926, 927, 928, 929, 0, 930, - 0, 931, 932, 933, 934, 935, 936, 937, 938, 939, - 940, 941, 942, 943, 0, 0, 0, 0, 0, 944, - 945, 946, 0, 947, 948, 949, 950, 951, 952, 953, - 954, 955, 956, 957, 958, 959, 960, 961, 962, 0, - 963, 964, 965, 966, 967, 968, 969, 970, 971, 972, - 973, 974, 975, 976, 977, 0, 0, 0, 978, 979, - 980, 981, 982, 983, 984, 985, 986, 987, 988, 989, - 990, 991, 992, 993, 994, 995, 996, 997, 998, 0, - 999, 1000, 651, 652, 653, 10, 0, 11, 654, 655, - 51, 0, 0, 1086, 0, 0, 0, 0, 0, 53, - 0, 54, 55, 56, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 191, 192, 193, 194, 195, 196, - 197, 198, 0, 0, 0, 0, 657, 52, 63, 221, - 53, 199, 54, 55, 56, 57, 380, 0, 658, 59, - 0, 0, 60, 659, 0, 0, 61, 0, 65, 66, - 0, 660, 661, 62, 0, 0, 0, 0, 0, 63, - 64, 0, 0, 0, 70, 0, 0, 0, 662, 72, - 663, 0, 664, 0, 0, 0, 381, 665, 0, 65, - 66, 666, 0, 0, 667, 67, 0, 0, 0, 668, - 0, 0, 669, 68, 69, 70, 0, 0, 71, 0, - 72, 7, 8, 9, 10, 0, 11, 12, 13, 14, - 0, 175, 176, 670, 0, 0, 671, 672, 0, 0, - 0, 673, 0, 674, 0, 0, 0, 0, 675, 0, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 0, 211, 212, 213, 15, 0, 476, 0, 16, - 0, 17, 18, 19, 0, 0, 0, 20, 0, 569, - 570, 21, 22, 53, 0, 54, 55, 56, 0, 0, - 23, 24, 25, 0, 177, 178, 0, 0, 26, 27, - 0, 0, 0, 0, 0, 0, 0, 28, 0, 29, - 0, 30, 63, 221, 179, 180, 31, 181, 32, 33, - 34, 0, 182, 35, 183, 0, 0, 0, 36, 525, - 526, 37, 65, 66, 38, 7, 8, 9, 10, 39, - 11, 12, 13, 14, 571, 0, 0, 401, 70, 0, - 0, 0, 40, 72, 0, 41, 42, 43, 0, 0, - 44, 0, 45, 46, 0, 0, 0, 47, 0, 0, - 53, 0, 54, 55, 56, 0, 147, 0, 0, 15, - 0, 0, 60, 16, 0, 17, 18, 19, 0, 0, - 0, 20, 0, 62, 0, 21, 22, 0, 0, 63, - 64, 0, 0, 0, 23, 24, 25, 0, 0, 0, - 0, 0, 26, 27, 53, 0, 54, 55, 56, 65, - 66, 28, 0, 29, 0, 30, 0, 0, 0, 0, - 31, 0, 32, 33, 34, 70, 0, 35, 71, 0, - 72, 0, 36, 63, 221, 37, 0, 0, 38, 7, - 8, 9, 10, 39, 11, 12, 13, 14, 0, 175, - 176, 0, 0, 65, 66, 0, 40, 0, 0, 41, - 42, 43, 0, 0, 44, 0, 45, 46, 358, 70, - 0, 47, 0, 0, 72, 0, 0, 0, 0, 0, - 0, 0, 0, 15, 0, 0, 0, 16, 0, 17, - 18, 19, 0, 0, 0, 20, 0, 148, 0, 21, - 22, 53, 0, 54, 55, 56, 0, 0, 23, 24, - 25, 0, 177, 178, 0, 0, 26, 27, 0, 0, - 0, 0, 0, 0, 0, 28, 0, 29, 0, 30, - 63, 221, 179, 180, 31, 181, 32, 33, 34, 0, - 182, 35, 183, 175, 176, 0, 36, 0, 0, 37, - 65, 66, 38, 7, 8, 9, 10, 39, 11, 12, - 13, 14, 712, 0, 0, 0, 70, 0, 0, 0, - 40, 72, 0, 41, 42, 43, 0, 0, 44, 0, - 45, 46, 0, 0, 0, 47, 0, 0, 0, 0, - 0, 0, 0, 0, 152, 0, 0, 15, 0, 0, - 0, 16, 0, 17, 18, 19, 177, 178, 0, 20, - 0, 0, 0, 21, 22, 0, 0, 0, 0, 0, - 0, 280, 23, 24, 25, 0, 179, 180, 0, 181, - 26, 27, 0, 0, 182, 0, 183, 0, 0, 28, - 0, 29, 0, 30, 0, 0, 0, 0, 31, 0, - 32, 33, 34, 0, 0, 35, 0, 0, 0, 0, - 36, 0, 0, 37, 0, 0, 38, 7, 8, 9, - 10, 39, 11, 12, 13, 14, 0, 0, 0, 0, - 0, 0, 0, 0, 40, 0, 0, 41, 42, 43, - 0, 0, 44, 0, 45, 46, 1109, 0, 0, 47, + 6, 210, 670, 579, 319, 761, 1152, 352, 353, 354, + 355, 778, 357, 603, 359, 638, 361, 646, 901, 915, + 609, 252, 185, 253, 145, 974, 1282, 813, 104, 267, + 179, 268, 377, 269, 254, 342, 714, 181, 278, 1308, + 668, 669, 343, 385, 386, 255, 583, 344, -725, 392, + 393, 986, 395, 294, 295, 296, 926, 297, 299, 300, + 146, 227, 304, 528, -726, 475, 395, 309, 1186, 1188, + 1190, 396, 315, 316, 270, 318, 321, 322, 947, 326, + 327, 147, 529, 837, 257, 562, 261, 262, 263, 722, + 277, 277, 745, 266, 817, 574, 715, 948, 595, 180, + 596, 838, 597, 395, 732, 747, 237, -727, 748, 64, + 820, 972, 822, 823, 824, 825, 826, 148, -725, 733, + 1327, -725, 1165, 851, 852, 345, 894, 895, 896, 897, + 732, 149, 347, 395, -726, 150, 719, -726, 499, 724, + 500, 501, 502, 598, 350, 744, 350, 350, 350, 350, + 258, 350, 1166, 350, 271, 350, 739, 740, 741, 742, + 743, 647, 151, 191, 192, 193, 194, 195, 272, 186, + 228, 350, 975, 273, 903, 1283, 584, -727, 274, 953, + -727, 987, 350, 350, 701, 152, 1309, 963, 350, 350, + 422, 252, 776, 253, 346, 930, 395, 574, 720, 809, + 424, 425, 733, 395, -728, 153, 933, 922, 923, 261, + 262, 263, 266, 182, 342, 1167, 440, 442, 342, 904, + 610, 343, 1168, 599, 614, 343, 344, 395, 154, 485, + 344, 486, 1170, 454, 249, 250, 251, 600, 574, 721, + 304, 544, 601, 905, 455, 467, 1235, 602, 1337, 1338, + 1339, 155, 661, 277, 277, 827, 828, 280, 281, 282, + 651, 1297, 156, 1012, 652, 261, 237, 966, 438, 277, + 277, 438, 438, 456, -728, 921, 157, -728, 460, 158, + 1298, 1016, 1299, 1302, 395, 159, 280, 281, 282, 463, + 1018, 395, 494, 160, 931, 391, 161, 1155, 898, 301, + 1430, 1300, 1303, 1353, 345, 653, 162, 592, 345, 6, + 1386, 347, 967, 899, 900, 347, 395, 187, 1290, 1431, + 1291, 955, 1292, 835, 836, 1293, 1294, 1295, 739, 740, + 741, 742, 743, 1148, 163, 1441, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 283, 423, 395, + 395, 164, 1162, 426, 899, 900, 1013, 430, 395, 431, + 813, 432, 165, 346, 395, 166, 760, 346, 1461, 1462, + 350, 280, 281, 282, 675, 654, 283, 1463, 676, 395, + 246, 247, 248, 1464, 249, 250, 251, 559, 227, 655, + 395, 167, 395, 395, 656, 168, 577, 454, 1477, 1176, + 1177, 10, 433, 11, 169, 1174, 170, 578, 455, 1478, + 1169, 1479, 1480, 284, 477, 733, 928, 438, 171, 677, + 718, 438, 438, 438, 438, 438, 172, 1362, 744, 932, + 727, 728, 729, 730, 731, 438, 1015, 828, 438, 438, + 899, 900, 650, 594, 183, 184, 606, 699, 504, -87, + 505, -87, 506, -87, 6, 613, 188, 189, 6, 463, + 190, 635, 256, 265, 286, 287, 288, 636, 279, 305, + 678, 283, -87, 306, -87, 542, -87, 775, 1, 2, + 3, 307, 434, 659, 308, 504, 6, 505, 317, 902, + 490, 555, 556, 1280, 312, 313, 435, 314, 328, 679, + 946, 436, 899, 900, 1159, 378, 454, 380, 1262, 399, + 931, 1265, 398, 680, 1192, 1193, 1194, 455, 681, 899, + 900, 1263, 381, 682, 387, 716, 428, 394, 215, 216, + 457, -257, 809, 454, 813, 815, 717, 464, 818, 478, + 476, 491, 492, 496, 455, 508, 456, 711, 513, 395, + 526, 514, 515, 516, 605, 517, 438, 518, 520, 920, + 212, 213, 214, 606, 289, 218, 594, 219, 927, 519, + 521, 559, 220, 522, 221, 594, 594, 594, 594, 594, + 594, 735, 523, 524, 525, 778, 527, 530, 531, 649, + 532, 533, 735, 454, 454, 534, 535, 454, 290, 536, + 537, 753, 237, 674, 455, 455, 954, 538, 455, 539, + 6, 635, 540, 727, 728, 729, 730, 731, 906, 907, + 541, 545, 546, 594, 215, 216, 911, 547, 912, 549, + 956, 550, 551, 814, 456, 553, 554, 456, 557, 659, + 567, 659, 659, 659, 659, 659, 565, 280, 281, 282, + 768, -259, 596, 834, 769, 574, 608, 582, 712, 611, + 217, 218, 848, 219, 615, 637, 616, 617, 220, 618, + 221, 605, 619, 711, 735, 640, 642, 179, 212, 213, + 214, 643, 463, 694, 181, 644, 226, 1150, 1151, 1197, + 1423, 1424, 1425, 662, 687, 770, 688, 689, 725, 696, + 736, 318, 695, 697, 698, 594, 809, 735, 735, 264, + 746, 711, -342, -258, 594, 756, 757, 968, 750, 758, + 759, 1019, 606, 291, 244, 245, 246, 247, 248, 762, + 249, 250, 251, 606, 764, 983, 765, 832, 779, 780, + 285, 292, 215, 216, 6, 311, 180, 283, 635, 839, + 816, 821, 594, 829, 840, 325, 842, 843, 594, 594, + 594, 594, 594, 594, 965, 841, 1359, 735, 908, 179, + 847, 850, 917, 909, 916, 771, 181, 910, 217, 218, + 454, 219, 1366, 1367, 1368, 913, 220, 919, 221, 772, + 1474, 455, 918, 924, 773, 941, 925, 1481, 733, 774, + 379, 744, -266, 382, 383, 927, 944, 961, 945, 1175, + 659, 949, 950, 962, 1178, 1179, 951, 606, 970, 969, + 456, 280, 281, 282, 585, 971, 350, 350, 586, 929, + 605, 973, 1172, 848, 976, 977, 1154, 828, 180, 985, + 1011, 605, 1153, 1014, 1156, 934, 1157, 397, 1160, 1158, + 1180, 1171, 1422, 1164, 1182, 1419, 1181, 1196, 1200, 1183, + 1421, 1201, 1202, 1203, 1204, 1205, 1426, 1427, 454, 587, + 1223, 1234, 1361, 454, 454, 1227, 1229, 1268, 1264, 455, + 1305, 1269, 1304, 1271, 455, 455, 1272, 1273, 1278, 606, + 179, 1274, 429, 1284, 1285, 1286, 1287, 181, 978, 979, + 980, 981, 559, 984, 277, 1301, 1306, 1267, 456, 735, + 735, 1307, 1310, 456, 456, 1449, 1341, 1342, 1343, 1345, + 1347, 283, 1348, 1355, 1349, 605, 1358, 470, 1364, 471, + 472, 473, 474, 6, 1363, 209, 454, 1365, 1369, 1260, + 1370, 847, 1371, 965, 1372, 1466, 1373, 455, 484, 588, + 1374, 594, 489, 1375, 1376, 1377, 1382, 1385, 495, 180, + 1411, 498, 1473, 589, 1409, 1410, 454, 1412, 590, 510, + 512, 1420, 1413, 591, 1414, 1429, 1433, 455, 1418, 1428, + 941, 941, 941, 1432, 1437, 1434, 1435, 511, 292, 1438, + 941, 1448, 1451, 1450, 1452, 1453, 1454, 605, 1327, 1163, + 559, 1455, 1456, 559, 1149, 1457, 456, 1475, 781, 1458, + 1476, 548, 1279, 1459, 468, 437, 439, 441, 443, 444, + 351, 1340, 1465, 226, 1467, 356, 1468, 358, 959, 360, + 763, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 481, 1206, 958, 1237, + 1277, 482, 212, 213, 214, 568, 384, 1222, 483, 1198, + 388, 389, 390, 1270, 231, 232, 233, 234, 235, 236, + 1288, 0, 1289, 0, 1233, 0, 0, 1344, 0, 237, + 0, 0, 607, 560, 0, 1238, 1239, 1240, 1241, 1242, + 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251, 1252, + 1253, 1254, 1255, 1256, 1257, 1258, 1281, 1261, 235, 236, + 454, 0, 0, 834, 0, 0, 215, 216, 0, 237, + 0, 455, 1334, 1335, 1336, 667, 1337, 1338, 1339, 454, + 0, 454, 0, 0, 0, 0, 658, 0, 0, 427, + 455, 0, 455, 0, 0, 0, 0, 0, 0, 1317, + 814, 686, 217, 218, 0, 219, 1357, 0, 711, 277, + 220, 0, 221, 0, 0, 0, 0, 0, 0, 456, + 0, 456, 0, 0, 566, 0, 0, 0, 569, 570, + 571, 572, 573, 0, 0, 0, 0, 0, 0, 0, + 222, 0, 575, 0, 223, 580, 581, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 0, 249, 250, 251, + 0, 0, 0, 0, 0, 454, 350, 0, 0, 0, + 737, 0, 0, 0, 0, 0, 455, 0, 0, 0, + 941, 0, 941, 0, 941, 0, 0, 941, 941, 941, + 0, 244, 245, 246, 247, 248, 1417, 249, 250, 251, + 0, 1276, 0, 0, 543, 456, 767, 0, 559, 0, + 0, 0, 0, 0, 848, 0, 0, 489, 1407, 0, + 0, 0, 0, 0, 559, 559, 559, 0, 0, 0, + 0, 686, 0, 0, 0, 0, 0, 0, 0, 686, + 0, 0, 658, 0, 658, 658, 658, 658, 658, 0, + 0, 0, 0, 0, 0, 454, 1447, 0, 1222, 1222, + 1222, 1222, 1222, 713, 1222, 0, 455, 0, 686, 686, + 0, 686, 686, 686, 686, 0, 0, 0, 0, 0, + 0, 1351, 230, 231, 232, 233, 234, 235, 236, 1443, + 1444, 0, 1445, 0, 1446, 456, 0, 559, 237, 0, + 1325, 1326, 559, 0, 0, 711, 711, 711, 559, 559, + 641, 1327, 0, 0, 0, 454, 0, 0, 0, 0, + 660, 0, 847, 0, 0, 0, 455, 0, 0, 0, + 0, 0, 0, 0, 0, 1469, 1470, 1471, 0, 1472, + 960, 0, 1311, 1312, 1313, 1314, 1315, 1327, 1318, 0, + 690, 0, 691, 0, 692, 456, 0, 559, 0, 0, + 0, 0, 0, 1222, 1222, 1222, 1222, 1222, 1222, 1222, + 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, 1222, + 1222, 1222, 0, 0, 0, 0, 1408, 559, 0, 229, + 230, 231, 232, 233, 234, 235, 236, 0, 0, 1415, + 0, 0, 0, 0, 559, 711, 237, 0, 686, 0, + 667, 0, 711, 658, 0, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 0, 249, 250, 251, 1222, + 0, 0, 0, 1332, 1333, 1334, 1335, 1336, 0, 1337, + 1338, 1339, 686, 0, 0, 0, 0, 1387, 1388, 1389, + 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, + 1400, 1401, 1402, 1403, 1404, 1405, 0, 0, 0, 1332, + 1333, 1334, 1335, 1336, 0, 1337, 1338, 1339, 0, 0, + 0, 0, 0, 0, 1222, 1323, 1324, 1325, 1326, 0, + 1173, 0, 0, 0, 0, 0, 0, 0, 1327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 15, 0, 0, 0, 16, 0, 17, 18, 19, + 0, 0, 1191, 1439, 0, 1195, 0, 0, 622, 0, + 0, 0, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 0, 249, 250, 251, 623, 0, 1020, + 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028, 1029, 1030, + 0, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038, 1039, + 1040, 1041, 0, 0, 0, 0, 0, 0, 1460, 1042, + 1043, 1044, 1045, 1046, 1047, 1048, 1049, 1050, 1051, 1052, + 1053, 1054, 1055, 1056, 1057, 1058, 0, 0, 1059, 1060, + 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, + 1071, 1072, 1073, 0, 1074, 0, 1075, 1076, 1077, 1078, + 1079, 1080, 1081, 1082, 1083, 0, 1084, 1085, 1086, 0, + 1332, 1333, 1334, 1335, 1336, 0, 1337, 1338, 1339, 982, + 0, 0, 0, 0, 1087, 0, 0, 0, 0, 0, + 1088, 1089, 1090, 0, 1091, 1092, 1093, 1094, 1095, 1096, + 1097, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, 1106, + 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116, + 1117, 1118, 1119, 1120, 1121, 1122, 1123, 0, 0, 0, + 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, + 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, + 1144, 1360, 1145, 1146, 0, 0, 0, 0, 0, 70, + 0, 71, 72, 73, 0, 0, 0, 0, 0, 0, + 0, 259, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 260, 686, 0, 0, 0, + 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 0, 0, 82, 83, 0, 0, 0, 0, + 237, 0, 0, 0, 0, 1207, 0, 0, 0, 0, + 0, 88, 0, 1224, 1225, 1226, 90, 1228, 0, 1230, + 1231, 1232, 0, 1346, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 686, 1020, 1021, 1022, 1023, + 1024, 1025, 1026, 1027, 1028, 1029, 1030, 0, 1031, 1032, + 1033, 1034, 1035, 1036, 1037, 1038, 1039, 1040, 1041, 0, + 0, 0, 0, 0, 0, 0, 1042, 1043, 1044, 1045, + 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, + 1056, 1057, 1058, 0, 0, 1059, 1060, 1061, 1062, 1063, + 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, + 0, 1074, 0, 1075, 1076, 1077, 1078, 1079, 1080, 1081, + 1082, 1083, 0, 1084, 1085, 1086, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 0, 249, 250, + 251, 1087, 0, 563, 0, 0, 0, 1088, 1089, 1090, + 0, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, + 1100, 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, + 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, + 1120, 1121, 1122, 1123, 0, 0, 1436, 1124, 1125, 1126, + 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, + 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 0, 1145, + 1146, 0, 0, 7, 8, 9, 10, 0, 11, 12, + 13, 196, 68, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 286, 287, 288, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 69, + 0, 0, 197, 0, 198, 199, 200, 74, 75, 0, + 20, 76, 0, 1316, 201, 22, 0, 0, 78, 0, + 0, 0, 0, 23, 24, 202, 0, 0, 0, 26, + 0, 0, 203, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 204, 215, + 216, 700, 0, 0, 0, 0, 44, 0, 45, 0, + 46, 0, 0, 0, 0, 47, 0, 205, 206, 50, + 0, 0, 51, 84, 0, 0, 0, 52, 0, 0, + 53, 85, 86, 87, 207, 289, 218, 89, 219, 208, + 0, 0, 702, 220, 0, 221, 0, 0, 1378, 1379, + 1380, 1381, 56, 1383, 1384, 57, 58, 59, 703, 0, + 60, 0, 61, 62, 0, 0, 0, 63, 7, 8, + 9, 10, 284, 11, 12, 13, 14, 0, 212, 213, + 214, 0, 0, 0, 0, 0, 0, 0, 704, 0, + 0, 705, 0, 0, 706, 0, 0, 0, 0, 0, + 0, 229, 230, 231, 232, 233, 234, 235, 236, 0, + 707, 0, 0, 15, 0, 0, 0, 16, 237, 17, + 18, 19, 708, 0, 0, 20, 0, 671, 672, 21, + 22, 0, 0, 0, 0, 0, 709, 0, 23, 24, + 25, 0, 215, 216, 26, 0, 0, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 0, 212, 213, 214, 0, 0, + 0, 44, 0, 45, 0, 46, 0, 0, 217, 218, + 47, 219, 48, 49, 50, 0, 220, 51, 221, 0, + 0, 0, 52, 0, 0, 53, 0, 0, 0, 54, + 7, 8, 9, 10, 55, 11, 12, 13, 14, 673, + 0, 0, 310, 0, 0, 0, 0, 56, 0, 0, + 57, 58, 59, 0, 0, 60, 0, 61, 62, 215, + 216, 849, 63, 0, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 15, 249, 250, 251, 16, + 0, 17, 18, 19, 0, 0, 0, 20, 0, 0, + 0, 21, 22, 0, 0, 217, 218, 0, 219, 0, + 23, 24, 25, 220, 0, 221, 26, 0, 0, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 0, 0, 0, 469, + 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, 212, 213, 214, 0, 0, 766, 0, 56, + 0, 0, 57, 58, 59, 0, 0, 60, 0, 61, + 62, 421, 0, 0, 63, 229, 230, 231, 232, 233, + 234, 235, 236, 0, 0, 0, 0, 15, 0, 0, + 0, 16, 237, 17, 18, 19, 0, 0, 0, 20, + 0, 0, 0, 21, 22, 0, 0, 0, 0, 0, + 0, 0, 23, 24, 25, 0, 215, 216, 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, 217, 218, 47, 219, 48, 49, 50, 0, + 220, 51, 221, 0, 0, 0, 52, 0, 0, 53, + 0, 0, 0, 54, 7, 8, 9, 10, 55, 11, + 12, 13, 14, 844, 212, 213, 214, 0, 0, 0, + 0, 56, 0, 0, 57, 58, 59, 0, 0, 60, + 0, 61, 62, 0, 1184, 0, 63, 0, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 15, + 249, 250, 251, 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, 215, 216, + 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, 217, 218, 47, 219, 48, 49, + 50, 0, 220, 51, 221, 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, 1259, 0, 0, 63, 229, + 230, 231, 232, 233, 234, 235, 236, 0, 0, 0, + 0, 15, 0, 0, 0, 16, 237, 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, 0, 0, 26, 27, 0, 0, 0, 0, - 0, 0, 0, 28, 0, 29, 0, 30, 0, 0, - 0, 0, 31, 0, 32, 33, 34, 0, 0, 35, - 0, 0, 0, 0, 36, 0, 0, 37, 0, 0, - 38, 7, 8, 9, 10, 39, 11, 12, 13, 14, - 1125, 0, 0, 0, 0, 0, 0, 0, 40, 0, - 0, 41, 42, 43, 0, 0, 44, 0, 45, 46, - 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 15, 0, 0, 0, 16, + 0, 0, 26, 0, 0, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 0, 212, 213, 214, 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, 1275, 0, 0, + 0, 0, 0, 0, 0, 56, 0, 0, 57, 58, + 59, 0, 0, 60, 0, 61, 62, 215, 216, 0, + 63, 0, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 15, 249, 250, 251, 16, 0, 17, + 18, 19, 0, 0, 0, 20, 0, 0, 324, 21, + 22, 0, 0, 217, 218, 0, 219, 0, 23, 24, + 25, 220, 0, 221, 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, 1406, + 0, 0, 63, 233, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 0, 15, 237, 0, 0, 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, 0, 0, 26, 27, - 0, 0, 0, 0, 0, 0, 0, 28, 0, 29, - 0, 30, 0, 0, 0, 0, 31, 0, 32, 33, - 34, 0, 0, 35, 0, 0, 0, 0, 36, 0, - 0, 37, 0, 0, 38, 7, 8, 9, 10, 39, - 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, - 0, 0, 40, 0, 0, 41, 42, 43, 0, 0, - 44, 0, 45, 46, 1248, 0, 0, 47, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, - 0, 0, 0, 16, 0, 17, 18, 19, 0, 0, - 0, 20, 0, 0, 0, 21, 22, 0, 0, 0, - 0, 0, 0, 0, 23, 24, 25, 1170, 1171, 1172, - 1173, 0, 26, 27, 0, 0, 175, 176, 0, 0, - 1174, 28, 0, 29, 0, 30, 0, 0, 0, 0, - 31, 0, 32, 33, 34, 0, 0, 35, 0, 0, - 0, 0, 36, 0, 0, 37, 0, 0, 38, 7, - 8, 9, 10, 39, 11, 12, 13, 0, 0, 0, - 0, 0, 57, 0, 0, 0, 40, 0, 0, 41, - 42, 43, 0, 0, 44, 0, 45, 46, 0, 177, - 178, 47, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1059, 0, 0, 0, 0, 0, 179, - 795, 796, 797, 175, 176, 1060, 0, 182, 0, 183, - 1061, 0, 67, 0, 0, 0, 0, 0, 23, 24, - 798, 69, 0, 0, 799, 1179, 1180, 1181, 1182, 1183, - 0, 1184, 1185, 1186, 0, 0, 0, 29, 0, 30, - 0, 0, 0, -2, 1062, 0, 0, 0, 1063, 57, - 0, 1064, 0, 0, 0, 0, 36, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 177, 178, 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, 298, 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, 782, 783, 784, 10, 55, 11, 785, 786, + 67, 68, 0, 106, 787, 0, 0, 0, 0, 56, + 107, 108, 57, 58, 59, 0, 0, 60, 0, 61, + 62, 110, 111, 112, 63, 0, 242, 243, 244, 245, + 246, 247, 248, 293, 249, 250, 251, 788, 69, 0, + 0, 70, 0, 71, 72, 73, 74, 447, 0, 789, + 76, 0, 0, 77, 790, 0, 120, 78, 0, 0, + 0, 0, 791, 792, 79, 0, 125, 0, 0, 0, + 0, 80, 126, 0, 0, 0, 0, 129, 1320, 1321, + 1322, 1323, 1324, 1325, 1326, 0, 0, 81, 132, 0, + 133, 0, 0, 0, 1327, 793, 0, 794, 0, 795, + 0, 0, 0, 448, 796, 0, 82, 83, 797, 0, + 0, 798, 84, 0, 0, 135, 799, 0, 0, 800, + 85, 86, 87, 88, 0, 0, 89, 0, 90, 0, + 782, 783, 784, 10, 0, 11, 785, 786, 67, 68, + 0, 801, 1236, 0, 802, 803, 0, 0, 0, 804, + 0, 805, 0, 0, 0, 0, 806, 0, 0, 0, + 0, 0, 0, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 0, 0, 0, 788, 69, 0, 0, 70, + 237, 71, 72, 73, 74, 447, 0, 789, 76, 0, + 0, 77, 790, 0, 0, 78, 0, 0, 700, 0, + 791, 792, 79, 0, 0, 0, 0, 0, 0, 80, + 0, 1329, 1330, 1331, 701, 0, 1332, 1333, 1334, 1335, + 1336, 0, 1337, 1338, 1339, 81, 0, 0, 0, 0, + 0, 0, 0, 793, 0, 794, 0, 795, 0, 702, + 0, 448, 796, 0, 82, 83, 797, 0, 0, 798, + 84, 0, 0, 0, 799, 703, 0, 800, 85, 86, + 87, 88, 0, 0, 89, 0, 90, 7, 8, 9, + 10, 0, 11, 12, 13, 0, 0, 0, 0, 801, + 0, 0, 802, 803, 0, 704, 0, 804, 705, 805, + 0, 706, 0, 0, 806, 0, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 707, 249, 250, + 251, 0, 1208, 1354, 0, 0, 0, 0, 0, 708, + 0, 0, 0, 0, 1209, 0, 0, 0, 0, 1210, + 0, 0, 0, 709, -2, 0, 0, 23, 24, 0, + 0, 0, 0, 26, 0, 0, 0, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 45, 0, 46, 0, 0, 0, 0, 1211, + 0, 0, 0, 1212, 105, 106, 1213, 0, 0, 0, + 0, 52, 107, 108, 231, 232, 233, 234, 235, 236, + 0, 109, 0, 110, 111, 112, 113, 0, 0, 237, + 114, 0, 0, 0, 0, 115, 1214, 0, 0, 1215, + 1216, 1217, 0, 0, 1218, 0, 1219, 62, 0, 0, + 0, 1220, 0, 0, 116, 117, 118, 119, 120, 121, + 0, 0, 0, 0, 0, 122, 123, 124, 125, 461, + 0, 0, 0, 0, 126, 127, 0, 0, 128, 129, + 0, 0, 0, 130, 0, 0, 0, 0, 0, 131, + 132, 853, 133, 0, 0, 0, 0, 0, 0, 0, + 134, 854, 855, 856, 857, 858, 859, 860, 861, 0, + 70, 0, 71, 72, 73, 0, 0, 135, 862, 0, + 863, 864, 865, 866, 867, 868, 869, 870, 871, 872, + 873, 874, 0, 0, 0, 0, 0, 0, 0, 0, + 80, 0, 0, 0, 0, 0, 0, 0, 875, 242, + 243, 244, 245, 246, 247, 248, 260, 249, 250, 251, + 0, 0, 329, 330, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 82, 83, 0, 0, 0, + 0, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326, 0, + 0, 876, 88, 0, 0, 0, 0, 90, 1327, 0, + 0, 331, 0, 0, 70, 0, 71, 72, 73, 74, + 0, 0, 0, 332, 0, 0, 77, 0, 0, 0, + 78, 0, 0, 0, 0, 0, 0, 79, 0, 0, + 877, 0, 0, 878, 80, 879, 880, 881, 882, 883, + 884, 885, 886, 887, 888, 889, 0, 890, 891, 0, + 81, 0, 892, 329, 330, 0, 0, 0, 0, 0, + 0, 333, 0, 0, 0, 0, 0, 0, 0, 82, + 83, 0, 0, 0, 0, 84, 0, 0, 0, 0, + 0, 0, 0, 334, 335, 87, 88, 0, 0, 89, + 0, 90, 331, 479, 480, 70, 336, 71, 72, 73, + 74, 0, 0, 0, 332, 0, 0, 77, 0, 0, + 0, 78, 337, 0, 1328, 1329, 1330, 1331, 79, 0, + 1332, 1333, 1334, 1335, 1336, 80, 1337, 1338, 1339, 0, + 0, 0, 331, 0, 0, 70, 0, 71, 72, 73, + 74, 81, 0, 0, 332, 0, 0, 77, 0, 0, + 0, 78, 333, 0, 0, 0, 0, 0, 79, 0, + 82, 83, 0, 0, 0, 80, 84, 624, 625, 626, + 0, 0, 0, 0, 334, 335, 87, 88, 0, 0, + 89, 81, 90, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 333, 0, 0, 0, 0, 0, 0, 0, + 82, 83, 0, 337, 0, 0, 84, 0, 0, 70, + 0, 71, 72, 73, 334, 335, 87, 88, 0, 0, + 89, 77, 90, 229, 230, 231, 232, 233, 234, 235, + 236, 0, 79, 0, 0, 0, 0, 0, 0, 80, + 237, 0, 0, 337, 229, 230, 231, 232, 233, 234, + 235, 236, 0, 0, 0, 81, 0, 0, 0, 0, + 0, 237, 229, 230, 231, 232, 233, 234, 235, 236, + 0, 0, 0, 0, 82, 83, 0, 0, 0, 237, + 229, 230, 231, 232, 233, 234, 235, 236, 0, 0, + 0, 88, 0, 0, 89, 0, 90, 237, 229, 230, + 231, 232, 233, 234, 235, 236, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 237, 229, 230, 231, 232, + 233, 234, 235, 236, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 237, 229, 230, 231, 232, 233, 234, + 235, 236, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 237, 0, 0, 0, 0, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 0, 249, 250, + 251, 0, 0, 1442, 0, 0, 0, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 0, 249, + 250, 251, 552, 0, 0, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 0, 249, 250, 251, + 564, 0, 0, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 0, 249, 250, 251, 693, 0, + 0, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 0, 249, 250, 251, 819, 0, 0, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 0, 249, 250, 251, 1350, 561, 0, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 0, 249, + 250, 251, 229, 230, 231, 232, 233, 234, 235, 236, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 237, + 988, 989, 990, 991, 992, 993, 994, 995, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 996, 1319, 1320, + 1321, 1322, 1323, 1324, 1325, 1326, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1327, 0, 0, 0, 0, + 0, 231, 232, 233, 234, 235, 236, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 237, 231, 232, 233, + 234, 235, 236, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 237, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1321, 1322, + 1323, 1324, 1325, 1326, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1327, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1352, 0, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 0, 249, 250, 251, + 0, 0, 0, 997, 998, 999, 1000, 1001, 1002, 1003, + 1004, 1005, 1006, 1007, 0, 1008, 1009, 1010, 0, 1440, + 0, 1328, 1329, 1330, 1331, 0, 0, 1332, 1333, 1334, + 1335, 1336, 0, 1337, 1338, 1339, 67, 68, 0, 0, + 445, 0, 446, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 0, 249, 250, 251, 0, 0, 0, + 0, 241, 242, 243, 244, 245, 246, 247, 248, 0, + 249, 250, 251, 0, 69, 0, 0, 70, 0, 71, + 72, 73, 74, 447, 0, 0, 76, 0, 0, 77, + 1329, 1330, 1331, 78, 0, 1332, 1333, 1334, 1335, 1336, + 79, 1337, 1338, 1339, 0, 0, 0, 80, 0, 1321, + 1322, 1323, 1324, 1325, 1326, 0, 212, 213, 214, 0, + 0, 0, 0, 81, 1327, 1321, 1322, 1323, 1324, 1325, + 1326, 0, 0, 0, 0, 0, 0, 0, 0, 448, + 1327, 0, 82, 83, 0, 0, 0, 0, 84, 0, + 1321, 1322, 1323, 1324, 1325, 1326, 85, 86, 87, 88, + 0, 0, 89, 74, 90, 1327, 0, 0, 0, 70, + 0, 71, 72, 73, 0, 0, 0, 449, 0, 0, + 215, 216, 450, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1065, 0, 0, 1066, 1067, 1068, 179, 180, 1069, 181, - 1070, 46, 86, 87, 182, 1071, 183, 0, 0, 67, - 88, 89, 0, 0, 0, 0, 0, 798, 69, 90, - 0, 91, 92, 93, 94, 0, 0, 0, 95, 0, - 0, 0, 96, 0, 0, 0, 97, 98, 99, 100, - 101, 102, 0, 0, 0, 0, 0, 103, 104, 105, - 106, 0, 0, 0, 0, 0, 107, 108, 0, 0, - 109, 110, 0, 0, 0, 111, 0, 0, 0, 0, - 112, 113, 0, 114, 721, 0, 0, 0, 0, 0, - 0, 115, 0, 722, 723, 724, 725, 726, 727, 728, - 729, 0, 0, 0, 0, 0, 0, 0, 116, 0, - 730, 0, 731, 732, 733, 734, 735, 736, 737, 738, - 739, 740, 741, 742, 191, 192, 193, 194, 195, 196, - 197, 198, 0, 0, 0, 0, 0, 0, 0, 0, - 743, 199, 191, 192, 193, 194, 195, 196, 197, 198, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, - 0, 0, 0, 0, 0, 0, 0, 744, 0, 0, - 0, 0, 0, 1167, 1168, 1169, 1170, 1171, 1172, 1173, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1174, + 0, 0, 0, 0, 0, 260, 217, 218, 0, 219, + 0, 0, 0, 0, 220, 0, 221, 0, 0, 84, + 0, 624, 625, 626, 82, 83, 0, 938, 0, 87, + 0, 0, 1330, 1331, 0, 0, 1332, 1333, 1334, 1335, + 1336, 88, 1337, 1338, 1339, 0, 90, 0, 0, 1331, + 0, 0, 1332, 1333, 1334, 1335, 1336, 0, 1337, 1338, + 1339, 0, 0, 70, 0, 71, 72, 73, 627, 628, + 67, 68, 0, 0, 445, 77, 0, 1332, 1333, 1334, + 1335, 1336, 0, 1337, 1338, 1339, 79, 0, 0, 0, + 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 69, 81, + 0, 70, 0, 71, 72, 73, 74, 447, 0, 0, + 76, 0, 0, 77, 0, 0, 0, 78, 82, 83, + 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, + 0, 80, 629, 0, 0, 88, 0, 0, 89, 0, + 90, 0, 0, 0, 0, 0, 0, 81, 0, 67, + 68, 0, 0, 723, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 448, 0, 0, 82, 83, 0, 0, + 0, 0, 84, 0, 0, 0, 0, 0, 67, 68, + 85, 86, 87, 88, 0, 0, 89, 69, 90, 0, + 70, 0, 71, 72, 73, 74, 447, 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, 447, 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, 448, 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, 448, 0, 0, 82, 83, 0, 0, 0, 0, + 84, 67, 68, 0, 0, 0, 0, 0, 85, 86, + 87, 88, 0, 0, 89, 69, 90, 0, 70, 0, + 71, 72, 73, 74, 75, 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, 0, 0, 0, 81, 79, 0, 0, 0, 0, + 0, 0, 80, 0, 0, 260, 0, 0, 0, 0, + 0, 0, 0, 82, 83, 0, 0, 0, 81, 84, + 67, 68, 0, 0, 82, 83, 0, 85, 86, 87, + 88, 0, 0, 89, 576, 90, 0, 82, 83, 0, + 0, 88, 0, 84, 0, 0, 90, 0, 0, 67, + 0, 85, 86, 87, 88, 0, 0, 89, 69, 90, + 0, 70, 0, 71, 72, 73, 74, 0, 0, 183, + 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, 493, 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, 0, 0, 0, 82, 83, 0, 0, + 0, 0, 84, 0, 0, 173, 81, 0, 0, 0, + 85, 86, 87, 88, 0, 0, 89, 0, 90, 0, + 0, 0, 0, 0, 0, 82, 83, 0, 0, 173, + 0, 84, 0, 0, 0, 0, 0, 0, 0, 85, + 86, 87, 88, 174, 0, 89, 70, 90, 71, 72, + 73, 74, 914, 0, 0, 175, 0, 0, 77, 0, + 0, 0, 78, 0, 0, 0, 0, 174, 0, 79, + 70, 0, 71, 72, 73, 74, 80, 0, 0, 175, + 0, 0, 77, 0, 0, 0, 78, 0, 0, 0, + 0, 0, 81, 79, 0, 0, 0, 0, 0, 0, + 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 82, 83, 0, 0, 67, 81, 84, 0, 0, + 0, 0, 0, 0, 0, 176, 177, 87, 88, 0, + 0, 89, 0, 90, 0, 82, 83, 0, 0, 0, + 0, 84, 0, 0, 212, 213, 214, 0, 0, 176, + 177, 87, 88, 69, 0, 89, 70, 90, 71, 72, + 73, 74, 0, 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, 74, 0, 0, 0, 212, 213, 214, 0, 0, + 0, 0, 81, 70, 0, 71, 72, 73, 215, 216, + 0, 0, 0, 0, 212, 213, 214, 0, 0, 0, + 0, 82, 83, 0, 0, 0, 0, 84, 212, 213, + 214, 0, 0, 80, 0, 85, 86, 87, 88, 0, + 0, 89, 74, 90, 217, 935, 936, 937, 0, 260, + 0, 0, 220, 0, 221, 0, 0, 84, 0, 215, + 216, 74, 0, 0, 0, 938, 0, 87, 82, 83, + 939, 0, 0, 0, 0, 74, 0, 0, 215, 216, + 0, 0, 0, 0, 0, 88, 0, 0, 0, 0, + 90, 0, 215, 216, 0, 217, 218, 0, 219, 0, + 0, 0, 0, 220, 0, 221, 0, 0, 84, 0, + 0, 0, 0, 184, 217, 218, 938, 219, 87, 0, + 0, 1185, 220, 0, 221, 0, 0, 84, 217, 218, + 0, 219, 0, 0, 0, 938, 220, 87, 221, 0, + 1187, 84, 0, 0, 105, 106, 0, 0, 0, 938, + 0, 87, 107, 108, 1189, 0, 0, 0, 0, 0, + 0, 109, 0, 110, 111, 112, 113, 0, 0, 0, + 114, 0, 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 745, 0, 0, 746, 0, - 747, 748, 749, 750, 751, 752, 753, 754, 755, 756, - 757, 0, 758, 759, 0, 0, 0, 760, 0, 0, - 0, 0, 0, 0, 0, 285, 286, 0, 0, 0, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 0, 211, 212, 213, 0, 0, 1200, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 0, - 211, 212, 213, 287, 0, 1281, 53, 0, 54, 55, - 56, 57, 0, 0, 0, 288, 0, 0, 60, 1176, - 1177, 1178, 61, 0, 1179, 1180, 1181, 1182, 1183, 62, - 1184, 1185, 1186, 0, 0, 63, 64, 0, 0, 285, - 286, 0, 0, 0, 0, 0, 0, 289, 0, 0, - 0, 0, 0, 0, 0, 65, 66, 0, 0, 0, - 0, 67, 0, 0, 0, 0, 0, 0, 0, 290, - 69, 70, 0, 0, 71, 0, 72, 287, 0, 0, - 53, 291, 54, 55, 56, 57, 0, 0, 0, 288, - 0, 0, 60, 0, 0, 0, 61, 292, 0, 0, - 0, 0, 0, 62, 0, 0, 0, 0, 0, 63, - 64, 411, 412, 0, 0, 0, 0, 0, 0, 0, - 0, 289, 0, 0, 0, 0, 0, 0, 0, 65, - 66, 0, 0, 0, 0, 67, 0, 0, 0, 0, - 0, 0, 0, 290, 69, 70, 0, 0, 71, 287, - 72, 0, 53, 0, 54, 55, 56, 57, 0, 0, - 0, 288, 0, 0, 60, 0, 0, 0, 61, 0, - 0, 292, 0, 0, 0, 62, 0, 0, 0, 0, - 0, 63, 64, 191, 192, 193, 194, 195, 196, 197, - 198, 0, 0, 289, 0, 0, 0, 0, 0, 0, - 199, 65, 66, 0, 0, 0, 0, 67, 0, 0, - 0, 0, 0, 0, 0, 290, 69, 70, 0, 0, - 71, 0, 72, 191, 192, 193, 194, 195, 196, 197, - 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 199, 0, 0, 292, 191, 192, 193, 194, 195, 196, - 197, 198, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 199, 191, 192, 193, 194, 195, 196, 197, 198, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, - 191, 192, 193, 194, 195, 196, 197, 198, 0, 0, - 0, 0, 0, 0, 0, 523, 0, 199, 0, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 0, 211, 212, 213, 524, 191, 192, 193, 194, 195, - 196, 197, 198, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 199, 0, 0, 0, 0, 0, 0, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 0, 211, 212, 213, 464, 0, 0, 0, 0, 0, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 0, 211, 212, 213, 477, 0, 0, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 0, - 211, 212, 213, 588, 0, 0, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 0, 211, 212, - 213, 688, 191, 192, 193, 194, 195, 196, 197, 198, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, - 0, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 0, 211, 212, 213, 1196, 191, 192, 193, - 194, 195, 196, 197, 198, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 199, 0, 191, 192, 193, 194, - 195, 196, 197, 198, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 199, 191, 192, 193, 194, 195, 196, - 197, 198, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 199, 191, 192, 193, 194, 195, 196, 197, 198, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, - 0, 0, 0, 0, 0, 0, 474, 0, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 0, - 211, 212, 213, 0, 845, 846, 847, 848, 849, 850, - 851, 852, 0, 0, 0, 0, 0, 0, 0, 0, - 717, 853, 0, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 0, 211, 212, 213, 1035, 0, - 0, 0, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 0, 211, 212, 213, 0, 1198, 0, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 0, 211, 212, 213, 0, 0, 0, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 0, - 211, 212, 213, 1166, 1167, 1168, 1169, 1170, 1171, 1172, - 1173, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1174, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, - 864, 0, 865, 866, 867, 1166, 1167, 1168, 1169, 1170, - 1171, 1172, 1173, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1174, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1168, 1169, 1170, - 1171, 1172, 1173, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1174, 0, 193, 194, 195, 196, 197, 198, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 199, - 0, 0, 0, 0, 0, 0, 0, 1279, 0, 1175, - 1176, 1177, 1178, 0, 0, 1179, 1180, 1181, 1182, 1183, - 0, 1184, 1185, 1186, 0, 0, 0, 0, 0, 51, - 0, 0, 378, 0, 379, 0, 0, 0, 0, 0, - 0, 193, 194, 195, 196, 197, 198, 0, 0, 0, - 0, 1175, 1176, 1177, 1178, 0, 199, 1179, 1180, 1181, - 1182, 1183, 0, 1184, 1185, 1186, 52, 0, 0, 53, - 0, 54, 55, 56, 57, 380, 0, 0, 59, 0, - 0, 60, 1176, 1177, 1178, 61, 0, 1179, 1180, 1181, - 1182, 1183, 62, 1184, 1185, 1186, 0, 0, 63, 64, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 0, - 211, 212, 213, 0, 0, 381, 0, 0, 65, 66, - 175, 176, 0, 0, 67, 193, 194, 195, 196, 197, - 198, 0, 68, 69, 70, 0, 0, 71, 0, 72, - 199, 1168, 1169, 1170, 1171, 1172, 1173, 0, 0, 0, - 0, 0, 382, 0, 0, 0, 1174, 383, 203, 204, - 205, 206, 207, 208, 209, 210, 57, 211, 212, 213, - 1168, 1169, 1170, 1171, 1172, 1173, 0, 0, 0, 0, - 0, 0, 0, 177, 178, 1174, 0, 0, 0, 0, + 0, 0, 0, 0, 116, 117, 118, 119, 120, 121, + 0, 0, 0, 0, 0, 122, 123, 124, 125, 0, + 0, 0, 0, 0, 126, 127, 105, 106, 128, 129, + 0, 0, 0, 130, 107, 108, 0, 0, 0, 131, + 132, 0, 133, 109, 0, 110, 111, 112, 113, 0, + 134, 0, 114, 0, 0, 0, 0, 115, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 135, 0, 620, + 0, 0, 0, 0, 0, 0, 116, 117, 118, 119, + 120, 121, 0, 0, 0, 0, 0, 122, 123, 124, + 125, 0, 0, 0, 0, 0, 126, 127, 105, 106, + 128, 129, 0, 0, 0, 130, 107, 108, 0, 0, + 0, 131, 132, 0, 133, 109, 0, 110, 111, 112, + 113, 0, 134, 0, 114, 0, 0, 0, 0, 115, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, + 0, 749, 0, 0, 0, 0, 0, 0, 116, 117, + 118, 119, 120, 121, 0, 0, 0, 0, 0, 122, + 123, 124, 125, 0, 0, 0, 0, 0, 126, 127, + 105, 106, 128, 129, 0, 0, 0, 130, 107, 108, + 0, 0, 0, 131, 132, 0, 133, 109, 0, 110, + 111, 112, 113, 0, 134, 0, 114, 0, 0, 0, + 0, 115, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 135, 0, 754, 0, 0, 0, 0, 0, 0, + 116, 117, 118, 119, 120, 121, 0, 0, 0, 0, + 0, 122, 123, 124, 125, 0, 0, 0, 0, 0, + 126, 127, 105, 106, 128, 129, 0, 0, 0, 130, + 107, 108, 0, 0, 0, 131, 132, 0, 133, 109, + 0, 110, 111, 112, 113, 0, 134, 0, 114, 0, + 0, 0, 0, 115, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 135, 0, 830, 0, 0, 0, 0, + 0, 0, 116, 117, 118, 119, 120, 121, 0, 0, + 0, 0, 0, 122, 123, 124, 125, 0, 0, 0, + 0, 0, 126, 127, 105, 106, 128, 129, 0, 0, + 0, 130, 107, 108, 0, 0, 0, 131, 132, 0, + 133, 109, 0, 110, 111, 112, 113, 0, 134, 0, + 114, 0, 0, 0, 0, 115, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 135, 0, 952, 0, 0, + 0, 0, 0, 0, 116, 117, 118, 119, 120, 121, + 0, 0, 0, 0, 0, 122, 123, 124, 125, 0, + 0, 0, 0, 0, 126, 127, 105, 106, 128, 129, + 0, 0, 0, 130, 107, 108, 0, 0, 0, 131, + 132, 0, 133, 109, 0, 110, 111, 112, 113, 0, + 134, 0, 114, 0, 0, 0, 0, 115, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 135, 0, 1199, + 0, 0, 0, 0, 0, 0, 116, 117, 118, 119, + 120, 121, 0, 0, 0, 0, 0, 122, 123, 124, + 125, 0, 0, 0, 0, 0, 126, 127, 105, 106, + 128, 129, 0, 0, 0, 130, 107, 108, 0, 0, + 0, 131, 132, 0, 133, 109, 0, 110, 111, 112, + 113, 0, 134, 0, 114, 106, 0, 0, 0, 115, + 0, 0, 107, 108, 0, 0, 0, 0, 0, 135, + 0, 1296, 0, 110, 111, 112, 0, 0, 116, 117, + 118, 119, 120, 121, 0, 293, 0, 0, 0, 122, + 123, 124, 125, 0, 0, 0, 0, 0, 126, 127, + 0, 0, 128, 129, 0, 0, 0, 130, 120, 0, + 0, 0, 0, 131, 132, 106, 133, 0, 125, 0, + 0, 0, 107, 108, 126, 0, 0, 0, 0, 129, + 0, 0, 0, 110, 111, 112, 0, 0, 0, 131, + 132, 135, 133, 106, 0, 293, 0, 0, 0, 0, + 107, 108, 106, 0, 0, 0, 0, -141, 0, 107, + 108, 110, 111, 112, 0, 0, 0, 135, 120, 0, + 110, 111, 112, 293, 0, 0, 0, 0, 125, 0, + 0, 0, 293, 70, 126, 71, 72, 73, 128, 129, + 0, 0, 0, 0, 0, 259, 120, 303, 0, 131, + 132, 0, 133, 0, 0, 120, 125, 0, 0, 0, + 0, 0, 126, 80, 0, 125, 70, 129, 71, 72, + 73, 126, 0, 0, 0, 0, 129, 135, 132, 260, + 133, 0, 0, 0, 0, 0, 0, 132, 0, 133, + 0, 0, 0, 0, 0, 0, 80, 0, 82, 83, + 0, 0, 0, 0, 0, 135, 0, 0, 0, 0, + 0, 0, 260, 0, 135, 88, 0, 0, 0, 0, + 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 82, 83, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 172, 0, 0, 0, 0, 88, 0, + 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 179, 180, 0, 181, 0, 0, 0, - 0, 182, 0, 183, 0, 0, 67, 0, 0, 0, - 0, 0, 0, 0, 798, 69, 0, 0, 1036, 0, - 0, 525, 526, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 204, 205, 206, 207, 208, 209, 210, - 0, 211, 212, 213, 0, 0, 0, 1177, 1178, 0, - 0, 1179, 1180, 1181, 1182, 1183, 0, 1184, 1185, 1186, - 0, 0, 53, 0, 54, 55, 56, 527, 528, 0, - 0, 0, 0, 0, 60, 0, 0, 1178, 0, 0, - 1179, 1180, 1181, 1182, 1183, 62, 1184, 1185, 1186, 0, - 0, 63, 64, 0, 51, 0, 0, 378, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 65, 66, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 529, 0, 70, 0, 0, - 71, 52, 72, 0, 53, 0, 54, 55, 56, 57, - 380, 0, 0, 59, 0, 0, 60, 0, 0, 0, - 61, 0, 0, 0, 0, 0, 0, 62, 0, 0, - 0, 0, 0, 63, 64, 0, 51, 0, 0, 610, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 381, 0, 0, 65, 66, 0, 0, 0, 0, 67, - 0, 0, 0, 0, 0, 0, 0, 68, 69, 70, - 0, 0, 71, 52, 72, 0, 53, 0, 54, 55, - 56, 57, 380, 0, 0, 59, 0, 0, 60, 0, - 0, 0, 61, 0, 0, 0, 0, 0, 0, 62, - 0, 0, 0, 0, 0, 63, 64, 0, 51, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 381, 0, 0, 65, 66, 0, 0, 0, - 51, 67, 0, 0, 0, 0, 0, 0, 0, 68, - 69, 70, 0, 0, 71, 52, 72, 0, 53, 0, - 54, 55, 56, 57, 380, 0, 0, 59, 0, 0, - 60, 0, 0, 0, 61, 0, 0, 52, 0, 0, - 53, 62, 54, 55, 56, 57, 58, 63, 64, 59, - 0, 0, 60, 0, 0, 0, 61, 0, 0, 0, - 0, 0, 0, 62, 381, 0, 0, 65, 66, 63, - 64, 0, 51, 67, 0, 0, 0, 0, 0, 0, - 0, 68, 69, 70, 0, 0, 71, 0, 72, 65, - 66, 0, 0, 0, 0, 67, 0, 0, 0, 0, - 0, 0, 0, 68, 69, 70, 0, 0, 71, 52, - 72, 0, 53, 0, 54, 55, 56, 57, 425, 0, - 0, 59, 0, 0, 60, 0, 0, 0, 61, 51, - 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, - 0, 63, 64, 0, 0, 0, 0, 0, 0, 0, - 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 65, 66, 0, 0, 0, 52, 67, 0, 53, - 0, 54, 55, 56, 57, 68, 69, 70, 59, 0, - 71, 60, 72, 0, 0, 61, 0, 0, 139, 0, - 0, 53, 62, 54, 55, 56, 57, 779, 63, 64, - 140, 0, 0, 60, 0, 0, 0, 61, 138, 0, - 0, 0, 0, 0, 62, 487, 0, 0, 65, 66, - 63, 64, 0, 0, 67, 0, 0, 0, 0, 0, - 51, 0, 68, 69, 70, 0, 0, 71, 0, 72, - 65, 66, 0, 0, 0, 139, 67, 0, 53, 0, - 54, 55, 56, 57, 141, 69, 70, 140, 0, 71, - 60, 72, 0, 0, 61, 0, 0, 52, 175, 176, - 53, 62, 54, 55, 56, 57, 0, 63, 64, 59, - 0, 0, 60, 0, 175, 176, 61, 0, 0, 0, - 0, 0, 0, 62, 0, 0, 0, 65, 66, 63, - 64, 0, 0, 67, 0, 0, 0, 0, 0, 0, - 0, 141, 69, 70, 57, 0, 71, 0, 72, 65, - 66, 0, 0, 0, 0, 67, 0, 0, 0, 0, - 57, 177, 178, 68, 69, 70, 0, 0, 71, 0, - 72, 0, 0, 0, 0, 0, 0, 177, 178, 0, - 0, 179, 180, 0, 181, 0, 0, 0, 0, 182, - 0, 183, 0, 0, 67, 0, 0, 179, 180, 0, - 181, 0, 798, 69, 0, 182, 1038, 183, 86, 87, - 67, 0, 0, 0, 0, 0, 88, 89, 798, 69, - 0, 0, 1040, 0, 0, 90, 0, 91, 92, 93, - 94, 0, 0, 0, 95, 0, 0, 0, 96, 0, - 0, 0, 97, 98, 99, 100, 101, 102, 0, 0, - 0, 0, 0, 103, 104, 105, 106, 0, 0, 0, - 0, 0, 107, 108, 86, 87, 109, 110, 0, 0, - 0, 111, 88, 89, 0, 0, 112, 113, 0, 114, - 0, 90, 0, 91, 92, 93, 94, 115, 0, 0, - 95, 0, 0, 0, 96, 0, 0, 0, 97, 98, - 99, 100, 101, 102, 116, 0, 521, 0, 0, 103, - 104, 105, 106, 0, 0, 0, 0, 0, 107, 108, - 86, 87, 109, 110, 0, 0, 0, 111, 88, 89, - 0, 0, 112, 113, 0, 114, 0, 90, 0, 91, - 92, 93, 94, 115, 0, 0, 95, 0, 0, 0, - 96, 0, 0, 0, 97, 98, 99, 100, 101, 102, - 116, 0, 626, 0, 0, 103, 104, 105, 106, 0, - 0, 0, 0, 0, 107, 108, 86, 87, 109, 110, - 0, 0, 0, 111, 88, 89, 0, 0, 112, 113, - 0, 114, 0, 90, 0, 91, 92, 93, 94, 115, - 0, 0, 95, 0, 0, 0, 96, 0, 0, 0, - 97, 98, 99, 100, 101, 102, 116, 0, 631, 0, - 0, 103, 104, 105, 106, 0, 0, 0, 0, 0, - 107, 108, 86, 87, 109, 110, 0, 0, 0, 111, - 88, 89, 0, 0, 112, 113, 0, 114, 0, 90, - 0, 91, 92, 93, 94, 115, 0, 0, 95, 0, - 0, 0, 96, 0, 0, 0, 97, 98, 99, 100, - 101, 102, 116, 0, 698, 0, 0, 103, 104, 105, - 106, 0, 0, 0, 0, 0, 107, 108, 86, 87, - 109, 110, 0, 0, 0, 111, 88, 89, 0, 0, - 112, 113, 0, 114, 0, 90, 0, 91, 92, 93, - 94, 115, 0, 0, 95, 0, 0, 0, 96, 0, - 0, 0, 97, 98, 99, 100, 101, 102, 116, 0, - 812, 0, 0, 103, 104, 105, 106, 0, 0, 0, - 0, 0, 107, 108, 86, 87, 109, 110, 0, 0, - 0, 111, 88, 89, 0, 0, 112, 113, 0, 114, - 0, 90, 0, 91, 92, 93, 94, 115, 0, 0, - 95, 0, 0, 0, 96, 0, 0, 0, 97, 98, - 99, 100, 101, 102, 116, 0, 1049, 0, 0, 103, - 104, 105, 106, 0, 0, 0, 0, 0, 107, 108, - 86, 87, 109, 110, 0, 0, 0, 111, 88, 89, - 0, 0, 112, 113, 0, 114, 0, 90, 0, 91, - 92, 93, 94, 115, 0, 0, 95, 0, 0, 0, - 96, 0, 0, 0, 97, 98, 99, 100, 101, 102, - 116, 0, 1144, 0, 0, 103, 104, 105, 106, 0, - 0, 0, 0, 0, 107, 108, 0, 87, 109, 110, - 0, 0, 0, 111, 88, 89, 0, 0, 112, 113, - 0, 114, 0, 0, 0, 91, 92, 93, 0, 0, - 0, 0, 0, 87, 0, 0, 249, 0, 0, 0, - 88, 89, 0, 0, 101, 0, 116, 0, 0, 0, - 0, 91, 92, 93, 106, 0, 0, 0, 0, 0, - 107, 0, 249, 0, 0, 110, 0, 0, 0, 0, - 101, 0, 0, 0, 112, 113, 87, 114, 0, 0, - 106, 0, 0, 88, 89, 0, 107, 0, 0, 0, - 109, 110, -136, 0, 91, 92, 93, 0, 0, 0, - 112, 113, 116, 114, 0, 249, 0, 0, 0, 0, - 0, 0, 87, 101, 259, 0, 0, 0, 0, 88, - 89, 0, 0, 106, 0, 0, 0, 0, 116, 107, - 91, 92, 93, 0, 110, 0, 0, 0, 0, 0, - 0, 249, 0, 0, 113, 0, 114, 0, 0, 101, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 106, - 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, - 110, 116, 0, 0, 0, 0, 0, 0, 0, 0, - 113, 0, 114, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 116 + 0, 0, 0, 0, 0, 0, 189 }; static const yytype_int16 yycheck[] = { - 1, 435, 381, 216, 538, 109, 266, 712, 413, 485, - 470, 28, 583, 28, 45, 57, 229, 230, 58, 396, - 593, 28, 128, 129, 130, 131, 12, 133, 523, 135, - 136, 137, 582, 56, 6, 606, 8, 120, 120, 127, - 120, 147, 148, 0, 14, 46, 152, 153, 543, 228, - 229, 230, 231, 232, 144, 73, 14, 492, 146, 609, - 144, 45, 795, 796, 797, 144, 546, 64, 65, 66, - 73, 73, 73, 70, 144, 549, 647, 551, 552, 553, - 554, 555, 127, 106, 544, 87, 73, 547, 90, 662, - 127, 93, 10, 11, 574, 575, 144, 577, 578, 579, - 580, 146, 144, 120, 126, 120, 32, 109, 126, 146, - 32, 129, 144, 120, 127, 494, 10, 11, 12, 127, - 144, 127, 16, 126, 135, 126, 129, 128, 129, 130, - 131, 126, 133, 146, 135, 136, 137, 397, 146, 126, - 146, 401, 129, 127, 620, 135, 147, 148, 132, 144, - 134, 152, 153, 139, 61, 62, 12, 127, 127, 144, - 16, 127, 146, 57, 543, 149, 150, 151, 428, 127, - 167, 168, 169, 170, 146, 93, 127, 146, 583, 130, - 146, 212, 130, 127, 363, 144, 365, 366, 367, 368, - 369, 274, 274, 233, 274, 278, 278, 145, 278, 93, - 379, 57, 146, 382, 383, 685, 779, 129, 585, 144, - 130, 129, 135, 319, 785, 216, 690, 143, 144, 145, - 144, 697, 144, 145, 221, 145, 120, 228, 229, 230, - 231, 232, 233, 144, 145, 146, 237, 127, 718, 699, - 134, 32, 647, 144, 241, 139, 10, 11, 12, 289, - 144, 127, 16, 10, 11, 127, 146, 274, 6, 274, - 8, 278, 522, 278, 120, 266, 127, 274, 12, 703, - 146, 278, 16, 144, 146, 87, 88, 89, 134, 91, - 92, 93, 135, 139, 96, 146, 144, 127, 144, 101, - 127, 129, 768, 57, 106, 107, 127, 109, 110, 111, - 479, 113, 114, 1036, 127, 1038, 146, 1040, 144, 146, - 1043, 1044, 1045, 57, 127, 146, 73, 74, 319, 127, - 10, 11, 144, 146, 784, 144, 127, 787, 788, 93, - 145, 146, 127, 146, 335, 336, 93, 94, 146, 96, - 380, 381, 127, 778, 101, 146, 103, 144, 782, 844, - 32, 146, 143, 144, 145, 127, 120, 123, 124, 125, - 144, 146, 363, 144, 365, 366, 367, 368, 369, 144, - 134, 32, 632, 129, 146, 139, 120, 128, 379, 130, - 129, 382, 383, 73, 74, 425, 387, 129, 389, 146, - 134, 144, 145, 410, 144, 139, 397, 398, 145, 396, - 401, 126, 127, 93, 94, 6, 96, 8, 144, 410, - 144, 101, 73, 103, 874, 145, 146, 126, 32, 128, - 1125, 130, 10, 11, 146, 426, 87, 428, 148, 90, - 470, 127, 93, 868, 418, 144, 871, 249, 139, 126, - 130, 128, 254, 130, 134, 145, 146, 487, 109, 126, - 145, 128, 129, 130, 494, 137, 138, 139, 140, 141, - 145, 143, 144, 145, 126, 844, 128, 126, 130, 470, - 471, 129, 126, 1023, 128, 135, 130, 144, 479, 144, - 145, 146, 145, 146, 485, 73, 74, 488, 94, 95, - 96, 492, 144, 145, 146, 496, 497, 498, 499, 500, - 501, 502, 144, 543, 544, 93, 94, 547, 96, 144, - 145, 528, 513, 101, 146, 103, 144, 145, 128, 127, - 1015, 522, 146, 146, 2, 139, 140, 141, 146, 143, - 144, 145, 533, 146, 146, 146, 136, 136, 136, 643, - 1074, 129, 543, 544, 804, 136, 547, 139, 549, 146, - 551, 552, 553, 554, 555, 586, 587, 146, 32, 590, - 591, 562, 40, 41, 42, 43, 44, 780, 32, 47, - 571, 146, 821, 1033, 146, 146, 593, 146, 593, 146, - 146, 582, 583, 146, 145, 488, 593, 146, 585, 147, - 73, 126, 144, 496, 497, 498, 499, 500, 501, 705, - 706, 127, 127, 127, 605, 606, 127, 148, 609, 128, - 127, 612, 144, 144, 129, 144, 144, 144, 57, 620, - 627, 139, 144, 146, 126, 129, 10, 644, 148, 10, - 533, 632, 10, 10, 128, 136, 1015, 127, 148, 128, - 641, 139, 139, 674, 645, 662, 647, 662, 147, 128, - 146, 128, 147, 128, 139, 662, 1116, 128, 144, 699, - 1210, 1211, 1212, 137, 138, 139, 140, 141, 126, 143, - 144, 145, 148, 151, 144, 139, 140, 141, 144, 143, - 144, 145, 144, 126, 1119, 145, 145, 127, 130, 690, - 674, 127, 127, 127, 144, 144, 697, 130, 699, 1134, - 1135, 1136, 605, 135, 705, 706, 135, 135, 135, 612, - 147, 712, 127, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 144, 213, 10, 146, 641, 217, - 146, 146, 1202, 145, 784, 146, 4, 787, 788, 148, - 144, 127, 148, 10, 1304, 128, 10, 10, 10, 128, - 127, 1311, 779, 146, 779, 21, 22, 768, 148, 1204, - 144, 146, 779, 1208, 144, 1209, 32, 778, 1213, 780, - 148, 147, 147, 784, 785, 146, 787, 788, 795, 796, - 797, 147, 146, 144, 147, 273, 146, 1257, 805, 146, - 146, 146, 135, 804, 844, 135, 135, 144, 135, 144, - 146, 1024, 136, 136, 815, 136, 1065, 1066, 1067, 1068, - 1069, 146, 1071, 136, 1259, 126, 146, 10, 11, 12, - 814, 643, 816, 16, 874, 866, 146, 649, 146, 317, - 146, 46, 10, 827, 828, 829, 128, 831, 832, 833, - 834, 10, 1287, 331, 332, 128, 128, 10, 128, 146, - 144, 144, 147, 68, 144, 146, 144, 868, 1303, 146, - 871, 146, 127, 874, 57, 80, 136, 146, 79, 80, - 146, 137, 138, 139, 140, 141, 136, 143, 144, 145, - 136, 136, 128, 10, 10, 146, 128, 102, 147, 146, - 144, 6, 144, 144, 144, 128, 128, 112, 146, 92, - 93, 389, 146, 542, 704, 258, 1018, 1166, 1167, 1168, - 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, - 1179, 1180, 1181, 1182, 1183, 1184, 141, 120, 143, 144, - 1074, 643, 528, 1015, 278, 50, 424, 19, 20, 21, - 22, 134, 57, 58, 805, 644, 139, 844, 815, 437, - 32, 144, 278, 68, 69, 70, 278, -1, 978, -1, - -1, -1, 1078, 336, 79, 1015, -1, 978, 1227, -1, - 185, -1, 87, -1, -1, 16, 17, 18, 19, 20, - 21, 22, 97, 1033, -1, -1, 474, -1, 103, -1, - -1, 32, -1, 108, -1, -1, -1, 485, -1, -1, - -1, -1, -1, 118, 1015, 120, -1, -1, -1, -1, - -1, -1, 1023, 1024, -1, -1, -1, -1, -1, 1036, - 1279, 1038, 1033, 1040, -1, -1, 1043, 1044, 1045, 1070, - 145, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 259, -1, 261, 262, 263, 264, - -1, -1, -1, 135, 136, 137, 138, 139, 140, 141, - -1, 143, 144, 145, -1, 280, 1116, 1078, -1, 284, - -1, -1, -1, -1, -1, 290, 1070, 292, -1, -1, - -1, -1, -1, 571, -1, 300, 301, 10, 11, 300, - 301, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, -1, 143, 144, 145, 1116, -1, -1, 1119, -1, - -1, -1, -1, -1, 1125, 17, 18, 19, 20, 21, - 22, 336, -1, 1134, 1135, 1136, -1, -1, -1, -1, - 32, 619, 620, -1, -1, -1, -1, 625, 17, 18, - 19, 20, 21, 22, 1185, -1, -1, -1, -1, -1, - 73, 74, 1202, 32, -1, -1, -1, -1, 1152, 1153, - 1154, 1155, 1156, 1157, -1, -1, -1, -1, -1, -1, - 93, 94, -1, 96, -1, 390, 387, -1, 101, -1, - 103, -1, 670, 671, 672, 673, -1, 675, -1, -1, - -1, 1202, -1, 1204, -1, -1, -1, 1208, -1, 1210, - 1211, 1212, 1213, 126, -1, -1, -1, 1257, -1, 697, - 1251, 1252, -1, 1254, 1255, 426, -1, 432, -1, -1, - -1, -1, -1, -1, 712, -1, -1, 11, -1, -1, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - -1, 143, 144, 145, -1, -1, 1257, -1, 1259, -1, - -1, -1, -1, 1294, 1295, 1296, 1297, -1, 137, 138, - 139, 140, 141, -1, 143, 144, 145, 51, -1, 53, - 54, 55, -1, -1, -1, -1, 1287, 488, -1, -1, - 768, -1, 770, -1, -1, 496, 497, 498, 499, 500, - 501, -1, 1303, 1304, -1, -1, 80, 81, -1, -1, - 1311, 1065, 1066, 1067, 1068, 1069, -1, 1071, -1, -1, - -1, -1, 527, -1, 529, -1, 100, 101, -1, -1, - -1, -1, 533, -1, -1, -1, -1, 542, -1, -1, - -1, -1, 116, -1, -1, -1, -1, 121, 549, -1, - 551, 552, 553, 554, 555, -1, 834, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 845, 846, 847, - 848, 849, 850, 851, 852, 853, 854, 855, 856, 857, - 858, 859, 860, 861, 862, 863, 864, 865, -1, 867, - -1, -1, -1, 3, 4, 5, 6, -1, 8, 9, - 10, 11, -1, -1, 605, -1, -1, -1, -1, -1, - -1, 612, 1166, 1167, 1168, 1169, 1170, 1171, 1172, 1173, - 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, 1182, 1183, - 1184, -1, -1, -1, -1, -1, -1, 47, 48, -1, - 641, 51, -1, 53, 54, 55, 56, 57, -1, 59, - 60, -1, -1, 63, 64, 21, 22, 67, -1, -1, - -1, -1, 72, 73, 74, -1, 32, -1, -1, -1, - 80, 81, 51, 1227, 53, 54, 55, -1, -1, 89, - -1, 91, -1, 93, 63, -1, -1, -1, 98, 690, - 100, 101, 102, -1, -1, 105, 106, 10, 11, 704, - 110, 80, 81, 113, 114, 115, 116, -1, -1, 119, - -1, 121, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 100, 101, -1, 134, 1279, -1, 137, 138, 139, - 1008, -1, 142, -1, 144, 145, -1, 116, -1, 149, - -1, -1, 121, -1, -1, -1, -1, 3, 4, 5, - 6, -1, 8, 9, 10, 11, -1, -1, 14, -1, - 73, 74, -1, -1, -1, 144, -1, -1, -1, -1, - -1, 137, 138, 139, 140, 141, 781, 143, 144, 145, - 93, 94, -1, 96, -1, -1, -1, -1, 101, -1, - 103, 47, 48, 798, -1, 51, 801, 53, 54, 55, - 56, 57, -1, 59, 60, -1, 1084, 63, 64, -1, - -1, 67, -1, 126, -1, -1, 72, 73, 74, -1, - -1, -1, -1, -1, 80, 81, 51, -1, 53, 54, - 55, -1, -1, 89, -1, 91, -1, 93, 63, -1, - -1, 97, 98, -1, 100, 101, 102, 1125, -1, 105, - 106, -1, -1, -1, 110, 80, 81, 113, 114, 115, - 116, -1, -1, 119, -1, 121, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 100, 101, -1, 134, -1, - -1, 137, 138, -1, -1, -1, 142, -1, 144, -1, - -1, 116, -1, 149, -1, -1, 121, -1, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 1186, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 1198, -1, -1, -1, -1, -1, -1, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, -1, -1, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, -1, 67, -1, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, -1, -1, -1, - -1, -1, 87, 88, 89, -1, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, -1, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, -1, -1, - -1, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, -1, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, -1, -1, -1, - -1, -1, -1, -1, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, -1, -1, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, -1, 67, - -1, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, -1, -1, -1, -1, -1, 87, - 88, 89, -1, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, -1, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, -1, -1, -1, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, -1, - 148, 149, 3, 4, 5, 6, -1, 8, 9, 10, - 11, -1, -1, 14, -1, -1, -1, -1, -1, 51, - -1, 53, 54, 55, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 15, 16, 17, 18, 19, 20, - 21, 22, -1, -1, -1, -1, 47, 48, 80, 81, - 51, 32, 53, 54, 55, 56, 57, -1, 59, 60, - -1, -1, 63, 64, -1, -1, 67, -1, 100, 101, - -1, 72, 73, 74, -1, -1, -1, -1, -1, 80, - 81, -1, -1, -1, 116, -1, -1, -1, 89, 121, - 91, -1, 93, -1, -1, -1, 97, 98, -1, 100, - 101, 102, -1, -1, 105, 106, -1, -1, -1, 110, - -1, -1, 113, 114, 115, 116, -1, -1, 119, -1, - 121, 3, 4, 5, 6, -1, 8, 9, 10, 11, - -1, 10, 11, 134, -1, -1, 137, 138, -1, -1, - -1, 142, -1, 144, -1, -1, -1, -1, 149, -1, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, -1, 143, 144, 145, 47, -1, 148, -1, 51, - -1, 53, 54, 55, -1, -1, -1, 59, -1, 61, - 62, 63, 64, 51, -1, 53, 54, 55, -1, -1, - 72, 73, 74, -1, 73, 74, -1, -1, 80, 81, - -1, -1, -1, -1, -1, -1, -1, 89, -1, 91, - -1, 93, 80, 81, 93, 94, 98, 96, 100, 101, - 102, -1, 101, 105, 103, -1, -1, -1, 110, 10, - 11, 113, 100, 101, 116, 3, 4, 5, 6, 121, - 8, 9, 10, 11, 126, -1, -1, 126, 116, -1, - -1, -1, 134, 121, -1, 137, 138, 139, -1, -1, - 142, -1, 144, 145, -1, -1, -1, 149, -1, -1, - 51, -1, 53, 54, 55, -1, 144, -1, -1, 47, - -1, -1, 63, 51, -1, 53, 54, 55, -1, -1, - -1, 59, -1, 74, -1, 63, 64, -1, -1, 80, - 81, -1, -1, -1, 72, 73, 74, -1, -1, -1, - -1, -1, 80, 81, 51, -1, 53, 54, 55, 100, - 101, 89, -1, 91, -1, 93, -1, -1, -1, -1, - 98, -1, 100, 101, 102, 116, -1, 105, 119, -1, - 121, -1, 110, 80, 81, 113, -1, -1, 116, 3, - 4, 5, 6, 121, 8, 9, 10, 11, -1, 10, - 11, -1, -1, 100, 101, -1, 134, -1, -1, 137, - 138, 139, -1, -1, 142, -1, 144, 145, 146, 116, - -1, 149, -1, -1, 121, -1, -1, -1, -1, -1, - -1, -1, -1, 47, -1, -1, -1, 51, -1, 53, - 54, 55, -1, -1, -1, 59, -1, 144, -1, 63, - 64, 51, -1, 53, 54, 55, -1, -1, 72, 73, - 74, -1, 73, 74, -1, -1, 80, 81, -1, -1, - -1, -1, -1, -1, -1, 89, -1, 91, -1, 93, - 80, 81, 93, 94, 98, 96, 100, 101, 102, -1, - 101, 105, 103, 10, 11, -1, 110, -1, -1, 113, - 100, 101, 116, 3, 4, 5, 6, 121, 8, 9, - 10, 11, 126, -1, -1, -1, 116, -1, -1, -1, - 134, 121, -1, 137, 138, 139, -1, -1, 142, -1, - 144, 145, -1, -1, -1, 149, -1, -1, -1, -1, - -1, -1, -1, -1, 144, -1, -1, 47, -1, -1, - -1, 51, -1, 53, 54, 55, 73, 74, -1, 59, - -1, -1, -1, 63, 64, -1, -1, -1, -1, -1, - -1, 88, 72, 73, 74, -1, 93, 94, -1, 96, - 80, 81, -1, -1, 101, -1, 103, -1, -1, 89, - -1, 91, -1, 93, -1, -1, -1, -1, 98, -1, - 100, 101, 102, -1, -1, 105, -1, -1, -1, -1, - 110, -1, -1, 113, -1, -1, 116, 3, 4, 5, - 6, 121, 8, 9, 10, 11, -1, -1, -1, -1, - -1, -1, -1, -1, 134, -1, -1, 137, 138, 139, - -1, -1, 142, -1, 144, 145, 146, -1, -1, 149, + 1, 61, 504, 448, 128, 622, 844, 147, 148, 149, + 150, 639, 152, 455, 154, 481, 156, 13, 684, 701, + 464, 6, 15, 8, 162, 15, 15, 644, 0, 13, + 44, 15, 172, 17, 75, 139, 574, 44, 92, 15, + 62, 63, 139, 183, 184, 75, 15, 139, 74, 189, + 190, 15, 145, 106, 107, 108, 722, 110, 111, 112, + 162, 62, 115, 145, 74, 310, 145, 120, 935, 936, + 937, 164, 125, 126, 58, 128, 129, 130, 145, 132, + 133, 162, 164, 144, 57, 164, 81, 82, 83, 582, + 91, 92, 603, 88, 647, 163, 164, 164, 13, 44, + 15, 162, 17, 145, 148, 145, 33, 74, 148, 2, + 650, 793, 652, 653, 654, 655, 656, 162, 144, 163, + 33, 147, 164, 676, 677, 139, 679, 680, 681, 682, + 148, 162, 139, 145, 144, 162, 578, 147, 144, 584, + 146, 147, 148, 58, 145, 163, 147, 148, 149, 150, + 123, 152, 164, 154, 138, 156, 598, 599, 600, 601, + 602, 157, 153, 56, 57, 58, 59, 60, 152, 162, + 63, 172, 162, 157, 685, 164, 145, 144, 162, 164, + 147, 145, 183, 184, 33, 162, 162, 148, 189, 190, + 250, 6, 634, 8, 139, 733, 145, 163, 164, 644, + 254, 255, 163, 145, 74, 153, 744, 718, 719, 204, + 205, 206, 207, 153, 318, 164, 270, 271, 322, 685, + 465, 318, 164, 138, 469, 322, 318, 145, 162, 146, + 322, 148, 914, 274, 161, 162, 163, 152, 163, 164, + 293, 381, 157, 687, 274, 298, 164, 162, 161, 162, + 163, 162, 497, 254, 255, 162, 163, 10, 11, 12, + 13, 145, 162, 816, 17, 260, 33, 778, 269, 270, + 271, 272, 273, 274, 144, 717, 162, 147, 279, 162, + 164, 821, 145, 145, 145, 162, 10, 11, 12, 284, + 828, 145, 333, 162, 736, 188, 162, 850, 147, 147, + 145, 164, 164, 164, 318, 58, 162, 454, 322, 310, + 164, 318, 778, 162, 163, 322, 145, 153, 1185, 164, + 1187, 763, 1189, 144, 145, 1192, 1193, 1194, 770, 771, + 772, 773, 774, 835, 162, 164, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 110, 251, 145, + 145, 162, 900, 256, 162, 163, 164, 13, 145, 15, + 987, 17, 162, 318, 145, 162, 621, 322, 164, 164, + 381, 10, 11, 12, 13, 138, 110, 164, 17, 145, + 157, 158, 159, 164, 161, 162, 163, 398, 399, 152, + 145, 162, 145, 145, 157, 162, 447, 448, 164, 920, + 921, 6, 58, 8, 162, 917, 162, 447, 448, 164, + 913, 164, 164, 147, 317, 163, 164, 428, 162, 58, + 577, 432, 433, 434, 435, 436, 162, 1275, 163, 164, + 587, 588, 589, 590, 591, 446, 162, 163, 449, 450, + 162, 163, 493, 454, 162, 162, 457, 557, 144, 144, + 146, 146, 148, 148, 465, 466, 162, 162, 469, 464, + 162, 478, 162, 162, 10, 11, 12, 478, 144, 162, + 109, 110, 144, 162, 146, 378, 148, 634, 141, 142, + 143, 162, 138, 494, 162, 144, 497, 146, 162, 148, + 162, 394, 395, 1169, 147, 147, 152, 147, 163, 138, + 755, 157, 162, 163, 164, 162, 557, 162, 1011, 145, + 962, 1014, 166, 152, 111, 112, 113, 557, 157, 162, + 163, 164, 162, 162, 162, 576, 157, 164, 74, 75, + 163, 163, 987, 584, 1161, 645, 576, 147, 648, 153, + 144, 162, 162, 162, 584, 146, 557, 558, 164, 145, + 145, 164, 164, 164, 457, 164, 567, 164, 164, 716, + 10, 11, 12, 574, 110, 111, 577, 113, 725, 154, + 154, 582, 118, 164, 120, 586, 587, 588, 589, 590, + 591, 592, 164, 164, 164, 1223, 164, 145, 164, 492, + 164, 164, 603, 644, 645, 164, 164, 648, 144, 164, + 164, 612, 33, 506, 644, 645, 763, 164, 648, 164, + 621, 628, 164, 770, 771, 772, 773, 774, 688, 689, + 164, 154, 164, 634, 74, 75, 696, 164, 698, 164, + 764, 154, 164, 644, 645, 164, 164, 648, 162, 650, + 157, 652, 653, 654, 655, 656, 164, 10, 11, 12, + 13, 163, 15, 664, 17, 163, 165, 164, 561, 74, + 110, 111, 673, 113, 144, 162, 145, 145, 118, 145, + 120, 574, 145, 684, 685, 146, 166, 701, 10, 11, + 12, 145, 687, 164, 701, 162, 62, 837, 838, 944, + 1366, 1367, 1368, 162, 147, 58, 162, 162, 157, 162, + 157, 764, 164, 164, 162, 716, 1161, 718, 719, 85, + 166, 722, 144, 163, 725, 10, 10, 780, 147, 10, + 10, 831, 733, 99, 155, 156, 157, 158, 159, 146, + 161, 162, 163, 744, 154, 805, 145, 165, 146, 166, + 98, 99, 74, 75, 755, 121, 701, 110, 765, 146, + 157, 157, 763, 164, 146, 131, 146, 146, 769, 770, + 771, 772, 773, 774, 775, 165, 1269, 778, 164, 793, + 673, 157, 144, 164, 162, 138, 793, 164, 110, 111, + 831, 113, 1285, 1286, 1287, 164, 118, 162, 120, 152, + 1466, 831, 166, 162, 157, 750, 162, 1473, 163, 162, + 176, 163, 163, 179, 180, 962, 144, 148, 145, 919, + 821, 145, 145, 157, 924, 925, 145, 828, 153, 162, + 831, 10, 11, 12, 13, 153, 837, 838, 17, 732, + 733, 153, 164, 844, 153, 162, 145, 163, 793, 164, + 164, 744, 165, 164, 10, 748, 164, 223, 4, 166, + 162, 915, 1364, 145, 162, 1358, 166, 15, 10, 166, + 1363, 146, 10, 10, 10, 146, 1369, 1370, 919, 58, + 145, 164, 15, 924, 925, 162, 162, 166, 162, 919, + 153, 164, 162, 165, 924, 925, 165, 164, 166, 900, + 914, 165, 268, 165, 164, 164, 164, 914, 801, 802, + 803, 804, 913, 806, 915, 164, 153, 1017, 919, 920, + 921, 153, 153, 924, 925, 1418, 164, 154, 154, 154, + 164, 110, 154, 162, 164, 828, 164, 303, 144, 305, + 306, 307, 308, 944, 164, 61, 987, 164, 164, 1009, + 164, 844, 10, 954, 146, 1448, 10, 987, 324, 138, + 146, 962, 328, 146, 10, 146, 162, 164, 334, 914, + 164, 337, 1465, 152, 162, 162, 1017, 162, 157, 345, + 346, 165, 164, 162, 162, 145, 154, 1017, 164, 164, + 935, 936, 937, 164, 164, 154, 154, 345, 346, 154, + 945, 164, 146, 165, 10, 10, 146, 900, 33, 902, + 1011, 162, 162, 1014, 836, 162, 1017, 146, 643, 164, + 146, 387, 1164, 162, 302, 269, 270, 271, 272, 273, + 146, 1223, 164, 399, 164, 151, 164, 153, 765, 155, + 628, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 322, 954, 764, 987, + 1161, 322, 10, 11, 12, 431, 182, 963, 322, 945, + 186, 187, 188, 1124, 18, 19, 20, 21, 22, 23, + 1180, -1, 1182, -1, 977, -1, -1, 1227, -1, 33, + -1, -1, 458, 399, -1, 988, 989, 990, 991, 992, + 993, 994, 995, 996, 997, 998, 999, 1000, 1001, 1002, + 1003, 1004, 1005, 1006, 1007, 1008, 1170, 1010, 22, 23, + 1161, -1, -1, 1124, -1, -1, 74, 75, -1, 33, + -1, 1161, 157, 158, 159, 501, 161, 162, 163, 1180, + -1, 1182, -1, -1, -1, -1, 494, -1, -1, 265, + 1180, -1, 1182, -1, -1, -1, -1, -1, -1, 1219, + 1161, 509, 110, 111, -1, 113, 1266, -1, 1169, 1170, + 118, -1, 120, -1, -1, -1, -1, -1, -1, 1180, + -1, 1182, -1, -1, 428, -1, -1, -1, 432, 433, + 434, 435, 436, -1, -1, -1, -1, -1, -1, -1, + 148, -1, 446, -1, 152, 449, 450, 151, 152, 153, + 154, 155, 156, 157, 158, 159, -1, 161, 162, 163, + -1, -1, -1, -1, -1, 1266, 1227, -1, -1, -1, + 596, -1, -1, -1, -1, -1, 1266, -1, -1, -1, + 1185, -1, 1187, -1, 1189, -1, -1, 1192, 1193, 1194, + -1, 155, 156, 157, 158, 159, 1356, 161, 162, 163, + -1, 1154, -1, -1, 380, 1266, 632, -1, 1269, -1, + -1, -1, -1, -1, 1275, -1, -1, 643, 1338, -1, + -1, -1, -1, -1, 1285, 1286, 1287, -1, -1, -1, + -1, 639, -1, -1, -1, -1, -1, -1, -1, 647, + -1, -1, 650, -1, 652, 653, 654, 655, 656, -1, + -1, -1, -1, -1, -1, 1356, 1416, -1, 1214, 1215, + 1216, 1217, 1218, 567, 1220, -1, 1356, -1, 676, 677, + -1, 679, 680, 681, 682, -1, -1, -1, -1, -1, + -1, 1234, 17, 18, 19, 20, 21, 22, 23, 1409, + 1410, -1, 1412, -1, 1414, 1356, -1, 1358, 33, -1, + 22, 23, 1363, -1, -1, 1366, 1367, 1368, 1369, 1370, + 486, 33, -1, -1, -1, 1416, -1, -1, -1, -1, + 496, -1, 1275, -1, -1, -1, 1416, -1, -1, -1, + -1, -1, -1, -1, -1, 1455, 1456, 1457, -1, 1459, + 766, -1, 1214, 1215, 1216, 1217, 1218, 33, 1220, -1, + 526, -1, 528, -1, 530, 1416, -1, 1418, -1, -1, + -1, -1, -1, 1319, 1320, 1321, 1322, 1323, 1324, 1325, + 1326, 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, + 1336, 1337, -1, -1, -1, -1, 1339, 1448, -1, 16, + 17, 18, 19, 20, 21, 22, 23, -1, -1, 1352, + -1, -1, -1, -1, 1465, 1466, 33, -1, 816, -1, + 836, -1, 1473, 821, -1, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, -1, 161, 162, 163, 1385, + -1, -1, -1, 155, 156, 157, 158, 159, -1, 161, + 162, 163, 850, -1, -1, -1, -1, 1319, 1320, 1321, + 1322, 1323, 1324, 1325, 1326, 1327, 1328, 1329, 1330, 1331, + 1332, 1333, 1334, 1335, 1336, 1337, -1, -1, -1, 155, + 156, 157, 158, 159, -1, 161, 162, 163, -1, -1, + -1, -1, -1, -1, 1440, 20, 21, 22, 23, -1, + 916, -1, -1, -1, -1, -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 47, -1, -1, -1, 51, -1, 53, 54, 55, - -1, -1, -1, 59, -1, -1, -1, 63, 64, -1, - -1, -1, -1, -1, -1, -1, 72, 73, 74, -1, - -1, -1, -1, -1, 80, 81, -1, -1, -1, -1, - -1, -1, -1, 89, -1, 91, -1, 93, -1, -1, - -1, -1, 98, -1, 100, 101, 102, -1, -1, 105, - -1, -1, -1, -1, 110, -1, -1, 113, -1, -1, - 116, 3, 4, 5, 6, 121, 8, 9, 10, 11, - 126, -1, -1, -1, -1, -1, -1, -1, 134, -1, - -1, 137, 138, 139, -1, -1, 142, -1, 144, 145, - -1, -1, -1, 149, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 47, -1, -1, -1, 51, - -1, 53, 54, 55, -1, -1, -1, 59, -1, -1, - -1, 63, 64, -1, -1, -1, -1, -1, -1, -1, - 72, 73, 74, -1, -1, -1, -1, -1, 80, 81, - -1, -1, -1, -1, -1, -1, -1, 89, -1, 91, - -1, 93, -1, -1, -1, -1, 98, -1, 100, 101, - 102, -1, -1, 105, -1, -1, -1, -1, 110, -1, - -1, 113, -1, -1, 116, 3, 4, 5, 6, 121, - 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, - -1, -1, 134, -1, -1, 137, 138, 139, -1, -1, - 142, -1, 144, 145, 146, -1, -1, 149, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 47, - -1, -1, -1, 51, -1, 53, 54, 55, -1, -1, - -1, 59, -1, -1, -1, 63, 64, -1, -1, -1, - -1, -1, -1, -1, 72, 73, 74, 19, 20, 21, - 22, -1, 80, 81, -1, -1, 10, 11, -1, -1, - 32, 89, -1, 91, -1, 93, -1, -1, -1, -1, - 98, -1, 100, 101, 102, -1, -1, 105, -1, -1, - -1, -1, 110, -1, -1, 113, -1, -1, 116, 3, - 4, 5, 6, 121, 8, 9, 10, -1, -1, -1, - -1, -1, 56, -1, -1, -1, 134, -1, -1, 137, - 138, 139, -1, -1, 142, -1, 144, 145, -1, 73, - 74, 149, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 47, -1, -1, -1, -1, -1, 93, - 94, 95, 96, 10, 11, 59, -1, 101, -1, 103, - 64, -1, 106, -1, -1, -1, -1, -1, 72, 73, - 114, 115, -1, -1, 118, 137, 138, 139, 140, 141, - -1, 143, 144, 145, -1, -1, -1, 91, -1, 93, - -1, -1, -1, 0, 98, -1, -1, -1, 102, 56, - -1, 105, -1, -1, -1, -1, 110, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 73, 74, -1, -1, + -1, -1, 938, 1385, -1, 941, -1, -1, 145, -1, + -1, -1, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, -1, 161, 162, 163, 164, -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, 1440, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, -1, -1, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, -1, 68, -1, 70, 71, 72, 73, + 74, 75, 76, 77, 78, -1, 80, 81, 82, -1, + 155, 156, 157, 158, 159, -1, 161, 162, 163, 805, + -1, -1, -1, -1, 98, -1, -1, -1, -1, -1, + 104, 105, 106, -1, 108, 109, 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, -1, -1, -1, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, -1, -1, -1, -1, -1, 52, + -1, 54, 55, 56, -1, -1, -1, -1, -1, -1, + -1, 64, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 134, -1, -1, 137, 138, 139, 93, 94, 142, 96, - 144, 145, 49, 50, 101, 149, 103, -1, -1, 106, - 57, 58, -1, -1, -1, -1, -1, 114, 115, 66, - -1, 68, 69, 70, 71, -1, -1, -1, 75, -1, - -1, -1, 79, -1, -1, -1, 83, 84, 85, 86, - 87, 88, -1, -1, -1, -1, -1, 94, 95, 96, - 97, -1, -1, -1, -1, -1, 103, 104, -1, -1, - 107, 108, -1, -1, -1, 112, -1, -1, -1, -1, - 117, 118, -1, 120, 6, -1, -1, -1, -1, -1, - -1, 128, -1, 15, 16, 17, 18, 19, 20, 21, - 22, -1, -1, -1, -1, -1, -1, -1, 145, -1, - 32, -1, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 15, 16, 17, 18, 19, 20, - 21, 22, -1, -1, -1, -1, -1, -1, -1, -1, - 62, 32, 15, 16, 17, 18, 19, 20, 21, 22, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, - -1, -1, -1, -1, -1, -1, -1, 89, -1, -1, + -1, -1, -1, -1, -1, 98, 1164, -1, -1, -1, -1, -1, -1, 16, 17, 18, 19, 20, 21, 22, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, + 23, -1, -1, -1, 117, 118, -1, -1, -1, -1, + 33, -1, -1, -1, -1, 961, -1, -1, -1, -1, + -1, 134, -1, 969, 970, 971, 139, 973, -1, 975, + 976, 977, -1, 1229, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 1223, 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, -1, -1, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + -1, 68, -1, 70, 71, 72, 73, 74, 75, 76, + 77, 78, -1, 80, 81, 82, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, -1, 161, 162, + 163, 98, -1, 166, -1, -1, -1, 104, 105, 106, + -1, 108, 109, 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, -1, -1, 1382, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, -1, 166, + 167, -1, -1, 3, 4, 5, 6, -1, 8, 9, + 10, 11, 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 127, -1, -1, 130, -1, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, -1, 144, 145, -1, -1, -1, 149, -1, -1, - -1, -1, -1, -1, -1, 10, 11, -1, -1, -1, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, -1, 143, 144, 145, -1, -1, 148, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, -1, - 143, 144, 145, 48, -1, 148, 51, -1, 53, 54, - 55, 56, -1, -1, -1, 60, -1, -1, 63, 132, - 133, 134, 67, -1, 137, 138, 139, 140, 141, 74, - 143, 144, 145, -1, -1, 80, 81, -1, -1, 10, - 11, -1, -1, -1, -1, -1, -1, 92, -1, -1, - -1, -1, -1, -1, -1, 100, 101, -1, -1, -1, - -1, 106, -1, -1, -1, -1, -1, -1, -1, 114, - 115, 116, -1, -1, 119, -1, 121, 48, -1, -1, - 51, 126, 53, 54, 55, 56, -1, -1, -1, 60, - -1, -1, 63, -1, -1, -1, 67, 142, -1, -1, - -1, -1, -1, 74, -1, -1, -1, -1, -1, 80, - 81, 10, 11, -1, -1, -1, -1, -1, -1, -1, - -1, 92, -1, -1, -1, -1, -1, -1, -1, 100, - 101, -1, -1, -1, -1, 106, -1, -1, -1, -1, - -1, -1, -1, 114, 115, 116, -1, -1, 119, 48, - 121, -1, 51, -1, 53, 54, 55, 56, -1, -1, - -1, 60, -1, -1, 63, -1, -1, -1, 67, -1, - -1, 142, -1, -1, -1, 74, -1, -1, -1, -1, - -1, 80, 81, 15, 16, 17, 18, 19, 20, 21, - 22, -1, -1, 92, -1, -1, -1, -1, -1, -1, - 32, 100, 101, -1, -1, -1, -1, 106, -1, -1, - -1, -1, -1, -1, -1, 114, 115, 116, -1, -1, - 119, -1, 121, 15, 16, 17, 18, 19, 20, 21, - 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 32, -1, -1, 142, 15, 16, 17, 18, 19, 20, - 21, 22, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 32, 15, 16, 17, 18, 19, 20, 21, 22, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, - 15, 16, 17, 18, 19, 20, 21, 22, -1, -1, - -1, -1, -1, -1, -1, 127, -1, 32, -1, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - -1, 143, 144, 145, 146, 15, 16, 17, 18, 19, - 20, 21, 22, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 32, -1, -1, -1, -1, -1, -1, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - -1, 143, 144, 145, 146, -1, -1, -1, -1, -1, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, -1, 143, 144, 145, 146, -1, -1, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, -1, - 143, 144, 145, 146, -1, -1, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, -1, 143, 144, - 145, 146, 15, 16, 17, 18, 19, 20, 21, 22, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, - -1, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, -1, 143, 144, 145, 146, 15, 16, 17, - 18, 19, 20, 21, 22, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 32, -1, 15, 16, 17, 18, - 19, 20, 21, 22, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 32, 15, 16, 17, 18, 19, 20, - 21, 22, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 32, 15, 16, 17, 18, 19, 20, 21, 22, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, - -1, -1, -1, -1, -1, -1, 129, -1, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, -1, - 143, 144, 145, -1, 15, 16, 17, 18, 19, 20, - 21, 22, -1, -1, -1, -1, -1, -1, -1, -1, - 128, 32, -1, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, -1, 143, 144, 145, 127, -1, - -1, -1, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, -1, 143, 144, 145, -1, 129, -1, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, -1, 143, 144, 145, -1, -1, -1, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, -1, - 143, 144, 145, 15, 16, 17, 18, 19, 20, 21, - 22, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 32, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, -1, 143, 144, 145, 15, 16, 17, 18, 19, - 20, 21, 22, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 32, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 17, 18, 19, - 20, 21, 22, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 32, -1, 17, 18, 19, 20, 21, 22, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 32, - -1, -1, -1, -1, -1, -1, -1, 129, -1, 131, - 132, 133, 134, -1, -1, 137, 138, 139, 140, 141, - -1, 143, 144, 145, -1, -1, -1, -1, -1, 11, - -1, -1, 14, -1, 16, -1, -1, -1, -1, -1, - -1, 17, 18, 19, 20, 21, 22, -1, -1, -1, - -1, 131, 132, 133, 134, -1, 32, 137, 138, 139, - 140, 141, -1, 143, 144, 145, 48, -1, -1, 51, - -1, 53, 54, 55, 56, 57, -1, -1, 60, -1, - -1, 63, 132, 133, 134, 67, -1, 137, 138, 139, - 140, 141, 74, 143, 144, 145, -1, -1, 80, 81, - 133, 134, 135, 136, 137, 138, 139, 140, 141, -1, - 143, 144, 145, -1, -1, 97, -1, -1, 100, 101, - 10, 11, -1, -1, 106, 17, 18, 19, 20, 21, - 22, -1, 114, 115, 116, -1, -1, 119, -1, 121, - 32, 17, 18, 19, 20, 21, 22, -1, -1, -1, - -1, -1, 134, -1, -1, -1, 32, 139, 134, 135, - 136, 137, 138, 139, 140, 141, 56, 143, 144, 145, - 17, 18, 19, 20, 21, 22, -1, -1, -1, -1, - -1, -1, -1, 73, 74, 32, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 10, 11, 12, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 48, 49, + -1, -1, 52, -1, 54, 55, 56, 57, 58, -1, + 60, 61, -1, 1219, 64, 65, -1, -1, 68, -1, + -1, -1, -1, 73, 74, 75, -1, -1, -1, 79, + -1, -1, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 74, + 75, 17, -1, -1, -1, -1, 106, -1, 108, -1, + 110, -1, -1, -1, -1, 115, -1, 117, 118, 119, + -1, -1, 122, 123, -1, -1, -1, 127, -1, -1, + 130, 131, 132, 133, 134, 110, 111, 137, 113, 139, + -1, -1, 58, 118, -1, 120, -1, -1, 1304, 1305, + 1306, 1307, 152, 1309, 1310, 155, 156, 157, 74, -1, + 160, -1, 162, 163, -1, -1, -1, 167, 3, 4, + 5, 6, 147, 8, 9, 10, 11, -1, 10, 11, + 12, -1, -1, -1, -1, -1, -1, -1, 104, -1, + -1, 107, -1, -1, 110, -1, -1, -1, -1, -1, + -1, 16, 17, 18, 19, 20, 21, 22, 23, -1, + 126, -1, -1, 48, -1, -1, -1, 52, 33, 54, + 55, 56, 138, -1, -1, 60, -1, 62, 63, 64, + 65, -1, -1, -1, -1, -1, 152, -1, 73, 74, + 75, -1, 74, 75, 79, -1, -1, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, -1, 10, 11, 12, -1, -1, + -1, 106, -1, 108, -1, 110, -1, -1, 110, 111, + 115, 113, 117, 118, 119, -1, 118, 122, 120, -1, + -1, -1, 127, -1, -1, 130, -1, -1, -1, 134, + 3, 4, 5, 6, 139, 8, 9, 10, 11, 144, + -1, -1, 144, -1, -1, -1, -1, 152, -1, -1, + 155, 156, 157, -1, -1, 160, -1, 162, 163, 74, + 75, 146, 167, -1, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 48, 161, 162, 163, 52, + -1, 54, 55, 56, -1, -1, -1, 60, -1, -1, + -1, 64, 65, -1, -1, 110, 111, -1, 113, -1, + 73, 74, 75, 118, -1, 120, 79, -1, -1, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, -1, -1, -1, 144, + -1, -1, -1, 106, -1, 108, -1, 110, -1, -1, + -1, -1, 115, -1, 117, 118, 119, -1, -1, 122, + -1, -1, -1, -1, 127, -1, -1, 130, -1, -1, + -1, 134, 3, 4, 5, 6, 139, 8, 9, 10, + 11, -1, 10, 11, 12, -1, -1, 15, -1, 152, + -1, -1, 155, 156, 157, -1, -1, 160, -1, 162, + 163, 164, -1, -1, 167, 16, 17, 18, 19, 20, + 21, 22, 23, -1, -1, -1, -1, 48, -1, -1, + -1, 52, 33, 54, 55, 56, -1, -1, -1, 60, + -1, -1, -1, 64, 65, -1, -1, -1, -1, -1, + -1, -1, 73, 74, 75, -1, 74, 75, 79, -1, + -1, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, -1, -1, + -1, -1, -1, -1, -1, 106, -1, 108, -1, 110, + -1, -1, 110, 111, 115, 113, 117, 118, 119, -1, + 118, 122, 120, -1, -1, -1, 127, -1, -1, 130, + -1, -1, -1, 134, 3, 4, 5, 6, 139, 8, + 9, 10, 11, 144, 10, 11, 12, -1, -1, -1, + -1, 152, -1, -1, 155, 156, 157, -1, -1, 160, + -1, 162, 163, -1, 145, -1, 167, -1, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 48, + 161, 162, 163, 52, -1, 54, 55, 56, -1, -1, + -1, 60, -1, -1, -1, 64, 65, -1, -1, -1, + -1, -1, -1, -1, 73, 74, 75, -1, 74, 75, + 79, -1, -1, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + -1, -1, -1, -1, -1, -1, -1, 106, -1, 108, + -1, 110, -1, -1, 110, 111, 115, 113, 117, 118, + 119, -1, 118, 122, 120, -1, -1, -1, 127, -1, + -1, 130, -1, -1, -1, 134, 3, 4, 5, 6, + 139, 8, 9, 10, 11, -1, -1, -1, -1, -1, + -1, -1, -1, 152, -1, -1, 155, 156, 157, -1, + -1, 160, -1, 162, 163, 164, -1, -1, 167, 16, + 17, 18, 19, 20, 21, 22, 23, -1, -1, -1, + -1, 48, -1, -1, -1, 52, 33, 54, 55, 56, + -1, -1, -1, 60, -1, -1, -1, 64, 65, -1, + -1, -1, -1, -1, -1, -1, 73, 74, 75, -1, + -1, -1, 79, -1, -1, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, -1, 10, 11, 12, -1, -1, -1, 106, + -1, 108, -1, 110, -1, -1, -1, -1, 115, -1, + 117, 118, 119, -1, -1, 122, -1, -1, -1, -1, + 127, -1, -1, 130, -1, -1, -1, 134, 3, 4, + 5, 6, 139, 8, 9, 10, 11, 144, -1, -1, + -1, -1, -1, -1, -1, 152, -1, -1, 155, 156, + 157, -1, -1, 160, -1, 162, 163, 74, 75, -1, + 167, -1, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 48, 161, 162, 163, 52, -1, 54, + 55, 56, -1, -1, -1, 60, -1, -1, 105, 64, + 65, -1, -1, 110, 111, -1, 113, -1, 73, 74, + 75, 118, -1, 120, 79, -1, -1, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, -1, -1, -1, -1, -1, -1, + -1, 106, -1, 108, -1, 110, -1, -1, -1, -1, + 115, -1, 117, 118, 119, -1, -1, 122, -1, -1, + -1, -1, 127, -1, -1, 130, -1, -1, -1, 134, + 3, 4, 5, 6, 139, 8, 9, 10, 11, -1, + -1, -1, -1, -1, -1, -1, -1, 152, -1, -1, + 155, 156, 157, -1, -1, 160, -1, 162, 163, 164, + -1, -1, 167, 20, 21, 22, 23, -1, -1, -1, + -1, -1, -1, -1, -1, 48, 33, -1, -1, 52, + -1, 54, 55, 56, -1, -1, -1, 60, -1, -1, + -1, 64, 65, -1, -1, -1, -1, -1, -1, -1, + 73, 74, 75, -1, -1, -1, 79, -1, -1, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, -1, -1, 6, -1, + -1, -1, -1, 106, -1, 108, -1, 110, -1, -1, + -1, -1, 115, -1, 117, 118, 119, -1, -1, 122, + -1, -1, -1, -1, 127, -1, -1, 130, -1, -1, + -1, 134, 3, 4, 5, 6, 139, 8, 9, 10, + 11, 12, -1, 51, 15, -1, -1, -1, -1, 152, + 58, 59, 155, 156, 157, -1, -1, 160, -1, 162, + 163, 69, 70, 71, 167, -1, 153, 154, 155, 156, + 157, 158, 159, 81, 161, 162, 163, 48, 49, -1, + -1, 52, -1, 54, 55, 56, 57, 58, -1, 60, + 61, -1, -1, 64, 65, -1, 104, 68, -1, -1, + -1, -1, 73, 74, 75, -1, 114, -1, -1, -1, + -1, 82, 120, -1, -1, -1, -1, 125, 17, 18, + 19, 20, 21, 22, 23, -1, -1, 98, 136, -1, + 138, -1, -1, -1, 33, 106, -1, 108, -1, 110, + -1, -1, -1, 114, 115, -1, 117, 118, 119, -1, + -1, 122, 123, -1, -1, 163, 127, -1, -1, 130, + 131, 132, 133, 134, -1, -1, 137, -1, 139, -1, + 3, 4, 5, 6, -1, 8, 9, 10, 11, 12, + -1, 152, 15, -1, 155, 156, -1, -1, -1, 160, + -1, 162, -1, -1, -1, -1, 167, -1, -1, -1, + -1, -1, -1, 16, 17, 18, 19, 20, 21, 22, + 23, -1, -1, -1, -1, 48, 49, -1, -1, 52, + 33, 54, 55, 56, 57, 58, -1, 60, 61, -1, + -1, 64, 65, -1, -1, 68, -1, -1, 17, -1, + 73, 74, 75, -1, -1, -1, -1, -1, -1, 82, + -1, 150, 151, 152, 33, -1, 155, 156, 157, 158, + 159, -1, 161, 162, 163, 98, -1, -1, -1, -1, + -1, -1, -1, 106, -1, 108, -1, 110, -1, 58, + -1, 114, 115, -1, 117, 118, 119, -1, -1, 122, + 123, -1, -1, -1, 127, 74, -1, 130, 131, 132, + 133, 134, -1, -1, 137, -1, 139, 3, 4, 5, + 6, -1, 8, 9, 10, -1, -1, -1, -1, 152, + -1, -1, 155, 156, -1, 104, -1, 160, 107, 162, + -1, 110, -1, -1, 167, -1, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 126, 161, 162, + 163, -1, 48, 166, -1, -1, -1, -1, -1, 138, + -1, -1, -1, -1, 60, -1, -1, -1, -1, 65, + -1, -1, -1, 152, 0, -1, -1, 73, 74, -1, + -1, -1, -1, 79, -1, -1, -1, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 108, -1, 110, -1, -1, -1, -1, 115, + -1, -1, -1, 119, 50, 51, 122, -1, -1, -1, + -1, 127, 58, 59, 18, 19, 20, 21, 22, 23, + -1, 67, -1, 69, 70, 71, 72, -1, -1, 33, + 76, -1, -1, -1, -1, 81, 152, -1, -1, 155, + 156, 157, -1, -1, 160, -1, 162, 163, -1, -1, + -1, 167, -1, -1, 100, 101, 102, 103, 104, 105, + -1, -1, -1, -1, -1, 111, 112, 113, 114, 11, + -1, -1, -1, -1, 120, 121, -1, -1, 124, 125, + -1, -1, -1, 129, -1, -1, -1, -1, -1, 135, + 136, 6, 138, -1, -1, -1, -1, -1, -1, -1, + 146, 16, 17, 18, 19, 20, 21, 22, 23, -1, + 52, -1, 54, 55, 56, -1, -1, 163, 33, -1, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, -1, -1, -1, -1, -1, -1, -1, -1, + 82, -1, -1, -1, -1, -1, -1, -1, 63, 153, + 154, 155, 156, 157, 158, 159, 98, 161, 162, 163, + -1, -1, 10, 11, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 117, 118, -1, -1, -1, + -1, 16, 17, 18, 19, 20, 21, 22, 23, -1, + -1, 106, 134, -1, -1, -1, -1, 139, 33, -1, + -1, 49, -1, -1, 52, -1, 54, 55, 56, 57, + -1, -1, -1, 61, -1, -1, 64, -1, -1, -1, + 68, -1, -1, -1, -1, -1, -1, 75, -1, -1, + 145, -1, -1, 148, 82, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, -1, 162, 163, -1, + 98, -1, 167, 10, 11, -1, -1, -1, -1, -1, + -1, 109, -1, -1, -1, -1, -1, -1, -1, 117, + 118, -1, -1, -1, -1, 123, -1, -1, -1, -1, + -1, -1, -1, 131, 132, 133, 134, -1, -1, 137, + -1, 139, 49, 10, 11, 52, 144, 54, 55, 56, + 57, -1, -1, -1, 61, -1, -1, 64, -1, -1, + -1, 68, 160, -1, 149, 150, 151, 152, 75, -1, + 155, 156, 157, 158, 159, 82, 161, 162, 163, -1, + -1, -1, 49, -1, -1, 52, -1, 54, 55, 56, + 57, 98, -1, -1, 61, -1, -1, 64, -1, -1, + -1, 68, 109, -1, -1, -1, -1, -1, 75, -1, + 117, 118, -1, -1, -1, 82, 123, 10, 11, 12, + -1, -1, -1, -1, 131, 132, 133, 134, -1, -1, + 137, 98, 139, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 109, -1, -1, -1, -1, -1, -1, -1, + 117, 118, -1, 160, -1, -1, 123, -1, -1, 52, + -1, 54, 55, 56, 131, 132, 133, 134, -1, -1, + 137, 64, 139, 16, 17, 18, 19, 20, 21, 22, + 23, -1, 75, -1, -1, -1, -1, -1, -1, 82, + 33, -1, -1, 160, 16, 17, 18, 19, 20, 21, + 22, 23, -1, -1, -1, 98, -1, -1, -1, -1, + -1, 33, 16, 17, 18, 19, 20, 21, 22, 23, + -1, -1, -1, -1, 117, 118, -1, -1, -1, 33, + 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, + -1, 134, -1, -1, 137, -1, 139, 33, 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, 16, 17, 18, 19, 20, 21, + 22, 23, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 33, -1, -1, -1, -1, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, -1, 161, 162, + 163, -1, -1, 166, -1, -1, -1, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, -1, 161, + 162, 163, 164, -1, -1, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, -1, 161, 162, 163, + 164, -1, -1, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, -1, 161, 162, 163, 164, -1, + -1, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, -1, 161, 162, 163, 164, -1, -1, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + -1, 161, 162, 163, 164, 147, -1, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, -1, 161, + 162, 163, 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, 16, 17, + 18, 19, 20, 21, 22, 23, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 33, -1, -1, -1, -1, + -1, 18, 19, 20, 21, 22, 23, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 33, 18, 19, 20, + 21, 22, 23, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 33, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 18, 19, + 20, 21, 22, 23, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 147, -1, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, -1, 161, 162, 163, + -1, -1, -1, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, -1, 161, 162, 163, -1, 147, + -1, 149, 150, 151, 152, -1, -1, 155, 156, 157, + 158, 159, -1, 161, 162, 163, 11, 12, -1, -1, + 15, -1, 17, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, -1, 161, 162, 163, -1, -1, -1, + -1, 152, 153, 154, 155, 156, 157, 158, 159, -1, + 161, 162, 163, -1, 49, -1, -1, 52, -1, 54, + 55, 56, 57, 58, -1, -1, 61, -1, -1, 64, + 150, 151, 152, 68, -1, 155, 156, 157, 158, 159, + 75, 161, 162, 163, -1, -1, -1, 82, -1, 18, + 19, 20, 21, 22, 23, -1, 10, 11, 12, -1, + -1, -1, -1, 98, 33, 18, 19, 20, 21, 22, + 23, -1, -1, -1, -1, -1, -1, -1, -1, 114, + 33, -1, 117, 118, -1, -1, -1, -1, 123, -1, + 18, 19, 20, 21, 22, 23, 131, 132, 133, 134, + -1, -1, 137, 57, 139, 33, -1, -1, -1, 52, + -1, 54, 55, 56, -1, -1, -1, 152, -1, -1, + 74, 75, 157, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 93, 94, -1, 96, -1, -1, -1, - -1, 101, -1, 103, -1, -1, 106, -1, -1, -1, - -1, -1, -1, -1, 114, 115, -1, -1, 118, -1, - -1, 10, 11, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 135, 136, 137, 138, 139, 140, 141, - -1, 143, 144, 145, -1, -1, -1, 133, 134, -1, - -1, 137, 138, 139, 140, 141, -1, 143, 144, 145, - -1, -1, 51, -1, 53, 54, 55, 56, 57, -1, - -1, -1, -1, -1, 63, -1, -1, 134, -1, -1, - 137, 138, 139, 140, 141, 74, 143, 144, 145, -1, - -1, 80, 81, -1, 11, -1, -1, 14, -1, -1, + -1, -1, -1, -1, -1, 98, 110, 111, -1, 113, + -1, -1, -1, -1, 118, -1, 120, -1, -1, 123, + -1, 10, 11, 12, 117, 118, -1, 131, -1, 133, + -1, -1, 151, 152, -1, -1, 155, 156, 157, 158, + 159, 134, 161, 162, 163, -1, 139, -1, -1, 152, + -1, -1, 155, 156, 157, 158, 159, -1, 161, 162, + 163, -1, -1, 52, -1, 54, 55, 56, 57, 58, + 11, 12, -1, -1, 15, 64, -1, 155, 156, 157, + 158, 159, -1, 161, 162, 163, 75, -1, -1, -1, + -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 49, 98, + -1, 52, -1, 54, 55, 56, 57, 58, -1, -1, + 61, -1, -1, 64, -1, -1, -1, 68, 117, 118, + -1, -1, -1, -1, 75, -1, -1, -1, -1, -1, + -1, 82, 131, -1, -1, 134, -1, -1, 137, -1, + 139, -1, -1, -1, -1, -1, -1, 98, -1, 11, + 12, -1, -1, 15, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 114, -1, -1, 117, 118, -1, -1, + -1, -1, 123, -1, -1, -1, -1, -1, 11, 12, + 131, 132, 133, 134, -1, -1, 137, 49, 139, -1, + 52, -1, 54, 55, 56, 57, 58, -1, -1, 61, + -1, -1, 64, -1, -1, -1, 68, -1, -1, -1, + -1, -1, -1, 75, -1, -1, 49, -1, -1, 52, + 82, 54, 55, 56, 57, 58, -1, -1, 61, -1, + -1, 64, -1, -1, -1, 68, 98, -1, -1, -1, + -1, -1, 75, -1, -1, -1, -1, -1, -1, 82, + -1, -1, 114, -1, -1, 117, 118, -1, -1, -1, + -1, 123, -1, -1, -1, 98, -1, 11, 12, 131, + 132, 133, 134, -1, -1, 137, -1, 139, -1, -1, + -1, 114, -1, -1, 117, 118, -1, -1, -1, -1, + 123, 11, 12, -1, -1, -1, -1, -1, 131, 132, + 133, 134, -1, -1, 137, 49, 139, -1, 52, -1, + 54, 55, 56, 57, 58, -1, -1, 61, -1, 52, + 64, 54, 55, 56, 68, -1, -1, -1, -1, 49, + -1, 75, 52, -1, 54, 55, 56, 57, 82, -1, + -1, 61, -1, -1, 64, -1, -1, -1, 68, 82, + -1, -1, -1, -1, 98, 75, -1, -1, -1, -1, + -1, -1, 82, -1, -1, 98, -1, -1, -1, -1, + -1, -1, -1, 117, 118, -1, -1, -1, 98, 123, + 11, 12, -1, -1, 117, 118, -1, 131, 132, 133, + 134, -1, -1, 137, 114, 139, -1, 117, 118, -1, + -1, 134, -1, 123, -1, -1, 139, -1, -1, 11, + -1, 131, 132, 133, 134, -1, -1, 137, 49, 139, + -1, 52, -1, 54, 55, 56, 57, -1, -1, 162, + 61, -1, -1, 64, -1, -1, -1, 68, -1, -1, + -1, -1, -1, -1, 75, -1, -1, 49, -1, -1, + 52, 82, 54, 55, 56, 57, 58, -1, -1, 61, + -1, -1, 64, -1, -1, -1, 68, 98, -1, -1, + -1, -1, -1, 75, -1, -1, -1, -1, -1, -1, + 82, -1, -1, -1, -1, -1, 117, 118, -1, -1, + -1, -1, 123, -1, -1, 11, 98, -1, -1, -1, + 131, 132, 133, 134, -1, -1, 137, -1, 139, -1, + -1, -1, -1, -1, -1, 117, 118, -1, -1, 11, + -1, 123, -1, -1, -1, -1, -1, -1, -1, 131, + 132, 133, 134, 49, -1, 137, 52, 139, 54, 55, + 56, 57, 58, -1, -1, 61, -1, -1, 64, -1, + -1, -1, 68, -1, -1, -1, -1, 49, -1, 75, + 52, -1, 54, 55, 56, 57, 82, -1, -1, 61, + -1, -1, 64, -1, -1, -1, 68, -1, -1, -1, + -1, -1, 98, 75, -1, -1, -1, -1, -1, -1, + 82, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 117, 118, -1, -1, 11, 98, 123, -1, -1, + -1, -1, -1, -1, -1, 131, 132, 133, 134, -1, + -1, 137, -1, 139, -1, 117, 118, -1, -1, -1, + -1, 123, -1, -1, 10, 11, 12, -1, -1, 131, + 132, 133, 134, 49, -1, 137, 52, 139, 54, 55, + 56, 57, -1, -1, -1, 61, -1, -1, 64, -1, + -1, -1, 68, -1, -1, -1, -1, -1, -1, 75, + -1, -1, -1, -1, -1, -1, 82, -1, -1, -1, + -1, 57, -1, -1, -1, 10, 11, 12, -1, -1, + -1, -1, 98, 52, -1, 54, 55, 56, 74, 75, + -1, -1, -1, -1, 10, 11, 12, -1, -1, -1, + -1, 117, 118, -1, -1, -1, -1, 123, 10, 11, + 12, -1, -1, 82, -1, 131, 132, 133, 134, -1, + -1, 137, 57, 139, 110, 111, 112, 113, -1, 98, + -1, -1, 118, -1, 120, -1, -1, 123, -1, 74, + 75, 57, -1, -1, -1, 131, -1, 133, 117, 118, + 136, -1, -1, -1, -1, 57, -1, -1, 74, 75, + -1, -1, -1, -1, -1, 134, -1, -1, -1, -1, + 139, -1, 74, 75, -1, 110, 111, -1, 113, -1, + -1, -1, -1, 118, -1, 120, -1, -1, 123, -1, + -1, -1, -1, 162, 110, 111, 131, 113, 133, -1, + -1, 136, 118, -1, 120, -1, -1, 123, 110, 111, + -1, 113, -1, -1, -1, 131, 118, 133, 120, -1, + 136, 123, -1, -1, 50, 51, -1, -1, -1, 131, + -1, 133, 58, 59, 136, -1, -1, -1, -1, -1, + -1, 67, -1, 69, 70, 71, 72, -1, -1, -1, + 76, -1, -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 100, 101, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 114, -1, 116, -1, -1, - 119, 48, 121, -1, 51, -1, 53, 54, 55, 56, - 57, -1, -1, 60, -1, -1, 63, -1, -1, -1, - 67, -1, -1, -1, -1, -1, -1, 74, -1, -1, - -1, -1, -1, 80, 81, -1, 11, -1, -1, 14, + -1, -1, -1, -1, 100, 101, 102, 103, 104, 105, + -1, -1, -1, -1, -1, 111, 112, 113, 114, -1, + -1, -1, -1, -1, 120, 121, 50, 51, 124, 125, + -1, -1, -1, 129, 58, 59, -1, -1, -1, 135, + 136, -1, 138, 67, -1, 69, 70, 71, 72, -1, + 146, -1, 76, -1, -1, -1, -1, 81, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 163, -1, 165, + -1, -1, -1, -1, -1, -1, 100, 101, 102, 103, + 104, 105, -1, -1, -1, -1, -1, 111, 112, 113, + 114, -1, -1, -1, -1, -1, 120, 121, 50, 51, + 124, 125, -1, -1, -1, 129, 58, 59, -1, -1, + -1, 135, 136, -1, 138, 67, -1, 69, 70, 71, + 72, -1, 146, -1, 76, -1, -1, -1, -1, 81, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 163, + -1, 165, -1, -1, -1, -1, -1, -1, 100, 101, + 102, 103, 104, 105, -1, -1, -1, -1, -1, 111, + 112, 113, 114, -1, -1, -1, -1, -1, 120, 121, + 50, 51, 124, 125, -1, -1, -1, 129, 58, 59, + -1, -1, -1, 135, 136, -1, 138, 67, -1, 69, + 70, 71, 72, -1, 146, -1, 76, -1, -1, -1, + -1, 81, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 163, -1, 165, -1, -1, -1, -1, -1, -1, + 100, 101, 102, 103, 104, 105, -1, -1, -1, -1, + -1, 111, 112, 113, 114, -1, -1, -1, -1, -1, + 120, 121, 50, 51, 124, 125, -1, -1, -1, 129, + 58, 59, -1, -1, -1, 135, 136, -1, 138, 67, + -1, 69, 70, 71, 72, -1, 146, -1, 76, -1, + -1, -1, -1, 81, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 163, -1, 165, -1, -1, -1, -1, + -1, -1, 100, 101, 102, 103, 104, 105, -1, -1, + -1, -1, -1, 111, 112, 113, 114, -1, -1, -1, + -1, -1, 120, 121, 50, 51, 124, 125, -1, -1, + -1, 129, 58, 59, -1, -1, -1, 135, 136, -1, + 138, 67, -1, 69, 70, 71, 72, -1, 146, -1, + 76, -1, -1, -1, -1, 81, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 163, -1, 165, -1, -1, + -1, -1, -1, -1, 100, 101, 102, 103, 104, 105, + -1, -1, -1, -1, -1, 111, 112, 113, 114, -1, + -1, -1, -1, -1, 120, 121, 50, 51, 124, 125, + -1, -1, -1, 129, 58, 59, -1, -1, -1, 135, + 136, -1, 138, 67, -1, 69, 70, 71, 72, -1, + 146, -1, 76, -1, -1, -1, -1, 81, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 163, -1, 165, + -1, -1, -1, -1, -1, -1, 100, 101, 102, 103, + 104, 105, -1, -1, -1, -1, -1, 111, 112, 113, + 114, -1, -1, -1, -1, -1, 120, 121, 50, 51, + 124, 125, -1, -1, -1, 129, 58, 59, -1, -1, + -1, 135, 136, -1, 138, 67, -1, 69, 70, 71, + 72, -1, 146, -1, 76, 51, -1, -1, -1, 81, + -1, -1, 58, 59, -1, -1, -1, -1, -1, 163, + -1, 165, -1, 69, 70, 71, -1, -1, 100, 101, + 102, 103, 104, 105, -1, 81, -1, -1, -1, 111, + 112, 113, 114, -1, -1, -1, -1, -1, 120, 121, + -1, -1, 124, 125, -1, -1, -1, 129, 104, -1, + -1, -1, -1, 135, 136, 51, 138, -1, 114, -1, + -1, -1, 58, 59, 120, -1, -1, -1, -1, 125, + -1, -1, -1, 69, 70, 71, -1, -1, -1, 135, + 136, 163, 138, 51, -1, 81, -1, -1, -1, -1, + 58, 59, 51, -1, -1, -1, -1, 153, -1, 58, + 59, 69, 70, 71, -1, -1, -1, 163, 104, -1, + 69, 70, 71, 81, -1, -1, -1, -1, 114, -1, + -1, -1, 81, 52, 120, 54, 55, 56, 124, 125, + -1, -1, -1, -1, -1, 64, 104, 105, -1, 135, + 136, -1, 138, -1, -1, 104, 114, -1, -1, -1, + -1, -1, 120, 82, -1, 114, 52, 125, 54, 55, + 56, 120, -1, -1, -1, -1, 125, 163, 136, 98, + 138, -1, -1, -1, -1, -1, -1, 136, -1, 138, + -1, -1, -1, -1, -1, -1, 82, -1, 117, 118, + -1, -1, -1, -1, -1, 163, -1, -1, -1, -1, + -1, -1, 98, -1, 163, 134, -1, -1, -1, -1, + 139, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 117, 118, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 162, -1, -1, -1, -1, 134, -1, + -1, -1, -1, 139, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 97, -1, -1, 100, 101, -1, -1, -1, -1, 106, - -1, -1, -1, -1, -1, -1, -1, 114, 115, 116, - -1, -1, 119, 48, 121, -1, 51, -1, 53, 54, - 55, 56, 57, -1, -1, 60, -1, -1, 63, -1, - -1, -1, 67, -1, -1, -1, -1, -1, -1, 74, - -1, -1, -1, -1, -1, 80, 81, -1, 11, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 97, -1, -1, 100, 101, -1, -1, -1, - 11, 106, -1, -1, -1, -1, -1, -1, -1, 114, - 115, 116, -1, -1, 119, 48, 121, -1, 51, -1, - 53, 54, 55, 56, 57, -1, -1, 60, -1, -1, - 63, -1, -1, -1, 67, -1, -1, 48, -1, -1, - 51, 74, 53, 54, 55, 56, 57, 80, 81, 60, - -1, -1, 63, -1, -1, -1, 67, -1, -1, -1, - -1, -1, -1, 74, 97, -1, -1, 100, 101, 80, - 81, -1, 11, 106, -1, -1, -1, -1, -1, -1, - -1, 114, 115, 116, -1, -1, 119, -1, 121, 100, - 101, -1, -1, -1, -1, 106, -1, -1, -1, -1, - -1, -1, -1, 114, 115, 116, -1, -1, 119, 48, - 121, -1, 51, -1, 53, 54, 55, 56, 57, -1, - -1, 60, -1, -1, 63, -1, -1, -1, 67, 11, - -1, -1, -1, -1, -1, 74, -1, -1, -1, -1, - -1, 80, 81, -1, -1, -1, -1, -1, -1, -1, - -1, 11, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 100, 101, -1, -1, -1, 48, 106, -1, 51, - -1, 53, 54, 55, 56, 114, 115, 116, 60, -1, - 119, 63, 121, -1, -1, 67, -1, -1, 48, -1, - -1, 51, 74, 53, 54, 55, 56, 57, 80, 81, - 60, -1, -1, 63, -1, -1, -1, 67, 11, -1, - -1, -1, -1, -1, 74, 97, -1, -1, 100, 101, - 80, 81, -1, -1, 106, -1, -1, -1, -1, -1, - 11, -1, 114, 115, 116, -1, -1, 119, -1, 121, - 100, 101, -1, -1, -1, 48, 106, -1, 51, -1, - 53, 54, 55, 56, 114, 115, 116, 60, -1, 119, - 63, 121, -1, -1, 67, -1, -1, 48, 10, 11, - 51, 74, 53, 54, 55, 56, -1, 80, 81, 60, - -1, -1, 63, -1, 10, 11, 67, -1, -1, -1, - -1, -1, -1, 74, -1, -1, -1, 100, 101, 80, - 81, -1, -1, 106, -1, -1, -1, -1, -1, -1, - -1, 114, 115, 116, 56, -1, 119, -1, 121, 100, - 101, -1, -1, -1, -1, 106, -1, -1, -1, -1, - 56, 73, 74, 114, 115, 116, -1, -1, 119, -1, - 121, -1, -1, -1, -1, -1, -1, 73, 74, -1, - -1, 93, 94, -1, 96, -1, -1, -1, -1, 101, - -1, 103, -1, -1, 106, -1, -1, 93, 94, -1, - 96, -1, 114, 115, -1, 101, 118, 103, 49, 50, - 106, -1, -1, -1, -1, -1, 57, 58, 114, 115, - -1, -1, 118, -1, -1, 66, -1, 68, 69, 70, - 71, -1, -1, -1, 75, -1, -1, -1, 79, -1, - -1, -1, 83, 84, 85, 86, 87, 88, -1, -1, - -1, -1, -1, 94, 95, 96, 97, -1, -1, -1, - -1, -1, 103, 104, 49, 50, 107, 108, -1, -1, - -1, 112, 57, 58, -1, -1, 117, 118, -1, 120, - -1, 66, -1, 68, 69, 70, 71, 128, -1, -1, - 75, -1, -1, -1, 79, -1, -1, -1, 83, 84, - 85, 86, 87, 88, 145, -1, 147, -1, -1, 94, - 95, 96, 97, -1, -1, -1, -1, -1, 103, 104, - 49, 50, 107, 108, -1, -1, -1, 112, 57, 58, - -1, -1, 117, 118, -1, 120, -1, 66, -1, 68, - 69, 70, 71, 128, -1, -1, 75, -1, -1, -1, - 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, - 145, -1, 147, -1, -1, 94, 95, 96, 97, -1, - -1, -1, -1, -1, 103, 104, 49, 50, 107, 108, - -1, -1, -1, 112, 57, 58, -1, -1, 117, 118, - -1, 120, -1, 66, -1, 68, 69, 70, 71, 128, - -1, -1, 75, -1, -1, -1, 79, -1, -1, -1, - 83, 84, 85, 86, 87, 88, 145, -1, 147, -1, - -1, 94, 95, 96, 97, -1, -1, -1, -1, -1, - 103, 104, 49, 50, 107, 108, -1, -1, -1, 112, - 57, 58, -1, -1, 117, 118, -1, 120, -1, 66, - -1, 68, 69, 70, 71, 128, -1, -1, 75, -1, - -1, -1, 79, -1, -1, -1, 83, 84, 85, 86, - 87, 88, 145, -1, 147, -1, -1, 94, 95, 96, - 97, -1, -1, -1, -1, -1, 103, 104, 49, 50, - 107, 108, -1, -1, -1, 112, 57, 58, -1, -1, - 117, 118, -1, 120, -1, 66, -1, 68, 69, 70, - 71, 128, -1, -1, 75, -1, -1, -1, 79, -1, - -1, -1, 83, 84, 85, 86, 87, 88, 145, -1, - 147, -1, -1, 94, 95, 96, 97, -1, -1, -1, - -1, -1, 103, 104, 49, 50, 107, 108, -1, -1, - -1, 112, 57, 58, -1, -1, 117, 118, -1, 120, - -1, 66, -1, 68, 69, 70, 71, 128, -1, -1, - 75, -1, -1, -1, 79, -1, -1, -1, 83, 84, - 85, 86, 87, 88, 145, -1, 147, -1, -1, 94, - 95, 96, 97, -1, -1, -1, -1, -1, 103, 104, - 49, 50, 107, 108, -1, -1, -1, 112, 57, 58, - -1, -1, 117, 118, -1, 120, -1, 66, -1, 68, - 69, 70, 71, 128, -1, -1, 75, -1, -1, -1, - 79, -1, -1, -1, 83, 84, 85, 86, 87, 88, - 145, -1, 147, -1, -1, 94, 95, 96, 97, -1, - -1, -1, -1, -1, 103, 104, -1, 50, 107, 108, - -1, -1, -1, 112, 57, 58, -1, -1, 117, 118, - -1, 120, -1, -1, -1, 68, 69, 70, -1, -1, - -1, -1, -1, 50, -1, -1, 79, -1, -1, -1, - 57, 58, -1, -1, 87, -1, 145, -1, -1, -1, - -1, 68, 69, 70, 97, -1, -1, -1, -1, -1, - 103, -1, 79, -1, -1, 108, -1, -1, -1, -1, - 87, -1, -1, -1, 117, 118, 50, 120, -1, -1, - 97, -1, -1, 57, 58, -1, 103, -1, -1, -1, - 107, 108, 135, -1, 68, 69, 70, -1, -1, -1, - 117, 118, 145, 120, -1, 79, -1, -1, -1, -1, - -1, -1, 50, 87, 88, -1, -1, -1, -1, 57, - 58, -1, -1, 97, -1, -1, -1, -1, 145, 103, - 68, 69, 70, -1, 108, -1, -1, -1, -1, -1, - -1, 79, -1, -1, 118, -1, 120, -1, -1, 87, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 97, - -1, -1, -1, -1, -1, 103, -1, -1, -1, -1, - 108, 145, -1, -1, -1, -1, -1, -1, -1, -1, - 118, -1, 120, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 145 + -1, -1, -1, -1, -1, -1, 162 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing symbol of state STATE-NUM. */ -static const yytype_uint8 yystos[] = +static const yytype_uint16 yystos[] = { - 0, 123, 124, 125, 151, 152, 253, 3, 4, 5, - 6, 8, 9, 10, 11, 47, 51, 53, 54, 55, - 59, 63, 64, 72, 73, 74, 80, 81, 89, 91, - 93, 98, 100, 101, 102, 105, 110, 113, 116, 121, - 134, 137, 138, 139, 142, 144, 145, 149, 243, 244, - 252, 11, 48, 51, 53, 54, 55, 56, 57, 60, - 63, 67, 74, 80, 81, 100, 101, 106, 114, 115, - 116, 119, 121, 207, 211, 212, 214, 220, 221, 225, - 226, 231, 232, 233, 234, 0, 49, 50, 57, 58, - 66, 68, 69, 70, 71, 75, 79, 83, 84, 85, - 86, 87, 88, 94, 95, 96, 97, 103, 104, 107, - 108, 112, 117, 118, 120, 128, 145, 155, 157, 158, - 160, 163, 181, 227, 230, 253, 144, 144, 144, 144, - 144, 144, 135, 144, 135, 144, 144, 144, 11, 48, - 60, 114, 209, 225, 226, 231, 135, 144, 144, 144, - 135, 144, 144, 144, 243, 243, 243, 243, 243, 11, - 51, 53, 54, 55, 63, 74, 80, 81, 100, 101, - 116, 121, 211, 241, 243, 10, 11, 73, 74, 93, - 94, 96, 101, 103, 130, 134, 247, 248, 250, 253, - 243, 15, 16, 17, 18, 19, 20, 21, 22, 32, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 143, 144, 145, 6, 8, 207, 144, 56, 106, - 63, 81, 232, 232, 232, 250, 232, 12, 16, 57, - 120, 134, 139, 144, 205, 206, 253, 126, 10, 11, - 93, 129, 251, 10, 11, 93, 126, 250, 251, 79, - 160, 160, 160, 160, 6, 160, 160, 129, 159, 88, - 160, 144, 144, 144, 144, 160, 126, 250, 129, 129, - 129, 160, 160, 144, 160, 163, 182, 160, 160, 166, - 88, 250, 160, 160, 145, 10, 11, 48, 60, 92, - 114, 126, 142, 169, 172, 208, 210, 212, 214, 220, - 225, 226, 231, 240, 241, 253, 211, 240, 240, 240, - 240, 211, 240, 211, 240, 240, 240, 144, 250, 144, - 250, 250, 211, 240, 240, 211, 211, 211, 243, 240, - 240, 146, 127, 146, 250, 148, 127, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 243, 146, 241, - 243, 206, 243, 139, 12, 16, 57, 120, 134, 139, - 205, 253, 205, 206, 205, 206, 205, 205, 14, 16, - 57, 97, 134, 139, 191, 192, 201, 207, 253, 145, - 223, 224, 253, 11, 222, 232, 129, 213, 215, 160, - 157, 126, 250, 250, 250, 250, 250, 152, 126, 243, - 135, 10, 11, 172, 208, 210, 250, 128, 130, 161, - 162, 250, 144, 144, 144, 57, 207, 250, 156, 250, - 126, 128, 129, 130, 197, 126, 128, 130, 198, 128, - 164, 250, 251, 250, 146, 146, 146, 146, 146, 146, - 136, 146, 136, 146, 146, 146, 243, 240, 136, 146, - 146, 146, 136, 146, 146, 146, 146, 243, 243, 57, - 144, 178, 253, 247, 129, 146, 148, 146, 205, 139, - 205, 205, 205, 205, 205, 145, 205, 97, 207, 201, - 205, 205, 146, 14, 127, 12, 16, 57, 120, 134, - 139, 144, 204, 251, 253, 239, 243, 253, 250, 147, - 222, 152, 73, 216, 253, 152, 126, 127, 127, 127, - 127, 147, 228, 127, 146, 10, 11, 56, 57, 114, - 183, 184, 185, 186, 231, 253, 144, 198, 167, 128, - 211, 148, 127, 144, 170, 12, 139, 171, 243, 207, - 12, 16, 57, 120, 134, 139, 203, 251, 253, 152, - 144, 235, 236, 153, 154, 250, 61, 62, 235, 61, - 62, 126, 243, 12, 16, 57, 92, 120, 134, 139, - 144, 165, 187, 189, 251, 129, 144, 144, 146, 146, - 144, 144, 191, 32, 73, 87, 90, 93, 109, 190, - 253, 243, 205, 239, 146, 207, 204, 146, 146, 178, - 14, 201, 139, 204, 204, 204, 204, 204, 204, 130, - 145, 196, 253, 148, 127, 130, 147, 129, 217, 218, - 253, 147, 229, 10, 10, 10, 10, 152, 252, 128, - 250, 186, 250, 136, 127, 204, 168, 189, 128, 148, - 161, 3, 4, 5, 9, 10, 14, 47, 59, 64, - 72, 73, 89, 91, 93, 98, 102, 105, 110, 113, - 134, 137, 138, 142, 144, 149, 193, 194, 201, 202, - 245, 246, 252, 253, 191, 139, 187, 191, 146, 203, - 139, 203, 203, 203, 203, 203, 144, 145, 147, 173, - 147, 237, 253, 126, 127, 126, 144, 128, 128, 147, - 128, 128, 126, 199, 200, 243, 253, 128, 139, 187, - 187, 6, 15, 16, 17, 18, 19, 20, 21, 22, - 32, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 62, 89, 127, 130, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 144, 145, - 149, 179, 187, 187, 187, 187, 129, 144, 145, 190, - 130, 196, 198, 222, 241, 241, 241, 241, 146, 57, - 209, 144, 126, 148, 144, 204, 196, 144, 144, 190, - 204, 146, 243, 239, 243, 94, 95, 96, 114, 118, - 219, 226, 249, 250, 126, 127, 152, 127, 146, 127, - 127, 127, 147, 146, 130, 204, 130, 163, 180, 181, - 185, 130, 195, 253, 196, 198, 160, 144, 135, 135, - 209, 135, 144, 135, 144, 243, 243, 243, 243, 211, - 241, 243, 146, 14, 127, 15, 16, 17, 18, 19, - 20, 21, 22, 32, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 143, 144, 145, 146, 187, - 146, 146, 144, 203, 176, 239, 191, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 67, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 87, 88, 89, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 148, - 149, 238, 235, 154, 240, 240, 199, 147, 127, 187, - 10, 146, 148, 146, 4, 188, 239, 243, 127, 146, - 146, 146, 146, 178, 209, 206, 146, 250, 235, 191, - 196, 191, 191, 144, 148, 127, 118, 249, 118, 249, - 118, 249, 250, 94, 95, 96, 250, 152, 219, 147, - 10, 128, 10, 10, 10, 128, 211, 195, 211, 47, - 59, 64, 98, 102, 105, 134, 137, 138, 139, 142, - 144, 149, 242, 244, 127, 211, 211, 211, 144, 211, - 211, 211, 211, 243, 146, 146, 14, 202, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 146, - 241, 243, 178, 146, 144, 178, 177, 191, 148, 146, - 237, 147, 147, 146, 147, 126, 243, 193, 148, 165, - 190, 206, 146, 147, 146, 146, 146, 191, 249, 249, - 249, 249, 249, 249, 147, 127, 146, 127, 146, 146, - 127, 146, 144, 135, 135, 135, 144, 135, 242, 242, - 242, 242, 242, 211, 241, 242, 15, 16, 17, 18, - 19, 20, 21, 22, 32, 131, 132, 133, 134, 137, - 138, 139, 140, 141, 143, 144, 145, 168, 146, 136, - 136, 240, 136, 146, 136, 146, 146, 243, 129, 146, - 148, 144, 174, 191, 146, 178, 147, 199, 146, 126, - 178, 178, 178, 146, 10, 128, 10, 128, 128, 10, - 128, 211, 211, 211, 211, 211, 211, 146, 146, 242, - 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, 146, 241, - 243, 144, 144, 146, 144, 144, 243, 175, 191, 146, - 178, 147, 178, 235, 190, 190, 190, 178, 146, 127, - 127, 146, 146, 136, 136, 136, 146, 136, 242, 129, - 146, 148, 241, 241, 241, 241, 191, 146, 178, 147, - 128, 10, 10, 128, 144, 144, 144, 144, 242, 146, - 146, 146, 146, 146, 178, 146, 146, 241, 241, 241, - 241, 178, 190, 128, 128, 146, 146, 146, 146, 190 + 0, 141, 142, 143, 169, 170, 274, 3, 4, 5, + 6, 8, 9, 10, 11, 48, 52, 54, 55, 56, + 60, 64, 65, 73, 74, 75, 79, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 106, 108, 110, 115, 117, 118, + 119, 122, 127, 130, 134, 139, 152, 155, 156, 157, + 160, 162, 163, 167, 264, 265, 273, 11, 12, 49, + 52, 54, 55, 56, 57, 58, 61, 64, 68, 75, + 82, 98, 117, 118, 123, 131, 132, 133, 134, 137, + 139, 227, 228, 232, 233, 235, 241, 242, 246, 247, + 252, 253, 254, 255, 0, 50, 51, 58, 59, 67, + 69, 70, 71, 72, 76, 81, 100, 101, 102, 103, + 104, 105, 111, 112, 113, 114, 120, 121, 124, 125, + 129, 135, 136, 138, 146, 163, 173, 175, 176, 178, + 181, 199, 248, 251, 274, 162, 162, 162, 162, 162, + 162, 153, 162, 153, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, + 162, 162, 162, 11, 49, 61, 131, 132, 230, 246, + 247, 252, 153, 162, 162, 15, 162, 153, 162, 162, + 162, 264, 264, 264, 264, 264, 11, 52, 54, 55, + 56, 64, 75, 82, 98, 117, 118, 134, 139, 232, + 262, 264, 10, 11, 12, 74, 75, 110, 111, 113, + 118, 120, 148, 152, 268, 269, 271, 274, 264, 16, + 17, 18, 19, 20, 21, 22, 23, 33, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 161, + 162, 163, 6, 8, 227, 228, 162, 57, 123, 64, + 98, 253, 253, 253, 271, 162, 253, 13, 15, 17, + 58, 138, 152, 157, 162, 225, 226, 274, 226, 144, + 10, 11, 12, 110, 147, 272, 10, 11, 12, 110, + 144, 271, 272, 81, 178, 178, 178, 178, 6, 178, + 178, 147, 177, 105, 178, 162, 162, 162, 162, 178, + 144, 271, 147, 147, 147, 178, 178, 162, 178, 181, + 200, 178, 178, 184, 105, 271, 178, 178, 163, 10, + 11, 49, 61, 109, 131, 132, 144, 160, 187, 190, + 229, 231, 233, 235, 241, 246, 247, 252, 261, 262, + 274, 232, 261, 261, 261, 261, 232, 261, 232, 261, + 232, 261, 232, 232, 232, 232, 232, 232, 232, 232, + 232, 232, 232, 232, 232, 232, 232, 261, 162, 271, + 162, 162, 271, 271, 232, 261, 261, 162, 232, 232, + 232, 264, 261, 261, 164, 145, 164, 271, 166, 145, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 164, 262, 264, 226, 226, 264, 232, 157, 271, + 13, 15, 17, 58, 138, 152, 157, 225, 274, 225, + 226, 225, 226, 225, 225, 15, 17, 58, 114, 152, + 157, 210, 211, 220, 227, 228, 274, 163, 244, 245, + 274, 11, 243, 253, 147, 234, 236, 178, 175, 144, + 271, 271, 271, 271, 271, 170, 144, 264, 153, 10, + 11, 190, 229, 231, 271, 146, 148, 179, 180, 271, + 162, 162, 162, 58, 227, 271, 162, 174, 271, 144, + 146, 147, 148, 216, 144, 146, 148, 217, 146, 182, + 271, 272, 271, 164, 164, 164, 164, 164, 164, 154, + 164, 154, 164, 164, 164, 164, 145, 164, 145, 164, + 145, 164, 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 264, 232, 261, 154, 164, 164, 271, 164, + 154, 164, 164, 164, 164, 264, 264, 162, 196, 274, + 268, 147, 164, 166, 164, 164, 225, 157, 271, 225, + 225, 225, 225, 225, 163, 225, 114, 227, 228, 220, + 225, 225, 164, 15, 145, 13, 17, 58, 138, 152, + 157, 162, 223, 272, 274, 13, 15, 17, 58, 138, + 152, 157, 162, 224, 260, 264, 274, 271, 165, 243, + 170, 74, 237, 274, 170, 144, 145, 145, 145, 145, + 165, 249, 145, 164, 10, 11, 12, 57, 58, 131, + 201, 202, 203, 204, 205, 252, 274, 162, 217, 185, + 146, 232, 166, 145, 162, 188, 13, 157, 189, 264, + 227, 13, 17, 58, 138, 152, 157, 222, 272, 274, + 232, 170, 162, 256, 257, 171, 172, 271, 62, 63, + 256, 62, 63, 144, 264, 13, 17, 58, 109, 138, + 152, 157, 162, 183, 206, 208, 272, 147, 162, 162, + 232, 232, 232, 164, 164, 164, 162, 164, 162, 210, + 17, 33, 58, 74, 104, 107, 110, 126, 138, 152, + 209, 274, 264, 225, 260, 164, 227, 228, 223, 224, + 164, 164, 196, 15, 220, 157, 223, 223, 223, 223, + 223, 223, 148, 163, 215, 274, 157, 271, 224, 224, + 224, 224, 224, 224, 163, 215, 166, 145, 148, 165, + 147, 238, 239, 274, 165, 250, 10, 10, 10, 10, + 170, 273, 146, 205, 154, 145, 15, 271, 13, 17, + 58, 138, 152, 157, 162, 223, 224, 186, 208, 146, + 166, 179, 3, 4, 5, 9, 10, 15, 48, 60, + 65, 73, 74, 106, 108, 110, 115, 119, 122, 127, + 130, 152, 155, 156, 160, 162, 167, 212, 213, 220, + 221, 266, 267, 273, 274, 210, 157, 206, 210, 164, + 222, 157, 222, 222, 222, 222, 222, 162, 163, 164, + 165, 191, 165, 258, 274, 144, 145, 144, 162, 146, + 146, 165, 146, 146, 144, 218, 219, 264, 274, 146, + 157, 206, 206, 6, 16, 17, 18, 19, 20, 21, + 22, 23, 33, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 63, 106, 145, 148, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 162, 163, 167, 197, 206, 206, 206, 206, 147, 162, + 163, 209, 148, 215, 217, 243, 262, 262, 164, 164, + 164, 262, 262, 164, 58, 230, 162, 144, 166, 162, + 223, 224, 215, 215, 162, 162, 209, 223, 164, 264, + 260, 224, 164, 260, 264, 111, 112, 113, 131, 136, + 240, 247, 270, 271, 144, 145, 170, 145, 164, 145, + 145, 145, 165, 164, 223, 224, 181, 198, 199, 204, + 271, 148, 157, 148, 214, 274, 215, 217, 178, 162, + 153, 153, 230, 153, 15, 162, 153, 162, 264, 264, + 264, 264, 232, 262, 264, 164, 15, 145, 16, 17, + 18, 19, 20, 21, 22, 23, 33, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 161, 162, + 163, 164, 206, 164, 164, 162, 222, 194, 260, 210, + 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, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 68, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 80, 81, 82, 98, 104, 105, + 106, 108, 109, 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, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 166, 167, 259, 256, 172, + 261, 261, 218, 165, 145, 206, 10, 164, 166, 164, + 4, 207, 260, 264, 145, 164, 164, 164, 164, 196, + 230, 226, 164, 271, 256, 210, 215, 215, 210, 210, + 162, 166, 162, 166, 145, 136, 270, 136, 270, 136, + 270, 271, 111, 112, 113, 271, 15, 170, 240, 165, + 10, 146, 10, 10, 10, 146, 214, 232, 48, 60, + 65, 115, 119, 122, 152, 155, 156, 157, 160, 162, + 167, 263, 265, 145, 232, 232, 232, 162, 232, 162, + 232, 232, 232, 264, 164, 164, 15, 221, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 264, + 264, 264, 264, 264, 264, 264, 264, 264, 264, 164, + 262, 264, 196, 164, 162, 196, 195, 210, 166, 164, + 258, 165, 165, 164, 165, 144, 264, 212, 166, 183, + 209, 226, 15, 164, 165, 164, 164, 164, 210, 210, + 270, 270, 270, 270, 270, 270, 165, 145, 164, 145, + 164, 164, 145, 164, 162, 153, 153, 153, 15, 162, + 153, 263, 263, 263, 263, 263, 232, 262, 263, 16, + 17, 18, 19, 20, 21, 22, 23, 33, 149, 150, + 151, 152, 155, 156, 157, 158, 159, 161, 162, 163, + 186, 164, 154, 154, 261, 154, 271, 164, 154, 164, + 164, 264, 147, 164, 166, 162, 192, 210, 164, 196, + 165, 15, 218, 164, 144, 164, 196, 196, 196, 164, + 164, 10, 146, 10, 146, 146, 10, 146, 232, 232, + 232, 232, 162, 232, 232, 164, 164, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 263, 263, 263, 263, + 263, 263, 263, 263, 263, 263, 164, 262, 264, 162, + 162, 164, 162, 164, 162, 264, 193, 210, 164, 196, + 165, 196, 256, 209, 209, 209, 196, 196, 164, 145, + 145, 164, 164, 154, 154, 154, 271, 164, 154, 263, + 147, 164, 166, 262, 262, 262, 262, 210, 164, 196, + 165, 146, 10, 10, 146, 162, 162, 162, 164, 162, + 263, 164, 164, 164, 164, 164, 196, 164, 164, 262, + 262, 262, 262, 196, 209, 146, 146, 164, 164, 164, + 164, 209 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint8 yyr1[] = +static const yytype_uint16 yyr1[] = { - 0, 150, 151, 151, 151, 152, 152, 152, 153, 153, - 154, 154, 156, 155, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, - 157, 157, 157, 157, 157, 157, 157, 159, 158, 160, - 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, - 160, 160, 160, 160, 160, 161, 161, 162, 162, 164, - 163, 163, 163, 163, 163, 165, 165, 167, 166, 166, - 168, 168, 170, 169, 171, 169, 173, 172, 174, 172, - 175, 172, 176, 172, 177, 172, 172, 178, 178, 178, - 178, 178, 178, 178, 178, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, - 179, 179, 179, 179, 180, 180, 182, 181, 181, 183, - 183, 184, 184, 185, 185, 185, 185, 185, 185, 186, - 186, 186, 187, 187, 187, 187, 187, 187, 187, 187, - 187, 187, 187, 188, 187, 189, 189, 190, 190, 190, - 191, 191, 191, 191, 191, 192, 192, 193, 193, 193, - 193, 193, 194, 194, 195, 195, 196, 196, 197, 197, - 197, 197, 197, 198, 198, 198, 198, 198, 198, 199, - 199, 199, 200, 200, 200, 200, 201, 201, 201, 201, - 202, 202, 203, 203, 203, 203, 203, 203, 203, 203, - 203, 204, 204, 204, 204, 204, 204, 204, 204, 204, - 204, 204, 205, 205, 205, 205, 205, 205, 205, 205, - 206, 206, 206, 206, 206, 206, 206, 206, 206, 206, - 206, 206, 207, 207, 207, 207, 207, 207, 207, 207, - 207, 207, 208, 208, 208, 208, 208, 208, 208, 208, - 208, 208, 208, 209, 209, 209, 209, 209, 209, 209, - 210, 210, 211, 211, 213, 212, 215, 214, 216, 216, - 217, 217, 218, 218, 219, 219, 219, 219, 219, 219, - 219, 219, 219, 219, 220, 221, 221, 221, 221, 222, - 222, 223, 223, 223, 224, 224, 224, 225, 225, 225, - 226, 226, 226, 228, 227, 229, 227, 227, 227, 230, - 230, 230, 231, 231, 231, 232, 232, 232, 232, 232, - 232, 232, 232, 232, 232, 232, 232, 232, 232, 233, - 233, 233, 234, 236, 235, 237, 237, 238, 238, 238, - 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, - 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, - 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, - 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, - 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, - 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, - 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, - 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, - 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, - 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, - 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, - 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, - 238, 239, 239, 240, 240, 241, 241, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, - 242, 242, 242, 242, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, - 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, - 244, 244, 244, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, - 245, 245, 245, 245, 245, 246, 246, 246, 246, 246, - 246, 246, 246, 246, 246, 246, 247, 247, 247, 248, - 248, 248, 248, 249, 249, 249, 250, 250, 250, 250, - 250, 250, 250, 250, 250, 251, 251, 251, 252, 252, - 252, 252, 253 + 0, 168, 169, 169, 169, 170, 170, 170, 171, 171, + 172, 172, 172, 174, 173, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, + 175, 175, 175, 175, 175, 175, 175, 175, 177, 176, + 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, + 178, 178, 178, 178, 178, 178, 179, 179, 180, 180, + 182, 181, 181, 181, 181, 181, 183, 183, 185, 184, + 184, 186, 186, 188, 187, 189, 187, 191, 190, 192, + 190, 193, 190, 194, 190, 195, 190, 190, 196, 196, + 196, 196, 196, 196, 196, 196, 196, 196, 196, 196, + 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, 197, 197, + 197, 197, 197, 197, 197, 197, 197, 197, 197, 198, + 198, 200, 199, 199, 201, 201, 202, 202, 203, 203, + 204, 204, 204, 204, 204, 204, 204, 204, 204, 205, + 205, 205, 205, 206, 206, 206, 206, 206, 206, 206, + 206, 206, 206, 206, 207, 206, 208, 208, 209, 209, + 209, 210, 210, 210, 210, 210, 211, 211, 212, 212, + 212, 212, 212, 213, 213, 214, 214, 215, 215, 216, + 216, 216, 216, 216, 217, 217, 217, 217, 217, 217, + 218, 218, 218, 219, 219, 219, 219, 220, 220, 220, + 220, 220, 220, 220, 221, 221, 222, 222, 222, 222, + 222, 222, 222, 222, 222, 223, 223, 223, 223, 223, + 223, 223, 223, 223, 223, 223, 224, 224, 224, 224, + 224, 224, 224, 224, 224, 224, 224, 225, 225, 225, + 225, 225, 225, 225, 225, 225, 225, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, + 226, 227, 227, 227, 227, 227, 227, 227, 227, 227, + 227, 227, 228, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 229, 229, 229, 230, 230, 230, 230, 230, + 230, 230, 230, 231, 231, 232, 232, 232, 232, 234, + 233, 236, 235, 237, 237, 238, 238, 239, 239, 240, + 240, 240, 240, 240, 240, 240, 240, 240, 240, 241, + 242, 242, 242, 242, 243, 243, 244, 244, 244, 245, + 245, 245, 246, 246, 246, 247, 247, 247, 249, 248, + 250, 248, 248, 248, 251, 251, 251, 252, 252, 252, + 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, + 253, 253, 253, 253, 254, 254, 254, 255, 257, 256, + 258, 258, 259, 259, 259, 259, 259, 259, 259, 259, + 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, + 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, + 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, + 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, + 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, + 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, + 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, + 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, + 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, + 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, + 259, 259, 259, 259, 259, 259, 259, 259, 259, 259, + 259, 259, 259, 259, 259, 259, 259, 259, 259, 260, + 260, 261, 261, 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, 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, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 265, 265, 265, 265, 265, 265, 265, 265, 265, 265, + 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 267, 267, 268, 268, 268, 269, 269, 269, + 269, 270, 270, 270, 270, 271, 271, 271, 271, 271, + 271, 271, 271, 271, 271, 272, 272, 272, 272, 273, + 273, 273, 273, 274 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 2, 2, 2, 1, 2, 2, 1, 3, - 4, 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, 6, 1, 3, 1, 4, 0, - 4, 3, 3, 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, 1, 2, - 2, 2, 2, 4, 5, 1, 1, 1, 1, 1, + 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, 6, 1, 3, 1, 4, + 0, 4, 3, 3, 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, 4, 5, 6, 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, 0, 6, 2, 1, - 1, 1, 3, 2, 4, 2, 4, 3, 4, 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, 2, - 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, 3, 4, - 1, 2, 2, 2, 2, 2, 3, 4, 5, 9, - 9, 9, 1, 1, 2, 1, 1, 1, 2, 4, - 4, 1, 1, 1, 2, 1, 1, 1, 2, 4, - 2, 4, 1, 1, 1, 2, 2, 2, 4, 1, - 1, 1, 2, 3, 0, 5, 0, 8, 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, 2, 2, 1, 1, 1, + 1, 0, 6, 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, 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, 2, 4, 4, + 4, 1, 1, 1, 1, 2, 1, 1, 1, 2, + 4, 2, 4, 4, 1, 1, 1, 2, 2, 2, + 4, 4, 1, 1, 1, 2, 3, 2, 3, 0, + 5, 0, 8, 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, @@ -2746,27 +2991,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, 1, 1, 1, 1, - 3, 1, 1, 1, 1, 1, 3, 1, 4, 7, - 7, 7, 7, 4, 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, + 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, + 1, 1, 1, 1, 3, 1, 4, 7, 7, 7, + 7, 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, 2, 5, 4, 4, 2, + 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, 1, 4, 7, 7, 7, 7, 4, - 4, 2, 5, 4, 4, 2, 2, 2, 2, 2, + 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, 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, 3, 3, 5, 4, - 4, 3, 3, 3, 3, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, - 1, 2, 1, 1, 2, 2, 1, 1, 1, 1, + 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, 3, 1, 1, 2, + 1, 1, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 0 + 1, 2, 2, 0 }; @@ -3542,56 +3789,64 @@ yyreduce: switch (yyn) { case 3: -#line 426 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 444 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_expr = (yyvsp[0].u.expr); } -#line 3550 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 3797 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 4: -#line 430 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 448 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_type = (yyvsp[0].u.type); } -#line 3558 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 3805 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 10: -#line 448 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 466 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { delete (yyvsp[-1].u.expr); } -#line 3566 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 3813 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 11: -#line 452 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 470 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - delete (yyvsp[-1].u.expr); + delete (yyvsp[-2].u.expr); } -#line 3574 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 3821 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 12: -#line 464 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 474 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + delete (yyvsp[-1].u.expr); +} +#line 3829 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 13: +#line 486 "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 3583 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 3838 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 13: -#line 469 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 14: +#line 491 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_storage_class(); } -#line 3591 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 3846 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 20: -#line 482 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 21: +#line 504 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if (publish_nest_level != 0) { yyerror("Unclosed __begin_publish", publish_loc); @@ -3604,11 +3859,11 @@ yyreduce: publish_nest_level++; current_scope->set_current_vis(V_published); } -#line 3608 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 3863 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 21: -#line 495 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 22: +#line 517 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if (publish_nest_level != 1) { yyerror("Unmatched __end_publish", (yylsp[0])); @@ -3617,19 +3872,19 @@ yyreduce: } publish_nest_level = 0; } -#line 3621 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 22: -#line 504 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - current_scope->set_current_vis(V_published); -} -#line 3629 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 3876 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 23: -#line 508 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 526 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + current_scope->set_current_vis(V_published); +} +#line 3884 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 24: +#line 530 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if (publish_nest_level > 0) { current_scope->set_current_vis(V_published); @@ -3637,27 +3892,27 @@ yyreduce: current_scope->set_current_vis(V_public); } } -#line 3641 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 24: -#line 516 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - current_scope->set_current_vis(V_protected); -} -#line 3649 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 3896 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 25: -#line 520 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 538 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - current_scope->set_current_vis(V_private); + current_scope->set_current_vis(V_protected); } -#line 3657 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 3904 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 26: -#line 524 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 542 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + current_scope->set_current_vis(V_private); +} +#line 3912 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 27: +#line 546 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPDeclaration *getter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); @@ -3668,11 +3923,11 @@ yyreduce: 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 3672 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 3927 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 27: -#line 535 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 28: +#line 557 "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) { @@ -3693,11 +3948,11 @@ yyreduce: current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-8])); } } -#line 3697 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 3952 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 28: -#line 556 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 29: +#line 578 "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) { @@ -3727,11 +3982,11 @@ yyreduce: current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-10])); } } -#line 3731 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 3986 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 29: -#line 586 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 30: +#line 608 "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) { @@ -3748,11 +4003,11 @@ yyreduce: make_property->_length_function = length_getter->as_function_group(); current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-8])); } -#line 3752 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4007 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 30: -#line 603 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 31: +#line 625 "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) { @@ -3780,11 +4035,11 @@ yyreduce: current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-10])); } } -#line 3784 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4039 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 31: -#line 631 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 32: +#line 653 "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) { @@ -3821,11 +4076,11 @@ yyreduce: current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-12])); } } -#line 3825 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4080 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 32: -#line 668 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 33: +#line 690 "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) { @@ -3847,11 +4102,11 @@ yyreduce: current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-8])); } } -#line 3851 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4106 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 33: -#line 690 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 34: +#line 712 "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) { @@ -3884,11 +4139,11 @@ yyreduce: current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-12])); } } -#line 3888 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4143 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 34: -#line 723 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 35: +#line 745 "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) { @@ -3910,11 +4165,11 @@ yyreduce: current_scope->add_declaration(make_seq, global_scope, current_lexer, (yylsp[-8])); } } -#line 3914 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4169 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 35: -#line 745 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 36: +#line 767 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPExpression::Result result = (yyvsp[-4].u.expr)->evaluate(); if (result._type == CPPExpression::RT_error) { @@ -3925,11 +4180,11 @@ yyreduce: yywarning("static_assert failed: " + str.str(), (yylsp[-4])); } } -#line 3929 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4184 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 36: -#line 756 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 37: +#line 778 "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(); @@ -3939,55 +4194,55 @@ yyreduce: yywarning("static_assert failed", (yylsp[-2])); } } -#line 3943 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4198 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 37: -#line 769 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 38: +#line 791 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPScope *new_scope = new CPPScope(current_scope, CPPNameComponent("temp"), V_public); push_scope(new_scope); } -#line 3953 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4208 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 38: -#line 775 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 39: +#line 797 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { delete current_scope; pop_scope(); } -#line 3962 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 39: -#line 784 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.integer) = 0; -} -#line 3970 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4217 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 40: -#line 788 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 806 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.integer) = 0; +} +#line 4225 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 41: +#line 810 "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 3979 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 41: -#line 793 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_extern; -} -#line 3987 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4234 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 42: -#line 797 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 815 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_extern; +} +#line 4242 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 43: +#line 819 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_extern; if ((yyvsp[-1].str) == "C") { @@ -3998,108 +4253,108 @@ yyreduce: yywarning("Ignoring unknown linkage type \"" + (yyvsp[-1].str) + "\"", (yylsp[-1])); } } -#line 4002 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 43: -#line 808 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_static; -} -#line 4010 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4257 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 44: -#line 812 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 830 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_inline; + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_static; } -#line 4018 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4265 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 45: -#line 816 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 834 "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_inline; } -#line 4026 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4273 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 46: -#line 820 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 838 "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_virtual; } -#line 4034 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4281 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 47: -#line 824 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 842 "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_explicit; } -#line 4042 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4289 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 48: -#line 828 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 846 "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_register; } -#line 4050 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4297 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 49: -#line 832 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 850 "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_volatile; } -#line 4058 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4305 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 50: -#line 836 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 854 "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_mutable; } -#line 4066 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4313 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 51: -#line 840 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 858 "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_constexpr; } -#line 4074 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4321 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 52: -#line 844 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 862 "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_blocking; } -#line 4082 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4329 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 53: -#line 848 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 866 "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_extension; } -#line 4090 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4337 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 54: -#line 852 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 870 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_thread_local; +} +#line 4345 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 55: +#line 874 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // Ignore attribute specifiers for now. (yyval.u.integer) = (yyvsp[0].u.integer); } -#line 4099 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4354 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 59: -#line 870 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 60: +#line 892 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // We don't need to push/pop type, because we can't nest // type_like_declaration. @@ -4110,19 +4365,19 @@ yyreduce: } push_storage_class((yyvsp[-1].u.integer)); } -#line 4114 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 60: -#line 881 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - pop_storage_class(); -} -#line 4122 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4369 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 61: -#line 886 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 903 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + pop_storage_class(); +} +#line 4377 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 62: +#line 908 "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 @@ -4131,23 +4386,11 @@ yyreduce: current_scope->add_declaration((yyvsp[-1].u.decl), global_scope, current_lexer, (yylsp[-1])); } -#line 4135 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 62: -#line 895 "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)); - current_scope->add_declaration((yyvsp[-1].u.instance), global_scope, current_lexer, (yylsp[-1])); - (yyvsp[-1].u.instance)->set_initializer((yyvsp[0].u.expr)); - } -} -#line 4147 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4390 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 63: -#line 903 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 917 "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)); @@ -4155,11 +4398,23 @@ yyreduce: (yyvsp[-1].u.instance)->set_initializer((yyvsp[0].u.expr)); } } -#line 4159 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4402 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 65: -#line 919 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 64: +#line 925 "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)); + current_scope->add_declaration((yyvsp[-1].u.instance), global_scope, current_lexer, (yylsp[-1])); + (yyvsp[-1].u.instance)->set_initializer((yyvsp[0].u.expr)); + } +} +#line 4414 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 66: +#line 941 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if (current_storage_class & CPPInstance::SC_const) { (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); @@ -4170,11 +4425,11 @@ yyreduce: inst->set_initializer((yyvsp[0].u.expr)); current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[-1])); } -#line 4174 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4429 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 66: -#line 930 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 67: +#line 952 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if (current_storage_class & CPPInstance::SC_const) { (yyvsp[-3].u.inst_ident)->add_modifier(IIT_const); @@ -4185,11 +4440,11 @@ yyreduce: inst->set_initializer((yyvsp[-2].u.expr)); current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[-3])); } -#line 4189 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4444 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 67: -#line 945 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 68: +#line 967 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // We don't need to push/pop type, because we can't nest // multiple_var_declarations. @@ -4200,19 +4455,19 @@ yyreduce: } push_storage_class((yyvsp[-1].u.integer)); } -#line 4204 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 68: -#line 956 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - pop_storage_class(); -} -#line 4212 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4459 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 69: -#line 960 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 978 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + pop_storage_class(); +} +#line 4467 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 70: +#line 982 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if ((yyvsp[-1].u.instance) != (CPPDeclaration *)NULL) { CPPInstance *inst = (yyvsp[-1].u.instance)->as_instance(); @@ -4224,11 +4479,11 @@ yyreduce: } } } -#line 4228 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4483 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 70: -#line 975 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 71: +#line 997 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if (current_storage_class & CPPInstance::SC_const) { (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); @@ -4237,11 +4492,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 4241 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4496 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 71: -#line 984 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 72: +#line 1006 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if (current_storage_class & CPPInstance::SC_const) { (yyvsp[-3].u.inst_ident)->add_modifier(IIT_const); @@ -4250,19 +4505,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 4254 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 72: -#line 998 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - push_scope((yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope)); -} -#line 4262 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4509 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 73: -#line 1002 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1020 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + push_scope((yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope)); +} +#line 4517 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 74: +#line 1024 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type; if ((yyvsp[-5].u.identifier)->get_simple_name() == current_scope->get_simple_name() || @@ -4282,19 +4537,19 @@ yyreduce: (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-5]).file); } -#line 4286 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 74: -#line 1022 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - push_scope((yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope)); -} -#line 4294 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4541 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 75: -#line 1026 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1044 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + push_scope((yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope)); +} +#line 4549 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 76: +#line 1048 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_scope(); CPPType *type; @@ -4312,19 +4567,19 @@ yyreduce: (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-5]).file); } -#line 4316 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 76: -#line 1049 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - push_scope((yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope)); -} -#line 4324 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4571 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 77: -#line 1053 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1071 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + push_scope((yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope)); +} +#line 4579 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 78: +#line 1075 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_scope(); if ((yyvsp[-5].u.identifier)->is_scoped()) { @@ -4343,19 +4598,19 @@ yyreduce: (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-5]).file); } } -#line 4347 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 78: -#line 1079 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - push_scope((yyvsp[-2].u.inst_ident)->get_scope(current_scope, global_scope)); -} -#line 4355 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4602 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 79: -#line 1083 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1101 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + push_scope((yyvsp[-2].u.inst_ident)->get_scope(current_scope, global_scope)); +} +#line 4610 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 80: +#line 1105 "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); @@ -4369,19 +4624,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 4373 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 80: -#line 1097 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - push_scope((yyvsp[-2].u.inst_ident)->get_scope(current_scope, global_scope)); -} -#line 4381 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4628 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 81: -#line 1101 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1119 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + push_scope((yyvsp[-2].u.inst_ident)->get_scope(current_scope, global_scope)); +} +#line 4636 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 82: +#line 1123 "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); @@ -4395,21 +4650,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 4399 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4654 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 82: -#line 1117 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 83: +#line 1139 "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 4409 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4664 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 83: -#line 1123 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 84: +#line 1145 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if ((yyvsp[-7].u.identifier) != NULL) { pop_scope(); @@ -4434,21 +4689,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 4438 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4693 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 84: -#line 1148 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 85: +#line 1170 "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 4448 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4703 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 85: -#line 1154 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 86: +#line 1176 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if ((yyvsp[-8].u.identifier) != NULL) { pop_scope(); @@ -4464,11 +4719,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 4468 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4723 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 86: -#line 1174 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 87: +#line 1196 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPDeclaration *decl = (yyvsp[0].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); @@ -4478,494 +4733,557 @@ yyreduce: (yyval.u.instance) = (CPPInstance *)NULL; } } -#line 4482 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 87: -#line 1187 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.integer) = 0; -} -#line 4490 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4737 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 88: -#line 1191 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1209 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (int)CPPFunctionType::F_const_method; + (yyval.u.integer) = 0; } -#line 4498 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4745 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 89: -#line 1195 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1213 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (int)CPPFunctionType::F_noexcept; + (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_const_method; } -#line 4506 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4753 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 90: -#line 1199 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1217 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (int)CPPFunctionType::F_final; + (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_volatile_method; } -#line 4514 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4761 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 91: -#line 1203 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1221 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (int)CPPFunctionType::F_override; + (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_noexcept; } -#line 4522 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4769 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 92: -#line 1207 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1225 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - // Used for lambdas, currently ignored. - (yyval.u.integer) = 0; + (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_final; } -#line 4531 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4777 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 93: -#line 1212 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1229 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[-3].u.integer); + (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_override; } -#line 4539 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4785 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 94: -#line 1216 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1233 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[-4].u.integer); + (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_lvalue_method; } -#line 4547 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4793 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 95: -#line 1227 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1237 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "!"; + (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_rvalue_method; } -#line 4555 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4801 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 96: -#line 1231 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1241 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "~"; + // Used for lambdas, currently ignored. + (yyval.u.integer) = (yyvsp[-1].u.integer); } -#line 4563 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4810 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 97: -#line 1235 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1246 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "*"; + (yyval.u.integer) = (yyvsp[-3].u.integer); } -#line 4571 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4818 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 98: -#line 1239 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1250 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "/"; + (yyval.u.integer) = (yyvsp[-4].u.integer); } -#line 4579 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4826 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 99: -#line 1243 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1254 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "%"; + (yyval.u.integer) = (yyvsp[-5].u.integer); } -#line 4587 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4834 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 100: -#line 1247 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1265 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "+"; + (yyval.str) = "!"; } -#line 4595 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4842 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 101: -#line 1251 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1269 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "-"; + (yyval.str) = "~"; } -#line 4603 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4850 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 102: -#line 1255 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1273 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "|"; + (yyval.str) = "*"; } -#line 4611 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4858 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 103: -#line 1259 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1277 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "&"; + (yyval.str) = "/"; } -#line 4619 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4866 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 104: -#line 1263 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1281 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "^"; + (yyval.str) = "%"; } -#line 4627 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4874 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 105: -#line 1267 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1285 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "||"; + (yyval.str) = "+"; } -#line 4635 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4882 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 106: -#line 1271 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1289 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "&&"; + (yyval.str) = "-"; } -#line 4643 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4890 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 107: -#line 1275 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1293 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "=="; + (yyval.str) = "|"; } -#line 4651 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4898 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 108: -#line 1279 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1297 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "!="; + (yyval.str) = "&"; } -#line 4659 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4906 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 109: -#line 1283 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1301 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "<="; + (yyval.str) = "^"; } -#line 4667 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4914 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 110: -#line 1287 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1305 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = ">="; + (yyval.str) = "||"; } -#line 4675 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4922 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 111: -#line 1291 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1309 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "<"; + (yyval.str) = "&&"; } -#line 4683 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4930 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 112: -#line 1295 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1313 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = ">"; + (yyval.str) = "=="; } -#line 4691 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4938 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 113: -#line 1299 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1317 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "<<"; + (yyval.str) = "!="; } -#line 4699 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4946 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 114: -#line 1303 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1321 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = ">>"; + (yyval.str) = "<="; } -#line 4707 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4954 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 115: -#line 1307 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1325 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "="; + (yyval.str) = ">="; } -#line 4715 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4962 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 116: -#line 1311 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1329 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = ","; + (yyval.str) = "<"; } -#line 4723 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4970 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 117: -#line 1315 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1333 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "++"; + (yyval.str) = ">"; } -#line 4731 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4978 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 118: -#line 1319 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1337 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "--"; + (yyval.str) = "<<"; } -#line 4739 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4986 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 119: -#line 1323 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1341 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "*="; + (yyval.str) = ">>"; } -#line 4747 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 4994 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 120: -#line 1327 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1345 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "/="; + (yyval.str) = "="; } -#line 4755 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5002 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 121: -#line 1331 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1349 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "%="; + (yyval.str) = ","; } -#line 4763 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5010 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 122: -#line 1335 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1353 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "+="; + (yyval.str) = "++"; } -#line 4771 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5018 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 123: -#line 1339 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1357 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "-="; + (yyval.str) = "--"; } -#line 4779 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5026 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 124: -#line 1343 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1361 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "|="; + (yyval.str) = "*="; } -#line 4787 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5034 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 125: -#line 1347 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1365 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "&="; + (yyval.str) = "/="; } -#line 4795 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5042 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 126: -#line 1351 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1369 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "^="; + (yyval.str) = "%="; } -#line 4803 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5050 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 127: -#line 1355 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1373 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "<<="; + (yyval.str) = "+="; } -#line 4811 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5058 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 128: -#line 1359 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1377 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = ">>="; + (yyval.str) = "-="; } -#line 4819 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5066 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 129: -#line 1363 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1381 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "->"; + (yyval.str) = "|="; } -#line 4827 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5074 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 130: -#line 1367 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1385 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "[]"; + (yyval.str) = "&="; } -#line 4835 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5082 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 131: -#line 1371 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1389 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "()"; + (yyval.str) = "^="; } -#line 4843 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5090 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 132: -#line 1375 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1393 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "new"; + (yyval.str) = "<<="; } -#line 4851 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5098 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 133: -#line 1379 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1397 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.str) = "delete"; + (yyval.str) = ">>="; } -#line 4859 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5106 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 134: +#line 1401 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.str) = "->"; +} +#line 5114 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 135: +#line 1405 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.str) = "[]"; +} +#line 5122 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 136: -#line 1391 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1409 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - push_scope(new CPPTemplateScope(current_scope)); + (yyval.str) = "()"; } -#line 4867 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5130 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 137: -#line 1395 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1413 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - pop_scope(); + (yyval.str) = "new"; } -#line 4875 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5138 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 138: +#line 1417 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.str) = "delete"; +} +#line 5146 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 141: -#line 1408 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1429 "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)); + push_scope(new CPPTemplateScope(current_scope)); } -#line 4885 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5154 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 142: -#line 1414 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1433 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + pop_scope(); +} +#line 5162 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 146: +#line 1446 "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 4895 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 143: -#line 1423 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((yyvsp[0].u.identifier))); -} -#line 4903 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 144: -#line 1427 "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 4911 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 145: -#line 1431 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((yyvsp[0].u.identifier))); -} -#line 4919 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 146: -#line 1435 "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 4927 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5172 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 147: -#line 1439 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1452 "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 5182 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 150: +#line 1466 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((CPPIdentifier *)NULL)); +} +#line 5190 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 151: +#line 1470 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((yyvsp[0].u.identifier))); +} +#line 5198 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 152: +#line 1474 "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 5206 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 153: +#line 1478 "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 5216 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 154: +#line 1484 "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 5226 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 155: +#line 1490 "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 4937 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5236 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 148: -#line 1445 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 156: +#line 1496 "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 4948 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5247 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 149: -#line 1455 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 157: +#line 1503 "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 5256 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 158: +#line 1508 "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 5266 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 159: +#line 1517 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); } -#line 4956 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5274 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 150: -#line 1459 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 160: +#line 1521 "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 4965 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5283 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 151: -#line 1464 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 161: +#line 1526 "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) { @@ -4973,19 +5291,31 @@ yyreduce: } assert((yyval.u.type) != NULL); } -#line 4977 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5295 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 152: -#line 1476 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 162: +#line 1534 "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 5307 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 163: +#line 1546 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); } -#line 4985 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5315 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 153: -#line 1480 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 164: +#line 1550 "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 @@ -4999,11 +5329,11 @@ yyreduce: (yyval.u.inst_ident) = new CPPInstanceIdentifier(ident); } -#line 5003 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5333 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 154: -#line 1494 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 165: +#line 1564 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // A C++11 literal operator. if (!(yyvsp[-1].str).empty()) { @@ -5018,91 +5348,91 @@ yyreduce: (yyval.u.inst_ident) = new CPPInstanceIdentifier(ident); } -#line 5022 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5352 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 155: -#line 1509 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 166: +#line 1579 "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 5031 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5361 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 156: -#line 1514 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 167: +#line 1584 "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 5040 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5370 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 157: -#line 1519 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 168: +#line 1589 "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 5049 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5379 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 158: -#line 1524 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 169: +#line 1594 "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 5058 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5388 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 159: -#line 1529 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 170: +#line 1599 "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 5067 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5397 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 160: -#line 1534 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 171: +#line 1604 "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 5076 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5406 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 161: -#line 1539 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 172: +#line 1609 "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 5085 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5415 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 162: -#line 1544 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 173: +#line 1614 "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 5094 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5424 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 163: -#line 1549 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 174: +#line 1619 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { push_scope((yyvsp[-1].u.inst_ident)->get_scope(current_scope, global_scope)); } -#line 5102 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5432 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 164: -#line 1553 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 175: +#line 1623 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_scope(); (yyval.u.inst_ident) = (yyvsp[-5].u.inst_ident); @@ -5116,11 +5446,11 @@ yyreduce: (yyval.u.inst_ident)->add_func_modifier((yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); } } -#line 5120 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5450 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 165: -#line 1571 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 176: +#line 1641 "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 @@ -5130,721 +5460,886 @@ yyreduce: } (yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident); } -#line 5134 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5464 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 166: -#line 1581 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 177: +#line 1651 "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 5144 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5474 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 167: -#line 1591 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 178: +#line 1661 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = NULL; } -#line 5152 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5482 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 168: -#line 1595 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 179: +#line 1665 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); } -#line 5160 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5490 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 169: -#line 1599 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 180: +#line 1669 "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 5169 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 170: -#line 1608 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.param_list) = new CPPParameterList; -} -#line 5177 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 171: -#line 1612 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.param_list) = new CPPParameterList; - (yyval.u.param_list)->_includes_ellipsis = true; -} -#line 5186 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 172: -#line 1617 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.param_list) = (yyvsp[0].u.param_list); -} -#line 5194 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 173: -#line 1621 "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 5203 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 174: -#line 1626 "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 5212 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 175: -#line 1634 "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 5221 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 176: -#line 1639 "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 5230 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 177: -#line 1647 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.param_list) = new CPPParameterList; -} -#line 5238 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 178: -#line 1651 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.param_list) = new CPPParameterList; - (yyval.u.param_list)->_includes_ellipsis = true; -} -#line 5247 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 179: -#line 1656 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.param_list) = (yyvsp[0].u.param_list); -} -#line 5255 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 180: -#line 1660 "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 5264 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5499 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 181: -#line 1665 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1678 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.param_list) = new CPPParameterList; +} +#line 5507 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 182: +#line 1682 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.param_list) = new CPPParameterList; + (yyval.u.param_list)->_includes_ellipsis = true; +} +#line 5516 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 183: +#line 1687 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.param_list) = (yyvsp[0].u.param_list); +} +#line 5524 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 184: +#line 1691 "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 5533 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 185: +#line 1696 "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 5273 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5542 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 182: -#line 1673 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 186: +#line 1704 "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 5282 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5551 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 183: -#line 1678 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 187: +#line 1709 "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 5291 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 184: -#line 1686 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (CPPExpression *)NULL; -} -#line 5299 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 185: -#line 1690 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (yyvsp[0].u.expr); -} -#line 5307 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 186: -#line 1697 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (CPPExpression *)NULL; -} -#line 5315 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 187: -#line 1701 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (yyvsp[0].u.expr); -} -#line 5323 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5560 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 188: -#line 1708 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1717 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (CPPExpression *)NULL; + (yyval.u.param_list) = new CPPParameterList; } -#line 5331 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5568 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 189: -#line 1712 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1721 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (CPPExpression *)NULL; + (yyval.u.param_list) = new CPPParameterList; + (yyval.u.param_list)->_includes_ellipsis = true; } -#line 5339 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5577 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 190: -#line 1716 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1726 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (CPPExpression *)NULL; + (yyval.u.param_list) = (yyvsp[0].u.param_list); } -#line 5347 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5585 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 191: -#line 1720 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1730 "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)->_includes_ellipsis = true; } -#line 5355 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5594 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 192: -#line 1724 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1735 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::get_delete()); + (yyval.u.param_list) = (yyvsp[-1].u.param_list); + (yyval.u.param_list)->_includes_ellipsis = true; } -#line 5363 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5603 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 193: -#line 1731 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1743 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (CPPExpression *)NULL; + (yyval.u.param_list) = new CPPParameterList; + (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); } -#line 5371 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5612 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 194: -#line 1735 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1748 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (CPPExpression *)NULL; + (yyval.u.param_list) = (yyvsp[-2].u.param_list); + (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); } -#line 5379 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5621 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 195: -#line 1739 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (yyvsp[-1].u.expr); -} -#line 5387 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 196: -#line 1743 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::get_default()); -} -#line 5395 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 197: -#line 1747 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::get_delete()); -} -#line 5403 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 198: -#line 1751 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1756 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = (CPPExpression *)NULL; } -#line 5411 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5629 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 196: +#line 1760 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[0].u.expr); +} +#line 5637 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 197: +#line 1767 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (CPPExpression *)NULL; +} +#line 5645 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 198: +#line 1771 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[0].u.expr); +} +#line 5653 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 199: +#line 1778 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (CPPExpression *)NULL; +} +#line 5661 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 200: +#line 1782 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (CPPExpression *)NULL; +} +#line 5669 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 201: +#line 1786 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (CPPExpression *)NULL; +} +#line 5677 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 202: -#line 1764 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1790 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { + (yyval.u.expr) = new CPPExpression(CPPExpression::get_default()); } -#line 5418 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5685 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 203: +#line 1794 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::get_delete()); +} +#line 5693 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 204: +#line 1801 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (CPPExpression *)NULL; +} +#line 5701 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 205: +#line 1805 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (CPPExpression *)NULL; +} +#line 5709 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 206: -#line 1773 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1809 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[-1].u.expr); +} +#line 5717 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 207: +#line 1813 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::get_default()); +} +#line 5725 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 208: +#line 1817 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::get_delete()); +} +#line 5733 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 209: +#line 1821 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (CPPExpression *)NULL; +} +#line 5741 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 213: +#line 1834 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { +} +#line 5748 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 217: +#line 1843 "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 5427 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5757 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 207: -#line 1778 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 218: +#line 1848 "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 5437 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5767 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 208: -#line 1784 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 219: +#line 1854 "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 5447 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5777 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 209: -#line 1790 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 220: +#line 1860 "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 5786 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 221: +#line 1865 "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 5796 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 222: +#line 1871 "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 5806 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 223: +#line 1877 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.instance) = (yyvsp[0].u.instance); } -#line 5455 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5814 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 210: -#line 1801 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 224: +#line 1888 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.instance) = (yyvsp[0].u.instance); } -#line 5463 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5822 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 211: -#line 1805 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 225: +#line 1892 "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 5474 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 212: -#line 1815 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); -} -#line 5482 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 213: -#line 1819 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); -} -#line 5490 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 214: -#line 1823 "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 5499 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 215: -#line 1828 "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 5508 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 216: -#line 1833 "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 5517 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 217: -#line 1838 "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 5526 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 218: -#line 1843 "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 5535 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 219: -#line 1848 "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 5544 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 220: -#line 1853 "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 5553 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 221: -#line 1861 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); -} -#line 5561 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 222: -#line 1865 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); -} -#line 5569 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 223: -#line 1869 "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 5578 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 224: -#line 1874 "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 5587 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 225: -#line 1879 "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 5596 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5833 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 226: -#line 1884 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 1902 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); +} +#line 5841 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 227: +#line 1906 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); +} +#line 5849 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 228: +#line 1910 "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 5858 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 229: +#line 1915 "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 5867 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 230: +#line 1920 "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 5876 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 231: +#line 1925 "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 5605 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5885 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 227: -#line 1889 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 232: +#line 1930 "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 5614 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5894 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 228: -#line 1894 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 233: +#line 1935 "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 5623 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5903 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 229: -#line 1899 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 234: +#line 1940 "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 5632 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 5912 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 230: -#line 1904 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 235: +#line 1948 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); +} +#line 5920 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 236: +#line 1952 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); +} +#line 5928 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 237: +#line 1956 "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 5937 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 238: +#line 1961 "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 5946 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 239: +#line 1966 "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 5955 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 240: +#line 1971 "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 5964 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 241: +#line 1976 "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 5973 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 242: +#line 1981 "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 5982 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 243: +#line 1986 "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 5991 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 244: +#line 1991 "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 5642 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6001 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 231: -#line 1910 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 245: +#line 1997 "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 5651 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 232: -#line 1918 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); -} -#line 5659 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 233: -#line 1922 "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 5668 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 234: -#line 1927 "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 5677 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 235: -#line 1932 "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 5686 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 236: -#line 1937 "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 5695 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 237: -#line 1942 "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 5704 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 238: -#line 1947 "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 5713 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 239: -#line 1952 "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 5722 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 240: -#line 1960 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); -} -#line 5730 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 241: -#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 5739 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 242: -#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 5748 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 243: -#line 1974 "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 5757 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 244: -#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 5766 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 245: -#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 5775 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6010 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 246: -#line 1989 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 2005 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); + (yyval.u.inst_ident)->_packed = true; +} +#line 6019 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 247: +#line 2010 "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 6028 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 248: +#line 2015 "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 6037 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 249: +#line 2020 "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 6046 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 250: +#line 2025 "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 6055 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 251: +#line 2030 "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 6064 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 252: +#line 2035 "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 6073 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 253: +#line 2040 "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 5784 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6082 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 247: -#line 1994 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 254: +#line 2045 "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 5793 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6091 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 248: -#line 1999 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 255: +#line 2050 "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 6101 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 256: +#line 2056 "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 6110 "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((CPPIdentifier *)NULL); +} +#line 6118 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 258: +#line 2068 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); + (yyval.u.inst_ident)->_packed = true; +} +#line 6127 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 259: +#line 2073 "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 6136 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 260: +#line 2078 "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 6145 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 261: +#line 2083 "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 6154 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 262: +#line 2088 "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 6163 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 263: +#line 2093 "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 6172 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 264: +#line 2098 "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 6181 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 265: +#line 2103 "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 6190 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 266: +#line 2108 "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 6199 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 267: +#line 2116 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); +} +#line 6207 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 268: +#line 2120 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); + (yyval.u.inst_ident)->_packed = true; +} +#line 6216 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 269: +#line 2125 "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 6225 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 270: +#line 2130 "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 6234 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 271: +#line 2135 "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 6243 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 272: +#line 2140 "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 6252 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 273: +#line 2145 "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 6261 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 274: +#line 2150 "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 6270 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 275: +#line 2155 "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 6279 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 276: +#line 2160 "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 6288 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 277: +#line 2165 "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 5803 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6298 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 249: -#line 2005 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 278: +#line 2171 "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 5814 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6309 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 250: -#line 2012 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 279: +#line 2178 "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 5825 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6320 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 251: -#line 2019 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 280: +#line 2185 "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 5836 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6331 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 252: -#line 2029 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 281: +#line 2195 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); } -#line 5844 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6339 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 253: -#line 2033 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 282: +#line 2199 "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) { @@ -5852,43 +6347,43 @@ yyreduce: } assert((yyval.u.type) != NULL); } -#line 5856 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6351 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 254: -#line 2041 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 283: +#line 2207 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); } -#line 5864 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6359 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 255: -#line 2045 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 284: +#line 2211 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.struct_type)); } -#line 5872 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6367 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 256: -#line 2049 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 285: +#line 2215 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.struct_type)); } -#line 5880 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6375 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 257: -#line 2053 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 286: +#line 2219 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.enum_type)); } -#line 5888 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6383 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 258: -#line 2057 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 287: +#line 2223 "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) { @@ -5904,11 +6399,11 @@ yyreduce: (yyval.u.type) = et; } } -#line 5908 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6403 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 259: -#line 2073 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 288: +#line 2239 "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) { @@ -5924,11 +6419,11 @@ yyreduce: (yyval.u.type) = et; } } -#line 5928 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6423 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 260: -#line 2089 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 289: +#line 2255 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = (yyvsp[-1].u.expr)->determine_type(); if ((yyval.u.type) == (CPPType *)NULL) { @@ -5937,27 +6432,53 @@ yyreduce: yyerror("could not determine type of " + str.str(), (yylsp[-1])); } } -#line 5941 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6436 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 261: -#line 2098 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 290: +#line 2264 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + CPPEnumType *enum_type = (yyvsp[-1].u.type)->as_enum_type(); + if (enum_type == NULL) { + yyerror("an enumeration type is required", (yylsp[-1])); + (yyval.u.type) = (yyvsp[-1].u.type); + } else { + (yyval.u.type) = enum_type->get_underlying_type(); + } +} +#line 6450 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 291: +#line 2274 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } -#line 5949 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6458 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 262: -#line 2105 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 292: +#line 2281 "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 6470 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 293: +#line 2292 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.decl) = CPPType::new_type((yyvsp[0].u.simple_type)); } -#line 5957 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6478 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 263: -#line 2109 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 294: +#line 2296 "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) { @@ -5965,43 +6486,43 @@ yyreduce: } assert((yyval.u.decl) != NULL); } -#line 5969 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6490 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 264: -#line 2117 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 295: +#line 2304 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.decl) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); } -#line 5977 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6498 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 265: -#line 2121 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 296: +#line 2308 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.decl) = CPPType::new_type((yyvsp[0].u.struct_type)); } -#line 5985 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6506 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 266: -#line 2125 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 297: +#line 2312 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.decl) = new CPPTypeDeclaration(CPPType::new_type((yyvsp[0].u.struct_type))); } -#line 5993 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6514 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 267: -#line 2129 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 298: +#line 2316 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.decl) = new CPPTypeDeclaration(CPPType::new_type((yyvsp[0].u.enum_type))); } -#line 6001 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6522 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 268: -#line 2133 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 299: +#line 2320 "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) { @@ -6017,11 +6538,11 @@ yyreduce: (yyval.u.decl) = et; } } -#line 6021 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6542 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 269: -#line 2149 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 300: +#line 2336 "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) { @@ -6037,11 +6558,11 @@ yyreduce: (yyval.u.decl) = et; } } -#line 6041 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6562 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 270: -#line 2165 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 301: +#line 2352 "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])); @@ -6059,11 +6580,11 @@ yyreduce: (yyval.u.decl) = et; } } -#line 6063 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6584 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 271: -#line 2183 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 302: +#line 2370 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.decl) = (yyvsp[-1].u.expr)->determine_type(); if ((yyval.u.decl) == (CPPType *)NULL) { @@ -6072,27 +6593,41 @@ yyreduce: yyerror("could not determine type of " + str.str(), (yylsp[-1])); } } -#line 6076 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6597 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 272: -#line 2192 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 303: +#line 2379 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + CPPEnumType *enum_type = (yyvsp[-1].u.type)->as_enum_type(); + if (enum_type == NULL) { + yyerror("an enumeration type is required", (yylsp[-1])); + (yyval.u.decl) = (yyvsp[-1].u.type); + } else { + (yyval.u.decl) = enum_type->get_underlying_type(); + } +} +#line 6611 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 304: +#line 2389 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.decl) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } -#line 6084 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6619 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 273: -#line 2199 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 305: +#line 2396 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); } -#line 6092 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6627 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 274: -#line 2203 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 306: +#line 2400 "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) { @@ -6100,19 +6635,19 @@ yyreduce: } assert((yyval.u.type) != NULL); } -#line 6104 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6639 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 275: -#line 2211 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 307: +#line 2408 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); } -#line 6112 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6647 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 276: -#line 2215 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 308: +#line 2412 "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) { @@ -6128,11 +6663,11 @@ yyreduce: (yyval.u.type) = et; } } -#line 6132 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6667 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 277: -#line 2231 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 309: +#line 2428 "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) { @@ -6148,11 +6683,11 @@ yyreduce: (yyval.u.type) = et; } } -#line 6152 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6687 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 278: -#line 2247 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 310: +#line 2444 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = (yyvsp[-1].u.expr)->determine_type(); if ((yyval.u.type) == (CPPType *)NULL) { @@ -6161,54 +6696,85 @@ yyreduce: yyerror("could not determine type of " + str.str(), (yylsp[-1])); } } -#line 6165 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6700 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 279: -#line 2256 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 311: +#line 2453 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + CPPEnumType *enum_type = (yyvsp[-1].u.type)->as_enum_type(); + if (enum_type == NULL) { + yyerror("an enumeration type is required", (yylsp[-1])); + (yyval.u.type) = (yyvsp[-1].u.type); + } else { + (yyval.u.type) = enum_type->get_underlying_type(); + } +} +#line 6714 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 312: +#line 2463 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } -#line 6173 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6722 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 280: -#line 2263 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 313: +#line 2470 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.decl) = (yyvsp[0].u.decl); } -#line 6181 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6730 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 281: -#line 2267 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 314: +#line 2474 "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 6191 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6740 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 282: -#line 2275 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 315: +#line 2482 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); } -#line 6199 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6748 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 283: -#line 2279 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 316: +#line 2486 "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 6208 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6757 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 284: -#line 2287 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 317: +#line 2491 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); +} +#line 6765 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 318: +#line 2495 "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 6774 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 319: +#line 2503 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPVisibility starting_vis = ((yyvsp[-1].u.extension_enum) == CPPExtensionType::T_class) ? V_private : V_public; @@ -6222,22 +6788,22 @@ yyreduce: push_scope(new_scope); push_struct(st); } -#line 6226 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6792 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 285: -#line 2301 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 320: +#line 2517 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.struct_type) = current_struct; current_struct->_incomplete = false; pop_struct(); pop_scope(); } -#line 6237 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6803 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 286: -#line 2311 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 321: +#line 2527 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPVisibility starting_vis = ((yyvsp[-1].u.extension_enum) == CPPExtensionType::T_class) ? V_private : V_public; @@ -6257,253 +6823,253 @@ yyreduce: push_scope(new_scope); push_struct(st); } -#line 6261 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6827 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 287: -#line 2331 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 322: +#line 2547 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.struct_type) = current_struct; current_struct->_incomplete = false; pop_struct(); pop_scope(); } -#line 6272 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6838 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 289: -#line 2342 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 324: +#line 2558 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_struct->_final = true; } -#line 6280 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6846 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 294: -#line 2359 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 329: +#line 2575 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_struct->append_derivation((yyvsp[0].u.type), V_unknown, false); } -#line 6288 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6854 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 295: -#line 2363 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 330: +#line 2579 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_struct->append_derivation((yyvsp[0].u.type), V_public, false); } -#line 6296 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6862 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 296: -#line 2367 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 331: +#line 2583 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_struct->append_derivation((yyvsp[0].u.type), V_protected, false); } -#line 6304 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6870 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 297: -#line 2371 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 332: +#line 2587 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_struct->append_derivation((yyvsp[0].u.type), V_private, false); } -#line 6312 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6878 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 298: -#line 2375 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 333: +#line 2591 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_struct->append_derivation((yyvsp[0].u.type), V_public, true); } -#line 6320 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6886 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 299: -#line 2379 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 334: +#line 2595 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_struct->append_derivation((yyvsp[0].u.type), V_protected, true); } -#line 6328 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6894 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 300: -#line 2383 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 335: +#line 2599 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_struct->append_derivation((yyvsp[0].u.type), V_private, true); } -#line 6336 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6902 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 301: -#line 2387 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 336: +#line 2603 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_struct->append_derivation((yyvsp[0].u.type), V_public, true); } -#line 6344 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6910 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 302: -#line 2391 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 337: +#line 2607 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_struct->append_derivation((yyvsp[0].u.type), V_protected, true); } -#line 6352 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6918 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 303: -#line 2395 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 338: +#line 2611 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_struct->append_derivation((yyvsp[0].u.type), V_private, true); } -#line 6360 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6926 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 304: -#line 2402 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 339: +#line 2618 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.enum_type) = current_enum; current_enum = NULL; } -#line 6369 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6935 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 305: -#line 2410 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 340: +#line 2626 "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 6377 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6943 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 306: -#line 2414 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 341: +#line 2630 "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 6385 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6951 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 307: -#line 2418 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 342: +#line 2634 "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 6394 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6960 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 308: -#line 2423 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 343: +#line 2639 "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 6403 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6969 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 309: -#line 2431 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 344: +#line 2647 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); } -#line 6411 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6977 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 310: -#line 2435 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 345: +#line 2651 "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 6419 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6985 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 312: -#line 2443 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 347: +#line 2659 "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 6428 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 6994 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 313: -#line 2448 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 348: +#line 2664 "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 6437 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7003 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 315: -#line 2456 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 350: +#line 2672 "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 6446 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7012 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 316: -#line 2461 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 351: +#line 2677 "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 6455 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7021 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 317: -#line 2469 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 352: +#line 2685 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.extension_enum) = CPPExtensionType::T_enum; } -#line 6463 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7029 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 318: -#line 2473 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 353: +#line 2689 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.extension_enum) = CPPExtensionType::T_enum_class; } -#line 6471 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7037 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 319: -#line 2477 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 354: +#line 2693 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.extension_enum) = CPPExtensionType::T_enum_struct; } -#line 6479 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7045 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 320: -#line 2484 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 355: +#line 2700 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.extension_enum) = CPPExtensionType::T_class; } -#line 6487 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7053 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 321: -#line 2488 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 356: +#line 2704 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.extension_enum) = CPPExtensionType::T_struct; } -#line 6495 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7061 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 322: -#line 2492 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 357: +#line 2708 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.extension_enum) = CPPExtensionType::T_union; } -#line 6503 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7069 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 323: -#line 2499 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 358: +#line 2715 "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) { @@ -6521,19 +7087,19 @@ yyreduce: current_scope->define_namespace(nspace); push_scope(scope); } -#line 6525 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7091 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 324: -#line 2517 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 359: +#line 2733 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_scope(); } -#line 6533 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7099 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 325: -#line 2521 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 360: +#line 2737 "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) { @@ -6552,143 +7118,143 @@ yyreduce: current_scope->define_namespace(nspace); push_scope(scope); } -#line 6556 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7122 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 326: -#line 2540 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 361: +#line 2756 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_scope(); } -#line 6564 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7130 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 329: -#line 2549 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 364: +#line 2765 "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 6574 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7140 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 330: -#line 2555 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 365: +#line 2771 "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 6585 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7151 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 331: -#line 2562 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 366: +#line 2778 "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 6595 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7161 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 335: -#line 2577 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 370: +#line 2793 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_bool); } -#line 6603 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7169 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 336: -#line 2581 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 371: +#line 2797 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char); } -#line 6611 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7177 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 337: -#line 2585 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 372: +#line 2801 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_wchar_t); } -#line 6619 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7185 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 338: -#line 2589 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 373: +#line 2805 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char16_t); } -#line 6627 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7193 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 339: -#line 2593 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 374: +#line 2809 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char32_t); } -#line 6635 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7201 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 340: -#line 2597 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 375: +#line 2813 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_short); } -#line 6644 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7210 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 341: -#line 2602 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 376: +#line 2818 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_long); } -#line 6653 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7219 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 342: -#line 2607 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 377: +#line 2823 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_unsigned); } -#line 6662 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7228 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 343: -#line 2612 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 378: +#line 2828 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_signed); } -#line 6671 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7237 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 344: -#line 2617 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 379: +#line 2833 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int); } -#line 6679 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7245 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 345: -#line 2621 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 380: +#line 2837 "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 6688 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7254 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 346: -#line 2626 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 381: +#line 2842 "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) { @@ -6697,477 +7263,485 @@ yyreduce: (yyval.u.simple_type)->_flags |= CPPSimpleType::F_long; } } -#line 6701 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7267 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 347: -#line 2635 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 382: +#line 2851 "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 6710 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7276 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 348: -#line 2640 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 383: +#line 2856 "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 6719 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7285 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 349: -#line 2648 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 384: +#line 2864 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_float); } -#line 6727 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7293 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 350: -#line 2652 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 385: +#line 2868 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_double); } -#line 6735 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7301 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 351: -#line 2656 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 386: +#line 2872 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_double, CPPSimpleType::F_long); } -#line 6744 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7310 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 352: -#line 2664 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 387: +#line 2880 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_void); } -#line 6752 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7318 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 353: -#line 2673 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 388: +#line 2889 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_lexer->_resolve_identifiers = false; } -#line 6760 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7326 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 354: -#line 2677 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 389: +#line 2893 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_lexer->_resolve_identifiers = true; } -#line 6768 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 457: -#line 2718 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { -} -#line 6775 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 481: -#line 2727 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (CPPExpression *)NULL; -} -#line 6783 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 482: -#line 2731 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (yyvsp[0].u.expr); -} -#line 6791 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 483: -#line 2738 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (CPPExpression *)NULL; -} -#line 6799 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 484: -#line 2742 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (yyvsp[0].u.expr); -} -#line 6807 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 485: -#line 2749 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (yyvsp[0].u.expr); -} -#line 6815 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 486: -#line 2753 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(',', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 6823 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 487: -#line 2760 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (yyvsp[0].u.expr); -} -#line 6831 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 488: -#line 2764 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-2].u.type), (yyvsp[0].u.expr))); -} -#line 6839 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 489: -#line 2768 "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 6847 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 490: -#line 2772 "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 6855 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 491: -#line 2776 "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 6863 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 492: -#line 2780 "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 6871 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 493: -#line 2784 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[-1].u.type))); -} -#line 6879 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 494: -#line 2788 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[-1].u.type))); -} -#line 6887 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7334 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 495: -#line 2792 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 2936 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr)); } -#line 6895 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 496: -#line 2796 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr)); -} -#line 6903 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 497: -#line 2800 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr)); -} -#line 6911 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 498: -#line 2804 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr)); -} -#line 6919 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 499: -#line 2808 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[0].u.expr)); -} -#line 6927 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 500: -#line 2812 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr)); -} -#line 6935 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 501: -#line 2816 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 6943 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 502: -#line 2820 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 6951 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 503: -#line 2824 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 6959 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 504: -#line 2828 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 6967 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 505: -#line 2832 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 6975 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 506: -#line 2836 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 6983 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 507: -#line 2840 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 6991 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 508: -#line 2844 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 6999 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 509: -#line 2848 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7007 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 510: -#line 2852 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7015 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 511: -#line 2856 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7023 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 512: -#line 2860 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7031 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 513: -#line 2864 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7039 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 514: -#line 2868 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7047 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 515: -#line 2872 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7055 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 516: -#line 2876 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7063 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 517: -#line 2880 "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)); -} -#line 7071 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 518: -#line 2884 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); -} -#line 7079 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7341 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 519: -#line 2888 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 2945 "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) = (CPPExpression *)NULL; } -#line 7087 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7349 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 520: -#line 2892 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr)); -} -#line 7095 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 521: -#line 2896 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('.', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7103 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 522: -#line 2900 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7111 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 523: -#line 2904 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (yyvsp[-1].u.expr); -} -#line 7119 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 524: -#line 2912 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 2949 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = (yyvsp[0].u.expr); } -#line 7127 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7357 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 521: +#line 2956 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (CPPExpression *)NULL; +} +#line 7365 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 522: +#line 2960 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[0].u.expr); +} +#line 7373 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 523: +#line 2967 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[0].u.expr); +} +#line 7381 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 524: +#line 2971 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(',', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 7389 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 525: -#line 2916 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 2978 "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 7135 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7397 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 526: -#line 2920 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 2982 "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::typecast_op((yyvsp[-2].u.type), (yyvsp[0].u.expr))); } -#line 7143 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7405 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 527: -#line 2924 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 2986 "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::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_static_cast)); } -#line 7151 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7413 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 528: -#line 2928 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 2990 "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) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_dynamic_cast)); } -#line 7159 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7421 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 529: -#line 2932 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 2994 "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[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_const_cast)); } -#line 7167 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7429 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 530: -#line 2936 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 2998 "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 7437 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 531: +#line 3002 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[-1].u.type))); +} +#line 7445 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 532: +#line 3006 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[-1].u.identifier))); +} +#line 7453 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 533: +#line 3010 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[-1].u.type))); +} +#line 7461 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 534: +#line 3014 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr)); +} +#line 7469 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 535: +#line 3018 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr)); +} +#line 7477 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 536: +#line 3022 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr)); +} +#line 7485 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 537: +#line 3026 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr)); +} +#line 7493 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 538: +#line 3030 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[0].u.expr)); +} +#line 7501 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 539: +#line 3034 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr)); +} +#line 7509 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 540: +#line 3038 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 7517 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 541: +#line 3042 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 7525 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 542: +#line 3046 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 7533 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 543: +#line 3050 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 7541 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 544: +#line 3054 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 7549 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 545: +#line 3058 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 7557 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 546: +#line 3062 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 7565 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 547: +#line 3066 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 7573 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 548: +#line 3070 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 7581 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 549: +#line 3074 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 7589 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 550: +#line 3078 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 7597 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 551: +#line 3082 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 7605 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 552: +#line 3086 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 7613 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 553: +#line 3090 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 7621 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 554: +#line 3094 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 7629 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 555: +#line 3098 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 7637 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 556: +#line 3102 "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)); +} +#line 7645 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 557: +#line 3106 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); +} +#line 7653 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 558: +#line 3110 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); +} +#line 7661 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 559: +#line 3114 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr)); +} +#line 7669 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 560: +#line 3118 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('.', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 7677 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 561: +#line 3122 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 7685 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 562: +#line 3126 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[-1].u.expr); +} +#line 7693 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 563: +#line 3134 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[0].u.expr); +} +#line 7701 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 564: +#line 3138 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-2].u.type), (yyvsp[0].u.expr))); +} +#line 7709 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 565: +#line 3142 "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 7717 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 566: +#line 3146 "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 7725 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 567: +#line 3150 "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 7733 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 568: +#line 3154 "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 7741 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 569: +#line 3158 "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); @@ -7177,633 +7751,175 @@ yyreduce: assert(type != NULL); (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } -#line 7181 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7755 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 531: -#line 2946 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 570: +#line 3168 "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 7191 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7765 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 532: -#line 2952 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 571: +#line 3174 "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 7201 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7775 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 533: -#line 2958 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 572: +#line 3180 "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 7211 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7785 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 534: -#line 2964 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 573: +#line 3186 "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 7221 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7795 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 535: -#line 2970 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 574: +#line 3192 "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 7231 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7805 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 536: -#line 2976 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 575: +#line 3198 "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 7241 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7815 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 537: -#line 2982 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 576: +#line 3204 "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 7252 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7826 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 538: -#line 2989 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 577: +#line 3211 "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 7263 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7837 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 539: -#line 2996 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 578: +#line 3218 "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 7274 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7848 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 540: -#line 3003 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 579: +#line 3225 "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 7285 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7859 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 541: -#line 3010 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 580: +#line 3232 "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 7295 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7869 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 542: -#line 3016 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 581: +#line 3238 "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 7305 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 543: -#line 3022 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[-1].u.type))); -} -#line 7313 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 544: -#line 3026 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[-1].u.type))); -} -#line 7321 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 545: -#line 3030 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[0].u.type))); -} -#line 7329 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 546: -#line 3034 "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 7337 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 547: -#line 3038 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - CPPIdentifier ident(""); - ident.add_name("std"); - ident.add_name("type_info"); - CPPType *std_type_info = ident.find_type(current_scope, global_scope, false, current_lexer); - if (!std_type_info) { - yywarning("cannot use typeid before including ", (yylsp[-3])); - } - (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.type), std_type_info)); -} -#line 7352 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 548: -#line 3049 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - CPPIdentifier ident(""); - ident.add_name("std"); - ident.add_name("type_info"); - CPPType *std_type_info = ident.find_type(current_scope, global_scope, false, current_lexer); - if (!std_type_info) { - yywarning("cannot use typeid before including ", (yylsp[-3])); - } - (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.expr), std_type_info)); -} -#line 7367 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 549: -#line 3060 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr)); -} -#line 7375 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 550: -#line 3064 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr)); -} -#line 7383 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 551: -#line 3068 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr)); -} -#line 7391 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 552: -#line 3072 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr)); -} -#line 7399 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 553: -#line 3076 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[0].u.expr)); -} -#line 7407 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 554: -#line 3080 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr)); -} -#line 7415 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 555: -#line 3084 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7423 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 556: -#line 3088 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7431 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 557: -#line 3092 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7439 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 558: -#line 3096 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7447 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 559: -#line 3100 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7455 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 560: -#line 3104 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7463 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 561: -#line 3108 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7471 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 562: -#line 3112 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7479 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 563: -#line 3116 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7487 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 564: -#line 3120 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7495 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 565: -#line 3124 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7503 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 566: -#line 3128 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7511 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 567: -#line 3132 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7519 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 568: -#line 3136 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7527 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 569: -#line 3140 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('<', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7535 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 570: -#line 3144 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('>', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7543 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 571: -#line 3148 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7551 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 572: -#line 3152 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7559 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 573: -#line 3156 "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)); -} -#line 7567 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 574: -#line 3160 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); -} -#line 7575 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 575: -#line 3164 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); -} -#line 7583 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 576: -#line 3168 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr)); -} -#line 7591 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 577: -#line 3172 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('.', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7599 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 578: -#line 3176 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 7607 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 579: -#line 3180 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (yyvsp[-1].u.expr); -} -#line 7615 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 580: -#line 3187 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); -} -#line 7623 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 581: -#line 3191 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(true); -} -#line 7631 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7879 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 582: -#line 3195 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(false); -} -#line 7639 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 583: -#line 3199 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); -} -#line 7647 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 584: -#line 3203 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression((yyvsp[0].u.real)); -} -#line 7655 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 585: -#line 3207 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (yyvsp[0].u.expr); -} -#line 7663 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 586: -#line 3211 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (yyvsp[0].u.expr); -} -#line 7671 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 587: -#line 3215 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression((yyvsp[0].u.identifier), current_scope, global_scope, current_lexer); -} -#line 7679 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 588: -#line 3219 "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 7689 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 589: -#line 3225 "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 7699 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 590: -#line 3231 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr()); -} -#line 7707 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 591: -#line 3235 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = NULL; -} -#line 7715 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 592: -#line 3239 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = NULL; -} -#line 7723 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 593: -#line 3253 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (yyvsp[0].u.expr); -} -#line 7731 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 594: -#line 3257 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-2].u.type), (yyvsp[0].u.expr))); -} -#line 7739 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 595: -#line 3261 "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 7747 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 596: -#line 3265 "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 7755 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 597: -#line 3269 "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 7763 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 598: -#line 3273 "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 7771 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 599: -#line 3277 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3244 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[-1].u.type))); } -#line 7779 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7887 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 600: -#line 3281 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 583: +#line 3248 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[-1].u.identifier))); +} +#line 7895 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 584: +#line 3252 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[-1].u.type))); } -#line 7787 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7903 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 601: -#line 3285 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 585: +#line 3256 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[0].u.type))); } -#line 7795 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7911 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 602: -#line 3289 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 586: +#line 3260 "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 7803 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7919 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 603: -#line 3293 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 587: +#line 3264 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPIdentifier ident(""); ident.add_name("std"); @@ -7814,11 +7930,11 @@ yyreduce: } (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.type), std_type_info)); } -#line 7818 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7934 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 604: -#line 3304 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 588: +#line 3275 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPIdentifier ident(""); ident.add_name("std"); @@ -7829,343 +7945,953 @@ yyreduce: } (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.expr), std_type_info)); } -#line 7833 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7949 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 605: -#line 3315 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 589: +#line 3286 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr)); } -#line 7841 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7957 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 606: -#line 3319 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 590: +#line 3290 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr)); } -#line 7849 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7965 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 607: -#line 3323 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 591: +#line 3294 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr)); } -#line 7857 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7973 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 608: -#line 3327 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 592: +#line 3298 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr)); } -#line 7865 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7981 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 609: -#line 3331 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 593: +#line 3302 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[0].u.expr)); +} +#line 7989 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 594: +#line 3306 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr)); } -#line 7873 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 7997 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 610: -#line 3335 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 595: +#line 3310 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7881 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8005 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 611: -#line 3339 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 596: +#line 3314 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7889 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8013 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 612: -#line 3343 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 597: +#line 3318 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7897 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8021 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 613: -#line 3347 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 598: +#line 3322 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7905 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8029 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 614: -#line 3351 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 599: +#line 3326 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7913 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8037 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 615: -#line 3355 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 600: +#line 3330 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7921 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8045 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 616: -#line 3359 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 601: +#line 3334 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7929 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8053 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 617: -#line 3363 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 602: +#line 3338 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7937 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8061 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 618: -#line 3367 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 603: +#line 3342 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7945 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8069 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 619: -#line 3371 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 604: +#line 3346 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7953 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8077 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 620: -#line 3375 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 605: +#line 3350 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7961 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8085 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 621: -#line 3379 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 606: +#line 3354 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7969 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8093 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 622: -#line 3383 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 607: +#line 3358 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7977 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8101 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 623: -#line 3387 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 608: +#line 3362 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7985 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8109 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 624: -#line 3391 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 609: +#line 3366 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression('<', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 7993 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8117 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 625: -#line 3395 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 610: +#line 3370 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression('>', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8001 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8125 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 626: -#line 3399 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 611: +#line 3374 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8009 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8133 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 627: -#line 3403 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 612: +#line 3378 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } -#line 8017 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8141 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 628: -#line 3407 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 613: +#line 3382 "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)); } -#line 8025 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8149 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 629: -#line 3411 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 614: +#line 3386 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } -#line 8033 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 630: -#line 3415 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); -} -#line 8041 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 631: -#line 3419 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr)); -} -#line 8049 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 632: -#line 3423 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression('.', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 8057 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 633: -#line 3427 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); -} -#line 8065 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 634: -#line 3431 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (yyvsp[-1].u.expr); -} -#line 8073 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 635: -#line 3438 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); -} -#line 8081 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 636: -#line 3442 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(true); -} -#line 8089 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 637: -#line 3446 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(false); -} -#line 8097 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 638: -#line 3450 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); -} -#line 8105 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 639: -#line 3454 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression((yyvsp[0].u.real)); -} -#line 8113 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 640: -#line 3458 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (yyvsp[0].u.expr); -} -#line 8121 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 641: -#line 3462 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (yyvsp[0].u.expr); -} -#line 8129 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 642: -#line 3466 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression((yyvsp[0].u.identifier), current_scope, global_scope, current_lexer); -} -#line 8137 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 643: -#line 3470 "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 8147 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 644: -#line 3476 "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 8157 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 645: -#line 3482 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 615: +#line 3390 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr()); + (yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } #line 8165 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; + case 616: +#line 3394 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr)); +} +#line 8173 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 617: +#line 3398 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('.', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8181 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 618: +#line 3402 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8189 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 619: +#line 3406 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[-1].u.expr); +} +#line 8197 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 620: +#line 3413 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); +} +#line 8205 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 621: +#line 3417 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(true); +} +#line 8213 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 622: +#line 3421 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(false); +} +#line 8221 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 623: +#line 3425 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); +} +#line 8229 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 624: +#line 3429 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.real)); +} +#line 8237 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 625: +#line 3433 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[0].u.expr); +} +#line 8245 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 626: +#line 3437 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[0].u.expr); +} +#line 8253 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 627: +#line 3441 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.identifier), current_scope, global_scope, current_lexer); +} +#line 8261 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 628: +#line 3445 "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 8271 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 629: +#line 3451 "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 8281 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 630: +#line 3457 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr()); +} +#line 8289 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 631: +#line 3461 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = NULL; +} +#line 8297 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 632: +#line 3465 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = NULL; +} +#line 8305 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 633: +#line 3469 "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 8313 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 634: +#line 3473 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_ABSTRACT, (yyvsp[-1].u.type))); +} +#line 8321 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 635: +#line 3477 "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 8329 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 636: +#line 3481 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CLASS, (yyvsp[-1].u.type))); +} +#line 8337 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 637: +#line 3485 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CONSTRUCTIBLE, (yyvsp[-1].u.type))); +} +#line 8345 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 638: +#line 3489 "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))); +} +#line 8353 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 639: +#line 3493 "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))); +} +#line 8361 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 640: +#line 3497 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_DESTRUCTIBLE, (yyvsp[-1].u.type))); +} +#line 8369 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 641: +#line 3501 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_EMPTY, (yyvsp[-1].u.type))); +} +#line 8377 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 642: +#line 3505 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_ENUM, (yyvsp[-1].u.type))); +} +#line 8385 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 643: +#line 3509 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_FINAL, (yyvsp[-1].u.type))); +} +#line 8393 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 644: +#line 3513 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_FUNDAMENTAL, (yyvsp[-1].u.type))); +} +#line 8401 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 645: +#line 3517 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_POD, (yyvsp[-1].u.type))); +} +#line 8409 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 646: +#line 3521 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_POLYMORPHIC, (yyvsp[-1].u.type))); +} +#line 8417 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 647: +#line 3525 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_STANDARD_LAYOUT, (yyvsp[-1].u.type))); +} +#line 8425 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 648: +#line 3529 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_TRIVIAL, (yyvsp[-1].u.type))); +} +#line 8433 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 649: +#line 3533 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_UNION, (yyvsp[-1].u.type))); +} +#line 8441 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 650: +#line 3547 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[0].u.expr); +} +#line 8449 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 651: +#line 3551 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-2].u.type), (yyvsp[0].u.expr))); +} +#line 8457 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 652: +#line 3555 "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 8465 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + case 653: -#line 3503 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +#line 3559 "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 8473 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 654: +#line 3563 "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 8481 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 655: +#line 3567 "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 8489 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 656: +#line 3571 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[-1].u.type))); +} +#line 8497 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 657: +#line 3575 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[-1].u.identifier))); +} +#line 8505 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 658: +#line 3579 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[-1].u.type))); +} +#line 8513 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 659: +#line 3583 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[0].u.type))); +} +#line 8521 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 660: +#line 3587 "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 8529 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 661: +#line 3591 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + CPPIdentifier ident(""); + ident.add_name("std"); + ident.add_name("type_info"); + CPPType *std_type_info = ident.find_type(current_scope, global_scope, false, current_lexer); + if (!std_type_info) { + yywarning("cannot use typeid before including ", (yylsp[-3])); + } + (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.type), std_type_info)); +} +#line 8544 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 662: +#line 3602 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + CPPIdentifier ident(""); + ident.add_name("std"); + ident.add_name("type_info"); + CPPType *std_type_info = ident.find_type(current_scope, global_scope, false, current_lexer); + if (!std_type_info) { + yywarning("cannot use typeid before including ", (yylsp[-3])); + } + (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.expr), std_type_info)); +} +#line 8559 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 663: +#line 3613 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr)); +} +#line 8567 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 664: +#line 3617 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr)); +} +#line 8575 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 665: +#line 3621 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr)); +} +#line 8583 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 666: +#line 3625 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr)); +} +#line 8591 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 667: +#line 3629 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr)); +} +#line 8599 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 668: +#line 3633 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8607 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 669: +#line 3637 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8615 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 670: +#line 3641 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8623 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 671: +#line 3645 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8631 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 672: +#line 3649 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8639 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 673: +#line 3653 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8647 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 674: +#line 3657 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8655 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 675: +#line 3661 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8663 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 676: +#line 3665 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8671 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 677: +#line 3669 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8679 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 678: +#line 3673 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8687 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 679: +#line 3677 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8695 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 680: +#line 3681 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8703 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 681: +#line 3685 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8711 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 682: +#line 3689 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('<', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8719 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 683: +#line 3693 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('>', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8727 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 684: +#line 3697 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8735 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 685: +#line 3701 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8743 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 686: +#line 3705 "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)); +} +#line 8751 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 687: +#line 3709 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); +} +#line 8759 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 688: +#line 3713 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); +} +#line 8767 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 689: +#line 3717 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr)); +} +#line 8775 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 690: +#line 3721 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('.', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8783 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 691: +#line 3725 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8791 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 692: +#line 3729 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[-1].u.expr); +} +#line 8799 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 693: +#line 3736 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); +} +#line 8807 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 694: +#line 3740 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(true); +} +#line 8815 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 695: +#line 3744 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(false); +} +#line 8823 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 696: +#line 3748 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); +} +#line 8831 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 697: +#line 3752 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.real)); +} +#line 8839 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 698: +#line 3756 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[0].u.expr); +} +#line 8847 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 699: +#line 3760 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[0].u.expr); +} +#line 8855 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 700: +#line 3764 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.identifier), current_scope, global_scope, current_lexer); +} +#line 8863 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 701: +#line 3768 "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 8873 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 702: +#line 3774 "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 8883 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 703: +#line 3780 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr()); +} +#line 8891 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 711: +#line 3801 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, true); if (type == NULL) { @@ -8173,11 +8899,11 @@ yyreduce: } (yyval.u.type) = type; } -#line 8177 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8903 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 654: -#line 3511 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 712: +#line 3809 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, true, current_lexer); if (type == NULL) { @@ -8185,143 +8911,169 @@ yyreduce: } (yyval.u.type) = type; } -#line 8189 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8915 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 655: -#line 3519 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 713: +#line 3817 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); } -#line 8197 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8923 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 656: -#line 3547 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 714: +#line 3821 "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 8933 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 715: +#line 3851 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.identifier) = (yyvsp[0].u.identifier); } -#line 8205 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8941 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 657: -#line 3551 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 716: +#line 3855 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.identifier) = (yyvsp[0].u.identifier); } -#line 8213 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8949 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 658: -#line 3555 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 717: +#line 3859 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.identifier) = (yyvsp[0].u.identifier); +} +#line 8957 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 718: +#line 3863 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.identifier) = new CPPIdentifier("final", (yylsp[0])); } -#line 8221 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8965 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 659: -#line 3559 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 719: +#line 3867 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.identifier) = new CPPIdentifier("override", (yylsp[0])); } -#line 8229 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8973 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 660: -#line 3563 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 720: +#line 3871 "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 8239 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8983 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 661: -#line 3569 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 721: +#line 3877 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.identifier) = new CPPIdentifier("float", (yylsp[0])); } -#line 8247 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8991 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 662: -#line 3573 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 722: +#line 3881 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.identifier) = new CPPIdentifier("public", (yylsp[0])); } -#line 8255 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 8999 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 663: -#line 3577 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 723: +#line 3885 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.identifier) = new CPPIdentifier("private", (yylsp[0])); } -#line 8263 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9007 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 664: -#line 3581 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 724: +#line 3889 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.identifier) = new CPPIdentifier("static", (yylsp[0])); } -#line 8271 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9015 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 665: -#line 3592 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 725: +#line 3900 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.identifier) = (yyvsp[0].u.identifier); } -#line 8279 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9023 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 666: -#line 3596 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 726: +#line 3904 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.identifier) = (yyvsp[0].u.identifier); } -#line 8287 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9031 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 667: -#line 3600 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 727: +#line 3908 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.identifier) = (yyvsp[0].u.identifier); +} +#line 9039 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 728: +#line 3912 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.identifier) = new CPPIdentifier("override", (yylsp[0])); } -#line 8295 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9047 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 668: -#line 3608 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 729: +#line 3920 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression((yyvsp[0].str)); } -#line 8303 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9055 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 669: -#line 3612 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 730: +#line 3924 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = (yyvsp[0].u.expr); } -#line 8311 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9063 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 670: -#line 3616 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 731: +#line 3928 "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 8321 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9073 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 671: -#line 3622 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 732: +#line 3934 "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); @@ -8330,11 +9082,11 @@ yyreduce: } (yyval.u.expr)->_str += (yyvsp[0].u.expr)->_str; } -#line 8334 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9086 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; -#line 8338 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +#line 9090 "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.h.prebuilt b/dtool/src/cppparser/cppBison.h.prebuilt index 412b128300..223bfdf123 100644 --- a/dtool/src/cppparser/cppBison.h.prebuilt +++ b/dtool/src/cppparser/cppBison.h.prebuilt @@ -54,120 +54,138 @@ extern int cppyydebug; CUSTOM_LITERAL = 264, IDENTIFIER = 265, TYPENAME_IDENTIFIER = 266, - SCOPING = 267, - TYPEDEFNAME = 268, - ELLIPSIS = 269, - OROR = 270, - ANDAND = 271, - EQCOMPARE = 272, - NECOMPARE = 273, - LECOMPARE = 274, - GECOMPARE = 275, - LSHIFT = 276, - RSHIFT = 277, - POINTSAT_STAR = 278, - DOT_STAR = 279, - UNARY = 280, - UNARY_NOT = 281, - UNARY_NEGATE = 282, - UNARY_MINUS = 283, - UNARY_PLUS = 284, - UNARY_STAR = 285, - UNARY_REF = 286, - POINTSAT = 287, - SCOPE = 288, - PLUSPLUS = 289, - MINUSMINUS = 290, - TIMESEQUAL = 291, - DIVIDEEQUAL = 292, - MODEQUAL = 293, - PLUSEQUAL = 294, - MINUSEQUAL = 295, - OREQUAL = 296, - ANDEQUAL = 297, - XOREQUAL = 298, - LSHIFTEQUAL = 299, - RSHIFTEQUAL = 300, - KW_ALIGNAS = 301, - KW_ALIGNOF = 302, - KW_AUTO = 303, - KW_BEGIN_PUBLISH = 304, - KW_BLOCKING = 305, - KW_BOOL = 306, - KW_CATCH = 307, - KW_CHAR = 308, - KW_CHAR16_T = 309, - KW_CHAR32_T = 310, - KW_CLASS = 311, - KW_CONST = 312, - KW_CONSTEXPR = 313, - KW_CONST_CAST = 314, - KW_DECLTYPE = 315, - KW_DEFAULT = 316, - KW_DELETE = 317, - KW_DOUBLE = 318, - KW_DYNAMIC_CAST = 319, - KW_ELSE = 320, - KW_END_PUBLISH = 321, - KW_ENUM = 322, - KW_EXTENSION = 323, - KW_EXTERN = 324, - KW_EXPLICIT = 325, - KW_PUBLISHED = 326, - KW_FALSE = 327, - KW_FINAL = 328, - KW_FLOAT = 329, - KW_FRIEND = 330, - KW_FOR = 331, - KW_GOTO = 332, - KW_IF = 333, - KW_INLINE = 334, - KW_INT = 335, - KW_LONG = 336, - KW_MAKE_MAP_PROPERTY = 337, - KW_MAKE_PROPERTY = 338, - KW_MAKE_PROPERTY2 = 339, - KW_MAKE_SEQ = 340, - KW_MAKE_SEQ_PROPERTY = 341, - KW_MUTABLE = 342, - KW_NAMESPACE = 343, - KW_NEW = 344, - KW_NOEXCEPT = 345, - KW_NULLPTR = 346, - KW_OPERATOR = 347, - KW_OVERRIDE = 348, - KW_PRIVATE = 349, - KW_PROTECTED = 350, - KW_PUBLIC = 351, - KW_REGISTER = 352, - KW_REINTERPRET_CAST = 353, - KW_RETURN = 354, - KW_SHORT = 355, - KW_SIGNED = 356, - KW_SIZEOF = 357, - KW_STATIC = 358, - KW_STATIC_ASSERT = 359, - KW_STATIC_CAST = 360, - KW_STRUCT = 361, - KW_TEMPLATE = 362, - KW_THREAD_LOCAL = 363, - KW_THROW = 364, - KW_TRUE = 365, - KW_TRY = 366, - KW_TYPEDEF = 367, - KW_TYPEID = 368, - KW_TYPENAME = 369, - KW_UNION = 370, - KW_UNSIGNED = 371, - KW_USING = 372, - KW_VIRTUAL = 373, - KW_VOID = 374, - KW_VOLATILE = 375, - KW_WCHAR_T = 376, - KW_WHILE = 377, - START_CPP = 378, - START_CONST_EXPR = 379, - START_TYPE = 380 + TYPEPACK_IDENTIFIER = 267, + SCOPING = 268, + TYPEDEFNAME = 269, + ELLIPSIS = 270, + OROR = 271, + ANDAND = 272, + EQCOMPARE = 273, + NECOMPARE = 274, + LECOMPARE = 275, + GECOMPARE = 276, + LSHIFT = 277, + RSHIFT = 278, + POINTSAT_STAR = 279, + DOT_STAR = 280, + UNARY = 281, + UNARY_NOT = 282, + UNARY_NEGATE = 283, + UNARY_MINUS = 284, + UNARY_PLUS = 285, + UNARY_STAR = 286, + UNARY_REF = 287, + POINTSAT = 288, + SCOPE = 289, + PLUSPLUS = 290, + MINUSMINUS = 291, + TIMESEQUAL = 292, + DIVIDEEQUAL = 293, + MODEQUAL = 294, + PLUSEQUAL = 295, + MINUSEQUAL = 296, + OREQUAL = 297, + ANDEQUAL = 298, + XOREQUAL = 299, + LSHIFTEQUAL = 300, + RSHIFTEQUAL = 301, + KW_ALIGNAS = 302, + KW_ALIGNOF = 303, + KW_AUTO = 304, + KW_BEGIN_PUBLISH = 305, + KW_BLOCKING = 306, + KW_BOOL = 307, + KW_CATCH = 308, + KW_CHAR = 309, + KW_CHAR16_T = 310, + KW_CHAR32_T = 311, + KW_CLASS = 312, + KW_CONST = 313, + KW_CONSTEXPR = 314, + KW_CONST_CAST = 315, + KW_DECLTYPE = 316, + KW_DEFAULT = 317, + KW_DELETE = 318, + KW_DOUBLE = 319, + KW_DYNAMIC_CAST = 320, + KW_ELSE = 321, + KW_END_PUBLISH = 322, + KW_ENUM = 323, + KW_EXTENSION = 324, + KW_EXTERN = 325, + KW_EXPLICIT = 326, + KW_PUBLISHED = 327, + KW_FALSE = 328, + KW_FINAL = 329, + KW_FLOAT = 330, + KW_FRIEND = 331, + KW_FOR = 332, + KW_GOTO = 333, + KW_HAS_VIRTUAL_DESTRUCTOR = 334, + KW_IF = 335, + KW_INLINE = 336, + KW_INT = 337, + KW_IS_ABSTRACT = 338, + KW_IS_BASE_OF = 339, + KW_IS_CLASS = 340, + KW_IS_CONSTRUCTIBLE = 341, + KW_IS_CONVERTIBLE_TO = 342, + KW_IS_DESTRUCTIBLE = 343, + KW_IS_EMPTY = 344, + KW_IS_ENUM = 345, + KW_IS_FINAL = 346, + KW_IS_FUNDAMENTAL = 347, + KW_IS_POD = 348, + KW_IS_POLYMORPHIC = 349, + KW_IS_STANDARD_LAYOUT = 350, + KW_IS_TRIVIAL = 351, + KW_IS_UNION = 352, + KW_LONG = 353, + KW_MAKE_MAP_PROPERTY = 354, + KW_MAKE_PROPERTY = 355, + KW_MAKE_PROPERTY2 = 356, + KW_MAKE_SEQ = 357, + KW_MAKE_SEQ_PROPERTY = 358, + KW_MUTABLE = 359, + KW_NAMESPACE = 360, + KW_NEW = 361, + KW_NOEXCEPT = 362, + KW_NULLPTR = 363, + KW_OPERATOR = 364, + KW_OVERRIDE = 365, + KW_PRIVATE = 366, + KW_PROTECTED = 367, + KW_PUBLIC = 368, + KW_REGISTER = 369, + KW_REINTERPRET_CAST = 370, + KW_RETURN = 371, + KW_SHORT = 372, + KW_SIGNED = 373, + KW_SIZEOF = 374, + KW_STATIC = 375, + KW_STATIC_ASSERT = 376, + KW_STATIC_CAST = 377, + KW_STRUCT = 378, + KW_TEMPLATE = 379, + KW_THREAD_LOCAL = 380, + KW_THROW = 381, + KW_TRUE = 382, + KW_TRY = 383, + KW_TYPEDEF = 384, + KW_TYPEID = 385, + KW_TYPENAME = 386, + KW_UNDERLYING_TYPE = 387, + KW_UNION = 388, + KW_UNSIGNED = 389, + KW_USING = 390, + KW_VIRTUAL = 391, + KW_VOID = 392, + KW_VOLATILE = 393, + KW_WCHAR_T = 394, + KW_WHILE = 395, + START_CPP = 396, + START_CONST_EXPR = 397, + START_TYPE = 398 }; #endif /* Tokens. */ @@ -180,120 +198,138 @@ extern int cppyydebug; #define CUSTOM_LITERAL 264 #define IDENTIFIER 265 #define TYPENAME_IDENTIFIER 266 -#define SCOPING 267 -#define TYPEDEFNAME 268 -#define ELLIPSIS 269 -#define OROR 270 -#define ANDAND 271 -#define EQCOMPARE 272 -#define NECOMPARE 273 -#define LECOMPARE 274 -#define GECOMPARE 275 -#define LSHIFT 276 -#define RSHIFT 277 -#define POINTSAT_STAR 278 -#define DOT_STAR 279 -#define UNARY 280 -#define UNARY_NOT 281 -#define UNARY_NEGATE 282 -#define UNARY_MINUS 283 -#define UNARY_PLUS 284 -#define UNARY_STAR 285 -#define UNARY_REF 286 -#define POINTSAT 287 -#define SCOPE 288 -#define PLUSPLUS 289 -#define MINUSMINUS 290 -#define TIMESEQUAL 291 -#define DIVIDEEQUAL 292 -#define MODEQUAL 293 -#define PLUSEQUAL 294 -#define MINUSEQUAL 295 -#define OREQUAL 296 -#define ANDEQUAL 297 -#define XOREQUAL 298 -#define LSHIFTEQUAL 299 -#define RSHIFTEQUAL 300 -#define KW_ALIGNAS 301 -#define KW_ALIGNOF 302 -#define KW_AUTO 303 -#define KW_BEGIN_PUBLISH 304 -#define KW_BLOCKING 305 -#define KW_BOOL 306 -#define KW_CATCH 307 -#define KW_CHAR 308 -#define KW_CHAR16_T 309 -#define KW_CHAR32_T 310 -#define KW_CLASS 311 -#define KW_CONST 312 -#define KW_CONSTEXPR 313 -#define KW_CONST_CAST 314 -#define KW_DECLTYPE 315 -#define KW_DEFAULT 316 -#define KW_DELETE 317 -#define KW_DOUBLE 318 -#define KW_DYNAMIC_CAST 319 -#define KW_ELSE 320 -#define KW_END_PUBLISH 321 -#define KW_ENUM 322 -#define KW_EXTENSION 323 -#define KW_EXTERN 324 -#define KW_EXPLICIT 325 -#define KW_PUBLISHED 326 -#define KW_FALSE 327 -#define KW_FINAL 328 -#define KW_FLOAT 329 -#define KW_FRIEND 330 -#define KW_FOR 331 -#define KW_GOTO 332 -#define KW_IF 333 -#define KW_INLINE 334 -#define KW_INT 335 -#define KW_LONG 336 -#define KW_MAKE_MAP_PROPERTY 337 -#define KW_MAKE_PROPERTY 338 -#define KW_MAKE_PROPERTY2 339 -#define KW_MAKE_SEQ 340 -#define KW_MAKE_SEQ_PROPERTY 341 -#define KW_MUTABLE 342 -#define KW_NAMESPACE 343 -#define KW_NEW 344 -#define KW_NOEXCEPT 345 -#define KW_NULLPTR 346 -#define KW_OPERATOR 347 -#define KW_OVERRIDE 348 -#define KW_PRIVATE 349 -#define KW_PROTECTED 350 -#define KW_PUBLIC 351 -#define KW_REGISTER 352 -#define KW_REINTERPRET_CAST 353 -#define KW_RETURN 354 -#define KW_SHORT 355 -#define KW_SIGNED 356 -#define KW_SIZEOF 357 -#define KW_STATIC 358 -#define KW_STATIC_ASSERT 359 -#define KW_STATIC_CAST 360 -#define KW_STRUCT 361 -#define KW_TEMPLATE 362 -#define KW_THREAD_LOCAL 363 -#define KW_THROW 364 -#define KW_TRUE 365 -#define KW_TRY 366 -#define KW_TYPEDEF 367 -#define KW_TYPEID 368 -#define KW_TYPENAME 369 -#define KW_UNION 370 -#define KW_UNSIGNED 371 -#define KW_USING 372 -#define KW_VIRTUAL 373 -#define KW_VOID 374 -#define KW_VOLATILE 375 -#define KW_WCHAR_T 376 -#define KW_WHILE 377 -#define START_CPP 378 -#define START_CONST_EXPR 379 -#define START_TYPE 380 +#define TYPEPACK_IDENTIFIER 267 +#define SCOPING 268 +#define TYPEDEFNAME 269 +#define ELLIPSIS 270 +#define OROR 271 +#define ANDAND 272 +#define EQCOMPARE 273 +#define NECOMPARE 274 +#define LECOMPARE 275 +#define GECOMPARE 276 +#define LSHIFT 277 +#define RSHIFT 278 +#define POINTSAT_STAR 279 +#define DOT_STAR 280 +#define UNARY 281 +#define UNARY_NOT 282 +#define UNARY_NEGATE 283 +#define UNARY_MINUS 284 +#define UNARY_PLUS 285 +#define UNARY_STAR 286 +#define UNARY_REF 287 +#define POINTSAT 288 +#define SCOPE 289 +#define PLUSPLUS 290 +#define MINUSMINUS 291 +#define TIMESEQUAL 292 +#define DIVIDEEQUAL 293 +#define MODEQUAL 294 +#define PLUSEQUAL 295 +#define MINUSEQUAL 296 +#define OREQUAL 297 +#define ANDEQUAL 298 +#define XOREQUAL 299 +#define LSHIFTEQUAL 300 +#define RSHIFTEQUAL 301 +#define KW_ALIGNAS 302 +#define KW_ALIGNOF 303 +#define KW_AUTO 304 +#define KW_BEGIN_PUBLISH 305 +#define KW_BLOCKING 306 +#define KW_BOOL 307 +#define KW_CATCH 308 +#define KW_CHAR 309 +#define KW_CHAR16_T 310 +#define KW_CHAR32_T 311 +#define KW_CLASS 312 +#define KW_CONST 313 +#define KW_CONSTEXPR 314 +#define KW_CONST_CAST 315 +#define KW_DECLTYPE 316 +#define KW_DEFAULT 317 +#define KW_DELETE 318 +#define KW_DOUBLE 319 +#define KW_DYNAMIC_CAST 320 +#define KW_ELSE 321 +#define KW_END_PUBLISH 322 +#define KW_ENUM 323 +#define KW_EXTENSION 324 +#define KW_EXTERN 325 +#define KW_EXPLICIT 326 +#define KW_PUBLISHED 327 +#define KW_FALSE 328 +#define KW_FINAL 329 +#define KW_FLOAT 330 +#define KW_FRIEND 331 +#define KW_FOR 332 +#define KW_GOTO 333 +#define KW_HAS_VIRTUAL_DESTRUCTOR 334 +#define KW_IF 335 +#define KW_INLINE 336 +#define KW_INT 337 +#define KW_IS_ABSTRACT 338 +#define KW_IS_BASE_OF 339 +#define KW_IS_CLASS 340 +#define KW_IS_CONSTRUCTIBLE 341 +#define KW_IS_CONVERTIBLE_TO 342 +#define KW_IS_DESTRUCTIBLE 343 +#define KW_IS_EMPTY 344 +#define KW_IS_ENUM 345 +#define KW_IS_FINAL 346 +#define KW_IS_FUNDAMENTAL 347 +#define KW_IS_POD 348 +#define KW_IS_POLYMORPHIC 349 +#define KW_IS_STANDARD_LAYOUT 350 +#define KW_IS_TRIVIAL 351 +#define KW_IS_UNION 352 +#define KW_LONG 353 +#define KW_MAKE_MAP_PROPERTY 354 +#define KW_MAKE_PROPERTY 355 +#define KW_MAKE_PROPERTY2 356 +#define KW_MAKE_SEQ 357 +#define KW_MAKE_SEQ_PROPERTY 358 +#define KW_MUTABLE 359 +#define KW_NAMESPACE 360 +#define KW_NEW 361 +#define KW_NOEXCEPT 362 +#define KW_NULLPTR 363 +#define KW_OPERATOR 364 +#define KW_OVERRIDE 365 +#define KW_PRIVATE 366 +#define KW_PROTECTED 367 +#define KW_PUBLIC 368 +#define KW_REGISTER 369 +#define KW_REINTERPRET_CAST 370 +#define KW_RETURN 371 +#define KW_SHORT 372 +#define KW_SIGNED 373 +#define KW_SIZEOF 374 +#define KW_STATIC 375 +#define KW_STATIC_ASSERT 376 +#define KW_STATIC_CAST 377 +#define KW_STRUCT 378 +#define KW_TEMPLATE 379 +#define KW_THREAD_LOCAL 380 +#define KW_THROW 381 +#define KW_TRUE 382 +#define KW_TRY 383 +#define KW_TYPEDEF 384 +#define KW_TYPEID 385 +#define KW_TYPENAME 386 +#define KW_UNDERLYING_TYPE 387 +#define KW_UNION 388 +#define KW_UNSIGNED 389 +#define KW_USING 390 +#define KW_VIRTUAL 391 +#define KW_VOID 392 +#define KW_VOLATILE 393 +#define KW_WCHAR_T 394 +#define KW_WHILE 395 +#define START_CPP 396 +#define START_CONST_EXPR 397 +#define START_TYPE 398 /* Value type. */ diff --git a/dtool/src/cppparser/cppBison.yxx b/dtool/src/cppparser/cppBison.yxx index d2d9da8458..f5200316d0 100644 --- a/dtool/src/cppparser/cppBison.yxx +++ b/dtool/src/cppparser/cppBison.yxx @@ -212,7 +212,7 @@ pop_struct() { %token CHAR_TOK %token SIMPLE_STRING SIMPLE_IDENTIFIER %token STRING_LITERAL CUSTOM_LITERAL -%token IDENTIFIER TYPENAME_IDENTIFIER SCOPING +%token IDENTIFIER TYPENAME_IDENTIFIER TYPEPACK_IDENTIFIER SCOPING %token TYPEDEFNAME %token ELLIPSIS @@ -280,9 +280,25 @@ pop_struct() { %token KW_FRIEND %token KW_FOR %token KW_GOTO +%token KW_HAS_VIRTUAL_DESTRUCTOR %token KW_IF %token KW_INLINE %token KW_INT +%token KW_IS_ABSTRACT +%token KW_IS_BASE_OF +%token KW_IS_CLASS +%token KW_IS_CONSTRUCTIBLE +%token KW_IS_CONVERTIBLE_TO +%token KW_IS_DESTRUCTIBLE +%token KW_IS_EMPTY +%token KW_IS_ENUM +%token KW_IS_FINAL +%token KW_IS_FUNDAMENTAL +%token KW_IS_POD +%token KW_IS_POLYMORPHIC +%token KW_IS_STANDARD_LAYOUT +%token KW_IS_TRIVIAL +%token KW_IS_UNION %token KW_LONG %token KW_MAKE_MAP_PROPERTY %token KW_MAKE_PROPERTY @@ -317,6 +333,7 @@ pop_struct() { %token KW_TYPEDEF %token KW_TYPEID %token KW_TYPENAME +%token KW_UNDERLYING_TYPE %token KW_UNION %token KW_UNSIGNED %token KW_USING @@ -354,9 +371,10 @@ pop_struct() { %type formal_parameter %type not_paren_formal_parameter_identifier %type formal_parameter_identifier +%type parameter_pack_identifier %type not_paren_empty_instance_identifier %type empty_instance_identifier -%type type +%type type type_pack %type type_decl %type var_type_decl %type predefined_type @@ -447,6 +465,10 @@ constructor_init: name '(' optional_const_expr_comma ')' { delete $3; +} + | name '(' optional_const_expr_comma ')' ELLIPSIS +{ + delete $3; } | name '{' optional_const_expr_comma '}' { @@ -1187,26 +1209,38 @@ function_post: { $$ = 0; } - | KW_CONST + | function_post KW_CONST { - $$ = (int)CPPFunctionType::F_const_method; + $$ = $1 | (int)CPPFunctionType::F_const_method; +} + | function_post KW_VOLATILE +{ + $$ = $1 | (int)CPPFunctionType::F_volatile_method; } | function_post KW_NOEXCEPT { - $$ = (int)CPPFunctionType::F_noexcept; + $$ = $1 | (int)CPPFunctionType::F_noexcept; } | function_post KW_FINAL { - $$ = (int)CPPFunctionType::F_final; + $$ = $1 | (int)CPPFunctionType::F_final; } | function_post KW_OVERRIDE { - $$ = (int)CPPFunctionType::F_override; + $$ = $1 | (int)CPPFunctionType::F_override; +} + | function_post '&' +{ + $$ = $1 | (int)CPPFunctionType::F_lvalue_method; +} + | function_post ANDAND +{ + $$ = $1 | (int)CPPFunctionType::F_rvalue_method; } | function_post KW_MUTABLE { // Used for lambdas, currently ignored. - $$ = 0; + $$ = $1; } | function_post KW_THROW '(' ')' { @@ -1215,6 +1249,10 @@ function_post: | function_post KW_THROW '(' name ')' { $$ = $1; +} + | function_post KW_THROW '(' name ELLIPSIS ')' +{ + $$ = $1; } /* | function_post '[' '[' attribute_specifiers ']' ']' { @@ -1418,22 +1456,35 @@ template_nonempty_formal_parameters: } ; +typename_keyword: + KW_CLASS + | KW_TYPENAME + ; + template_formal_parameter: - KW_CLASS name + typename_keyword +{ + $$ = CPPType::new_type(new CPPClassTemplateParameter((CPPIdentifier *)NULL)); +} + | typename_keyword name { $$ = CPPType::new_type(new CPPClassTemplateParameter($2)); } - | KW_CLASS name '=' full_type + | typename_keyword name '=' full_type { $$ = CPPType::new_type(new CPPClassTemplateParameter($2, $4)); } - | KW_TYPENAME name + | typename_keyword ELLIPSIS { - $$ = CPPType::new_type(new CPPClassTemplateParameter($2)); + CPPClassTemplateParameter *ctp = new CPPClassTemplateParameter((CPPIdentifier *)NULL); + ctp->_packed = true; + $$ = CPPType::new_type(ctp); } - | KW_TYPENAME name '=' full_type + | typename_keyword ELLIPSIS name { - $$ = CPPType::new_type(new CPPClassTemplateParameter($2, $4)); + CPPClassTemplateParameter *ctp = new CPPClassTemplateParameter($3); + ctp->_packed = true; + $$ = CPPType::new_type(ctp); } | template_formal_parameter_type formal_parameter_identifier template_parameter_maybe_initialize { @@ -1447,6 +1498,17 @@ template_formal_parameter: CPPInstance *inst = new CPPInstance($2, $3, 0, @3.file); inst->set_initializer($4); $$ = inst; +} + | template_formal_parameter_type parameter_pack_identifier +{ + CPPInstance *inst = new CPPInstance($1, $2, 0, @2.file); + $$ = inst; +} + | KW_CONST template_formal_parameter_type parameter_pack_identifier +{ + $3->add_modifier(IIT_const); + CPPInstance *inst = new CPPInstance($2, $3, 0, @3.file); + $$ = inst; } ; @@ -1467,6 +1529,14 @@ template_formal_parameter_type: yyerror(string("internal error resolving type ") + $1->get_fully_scoped_name(), @1); } assert($$ != NULL); +} + | TYPEPACK_IDENTIFIER +{ + $$ = $1->find_type(current_scope, global_scope, false, current_lexer); + if ($$ == NULL) { + yyerror(string("internal error resolving type ") + $1->get_fully_scoped_name(), @1); + } + assert($$ != NULL); } ; @@ -1785,6 +1855,23 @@ function_parameter: $4->add_modifier(IIT_const); $$ = new CPPInstance($3, $4, 0, @3.file); $$->set_initializer($5); +} + | type_pack parameter_pack_identifier maybe_initialize +{ + $$ = new CPPInstance($1, $2, 0, @2.file); + $$->set_initializer($3); +} + | KW_CONST type_pack parameter_pack_identifier maybe_initialize +{ + $3->add_modifier(IIT_const); + $$ = new CPPInstance($2, $3, 0, @3.file); + $$->set_initializer($4); +} + | KW_CONST KW_REGISTER type_pack parameter_pack_identifier maybe_initialize +{ + $4->add_modifier(IIT_const); + $$ = new CPPInstance($3, $4, 0, @3.file); + $$->set_initializer($5); } | KW_REGISTER function_parameter { @@ -1913,10 +2000,79 @@ formal_parameter_identifier: } ; +parameter_pack_identifier: + ELLIPSIS +{ + $$ = new CPPInstanceIdentifier((CPPIdentifier *)NULL); + $$->_packed = true; +} + | ELLIPSIS name +{ + $$ = new CPPInstanceIdentifier($2); + $$->_packed = true; +} + | KW_CONST parameter_pack_identifier %prec UNARY +{ + $$ = $2; + $$->add_modifier(IIT_const); +} + | KW_VOLATILE parameter_pack_identifier %prec UNARY +{ + $$ = $2; + $$->add_modifier(IIT_volatile); +} + | '*' parameter_pack_identifier %prec UNARY +{ + $$ = $2; + $$->add_modifier(IIT_pointer); +} + | '&' parameter_pack_identifier %prec UNARY +{ + $$ = $2; + $$->add_modifier(IIT_reference); +} + | ANDAND parameter_pack_identifier %prec UNARY +{ + $$ = $2; + $$->add_modifier(IIT_rvalue_reference); +} + | SCOPING '*' parameter_pack_identifier %prec UNARY +{ + $$ = $3; + $$->add_scoped_pointer_modifier($1); +} + | parameter_pack_identifier '[' optional_const_expr ']' +{ + $$ = $1; + $$->add_array_modifier($3); +} + | '(' parameter_pack_identifier ')' '(' function_parameter_list ')' function_post +{ + $$ = $2; + $$->add_modifier(IIT_paren); + $$->add_func_modifier($5, $7); +} + | '(' parameter_pack_identifier ')' +{ + $$ = $2; + $$->add_modifier(IIT_paren); +} + ; + not_paren_empty_instance_identifier: empty { $$ = new CPPInstanceIdentifier((CPPIdentifier *)NULL); +} + | ELLIPSIS +{ + $$ = new CPPInstanceIdentifier((CPPIdentifier *)NULL); + $$->_packed = true; +} + | ELLIPSIS name +{ + $$ = new CPPInstanceIdentifier($2); + $$->_packed = true; } | KW_CONST not_paren_empty_instance_identifier %prec UNARY { @@ -1959,6 +2115,16 @@ empty_instance_identifier: empty { $$ = new CPPInstanceIdentifier((CPPIdentifier *)NULL); +} + | ELLIPSIS +{ + $$ = new CPPInstanceIdentifier((CPPIdentifier *)NULL); + $$->_packed = true; +} + | ELLIPSIS name +{ + $$ = new CPPInstanceIdentifier($2); + $$->_packed = true; } | KW_CONST empty_instance_identifier %prec UNARY { @@ -2093,6 +2259,16 @@ type: str << *$3; yyerror("could not determine type of " + str.str(), @3); } +} + | KW_UNDERLYING_TYPE '(' full_type ')' +{ + CPPEnumType *enum_type = $3->as_enum_type(); + if (enum_type == NULL) { + yyerror("an enumeration type is required", @3); + $$ = $3; + } else { + $$ = enum_type->get_underlying_type(); + } } | KW_AUTO { @@ -2100,6 +2276,17 @@ type: } ; +type_pack: + TYPEPACK_IDENTIFIER +{ + $$ = $1->find_type(current_scope, global_scope, false, current_lexer); + if ($$ == NULL) { + yyerror(string("internal error resolving type ") + $1->get_fully_scoped_name(), @1); + } + assert($$ != NULL); +} + ; + type_decl: simple_type { @@ -2187,6 +2374,16 @@ type_decl: str << *$3; yyerror("could not determine type of " + str.str(), @3); } +} + | KW_UNDERLYING_TYPE '(' full_type ')' +{ + CPPEnumType *enum_type = $3->as_enum_type(); + if (enum_type == NULL) { + yyerror("an enumeration type is required", @3); + $$ = $3; + } else { + $$ = enum_type->get_underlying_type(); + } } | KW_AUTO { @@ -2251,6 +2448,16 @@ predefined_type: str << *$3; yyerror("could not determine type of " + str.str(), @3); } +} + | KW_UNDERLYING_TYPE '(' full_type ')' +{ + CPPEnumType *enum_type = $3->as_enum_type(); + if (enum_type == NULL) { + yyerror("an enumeration type is required", @3); + $$ = $3; + } else { + $$ = enum_type->get_underlying_type(); + } } | KW_AUTO { @@ -2279,6 +2486,15 @@ full_type: { $3->add_modifier(IIT_const); $$ = $3->unroll_type($2); +} + | type_pack empty_instance_identifier +{ + $$ = $2->unroll_type($1); +} + | KW_CONST type_pack empty_instance_identifier +{ + $3->add_modifier(IIT_const); + $$ = $3->unroll_type($2); } ; @@ -2693,6 +2909,7 @@ element: | CHAR_TOK | IDENTIFIER | TYPENAME_IDENTIFIER + | TYPEPACK_IDENTIFIER | SCOPING | SIMPLE_IDENTIFIER | ELLIPSIS | OROR | ANDAND @@ -2711,10 +2928,11 @@ element: | KW_OPERATOR | KW_OVERRIDE | KW_PRIVATE | KW_PROTECTED | KW_PUBLIC | KW_PUBLISHED | KW_REGISTER | KW_REINTERPRET_CAST | KW_RETURN | KW_SHORT | KW_SIGNED | KW_SIZEOF | KW_STATIC - | KW_STATIC_ASSERT | KW_STATIC_CAST | KW_STRUCT + | KW_STATIC_ASSERT | KW_STATIC_CAST | KW_STRUCT | KW_TEMPLATE | KW_THREAD_LOCAL | KW_THROW | KW_TRUE | KW_TRY | KW_TYPEDEF - | KW_TYPEID | KW_TYPENAME | KW_UNION | KW_UNSIGNED | KW_USING - | KW_VIRTUAL | KW_VOID | KW_VOLATILE | KW_WCHAR_T | KW_WHILE + | KW_TYPEID | KW_TYPENAME | KW_UNDERLYING_TYPE | KW_UNION + | KW_UNSIGNED | KW_USING | KW_VIRTUAL | KW_VOID | KW_VOLATILE + | KW_WCHAR_T | KW_WHILE { } | '+' | '-' | '*' | '/' | '&' | '|' | '^' | '!' | '~' | '=' | '%' @@ -2783,6 +3001,10 @@ no_angle_bracket_const_expr: | KW_SIZEOF '(' full_type ')' %prec UNARY { $$ = new CPPExpression(CPPExpression::sizeof_func($3)); +} + | KW_SIZEOF ELLIPSIS '(' name ')' %prec UNARY +{ + $$ = new CPPExpression(CPPExpression::sizeof_ellipsis_func($4)); } | KW_ALIGNOF '(' full_type ')' %prec UNARY { @@ -3021,6 +3243,10 @@ const_expr: | KW_SIZEOF '(' full_type ')' %prec UNARY { $$ = new CPPExpression(CPPExpression::sizeof_func($3)); +} + | KW_SIZEOF ELLIPSIS '(' name ')' %prec UNARY +{ + $$ = new CPPExpression(CPPExpression::sizeof_ellipsis_func($4)); } | KW_ALIGNOF '(' full_type ')' %prec UNARY { @@ -3238,6 +3464,74 @@ const_operand: | '[' capture_list ']' '(' function_parameter_list ')' function_post maybe_trailing_return_type '{' code '}' { $$ = NULL; +} + | KW_HAS_VIRTUAL_DESTRUCTOR '(' full_type ')' +{ + $$ = new CPPExpression(CPPExpression::type_trait(KW_HAS_VIRTUAL_DESTRUCTOR, $3)); +} + | KW_IS_ABSTRACT '(' full_type ')' +{ + $$ = new CPPExpression(CPPExpression::type_trait(KW_IS_ABSTRACT, $3)); +} + | KW_IS_BASE_OF '(' full_type ',' full_type ')' +{ + $$ = new CPPExpression(CPPExpression::type_trait(KW_IS_CLASS, $3, $5)); +} + | KW_IS_CLASS '(' full_type ')' +{ + $$ = new CPPExpression(CPPExpression::type_trait(KW_IS_CLASS, $3)); +} + | KW_IS_CONSTRUCTIBLE '(' full_type ')' +{ + $$ = new CPPExpression(CPPExpression::type_trait(KW_IS_CONSTRUCTIBLE, $3)); +} + | KW_IS_CONSTRUCTIBLE '(' full_type ',' full_type ')' +{ + $$ = new CPPExpression(CPPExpression::type_trait(KW_IS_CONSTRUCTIBLE, $3, $5)); +} + | KW_IS_CONVERTIBLE_TO '(' full_type ',' full_type ')' +{ + $$ = new CPPExpression(CPPExpression::type_trait(KW_IS_CONVERTIBLE_TO, $3, $5)); +} + | KW_IS_DESTRUCTIBLE '(' full_type ')' +{ + $$ = new CPPExpression(CPPExpression::type_trait(KW_IS_DESTRUCTIBLE, $3)); +} + | KW_IS_EMPTY '(' full_type ')' +{ + $$ = new CPPExpression(CPPExpression::type_trait(KW_IS_EMPTY, $3)); +} + | KW_IS_ENUM '(' full_type ')' +{ + $$ = new CPPExpression(CPPExpression::type_trait(KW_IS_ENUM, $3)); +} + | KW_IS_FINAL '(' full_type ')' +{ + $$ = new CPPExpression(CPPExpression::type_trait(KW_IS_FINAL, $3)); +} + | KW_IS_FUNDAMENTAL '(' full_type ')' +{ + $$ = new CPPExpression(CPPExpression::type_trait(KW_IS_FUNDAMENTAL, $3)); +} + | KW_IS_POD '(' full_type ')' +{ + $$ = new CPPExpression(CPPExpression::type_trait(KW_IS_POD, $3)); +} + | KW_IS_POLYMORPHIC '(' full_type ')' +{ + $$ = new CPPExpression(CPPExpression::type_trait(KW_IS_POLYMORPHIC, $3)); +} + | KW_IS_STANDARD_LAYOUT '(' full_type ')' +{ + $$ = new CPPExpression(CPPExpression::type_trait(KW_IS_STANDARD_LAYOUT, $3)); +} + | KW_IS_TRIVIAL '(' full_type ')' +{ + $$ = new CPPExpression(CPPExpression::type_trait(KW_IS_TRIVIAL, $3)); +} + | KW_IS_UNION '(' full_type ')' +{ + $$ = new CPPExpression(CPPExpression::type_trait(KW_IS_UNION, $3)); } ; @@ -3276,6 +3570,10 @@ formal_const_expr: | KW_SIZEOF '(' full_type ')' %prec UNARY { $$ = new CPPExpression(CPPExpression::sizeof_func($3)); +} + | KW_SIZEOF ELLIPSIS '(' name ')' %prec UNARY +{ + $$ = new CPPExpression(CPPExpression::sizeof_ellipsis_func($4)); } | KW_ALIGNOF '(' full_type ')' %prec UNARY { @@ -3518,6 +3816,12 @@ class_derivation_name: | KW_TYPENAME name { $$ = CPPType::new_type(new CPPTBDType($2)); +} + | name ELLIPSIS +{ + CPPClassTemplateParameter *ctp = new CPPClassTemplateParameter($1); + ctp->_packed = true; + $$ = CPPType::new_type(ctp); } ; @@ -3550,6 +3854,10 @@ name: | TYPENAME_IDENTIFIER { $$ = $1; +} + | TYPEPACK_IDENTIFIER +{ + $$ = $1; } | KW_FINAL { @@ -3595,6 +3903,10 @@ name_no_final: | TYPENAME_IDENTIFIER { $$ = $1; +} + | TYPEPACK_IDENTIFIER +{ + $$ = $1; } | KW_OVERRIDE { diff --git a/dtool/src/cppparser/cppClassTemplateParameter.cxx b/dtool/src/cppparser/cppClassTemplateParameter.cxx index 1c39532be5..602f367722 100644 --- a/dtool/src/cppparser/cppClassTemplateParameter.cxx +++ b/dtool/src/cppparser/cppClassTemplateParameter.cxx @@ -21,7 +21,8 @@ CPPClassTemplateParameter:: CPPClassTemplateParameter(CPPIdentifier *ident, CPPType *default_type) : CPPType(CPPFile()), _ident(ident), - _default_type(default_type) + _default_type(default_type), + _packed(false) { } @@ -41,8 +42,15 @@ is_fully_specified() const { void CPPClassTemplateParameter:: output(ostream &out, int indent_level, CPPScope *scope, bool complete) const { if (complete) { - out << "class "; - _ident->output(out, scope); + if (_ident != NULL) { + out << "class "; + _ident->output(out, scope); + } else { + out << "class"; + } + if (_packed) { + out << "..."; + } if (_default_type) { out << " = "; _default_type->output(out, indent_level, scope, false); @@ -82,6 +90,14 @@ is_equal(const CPPDeclaration *other) const { return false; } + if (_packed != ot->_packed) { + return false; + } + + if (_ident == NULL || ot->_ident == NULL) { + return _ident == ot->_ident; + } + return *_ident == *ot->_ident; } @@ -99,5 +115,13 @@ is_less(const CPPDeclaration *other) const { return _default_type < ot->_default_type; } + if (_packed != ot->_packed) { + return _packed < ot->_packed; + } + + if (_ident == NULL || ot->_ident == NULL) { + return _ident < ot->_ident; + } + return *_ident < *ot->_ident; } diff --git a/dtool/src/cppparser/cppClassTemplateParameter.h b/dtool/src/cppparser/cppClassTemplateParameter.h index 89923bd067..d936ca01ea 100644 --- a/dtool/src/cppparser/cppClassTemplateParameter.h +++ b/dtool/src/cppparser/cppClassTemplateParameter.h @@ -37,6 +37,7 @@ public: CPPIdentifier *_ident; CPPType *_default_type; + bool _packed; protected: virtual bool is_equal(const CPPDeclaration *other) const; diff --git a/dtool/src/cppparser/cppConstType.cxx b/dtool/src/cppparser/cppConstType.cxx index da5c0d18fe..f1851b5233 100644 --- a/dtool/src/cppparser/cppConstType.cxx +++ b/dtool/src/cppparser/cppConstType.cxx @@ -86,6 +86,22 @@ is_tbd() const { return _wrapped_around->is_tbd(); } +/** + * Returns true if the type is considered a fundamental type. + */ +bool CPPConstType:: +is_fundamental() const { + return _wrapped_around->is_fundamental(); +} + +/** + * Returns true if the type is considered a standard layout type. + */ +bool CPPConstType:: +is_standard_layout() const { + return _wrapped_around->is_standard_layout(); +} + /** * Returns true if the type is considered a Plain Old Data (POD) type. */ @@ -94,12 +110,20 @@ is_trivial() const { return _wrapped_around->is_trivial(); } +/** + * Returns true if the type can be constructed using the given argument. + */ +bool CPPConstType:: +is_constructible(const CPPType *given_type) const { + return _wrapped_around->is_constructible(given_type); +} + /** * Returns true if the type is default-constructible. */ bool CPPConstType:: is_default_constructible() const { - return false; + return _wrapped_around->is_default_constructible(); } /** @@ -110,6 +134,23 @@ is_copy_constructible() const { return _wrapped_around->is_copy_constructible(); } +/** + * Returns true if the type is destructible. + */ +bool CPPConstType:: +is_destructible() const { + return _wrapped_around->is_destructible(); +} + +/** + * Returns true if variables of this type may be implicitly converted to + * the other type. + */ +bool CPPConstType:: +is_convertible_to(const CPPType *other) const { + return _wrapped_around->is_convertible_to(other); +} + /** * This is a little more forgiving than is_equal(): it returns true if the * types appear to be referring to the same thing, even if they may have diff --git a/dtool/src/cppparser/cppConstType.h b/dtool/src/cppparser/cppConstType.h index dbc3e166d4..ef0943ca13 100644 --- a/dtool/src/cppparser/cppConstType.h +++ b/dtool/src/cppparser/cppConstType.h @@ -36,9 +36,14 @@ public: CPPScope *global_scope); virtual bool is_tbd() const; + virtual bool is_fundamental() const; + virtual bool is_standard_layout() const; virtual bool is_trivial() const; + virtual bool is_constructible(const CPPType *type) const; virtual bool is_default_constructible() const; virtual bool is_copy_constructible() const; + virtual bool is_destructible() const; + virtual bool is_convertible_to(const CPPType *other) const; virtual bool is_equivalent(const CPPType &other) const; virtual void output(ostream &out, int indent_level, CPPScope *scope, diff --git a/dtool/src/cppparser/cppDeclaration.cxx b/dtool/src/cppparser/cppDeclaration.cxx index d2399c0fbb..76f72c43e0 100644 --- a/dtool/src/cppparser/cppDeclaration.cxx +++ b/dtool/src/cppparser/cppDeclaration.cxx @@ -41,8 +41,13 @@ CPPDeclaration(const CPPDeclaration ©) : /** * */ -CPPDeclaration:: -~CPPDeclaration() { +CPPDeclaration &CPPDeclaration:: +operator = (const CPPDeclaration ©) { + _vis = copy._vis; + _template_scope = copy._template_scope; + _file = copy._file; + _leading_comment = copy._leading_comment; + return *this; } /** @@ -124,6 +129,7 @@ CPPDeclaration *CPPDeclaration:: substitute_decl(SubstDecl &subst, CPPScope *, CPPScope *) { SubstDecl::const_iterator si = subst.find(this); if (si != subst.end()) { + assert((*si).second != NULL); return (*si).second; } return this; diff --git a/dtool/src/cppparser/cppDeclaration.h b/dtool/src/cppparser/cppDeclaration.h index f1ce96820f..a06baa3123 100644 --- a/dtool/src/cppparser/cppDeclaration.h +++ b/dtool/src/cppparser/cppDeclaration.h @@ -89,7 +89,9 @@ public: CPPDeclaration(const CPPFile &file); CPPDeclaration(const CPPDeclaration ©); - virtual ~CPPDeclaration(); + virtual ~CPPDeclaration() {}; + + CPPDeclaration &operator = (const CPPDeclaration ©); bool operator == (const CPPDeclaration &other) const; bool operator != (const CPPDeclaration &other) const; @@ -139,6 +141,73 @@ public: virtual CPPMakeProperty *as_make_property(); virtual CPPMakeSeq *as_make_seq(); + inline const CPPInstance *as_instance() const { + return ((CPPDeclaration *)this)->as_instance(); + } + inline const CPPClassTemplateParameter *as_class_template_parameter() const { + return ((CPPDeclaration *)this)->as_class_template_parameter(); + } + inline const CPPTypedefType *as_typedef_type() const { + return ((CPPDeclaration *)this)->as_typedef_type(); + } + inline const CPPTypeDeclaration *as_type_declaration() const { + return ((CPPDeclaration *)this)->as_type_declaration(); + } + inline const CPPExpression *as_expression() const { + return ((CPPDeclaration *)this)->as_expression(); + } + inline const CPPType *as_type() const { + return ((CPPDeclaration *)this)->as_type(); + } + inline const CPPNamespace *as_namespace() const { + return ((CPPDeclaration *)this)->as_namespace(); + } + inline const CPPUsing *as_using() const { + return ((CPPDeclaration *)this)->as_using(); + } + inline const CPPSimpleType *as_simple_type() const { + return ((CPPDeclaration *)this)->as_simple_type(); + } + inline const CPPPointerType *as_pointer_type() const { + return ((CPPDeclaration *)this)->as_pointer_type(); + } + inline const CPPReferenceType *as_reference_type() const { + return ((CPPDeclaration *)this)->as_reference_type(); + } + inline const CPPArrayType *as_array_type() const { + return ((CPPDeclaration *)this)->as_array_type(); + } + inline const CPPConstType *as_const_type() const { + return ((CPPDeclaration *)this)->as_const_type(); + } + inline const CPPFunctionType *as_function_type() const { + return ((CPPDeclaration *)this)->as_function_type(); + } + inline const CPPFunctionGroup *as_function_group() const { + return ((CPPDeclaration *)this)->as_function_group(); + } + inline const CPPExtensionType *as_extension_type() const { + return ((CPPDeclaration *)this)->as_extension_type(); + } + inline const CPPStructType *as_struct_type() const { + return ((CPPDeclaration *)this)->as_struct_type(); + } + inline const CPPEnumType *as_enum_type() const { + return ((CPPDeclaration *)this)->as_enum_type(); + } + inline const CPPTBDType *as_tbd_type() const { + return ((CPPDeclaration *)this)->as_tbd_type(); + } + inline const CPPTypeProxy *as_type_proxy() const { + return ((CPPDeclaration *)this)->as_type_proxy(); + } + inline const CPPMakeProperty *as_make_property() const { + return ((CPPDeclaration *)this)->as_make_property(); + } + inline const CPPMakeSeq *as_make_seq() const { + return ((CPPDeclaration *)this)->as_make_seq(); + } + CPPVisibility _vis; CPPTemplateScope *_template_scope; CPPFile _file; diff --git a/dtool/src/cppparser/cppExpression.cxx b/dtool/src/cppparser/cppExpression.cxx index 7ef5ec85fb..f185514de4 100644 --- a/dtool/src/cppparser/cppExpression.cxx +++ b/dtool/src/cppparser/cppExpression.cxx @@ -24,6 +24,7 @@ #include "cppInstance.h" #include "cppFunctionGroup.h" #include "cppFunctionType.h" +#include "cppStructType.h" #include "cppBison.h" #include "pdtoa.h" @@ -389,6 +390,19 @@ typeid_op(CPPExpression *op1, CPPType *std_type_info) { return expr; } +/** + * Creates an expression that returns a particular type trait. + */ +CPPExpression CPPExpression:: +type_trait(int trait, CPPType *type, CPPType *arg) { + CPPExpression expr(0); + expr._type = T_type_trait; + expr._u._type_trait._trait = trait; + expr._u._type_trait._type = type; + expr._u._type_trait._arg = arg; + return expr; +} + /** * */ @@ -401,6 +415,17 @@ sizeof_func(CPPType *type) { return expr; } +/** + * + */ +CPPExpression CPPExpression:: +sizeof_ellipsis_func(CPPIdentifier *ident) { + CPPExpression expr(0); + expr._type = T_sizeof_ellipsis; + expr._u._ident = ident; + return expr; +} + /** * */ @@ -492,13 +517,6 @@ get_delete() { return expr; } -/** - * - */ -CPPExpression:: -~CPPExpression() { -} - /** * */ @@ -579,6 +597,7 @@ evaluate() const { case T_new: case T_default_new: case T_sizeof: + case T_sizeof_ellipsis: return Result(); case T_alignof: @@ -801,6 +820,95 @@ evaluate() const { case T_typeid_expr: return Result(); + case T_type_trait: + switch (_u._type_trait._trait) { + case KW_HAS_VIRTUAL_DESTRUCTOR: + { + CPPStructType *struct_type = _u._type_trait._type->as_struct_type(); + return Result(struct_type != NULL && struct_type->has_virtual_destructor()); + } + + case KW_IS_ABSTRACT: + { + CPPStructType *struct_type = _u._type_trait._type->as_struct_type(); + return Result(struct_type != NULL && struct_type->is_abstract()); + } + + case KW_IS_BASE_OF: + { + CPPStructType *struct_type1 = _u._type_trait._type->as_struct_type(); + CPPStructType *struct_type2 = _u._type_trait._arg->as_struct_type(); + return Result(struct_type1 != NULL && struct_type2 != NULL && struct_type1->is_base_of(struct_type2)); + } + + case KW_IS_CLASS: + { + CPPExtensionType *ext_type = _u._type_trait._type->as_extension_type(); + return Result(ext_type != NULL && ( + ext_type->_type == CPPExtensionType::T_class || + ext_type->_type == CPPExtensionType::T_struct)); + } + + case KW_IS_CONSTRUCTIBLE: + if (_u._type_trait._arg == NULL) { + return Result(_u._type_trait._type->is_default_constructible()); + } else { + return Result(_u._type_trait._type->is_constructible(_u._type_trait._arg)); + } + + case KW_IS_CONVERTIBLE_TO: + assert(_u._type_trait._arg != NULL); + return Result(_u._type_trait._type->is_convertible_to(_u._type_trait._arg)); + + case KW_IS_DESTRUCTIBLE: + return Result(_u._type_trait._type->is_destructible()); + + case KW_IS_EMPTY: + { + CPPStructType *struct_type = _u._type_trait._type->as_struct_type(); + return Result(struct_type != NULL && struct_type->is_empty()); + } + + case KW_IS_ENUM: + return Result(_u._type_trait._type->is_enum()); + + case KW_IS_FINAL: + { + CPPStructType *struct_type = _u._type_trait._type->as_struct_type(); + return Result(struct_type != NULL && struct_type->is_final()); + } + + case KW_IS_FUNDAMENTAL: + return Result(_u._type_trait._type->is_fundamental()); + + case KW_IS_POD: + return Result(_u._type_trait._type->is_trivial() && + _u._type_trait._type->is_standard_layout()); + + case KW_IS_POLYMORPHIC: + { + CPPStructType *struct_type = _u._type_trait._type->as_struct_type(); + return Result(struct_type != NULL && struct_type->is_polymorphic()); + } + + case KW_IS_STANDARD_LAYOUT: + return Result(_u._type_trait._type->is_standard_layout()); + + case KW_IS_TRIVIAL: + return Result(_u._type_trait._type->is_trivial()); + + case KW_IS_UNION: + { + CPPExtensionType *ext_type = _u._type_trait._type->as_extension_type(); + return Result(ext_type != NULL && + ext_type->_type == CPPExtensionType::T_union); + } + + default: + cerr << "**unexpected type trait**\n"; + abort(); + } + default: cerr << "**invalid operand**\n"; abort(); @@ -916,6 +1024,7 @@ determine_type() const { return CPPType::new_type(new CPPPointerType(_u._typecast._to)); case T_sizeof: + case T_sizeof_ellipsis: case T_alignof: // Note: this should actually be size_t, but that is defined as a typedef // in parser-inc. We could try to resolve it, but that's hacky. Eh, it's @@ -1057,6 +1166,9 @@ determine_type() const { case T_typeid_expr: return _u._typeid._std_type_info; + case T_type_trait: + return bool_type; + default: cerr << "**invalid operand**\n"; abort(); @@ -1113,6 +1225,9 @@ is_fully_specified() const { case T_alignof: return _u._typecast._to->is_fully_specified(); + case T_sizeof_ellipsis: + return _u._ident->is_fully_specified(); + case T_trinary_operation: if (!_u._op._op3->is_fully_specified()) { return false; @@ -1141,6 +1256,9 @@ is_fully_specified() const { case T_typeid_expr: return _u._typeid._expr->is_fully_specified(); + case T_type_trait: + return _u._type_trait._type->is_fully_specified(); + default: return true; } @@ -1276,6 +1394,13 @@ substitute_decl(CPPDeclaration::SubstDecl &subst, any_changed = any_changed || (rep->_u._typeid._expr != _u._typeid._expr); break; + case T_type_trait: + rep->_u._type_trait._type = + _u._type_trait._type->substitute_decl(subst, current_scope, global_scope) + ->as_type(); + any_changed = any_changed || (rep->_u._type_trait._type != _u._type_trait._type); + break; + default: break; } @@ -1350,6 +1475,9 @@ is_tbd() const { case T_typeid_expr: return _u._typeid._expr->is_tbd(); + case T_type_trait: + return _u._type_trait._type->is_tbd(); + default: return false; } @@ -1541,6 +1669,12 @@ output(ostream &out, int indent_level, CPPScope *scope, bool) const { out << ")"; break; + case T_sizeof_ellipsis: + out << "sizeof...("; + _u._ident->output(out, scope); + out << ")"; + break; + case T_alignof: out << "alignof("; _u._typecast._to->output(out, indent_level, scope, false); @@ -1753,6 +1887,65 @@ output(ostream &out, int indent_level, CPPScope *scope, bool) const { out << "delete"; break; + case T_type_trait: + switch (_u._type_trait._trait) { + case KW_HAS_VIRTUAL_DESTRUCTOR: + out << "__has_virtual_destructor"; + break; + case KW_IS_ABSTRACT: + out << "__is_abstract"; + break; + case KW_IS_BASE_OF: + out << "__is_base_of"; + break; + case KW_IS_CLASS: + out << "__is_class"; + break; + case KW_IS_CONSTRUCTIBLE: + out << "__is_constructible"; + break; + case KW_IS_CONVERTIBLE_TO: + out << "__is_convertible_to"; + break; + case KW_IS_DESTRUCTIBLE: + out << "__is_destructible"; + break; + case KW_IS_EMPTY: + out << "__is_empty"; + break; + case KW_IS_ENUM: + out << "__is_enum"; + break; + case KW_IS_FINAL: + out << "__is_final"; + break; + case KW_IS_FUNDAMENTAL: + out << "__is_fundamental"; + break; + case KW_IS_POD: + out << "__is_pod"; + break; + case KW_IS_POLYMORPHIC: + out << "__is_polymorphic"; + break; + case KW_IS_STANDARD_LAYOUT: + out << "__is_standard_layout"; + break; + case KW_IS_TRIVIAL: + out << "__is_trivial"; + break; + case KW_IS_UNION: + out << "__is_union"; + break; + default: + out << (evaluate().as_boolean() ? "true" : "false"); + return; + } + out << '('; + _u._type_trait._type->output(out, indent_level, scope, false); + out << ')'; + break; + default: out << "(** invalid operand type " << (int)_type << " **)"; } @@ -1864,6 +2057,7 @@ is_equal(const CPPDeclaration *other) const { return _u._fgroup == ot->_u._fgroup; case T_unknown_ident: + case T_sizeof_ellipsis: return *_u._ident == *ot->_u._ident; case T_typecast: @@ -1907,6 +2101,10 @@ is_equal(const CPPDeclaration *other) const { case T_typeid_expr: return _u._typeid._expr == ot->_u._typeid._expr; + case T_type_trait: + return _u._type_trait._trait == ot->_u._type_trait._trait && + _u._type_trait._type == ot->_u._type_trait._type; + default: cerr << "(** invalid operand type " << (int)_type << " **)"; } @@ -1954,6 +2152,7 @@ is_less(const CPPDeclaration *other) const { return *_u._fgroup < *ot->_u._fgroup; case T_unknown_ident: + case T_sizeof_ellipsis: return *_u._ident < *ot->_u._ident; case T_typecast: @@ -2007,6 +2206,12 @@ is_less(const CPPDeclaration *other) const { case T_typeid_expr: return *_u._typeid._expr < *ot->_u._typeid._expr; + case T_type_trait: + if (_u._type_trait._trait != ot->_u._type_trait._trait) { + return _u._type_trait._trait < ot->_u._type_trait._trait; + } + return *_u._type_trait._type < *ot->_u._type_trait._type; + default: cerr << "(** invalid operand type " << (int)_type << " **)"; } diff --git a/dtool/src/cppparser/cppExpression.h b/dtool/src/cppparser/cppExpression.h index 71df065fd9..c3483ef3e9 100644 --- a/dtool/src/cppparser/cppExpression.h +++ b/dtool/src/cppparser/cppExpression.h @@ -51,6 +51,7 @@ public: T_new, T_default_new, T_sizeof, + T_sizeof_ellipsis, T_alignof, T_unary_operation, T_binary_operation, @@ -59,6 +60,7 @@ public: T_raw_literal, T_typeid_type, T_typeid_expr, + T_type_trait, // These are used when parsing =default and =delete methods. T_default, @@ -81,7 +83,9 @@ public: static CPPExpression new_op(CPPType *type, CPPExpression *op1 = NULL); static CPPExpression typeid_op(CPPType *type, CPPType *std_type_info); static CPPExpression typeid_op(CPPExpression *op1, CPPType *std_type_info); + static CPPExpression type_trait(int trait, CPPType *type, CPPType *arg = NULL); static CPPExpression sizeof_func(CPPType *type); + static CPPExpression sizeof_ellipsis_func(CPPIdentifier *ident); static CPPExpression alignof_func(CPPType *type); static CPPExpression literal(unsigned long long value, CPPInstance *lit_op); @@ -93,8 +97,6 @@ public: static const CPPExpression &get_default(); static const CPPExpression &get_delete(); - ~CPPExpression(); - enum ResultType { RT_integer, RT_real, @@ -170,6 +172,11 @@ public: CPPInstance *_operator; CPPExpression *_value; } _literal; + struct { + int _trait; + CPPType *_type; + CPPType *_arg; + } _type_trait; } _u; protected: diff --git a/dtool/src/cppparser/cppExtensionType.cxx b/dtool/src/cppparser/cppExtensionType.cxx index 36bdd307fe..8a0676883d 100644 --- a/dtool/src/cppparser/cppExtensionType.cxx +++ b/dtool/src/cppparser/cppExtensionType.cxx @@ -87,12 +87,32 @@ is_tbd() const { return false; } +/** + * Returns true if the type is considered a standard layout type. + */ +bool CPPExtensionType:: +is_standard_layout() const { + return (_type == T_enum || _type == T_enum_class || _type == T_enum_struct); +} + /** * Returns true if the type is considered a Plain Old Data (POD) type. */ bool CPPExtensionType:: is_trivial() const { - return (_type == T_enum); + return (_type == T_enum || _type == T_enum_class || _type == T_enum_struct); +} + +/** + * Returns true if the type can be constructed using the given argument. + */ +bool CPPExtensionType:: +is_constructible(const CPPType *given_type) const { + if (_type == T_enum || _type == T_enum_class || _type == T_enum_struct) { + const CPPExtensionType *other = ((CPPType *)given_type)->remove_reference()->remove_const()->as_extension_type(); + return other != NULL && is_equal(other); + } + return false; } /** @@ -100,7 +120,7 @@ is_trivial() const { */ bool CPPExtensionType:: is_default_constructible() const { - return (_type == T_enum); + return (_type == T_enum || _type == T_enum_class || _type == T_enum_struct); } /** @@ -108,7 +128,7 @@ is_default_constructible() const { */ bool CPPExtensionType:: is_copy_constructible() const { - return (_type == T_enum); + return (_type == T_enum || _type == T_enum_class || _type == T_enum_struct); } /** diff --git a/dtool/src/cppparser/cppExtensionType.h b/dtool/src/cppparser/cppExtensionType.h index e60aeb9f21..7f7bf15abf 100644 --- a/dtool/src/cppparser/cppExtensionType.h +++ b/dtool/src/cppparser/cppExtensionType.h @@ -47,7 +47,9 @@ public: virtual bool is_incomplete() const; virtual bool is_tbd() const; + virtual bool is_standard_layout() const; virtual bool is_trivial() const; + virtual bool is_constructible(const CPPType *type) const; virtual bool is_default_constructible() const; virtual bool is_copy_constructible() const; diff --git a/dtool/src/cppparser/cppFunctionType.cxx b/dtool/src/cppparser/cppFunctionType.cxx index 3232fc56fa..371b714c2d 100644 --- a/dtool/src/cppparser/cppFunctionType.cxx +++ b/dtool/src/cppparser/cppFunctionType.cxx @@ -89,9 +89,11 @@ substitute_decl(CPPDeclaration::SubstDecl &subst, } CPPFunctionType *rep = new CPPFunctionType(*this); - rep->_return_type = - _return_type->substitute_decl(subst, current_scope, global_scope) - ->as_type(); + if (_return_type != NULL) { + rep->_return_type = + _return_type->substitute_decl(subst, current_scope, global_scope) + ->as_type(); + } rep->_parameters = _parameters->substitute_decl(subst, current_scope, global_scope); @@ -265,6 +267,9 @@ output_instance(ostream &out, int indent_level, CPPScope *scope, if (_flags & F_const_method) { out << " const"; } + if (_flags & F_volatile_method) { + out << " volatile"; + } if (_flags & F_noexcept) { out << " noexcept"; } diff --git a/dtool/src/cppparser/cppFunctionType.h b/dtool/src/cppparser/cppFunctionType.h index 6618c625fe..f08de51e45 100644 --- a/dtool/src/cppparser/cppFunctionType.h +++ b/dtool/src/cppparser/cppFunctionType.h @@ -40,6 +40,9 @@ public: F_trailing_return_type = 0x800, F_final = 0x1000, F_override = 0x2000, + F_volatile_method = 0x4000, + F_lvalue_method = 0x8000, + F_rvalue_method = 0x10000, }; CPPFunctionType(CPPType *return_type, CPPParameterList *parameters, diff --git a/dtool/src/cppparser/cppInstance.cxx b/dtool/src/cppparser/cppInstance.cxx index ce01da78e4..86768af511 100644 --- a/dtool/src/cppparser/cppInstance.cxx +++ b/dtool/src/cppparser/cppInstance.cxx @@ -82,6 +82,10 @@ CPPInstance(CPPType *type, CPPInstanceIdentifier *ii, int storage_class, // anyway. } + if (ii->_packed) { + _storage_class |= SC_parameter_pack; + } + delete ii; } @@ -353,11 +357,7 @@ check_for_constructor(CPPScope *current_scope, CPPScope *global_scope) { CPPReferenceType *ref_type = param_type->as_reference_type(); if (ref_type != NULL) { - param_type = ref_type->_pointing_at; - - if (param_type->get_subtype() == CPPDeclaration::ST_const) { - param_type = param_type->as_const_type()->_wrapped_around; - } + param_type = ref_type->_pointing_at->remove_cv(); if (class_name == param_type->get_simple_name()) { if (ref_type->_value_category == CPPReferenceType::VC_rvalue) { @@ -563,6 +563,9 @@ output(ostream &out, int indent_level, CPPScope *scope, bool complete, if (_ident != NULL) { name = _ident->get_local_name(scope); } + if (_storage_class & SC_parameter_pack) { + name = "..." + name; + } if (_type->as_function_type()) { _type->as_function_type()-> diff --git a/dtool/src/cppparser/cppInstance.h b/dtool/src/cppparser/cppInstance.h index 74473df660..675ba83507 100644 --- a/dtool/src/cppparser/cppInstance.h +++ b/dtool/src/cppparser/cppInstance.h @@ -68,6 +68,9 @@ public: // This isn't really a storage class. It's only used temporarily by the // parser, to make parsing specifier sequences a bit easier. SC_const = 0x20000, + + // Used to indicate that this is a parameter pack. + SC_parameter_pack = 0x40000, }; CPPInstance(CPPType *type, const string &name, int storage_class = 0); diff --git a/dtool/src/cppparser/cppInstanceIdentifier.cxx b/dtool/src/cppparser/cppInstanceIdentifier.cxx index 96f14e27ce..fe723f552d 100644 --- a/dtool/src/cppparser/cppInstanceIdentifier.cxx +++ b/dtool/src/cppparser/cppInstanceIdentifier.cxx @@ -26,12 +26,11 @@ */ CPPInstanceIdentifier::Modifier:: Modifier(CPPInstanceIdentifierType type) : - _type(type) -{ - _func_params = NULL; - _func_flags = 0; - _scoping = NULL; - _expr = NULL; + _type(type), + _func_params(NULL), + _func_flags(0), + _scoping(NULL), + _expr(NULL) { } /** @@ -83,7 +82,8 @@ initializer_type(CPPParameterList *params) { CPPInstanceIdentifier:: CPPInstanceIdentifier(CPPIdentifier *ident) : _ident(ident), - _bit_width(-1) { + _bit_width(-1), + _packed(false) { } /** diff --git a/dtool/src/cppparser/cppInstanceIdentifier.h b/dtool/src/cppparser/cppInstanceIdentifier.h index a96086a2ee..8433b30313 100644 --- a/dtool/src/cppparser/cppInstanceIdentifier.h +++ b/dtool/src/cppparser/cppInstanceIdentifier.h @@ -88,8 +88,12 @@ public: typedef vector Modifiers; Modifiers _modifiers; + // If not -1, indicates a bitfield int _bit_width; + // Indicates a parameter pack + bool _packed; + private: CPPType * r_unroll_type(CPPType *start_type, Modifiers::const_iterator mi); diff --git a/dtool/src/cppparser/cppPointerType.cxx b/dtool/src/cppparser/cppPointerType.cxx index 59734ed575..6fac65a6b1 100644 --- a/dtool/src/cppparser/cppPointerType.cxx +++ b/dtool/src/cppparser/cppPointerType.cxx @@ -14,6 +14,9 @@ #include "cppPointerType.h" #include "cppFunctionType.h" #include "cppIdentifier.h" +#include "cppArrayType.h" +#include "cppStructType.h" +#include "cppSimpleType.h" /** * @@ -88,6 +91,14 @@ is_tbd() const { return _pointing_at->is_tbd(); } +/** + * Returns true if the type is considered a standard layout type. + */ +bool CPPPointerType:: +is_standard_layout() const { + return true; +} + /** * Returns true if the type is considered a Plain Old Data (POD) type. */ @@ -96,6 +107,60 @@ is_trivial() const { return true; } +/** + * Returns true if the type can be constructed using the given argument. + */ +bool CPPPointerType:: +is_constructible(const CPPType *given_type) const { + given_type = ((CPPType *)given_type)->remove_reference()->remove_cv(); + + // Can convert from compatible pointer or array type. + CPPType *other_target; + switch (given_type->get_subtype()) { + case ST_array: + other_target = given_type->as_array_type()->_element_type; + break; + + case ST_pointer: + other_target = given_type->as_pointer_type()->_pointing_at; + break; + + case ST_simple: + // Can initialize from nullptr. + return given_type->as_simple_type()->_type == CPPSimpleType::T_nullptr; + + default: + return false; + } + + // Can't convert const to non-const pointer. + if (other_target->is_const() && !_pointing_at->is_const()) { + return false; + } + + // Are we pointing to the same type? That's always OK. + const CPPType *a = _pointing_at->remove_cv(); + const CPPType *b = other_target->remove_cv(); + if (a == b || *a == *b) { + return true; + } + + // Can initialize void pointer with any pointer. + const CPPSimpleType *simple_type = a->as_simple_type(); + if (simple_type != NULL) { + return simple_type->_type == CPPSimpleType::T_void; + } + + // Can initialize from derived class pointer. + const CPPStructType *a_struct = a->as_struct_type(); + const CPPStructType *b_struct = b->as_struct_type(); + if (a_struct != NULL && b_struct != NULL) { + return a_struct->is_base_of(b_struct); + } + + return false; +} + /** * Returns true if the type is default-constructible. */ diff --git a/dtool/src/cppparser/cppPointerType.h b/dtool/src/cppparser/cppPointerType.h index 2bb0fea0c1..41aed4876b 100644 --- a/dtool/src/cppparser/cppPointerType.h +++ b/dtool/src/cppparser/cppPointerType.h @@ -36,7 +36,9 @@ public: CPPScope *global_scope); virtual bool is_tbd() const; + virtual bool is_standard_layout() const; virtual bool is_trivial() const; + virtual bool is_constructible(const CPPType *other) const; virtual bool is_default_constructible() const; virtual bool is_copy_constructible() const; virtual bool is_equivalent(const CPPType &other) const; diff --git a/dtool/src/cppparser/cppPreprocessor.cxx b/dtool/src/cppparser/cppPreprocessor.cxx index a6ad3d1cad..5df779fc1d 100644 --- a/dtool/src/cppparser/cppPreprocessor.cxx +++ b/dtool/src/cppparser/cppPreprocessor.cxx @@ -18,6 +18,7 @@ #include "cppIdentifier.h" #include "cppTemplateScope.h" #include "cppTemplateParameterList.h" +#include "cppClassTemplateParameter.h" #include "cppConstType.h" #include "cppFunctionGroup.h" #include "cppFunctionType.h" @@ -416,7 +417,14 @@ get_next_token0() { int token_type = IDENTIFIER; CPPDeclaration *decl = ident->find_symbol(current_scope, global_scope); if (decl != NULL && decl->as_type() != NULL) { - token_type = TYPENAME_IDENTIFIER; + // We need to see type pack template parameters as a different type of + // identifier to resolve a parser ambiguity. + CPPClassTemplateParameter *ctp = decl->as_class_template_parameter(); + if (ctp && ctp->_packed) { + token_type = TYPEPACK_IDENTIFIER; + } else { + token_type = TYPENAME_IDENTIFIER; + } } _last_token_loc = loc; @@ -2451,11 +2459,27 @@ check_keyword(const string &name) { if (name == "friend") return KW_FRIEND; if (name == "for") return KW_FOR; if (name == "goto") return KW_GOTO; + if (name == "__has_virtual_destructor") return KW_HAS_VIRTUAL_DESTRUCTOR; if (name == "if") return KW_IF; if (name == "inline") return KW_INLINE; if (name == "__inline") return KW_INLINE; if (name == "__inline__") return KW_INLINE; if (name == "int") return KW_INT; + if (name == "__is_abstract") return KW_IS_ABSTRACT; + if (name == "__is_base_of") return KW_IS_BASE_OF; + if (name == "__is_class") return KW_IS_CLASS; + if (name == "__is_constructible") return KW_IS_CONSTRUCTIBLE; + if (name == "__is_convertible_to") return KW_IS_CONVERTIBLE_TO; + if (name == "__is_destructible") return KW_IS_DESTRUCTIBLE; + if (name == "__is_empty") return KW_IS_EMPTY; + if (name == "__is_enum") return KW_IS_ENUM; + if (name == "__is_final") return KW_IS_FINAL; + if (name == "__is_fundamental") return KW_IS_FUNDAMENTAL; + if (name == "__is_pod") return KW_IS_POD; + if (name == "__is_polymorphic") return KW_IS_POLYMORPHIC; + if (name == "__is_standard_layout") return KW_IS_STANDARD_LAYOUT; + if (name == "__is_trivial") return KW_IS_TRIVIAL; + if (name == "__is_union") return KW_IS_UNION; if (name == "long") return KW_LONG; if (name == "__make_map_property") return KW_MAKE_MAP_PROPERTY; if (name == "__make_property") return KW_MAKE_PROPERTY; @@ -2490,6 +2514,7 @@ check_keyword(const string &name) { if (name == "typedef") return KW_TYPEDEF; if (name == "typeid") return KW_TYPEID; if (name == "typename") return KW_TYPENAME; + if (name == "__underlying_type") return KW_UNDERLYING_TYPE; if (name == "union") return KW_UNION; if (name == "unsigned") return KW_UNSIGNED; if (name == "using") return KW_USING; @@ -2751,7 +2776,7 @@ nested_parse_template_instantiation(CPPTemplateScope *scope) { _parsing_template_params = true; CPPToken token = internal_get_next_token(); - if (token._token == '>') { + if (token._token == '>' || token._token == 0) { _parsing_template_params = false; } else { _saved_tokens.push_back(token); @@ -2760,36 +2785,53 @@ nested_parse_template_instantiation(CPPTemplateScope *scope) { CPPTemplateParameterList *actual_params = new CPPTemplateParameterList; for (pi = formal_params._parameters.begin(); - pi != formal_params._parameters.end() && _parsing_template_params; - ++pi) { + pi != formal_params._parameters.end() && _parsing_template_params;) { CPPToken token = peek_next_token(); YYLTYPE loc = token._lloc; CPPDeclaration *decl = (*pi); - if (decl->as_type()) { + CPPClassTemplateParameter *param = decl->as_class_template_parameter(); + CPPInstance *inst = decl->as_instance(); + if (param) { // Parse a typename template parameter. _saved_tokens.push_back(CPPToken(START_TYPE)); CPPType *type = ::parse_type(this, current_scope, global_scope); if (type == NULL) { loc.last_line = get_line_number(); loc.last_column = get_col_number() - 1; - warning("Invalid type", loc); + warning("invalid type", loc); skip_to_end_nested(); type = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_unknown)); } actual_params->_parameters.push_back(type); - } else { + + // If this is a variadic template, keep reading using this parameter. + if (!param->_packed) { + ++pi; + } + } else if (inst) { // Parse a constant expression template parameter. _saved_tokens.push_back(CPPToken(START_CONST_EXPR)); CPPExpression *expr = parse_const_expr(this, current_scope, global_scope); if (expr == NULL) { loc.last_line = get_line_number(); loc.last_column = get_col_number() - 1; - warning("Invalid expression", loc); + warning("invalid expression", loc); skip_to_end_nested(); expr = new CPPExpression(0); } actual_params->_parameters.push_back(expr); + + // If this is a variadic template, keep reading using this parameter. + if ((inst->_storage_class & CPPInstance::SC_parameter_pack) == 0) { + ++pi; + } + } else { + loc.last_line = get_line_number(); + loc.last_column = get_col_number() - 1; + warning("invalid template parameter", loc); + skip_to_end_nested(); + ++pi; } _state = S_nested; diff --git a/dtool/src/cppparser/cppReferenceType.cxx b/dtool/src/cppparser/cppReferenceType.cxx index edb29a91e2..bbb1f1a50e 100644 --- a/dtool/src/cppparser/cppReferenceType.cxx +++ b/dtool/src/cppparser/cppReferenceType.cxx @@ -12,6 +12,8 @@ */ #include "cppReferenceType.h" +#include "cppTypedefType.h" +#include "cppStructType.h" /** * @@ -87,6 +89,14 @@ is_tbd() const { return _pointing_at->is_tbd(); } +/** + * Returns true if the type is considered a standard layout type. + */ +bool CPPReferenceType:: +is_standard_layout() const { + return false; +} + /** * Returns true if the type is considered a Plain Old Data (POD) type. */ @@ -95,6 +105,67 @@ is_trivial() const { return false; } +/** + * Returns true if the type can be constructed using the given argument. + */ +bool CPPReferenceType:: +is_constructible(const CPPType *given_type) const { + const CPPType *a; + const CPPType *b; + + CPPReferenceType *ref_type = ((CPPType *)given_type)->as_reference_type(); + if (ref_type != NULL) { + if (ref_type->_value_category == VC_rvalue) { + return is_constructible(ref_type->_pointing_at); + } + + if (_value_category == VC_rvalue) { + // Can never initialize an rvalue ref from an lvalue ref. + return false; + } + + if (!_pointing_at->is_const()) { + // Cannot initialize a non-const reference using a const one. + if (ref_type->_pointing_at->is_const()) { + return false; + } + } + + a = _pointing_at->remove_cv(); + b = ref_type->_pointing_at->remove_cv(); + + } else { + // Initializing using an rvalue. + if (!_pointing_at->is_const()) { + // Cannot initialize a non-const reference using a const one. + if (given_type->is_const()) { + return false; + } + + // Cannot initalise a non-const lvalue reference with an rvalue ref. + if (_value_category == VC_lvalue) { + return false; + } + } + + a = _pointing_at->remove_cv(); + b = ((CPPType *)given_type)->remove_cv(); + } + + if (a == b || *a == *b) { + return true; + } + + // Can initialize from derived class pointer. + const CPPStructType *a_struct = a->as_struct_type(); + const CPPStructType *b_struct = b->as_struct_type(); + if (a_struct != NULL && b_struct != NULL) { + return a_struct->is_base_of(b_struct); + } + + return false; +} + /** * Returns true if the type is default-constructible. */ @@ -111,6 +182,14 @@ is_copy_constructible() const { return (_value_category == VC_lvalue); } +/** + * Returns true if the type is destructible. + */ +bool CPPReferenceType:: +is_destructible() const { + return false; +} + /** * This is a little more forgiving than is_equal(): it returns true if the * types appear to be referring to the same thing, even if they may have diff --git a/dtool/src/cppparser/cppReferenceType.h b/dtool/src/cppparser/cppReferenceType.h index 96b898ce2b..89feba8d2c 100644 --- a/dtool/src/cppparser/cppReferenceType.h +++ b/dtool/src/cppparser/cppReferenceType.h @@ -42,9 +42,12 @@ public: CPPScope *global_scope); virtual bool is_tbd() const; + virtual bool is_standard_layout() const; virtual bool is_trivial() const; + virtual bool is_constructible(const CPPType *type) const; virtual bool is_default_constructible() const; virtual bool is_copy_constructible() const; + virtual bool is_destructible() const; virtual bool is_equivalent(const CPPType &other) const; virtual void output(ostream &out, int indent_level, CPPScope *scope, diff --git a/dtool/src/cppparser/cppScope.cxx b/dtool/src/cppparser/cppScope.cxx index 9945a1a72d..a340a5a709 100644 --- a/dtool/src/cppparser/cppScope.cxx +++ b/dtool/src/cppparser/cppScope.cxx @@ -27,7 +27,6 @@ #include "cppPreprocessor.h" #include "cppTemplateScope.h" #include "cppClassTemplateParameter.h" -#include "cppConstType.h" #include "cppFunctionType.h" #include "cppUsing.h" #include "cppBisonDefs.h" diff --git a/dtool/src/cppparser/cppSimpleType.cxx b/dtool/src/cppparser/cppSimpleType.cxx index 8c9b323945..82d7735bdc 100644 --- a/dtool/src/cppparser/cppSimpleType.cxx +++ b/dtool/src/cppparser/cppSimpleType.cxx @@ -34,6 +34,30 @@ is_tbd() const { return (_type == T_unknown); } +/** + * Returns true if the type is a boolean, floating point or integral type. + */ +bool CPPSimpleType:: +is_arithmetic() const { + return (_type > T_unknown && _type < T_void); +} + +/** + * Returns true if the type is considered a fundamental type. + */ +bool CPPSimpleType:: +is_fundamental() const { + return (_type != T_unknown && _type != T_parameter && _type != T_auto); +} + +/** + * Returns true if the type is considered a standard layout type. + */ +bool CPPSimpleType:: +is_standard_layout() const { + return (_type != T_unknown && _type != T_parameter && _type != T_auto); +} + /** * Returns true if the type is considered a Plain Old Data (POD) type. */ @@ -42,6 +66,27 @@ is_trivial() const { return true; } +/** + * Returns true if the type can be constructed using the given argument. + */ +bool CPPSimpleType:: +is_constructible(const CPPType *given_type) const { + given_type = ((CPPType *)given_type)->remove_reference()->remove_cv(); + + const CPPSimpleType *simple_type = given_type->as_simple_type(); + if (simple_type == NULL) { + return given_type->is_enum() && is_arithmetic(); + } else if (_type == T_nullptr) { + return simple_type->_type == T_nullptr; + } else if (_type == T_bool) { + return simple_type->is_arithmetic() || simple_type->_type == T_nullptr; + } else if (is_arithmetic()) { + return simple_type->is_arithmetic(); + } else { + return false; + } +} + /** * Returns true if the type is default-constructible. */ @@ -58,6 +103,14 @@ is_copy_constructible() const { return (_type != T_void); } +/** + * Returns true if the type is destructible. + */ +bool CPPSimpleType:: +is_destructible() const { + return (_type != T_void); +} + /** * Returns true if the type is a special parameter expression type. * diff --git a/dtool/src/cppparser/cppSimpleType.h b/dtool/src/cppparser/cppSimpleType.h index 12ee96857f..8adb254a1b 100644 --- a/dtool/src/cppparser/cppSimpleType.h +++ b/dtool/src/cppparser/cppSimpleType.h @@ -19,7 +19,7 @@ #include "cppType.h" /** - * + * Represents a C++ fundamental type. */ class CPPSimpleType : public CPPType { public: @@ -40,12 +40,11 @@ public: // nullptr_t, which is a typedef of decltype(nullptr). T_nullptr, -/* - * T_parameter is a special type which is assigned to expressions that are - * discovered where a formal parameter was expected. This is a special case - * for handling cases like this: int foo(0); which really means the same thing - * as: int foo = 0; but it initially looks like a function prototype. - */ + // T_parameter is a special type which is assigned to expressions that are + // discovered where a formal parameter was expected. This is a special + // case for handling cases like this: int foo(0); which really means the + // same thing as: int foo = 0; but it initially looks like a function + // prototype. T_parameter, // T_auto is also a special type that corresponds to the "auto" keyword @@ -69,9 +68,14 @@ public: int _flags; virtual bool is_tbd() const; + bool is_arithmetic() const; + virtual bool is_fundamental() const; + virtual bool is_standard_layout() const; virtual bool is_trivial() const; + virtual bool is_constructible(const CPPType *type) const; virtual bool is_default_constructible() const; virtual bool is_copy_constructible() const; + virtual bool is_destructible() const; virtual bool is_parameter_expr() const; virtual string get_preferred_name() const; diff --git a/dtool/src/cppparser/cppStructType.cxx b/dtool/src/cppparser/cppStructType.cxx index 49eee9c436..f33112d686 100644 --- a/dtool/src/cppparser/cppStructType.cxx +++ b/dtool/src/cppparser/cppStructType.cxx @@ -126,16 +126,154 @@ is_abstract() const { return !funcs.empty(); } +/** + * Returns true if this struct declaration is a base class of the other given + * class, or the same class. + */ +bool CPPStructType:: +is_base_of(const CPPStructType *other) const { + if (this == other) { + return true; + } + Derivation::const_iterator di; + for (di = other->_derivation.begin(); di != other->_derivation.end(); ++di) { + const CPPStructType *base = (*di)._base->as_struct_type(); + if (base != NULL && is_base_of(base)) { + return true; + } + } + return false; +} + +/** + * Returns true if this struct declaration defines no non-static data members + * other than bit-fields of size 0, no virtual functions, no virtual base + * classes, and no non-empty base classes, and is not a union. + */ +bool CPPStructType:: +is_empty() const { + if (_type == T_union) { + return false; + } + + if (check_virtual()) { + return false; + } + + // Make sure all base classes are empty and non-virtual. + Derivation::const_iterator di; + for (di = _derivation.begin(); di != _derivation.end(); ++di) { + CPPStructType *base = (*di)._base->as_struct_type(); + if ((*di)._is_virtual || (base != NULL && !base->is_empty())) { + return false; + } + } + + // Make sure there are no non-static data members. + CPPScope::Variables::const_iterator vi; + for (vi = _scope->_variables.begin(); vi != _scope->_variables.end(); ++vi) { + CPPInstance *instance = (*vi).second; + assert(instance != NULL); + + if (instance->_storage_class & CPPInstance::SC_static) { + // Static members don't count. + continue; + } + + // Only members with a bit width of 0 are okay. + if (instance->_bit_width != 0) { + return false; + } + } + + return true; +} + +/** + * Returns true if this class or any of its base classes have virtual methods. + */ +bool CPPStructType:: +is_polymorphic() const { + if (_type == T_union) { + return false; + } + return check_virtual(); +} + +/** + * Returns true if the type is considered a standard layout type. + */ +bool CPPStructType:: +is_standard_layout() const { + assert(_scope != NULL); + + CPPVisibility member_vis = V_unknown; + + // Make sure all data members have the same vis and are standard layout. + CPPScope::Variables::const_iterator vi; + for (vi = _scope->_variables.begin(); vi != _scope->_variables.end(); ++vi) { + CPPInstance *instance = (*vi).second; + assert(instance != NULL); + + if (instance->_storage_class & CPPInstance::SC_static) { + // Static members don't count. + continue; + } + + // Finally, check if the data member itself is standard layout. + assert(instance->_type != NULL); + if (!instance->_type->is_standard_layout()) { + return false; + } + + if (member_vis == V_unknown) { + // The first non-static data member may not be a base class. + CPPStructType *struct_type = instance->_type->remove_cv()->as_struct_type(); + if (struct_type != NULL && struct_type->is_base_of(this)) { + return false; + } + member_vis = instance->_vis; + + } else if (member_vis != instance->_vis) { + // All members need to have the same access control. + return false; + } + } + + // Make sure all base classes are standard-layout and non-virtual. + Derivation::const_iterator di; + for (di = _derivation.begin(); di != _derivation.end(); ++di) { + CPPStructType *base = (*di)._base->as_struct_type(); + if ((*di)._is_virtual) { + return false; + } + + // If this class had instance members, all base classes need to be empty. + if (member_vis != V_unknown) { + if (!base->is_empty()) { + return false; + } + } else { + if (!base->is_standard_layout()) { + return false; + } + } + } + + // Make sure we have no virtual functions. + return !check_virtual(); +} + /** * Returns true if the type is considered a Plain Old Data (POD) type. */ bool CPPStructType:: is_trivial() const { - // Make sure all base classes are trivial. + // Make sure all base classes are trivial and non-virtual. Derivation::const_iterator di; for (di = _derivation.begin(); di != _derivation.end(); ++di) { CPPStructType *base = (*di)._base->as_struct_type(); - if (base != NULL && !base->is_trivial()) { + if ((*di)._is_virtual || (base != NULL && !base->is_trivial())) { return false; } } @@ -166,7 +304,7 @@ is_trivial() const { } } - // Now look for functions that are virtual or condestructors. + // Now look for functions that are virtual or con/destructors. bool is_default_constructible = true; CPPScope::Functions::const_iterator fi; for (fi = _scope->_functions.begin(); fi != _scope->_functions.end(); ++fi) { @@ -193,8 +331,8 @@ is_trivial() const { if (ftype->_flags & (CPPFunctionType::F_destructor | CPPFunctionType::F_move_constructor | CPPFunctionType::F_copy_constructor)) { - // User-provided destructors and copymove constructors are not trivial - // unless they are defaulted (and not virtual). + // User-provided destructors and copy/move constructors are not + // trivial unless they are defaulted (and not virtual). return false; } @@ -220,6 +358,62 @@ is_trivial() const { return is_default_constructible; } +/** + * Returns true if the type can be constructed using the given argument. + * This implementation is rudimentary, as it does not attempt to follow all of + * the implicit type conversion rules, but it is still useful. + */ +bool CPPStructType:: +is_constructible(const CPPType *given_type) const { + // Does the type match the copy constructor or move constructor? + CPPType *base_type = ((CPPType *)given_type)->remove_reference(); + if (is_equivalent(*base_type->remove_cv())) { + const CPPReferenceType *ref_type = given_type->as_reference_type(); + if (ref_type == NULL || + ref_type->_value_category == CPPReferenceType::VC_rvalue) { + return is_move_constructible(V_public); + } else { + return is_copy_constructible(V_public); + } + } + + // Check for a different constructor. + CPPFunctionGroup *fgroup = get_constructor(); + if (fgroup != (CPPFunctionGroup *)NULL) { + CPPFunctionGroup::Instances::const_iterator ii; + for (ii = fgroup->_instances.begin(); + ii != fgroup->_instances.end(); + ++ii) { + CPPInstance *inst = (*ii); + assert(inst->_type != (CPPType *)NULL); + + CPPFunctionType *ftype = inst->_type->as_function_type(); + assert(ftype != (CPPFunctionType *)NULL); + + CPPParameterList *params = ftype->_parameters; + if (params->_parameters.size() == 1 && !params->_includes_ellipsis) { + CPPType *param_type = params->_parameters[0]->_type->remove_reference(); + + if (!param_type->is_const() && base_type->is_const()) { + // Can't pass a const object to a function taking a non-const. + continue; + } + + // It's deleted, anyhow. + if ((inst->_storage_class & CPPInstance::SC_deleted) != 0) { + continue; + } + + if (param_type->is_equivalent(*base_type)) { + return true; + } + } + } + } + + return false; +} + /** * Returns true if the type is default-constructible. */ @@ -236,6 +430,14 @@ is_copy_constructible() const { return is_copy_constructible(V_public); } +/** + * Returns true if the type is destructible. + */ +bool CPPStructType:: +is_destructible() const { + return is_destructible(V_public); +} + /** * Returns true if the type is default-constructible. */ @@ -399,6 +601,139 @@ is_copy_constructible(CPPVisibility min_vis) const { return true; } +/** + * Returns true if the type is move-constructible. + */ +bool CPPStructType:: +is_move_constructible(CPPVisibility min_vis) const { + CPPInstance *constructor = get_move_constructor(); + if (constructor != (CPPInstance *)NULL) { + // It has a user-declared move constructor. + if (constructor->_vis > min_vis) { + // Inaccessible move constructor. + return false; + } + + if (constructor->_storage_class & CPPInstance::SC_deleted) { + // It is deleted. + return false; + } + + return true; + } + + return is_copy_constructible(min_vis); +} + +/** + * Returns true if the type is destructible. + */ +bool CPPStructType:: +is_destructible(CPPVisibility min_vis) const { + // Do we have an explicit destructor? + CPPInstance *destructor = get_destructor(); + if (destructor != (CPPInstance *)NULL) { + if (destructor->_vis > min_vis) { + // Yes, but it's inaccessible. + return false; + } + + if (destructor->_storage_class & CPPInstance::SC_deleted) { + // Yes, but it's explicitly been deleted. + return false; + } + + return true; + } + + // Make sure all base classes are destructible. + Derivation::const_iterator di; + for (di = _derivation.begin(); di != _derivation.end(); ++di) { + CPPStructType *base = (*di)._base->as_struct_type(); + if (base != NULL && !base->is_destructible(V_protected)) { + return false; + } + } + + assert(_scope != NULL); + + // Make sure all members are destructible. + CPPScope::Variables::const_iterator vi; + for (vi = _scope->_variables.begin(); vi != _scope->_variables.end(); ++vi) { + CPPInstance *instance = (*vi).second; + assert(instance != NULL); + + if (instance->_storage_class & CPPInstance::SC_static) { + // Static members don't count. + continue; + } + + // If the data member is not destructible, no go. + assert(instance->_type != NULL); + if (!instance->_type->is_destructible()) { + return false; + } + } + + return true; +} + +/** + * Returns true if variables of this type may be implicitly converted to + * the other type. + */ +bool CPPStructType:: +is_convertible_to(const CPPType *other) const { + if (CPPType::is_convertible_to(other)) { + return true; + } + + // Check all typecast operators to see whether we can cast to a type that is + // convertible to the other type. + CPPScope::Functions::const_iterator fi; + for (fi = _scope->_functions.begin(); fi != _scope->_functions.end(); ++fi) { + CPPFunctionGroup *fgroup = (*fi).second; + + CPPFunctionGroup::Instances::const_iterator ii; + for (ii = fgroup->_instances.begin(); ii != fgroup->_instances.end(); ++ii) { + CPPInstance *inst = (*ii); + + if (inst->_storage_class & (CPPInstance::SC_deleted | CPPInstance::SC_static | CPPInstance::SC_explicit)) { + // Exclude static/deleted/explicit methods. + continue; + } + + // Also, the instance needs to be publicly visible. + if (inst->_vis > V_public) { + continue; + } + + assert(inst->_type != (CPPType *)NULL); + CPPFunctionType *ftype = inst->_type->as_function_type(); + assert(ftype != (CPPFunctionType *)NULL); + + if (ftype->_return_type != NULL && + (ftype->_flags & CPPFunctionType::F_operator_typecast) != 0) { + // Yes, this is a typecast operator. Test using the return type. + if (ftype->_return_type->is_convertible_to(other)) { + return true; + } + } + } + } + + // Check whether any of the base classes are convertible. + Derivation::const_iterator di; + for (di = _derivation.begin(); di != _derivation.end(); ++di) { + CPPStructType *base = (*di)._base->as_struct_type(); + if (base != NULL && (*di)._vis <= V_public && !base->is_convertible_to(other)) { + return true; + } + } + + return false; +} + /** * Ensures all functions are correctly marked with the "virtual" flag if they * are truly virtual by virtue of inheritance, rather than simply being @@ -420,6 +755,30 @@ check_virtual() const { return !funcs.empty(); } +/** + * Returns true if this class, or any of its base classes, has a virtual + * destructor. + */ +bool CPPStructType:: +has_virtual_destructor() const { + CPPInstance *destructor = get_destructor(); + if (destructor != NULL) { + if (destructor->_storage_class & CPPInstance::SC_virtual) { + return true; + } + } + + Derivation::const_iterator di; + for (di = _derivation.begin(); di != _derivation.end(); ++di) { + CPPStructType *base = (*di)._base->as_struct_type(); + if (base != NULL && base->has_virtual_destructor()) { + return true; + } + } + + return false; +} + /** * Returns true if this declaration is an actual, factual declaration, or * false if some part of the declaration depends on a template parameter which @@ -459,7 +818,7 @@ get_constructor() const { /** * Returns the default constructor defined for the struct type, or NULL if - * there is none. + * there is no user-declared constructor that takes 0 arguments. */ CPPInstance *CPPStructType:: get_default_constructor() const { @@ -490,7 +849,7 @@ get_default_constructor() const { /** * Returns the copy constructor defined for the struct type, or NULL if no - * copy constructor exists. + * user-declared copy constructor exists. */ CPPInstance *CPPStructType:: get_copy_constructor() const { @@ -519,7 +878,7 @@ get_copy_constructor() const { /** * Returns the move constructor defined for the struct type, or NULL if no - * move constructor exists. + * user-declared move constructor exists. */ CPPInstance *CPPStructType:: get_move_constructor() const { @@ -548,7 +907,7 @@ get_move_constructor() const { /** * Returns the destructor defined for the struct type, if any, or NULL if no - * destructor is found. + * user-declared destructor is found. */ CPPInstance *CPPStructType:: get_destructor() const { diff --git a/dtool/src/cppparser/cppStructType.h b/dtool/src/cppparser/cppStructType.h index 46c7a428b3..585c7476b2 100644 --- a/dtool/src/cppparser/cppStructType.h +++ b/dtool/src/cppparser/cppStructType.h @@ -44,14 +44,26 @@ public: CPPScope *get_scope() const; bool is_abstract() const; + bool is_base_of(const CPPStructType *other) const; + bool is_empty() const; + bool is_polymorphic() const; bool check_virtual() const; + bool has_virtual_destructor() const; virtual bool is_fully_specified() const; virtual bool is_incomplete() const; + virtual bool is_standard_layout() const; virtual bool is_trivial() const; + virtual bool is_constructible(const CPPType *arg_type) const; virtual bool is_default_constructible() const; virtual bool is_copy_constructible() const; + virtual bool is_destructible() const; bool is_default_constructible(CPPVisibility min_vis) const; bool is_copy_constructible(CPPVisibility min_vis) const; + bool is_move_constructible(CPPVisibility min_vis) const; + bool is_destructible(CPPVisibility min_vis) const; + virtual bool is_convertible_to(const CPPType *other) const; + + inline bool is_final() const { return _final; } CPPFunctionGroup *get_constructor() const; CPPInstance *get_default_constructor() const; diff --git a/dtool/src/cppparser/cppTemplateScope.cxx b/dtool/src/cppparser/cppTemplateScope.cxx index 50618b026d..2960718205 100644 --- a/dtool/src/cppparser/cppTemplateScope.cxx +++ b/dtool/src/cppparser/cppTemplateScope.cxx @@ -97,8 +97,10 @@ add_template_parameter(CPPDeclaration *param) { CPPClassTemplateParameter *cl = param->as_class_template_parameter(); if (cl != NULL) { // Create an implicit typedef for this class parameter. - string name = cl->_ident->get_local_name(); - _types[name] = cl; + if (cl->_ident != NULL) { + string name = cl->_ident->get_local_name(); + _types[name] = cl; + } } CPPInstance *inst = param->as_instance(); diff --git a/dtool/src/cppparser/cppType.cxx b/dtool/src/cppparser/cppType.cxx index e6430e6b45..780ebfc0ef 100644 --- a/dtool/src/cppparser/cppType.cxx +++ b/dtool/src/cppparser/cppType.cxx @@ -12,7 +12,11 @@ */ #include "cppType.h" -#include "cppTypedefType.h" +#include "cppConstType.h" +#include "cppPointerType.h" +#include "cppReferenceType.h" +#include "cppStructType.h" +#include "cppExtensionType.h" #include CPPType::Types CPPType::_types; @@ -57,6 +61,22 @@ is_tbd() const { return false; } +/** + * Returns true if the type is considered a fundamental type. + */ +bool CPPType:: +is_fundamental() const { + return false; +} + +/** + * Returns true if the type is considered a standard layout type. + */ +bool CPPType:: +is_standard_layout() const { + return false; +} + /** * Returns true if the type is considered a Plain Old Data (POD) type. */ @@ -65,6 +85,14 @@ is_trivial() const { return false; } +/** + * Returns true if the type can be constructed using the given argument. + */ +bool CPPType:: +is_constructible(const CPPType *given_type) const { + return false; +} + /** * Returns true if the type is default-constructible. */ @@ -81,6 +109,14 @@ is_copy_constructible() const { return false; } +/** + * Returns true if the type is destructible. + */ +bool CPPType:: +is_destructible() const { + return !is_incomplete(); +} + /** * Returns true if the type is a special parameter expression type. * @@ -92,6 +128,136 @@ is_parameter_expr() const { return false; } +/** + * Returns true if this is an enum type, or a typedef to an enum type. + */ +bool CPPType:: +is_enum() const { + const CPPTypedefType *td_type = as_typedef_type(); + if (td_type != NULL) { + return td_type->_type->is_enum(); + } + const CPPExtensionType *ext_type = as_extension_type(); + if (ext_type != NULL) { + return ext_type->_type == CPPExtensionType::T_enum || + ext_type->_type == CPPExtensionType::T_enum_struct || + ext_type->_type == CPPExtensionType::T_enum_class; + } + return false; +} + +/** + * Returns true if this is a const type, or a typedef to a const type. + */ +bool CPPType:: +is_const() const { + const CPPTypedefType *td_type = as_typedef_type(); + if (td_type != NULL) { + return td_type->_type->is_const(); + } + return get_subtype() == ST_const; +} + +/** + * Returns true if this is a reference type, or a typedef to a reference type. + */ +bool CPPType:: +is_reference() const { + const CPPTypedefType *td_type = as_typedef_type(); + if (td_type != NULL) { + return td_type->_type->is_reference(); + } + return get_subtype() == ST_reference; +} + +/** + * Returns true if this is an unqualified or cv-qualified pointer type, or a + * typedef to one. + */ +bool CPPType:: +is_pointer() const { + const CPPTypedefType *td_type = as_typedef_type(); + if (td_type != NULL) { + return td_type->_type->is_pointer(); + } + const CPPConstType *const_type = as_const_type(); + if (const_type != NULL) { + return const_type->_wrapped_around->is_pointer(); + } + return get_subtype() == ST_pointer; +} + +/** + * Returns the type with any const qualifier stripped off. Will follow + * typedefs, but only if necessary. + */ +CPPType *CPPType:: +remove_const() { + const CPPTypedefType *td_type = as_typedef_type(); + if (td_type != NULL) { + CPPType *unwrapped = td_type->_type->remove_const(); + if (unwrapped != td_type->_type) { + return unwrapped; + } else { + return this; + } + } + const CPPConstType *const_type = as_const_type(); + if (const_type != NULL) { + return const_type->_wrapped_around->remove_const(); + } + return this; +} + +/** + * Returns the type with any reference stripped off. + */ +CPPType *CPPType:: +remove_reference() { + const CPPTypedefType *td_type = as_typedef_type(); + if (td_type != NULL) { + CPPType *unwrapped = td_type->_type->remove_reference(); + if (unwrapped != td_type->_type) { + return unwrapped; + } else { + return this; + } + } + const CPPReferenceType *ref_type = as_reference_type(); + if (ref_type != NULL) { + return ref_type->_pointing_at; + } + return this; +} + +/** + * Returns the type with any pointer and cv-qualifiers stripped off. + */ +CPPType *CPPType:: +remove_pointer() { + switch (get_subtype()) { + case ST_typedef: + { + const CPPTypedefType *td_type = as_typedef_type(); + CPPType *unwrapped = td_type->_type->remove_pointer(); + if (unwrapped != td_type->_type) { + return unwrapped; + } else { + return this; + } + } + + case ST_pointer: + return ((const CPPPointerType *)this)->_pointing_at; + + case ST_const: + return ((const CPPConstType *)this)->_wrapped_around->remove_pointer(); + + default: + return this; + } +} + /** * Returns true if the type has even been typedef'ed and therefore has a * simple name available to stand for it. Extension types are all implicitly @@ -229,6 +395,14 @@ is_equivalent(const CPPType &other) const { return is_equal(&other); } +/** + * Returns true if variables of this type may be implicitly converted to + * the other type. + */ +bool CPPType:: +is_convertible_to(const CPPType *other) const { + return other->is_constructible(this); +} /** * Formats a C++-looking line that defines an instance of the given type, with diff --git a/dtool/src/cppparser/cppType.h b/dtool/src/cppparser/cppType.h index 298eaf179c..c709c475d6 100644 --- a/dtool/src/cppparser/cppType.h +++ b/dtool/src/cppparser/cppType.h @@ -45,11 +45,27 @@ public: CPPScope *global_scope); virtual bool is_tbd() const; + virtual bool is_fundamental() const; + virtual bool is_standard_layout() const; virtual bool is_trivial() const; + virtual bool is_constructible(const CPPType *type) const; virtual bool is_default_constructible() const; virtual bool is_copy_constructible() const; + virtual bool is_destructible() const; virtual bool is_parameter_expr() const; + // Convenience methods. + bool is_enum() const; + bool is_const() const; + bool is_reference() const; + bool is_pointer() const; + + CPPType *remove_const(); + inline CPPType *remove_volatile() { return this; } + inline CPPType *remove_cv() { return remove_const(); }; + CPPType *remove_reference(); + CPPType *remove_pointer(); + bool has_typedef_name() const; string get_typedef_name(CPPScope *scope = NULL) const; @@ -61,6 +77,7 @@ public: string get_alt_name(int n) const; virtual bool is_incomplete() const; + virtual bool is_convertible_to(const CPPType *other) const; virtual bool is_equivalent(const CPPType &other) const; void output_instance(ostream &out, const string &name, diff --git a/dtool/src/cppparser/cppTypedefType.cxx b/dtool/src/cppparser/cppTypedefType.cxx index aaede09529..61c569760e 100644 --- a/dtool/src/cppparser/cppTypedefType.cxx +++ b/dtool/src/cppparser/cppTypedefType.cxx @@ -157,6 +157,22 @@ is_tbd() const { return _type->is_tbd(); } +/** + * Returns true if the type is considered a fundamental type. + */ +bool CPPTypedefType:: +is_fundamental() const { + return _type->is_fundamental(); +} + +/** + * Returns true if the type is considered a standard layout type. + */ +bool CPPTypedefType:: +is_standard_layout() const { + return _type->is_standard_layout(); +} + /** * Returns true if the type is considered a Plain Old Data (POD) type. */ @@ -165,6 +181,14 @@ is_trivial() const { return _type->is_trivial(); } +/** + * Returns true if the type can be constructed using the given argument. + */ +bool CPPTypedefType:: +is_constructible(const CPPType *given_type) const { + return _type->is_constructible(given_type); +} + /** * Returns true if the type is default-constructible. */ @@ -181,6 +205,14 @@ is_copy_constructible() const { return _type->is_copy_constructible(); } +/** + * Returns true if the type is destructible. + */ +bool CPPTypedefType:: +is_destructible() const { + return _type->is_destructible(); +} + /** * Returns true if this declaration is an actual, factual declaration, or * false if some part of the declaration depends on a template parameter which @@ -300,6 +332,15 @@ resolve_type(CPPScope *current_scope, CPPScope *global_scope) { return this; } +/** + * Returns true if variables of this type may be implicitly converted to + * the other type. + */ +bool CPPTypedefType:: +is_convertible_to(const CPPType *other) const { + return _type->is_convertible_to(other); +} + /** * This is a little more forgiving than is_equal(): it returns true if the * types appear to be referring to the same thing, even if they may have diff --git a/dtool/src/cppparser/cppTypedefType.h b/dtool/src/cppparser/cppTypedefType.h index 2eae58cc68..280033738d 100644 --- a/dtool/src/cppparser/cppTypedefType.h +++ b/dtool/src/cppparser/cppTypedefType.h @@ -42,9 +42,13 @@ public: virtual bool is_incomplete() const; virtual bool is_tbd() const; + virtual bool is_fundamental() const; + virtual bool is_standard_layout() const; virtual bool is_trivial() const; + virtual bool is_constructible(const CPPType *type) const; virtual bool is_default_constructible() const; virtual bool is_copy_constructible() const; + virtual bool is_destructible() const; virtual bool is_fully_specified() const; @@ -60,6 +64,7 @@ public: virtual CPPType *resolve_type(CPPScope *current_scope, CPPScope *global_scope); + virtual bool is_convertible_to(const CPPType *other) const; virtual bool is_equivalent(const CPPType &other) const; virtual void output(ostream &out, int indent_level, CPPScope *scope, diff --git a/dtool/src/interrogate/interrogateBuilder.cxx b/dtool/src/interrogate/interrogateBuilder.cxx index 11ac166440..83f36c533b 100644 --- a/dtool/src/interrogate/interrogateBuilder.cxx +++ b/dtool/src/interrogate/interrogateBuilder.cxx @@ -2401,7 +2401,7 @@ define_struct_type(InterrogateType &itype, CPPStructType *cpptype, cpptype = TypeManager::resolve_type(cpptype)->as_struct_type(); assert(cpptype != (CPPStructType *)NULL); - bool has_virt_methods = cpptype->check_virtual(); + bool has_virt_methods = cpptype->is_polymorphic(); switch (cpptype->_type) { case CPPExtensionType::T_class: @@ -2501,7 +2501,7 @@ define_struct_type(InterrogateType &itype, CPPStructType *cpptype, // (For many compilers, this does not require a pointer change.) generate_casts = true; - } else if (has_virt_methods && (base_type->as_struct_type() == (CPPStructType *)NULL || !base_type->as_struct_type()->check_virtual())) { + } else if (has_virt_methods && (base_type->as_struct_type() == (CPPStructType *)NULL || !base_type->as_struct_type()->is_polymorphic())) { // Finally, if this class has virtual methods, but its parent // doesn't, then we have to upcast (because this class will require // space for a virtual function table pointer, while the parent @@ -2651,7 +2651,11 @@ define_struct_type(InterrogateType &itype, CPPStructType *cpptype, } } - if ((itype._flags & InterrogateType::F_inherited_destructor) != 0) { + if (!cpptype->is_destructible()) { + // There's no way to destruct the type. + itype._destructor = 0; + + } else if ((itype._flags & InterrogateType::F_inherited_destructor) != 0) { // If we have inherited our virtual destructor from our base class, go // ahead and assign the same function index. assert(!itype._derivations.empty()); diff --git a/dtool/src/interrogatedb/extension.h b/dtool/src/interrogatedb/extension.h index dd995081c1..8e844e3ebc 100644 --- a/dtool/src/interrogatedb/extension.h +++ b/dtool/src/interrogatedb/extension.h @@ -47,6 +47,14 @@ invoke_extension(T *ptr) { return ext; } +template +inline Extension +invoke_extension(T &ptr) { + Extension ext; + ext._this = &ptr; + return ext; +} + /** * The const version of the above function. */ @@ -58,4 +66,12 @@ invoke_extension(const T *ptr) { return ext; } +template +inline const Extension +invoke_extension(const T &ptr) { + Extension ext; + ext._this = (T *) &ptr; + return ext; +} + #endif diff --git a/dtool/src/parser-inc/type_traits b/dtool/src/parser-inc/type_traits new file mode 100644 index 0000000000..7e55b03fbc --- /dev/null +++ b/dtool/src/parser-inc/type_traits @@ -0,0 +1,96 @@ +#pragma once + +#include + +namespace std { + template + struct integral_constant { + static constexpr T value = v; + typedef T value_type; + constexpr operator value_type() const noexcept { return value; } + constexpr value_type operator()() const noexcept { return value; } + }; + + typedef integral_constant true_type; + typedef integral_constant false_type; + + template + struct is_same : std::false_type {}; + + template + struct is_same : std::true_type {}; + + template + struct is_void : std::false_type {}; + + template<> + struct is_void : std::true_type {}; + + template + struct is_enum : integral_constant {}; + + template + struct is_union : integral_constant {}; + + template + struct is_class : integral_constant {}; + + template + struct is_fundamental : integral_constant {}; + + template + struct is_compound : integral_constant {}; + + template + struct is_trivial : integral_constant {}; + + template + struct is_standard_layout : integral_constant {}; + + template + struct is_pod : integral_constant {}; + + template + struct is_empty : integral_constant {}; + + template + struct is_polymorphic : integral_constant {}; + + template + struct is_abstract : integral_constant {}; + + template + struct is_final : integral_constant {}; + + template + struct is_default_constructible : integral_constant {}; + + template + struct is_copy_constructible : integral_constant {}; + + template + struct is_move_constructible : integral_constant {}; + + template + struct is_destructible : integral_constant {}; + + template + struct has_virtual_destructor : integral_constant {}; + + template + struct alignment_of : std::integral_constant {}; + + template + struct is_base_of : integral_constant {}; + + template + struct is_convertible : integral_constant {}; + + template struct add_cv { typedef const volatile T type; }; + template struct add_const { typedef const T type; }; + template struct add_volatile { typedef volatile T type; }; + + template struct add_lvalue_reference { typedef T &type; }; + template struct add_rvalue_reference { typedef T &&type; }; + template struct add_pointer { typedef T *type; }; +} diff --git a/dtool/src/parser-inc/xmmintrin.h b/dtool/src/parser-inc/xmmintrin.h new file mode 100644 index 0000000000..eb127708a8 --- /dev/null +++ b/dtool/src/parser-inc/xmmintrin.h @@ -0,0 +1 @@ +struct __m128;