From 5aabd5669716786d6f09caec5b7ede803b042228 Mon Sep 17 00:00:00 2001 From: rdb Date: Sat, 14 Jan 2017 22:35:38 +0100 Subject: [PATCH 01/29] cppparser: support C++11 raw string literals --- dtool/src/cppparser/cppExpression.cxx | 4 ++ dtool/src/cppparser/cppPreprocessor.cxx | 53 ++++++++++++++++++++++--- dtool/src/cppparser/cppPreprocessor.h | 1 + 3 files changed, 53 insertions(+), 5 deletions(-) diff --git a/dtool/src/cppparser/cppExpression.cxx b/dtool/src/cppparser/cppExpression.cxx index f185514de4..13248847a6 100644 --- a/dtool/src/cppparser/cppExpression.cxx +++ b/dtool/src/cppparser/cppExpression.cxx @@ -1558,6 +1558,10 @@ output(ostream &out, int indent_level, CPPScope *scope, bool) const { out << "\\\""; break; + case '\\': + out << "\\\\"; + break; + default: if (isprint(*si)) { out << *si; diff --git a/dtool/src/cppparser/cppPreprocessor.cxx b/dtool/src/cppparser/cppPreprocessor.cxx index feda153530..c6a7dd0b07 100644 --- a/dtool/src/cppparser/cppPreprocessor.cxx +++ b/dtool/src/cppparser/cppPreprocessor.cxx @@ -1870,11 +1870,19 @@ get_identifier(int c) { loc.last_column = get_col_number(); if ((c == '\'' || c == '"') && - (name == "L" || name == "u8" || - name == "u" || name == "U")) { + (name == "L" || name == "u8" || name == "u" || name == "U" || + name == "R" || name == "LR" || name == "u8R" || name == "uR" || name == "UR")) { // This is actually a wide-character or wide-string literal or some such. - // Figure out the correct character type to use. + get(); + string str; + if (name[name.size() - 1] == 'R') { + name.resize(name.size() - 1); + str = scan_raw(c); + } else { + str = scan_quoted(c); + } + // Figure out the correct character type to use. CPPExpression::Type type; if (name == "L") { type = CPPExpression::T_wstring; @@ -1887,8 +1895,6 @@ get_identifier(int c) { } else { type = CPPExpression::T_string; } - get(); - string str = scan_quoted(c); loc.last_line = get_line_number(); loc.last_column = get_col_number(); @@ -2772,6 +2778,43 @@ scan_quoted(int c) { return str; } +/** + * Parses a C++11 raw string. + */ +string CPPPreprocessor:: +scan_raw(int c) { + int quote_mark = c; + + string delimiter = ")"; + + string str; + c = get(); + while (c != EOF && c != '(') { + delimiter += c; + c = get(); + } + + // OK, now start parsing the string, until we see the delimiter again. + c = get(); + while (c != EOF) { + if (c == quote_mark) { + // We encountered a quote mark - did the last part of the string end + // with the given delimiter? If so, we've reached the end. + if (str.compare(str.size() - delimiter.size(), delimiter.size(), delimiter) == 0) { + str.resize(str.size() - delimiter.size()); + break; + } + } + str += c; + c = get(); + } + + if (c != quote_mark) { + warning("Unclosed string"); + } + return str; +} + /** * Returns true if the manifest is one that is being ignored right now * (presumably because we are presently expanding it). diff --git a/dtool/src/cppparser/cppPreprocessor.h b/dtool/src/cppparser/cppPreprocessor.h index e119211596..20f313758a 100644 --- a/dtool/src/cppparser/cppPreprocessor.h +++ b/dtool/src/cppparser/cppPreprocessor.h @@ -166,6 +166,7 @@ private: static int check_keyword(const string &name); int scan_escape_sequence(int c); string scan_quoted(int c); + string scan_raw(int c); bool should_ignore_manifest(const CPPManifest *manifest) const; bool should_ignore_preprocessor() const; From e12420571b898b4481d64e38336a7909bffd4814 Mon Sep 17 00:00:00 2001 From: rdb Date: Sat, 14 Jan 2017 22:36:31 +0100 Subject: [PATCH 02/29] cppparser: support C++11 lambda expressions --- dtool/src/cppparser/cppBison.yxx | 83 +++++++- dtool/src/cppparser/cppBisonDefs.h | 4 + dtool/src/cppparser/cppClosureType.cxx | 188 ++++++++++++++++++ dtool/src/cppparser/cppClosureType.h | 64 ++++++ dtool/src/cppparser/cppDeclaration.cxx | 8 + dtool/src/cppparser/cppDeclaration.h | 6 + dtool/src/cppparser/cppExpression.cxx | 31 +++ dtool/src/cppparser/cppExpression.h | 3 + dtool/src/cppparser/cppFunctionType.cxx | 36 +++- .../src/cppparser/p3cppParser_composite1.cxx | 1 + 10 files changed, 410 insertions(+), 14 deletions(-) create mode 100755 dtool/src/cppparser/cppClosureType.cxx create mode 100755 dtool/src/cppparser/cppClosureType.h diff --git a/dtool/src/cppparser/cppBison.yxx b/dtool/src/cppparser/cppBison.yxx index 04cdb53a4b..655432c8dc 100644 --- a/dtool/src/cppparser/cppBison.yxx +++ b/dtool/src/cppparser/cppBison.yxx @@ -8,6 +8,7 @@ #include "cppBisonDefs.h" #include "cppParser.h" +#include "cppClosureType.h" #include "cppExpression.h" #include "cppSimpleType.h" #include "cppExtensionType.h" @@ -44,6 +45,7 @@ static CPPEnumType *current_enum = NULL; static int current_storage_class = 0; static CPPType *current_type = NULL; static CPPExpression *current_expr = NULL; +static CPPClosureType *current_closure = NULL; static int publish_nest_level = 0; static CPPVisibility publish_previous; static YYLTYPE publish_loc; @@ -363,6 +365,8 @@ pop_struct() { %type function_parameters %type formal_parameter_list %type formal_parameters +%type capture_list +%type capture %type template_parameter_maybe_initialize %type maybe_initialize %type maybe_initialize_or_constructor_body @@ -1221,6 +1225,15 @@ function_post: { $$ = $1 | (int)CPPFunctionType::F_noexcept; } +/* | function_post KW_NOEXCEPT '(' const_expr ')' +{ + CPPExpression::Result result = $4->evaluate(); + if (result._type == CPPExpression::RT_error) { + yywarning("noexcept requires a constant expression", @4); + } else if (result.as_boolean()) { + $$ = $1 | (int)CPPFunctionType::F_noexcept; + } +}*/ | function_post KW_FINAL { $$ = $1 | (int)CPPFunctionType::F_final; @@ -1241,6 +1254,11 @@ function_post: { // Used for lambdas, currently ignored. $$ = $1; +} + | function_post KW_CONSTEXPR +{ + // Used for lambdas in C++17, currently ignored. + $$ = $1; } | function_post KW_THROW '(' ')' { @@ -3468,11 +3486,16 @@ const_operand: } | '[' capture_list ']' function_post maybe_trailing_return_type '{' code '}' { - $$ = NULL; + $2->_flags = $4; + $2->_return_type = $5; + $$ = new CPPExpression(CPPExpression::lambda($2)); } | '[' capture_list ']' '(' function_parameter_list ')' function_post maybe_trailing_return_type '{' code '}' { - $$ = NULL; + $2->_parameters = $5; + $2->_flags = $7; + $2->_return_type = $8; + $$ = new CPPExpression(CPPExpression::lambda($2)); } | KW_HAS_VIRTUAL_DESTRUCTOR '(' full_type ')' { @@ -3794,15 +3817,63 @@ formal_const_operand: /* The contents of the [] list preceding a lambda expression. */ capture_list: empty +{ + $$ = new CPPClosureType(); +} + | '=' +{ + $$ = new CPPClosureType(CPPClosureType::CT_by_value); +} + | '&' +{ + $$ = new CPPClosureType(CPPClosureType::CT_by_reference); +} | capture - | capture ',' capture_list +{ + $$ = new CPPClosureType(); + $$->_captures.push_back(*$1); + delete $1; +} + | capture_list ',' capture +{ + $$ = $1; + $$->_captures.push_back(*$3); + delete $3; +} ; capture: - '&' - | '=' - | '&' name + '&' name +{ + $$ = new CPPClosureType::Capture; + $$->_name = $2->get_simple_name(); + $$->_type = CPPClosureType::CT_by_reference; +} + | '&' name ELLIPSIS +{ + $$ = new CPPClosureType::Capture; + $$->_name = $2->get_simple_name(); + $$->_type = CPPClosureType::CT_by_reference; +} | name +{ + $$ = new CPPClosureType::Capture; + $$->_name = $1->get_simple_name(); + if ($$->_name == "this") { + $$->_type = CPPClosureType::CT_by_reference; + } else { + $$->_type = CPPClosureType::CT_by_value; + } +} + | '*' name +{ + $$ = new CPPClosureType::Capture; + $$->_name = $2->get_simple_name(); + $$->_type = CPPClosureType::CT_by_value; + if ($$->_name != "this") { + yywarning("only capture name 'this' may be preceded by an asterisk", @2); + } +} ; class_derivation_name: diff --git a/dtool/src/cppparser/cppBisonDefs.h b/dtool/src/cppparser/cppBisonDefs.h index b90c47cc20..1ae1caece8 100644 --- a/dtool/src/cppparser/cppBisonDefs.h +++ b/dtool/src/cppparser/cppBisonDefs.h @@ -23,6 +23,7 @@ #include +#include "cppClosureType.h" #include "cppExtensionType.h" #include "cppFile.h" @@ -42,6 +43,7 @@ class CPPParameterList; class CPPTemplateParameterList; class CPPScope; class CPPIdentifier; +class CPPCaptureType; void parse_cpp(CPPParser *cp); CPPExpression *parse_const_expr(CPPPreprocessor *pp, @@ -81,6 +83,8 @@ public: CPPExtensionType::Type extension_enum; CPPExpression *expr; CPPIdentifier *identifier; + CPPClosureType *closure_type; + CPPClosureType::Capture *capture; } u; }; #define YYSTYPE cppyystype diff --git a/dtool/src/cppparser/cppClosureType.cxx b/dtool/src/cppparser/cppClosureType.cxx new file mode 100755 index 0000000000..fe5d99b5ad --- /dev/null +++ b/dtool/src/cppparser/cppClosureType.cxx @@ -0,0 +1,188 @@ +/** + * PANDA 3D SOFTWARE + * Copyright (c) Carnegie Mellon University. All rights reserved. + * + * All use of this software is subject to the terms of the revised BSD + * license. You should have received a copy of this license along + * with this source code in a file named "LICENSE." + * + * @file cppClosureType.cxx + * @author rdb + * @date 2017-01-14 + */ + +#include "cppClosureType.h" + +/** + * + */ +CPPClosureType:: +CPPClosureType(CaptureType default_capture) : + CPPFunctionType(NULL, NULL, 0), + _default_capture(default_capture) { +} + +/** + * + */ +CPPClosureType:: +CPPClosureType(const CPPClosureType ©) : + CPPFunctionType(copy), + _captures(copy._captures), + _default_capture(copy._default_capture) +{ +} + +/** + * + */ +void CPPClosureType:: +operator = (const CPPClosureType ©) { + CPPFunctionType::operator = (copy); + _captures = copy._captures; + _default_capture = copy._default_capture; +} + +/** + * Adds a new capture to the beginning of the capture list. + */ +void CPPClosureType:: +add_capture(string name, CaptureType type) { + if (type == CT_none) { + if (name == "this") { + type = CT_by_reference; + } else { + type = CT_by_value; + } + } + + Capture capture = {move(name), type}; + _captures.insert(_captures.begin(), move(capture)); +} + +/** + * Returns true if this declaration is an actual, factual declaration, or + * false if some part of the declaration depends on a template parameter which + * has not yet been instantiated. + */ +bool CPPClosureType:: +is_fully_specified() const { + return CPPFunctionType::is_fully_specified(); +} + +/** + * Returns true if the type is default-constructible. + */ +bool CPPClosureType:: +is_default_constructible() const { + return false; +} + +/** + * Returns true if the type is copy-constructible. + */ +bool CPPClosureType:: +is_copy_constructible() const { + return true; +} + +/** + * Returns true if the type is destructible. + */ +bool CPPClosureType:: +is_destructible() const { + return true; +} + +/** + * + */ +void CPPClosureType:: +output(ostream &out, int indent_level, CPPScope *scope, bool complete) const { + out.put('['); + + bool have_capture = false; + switch (_default_capture) { + case CT_none: + break; + case CT_by_reference: + out.put('&'); + have_capture = true; + break; + case CT_by_value: + out.put('='); + have_capture = true; + break; + } + + Captures::const_iterator it; + for (it = _captures.begin(); it != _captures.end(); ++it) { + if (have_capture) { + out << ", "; + } + if ((*it)._name == "this") { + if ((*it)._type == CT_by_value) { + out.put('*'); + } + } else { + if ((*it)._type == CT_by_reference) { + out.put('&'); + } + } + out << (*it)._name; + have_capture = true; + } + out.put(']'); + + if (_parameters != NULL) { + out.put('('); + _parameters->output(out, scope, true, -1); + out.put(')'); + } + + if (_flags & F_noexcept) { + out << " noexcept"; + } + + if (_return_type != NULL) { + out << " -> "; + _return_type->output(out, indent_level, scope, false); + } + + out << " {}"; +} + +/** + * + */ +CPPDeclaration::SubType CPPClosureType:: +get_subtype() const { + return ST_closure; +} + +/** + * + */ +CPPClosureType *CPPClosureType:: +as_closure_type() { + return this; +} + +/** + * Called by CPPDeclaration() to determine whether this type is equivalent to + * another type of the same type. + */ +bool CPPClosureType:: +is_equal(const CPPDeclaration *other) const { + return (this == other); +} + + +/** + * Called by CPPDeclaration() to determine whether this type should be ordered + * before another type of the same type, in an arbitrary but fixed ordering. + */ +bool CPPClosureType:: +is_less(const CPPDeclaration *other) const { + return (this < other); +} diff --git a/dtool/src/cppparser/cppClosureType.h b/dtool/src/cppparser/cppClosureType.h new file mode 100755 index 0000000000..c682c6adca --- /dev/null +++ b/dtool/src/cppparser/cppClosureType.h @@ -0,0 +1,64 @@ +/** + * PANDA 3D SOFTWARE + * Copyright (c) Carnegie Mellon University. All rights reserved. + * + * All use of this software is subject to the terms of the revised BSD + * license. You should have received a copy of this license along + * with this source code in a file named "LICENSE." + * + * @file cppClosureType.h + * @author rdb + * @date 2017-01-14 + */ + +#ifndef CPPCLOSURETYPE_H +#define CPPCLOSURETYPE_H + +#include "dtoolbase.h" + +#include "cppFunctionType.h" + +/** + * The type of a lambda expression. This is like a function, but with + * additional captures defined. + */ +class CPPClosureType : public CPPFunctionType { +public: + enum CaptureType { + CT_none, + CT_by_reference, + CT_by_value, + }; + + CPPClosureType(CaptureType default_capture = CT_none); + CPPClosureType(const CPPClosureType ©); + void operator = (const CPPClosureType ©); + + struct Capture { + string _name; + CaptureType _type; + }; + typedef vector Captures; + Captures _captures; + + CaptureType _default_capture; + + void add_capture(string name, CaptureType type); + + virtual bool is_fully_specified() const; + + virtual bool is_default_constructible() const; + virtual bool is_copy_constructible() const; + virtual bool is_destructible() const; + + virtual void output(ostream &out, int indent_level, CPPScope *scope, + bool complete) const; + virtual SubType get_subtype() const; + virtual CPPClosureType *as_closure_type(); + +protected: + virtual bool is_equal(const CPPDeclaration *other) const; + virtual bool is_less(const CPPDeclaration *other) const; +}; + +#endif diff --git a/dtool/src/cppparser/cppDeclaration.cxx b/dtool/src/cppparser/cppDeclaration.cxx index 76f72c43e0..3d2e5e68f5 100644 --- a/dtool/src/cppparser/cppDeclaration.cxx +++ b/dtool/src/cppparser/cppDeclaration.cxx @@ -311,6 +311,14 @@ as_make_seq() { return (CPPMakeSeq *)NULL; } +/** + * + */ +CPPClosureType *CPPDeclaration:: +as_closure_type() { + return (CPPClosureType *)NULL; +} + /** * Called by CPPDeclaration to determine whether this type is equivalent to * another type of the same type. diff --git a/dtool/src/cppparser/cppDeclaration.h b/dtool/src/cppparser/cppDeclaration.h index a06baa3123..8acaf6e50c 100644 --- a/dtool/src/cppparser/cppDeclaration.h +++ b/dtool/src/cppparser/cppDeclaration.h @@ -48,6 +48,7 @@ class CPPEnumType; class CPPTypeProxy; class CPPMakeProperty; class CPPMakeSeq; +class CPPClosureType; class CPPClassTemplateParameter; class CPPTBDType; class CPPScope; @@ -85,6 +86,7 @@ public: ST_tbd, ST_type_proxy, ST_typedef, + ST_closure, }; CPPDeclaration(const CPPFile &file); @@ -140,6 +142,7 @@ public: virtual CPPTypeProxy *as_type_proxy(); virtual CPPMakeProperty *as_make_property(); virtual CPPMakeSeq *as_make_seq(); + virtual CPPClosureType *as_closure_type(); inline const CPPInstance *as_instance() const { return ((CPPDeclaration *)this)->as_instance(); @@ -207,6 +210,9 @@ public: inline const CPPMakeSeq *as_make_seq() const { return ((CPPDeclaration *)this)->as_make_seq(); } + inline const CPPClosureType *as_closure_type() const { + return ((CPPDeclaration *)this)->as_closure_type(); + } CPPVisibility _vis; CPPTemplateScope *_template_scope; diff --git a/dtool/src/cppparser/cppExpression.cxx b/dtool/src/cppparser/cppExpression.cxx index 13248847a6..a891f4ecf6 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 "cppClosureType.h" #include "cppStructType.h" #include "cppBison.h" #include "pdtoa.h" @@ -438,6 +439,17 @@ alignof_func(CPPType *type) { return expr; } +/** + * + */ +CPPExpression CPPExpression:: +lambda(CPPClosureType *type) { + CPPExpression expr(0); + expr._type = T_lambda; + expr._u._closure_type = type; + return expr; +} + /** * */ @@ -1169,6 +1181,9 @@ determine_type() const { case T_type_trait: return bool_type; + case T_lambda: + return _u._closure_type; + default: cerr << "**invalid operand**\n"; abort(); @@ -1259,6 +1274,9 @@ is_fully_specified() const { case T_type_trait: return _u._type_trait._type->is_fully_specified(); + case T_lambda: + return _u._closure_type->is_fully_specified(); + default: return true; } @@ -1478,6 +1496,9 @@ is_tbd() const { case T_type_trait: return _u._type_trait._type->is_tbd(); + case T_lambda: + return _u._closure_type->is_tbd(); + default: return false; } @@ -1950,6 +1971,10 @@ output(ostream &out, int indent_level, CPPScope *scope, bool) const { out << ')'; break; + case T_lambda: + _u._closure_type->output(out, indent_level, scope, false); + break; + default: out << "(** invalid operand type " << (int)_type << " **)"; } @@ -2109,6 +2134,9 @@ is_equal(const CPPDeclaration *other) const { return _u._type_trait._trait == ot->_u._type_trait._trait && _u._type_trait._type == ot->_u._type_trait._type; + case T_lambda: + return _u._closure_type == ot->_u._closure_type; + default: cerr << "(** invalid operand type " << (int)_type << " **)"; } @@ -2216,6 +2244,9 @@ is_less(const CPPDeclaration *other) const { } return *_u._type_trait._type < *ot->_u._type_trait._type; + case T_lambda: + return _u._closure_type < ot->_u._closure_type; + default: cerr << "(** invalid operand type " << (int)_type << " **)"; } diff --git a/dtool/src/cppparser/cppExpression.h b/dtool/src/cppparser/cppExpression.h index c3483ef3e9..2cdb297c36 100644 --- a/dtool/src/cppparser/cppExpression.h +++ b/dtool/src/cppparser/cppExpression.h @@ -61,6 +61,7 @@ public: T_typeid_type, T_typeid_expr, T_type_trait, + T_lambda, // These are used when parsing =default and =delete methods. T_default, @@ -87,6 +88,7 @@ public: static CPPExpression sizeof_func(CPPType *type); static CPPExpression sizeof_ellipsis_func(CPPIdentifier *ident); static CPPExpression alignof_func(CPPType *type); + static CPPExpression lambda(CPPClosureType *type); static CPPExpression literal(unsigned long long value, CPPInstance *lit_op); static CPPExpression literal(long double value, CPPInstance *lit_op); @@ -150,6 +152,7 @@ public: CPPInstance *_variable; CPPFunctionGroup *_fgroup; CPPIdentifier *_ident; + CPPClosureType *_closure_type; struct { union { CPPType *_type; diff --git a/dtool/src/cppparser/cppFunctionType.cxx b/dtool/src/cppparser/cppFunctionType.cxx index 1872ea11f5..d016695bf8 100644 --- a/dtool/src/cppparser/cppFunctionType.cxx +++ b/dtool/src/cppparser/cppFunctionType.cxx @@ -31,7 +31,8 @@ CPPFunctionType(CPPType *return_type, CPPParameterList *parameters, // If the parameter list contains just the token "void", it means no // parameters. - if (_parameters->_parameters.size() == 1 && + if (_parameters != NULL && + _parameters->_parameters.size() == 1 && _parameters->_parameters.front()->_type->as_simple_type() != NULL && _parameters->_parameters.front()->_type->as_simple_type()->_type == CPPSimpleType::T_void && @@ -95,8 +96,10 @@ substitute_decl(CPPDeclaration::SubstDecl &subst, ->as_type(); } - rep->_parameters = - _parameters->substitute_decl(subst, current_scope, global_scope); + if (_parameters != NULL) { + rep->_parameters = + _parameters->substitute_decl(subst, current_scope, global_scope); + } if (rep->_return_type == _return_type && rep->_parameters == _parameters) { @@ -117,8 +120,12 @@ substitute_decl(CPPDeclaration::SubstDecl &subst, CPPType *CPPFunctionType:: resolve_type(CPPScope *current_scope, CPPScope *global_scope) { CPPType *rtype = _return_type->resolve_type(current_scope, global_scope); - CPPParameterList *params = - _parameters->resolve_type(current_scope, global_scope); + CPPParameterList *params; + if (_parameters == NULL) { + params = NULL; + } else { + params = _parameters->resolve_type(current_scope, global_scope); + } if (rtype != _return_type || params != _parameters) { CPPFunctionType *rep = new CPPFunctionType(*this); @@ -139,7 +146,7 @@ is_tbd() const { if (_return_type->is_tbd()) { return true; } - return _parameters->is_tbd(); + return _parameters == NULL || _parameters->is_tbd(); } /** @@ -294,6 +301,10 @@ get_num_default_parameters() const { // The trick is just to count, beginning from the end and working towards // the front, the number of parameters that have some initializer. + if (_parameters == NULL) { + return 0; + } + const CPPParameterList::Parameters ¶ms = _parameters->_parameters; CPPParameterList::Parameters::const_reverse_iterator pi; int count = 0; @@ -362,7 +373,11 @@ is_equal(const CPPDeclaration *other) const { if (_flags != ot->_flags) { return false; } - if (*_parameters != *ot->_parameters) { + if (_parameters == ot->_parameters) { + return true; + } + if (_parameters == NULL || ot->_parameters == NULL || + *_parameters != *ot->_parameters) { return false; } return true; @@ -384,6 +399,11 @@ is_less(const CPPDeclaration *other) const { if (_flags != ot->_flags) { return _flags < ot->_flags; } - + if (_parameters == ot->_parameters) { + return 0; + } + if (_parameters == NULL || ot->_parameters == NULL) { + return _parameters < ot->_parameters; + } return *_parameters < *ot->_parameters; } diff --git a/dtool/src/cppparser/p3cppParser_composite1.cxx b/dtool/src/cppparser/p3cppParser_composite1.cxx index 8b60e60a17..e8020dd64d 100644 --- a/dtool/src/cppparser/p3cppParser_composite1.cxx +++ b/dtool/src/cppparser/p3cppParser_composite1.cxx @@ -2,6 +2,7 @@ #include "cppFunctionType.cxx" #include "cppGlobals.cxx" #include "cppCommentBlock.cxx" +#include "cppClosureType.cxx" #include "cppConstType.cxx" #include "cppDeclaration.cxx" #include "cppMakeProperty.cxx" From e2771d39a95915c7e9a64470a3b610516569f3a9 Mon Sep 17 00:00:00 2001 From: rdb Date: Sun, 15 Jan 2017 15:39:34 +0100 Subject: [PATCH 03/29] cppparser: support for various C++11/C++14/C++17 features: - decltype(auto) - attributes (ie. [[deprecated]]), incl. with C++17 "using" - extern template class (parses) - sizeof struct members - aggregate initialization - initializers in capture lists - alignas (parses) --- dtool/src/cppparser/cppBison.yxx | 138 ++++++++++++++++++------ dtool/src/cppparser/cppClosureType.cxx | 19 ++-- dtool/src/cppparser/cppClosureType.h | 3 +- dtool/src/cppparser/cppExpression.cxx | 65 ++++++++++- dtool/src/cppparser/cppExpression.h | 3 + dtool/src/cppparser/cppFunctionType.cxx | 25 +++++ dtool/src/cppparser/cppFunctionType.h | 2 + dtool/src/cppparser/cppPreprocessor.cxx | 22 ++++ dtool/src/cppparser/cppPreprocessor.h | 1 + dtool/src/cppparser/cppToken.cxx | 8 ++ 10 files changed, 243 insertions(+), 43 deletions(-) diff --git a/dtool/src/cppparser/cppBison.yxx b/dtool/src/cppparser/cppBison.yxx index 655432c8dc..8c0e9bf982 100644 --- a/dtool/src/cppparser/cppBison.yxx +++ b/dtool/src/cppparser/cppBison.yxx @@ -249,6 +249,8 @@ pop_struct() { %token XOREQUAL %token LSHIFTEQUAL %token RSHIFTEQUAL +%token ATTR_LEFT +%token ATTR_RIGHT %token KW_ALIGNAS %token KW_ALIGNOF @@ -874,10 +876,18 @@ storage_class: { $$ = $2 | (int)CPPInstance::SC_thread_local; } - | '[' '[' attribute_specifiers ']' ']' storage_class + | ATTR_LEFT attribute_specifiers ATTR_RIGHT storage_class { // Ignore attribute specifiers for now. - $$ = $6; + $$ = $4; +} + | KW_ALIGNAS '(' const_expr ')' storage_class +{ + $$ = $5; +} + | KW_ALIGNAS '(' type_decl ')' storage_class +{ + $$ = $5; } ; @@ -889,6 +899,7 @@ attribute_specifiers: attribute_specifier: name | name '(' formal_parameter_list ')' + | KW_USING name ':' attribute_specifier ; type_like_declaration: @@ -1272,10 +1283,10 @@ function_post: { $$ = $1; } -/* | function_post '[' '[' attribute_specifiers ']' ']' + | function_post ATTR_LEFT attribute_specifiers ATTR_RIGHT { $$ = $1; -}*/ +} ; function_operator: @@ -1443,7 +1454,8 @@ more_template_declaration: ; template_declaration: - KW_TEMPLATE + KW_EXTERN template_declaration + | KW_TEMPLATE { push_scope(new CPPTemplateScope(current_scope)); } @@ -1451,7 +1463,7 @@ template_declaration: { pop_scope(); } - | KW_TEMPLATE type_like_declaration + | KW_TEMPLATE type_like_declaration ; template_formal_parameters: @@ -1903,6 +1915,10 @@ function_parameter: | KW_REGISTER function_parameter { $$ = $2; +} + | ATTR_LEFT attribute_specifiers ATTR_RIGHT function_parameter +{ + $$ = $4; } ; @@ -2246,16 +2262,16 @@ type: { $$ = CPPType::new_type($1); } - | struct_keyword name + | struct_keyword struct_attributes name { - CPPType *type = $2->find_type(current_scope, global_scope, false, current_lexer); + CPPType *type = $3->find_type(current_scope, global_scope, false, current_lexer); if (type != NULL) { $$ = type; } else { CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType($1, $2, current_scope, @1.file)) + CPPType::new_type(new CPPExtensionType($1, $3, current_scope, @1.file)) ->as_extension_type(); - CPPScope *scope = $2->get_scope(current_scope, global_scope); + CPPScope *scope = $3->get_scope(current_scope, global_scope); if (scope != NULL) { scope->define_extension_type(et); } @@ -2286,6 +2302,10 @@ type: str << *$3; yyerror("could not determine type of " + str.str(), @3); } +} + | KW_DECLTYPE '(' KW_AUTO ')' +{ + $$ = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } | KW_UNDERLYING_TYPE '(' full_type ')' { @@ -2343,16 +2363,16 @@ type_decl: { $$ = new CPPTypeDeclaration(CPPType::new_type($1)); } - | struct_keyword name + | struct_keyword struct_attributes name { - CPPType *type = $2->find_type(current_scope, global_scope, false, current_lexer); + CPPType *type = $3->find_type(current_scope, global_scope, false, current_lexer); if (type != NULL) { $$ = type; } else { CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType($1, $2, current_scope, @1.file)) + CPPType::new_type(new CPPExtensionType($1, $3, current_scope, @1.file)) ->as_extension_type(); - CPPScope *scope = $2->get_scope(current_scope, global_scope); + CPPScope *scope = $3->get_scope(current_scope, global_scope); if (scope != NULL) { scope->define_extension_type(et); } @@ -2401,6 +2421,10 @@ type_decl: str << *$3; yyerror("could not determine type of " + str.str(), @3); } +} + | KW_DECLTYPE '(' KW_AUTO ')' +{ + $$ = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } | KW_UNDERLYING_TYPE '(' full_type ')' { @@ -2435,16 +2459,16 @@ predefined_type: { $$ = CPPType::new_type(new CPPTBDType($2)); } - | struct_keyword name + | struct_keyword struct_attributes name { - CPPType *type = $2->find_type(current_scope, global_scope, false, current_lexer); + CPPType *type = $3->find_type(current_scope, global_scope, false, current_lexer); if (type != NULL) { $$ = type; } else { CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType($1, $2, current_scope, @1.file)) + CPPType::new_type(new CPPExtensionType($1, $3, current_scope, @1.file)) ->as_extension_type(); - CPPScope *scope = $2->get_scope(current_scope, global_scope); + CPPScope *scope = $3->get_scope(current_scope, global_scope); if (scope != NULL) { scope->define_extension_type(et); } @@ -2525,8 +2549,15 @@ full_type: } ; +struct_attributes: + empty + | struct_attributes ATTR_LEFT attribute_specifiers ATTR_RIGHT + | struct_attributes KW_ALIGNAS '(' const_expr ')' + | struct_attributes KW_ALIGNAS '(' type_decl ')' + ; + anonymous_struct: - struct_keyword '{' + struct_keyword struct_attributes '{' { CPPVisibility starting_vis = ($1 == CPPExtensionType::T_class) ? V_private : V_public; @@ -2550,19 +2581,19 @@ anonymous_struct: ; named_struct: - struct_keyword name_no_final + struct_keyword struct_attributes name_no_final { CPPVisibility starting_vis = ($1 == CPPExtensionType::T_class) ? V_private : V_public; - CPPScope *scope = $2->get_scope(current_scope, global_scope, current_lexer); + CPPScope *scope = $3->get_scope(current_scope, global_scope, current_lexer); if (scope == NULL) { scope = current_scope; } - CPPScope *new_scope = new CPPScope(scope, $2->_names.back(), + CPPScope *new_scope = new CPPScope(scope, $3->_names.back(), starting_vis); - CPPStructType *st = new CPPStructType($1, $2, current_scope, + CPPStructType *st = new CPPStructType($1, $3, current_scope, new_scope, @1.file); new_scope->set_struct_type(st); current_scope->define_extension_type(st); @@ -2945,6 +2976,7 @@ element: | SCOPE | PLUSPLUS | MINUSMINUS | TIMESEQUAL | DIVIDEEQUAL | MODEQUAL | PLUSEQUAL | MINUSEQUAL | OREQUAL | ANDEQUAL | XOREQUAL | LSHIFTEQUAL | RSHIFTEQUAL + | ATTR_LEFT | ATTR_RIGHT | KW_ALIGNAS | KW_ALIGNOF | KW_AUTO | 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 @@ -3028,6 +3060,18 @@ no_angle_bracket_const_expr: | KW_SIZEOF '(' full_type ')' %prec UNARY { $$ = new CPPExpression(CPPExpression::sizeof_func($3)); +} + | KW_SIZEOF '(' IDENTIFIER ')' %prec UNARY +{ + CPPDeclaration *arg = $3->find_symbol(current_scope, global_scope, current_lexer); + if (arg == (CPPDeclaration *)NULL) { + yyerror("undefined sizeof argument: " + $3->get_fully_scoped_name(), @3); + } else if (arg->get_subtype() == CPPDeclaration::ST_instance) { + CPPInstance *inst = arg->as_instance(); + $$ = new CPPExpression(CPPExpression::sizeof_func(inst->_type)); + } else { + $$ = new CPPExpression(CPPExpression::sizeof_func(arg->as_type())); + } } | KW_SIZEOF ELLIPSIS '(' name ')' %prec UNARY { @@ -3190,6 +3234,16 @@ const_expr: } assert(type != NULL); $$ = new CPPExpression(CPPExpression::construct_op(type, $3)); +} + | TYPENAME_IDENTIFIER '{' optional_const_expr_comma '}' +{ + // Aggregate initialization. + CPPType *type = $1->find_type(current_scope, global_scope, false, current_lexer); + if (type == NULL) { + yyerror(string("internal error resolving type ") + $1->get_fully_scoped_name(), @1); + } + assert(type != NULL); + $$ = new CPPExpression(CPPExpression::aggregate_init_op(type, $3)); } | KW_INT '(' optional_const_expr_comma ')' { @@ -3270,6 +3324,18 @@ const_expr: | KW_SIZEOF '(' full_type ')' %prec UNARY { $$ = new CPPExpression(CPPExpression::sizeof_func($3)); +} + | KW_SIZEOF '(' IDENTIFIER ')' %prec UNARY +{ + CPPDeclaration *arg = $3->find_symbol(current_scope, global_scope, current_lexer); + if (arg == (CPPDeclaration *)NULL) { + yyerror("undefined sizeof argument: " + $3->get_fully_scoped_name(), @3); + } else if (arg->get_subtype() == CPPDeclaration::ST_instance) { + CPPInstance *inst = arg->as_instance(); + $$ = new CPPExpression(CPPExpression::sizeof_func(inst->_type)); + } else { + $$ = new CPPExpression(CPPExpression::sizeof_func(arg->as_type())); + } } | KW_SIZEOF ELLIPSIS '(' name ')' %prec UNARY { @@ -3602,6 +3668,18 @@ formal_const_expr: | KW_SIZEOF '(' full_type ')' %prec UNARY { $$ = new CPPExpression(CPPExpression::sizeof_func($3)); +} + | KW_SIZEOF '(' IDENTIFIER ')' %prec UNARY +{ + CPPDeclaration *arg = $3->find_symbol(current_scope, global_scope, current_lexer); + if (arg == (CPPDeclaration *)NULL) { + yyerror("undefined sizeof argument: " + $3->get_fully_scoped_name(), @3); + } else if (arg->get_subtype() == CPPDeclaration::ST_instance) { + CPPInstance *inst = arg->as_instance(); + $$ = new CPPExpression(CPPExpression::sizeof_func(inst->_type)); + } else { + $$ = new CPPExpression(CPPExpression::sizeof_func(arg->as_type())); + } } | KW_SIZEOF ELLIPSIS '(' name ')' %prec UNARY { @@ -3828,15 +3906,17 @@ capture_list: { $$ = new CPPClosureType(CPPClosureType::CT_by_reference); } - | capture + | capture maybe_initialize { $$ = new CPPClosureType(); + $1->_initializer = $2; $$->_captures.push_back(*$1); delete $1; } - | capture_list ',' capture + | capture_list ',' capture maybe_initialize { $$ = $1; + $3->_initializer = $4; $$->_captures.push_back(*$3); delete $3; } @@ -3884,14 +3964,6 @@ class_derivation_name: type = CPPType::new_type(new CPPTBDType($1)); } $$ = type; -} - | struct_keyword name -{ - CPPType *type = $2->find_type(current_scope, global_scope, true, current_lexer); - if (type == NULL) { - type = CPPType::new_type(new CPPTBDType($2)); - } - $$ = type; } | KW_TYPENAME name { diff --git a/dtool/src/cppparser/cppClosureType.cxx b/dtool/src/cppparser/cppClosureType.cxx index fe5d99b5ad..cf8ec31143 100755 --- a/dtool/src/cppparser/cppClosureType.cxx +++ b/dtool/src/cppparser/cppClosureType.cxx @@ -12,6 +12,7 @@ */ #include "cppClosureType.h" +#include "cppExpression.h" /** * @@ -47,7 +48,7 @@ operator = (const CPPClosureType ©) { * Adds a new capture to the beginning of the capture list. */ void CPPClosureType:: -add_capture(string name, CaptureType type) { +add_capture(string name, CaptureType type, CPPExpression *initializer) { if (type == CT_none) { if (name == "this") { type = CT_by_reference; @@ -56,7 +57,7 @@ add_capture(string name, CaptureType type) { } } - Capture capture = {move(name), type}; + Capture capture = {move(name), type, initializer}; _captures.insert(_captures.begin(), move(capture)); } @@ -117,19 +118,25 @@ output(ostream &out, int indent_level, CPPScope *scope, bool complete) const { Captures::const_iterator it; for (it = _captures.begin(); it != _captures.end(); ++it) { + const Capture &capture = *it; if (have_capture) { out << ", "; } - if ((*it)._name == "this") { - if ((*it)._type == CT_by_value) { + if (capture._name == "this") { + if (capture._type == CT_by_value) { out.put('*'); } } else { - if ((*it)._type == CT_by_reference) { + if (capture._type == CT_by_reference) { out.put('&'); } } - out << (*it)._name; + out << capture._name; + + if (capture._initializer != NULL) { + out << " = " << *capture._initializer; + } + have_capture = true; } out.put(']'); diff --git a/dtool/src/cppparser/cppClosureType.h b/dtool/src/cppparser/cppClosureType.h index c682c6adca..9c3533ad4a 100755 --- a/dtool/src/cppparser/cppClosureType.h +++ b/dtool/src/cppparser/cppClosureType.h @@ -37,13 +37,14 @@ public: struct Capture { string _name; CaptureType _type; + CPPExpression *_initializer; }; typedef vector Captures; Captures _captures; CaptureType _default_capture; - void add_capture(string name, CaptureType type); + void add_capture(string name, CaptureType type, CPPExpression *initializer = NULL); virtual bool is_fully_specified() const; diff --git a/dtool/src/cppparser/cppExpression.cxx b/dtool/src/cppparser/cppExpression.cxx index a891f4ecf6..0dff4f64b8 100644 --- a/dtool/src/cppparser/cppExpression.cxx +++ b/dtool/src/cppparser/cppExpression.cxx @@ -257,13 +257,12 @@ CPPExpression(CPPIdentifier *ident, CPPScope *current_scope, _u._variable = inst; return; } - // Actually, we can't scope function groups. - /*CPPFunctionGroup *fgroup = decl->as_function_group(); + CPPFunctionGroup *fgroup = decl->as_function_group(); if (fgroup != NULL) { _type = T_function; _u._fgroup = fgroup; return; - }*/ + } } _type = T_unknown_ident; @@ -347,6 +346,22 @@ construct_op(CPPType *type, CPPExpression *op1) { return expr; } +/** + * Creates an expression that represents an aggregate initialization. + */ +CPPExpression CPPExpression:: +aggregate_init_op(CPPType *type, CPPExpression *op1) { + CPPExpression expr(0); + if (op1 == NULL) { + expr._type = T_empty_aggregate_init; + } else { + expr._type = T_aggregate_init; + } + expr._u._typecast._to = type; + expr._u._typecast._op1 = op1; + return expr; +} + /** * Creates an expression that represents a use of the new operator. */ @@ -606,6 +621,8 @@ evaluate() const { case T_construct: case T_default_construct: + case T_aggregate_init: + case T_empty_aggregate_init: case T_new: case T_default_new: case T_sizeof: @@ -1029,6 +1046,8 @@ determine_type() const { case T_reinterpret_cast: case T_construct: case T_default_construct: + case T_aggregate_init: + case T_empty_aggregate_init: return _u._typecast._to; case T_new: @@ -1147,10 +1166,28 @@ determine_type() const { case 'f': // Function evaluation if (t1 != NULL) { + // Easy case, function with only a single overload. CPPFunctionType *ftype = t1->as_function_type(); if (ftype != (CPPFunctionType *)NULL) { return ftype->_return_type; } + } else if (_u._op._op1->_type == T_function) { + CPPFunctionGroup *fgroup = _u._op._op1->_u._fgroup; + if (_u._op._op2 == NULL) { + // If we are passing no args, look for an overload that has takes no + // args. + for (auto it = fgroup->_instances.begin(); it != fgroup->_instances.end(); ++it) { + CPPInstance *inst = *it; + if (inst != NULL && inst->_type != NULL) { + CPPFunctionType *type = inst->_type->as_function_type(); + if (type != NULL && type->accepts_num_parameters(0)) { + return type->_return_type; + } + } + } + } else { + //TODO + } } return NULL; @@ -1230,11 +1267,13 @@ is_fully_specified() const { case T_const_cast: case T_reinterpret_cast: case T_construct: + case T_aggregate_init: case T_new: return (_u._typecast._to->is_fully_specified() && _u._typecast._op1->is_fully_specified()); case T_default_construct: + case T_empty_aggregate_init: case T_default_new: case T_sizeof: case T_alignof: @@ -1360,6 +1399,7 @@ substitute_decl(CPPDeclaration::SubstDecl &subst, case T_const_cast: case T_reinterpret_cast: case T_construct: + case T_aggregate_init: case T_new: rep->_u._typecast._op1 = _u._typecast._op1->substitute_decl(subst, current_scope, global_scope) @@ -1368,6 +1408,7 @@ substitute_decl(CPPDeclaration::SubstDecl &subst, // fall through case T_default_construct: + case T_empty_aggregate_init: case T_default_new: case T_sizeof: case T_alignof: @@ -1462,6 +1503,8 @@ is_tbd() const { case T_const_cast: case T_reinterpret_cast: case T_construct: + case T_aggregate_init: + case T_empty_aggregate_init: case T_new: case T_default_construct: case T_default_new: @@ -1674,6 +1717,18 @@ output(ostream &out, int indent_level, CPPScope *scope, bool) const { out << "()"; break; + case T_aggregate_init: + _u._typecast._to->output(out, indent_level, scope, false); + out << "{"; + _u._typecast._op1->output(out, indent_level, scope, false); + out << "}"; + break; + + case T_empty_aggregate_init: + _u._typecast._to->output(out, indent_level, scope, false); + out << "{}"; + break; + case T_new: out << "(new "; _u._typecast._to->output(out, indent_level, scope, false); @@ -2095,11 +2150,13 @@ is_equal(const CPPDeclaration *other) const { case T_const_cast: case T_reinterpret_cast: case T_construct: + case T_aggregate_init: case T_new: return _u._typecast._to == ot->_u._typecast._to && *_u._typecast._op1 == *ot->_u._typecast._op1; case T_default_construct: + case T_empty_aggregate_init: case T_default_new: case T_sizeof: case T_alignof: @@ -2193,6 +2250,7 @@ is_less(const CPPDeclaration *other) const { case T_const_cast: case T_reinterpret_cast: case T_construct: + case T_aggregate_init: case T_new: if (_u._typecast._to != ot->_u._typecast._to) { return _u._typecast._to < ot->_u._typecast._to; @@ -2200,6 +2258,7 @@ is_less(const CPPDeclaration *other) const { return *_u._typecast._op1 < *ot->_u._typecast._op1; case T_default_construct: + case T_empty_aggregate_init: case T_default_new: case T_sizeof: case T_alignof: diff --git a/dtool/src/cppparser/cppExpression.h b/dtool/src/cppparser/cppExpression.h index 2cdb297c36..3178d4d178 100644 --- a/dtool/src/cppparser/cppExpression.h +++ b/dtool/src/cppparser/cppExpression.h @@ -48,6 +48,8 @@ public: T_reinterpret_cast, T_construct, T_default_construct, + T_aggregate_init, + T_empty_aggregate_init, T_new, T_default_new, T_sizeof, @@ -81,6 +83,7 @@ public: static CPPExpression typecast_op(CPPType *type, CPPExpression *op1, Type cast_type = T_typecast); static CPPExpression construct_op(CPPType *type, CPPExpression *op1); + static CPPExpression aggregate_init_op(CPPType *type, CPPExpression *op1); 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); diff --git a/dtool/src/cppparser/cppFunctionType.cxx b/dtool/src/cppparser/cppFunctionType.cxx index d016695bf8..38eb3d98ba 100644 --- a/dtool/src/cppparser/cppFunctionType.cxx +++ b/dtool/src/cppparser/cppFunctionType.cxx @@ -66,6 +66,31 @@ operator = (const CPPFunctionType ©) { _class_owner = copy._class_owner; } +/** + * Returns true if the function accepts the given number of parameters. + */ +bool CPPFunctionType:: +accepts_num_parameters(int num_parameters) { + if (_parameters == NULL) { + return (num_parameters == 0); + } + size_t actual_num_parameters = _parameters->_parameters.size(); + // If we passed too many parameters, it must have an ellipsis. + if (num_parameters > actual_num_parameters) { + return _parameters->_includes_ellipsis; + } + + // Make sure all superfluous parameters have a default value. + for (size_t i = num_parameters; i < actual_num_parameters; ++i) { + CPPInstance *param = _parameters->_parameters[i]; + if (param->_initializer == NULL) { + return false; + } + } + + return true; +} + /** * Returns true if this declaration is an actual, factual declaration, or * false if some part of the declaration depends on a template parameter which diff --git a/dtool/src/cppparser/cppFunctionType.h b/dtool/src/cppparser/cppFunctionType.h index 1e44681f13..a5a66976b0 100644 --- a/dtool/src/cppparser/cppFunctionType.h +++ b/dtool/src/cppparser/cppFunctionType.h @@ -50,6 +50,8 @@ public: CPPFunctionType(const CPPFunctionType ©); void operator = (const CPPFunctionType ©); + bool accepts_num_parameters(int num_parameters); + CPPType *_return_type; CPPParameterList *_parameters; int _flags; diff --git a/dtool/src/cppparser/cppPreprocessor.cxx b/dtool/src/cppparser/cppPreprocessor.cxx index c6a7dd0b07..6a24d9eb69 100644 --- a/dtool/src/cppparser/cppPreprocessor.cxx +++ b/dtool/src/cppparser/cppPreprocessor.cxx @@ -209,6 +209,7 @@ CPPPreprocessor() { _state = S_eof; _paren_nesting = 0; _parsing_template_params = false; + _parsing_attribute = false; _unget = '\0'; _last_c = '\0'; _start_of_line = true; @@ -986,6 +987,13 @@ internal_get_next_token() { return CPPToken(0, loc); } } + } else if (_parsing_attribute) { + // If we're parsing an attribute, also keep track of the paren nesting. + if (c == '[' || c == '(') { + ++_paren_nesting; + } else if (c == ']' || c == ')') { + --_paren_nesting; + } } // Look for an end-of-line comment, and parse it before we finish this @@ -1090,6 +1098,20 @@ check_digraph(int c) { if (next_c == '=') return MODEQUAL; if (next_c == '>') return '}'; break; + + case '[': + if (next_c == '[' && !_parsing_attribute) { + _parsing_attribute = true; + return ATTR_LEFT; + } + break; + + case ']': + if (next_c == ']' && _parsing_attribute && _paren_nesting == 0) { + _parsing_attribute = false; + return ATTR_RIGHT; + } + break; } return 0; diff --git a/dtool/src/cppparser/cppPreprocessor.h b/dtool/src/cppparser/cppPreprocessor.h index 20f313758a..02f3715339 100644 --- a/dtool/src/cppparser/cppPreprocessor.h +++ b/dtool/src/cppparser/cppPreprocessor.h @@ -213,6 +213,7 @@ private: State _state; int _paren_nesting; bool _parsing_template_params; + bool _parsing_attribute; bool _start_of_line; int _unget; diff --git a/dtool/src/cppparser/cppToken.cxx b/dtool/src/cppparser/cppToken.cxx index 025590113a..d2e00982dc 100644 --- a/dtool/src/cppparser/cppToken.cxx +++ b/dtool/src/cppparser/cppToken.cxx @@ -252,6 +252,14 @@ output(ostream &out) const { out << "RSHIFTEQUAL"; break; + case ATTR_LEFT: + out << "ATTR_LEFT"; + break; + + case ATTR_RIGHT: + out << "ATTR_RIGHT"; + break; + case KW_BOOL: out << "KW_BOOL"; break; From c0191a3126ee00dccf4fca5287180e123eb736c4 Mon Sep 17 00:00:00 2001 From: rdb Date: Tue, 17 Jan 2017 22:51:04 +0100 Subject: [PATCH 04/29] cppparser: update cppBison prebuilt files --- dtool/src/cppparser/cppBison.cxx.prebuilt | 11855 +++++++++++--------- dtool/src/cppparser/cppBison.h.prebuilt | 529 +- 2 files changed, 6647 insertions(+), 5737 deletions(-) diff --git a/dtool/src/cppparser/cppBison.cxx.prebuilt b/dtool/src/cppparser/cppBison.cxx.prebuilt index 877a9636e1..63f0b0ea17 100644 --- a/dtool/src/cppparser/cppBison.cxx.prebuilt +++ b/dtool/src/cppparser/cppBison.cxx.prebuilt @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 2.7. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,13 +44,13 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "3.0.4" +#define YYBISON_VERSION "2.7" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ -#define YYPURE 2 +#define YYPURE 1 /* Push parsers. */ #define YYPUSH 0 @@ -63,16 +63,20 @@ #define yyparse cppyyparse #define yylex cppyylex #define yyerror cppyyerror +#define yylval cppyylval +#define yychar cppyychar #define yydebug cppyydebug #define yynerrs cppyynerrs - +#define yylloc cppyylloc /* Copy the first part of user declarations. */ -#line 7 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:339 */ +/* Line 371 of yacc.c */ +#line 7 "dtool/src/cppparser/cppBison.yxx" #include "cppBisonDefs.h" #include "cppParser.h" +#include "cppClosureType.h" #include "cppExpression.h" #include "cppSimpleType.h" #include "cppExtensionType.h" @@ -109,6 +113,7 @@ static CPPEnumType *current_enum = NULL; static int current_storage_class = 0; static CPPType *current_type = NULL; static CPPExpression *current_expr = NULL; +static CPPClosureType *current_closure = NULL; static int publish_nest_level = 0; static CPPVisibility publish_previous; static YYLTYPE publish_loc; @@ -262,13 +267,14 @@ pop_struct() { } -#line 266 "built/tmp/cppBison.yxx.c" /* yacc.c:339 */ +/* Line 371 of yacc.c */ +#line 272 "built_x64/tmp/cppBison.yxx.c" -# ifndef YY_NULLPTR +# ifndef YY_NULL # if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULLPTR nullptr +# define YY_NULL nullptr # else -# define YY_NULLPTR 0 +# define YY_NULL 0 # endif # endif @@ -282,9 +288,9 @@ pop_struct() { /* In a future release of Bison, this section will be replaced by #include "cppBison.yxx.h". */ -#ifndef YY_CPPYY_BUILT_TMP_CPPBISON_YXX_H_INCLUDED -# define YY_CPPYY_BUILT_TMP_CPPBISON_YXX_H_INCLUDED -/* Debug traces. */ +#ifndef YY_CPPYY_BUILT_X64_TMP_CPPBISON_YXX_H_INCLUDED +# define YY_CPPYY_BUILT_X64_TMP_CPPBISON_YXX_H_INCLUDED +/* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif @@ -292,153 +298,156 @@ pop_struct() { extern int cppyydebug; #endif -/* Token type. */ +/* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - enum yytokentype - { - REAL = 258, - INTEGER = 259, - CHAR_TOK = 260, - SIMPLE_STRING = 261, - SIMPLE_IDENTIFIER = 262, - STRING_LITERAL = 263, - CUSTOM_LITERAL = 264, - IDENTIFIER = 265, - TYPENAME_IDENTIFIER = 266, - 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 - }; + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + REAL = 258, + INTEGER = 259, + CHAR_TOK = 260, + SIMPLE_STRING = 261, + SIMPLE_IDENTIFIER = 262, + STRING_LITERAL = 263, + CUSTOM_LITERAL = 264, + IDENTIFIER = 265, + TYPENAME_IDENTIFIER = 266, + 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, + ATTR_LEFT = 302, + ATTR_RIGHT = 303, + KW_ALIGNAS = 304, + KW_ALIGNOF = 305, + KW_AUTO = 306, + KW_BEGIN_PUBLISH = 307, + KW_BLOCKING = 308, + KW_BOOL = 309, + KW_CATCH = 310, + KW_CHAR = 311, + KW_CHAR16_T = 312, + KW_CHAR32_T = 313, + KW_CLASS = 314, + KW_CONST = 315, + KW_CONSTEXPR = 316, + KW_CONST_CAST = 317, + KW_DECLTYPE = 318, + KW_DEFAULT = 319, + KW_DELETE = 320, + KW_DOUBLE = 321, + KW_DYNAMIC_CAST = 322, + KW_ELSE = 323, + KW_END_PUBLISH = 324, + KW_ENUM = 325, + KW_EXTENSION = 326, + KW_EXTERN = 327, + KW_EXPLICIT = 328, + KW_PUBLISHED = 329, + KW_FALSE = 330, + KW_FINAL = 331, + KW_FLOAT = 332, + KW_FRIEND = 333, + KW_FOR = 334, + KW_GOTO = 335, + KW_HAS_VIRTUAL_DESTRUCTOR = 336, + KW_IF = 337, + KW_INLINE = 338, + KW_INT = 339, + KW_IS_ABSTRACT = 340, + KW_IS_BASE_OF = 341, + KW_IS_CLASS = 342, + KW_IS_CONSTRUCTIBLE = 343, + KW_IS_CONVERTIBLE_TO = 344, + KW_IS_DESTRUCTIBLE = 345, + KW_IS_EMPTY = 346, + KW_IS_ENUM = 347, + KW_IS_FINAL = 348, + KW_IS_FUNDAMENTAL = 349, + KW_IS_POD = 350, + KW_IS_POLYMORPHIC = 351, + KW_IS_STANDARD_LAYOUT = 352, + KW_IS_TRIVIAL = 353, + KW_IS_UNION = 354, + KW_LONG = 355, + KW_MAKE_MAP_PROPERTY = 356, + KW_MAKE_PROPERTY = 357, + KW_MAKE_PROPERTY2 = 358, + KW_MAKE_SEQ = 359, + KW_MAKE_SEQ_PROPERTY = 360, + KW_MUTABLE = 361, + KW_NAMESPACE = 362, + KW_NEW = 363, + KW_NOEXCEPT = 364, + KW_NULLPTR = 365, + KW_OPERATOR = 366, + KW_OVERRIDE = 367, + KW_PRIVATE = 368, + KW_PROTECTED = 369, + KW_PUBLIC = 370, + KW_REGISTER = 371, + KW_REINTERPRET_CAST = 372, + KW_RETURN = 373, + KW_SHORT = 374, + KW_SIGNED = 375, + KW_SIZEOF = 376, + KW_STATIC = 377, + KW_STATIC_ASSERT = 378, + KW_STATIC_CAST = 379, + KW_STRUCT = 380, + KW_TEMPLATE = 381, + KW_THREAD_LOCAL = 382, + KW_THROW = 383, + KW_TRUE = 384, + KW_TRY = 385, + KW_TYPEDEF = 386, + KW_TYPEID = 387, + KW_TYPENAME = 388, + KW_UNDERLYING_TYPE = 389, + KW_UNION = 390, + KW_UNSIGNED = 391, + KW_USING = 392, + KW_VIRTUAL = 393, + KW_VOID = 394, + KW_VOLATILE = 395, + KW_WCHAR_T = 396, + KW_WHILE = 397, + START_CPP = 398, + START_CONST_EXPR = 399, + START_TYPE = 400 + }; #endif /* Tokens. */ #define REAL 258 @@ -485,129 +494,148 @@ extern int cppyydebug; #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 +#define ATTR_LEFT 302 +#define ATTR_RIGHT 303 +#define KW_ALIGNAS 304 +#define KW_ALIGNOF 305 +#define KW_AUTO 306 +#define KW_BEGIN_PUBLISH 307 +#define KW_BLOCKING 308 +#define KW_BOOL 309 +#define KW_CATCH 310 +#define KW_CHAR 311 +#define KW_CHAR16_T 312 +#define KW_CHAR32_T 313 +#define KW_CLASS 314 +#define KW_CONST 315 +#define KW_CONSTEXPR 316 +#define KW_CONST_CAST 317 +#define KW_DECLTYPE 318 +#define KW_DEFAULT 319 +#define KW_DELETE 320 +#define KW_DOUBLE 321 +#define KW_DYNAMIC_CAST 322 +#define KW_ELSE 323 +#define KW_END_PUBLISH 324 +#define KW_ENUM 325 +#define KW_EXTENSION 326 +#define KW_EXTERN 327 +#define KW_EXPLICIT 328 +#define KW_PUBLISHED 329 +#define KW_FALSE 330 +#define KW_FINAL 331 +#define KW_FLOAT 332 +#define KW_FRIEND 333 +#define KW_FOR 334 +#define KW_GOTO 335 +#define KW_HAS_VIRTUAL_DESTRUCTOR 336 +#define KW_IF 337 +#define KW_INLINE 338 +#define KW_INT 339 +#define KW_IS_ABSTRACT 340 +#define KW_IS_BASE_OF 341 +#define KW_IS_CLASS 342 +#define KW_IS_CONSTRUCTIBLE 343 +#define KW_IS_CONVERTIBLE_TO 344 +#define KW_IS_DESTRUCTIBLE 345 +#define KW_IS_EMPTY 346 +#define KW_IS_ENUM 347 +#define KW_IS_FINAL 348 +#define KW_IS_FUNDAMENTAL 349 +#define KW_IS_POD 350 +#define KW_IS_POLYMORPHIC 351 +#define KW_IS_STANDARD_LAYOUT 352 +#define KW_IS_TRIVIAL 353 +#define KW_IS_UNION 354 +#define KW_LONG 355 +#define KW_MAKE_MAP_PROPERTY 356 +#define KW_MAKE_PROPERTY 357 +#define KW_MAKE_PROPERTY2 358 +#define KW_MAKE_SEQ 359 +#define KW_MAKE_SEQ_PROPERTY 360 +#define KW_MUTABLE 361 +#define KW_NAMESPACE 362 +#define KW_NEW 363 +#define KW_NOEXCEPT 364 +#define KW_NULLPTR 365 +#define KW_OPERATOR 366 +#define KW_OVERRIDE 367 +#define KW_PRIVATE 368 +#define KW_PROTECTED 369 +#define KW_PUBLIC 370 +#define KW_REGISTER 371 +#define KW_REINTERPRET_CAST 372 +#define KW_RETURN 373 +#define KW_SHORT 374 +#define KW_SIGNED 375 +#define KW_SIZEOF 376 +#define KW_STATIC 377 +#define KW_STATIC_ASSERT 378 +#define KW_STATIC_CAST 379 +#define KW_STRUCT 380 +#define KW_TEMPLATE 381 +#define KW_THREAD_LOCAL 382 +#define KW_THROW 383 +#define KW_TRUE 384 +#define KW_TRY 385 +#define KW_TYPEDEF 386 +#define KW_TYPEID 387 +#define KW_TYPENAME 388 +#define KW_UNDERLYING_TYPE 389 +#define KW_UNION 390 +#define KW_UNSIGNED 391 +#define KW_USING 392 +#define KW_VIRTUAL 393 +#define KW_VOID 394 +#define KW_VOLATILE 395 +#define KW_WCHAR_T 396 +#define KW_WHILE 397 +#define START_CPP 398 +#define START_CONST_EXPR 399 +#define START_TYPE 400 -/* Value type. */ -/* Location type. */ + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +#endif + #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED -typedef struct YYLTYPE YYLTYPE; -struct YYLTYPE +typedef struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; -}; +} YYLTYPE; +# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif - +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int cppyyparse (void *YYPARSE_PARAM); +#else +int cppyyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus int cppyyparse (void); +#else +int cppyyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ -#endif /* !YY_CPPYY_BUILT_TMP_CPPBISON_YXX_H_INCLUDED */ +#endif /* !YY_CPPYY_BUILT_X64_TMP_CPPBISON_YXX_H_INCLUDED */ /* Copy the second part of user declarations. */ -#line 611 "built/tmp/cppBison.yxx.c" /* yacc.c:358 */ +/* Line 390 of yacc.c */ +#line 639 "built_x64/tmp/cppBison.yxx.c" #ifdef short # undef short @@ -621,8 +649,11 @@ typedef unsigned char yytype_uint8; #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; -#else +#elif (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) typedef signed char yytype_int8; +#else +typedef short int yytype_int8; #endif #ifdef YYTYPE_UINT16 @@ -642,7 +673,8 @@ typedef short int yytype_int16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T +# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -664,33 +696,6 @@ typedef short int yytype_int16; # endif #endif -#ifndef YY_ATTRIBUTE -# if (defined __GNUC__ \ - && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ - || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C -# define YY_ATTRIBUTE(Spec) __attribute__(Spec) -# else -# define YY_ATTRIBUTE(Spec) /* empty */ -# endif -#endif - -#ifndef YY_ATTRIBUTE_PURE -# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) -#endif - -#ifndef YY_ATTRIBUTE_UNUSED -# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) -#endif - -#if !defined _Noreturn \ - && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) -# if defined _MSC_VER && 1200 <= _MSC_VER -# define _Noreturn __declspec (noreturn) -# else -# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) -# endif -#endif - /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) @@ -698,25 +703,23 @@ typedef short int yytype_int16; # define YYUSE(E) /* empty */ #endif -#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") +/* Identity function, used to suppress warnings about constant conditions. */ +#ifndef lint +# define YYID(N) (N) #else -# define YY_INITIAL_VALUE(Value) Value +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +static int +YYID (int yyi) +#else +static int +YYID (yyi) + int yyi; #endif -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END +{ + return yyi; +} #endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ -#endif - #if ! defined yyoverflow || YYERROR_VERBOSE @@ -735,7 +738,8 @@ typedef short int yytype_int16; # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS @@ -747,8 +751,8 @@ typedef short int yytype_int16; # endif # ifdef YYSTACK_ALLOC - /* Pacify GCC's 'empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) + /* Pacify GCC's `empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely @@ -764,7 +768,7 @@ typedef short int yytype_int16; # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) + && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 @@ -772,13 +776,15 @@ typedef short int yytype_int16; # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS +# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS +# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif @@ -788,8 +794,8 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ - && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ + && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc @@ -815,16 +821,16 @@ union yyalloc elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (0) +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (YYID (0)) #endif @@ -843,7 +849,7 @@ union yyalloc for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ - while (0) + while (YYID (0)) # endif # endif #endif /* !YYCOPY_NEEDED */ @@ -851,42 +857,40 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 104 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 6206 +#define YYLAST 7002 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 168 +#define YYNTOKENS 170 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 107 +#define YYNNTS 108 /* YYNRULES -- Number of rules. */ -#define YYNRULES 733 -/* YYNSTATES -- Number of states. */ -#define YYNSTATES 1482 +#define YYNRULES 753 +/* YYNRULES -- Number of states. */ +#define YYNSTATES 1535 -/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned - by yylex, with out-of-bounds checking. */ +/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 -#define YYMAXUTOK 398 +#define YYMAXUTOK 400 -#define YYTRANSLATE(YYX) \ +#define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) -/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM - as returned by yylex, without out-of-bounds checking. */ +/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ 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, 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, 168, 2, 2, 2, 161, 154, 2, + 164, 166, 159, 157, 147, 158, 163, 160, 2, 2, + 2, 2, 2, 2, 2, 2, 2, 2, 149, 148, + 155, 150, 156, 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, 163, 2, 166, 151, 2, 2, 2, 2, 2, + 2, 165, 2, 169, 153, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 144, 150, 165, 160, 2, 2, 2, + 2, 2, 2, 146, 152, 167, 162, 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, @@ -913,87 +917,432 @@ static const yytype_uint8 yytranslate[] = 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143 + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145 }; #if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in + YYRHS. */ +static const yytype_uint16 yyprhs[] = +{ + 0, 0, 3, 6, 9, 12, 14, 17, 20, 22, + 26, 31, 37, 42, 43, 49, 51, 53, 55, 57, + 59, 62, 64, 66, 69, 72, 75, 78, 86, 96, + 108, 118, 130, 144, 154, 168, 178, 186, 192, 193, + 197, 199, 202, 205, 209, 212, 215, 218, 221, 224, + 227, 230, 233, 236, 239, 242, 247, 253, 259, 261, + 265, 267, 272, 277, 278, 283, 287, 291, 295, 297, + 300, 305, 306, 311, 315, 318, 323, 324, 331, 332, + 339, 340, 348, 349, 361, 362, 375, 376, 385, 386, + 396, 398, 400, 403, 406, 409, 412, 415, 418, 421, + 424, 427, 432, 438, 445, 450, 452, 454, 456, 458, + 460, 462, 464, 466, 468, 470, 472, 474, 476, 478, + 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, + 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, + 520, 523, 526, 528, 530, 532, 534, 537, 538, 545, + 548, 550, 552, 554, 558, 560, 562, 564, 567, 572, + 575, 579, 583, 588, 591, 595, 597, 599, 601, 603, + 605, 608, 612, 615, 618, 621, 624, 627, 631, 636, + 640, 641, 648, 651, 655, 657, 661, 666, 668, 670, + 672, 676, 679, 681, 685, 687, 689, 691, 695, 698, + 700, 704, 706, 709, 711, 714, 716, 720, 726, 730, + 734, 736, 740, 744, 748, 752, 757, 759, 761, 764, + 766, 770, 774, 780, 784, 789, 795, 799, 804, 810, + 813, 818, 820, 822, 824, 826, 829, 832, 835, 838, + 841, 845, 850, 852, 854, 857, 860, 863, 866, 869, + 873, 878, 886, 890, 892, 895, 898, 901, 904, 907, + 910, 914, 919, 927, 931, 933, 935, 938, 941, 944, + 947, 950, 953, 957, 962, 964, 966, 969, 972, 975, + 978, 981, 984, 988, 993, 999, 1009, 1019, 1029, 1031, + 1033, 1036, 1038, 1040, 1042, 1046, 1051, 1056, 1061, 1066, + 1068, 1070, 1072, 1074, 1077, 1079, 1081, 1083, 1087, 1092, + 1095, 1100, 1105, 1110, 1112, 1114, 1116, 1119, 1123, 1126, + 1131, 1136, 1138, 1140, 1142, 1145, 1149, 1152, 1156, 1158, + 1163, 1169, 1175, 1176, 1183, 1184, 1194, 1196, 1198, 1200, + 1202, 1205, 1209, 1211, 1214, 1217, 1220, 1224, 1228, 1232, + 1236, 1240, 1244, 1249, 1253, 1255, 1260, 1263, 1265, 1267, + 1269, 1273, 1279, 1281, 1284, 1289, 1291, 1294, 1297, 1299, + 1301, 1303, 1304, 1311, 1312, 1320, 1325, 1331, 1335, 1341, + 1346, 1348, 1350, 1352, 1354, 1356, 1358, 1360, 1362, 1364, + 1366, 1368, 1370, 1372, 1375, 1378, 1381, 1384, 1386, 1388, + 1391, 1393, 1394, 1397, 1399, 1402, 1404, 1406, 1408, 1410, + 1412, 1414, 1416, 1418, 1420, 1422, 1424, 1426, 1428, 1430, + 1432, 1434, 1436, 1438, 1440, 1442, 1444, 1446, 1448, 1450, + 1452, 1454, 1456, 1458, 1460, 1462, 1464, 1466, 1468, 1470, + 1472, 1474, 1476, 1478, 1480, 1482, 1484, 1486, 1488, 1490, + 1492, 1494, 1496, 1498, 1500, 1502, 1504, 1506, 1508, 1510, + 1512, 1514, 1516, 1518, 1520, 1522, 1524, 1526, 1528, 1530, + 1532, 1534, 1536, 1538, 1540, 1542, 1544, 1546, 1548, 1550, + 1552, 1554, 1556, 1558, 1560, 1562, 1564, 1566, 1568, 1570, + 1572, 1574, 1576, 1578, 1580, 1582, 1584, 1586, 1588, 1590, + 1592, 1594, 1596, 1598, 1600, 1602, 1604, 1606, 1608, 1610, + 1612, 1614, 1616, 1618, 1620, 1622, 1624, 1626, 1628, 1630, + 1632, 1634, 1636, 1638, 1640, 1642, 1644, 1646, 1648, 1650, + 1652, 1654, 1656, 1658, 1662, 1664, 1666, 1668, 1670, 1672, + 1676, 1678, 1683, 1691, 1699, 1707, 1715, 1720, 1725, 1731, + 1736, 1739, 1742, 1745, 1748, 1751, 1754, 1758, 1762, 1766, + 1770, 1774, 1778, 1782, 1786, 1790, 1794, 1798, 1802, 1806, + 1810, 1814, 1818, 1824, 1829, 1834, 1838, 1842, 1846, 1850, + 1852, 1857, 1865, 1873, 1881, 1889, 1894, 1899, 1904, 1909, + 1914, 1919, 1924, 1929, 1934, 1939, 1944, 1949, 1954, 1959, + 1964, 1969, 1975, 1980, 1983, 1989, 1994, 1999, 2002, 2005, + 2008, 2011, 2014, 2017, 2021, 2025, 2029, 2033, 2037, 2041, + 2045, 2049, 2053, 2057, 2061, 2065, 2069, 2073, 2077, 2081, + 2085, 2089, 2095, 2100, 2105, 2109, 2113, 2117, 2121, 2123, + 2125, 2127, 2129, 2131, 2133, 2135, 2137, 2139, 2141, 2143, + 2152, 2164, 2169, 2174, 2181, 2186, 2191, 2198, 2205, 2210, + 2215, 2220, 2225, 2230, 2235, 2240, 2245, 2250, 2255, 2257, + 2262, 2270, 2278, 2286, 2294, 2299, 2304, 2310, 2315, 2318, + 2324, 2329, 2334, 2337, 2340, 2343, 2346, 2349, 2353, 2357, + 2361, 2365, 2369, 2373, 2377, 2381, 2385, 2389, 2393, 2397, + 2401, 2405, 2409, 2413, 2417, 2421, 2427, 2432, 2437, 2441, + 2445, 2449, 2453, 2455, 2457, 2459, 2461, 2463, 2465, 2467, + 2469, 2471, 2473, 2475, 2477, 2479, 2481, 2484, 2489, 2492, + 2496, 2498, 2501, 2503, 2506, 2509, 2511, 2513, 2515, 2517, + 2519, 2521, 2523, 2525, 2527, 2529, 2531, 2533, 2535, 2537, + 2539, 2541, 2544, 2547 +}; + +/* YYRHS -- A `-1'-separated list of the rules' RHS. */ +static const yytype_int16 yyrhs[] = +{ + 171, 0, -1, 143, 172, -1, 144, 267, -1, 145, + 234, -1, 277, -1, 172, 148, -1, 172, 177, -1, + 174, -1, 173, 147, 174, -1, 274, 164, 264, 166, + -1, 274, 164, 264, 166, 15, -1, 274, 146, 264, + 167, -1, -1, 180, 146, 176, 172, 167, -1, 183, + -1, 201, -1, 175, -1, 251, -1, 178, -1, 131, + 186, -1, 52, -1, 69, -1, 74, 149, -1, 115, + 149, -1, 114, 149, -1, 113, 149, -1, 102, 164, + 274, 147, 10, 166, 148, -1, 102, 164, 274, 147, + 10, 147, 10, 166, 148, -1, 102, 164, 274, 147, + 10, 147, 10, 147, 10, 166, 148, -1, 105, 164, + 274, 147, 10, 147, 10, 166, 148, -1, 105, 164, + 274, 147, 10, 147, 10, 147, 10, 166, 148, -1, + 105, 164, 274, 147, 10, 147, 10, 147, 10, 147, + 10, 166, 148, -1, 103, 164, 274, 147, 10, 147, + 10, 166, 148, -1, 103, 164, 274, 147, 10, 147, + 10, 147, 10, 147, 10, 166, 148, -1, 104, 164, + 274, 147, 10, 147, 10, 166, 148, -1, 123, 164, + 267, 147, 276, 166, 148, -1, 123, 164, 267, 166, + 148, -1, -1, 78, 179, 177, -1, 277, -1, 60, + 180, -1, 72, 180, -1, 72, 6, 180, -1, 122, + 180, -1, 83, 180, -1, 138, 180, -1, 73, 180, + -1, 116, 180, -1, 140, 180, -1, 106, 180, -1, + 61, 180, -1, 53, 180, -1, 71, 180, -1, 127, + 180, -1, 47, 181, 48, 180, -1, 49, 164, 267, + 166, 180, -1, 49, 164, 231, 166, 180, -1, 182, + -1, 182, 147, 181, -1, 274, -1, 274, 164, 214, + 166, -1, 137, 274, 149, 182, -1, -1, 180, 233, + 184, 185, -1, 180, 231, 148, -1, 180, 189, 218, + -1, 180, 192, 219, -1, 254, -1, 210, 219, -1, + 210, 217, 147, 185, -1, -1, 180, 233, 187, 188, + -1, 180, 192, 219, -1, 210, 219, -1, 210, 217, + 147, 188, -1, -1, 10, 164, 190, 212, 166, 198, + -1, -1, 11, 164, 191, 212, 166, 198, -1, -1, + 162, 274, 164, 193, 212, 166, 198, -1, -1, 11, + 164, 159, 208, 166, 164, 194, 212, 166, 198, 211, + -1, -1, 11, 164, 13, 159, 208, 166, 164, 195, + 212, 166, 198, 211, -1, -1, 111, 229, 224, 164, + 196, 212, 166, 198, -1, -1, 111, 60, 229, 224, + 164, 197, 212, 166, 198, -1, 10, -1, 277, -1, + 198, 60, -1, 198, 140, -1, 198, 109, -1, 198, + 76, -1, 198, 112, -1, 198, 154, -1, 198, 17, + -1, 198, 106, -1, 198, 61, -1, 198, 128, 164, + 166, -1, 198, 128, 164, 274, 166, -1, 198, 128, + 164, 274, 15, 166, -1, 198, 47, 181, 48, -1, + 168, -1, 162, -1, 159, -1, 160, -1, 161, -1, + 157, -1, 158, -1, 152, -1, 154, -1, 153, -1, + 16, -1, 17, -1, 18, -1, 19, -1, 20, -1, + 21, -1, 155, -1, 156, -1, 22, -1, 23, -1, + 150, -1, 147, -1, 35, -1, 36, -1, 37, -1, + 38, -1, 39, -1, 40, -1, 41, -1, 42, -1, + 43, -1, 44, -1, 45, -1, 46, -1, 33, -1, + 165, 169, -1, 164, 166, -1, 108, -1, 65, -1, + 183, -1, 201, -1, 72, 201, -1, -1, 126, 202, + 155, 203, 156, 200, -1, 126, 183, -1, 277, -1, + 204, -1, 206, -1, 204, 147, 206, -1, 59, -1, + 133, -1, 205, -1, 205, 274, -1, 205, 274, 150, + 234, -1, 205, 15, -1, 205, 15, 274, -1, 207, + 225, 216, -1, 60, 207, 225, 216, -1, 207, 226, + -1, 60, 207, 226, -1, 255, -1, 10, -1, 11, + -1, 12, -1, 275, -1, 111, 199, -1, 111, 6, + 10, -1, 60, 208, -1, 140, 208, -1, 159, 208, + -1, 154, 208, -1, 17, 208, -1, 13, 159, 208, + -1, 208, 165, 263, 169, -1, 164, 208, 166, -1, + -1, 208, 164, 209, 214, 166, 198, -1, 208, 211, + -1, 208, 149, 4, -1, 277, -1, 33, 232, 228, + -1, 33, 60, 232, 228, -1, 277, -1, 15, -1, + 213, -1, 213, 147, 15, -1, 213, 15, -1, 222, + -1, 213, 147, 222, -1, 277, -1, 15, -1, 215, + -1, 215, 147, 15, -1, 215, 15, -1, 223, -1, + 215, 147, 223, -1, 277, -1, 150, 266, -1, 277, + -1, 150, 267, -1, 148, -1, 146, 259, 167, -1, + 149, 173, 146, 259, 167, -1, 150, 64, 148, -1, + 150, 65, 148, -1, 148, -1, 146, 259, 167, -1, + 150, 267, 148, -1, 150, 64, 148, -1, 150, 65, + 148, -1, 150, 146, 220, 167, -1, 277, -1, 221, + -1, 221, 147, -1, 267, -1, 146, 220, 167, -1, + 221, 147, 267, -1, 221, 147, 146, 220, 167, -1, + 229, 225, 217, -1, 60, 229, 225, 217, -1, 60, + 116, 229, 225, 217, -1, 230, 226, 217, -1, 60, + 230, 226, 217, -1, 60, 116, 230, 226, 217, -1, + 116, 222, -1, 47, 181, 48, 222, -1, 222, -1, + 269, -1, 277, -1, 275, -1, 60, 224, -1, 140, + 224, -1, 159, 224, -1, 154, 224, -1, 17, 224, + -1, 13, 159, 224, -1, 224, 165, 263, 169, -1, + 277, -1, 275, -1, 60, 225, -1, 140, 225, -1, + 159, 225, -1, 154, 225, -1, 17, 225, -1, 13, + 159, 225, -1, 225, 165, 263, 169, -1, 164, 225, + 166, 164, 212, 166, 198, -1, 164, 225, 166, -1, + 15, -1, 15, 274, -1, 60, 226, -1, 140, 226, + -1, 159, 226, -1, 154, 226, -1, 17, 226, -1, + 13, 159, 226, -1, 226, 165, 263, 169, -1, 164, + 226, 166, 164, 212, 166, 198, -1, 164, 226, 166, + -1, 277, -1, 15, -1, 15, 274, -1, 60, 227, + -1, 140, 227, -1, 159, 227, -1, 154, 227, -1, + 17, 227, -1, 13, 159, 227, -1, 227, 165, 263, + 169, -1, 277, -1, 15, -1, 15, 274, -1, 60, + 228, -1, 140, 228, -1, 159, 227, -1, 154, 227, + -1, 17, 227, -1, 13, 159, 227, -1, 227, 165, + 263, 169, -1, 164, 212, 166, 198, 211, -1, 164, + 159, 227, 166, 164, 212, 166, 198, 211, -1, 164, + 154, 227, 166, 164, 212, 166, 198, 211, -1, 164, + 17, 227, 166, 164, 212, 166, 198, 211, -1, 255, + -1, 11, -1, 133, 274, -1, 236, -1, 238, -1, + 244, -1, 250, 235, 274, -1, 249, 275, 149, 246, + -1, 63, 164, 267, 166, -1, 63, 164, 51, 166, + -1, 134, 164, 234, 166, -1, 51, -1, 12, -1, + 255, -1, 11, -1, 133, 274, -1, 236, -1, 238, + -1, 244, -1, 250, 235, 274, -1, 249, 275, 149, + 246, -1, 249, 274, -1, 63, 164, 267, 166, -1, + 63, 164, 51, 166, -1, 134, 164, 234, 166, -1, + 51, -1, 255, -1, 11, -1, 133, 274, -1, 250, + 235, 274, -1, 249, 274, -1, 63, 164, 267, 166, + -1, 134, 164, 234, 166, -1, 51, -1, 231, -1, + 10, -1, 229, 228, -1, 60, 229, 228, -1, 230, + 228, -1, 60, 230, 228, -1, 277, -1, 235, 47, + 181, 48, -1, 235, 49, 164, 267, 166, -1, 235, + 49, 164, 231, 166, -1, -1, 250, 235, 146, 237, + 172, 167, -1, -1, 250, 235, 275, 239, 240, 241, + 146, 172, 167, -1, 277, -1, 76, -1, 277, -1, + 242, -1, 149, 243, -1, 242, 147, 243, -1, 273, + -1, 115, 273, -1, 114, 273, -1, 113, 273, -1, + 138, 115, 273, -1, 138, 114, 273, -1, 138, 113, + 273, -1, 115, 138, 273, -1, 114, 138, 273, -1, + 113, 138, 273, -1, 245, 146, 248, 167, -1, 249, + 149, 246, -1, 249, -1, 249, 275, 149, 246, -1, + 249, 275, -1, 256, -1, 11, -1, 277, -1, 247, + 274, 147, -1, 247, 274, 150, 267, 147, -1, 247, + -1, 247, 274, -1, 247, 274, 150, 267, -1, 70, + -1, 70, 59, -1, 70, 125, -1, 59, -1, 125, + -1, 135, -1, -1, 107, 274, 146, 252, 172, 167, + -1, -1, 83, 107, 274, 146, 253, 172, 167, -1, + 107, 146, 172, 167, -1, 83, 107, 146, 172, 167, + -1, 137, 274, 148, -1, 137, 274, 150, 234, 148, + -1, 137, 107, 274, 148, -1, 256, -1, 257, -1, + 258, -1, 54, -1, 56, -1, 141, -1, 57, -1, + 58, -1, 119, -1, 100, -1, 136, -1, 120, -1, + 84, -1, 119, 256, -1, 100, 256, -1, 136, 256, + -1, 120, 256, -1, 77, -1, 66, -1, 100, 66, + -1, 139, -1, -1, 260, 261, -1, 277, -1, 261, + 262, -1, 3, -1, 4, -1, 6, -1, 8, -1, + 9, -1, 5, -1, 10, -1, 11, -1, 12, -1, + 13, -1, 7, -1, 15, -1, 16, -1, 17, -1, + 18, -1, 19, -1, 20, -1, 21, -1, 22, -1, + 23, -1, 24, -1, 25, -1, 33, -1, 34, -1, + 35, -1, 36, -1, 37, -1, 38, -1, 39, -1, + 40, -1, 41, -1, 42, -1, 43, -1, 44, -1, + 45, -1, 46, -1, 47, -1, 48, -1, 49, -1, + 50, -1, 51, -1, 54, -1, 55, -1, 56, -1, + 57, -1, 58, -1, 59, -1, 60, -1, 61, -1, + 62, -1, 63, -1, 64, -1, 65, -1, 66, -1, + 67, -1, 68, -1, 70, -1, 72, -1, 73, -1, + 75, -1, 76, -1, 77, -1, 78, -1, 79, -1, + 80, -1, 82, -1, 83, -1, 84, -1, 100, -1, + 106, -1, 107, -1, 108, -1, 110, -1, 111, -1, + 112, -1, 113, -1, 114, -1, 115, -1, 74, -1, + 116, -1, 117, -1, 118, -1, 119, -1, 120, -1, + 121, -1, 122, -1, 123, -1, 124, -1, 125, -1, + 126, -1, 127, -1, 128, -1, 129, -1, 130, -1, + 131, -1, 132, -1, 133, -1, 134, -1, 135, -1, + 136, -1, 137, -1, 138, -1, 139, -1, 140, -1, + 141, -1, 142, -1, 157, -1, 158, -1, 159, -1, + 160, -1, 154, -1, 152, -1, 153, -1, 168, -1, + 162, -1, 150, -1, 161, -1, 155, -1, 156, -1, + 164, -1, 166, -1, 163, -1, 147, -1, 148, -1, + 149, -1, 165, -1, 169, -1, 151, -1, 146, 261, + 167, -1, 277, -1, 267, -1, 277, -1, 265, -1, + 267, -1, 265, 147, 267, -1, 268, -1, 164, 234, + 166, 266, -1, 124, 155, 234, 156, 164, 265, 166, + -1, 67, 155, 234, 156, 164, 265, 166, -1, 62, + 155, 234, 156, 164, 265, 166, -1, 117, 155, 234, + 156, 164, 265, 166, -1, 121, 164, 234, 166, -1, + 121, 164, 10, 166, -1, 121, 15, 164, 274, 166, + -1, 50, 164, 234, 166, -1, 168, 266, -1, 162, + 266, -1, 158, 266, -1, 157, 266, -1, 159, 266, + -1, 154, 266, -1, 266, 159, 266, -1, 266, 160, + 266, -1, 266, 161, 266, -1, 266, 157, 266, -1, + 266, 158, 266, -1, 266, 152, 266, -1, 266, 153, + 266, -1, 266, 154, 266, -1, 266, 16, 266, -1, + 266, 17, 266, -1, 266, 18, 266, -1, 266, 19, + 266, -1, 266, 20, 266, -1, 266, 21, 266, -1, + 266, 22, 266, -1, 266, 23, 266, -1, 266, 151, + 266, 149, 266, -1, 266, 165, 267, 169, -1, 266, + 164, 265, 166, -1, 266, 164, 166, -1, 266, 163, + 266, -1, 266, 33, 266, -1, 164, 265, 166, -1, + 268, -1, 164, 234, 166, 267, -1, 124, 155, 234, + 156, 164, 265, 166, -1, 67, 155, 234, 156, 164, + 265, 166, -1, 62, 155, 234, 156, 164, 265, 166, + -1, 117, 155, 234, 156, 164, 265, 166, -1, 11, + 164, 264, 166, -1, 11, 146, 264, 167, -1, 84, + 164, 264, 166, -1, 56, 164, 264, 166, -1, 141, + 164, 264, 166, -1, 57, 164, 264, 166, -1, 58, + 164, 264, 166, -1, 54, 164, 264, 166, -1, 119, + 164, 264, 166, -1, 100, 164, 264, 166, -1, 136, + 164, 264, 166, -1, 120, 164, 264, 166, -1, 77, + 164, 264, 166, -1, 66, 164, 264, 166, -1, 121, + 164, 234, 166, -1, 121, 164, 10, 166, -1, 121, + 15, 164, 274, 166, -1, 50, 164, 234, 166, -1, + 108, 232, -1, 108, 232, 164, 264, 166, -1, 132, + 164, 234, 166, -1, 132, 164, 267, 166, -1, 168, + 267, -1, 162, 267, -1, 158, 267, -1, 157, 267, + -1, 159, 267, -1, 154, 267, -1, 267, 159, 267, + -1, 267, 160, 267, -1, 267, 161, 267, -1, 267, + 157, 267, -1, 267, 158, 267, -1, 267, 152, 267, + -1, 267, 153, 267, -1, 267, 154, 267, -1, 267, + 16, 267, -1, 267, 17, 267, -1, 267, 18, 267, + -1, 267, 19, 267, -1, 267, 20, 267, -1, 267, + 21, 267, -1, 267, 155, 267, -1, 267, 156, 267, + -1, 267, 22, 267, -1, 267, 23, 267, -1, 267, + 151, 267, 149, 267, -1, 267, 165, 267, 169, -1, + 267, 164, 265, 166, -1, 267, 164, 166, -1, 267, + 163, 267, -1, 267, 33, 267, -1, 164, 265, 166, + -1, 4, -1, 129, -1, 75, -1, 5, -1, 3, + -1, 276, -1, 9, -1, 10, -1, 76, -1, 112, + -1, 110, -1, 165, 271, 169, 198, 211, 146, 259, + 167, -1, 165, 271, 169, 164, 212, 166, 198, 211, + 146, 259, 167, -1, 81, 164, 234, 166, -1, 85, + 164, 234, 166, -1, 86, 164, 234, 147, 234, 166, + -1, 87, 164, 234, 166, -1, 88, 164, 234, 166, + -1, 88, 164, 234, 147, 234, 166, -1, 89, 164, + 234, 147, 234, 166, -1, 90, 164, 234, 166, -1, + 91, 164, 234, 166, -1, 92, 164, 234, 166, -1, + 93, 164, 234, 166, -1, 94, 164, 234, 166, -1, + 95, 164, 234, 166, -1, 96, 164, 234, 166, -1, + 97, 164, 234, 166, -1, 98, 164, 234, 166, -1, + 99, 164, 234, 166, -1, 270, -1, 164, 234, 166, + 267, -1, 124, 155, 234, 156, 164, 265, 166, -1, + 67, 155, 234, 156, 164, 265, 166, -1, 62, 155, + 234, 156, 164, 265, 166, -1, 117, 155, 234, 156, + 164, 265, 166, -1, 121, 164, 234, 166, -1, 121, + 164, 10, 166, -1, 121, 15, 164, 274, 166, -1, + 50, 164, 234, 166, -1, 108, 232, -1, 108, 232, + 164, 264, 166, -1, 132, 164, 234, 166, -1, 132, + 164, 267, 166, -1, 168, 267, -1, 162, 267, -1, + 158, 267, -1, 157, 267, -1, 154, 267, -1, 269, + 159, 267, -1, 269, 160, 267, -1, 269, 161, 267, + -1, 269, 157, 267, -1, 269, 158, 267, -1, 269, + 152, 267, -1, 269, 153, 267, -1, 269, 154, 267, + -1, 269, 16, 267, -1, 269, 17, 267, -1, 269, + 18, 267, -1, 269, 19, 267, -1, 269, 20, 267, + -1, 269, 21, 267, -1, 269, 155, 267, -1, 269, + 156, 267, -1, 269, 22, 267, -1, 269, 23, 267, + -1, 269, 151, 267, 149, 267, -1, 269, 165, 267, + 169, -1, 269, 164, 265, 166, -1, 269, 164, 166, + -1, 269, 163, 267, -1, 269, 33, 267, -1, 164, + 265, 166, -1, 4, -1, 129, -1, 75, -1, 5, + -1, 3, -1, 276, -1, 9, -1, 10, -1, 76, + -1, 112, -1, 110, -1, 277, -1, 150, -1, 154, + -1, 272, 217, -1, 271, 147, 272, 217, -1, 154, + 274, -1, 154, 274, 15, -1, 274, -1, 159, 274, + -1, 274, -1, 133, 274, -1, 274, 15, -1, 10, + -1, 11, -1, 12, -1, 76, -1, 112, -1, 120, + -1, 77, -1, 115, -1, 113, -1, 122, -1, 10, + -1, 11, -1, 12, -1, 112, -1, 6, -1, 8, + -1, 276, 6, -1, 276, 8, -1, -1 +}; + +/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 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 + 0, 448, 448, 449, 453, 460, 461, 462, 466, 467, + 471, 475, 479, 492, 491, 503, 504, 505, 506, 507, + 508, 509, 522, 531, 535, 543, 547, 551, 562, 583, + 613, 630, 658, 695, 717, 750, 772, 783, 797, 796, + 811, 815, 820, 824, 835, 839, 843, 847, 851, 855, + 859, 863, 867, 871, 875, 879, 884, 888, 895, 896, + 900, 901, 902, 907, 906, 922, 931, 939, 947, 955, + 966, 982, 981, 996, 1011, 1020, 1035, 1034, 1059, 1058, + 1086, 1085, 1116, 1115, 1134, 1133, 1154, 1153, 1185, 1184, + 1210, 1223, 1227, 1231, 1235, 1248, 1252, 1256, 1260, 1264, + 1269, 1274, 1278, 1282, 1286, 1293, 1297, 1301, 1305, 1309, + 1313, 1317, 1321, 1325, 1329, 1333, 1337, 1341, 1345, 1349, + 1353, 1357, 1361, 1365, 1369, 1373, 1377, 1381, 1385, 1389, + 1393, 1397, 1401, 1405, 1409, 1413, 1417, 1421, 1425, 1429, + 1433, 1437, 1441, 1445, 1452, 1453, 1457, 1459, 1458, 1466, + 1470, 1471, 1475, 1481, 1490, 1491, 1495, 1499, 1503, 1507, + 1513, 1519, 1525, 1532, 1537, 1546, 1550, 1555, 1563, 1575, + 1579, 1593, 1608, 1613, 1618, 1623, 1628, 1633, 1638, 1643, + 1649, 1648, 1679, 1689, 1699, 1703, 1707, 1716, 1720, 1725, + 1729, 1734, 1742, 1747, 1755, 1759, 1764, 1768, 1773, 1781, + 1786, 1794, 1798, 1805, 1809, 1816, 1820, 1824, 1828, 1832, + 1839, 1843, 1847, 1851, 1855, 1859, 1866, 1867, 1868, 1872, + 1875, 1876, 1877, 1881, 1886, 1892, 1898, 1903, 1909, 1915, + 1919, 1930, 1934, 1944, 1948, 1952, 1957, 1962, 1967, 1972, + 1977, 1982, 1990, 1994, 1998, 2003, 2008, 2013, 2018, 2023, + 2028, 2033, 2039, 2047, 2052, 2057, 2062, 2067, 2072, 2077, + 2082, 2087, 2092, 2098, 2106, 2110, 2115, 2120, 2125, 2130, + 2135, 2140, 2145, 2150, 2158, 2162, 2167, 2172, 2177, 2182, + 2187, 2192, 2197, 2202, 2207, 2213, 2220, 2227, 2237, 2241, + 2249, 2253, 2257, 2261, 2265, 2281, 2297, 2306, 2310, 2320, + 2327, 2338, 2342, 2350, 2354, 2358, 2362, 2366, 2382, 2398, + 2416, 2425, 2429, 2439, 2446, 2450, 2458, 2462, 2478, 2494, + 2503, 2513, 2520, 2524, 2532, 2536, 2541, 2545, 2553, 2554, + 2555, 2556, 2561, 2560, 2585, 2584, 2614, 2615, 2622, 2623, + 2627, 2628, 2632, 2636, 2640, 2644, 2648, 2652, 2656, 2660, + 2664, 2668, 2675, 2683, 2687, 2691, 2696, 2704, 2708, 2715, + 2716, 2721, 2728, 2729, 2734, 2742, 2746, 2750, 2757, 2761, + 2765, 2773, 2772, 2795, 2794, 2817, 2818, 2822, 2828, 2835, + 2844, 2845, 2846, 2850, 2854, 2858, 2862, 2866, 2870, 2875, + 2880, 2885, 2890, 2894, 2899, 2908, 2913, 2921, 2925, 2929, + 2937, 2947, 2947, 2957, 2958, 2962, 2963, 2964, 2965, 2966, + 2967, 2968, 2969, 2970, 2971, 2972, 2973, 2973, 2973, 2974, + 2974, 2974, 2974, 2975, 2975, 2975, 2975, 2975, 2976, 2976, + 2976, 2977, 2977, 2977, 2977, 2977, 2978, 2978, 2978, 2978, + 2978, 2979, 2979, 2980, 2980, 2980, 2980, 2980, 2981, 2981, + 2981, 2981, 2981, 2982, 2982, 2982, 2982, 2983, 2983, 2983, + 2983, 2983, 2984, 2984, 2984, 2984, 2984, 2985, 2985, 2985, + 2985, 2985, 2985, 2986, 2986, 2986, 2986, 2986, 2987, 2987, + 2987, 2987, 2988, 2988, 2988, 2988, 2989, 2989, 2989, 2989, + 2989, 2990, 2990, 2990, 2990, 2991, 2991, 2991, 2991, 2991, + 2992, 2992, 2992, 2992, 2993, 2993, 2993, 2993, 2993, 2994, + 2994, 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, + 2997, 2997, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, + 2998, 2998, 2999, 2999, 3003, 3007, 3014, 3018, 3025, 3029, + 3036, 3040, 3044, 3048, 3052, 3056, 3060, 3064, 3076, 3080, + 3084, 3088, 3092, 3096, 3100, 3104, 3108, 3112, 3116, 3120, + 3124, 3128, 3132, 3136, 3140, 3144, 3148, 3152, 3156, 3160, + 3164, 3168, 3172, 3176, 3180, 3184, 3188, 3192, 3196, 3204, + 3208, 3212, 3216, 3220, 3224, 3228, 3238, 3248, 3254, 3260, + 3266, 3272, 3278, 3284, 3291, 3298, 3305, 3312, 3318, 3324, + 3328, 3340, 3344, 3348, 3352, 3356, 3367, 3378, 3382, 3386, + 3390, 3394, 3398, 3402, 3406, 3410, 3414, 3418, 3422, 3426, + 3430, 3434, 3438, 3442, 3446, 3450, 3454, 3458, 3462, 3466, + 3470, 3474, 3478, 3482, 3486, 3490, 3494, 3498, 3505, 3509, + 3513, 3517, 3521, 3525, 3529, 3533, 3537, 3543, 3549, 3553, + 3559, 3566, 3570, 3574, 3578, 3582, 3586, 3590, 3594, 3598, + 3602, 3606, 3610, 3614, 3618, 3622, 3626, 3630, 3644, 3648, + 3652, 3656, 3660, 3664, 3668, 3672, 3684, 3688, 3692, 3696, + 3700, 3711, 3722, 3726, 3730, 3734, 3738, 3742, 3746, 3750, + 3754, 3758, 3762, 3766, 3770, 3774, 3778, 3782, 3786, 3790, + 3794, 3798, 3802, 3806, 3810, 3814, 3818, 3822, 3826, 3830, + 3834, 3838, 3845, 3849, 3853, 3857, 3861, 3865, 3869, 3873, + 3877, 3883, 3889, 3897, 3901, 3905, 3909, 3916, 3926, 3932, + 3938, 3948, 3960, 3968, 3972, 4002, 4006, 4010, 4014, 4018, + 4022, 4028, 4032, 4036, 4040, 4051, 4055, 4059, 4063, 4071, + 4075, 4079, 4085, 4096 }; #endif @@ -1011,31 +1360,31 @@ static const char *const yytname[] = "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", - "KW_PROTECTED", "KW_PUBLIC", "KW_REGISTER", "KW_REINTERPRET_CAST", - "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_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", + "RSHIFTEQUAL", "ATTR_LEFT", "ATTR_RIGHT", "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", "KW_PROTECTED", "KW_PUBLIC", "KW_REGISTER", + "KW_REINTERPRET_CAST", "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_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", @@ -1057,24 +1406,24 @@ static const char *const yytname[] = "not_paren_formal_parameter_identifier", "formal_parameter_identifier", "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", + "predefined_type", "var_type_decl", "full_type", "struct_attributes", + "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", "const_operand", "formal_const_expr", "formal_const_operand", "capture_list", "capture", "class_derivation_name", "name", - "name_no_final", "string_literal", "empty", YY_NULLPTR + "name_no_final", "string_literal", "empty", YY_NULL }; #endif # ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ +/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to + token YYLEX-NUM. */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, @@ -1091,1853 +1440,94 @@ static const yytype_uint16 yytoknum[] = 365, 366, 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, 123, 44, 59, 58, 61, 63, - 124, 94, 38, 60, 62, 43, 45, 42, 47, 37, - 126, 46, 40, 91, 41, 125, 93, 33 + 395, 396, 397, 398, 399, 400, 123, 44, 59, 58, + 61, 63, 124, 94, 38, 60, 62, 43, 45, 42, + 47, 37, 126, 46, 40, 91, 41, 125, 33, 93 }; # endif -#define YYPACT_NINF -868 - -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-868))) - -#define YYTABLE_NINF -729 - -#define yytable_value_is_error(Yytable_value) \ - 0 - - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -static const yytype_int16 yypact[] = -{ - 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. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ -static const yytype_uint16 yydefact[] = -{ - 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, - 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[] = -{ - -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, 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 - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ -static const yytype_int16 yytable[] = -{ - 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, 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, 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, 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, - 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, 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, 0, 0, 0, 189 -}; - -static const yytype_int16 yycheck[] = -{ - 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, -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, - -1, -1, -1, -1, -1, 98, 1164, -1, -1, -1, - -1, -1, -1, 16, 17, 18, 19, 20, 21, 22, - 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, 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, -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, -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, - -1, -1, -1, -1, -1, -1, 162 -}; - - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ -static const yytype_uint16 yystos[] = -{ - 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. */ +/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_uint16 yyr1[] = { - 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, + 0, 170, 171, 171, 171, 172, 172, 172, 173, 173, + 174, 174, 174, 176, 175, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 179, 178, + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 180, 180, 180, 180, 180, 181, 181, + 182, 182, 182, 184, 183, 183, 183, 183, 183, 185, + 185, 187, 186, 186, 188, 188, 190, 189, 191, 189, + 193, 192, 194, 192, 195, 192, 196, 192, 197, 192, + 192, 198, 198, 198, 198, 198, 198, 198, 198, 198, + 198, 198, 198, 198, 198, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 200, 200, 201, 202, 201, 201, + 203, 203, 204, 204, 205, 205, 206, 206, 206, 206, + 206, 206, 206, 206, 206, 207, 207, 207, 207, 208, + 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 209, 208, 210, 210, 211, 211, 211, 212, 212, 212, + 212, 212, 213, 213, 214, 214, 214, 214, 214, 215, + 215, 216, 216, 217, 217, 218, 218, 218, 218, 218, + 219, 219, 219, 219, 219, 219, 220, 220, 220, 221, + 221, 221, 221, 222, 222, 222, 222, 222, 222, 222, + 222, 223, 223, 224, 224, 224, 224, 224, 224, 224, + 224, 224, 225, 225, 225, 225, 225, 225, 225, 225, + 225, 225, 225, 226, 226, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 227, 227, 227, 227, 227, 227, + 227, 227, 227, 227, 228, 228, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 229, 229, + 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, + 230, 231, 231, 231, 231, 231, 231, 231, 231, 231, + 231, 231, 231, 231, 232, 232, 232, 232, 232, 232, + 232, 232, 233, 233, 234, 234, 234, 234, 235, 235, + 235, 235, 237, 236, 239, 238, 240, 240, 241, 241, + 242, 242, 243, 243, 243, 243, 243, 243, 243, 243, + 243, 243, 244, 245, 245, 245, 245, 246, 246, 247, + 247, 247, 248, 248, 248, 249, 249, 249, 250, 250, + 250, 252, 251, 253, 251, 251, 251, 254, 254, 254, + 255, 255, 255, 256, 256, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 257, 257, 257, + 258, 260, 259, 261, 261, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 263, 263, 264, 264, 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 + 266, 266, 266, 266, 266, 266, 266, 266, 266, 267, + 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 267, 267, 267, 267, 267, 267, 268, 268, + 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, + 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, + 268, 268, 268, 268, 268, 268, 268, 268, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 270, 270, 270, 270, 270, 270, 270, 270, + 270, 270, 270, 271, 271, 271, 271, 271, 272, 272, + 272, 272, 273, 273, 273, 274, 274, 274, 274, 274, + 274, 274, 274, 274, 274, 275, 275, 275, 275, 276, + 276, 276, 276, 277 }; - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ static const yytype_uint8 yyr2[] = { 0, 2, 2, 2, 2, 1, 2, 2, 1, 3, @@ -2945,41 +1535,42 @@ static const yytype_uint8 yyr2[] = 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, + 2, 2, 2, 2, 2, 4, 5, 5, 1, 3, + 1, 4, 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, + 2, 4, 5, 6, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 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, + 2, 2, 1, 1, 1, 1, 2, 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, + 4, 1, 1, 1, 1, 2, 2, 2, 2, 2, + 3, 4, 1, 1, 2, 2, 2, 2, 2, 3, + 4, 7, 3, 1, 2, 2, 2, 2, 2, 2, + 3, 4, 7, 3, 1, 1, 2, 2, 2, 2, + 2, 2, 3, 4, 1, 1, 2, 2, 2, 2, + 2, 2, 3, 4, 5, 9, 9, 9, 1, 1, + 2, 1, 1, 1, 3, 4, 4, 4, 4, 1, + 1, 1, 1, 2, 1, 1, 1, 3, 4, 2, + 4, 4, 4, 1, 1, 1, 2, 3, 2, 4, + 4, 1, 1, 1, 2, 3, 2, 3, 1, 4, + 5, 5, 0, 6, 0, 9, 1, 1, 1, 1, + 2, 3, 1, 2, 2, 2, 3, 3, 3, 3, + 3, 3, 4, 3, 1, 4, 2, 1, 1, 1, + 3, 5, 1, 2, 4, 1, 2, 2, 1, 1, + 1, 0, 6, 0, 7, 4, 5, 3, 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 2, 2, 1, 1, 2, 1, 0, 2, - 1, 2, 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, @@ -2991,41 +1582,1990 @@ 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, 3, 1, - 1, 1, 1, 1, 3, 1, 4, 7, 7, 7, - 7, 4, 5, 4, 2, 2, 2, 2, 2, 2, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, + 1, 4, 7, 7, 7, 7, 4, 4, 5, 4, + 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 5, 4, 4, 3, - 3, 3, 3, 1, 4, 7, 7, 7, 7, 4, + 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, 4, 4, 5, 4, 2, 5, 4, 4, 2, - 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, + 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, 3, 3, 5, 4, 4, 3, 3, 3, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 8, 11, 4, 4, 6, 4, 4, 6, 6, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 1, 4, 7, 7, 7, 7, 4, 5, 4, 2, - 5, 4, 4, 2, 2, 2, 2, 2, 3, 3, + 3, 5, 4, 4, 3, 3, 3, 3, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, + 11, 4, 4, 6, 4, 4, 6, 6, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, + 7, 7, 7, 7, 4, 4, 5, 4, 2, 5, + 4, 4, 2, 2, 2, 2, 2, 3, 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, 2, 1, 1, 1, 1, 1, + 3, 3, 3, 3, 3, 5, 4, 4, 3, 3, + 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 2, 4, 2, 3, + 1, 2, 1, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 0 }; +/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE doesn't specify something else to do. Zero + means the default is an error. */ +static const yytype_uint16 yydefact[] = +{ + 0, 753, 0, 0, 0, 753, 5, 642, 638, 641, + 749, 750, 644, 645, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 640, 646, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 648, 647, 0, 0, 0, + 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 753, 0, 3, 579, 643, 289, 300, 299, + 383, 384, 386, 387, 368, 0, 0, 398, 365, 397, + 392, 389, 388, 391, 369, 0, 0, 370, 390, 400, + 385, 753, 753, 4, 291, 292, 293, 0, 354, 753, + 288, 380, 381, 382, 1, 0, 0, 21, 753, 753, + 753, 22, 753, 753, 753, 0, 38, 753, 0, 0, + 0, 0, 753, 0, 0, 0, 0, 753, 753, 0, + 753, 753, 753, 0, 753, 753, 6, 17, 7, 19, + 0, 15, 16, 18, 68, 40, 753, 753, 0, 753, + 753, 753, 753, 0, 753, 0, 753, 0, 753, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 753, 315, 321, 0, 0, 0, + 603, 0, 753, 314, 0, 753, 753, 0, 0, 0, + 0, 753, 753, 612, 610, 609, 611, 608, 289, 383, + 384, 386, 387, 398, 397, 392, 389, 388, 391, 390, + 385, 0, 0, 538, 735, 736, 737, 738, 741, 739, + 743, 742, 740, 744, 724, 725, 0, 0, 753, 730, + 723, 607, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 751, 752, 753, 753, 0, + 366, 367, 399, 389, 394, 393, 396, 290, 0, 395, + 0, 275, 753, 753, 753, 753, 753, 753, 0, 324, + 274, 326, 753, 745, 746, 747, 748, 0, 356, 0, + 328, 0, 0, 58, 60, 0, 753, 753, 52, 41, + 51, 53, 753, 42, 146, 47, 23, 753, 0, 45, + 0, 0, 0, 0, 50, 753, 0, 26, 25, 24, + 48, 44, 0, 0, 149, 0, 54, 0, 20, 0, + 0, 46, 49, 323, 302, 313, 0, 0, 0, 0, + 13, 0, 0, 0, 322, 63, 304, 305, 306, 354, + 753, 301, 0, 537, 536, 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, 0, 316, 0, 753, 318, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 637, 728, 731, 0, 753, 0, 726, 203, + 621, 622, 623, 624, 625, 626, 629, 630, 636, 0, + 618, 619, 620, 627, 628, 616, 617, 613, 614, 615, + 635, 634, 0, 0, 325, 327, 0, 0, 0, 753, + 276, 0, 265, 753, 753, 753, 753, 753, 281, 264, + 0, 277, 0, 278, 280, 279, 188, 753, 0, 0, + 0, 753, 753, 0, 189, 192, 753, 0, 187, 753, + 362, 0, 359, 358, 353, 357, 0, 735, 736, 737, + 0, 0, 739, 332, 294, 334, 0, 753, 0, 753, + 302, 0, 0, 43, 39, 753, 0, 0, 0, 0, + 0, 753, 371, 0, 753, 323, 302, 0, 322, 71, + 0, 377, 0, 76, 78, 0, 0, 753, 303, 0, + 753, 0, 401, 205, 0, 0, 66, 401, 210, 0, + 67, 65, 0, 309, 356, 0, 586, 585, 602, 592, + 588, 590, 591, 0, 598, 0, 597, 651, 587, 652, + 0, 654, 0, 655, 0, 658, 659, 660, 661, 662, + 663, 664, 665, 666, 667, 594, 0, 0, 0, 317, + 0, 593, 596, 0, 600, 599, 0, 605, 606, 595, + 589, 580, 539, 729, 0, 753, 753, 753, 91, 204, + 0, 633, 632, 297, 296, 298, 282, 753, 266, 271, + 267, 268, 270, 269, 753, 0, 0, 0, 753, 0, + 229, 0, 0, 753, 191, 0, 0, 753, 753, 753, + 753, 753, 753, 753, 243, 242, 0, 253, 0, 0, + 0, 0, 0, 0, 753, 0, 535, 534, 363, 352, + 295, 0, 0, 753, 753, 0, 55, 59, 716, 712, + 715, 718, 719, 195, 0, 0, 0, 714, 720, 0, + 722, 721, 0, 0, 0, 713, 0, 0, 0, 0, + 0, 0, 0, 0, 196, 231, 199, 232, 668, 717, + 194, 753, 753, 753, 373, 0, 0, 0, 0, 375, + 753, 0, 0, 166, 167, 168, 154, 0, 155, 0, + 151, 156, 152, 753, 165, 150, 0, 73, 0, 379, + 0, 753, 0, 0, 753, 0, 0, 753, 0, 753, + 753, 753, 753, 753, 0, 234, 233, 0, 753, 80, + 0, 753, 0, 8, 0, 0, 0, 0, 0, 0, + 753, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 64, 753, 753, 169, 0, 307, 0, 0, 0, 0, + 0, 319, 320, 604, 0, 601, 0, 727, 0, 98, + 0, 0, 92, 100, 95, 99, 94, 96, 0, 93, + 97, 0, 184, 631, 272, 0, 0, 0, 753, 0, + 753, 753, 0, 0, 753, 190, 193, 753, 248, 244, + 245, 247, 246, 0, 753, 223, 0, 254, 259, 255, + 256, 258, 257, 0, 753, 226, 283, 360, 0, 329, + 0, 0, 753, 337, 753, 336, 62, 0, 0, 0, + 678, 0, 0, 0, 0, 0, 686, 685, 684, 683, + 0, 0, 682, 61, 198, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, + 56, 376, 753, 0, 0, 0, 0, 753, 0, 37, + 753, 753, 0, 159, 157, 0, 753, 753, 753, 753, + 753, 753, 753, 163, 72, 753, 378, 0, 0, 0, + 0, 311, 310, 0, 753, 239, 235, 236, 238, 237, + 86, 753, 312, 14, 753, 206, 402, 403, 401, 0, + 753, 753, 208, 209, 211, 213, 214, 753, 0, 217, + 219, 216, 212, 0, 176, 172, 0, 115, 116, 117, + 118, 119, 120, 123, 124, 139, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 143, 142, + 126, 125, 112, 114, 113, 121, 122, 110, 111, 107, + 108, 109, 106, 0, 0, 105, 170, 173, 175, 174, + 0, 0, 180, 753, 182, 0, 0, 69, 308, 0, + 0, 653, 656, 657, 0, 0, 753, 0, 753, 0, + 0, 401, 273, 753, 230, 753, 753, 224, 227, 753, + 753, 284, 249, 252, 0, 260, 263, 0, 364, 331, + 330, 333, 0, 0, 339, 338, 0, 0, 0, 753, + 0, 0, 0, 0, 0, 0, 0, 0, 711, 197, + 200, 695, 696, 697, 698, 699, 700, 703, 704, 710, + 0, 692, 693, 694, 701, 702, 690, 691, 687, 688, + 689, 709, 708, 0, 0, 753, 0, 0, 0, 0, + 0, 372, 0, 753, 164, 144, 148, 145, 153, 160, + 0, 753, 0, 161, 201, 0, 74, 753, 0, 0, + 753, 88, 240, 753, 0, 0, 405, 406, 410, 407, + 415, 408, 409, 411, 412, 413, 414, 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, + 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 483, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, + 478, 479, 480, 481, 482, 484, 485, 486, 487, 488, + 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, + 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, + 509, 510, 753, 527, 528, 529, 520, 532, 516, 517, + 515, 522, 523, 511, 512, 513, 514, 521, 519, 526, + 524, 530, 525, 518, 531, 404, 0, 9, 0, 0, + 0, 215, 218, 177, 171, 141, 140, 179, 183, 753, + 0, 204, 0, 583, 582, 584, 581, 753, 753, 185, + 104, 101, 0, 0, 0, 225, 228, 0, 0, 753, + 250, 753, 261, 361, 743, 0, 742, 0, 0, 340, + 342, 732, 753, 0, 677, 0, 0, 0, 0, 0, + 675, 674, 0, 680, 681, 669, 0, 707, 706, 374, + 0, 27, 0, 0, 0, 36, 162, 158, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 202, 540, 0, 77, 0, 82, 79, 753, 0, + 241, 753, 0, 207, 12, 10, 220, 753, 221, 0, + 178, 70, 0, 186, 0, 102, 649, 753, 753, 753, + 0, 0, 0, 345, 0, 344, 0, 343, 733, 0, + 0, 0, 734, 753, 341, 0, 0, 679, 0, 676, + 0, 705, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 555, 553, 552, 554, + 551, 0, 0, 550, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 75, 84, 753, 0, 753, + 81, 533, 11, 0, 753, 401, 103, 753, 753, 753, + 753, 753, 351, 350, 349, 348, 347, 346, 335, 0, + 0, 0, 0, 0, 28, 0, 33, 35, 0, 30, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 578, + 564, 565, 566, 567, 568, 569, 570, 571, 577, 0, + 561, 562, 563, 559, 560, 556, 557, 558, 576, 575, + 0, 0, 753, 0, 753, 87, 222, 181, 0, 287, + 286, 285, 251, 262, 672, 671, 673, 670, 0, 0, + 0, 0, 549, 0, 0, 0, 0, 547, 546, 0, + 541, 0, 574, 573, 0, 753, 89, 650, 29, 0, + 0, 31, 0, 0, 0, 548, 0, 572, 753, 753, + 0, 0, 0, 0, 0, 0, 753, 83, 34, 32, + 544, 543, 545, 542, 85 +}; -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 +/* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 4, 5, 732, 733, 137, 520, 138, 139, 307, + 140, 292, 293, 141, 532, 750, 328, 708, 894, 342, + 711, 714, 343, 914, 1407, 1472, 1093, 1318, 587, 976, + 1076, 142, 325, 699, 700, 701, 702, 703, 751, 1239, + 752, 781, 463, 464, 673, 674, 1083, 408, 526, 530, + 928, 929, 465, 676, 724, 798, 808, 278, 279, 91, + 92, 344, 180, 345, 93, 289, 94, 643, 95, 644, + 824, 1023, 1024, 1269, 96, 97, 474, 470, 471, 98, + 99, 143, 690, 872, 144, 100, 101, 102, 103, 730, + 731, 916, 1225, 635, 352, 353, 1311, 213, 65, 677, + 678, 227, 228, 1270, 1271, 624, 66, 145 +}; -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +#define YYPACT_NINF -922 +static const yytype_int16 yypact[] = +{ + 238, -922, 3707, 5766, 80, 4877, -922, -922, -922, -922, + -922, -922, -922, -922, -20, -68, -54, -43, -37, -23, + -49, 2, 3, -922, -922, 36, 90, 94, 120, 131, + 141, 166, 171, 181, 186, 204, 224, 233, 250, 252, + 265, 270, 288, 300, 6077, -922, -922, 59, 306, 308, + 30, 112, -922, 325, 331, 338, 3707, 3707, 3707, 3707, + 3707, 2266, 923, 3707, 3915, -922, 146, -922, -922, -922, + -922, -922, -922, -922, -922, 5876, 344, -922, 8, -922, + -922, 1691, 379, 379, -922, 3040, 346, -922, 379, -922, + -922, 220, 220, -922, -922, -922, -922, -11, 104, -922, + -922, -922, -922, -922, -922, 1704, 348, -922, 6862, 6862, + 6862, -922, 6862, 5244, 6862, -31, -922, 6834, 350, 357, + 359, 362, 6862, 1687, 161, 188, 258, 6862, 6862, 371, + 6652, 6862, 6862, 2382, 6862, 6862, -922, -922, -922, -922, + 4341, -922, -922, -922, -922, -922, 3707, 3707, 5766, 3707, + 3707, 3707, 3707, 5766, 3707, 5766, 3707, 5766, 3707, 5766, + 5766, 5766, 5766, 5766, 5766, 5766, 5766, 5766, 5766, 5766, + 5766, 5766, 5766, 5766, 3707, -922, -922, 372, 3040, 373, + 374, 3040, -922, -922, 5766, 3707, 3707, 398, 5362, 5766, + 2266, 3707, 3707, 60, 60, 60, 60, 60, -20, -54, + -43, -37, -23, 2, 36, 94, 1169, 5295, 5415, 5670, + 338, 321, -74, 3915, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, 3040, 3040, -87, 413, -922, + -922, 60, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, + 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, + 3707, 3707, 3707, 2769, 3707, -922, -922, 220, 220, 2903, + -922, -922, -922, 379, -922, -922, -922, -922, 5766, -922, + 405, 560, 273, 220, 220, 273, 273, 4990, 400, -922, + 402, -922, -922, -922, -922, -922, -922, 901, 419, 2827, + -922, 3040, 525, 427, 412, 2469, 5271, 6862, -922, -922, + -922, -922, 6862, -922, -922, -922, -922, 6748, 2638, -922, + 3040, 3040, 3040, 3040, -922, -922, 432, -922, -922, -922, + -922, -922, 3707, 4434, -922, 433, -922, 4520, -922, 3040, + -63, -922, -922, 225, 423, -922, 425, 5962, 3040, 426, + -922, 3040, 198, 205, 443, -922, -922, -922, -922, 942, + -922, -922, 428, 447, -922, 434, 438, 439, 442, 458, + 459, 453, 460, 471, 462, 468, 469, 472, 452, 474, + -69, 494, 480, 481, 482, 483, 484, 486, 487, 488, + 489, 490, 491, 3707, -922, 5766, 3707, -922, 2291, 507, + 498, 499, 3040, 500, 501, 513, 504, 4205, 505, 510, + 3707, 3707, -922, 668, -922, 936, 520, 3707, -922, -922, + 4171, 1444, 1377, 1377, 260, 260, 11, 11, -922, 2653, + 5043, 5059, 5099, 260, 260, 695, 695, 60, 60, 60, + -922, -922, -66, 1527, -922, -922, 519, 4589, 521, 273, + 523, 527, 3040, 273, 273, 273, 273, 273, 526, -922, + 400, -922, 400, -922, 526, 526, -922, 273, 1704, 5852, + 5737, 273, 273, 528, 50, -922, 1127, 232, -922, 3707, + 3040, 531, -922, -922, -922, -922, 901, -12, -10, -6, + 1704, 529, 10, -922, -922, -922, 543, 6862, 1704, 3841, + -20, 533, 4646, -922, -922, -922, 549, 553, 556, 558, + 564, 6192, -922, 3860, 5511, 280, 548, 205, -922, -922, + 567, -922, 5766, -922, 29, 3037, 6101, 1091, -922, 5766, + -922, 559, -922, -922, 3040, 294, -922, -922, -922, 2635, + -922, -922, 1168, -922, 575, 2827, -922, -922, -922, -922, + -922, -922, -922, 562, -922, 563, -922, -922, -922, -922, + 5766, -922, 5766, -922, 5766, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, 4667, 565, 566, -922, + 572, -922, -922, 571, -922, -922, 578, -922, -922, -922, + -922, 60, 3915, -922, 3040, 413, 5617, 4489, -922, 3915, + 3707, -922, -922, -922, -922, -922, 526, 273, -922, 526, + 526, 526, 526, 526, 3707, 212, 681, 5876, 1127, 232, + -922, 311, 320, -922, -922, 5646, 585, 1127, 1127, 1127, + 1127, 1127, 1127, -33, -922, -922, 586, 3040, 232, 232, + 232, 232, 232, 232, 39, 577, 3915, -922, 32, -922, + 601, 700, 2469, -922, 673, 1704, -922, -922, -922, -922, + -922, -922, -922, -922, 588, 598, 600, -922, -922, 6077, + -922, -922, 604, 35, 606, -922, 602, 3707, 3707, 3707, + 3707, 2266, 3707, 596, 64, -922, -922, 4758, -922, 146, + -922, 6862, 6862, 6264, -922, 754, 758, 763, 764, -922, + -922, 256, 617, -922, -922, -922, -922, 5579, -922, 621, + 633, 2906, -922, 1367, -922, -922, 29, -922, 1168, -922, + 634, 5617, 622, 1168, 5617, 619, 4685, 1091, 624, 1091, + 1091, 1091, 1091, 1091, 328, -922, -922, 625, 6336, -922, + 627, -922, 354, -922, 19, 647, 651, 637, 653, 657, + 3171, 3059, 649, 1168, 1168, 4274, 1168, 1168, 1168, 1168, + -922, 79, 323, -922, 901, -922, 3707, 3707, 640, 643, + 644, -922, -922, -922, 3707, -922, 3707, -922, 646, -922, + 5991, 1704, -922, -922, -922, -922, -922, -922, 650, -922, + -922, 671, -922, 3915, 526, 652, 654, 5737, 1127, 232, + -33, 39, 655, 656, 4489, -922, -922, 1127, 659, 659, + 659, 659, 659, 339, 3707, -922, 232, -922, 660, 660, + 660, 660, 660, 363, 3707, -922, 662, -922, 3707, -922, + 663, 4703, 6408, -922, 683, -922, -922, 5766, 5766, 5766, + 666, 5766, 670, 5391, 5766, 2266, 60, 60, 60, 60, + 672, -64, 60, -922, -922, 3981, 3707, 3707, 3707, 3707, + 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, + 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3305, 3707, -922, + -922, -922, -922, -59, 688, 690, 699, 6480, 41, -922, + 1367, 6776, 5511, 3040, 701, 691, 1367, 1367, 1367, 1367, + 1367, 1367, 71, 660, -922, 323, -922, 696, 1168, 228, + 697, -922, -922, 366, 1091, 692, 692, 692, 692, 692, + -922, 3707, -922, -922, 5617, -922, 2099, -922, -922, 3040, + 3707, 3707, -922, -922, -922, -922, -922, 3171, 698, 719, + 3915, -922, -922, 1168, 369, 369, 858, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, 704, 703, -922, -922, 369, 369, 369, + 293, 869, -922, 3707, -922, 2635, 727, -922, 601, -58, + -46, -922, -922, -922, -44, -42, -922, 6077, 220, 829, + 119, -922, -922, 5617, -922, -33, 39, -922, -922, 5617, + 5617, -922, 659, 714, 711, 660, 717, 713, 3327, -922, + -922, -922, 1439, 738, 751, -922, 734, 745, 746, 3707, + 748, 3040, 739, 741, 752, 750, 4740, 3707, -922, -922, + -922, 4171, 1444, 1377, 1377, 260, 260, 11, 11, -922, + 3595, 5043, 5059, 5099, 260, 260, 695, 695, 60, 60, + 60, -922, -922, -38, 1909, 6552, 904, 769, 908, 911, + 912, -922, 775, 71, 660, -922, -922, -922, -922, -922, + 5766, 1367, 4120, -922, -922, 778, -922, -922, 316, 765, + -922, -922, 692, 5617, 759, 766, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, 783, -922, 800, 770, + 804, -922, 3439, 369, -922, -922, -922, -922, -922, 3841, + 762, 3059, 1168, -922, -922, -922, -922, 4489, 220, -922, + -922, -922, 1, 806, 779, -922, -922, 812, 815, 5617, + -922, 5617, -922, -922, 5836, 6061, 6110, 3040, 326, -922, + -922, 968, -922, 1439, -922, 820, 824, 827, 830, 832, + -922, -922, 839, -922, -922, 60, 3707, -922, -922, -922, + -28, -922, -24, 840, 82, -922, -922, -922, 843, 841, + 855, 856, 37, 859, 4120, 4120, 4120, 4120, 4120, 2266, + 4120, 4356, -922, 1168, 755, 851, -922, 755, 5617, 850, + -922, -922, 1840, -922, -922, 1002, -922, 3171, 3915, 857, + -922, -922, 876, -922, 860, -922, -922, -922, -922, -922, + 863, 865, 2075, -922, 2075, -922, 2075, -922, -922, 2075, + 2075, 2075, -922, 6624, -922, 3707, 3707, -922, 3707, -922, + 3707, 3915, 1014, 884, 1029, 892, 893, 1034, 898, 5766, + 5766, 5766, 5766, 886, 5482, 5766, 114, 114, 114, 114, + 114, 887, 99, 114, 4120, 4120, 4120, 4120, 4120, 4120, + 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, + 4120, 4120, 4120, 3573, 3707, -922, -922, 5617, 894, -922, + 755, -922, -922, 885, -922, -922, -922, 4489, 4489, 4489, + -922, -922, -922, -922, -922, -922, -922, -922, -922, 103, + 123, 152, 168, 895, -922, 916, -922, -922, 170, -922, + 902, 903, 918, 920, 3040, 913, 915, 922, 4120, -922, + 5001, 5075, 1543, 1543, 290, 290, 684, 684, -922, 1472, + 5115, 5149, 4141, 906, 906, 114, 114, 114, -922, -922, + 172, 2288, 5617, 917, -922, 755, -922, 755, 921, -922, + -922, -922, 755, 755, -922, -922, -922, -922, 937, 1074, + 1077, 945, -922, 930, 932, 933, 934, -922, -922, 941, + 114, 4120, -922, -922, 940, -922, 755, -922, -922, 943, + 946, -922, 3707, 3707, 3707, -922, 3707, 4356, -922, 4489, + 950, 959, 173, 195, 196, 210, 4489, -922, -922, -922, + -922, -922, -922, -922, -922 +}; +/* YYPGOTO[NTERM-NUM]. */ +static const yytype_int16 yypgoto[] = +{ + -922, -922, -303, -922, 197, -922, -922, 807, -922, -922, + 194, -440, 470, -127, -922, -129, -922, -922, -195, -922, + -922, -922, 793, -922, -922, -922, -922, -922, -581, -922, + -922, -111, -922, -922, -922, -922, 240, 429, -672, -922, + -699, -740, -492, -922, -116, -922, 51, -539, -922, -497, + -921, -922, -455, 282, -664, 322, -229, 136, -71, 185, + 24, -288, -645, 801, 1201, -152, -118, -922, -117, -922, + -922, -922, -922, -144, -115, -922, -457, -922, -922, -36, + -27, -922, -922, -922, -922, -29, -45, -922, -922, -523, + -922, -72, -922, -584, -123, -60, 341, 307, 275, -922, + -922, -922, 726, 669, 1170, 243, -476, -1 +}; + +/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule which + number is the opposite. If YYTABLE_NINF, syntax error. */ +#define YYTABLE_NINF -749 +static const yytype_int16 yytable[] = +{ + 6, 212, 304, 324, 737, 610, 1230, 491, 181, 895, + 707, 984, 501, 679, 830, 183, 1334, 182, 606, 640, + 785, 281, 346, 347, 355, 348, 357, 358, 359, 360, + 388, 362, 794, 364, 675, 366, 264, 265, 266, 508, + 641, 899, 712, 269, 240, 187, 767, 255, 647, 256, + 832, 382, 1373, 903, 1011, 905, 906, 907, 908, 909, + 405, 230, 390, 391, -745, 614, -746, 260, 398, 399, + -747, 934, 935, 401, 977, 978, 979, 980, 552, 844, + 104, 401, 406, 401, 805, 511, -748, 512, 1066, 401, + 280, 280, 402, 240, 768, 815, 148, 553, 290, 258, + 591, 401, 1038, 401, 349, 401, 153, 1067, 1243, 401, + 149, 351, 770, 350, 283, 284, 285, 407, 306, 1362, + 1244, 150, 1245, 1364, 1246, 998, 146, 151, 1287, 214, + 215, 216, 804, 261, -745, 282, -746, -745, 1363, -746, + -747, 152, 1365, -747, 147, 354, 354, 1392, 354, 354, + 354, 354, 255, 354, 256, 354, -748, 354, 155, -748, + 796, 264, 265, 266, 269, 920, 154, 1335, 247, 248, + 249, 250, 251, 354, 252, 253, 254, 346, 347, 817, + 348, 290, 818, 921, 354, 354, 434, 435, 713, 407, + 354, 354, 683, 432, 188, 217, 218, 615, 535, 833, + 156, 1374, 451, 453, 814, 346, 347, 1072, 348, 346, + 347, 845, 348, 986, 184, 878, 286, 728, 264, 897, + 1014, 1082, 900, 252, 253, 254, 1088, 409, 981, 1367, + 1017, 219, 220, 270, 221, 271, 804, 272, 634, 222, + 1092, 223, 475, 982, 983, 626, 401, 627, 1368, 628, + 401, 1007, 1008, 287, 157, 987, 280, 280, 158, 349, + 257, 1233, 10, 568, 11, 1449, 351, 189, 350, 1484, + 401, 449, 280, 280, 449, 449, 468, 1402, 1403, 1404, + 273, 472, 238, 239, 159, 1251, 441, 349, 442, 1485, + 443, 349, 629, 240, 351, 160, 350, 988, 351, 401, + 350, 467, 298, 299, 300, 161, 301, 303, 305, 64, + 317, 309, 1390, 1391, 6, 401, 314, 1490, 1486, 401, + 401, 320, 321, 1392, 323, 326, 327, 1094, 331, 332, + 162, 999, 1004, 444, 1487, 163, 1491, 318, 1502, 1530, + 822, 288, 401, 401, 522, 164, 523, 524, 525, 290, + 165, 527, 1248, 528, 820, 529, 1085, 401, 735, 736, + 274, 1531, 1532, 193, 194, 195, 196, 197, 166, 679, + 231, -90, 630, -90, 275, -90, 1533, 604, 786, 276, + 791, 1, 2, 3, 277, 354, 631, 877, 167, 513, + 675, 632, 982, 983, 1089, 1226, 633, 168, 1086, 1240, + 809, 810, 811, 812, 813, 588, 1413, 319, 448, 450, + 452, 454, 455, 445, 169, 1247, 170, 247, 248, 249, + 250, 251, 1095, 252, 253, 254, -90, 446, -90, 171, + -90, 475, 447, 70, 172, 71, 72, 73, 449, 1349, + 1350, 1351, 449, 449, 449, 449, 449, 1397, 1398, 1399, + 1400, 1401, 173, 1402, 1403, 1404, 449, 982, 983, 1237, + 449, 449, 466, 80, 174, 625, 1255, 1256, 637, 527, + 185, 528, 186, 985, 893, 704, 604, 792, 1253, 263, + 982, 983, 1315, 609, 467, 604, 793, 400, 680, 190, + 303, 309, 910, 911, 6, 191, 493, 397, 82, 83, + 918, 919, 192, 705, 804, 1013, 1314, 1332, 259, 1317, + 268, 1254, 295, 467, 310, 88, 726, 1257, 1258, 6, + 90, 311, 517, 312, 346, 347, 313, 348, 814, 1016, + 1091, 911, 485, 982, 983, 322, 383, 385, 386, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, + 1006, 433, 392, 407, 439, 469, 437, -264, 476, 1065, + 214, 215, 216, 487, 488, 596, 489, 1015, 502, 599, + 600, 601, 602, 603, 409, 468, 782, 514, 504, 515, + 519, 531, 534, 605, 401, 536, 449, 611, 612, 550, + 537, 1319, 492, 637, 538, 539, 349, 625, 540, 543, + 467, 841, 588, 351, 895, 350, 625, 625, 625, 625, + 625, 625, 409, 181, 541, 542, 544, 545, 546, 503, + 183, 789, 182, 409, 547, 548, 217, 218, 549, 467, + 551, 554, 6, 825, 608, 466, 555, 556, 557, 558, + 559, 1074, 560, 561, 562, 563, 564, 565, 809, 810, + 811, 812, 813, 570, 571, 572, 574, 575, 704, 576, + 577, 579, 219, 220, 466, 221, 580, 1479, 1480, 1481, + 222, 646, 223, 583, 586, 593, 597, 595, -266, 6, + 566, 604, 645, 642, 613, 684, 989, 990, 639, 681, + 685, 717, 625, 686, 994, 687, 995, 581, 582, 475, + 468, 688, 706, 468, 589, 709, 726, 1392, 726, 726, + 726, 726, 726, 729, 754, -265, 756, 757, 240, 787, + 917, 762, 763, 784, 181, 467, 764, 765, 467, 931, + 1410, 183, 766, 182, 797, 806, 816, -355, 819, 823, + 782, 409, 827, 828, 1075, 829, 1417, 1418, 1419, 831, + 725, 834, 843, 679, 873, 879, 835, 1340, 874, 1341, + 1077, 466, 769, 875, 876, 753, 636, 881, 485, 1527, + 882, 898, 896, 904, 675, 901, 1534, 625, 623, 409, + 409, 912, 788, 782, 915, 922, 625, 1228, 1229, 923, + 466, 925, 771, 637, 924, 926, 991, 1063, 933, 992, + 993, 467, 996, 637, 1000, 772, 773, 1001, 1003, 1009, + 1010, 1002, 716, 1025, 804, 814, 1408, -273, 1475, 1019, + 1029, 774, 1022, 1477, 1031, 1068, 741, 1069, 1037, 1482, + 1483, 1397, 1398, 1399, 1400, 1401, 1070, 1402, 1403, 1404, + 1081, 1080, 1015, 704, 249, 250, 251, 911, 252, 253, + 254, 775, 1087, 1090, 776, 1231, 1232, 777, 1234, 467, + 1235, 6, 1236, 1238, 1242, 869, 870, 1250, 1259, 625, + 1260, 1261, 1262, 778, 1272, 625, 625, 625, 625, 625, + 625, 1084, 1478, 1506, 409, 779, 466, 783, 1273, 466, + 1274, 1275, 1276, 726, 1278, 1280, 1277, 1281, 1282, 780, + 637, 636, 473, 468, 1290, 1473, 1283, 1291, 1292, 354, + 354, 1293, 1294, 1295, 1519, 1313, 931, 1249, 1320, 1316, + 790, 1330, 1321, 214, 215, 216, 1325, 1526, 467, 1392, + 799, 800, 801, 802, 803, 1337, 214, 215, 216, 821, + 1323, 753, 477, 478, 479, 70, 753, 71, 72, 73, + 725, 181, 725, 725, 725, 725, 725, 1324, 183, 1353, + 182, 1326, 466, 1336, 836, 837, 838, 839, 1338, 842, + 1504, 1339, 637, 1352, 1355, 80, 753, 753, 1356, 753, + 753, 753, 753, 1357, 1358, 588, 1370, 280, 1359, 217, + 218, 263, 468, 1360, 409, 409, 1366, 1369, 468, 468, + 1371, 1372, 217, 218, 1375, 1406, 1409, 1412, 217, 218, + 82, 83, 1415, 1414, 1433, 892, 1416, 467, 354, 1420, + 466, 1421, 1434, 467, 467, 219, 220, 88, 221, 1435, + 1436, 1437, 90, 222, 1438, 223, 1439, 930, 219, 220, + 1444, 221, 1476, 1448, 482, 220, 222, 221, 223, 1493, + 1474, 1488, 222, 1489, 223, 1399, 1400, 1401, 1492, 1402, + 1403, 1404, 1084, 224, 1494, 323, 1495, 225, 1499, 1497, + 625, 1498, 226, 1505, 1509, 1508, 588, 1510, 1507, 588, + 584, 287, 468, 1511, 1512, 226, 1513, 1514, 1528, 466, + 1515, 283, 284, 285, 718, 1516, 1518, 1529, 719, 1520, + 1005, 636, 1521, 1331, 494, 826, 1227, 467, 1405, 1012, + 507, 636, 1078, 1329, 1296, 1018, 880, 1040, 509, 1354, + 1322, 585, 0, 0, 0, 0, 0, 283, 284, 285, + 616, 753, 1036, 0, 617, 0, 0, 725, 0, 0, + 0, 720, 0, 1041, 1042, 1043, 1044, 1045, 1046, 1047, + 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, + 1058, 1059, 1060, 1061, 0, 1064, 753, 1333, 283, 284, + 285, 742, 0, 0, 0, 743, 0, 618, 466, 0, + 0, 0, 0, 0, 466, 466, 0, 0, 0, 0, + 0, 917, 1073, 286, 0, 0, 0, 0, 0, 799, + 800, 801, 802, 803, 0, 0, 0, 0, 636, 0, + 0, 0, 0, 70, 0, 71, 72, 73, 744, 0, + 0, 721, 229, 0, 930, 262, 0, 0, 680, 286, + 0, 0, 0, 0, 0, 722, 782, 280, 0, 1382, + 723, 0, 0, 80, 0, 267, 0, 0, 468, 0, + 468, 0, 211, 467, 0, 0, 0, 619, 0, 263, + 0, 6, 0, 0, 0, 294, 0, 0, 466, 745, + 286, 620, 0, 467, 0, 467, 621, 0, 82, 83, + 636, 622, 1241, 316, 0, 1429, 1430, 0, 1431, 0, + 1432, 0, 0, 330, 0, 88, 0, 0, 746, 0, + 90, 0, 0, 0, 0, 0, 0, 468, 0, 0, + 588, 0, 747, 0, 0, 0, 931, 748, 0, 0, + 0, 0, 749, 174, 0, 0, 588, 588, 588, 0, + 0, 0, 467, 1470, 1285, 0, 0, 0, 384, 356, + 0, 387, 0, 0, 361, 0, 363, 1312, 365, 0, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 0, 0, 283, 284, 285, + 885, 0, 627, 0, 886, 389, 0, 0, 0, 394, + 395, 396, 0, 0, 0, 403, 404, 236, 237, 238, + 239, 0, 0, 1012, 0, 0, 468, 0, 588, 0, + 240, 0, 0, 588, 0, 0, 782, 782, 782, 588, + 588, 0, 0, 0, 466, 0, 0, 887, 0, 0, + 0, 467, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 440, 0, 0, 466, 0, 466, 0, 0, 214, + 215, 216, 1522, 1523, 1524, 0, 1525, 0, 0, 484, + 0, 486, 234, 235, 236, 237, 238, 239, 0, 438, + 0, 468, 0, 588, 0, 0, 0, 240, 496, 286, + 497, 498, 499, 500, 0, 753, 0, 0, 1384, 1385, + 1386, 1387, 1388, 1389, 1390, 1391, 467, 0, 0, 510, + 0, 0, 0, 466, 588, 1392, 0, 888, 518, 0, + 0, 521, 0, 0, 0, 217, 218, 588, 782, 533, + 0, 889, 0, 0, 0, 782, 890, 0, 0, 0, + 0, 891, 245, 246, 247, 248, 249, 250, 251, 1328, + 252, 253, 254, 232, 233, 234, 235, 236, 237, 238, + 239, 219, 1264, 1265, 1266, 0, 753, 0, 569, 222, + 240, 223, 573, 1388, 1389, 1390, 1391, 0, 0, 0, + 0, 0, 1267, 0, 0, 229, 1392, 1268, 0, 1312, + 1312, 1312, 1312, 1312, 0, 1312, 567, 0, 0, 0, + 0, 0, 466, 1361, 0, 0, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 0, 252, 253, 254, + 0, 0, 598, 0, 0, 0, 0, 0, 0, 0, + 0, 1501, 0, 1393, 1394, 1395, 1396, 0, 294, 1397, + 1398, 1399, 1400, 1401, 930, 1402, 1403, 1404, 0, 0, + 638, 0, 0, 0, 0, 1376, 1377, 1378, 1379, 1380, + 294, 1383, 0, 0, 0, 0, 0, 466, 294, 1312, + 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, + 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 0, + 252, 253, 254, 0, 734, 0, 592, 214, 215, 216, + 1397, 1398, 1399, 1400, 1401, 755, 1402, 1403, 1404, 0, + 0, 1471, 0, 710, 214, 215, 216, 0, 0, 0, + 727, 0, 0, 1312, 0, 1450, 1451, 1452, 1453, 1454, + 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, + 1465, 1466, 1467, 1468, 0, 70, 0, 71, 72, 73, + 0, 758, 0, 759, 403, 760, 0, 262, 0, 0, + 0, 0, 0, 217, 218, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 80, 1312, 0, 0, 0, + 217, 218, 0, 0, 0, 0, 0, 0, 0, 1500, + 0, 263, 0, 0, 0, 0, 0, 807, 0, 219, + 220, 0, 221, 0, 0, 0, 0, 222, 0, 223, + 82, 83, 0, 0, 0, 294, 219, 220, 0, 221, + 0, 0, 0, 0, 222, 0, 223, 88, 0, 0, + 0, 0, 90, 315, 0, 0, 0, 0, 0, 0, + 0, 291, 1517, 1096, 1097, 1098, 1099, 1100, 1101, 1102, + 1103, 1104, 1105, 1106, 0, 1107, 1108, 1109, 1110, 1111, + 1112, 1113, 1114, 1115, 1116, 1117, 0, 0, 0, 0, + 0, 884, 840, 1118, 1119, 1120, 1121, 1122, 1123, 1124, + 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, + 1135, 1136, 0, 0, 1137, 1138, 1139, 1140, 1141, 1142, + 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 0, + 1152, 0, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, + 1161, 0, 1162, 1163, 1164, 232, 233, 234, 235, 236, + 237, 238, 239, 1343, 1345, 1347, 0, 0, 0, 0, + 1165, 294, 240, 0, 0, 0, 1166, 1167, 1168, 0, + 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, + 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, + 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, + 1199, 1200, 1201, 0, 0, 0, 1202, 1203, 1204, 1205, + 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, + 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1411, 1223, 1224, + 0, 1422, 0, 1423, 0, 1424, 0, 0, 1425, 1426, + 1427, 0, 0, 0, 0, 0, 0, 0, 1026, 1027, + 1028, 0, 1030, 0, 1033, 1034, 1035, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1079, 0, 0, 0, 0, 0, 0, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 0, 252, 253, 254, 0, 0, 0, 1288, 0, + 0, 0, 0, 0, 0, 214, 215, 216, 0, 734, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, + 1104, 1105, 1106, 0, 1107, 1108, 1109, 1110, 1111, 1112, + 1113, 1114, 1115, 1116, 1117, 0, 0, 0, 0, 0, + 0, 0, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, + 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, + 1136, 217, 218, 1137, 1138, 1139, 1140, 1141, 1142, 1143, + 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 0, 1152, + 1252, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, + 0, 1162, 1163, 1164, 0, 0, 0, 219, 220, 0, + 221, 0, 0, 0, 0, 222, 0, 223, 0, 1165, + 0, 1279, 0, 0, 0, 1166, 1167, 1168, 1267, 1169, + 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, + 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, + 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, + 1200, 1201, 0, 0, 0, 1202, 1203, 1204, 1205, 1206, + 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, + 1217, 1218, 1219, 1220, 1221, 1222, 0, 1223, 1224, 7, + 8, 9, 10, 0, 11, 12, 13, 198, 68, 0, + 0, 1297, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 214, 215, 216, 232, 233, 234, 235, 236, 237, + 238, 239, 0, 0, 0, 0, 15, 69, 0, 0, + 199, 240, 200, 201, 202, 74, 75, 0, 20, 76, + 0, 0, 203, 22, 0, 0, 78, 0, 480, 0, + 481, 23, 24, 204, 0, 0, 0, 26, 0, 0, + 205, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 206, 217, 218, 0, + 0, 0, 0, 0, 44, 0, 45, 0, 46, 0, + 0, 0, 0, 47, 0, 207, 208, 50, 0, 0, + 51, 84, 214, 215, 216, 52, 0, 0, 53, 85, + 86, 87, 209, 219, 220, 89, 221, 210, 0, 0, + 0, 222, 0, 223, 0, 0, 0, 0, 0, 0, + 56, 0, 0, 57, 58, 59, 0, 0, 60, 0, + 61, 62, 0, 0, 63, 0, 0, 1348, 0, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 0, 252, 253, 254, 0, 0, 0, 1503, 217, 218, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 7, 8, 9, 10, 0, 11, 12, 13, + 490, 0, 0, 0, 0, 0, 0, 0, 0, 329, + 0, 0, 0, 0, 219, 220, 0, 221, 0, 0, + 0, 0, 222, 0, 223, 0, 0, 0, 0, 0, + 1381, 0, 0, 0, 0, 0, 0, 0, 0, 15, + 335, 0, 0, 199, 0, 200, 201, 202, 74, 0, + 0, 20, 336, 0, 0, 203, 22, 0, 0, 78, + 0, 0, 0, 0, 23, 24, 204, 0, 0, 0, + 26, 0, 0, 205, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 206, + 1440, 1441, 1442, 1443, 0, 1446, 1447, 44, 0, 45, + 0, 46, 0, 0, 0, 0, 47, 0, 207, 208, + 50, 0, 0, 51, 84, 0, 0, 0, 52, 0, + 0, 53, 338, 339, 87, 209, 0, 0, 89, 0, + 210, 0, 0, 0, 1496, 0, 0, 0, 0, 0, + 0, 0, 0, 56, 0, 0, 57, 58, 59, 0, + 0, 60, 0, 61, 62, 0, 0, 63, 7, 8, + 9, 10, 0, 11, 12, 13, 14, 0, 214, 215, + 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, + 233, 234, 235, 236, 237, 238, 239, 0, 0, 0, + 0, 0, 0, 0, 0, 15, 240, 0, 0, 16, + 0, 17, 18, 19, 0, 0, 0, 20, 0, 738, + 739, 21, 22, 0, 0, 0, 0, 0, 0, 0, + 23, 24, 25, 0, 217, 218, 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, + 219, 220, 47, 221, 48, 49, 50, 0, 222, 51, + 223, 0, 0, 0, 52, 0, 0, 53, 0, 0, + 0, 54, 7, 8, 9, 10, 55, 11, 12, 13, + 14, 740, 0, 0, 495, 0, 0, 0, 0, 56, + 0, 0, 57, 58, 59, 0, 0, 60, 0, 61, + 62, 0, 590, 63, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 0, 252, 253, 254, 15, + 0, 0, 0, 16, 0, 17, 18, 19, 0, 0, + 0, 20, 0, 0, 0, 21, 22, 477, 478, 479, + 0, 0, 0, 0, 23, 24, 25, 0, 0, 0, + 26, 0, 0, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 0, 0, 0, 0, 480, 0, 481, 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, 217, 218, 54, 7, 8, 9, 10, + 55, 11, 12, 13, 14, 0, 214, 215, 216, 0, + 0, 883, 0, 56, 0, 0, 57, 58, 59, 0, + 0, 60, 0, 61, 62, 431, 0, 63, 0, 482, + 220, 0, 221, 0, 0, 0, 0, 222, 0, 223, + 0, 0, 0, 15, 436, 0, 0, 16, 0, 17, + 18, 19, 0, 0, 0, 20, 0, 0, 0, 21, + 22, 0, 0, 483, 0, 0, 0, 0, 23, 24, + 25, 0, 217, 218, 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, 219, 220, + 47, 221, 48, 49, 50, 0, 222, 51, 223, 0, + 0, 0, 52, 0, 0, 53, 0, 0, 0, 54, + 7, 8, 9, 10, 55, 11, 12, 13, 14, 0, + 214, 215, 216, 0, 0, 0, 0, 56, 0, 0, + 57, 58, 59, 0, 0, 60, 0, 61, 62, 0, + 0, 63, 0, 0, 0, 232, 233, 234, 235, 236, + 237, 238, 239, 0, 0, 0, 0, 15, 715, 0, + 0, 16, 240, 17, 18, 19, 0, 0, 0, 20, + 0, 0, 0, 21, 22, 0, 0, 0, 0, 0, + 0, 0, 23, 24, 25, 0, 217, 218, 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, 219, 220, 47, 221, 48, 49, 50, 0, + 222, 51, 223, 0, 0, 0, 52, 0, 0, 53, + 0, 0, 0, 54, 7, 8, 9, 10, 55, 11, + 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, + 0, 56, 0, 0, 57, 58, 59, 0, 0, 60, + 0, 61, 62, 0, 0, 63, 0, 932, 0, 0, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 15, 252, 253, 254, 16, 0, 17, 18, 19, + 0, 0, 0, 20, 0, 0, 0, 21, 22, 0, + 0, 0, 0, 0, 0, 0, 23, 24, 25, 0, + 0, 0, 26, 0, 0, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 0, 0, 0, 0, 0, 0, 0, 44, + 0, 45, 0, 46, 0, 0, 0, 0, 47, 0, + 48, 49, 50, 0, 0, 51, 0, 0, 0, 0, + 52, 0, 0, 53, 0, 0, 0, 54, 7, 8, + 9, 10, 55, 11, 12, 13, 14, 927, 0, 0, + 0, 0, 0, 0, 0, 56, 0, 0, 57, 58, + 59, 0, 0, 60, 0, 61, 62, 0, 0, 63, + 0, 0, 0, 232, 233, 234, 235, 236, 237, 238, + 239, 0, 0, 0, 0, 15, 0, 0, 0, 16, + 240, 17, 18, 19, 0, 0, 0, 20, 0, 0, + 0, 21, 22, 0, 0, 0, 0, 0, 0, 0, + 23, 24, 25, 0, 0, 0, 26, 0, 0, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 0, 0, 0, 0, + 0, 0, 0, 44, 0, 45, 0, 46, 0, 0, + 0, 0, 47, 0, 48, 49, 50, 0, 0, 51, + 0, 0, 0, 0, 52, 0, 0, 53, 0, 0, + 0, 54, 7, 8, 9, 10, 55, 11, 12, 13, + 14, 0, 0, 0, 0, 0, 0, 0, 0, 56, + 0, 0, 57, 58, 59, 0, 0, 60, 0, 61, + 62, 1062, 0, 63, 1263, 0, 0, 0, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 15, + 252, 253, 254, 16, 0, 17, 18, 19, 0, 0, + 0, 20, 0, 0, 0, 21, 22, 0, 0, 0, + 0, 0, 0, 0, 23, 24, 25, 0, 0, 0, + 26, 0, 0, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 0, 0, 0, 0, 0, 0, 0, 44, 0, 45, + 0, 46, 0, 0, 0, 0, 47, 0, 48, 49, + 50, 0, 0, 51, 0, 0, 0, 0, 52, 0, + 0, 53, 0, 0, 0, 54, 7, 8, 9, 10, + 55, 11, 12, 13, 14, 1327, 0, 0, 0, 0, + 0, 0, 0, 56, 0, 0, 57, 58, 59, 0, + 0, 60, 0, 61, 62, 0, 0, 63, 0, 0, + 0, 232, 233, 234, 235, 236, 237, 238, 239, 0, + 0, 0, 0, 15, 0, 0, 0, 16, 240, 17, + 18, 19, 0, 0, 0, 20, 0, 0, 0, 21, + 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, + 25, 0, 0, 0, 26, 0, 0, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 0, 0, 0, 0, 0, 0, + 0, 44, 0, 45, 0, 46, 0, 0, 0, 0, + 47, 0, 48, 49, 50, 0, 0, 51, 0, 0, + 0, 0, 52, 0, 0, 53, 0, 0, 0, 54, + 7, 8, 9, 10, 55, 11, 12, 13, 14, 0, + 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, + 57, 58, 59, 0, 0, 60, 0, 61, 62, 1469, + 0, 63, 0, 0, 1286, 0, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 15, 252, 253, + 254, 16, 0, 17, 18, 19, 0, 0, 0, 20, + 0, 0, 0, 21, 22, 0, 0, 0, 0, 0, + 0, 0, 23, 24, 25, 0, 0, 0, 26, 0, + 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 0, 0, + 0, 0, 0, 0, 0, 44, 0, 45, 0, 46, + 0, 0, 0, 0, 47, 0, 48, 49, 50, 0, + 0, 51, 0, 0, 0, 0, 52, 0, 0, 53, + 0, 0, 0, 54, 648, 649, 650, 10, 55, 11, + 651, 652, 67, 68, 0, 0, 653, 0, 0, 0, + 0, 56, 0, 0, 57, 58, 59, 0, 0, 60, + 0, 61, 62, 0, 0, 63, 232, 233, 234, 235, + 236, 237, 238, 239, 0, 0, 0, 0, 458, 0, + 0, 654, 69, 240, 0, 70, 0, 71, 72, 73, + 74, 459, 0, 655, 76, 0, 0, 77, 656, 0, + 0, 78, 0, 0, 0, 0, 657, 658, 79, 0, + 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, + 0, 232, 233, 234, 235, 236, 237, 238, 239, 0, + 0, 81, 0, 0, 0, 0, 0, 0, 240, 659, + 0, 660, 0, 661, 0, 0, 0, 460, 662, 0, + 82, 83, 663, 0, 0, 664, 84, 0, 0, 0, + 665, 0, 0, 666, 85, 86, 87, 88, 0, 0, + 89, 0, 90, 0, 648, 649, 650, 10, 0, 11, + 651, 652, 67, 68, 0, 667, 1039, 0, 668, 669, + 0, 0, 0, 670, 0, 671, 0, 691, 0, 672, + 0, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 0, 252, 253, 254, 692, 0, 458, 0, + 0, 654, 69, 0, 0, 70, 0, 71, 72, 73, + 74, 459, 0, 655, 76, 0, 0, 77, 656, 0, + 0, 78, 0, 0, 0, 0, 657, 658, 79, 0, + 0, 0, 0, 0, 0, 80, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 0, 252, 253, + 254, 81, 0, 0, 0, 0, 0, 0, 0, 659, + 0, 660, 0, 661, 0, 0, 0, 460, 662, 0, + 82, 83, 663, 0, 0, 664, 84, 0, 0, 0, + 665, 0, 0, 666, 85, 86, 87, 88, 0, 0, + 89, 0, 90, 7, 8, 9, 10, 0, 11, 12, + 13, 0, 0, 0, 0, 667, 0, 0, 668, 669, + 0, 0, 0, 670, 0, 671, 0, 0, 0, 672, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1386, + 1387, 1388, 1389, 1390, 1391, 0, 0, 0, 0, 0, + 1298, 0, 0, 0, 1392, 0, 0, 0, 0, 0, + 0, 0, 1299, 0, 0, 0, 0, 1300, 233, 234, + 235, 236, 237, 238, 239, 23, 24, 0, 0, 0, + 0, 26, 0, 0, 240, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 0, 232, 233, 234, 235, 236, 237, 238, 239, 0, + 45, 0, 46, 0, 0, 0, 0, 1301, 240, 0, + 0, 1302, 0, 0, 1303, 0, 0, 0, 0, 52, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1304, 0, 0, 1305, 1306, 1307, + 936, 0, 1308, 0, 1309, 62, 0, 0, 1310, 0, + 937, 938, 939, 940, 941, 942, 943, 944, 1397, 1398, + 1399, 1400, 1401, 0, 1402, 1403, 1404, 945, 0, 946, + 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, + 957, 0, 0, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 0, 252, 253, 254, 0, 0, 958, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 333, 334, 0, 0, 0, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 0, 252, 253, + 254, 578, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, + 0, 0, 959, 0, 0, 0, 0, 0, 0, 1392, + 0, 0, 335, 0, 0, 70, 0, 71, 72, 73, + 74, 0, 0, 0, 336, 0, 0, 77, 0, 0, + 0, 78, 0, 0, 0, 0, 0, 0, 79, 0, + 0, 960, 0, 0, 961, 80, 962, 963, 964, 965, + 966, 967, 968, 969, 970, 971, 972, 0, 973, 974, + 0, 81, 975, 0, 333, 334, 0, 0, 0, 0, + 0, 0, 337, 0, 0, 0, 0, 0, 0, 0, + 82, 83, 0, 0, 0, 0, 84, 0, 0, 0, + 0, 0, 0, 0, 338, 339, 87, 88, 0, 0, + 89, 0, 90, 0, 0, 335, 0, 340, 70, 0, + 71, 72, 73, 74, 0, 0, 0, 336, 0, 0, + 77, 0, 0, 341, 78, 0, 769, 1393, 1394, 1395, + 1396, 79, 0, 1397, 1398, 1399, 1400, 1401, 80, 1402, + 1403, 1404, 770, 0, 0, 0, 0, 0, 0, 0, + 505, 506, 0, 0, 81, 0, 771, 0, 0, 0, + 0, 0, 0, 0, 0, 337, 0, 0, 0, 772, + 773, 0, 0, 82, 83, 0, 0, 0, 0, 84, + 0, 0, 0, 0, 0, 774, 0, 338, 339, 87, + 88, 335, 0, 89, 70, 90, 71, 72, 73, 74, + 0, 0, 0, 336, 0, 0, 77, 0, 0, 0, + 78, 0, 0, 0, 0, 775, 341, 79, 776, 0, + 0, 777, 0, 0, 80, 232, 233, 234, 235, 236, + 237, 238, 239, 0, 0, 0, 0, 778, 0, 0, + 81, 0, 240, 0, 0, 0, 0, 0, 0, 779, + 0, 337, 0, 0, 0, 0, 0, 0, 0, 82, + 83, 0, 0, 780, 0, 84, 0, 0, 0, 0, + 0, 0, 0, 338, 339, 87, 88, 0, 0, 89, + 0, 90, 232, 233, 234, 235, 236, 237, 238, 239, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, + 0, 0, 341, 232, 233, 234, 235, 236, 237, 238, + 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 240, 232, 233, 234, 235, 236, 237, 238, 239, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 240, 232, + 233, 234, 235, 236, 237, 238, 239, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 0, 252, 253, 254, 594, 232, 233, 234, 235, + 236, 237, 238, 239, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 240, 846, 847, 848, 849, 850, 851, + 852, 853, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 854, 0, 0, 0, 0, 0, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 0, 252, + 253, 254, 682, 0, 0, 0, 0, 0, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 0, + 252, 253, 254, 761, 0, 0, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 0, 252, 253, + 254, 902, 0, 0, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 0, 252, 253, 254, 1020, + 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 0, 252, 253, 254, 1284, 0, 0, 855, + 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, + 0, 866, 867, 868, 105, 0, 106, 0, 0, 107, + 108, 0, 0, 0, 0, 0, 0, 109, 110, 0, + 0, 0, 0, 0, 0, 0, 111, 0, 112, 113, + 114, 115, 0, 0, 0, 116, 0, 0, 0, 0, + 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, + 119, 120, 121, 122, 123, 0, 0, 0, 0, 0, + 124, 125, 126, 127, 0, 0, 0, 0, 0, 128, + 129, 67, 68, 130, 131, 456, 0, 457, 132, 0, + 0, 0, 0, 0, 133, 134, 0, 135, 1385, 1386, + 1387, 1388, 1389, 1390, 1391, 136, 0, 0, 0, 0, + 0, 0, 0, 0, 1392, 0, 0, 458, 0, 0, + 0, 69, 0, 0, 70, 0, 71, 72, 73, 74, + 459, 0, 0, 76, 0, 0, 77, 0, 0, 0, + 78, 234, 235, 236, 237, 238, 239, 79, 0, 0, + 0, 0, 0, 0, 80, 0, 240, 234, 235, 236, + 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, + 81, 0, 240, 1386, 1387, 1388, 1389, 1390, 1391, 0, + 0, 0, 0, 0, 0, 0, 460, 0, 1392, 82, + 83, 0, 0, 0, 0, 84, 0, 234, 235, 236, + 237, 238, 239, 85, 86, 87, 88, 0, 0, 89, + 0, 90, 240, 1386, 1387, 1388, 1389, 1390, 1391, 0, + 0, 0, 0, 0, 461, 0, 0, 0, 1392, 462, + 0, 0, 0, 1394, 1395, 1396, 0, 0, 1397, 1398, + 1399, 1400, 1401, 0, 1402, 1403, 1404, 1386, 1387, 1388, + 1389, 1390, 1391, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1392, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 0, 252, 253, 254, 0, + 0, 0, 0, 244, 245, 246, 247, 248, 249, 250, + 251, 0, 252, 253, 254, 0, 0, 1394, 1395, 1396, + 0, 0, 1397, 1398, 1399, 1400, 1401, 0, 1402, 1403, + 1404, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 302, 0, 0, 0, 245, 246, 247, 248, 249, 250, + 251, 0, 252, 253, 254, 0, 0, 0, 1395, 1396, + 0, 0, 1397, 1398, 1399, 1400, 1401, 302, 1402, 1403, + 1404, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 105, 0, 106, 0, 0, 0, 108, 0, 0, + 0, 0, 0, 1396, 109, 110, 1397, 1398, 1399, 1400, + 1401, 0, 1402, 1403, 1404, 112, 113, 114, 105, 0, + 106, 0, 0, 0, 108, 0, 0, 297, 0, 0, + 0, 109, 110, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 112, 296, 114, 0, 0, 0, 0, 70, + 122, 71, 72, 73, 297, 0, 0, 0, 0, 0, + 127, 0, 0, 0, 0, 0, 128, 0, 0, 0, + 130, 131, 393, 67, 68, 0, 0, 122, 0, 80, + 0, 0, 134, 0, 135, 0, 0, 127, 0, 0, + 0, 0, 0, 128, 0, 263, 0, 0, 131, 0, + 0, 1032, 67, 68, 0, 0, 0, 0, 0, 134, + 0, 135, 0, 69, 82, 83, 70, 0, 71, 72, + 73, 74, 75, 0, 0, 76, 0, 0, 77, 0, + 0, 88, 78, 0, 0, 0, 90, 0, 0, 79, + 0, 0, 69, 0, 0, 70, 80, 71, 72, 73, + 74, 75, 0, 0, 76, 0, 0, 77, 0, 185, + 0, 78, 81, 0, 0, 0, 0, 0, 79, 70, + 0, 71, 72, 73, 0, 80, 0, 0, 0, 0, + 0, 82, 83, 0, 0, 0, 0, 84, 0, 0, + 0, 81, 1445, 67, 68, 85, 86, 87, 88, 80, + 0, 89, 0, 90, 0, 0, 0, 0, 0, 0, + 82, 83, 0, 0, 0, 263, 84, 0, 0, 0, + 0, 693, 694, 695, 85, 86, 87, 88, 0, 0, + 89, 0, 90, 69, 82, 83, 70, 0, 71, 72, + 73, 74, 75, 0, 0, 76, 0, 0, 77, 0, + 0, 88, 78, 0, 0, 0, 90, 0, 0, 79, + 0, 0, 0, 0, 0, 70, 80, 71, 72, 73, + 696, 697, 0, 0, 0, 0, 0, 77, 0, 186, + 0, 0, 81, 0, 0, 0, 0, 0, 79, 693, + 694, 695, 0, 0, 0, 80, 0, 0, 0, 0, + 0, 82, 83, 0, 0, 0, 0, 84, 0, 0, + 0, 81, 0, 0, 0, 85, 86, 87, 88, 0, + 0, 89, 0, 90, 0, 0, 0, 0, 67, 68, + 82, 83, 456, 70, 0, 71, 72, 73, 0, 0, + 0, 0, 0, 0, 698, 77, 0, 88, 0, 0, + 89, 0, 90, 0, 0, 0, 79, 67, 68, 0, + 0, 795, 0, 80, 458, 0, 0, 0, 69, 0, + 0, 70, 0, 71, 72, 73, 74, 459, 0, 81, + 76, 0, 0, 77, 0, 0, 0, 78, 0, 0, + 0, 0, 0, 458, 79, 0, 0, 69, 82, 83, + 70, 80, 71, 72, 73, 74, 459, 0, 0, 76, + 0, 0, 77, 0, 0, 88, 78, 81, 89, 0, + 90, 0, 0, 79, 70, 0, 71, 72, 73, 0, + 80, 0, 0, 460, 0, 0, 82, 83, 0, 0, + 0, 0, 84, 0, 0, 0, 81, 0, 67, 68, + 85, 86, 87, 88, 80, 0, 89, 0, 90, 0, + 0, 0, 460, 0, 0, 82, 83, 0, 0, 0, + 263, 84, 0, 0, 0, 0, 0, 67, 68, 85, + 86, 87, 88, 0, 458, 89, 0, 90, 69, 82, + 83, 70, 0, 71, 72, 73, 74, 459, 0, 0, + 76, 0, 0, 77, 0, 0, 88, 78, 0, 0, + 0, 90, 0, 0, 79, 0, 0, 69, 0, 0, + 70, 80, 71, 72, 73, 74, 75, 0, 0, 76, + 0, 0, 77, 0, 191, 0, 78, 81, 0, 0, + 0, 0, 0, 79, 0, 0, 214, 215, 216, 0, + 80, 0, 0, 460, 0, 0, 82, 83, 0, 0, + 0, 0, 84, 67, 68, 0, 81, 0, 0, 0, + 85, 86, 87, 88, 0, 0, 89, 0, 90, 0, + 0, 0, 0, 0, 0, 82, 83, 67, 68, 0, + 0, 84, 0, 0, 0, 0, 0, 0, 0, 85, + 86, 87, 88, 69, 0, 89, 70, 90, 71, 72, + 73, 74, 217, 218, 0, 76, 0, 0, 77, 0, + 0, 0, 78, 0, 0, 0, 0, 69, 0, 79, + 70, 0, 71, 72, 73, 74, 80, 0, 0, 76, + 0, 0, 77, 0, 0, 0, 78, 0, 219, 220, + 0, 221, 81, 79, 0, 0, 222, 0, 223, 0, + 80, 0, 0, 0, 0, 0, 0, 0, 607, 1267, + 0, 82, 83, 67, 1342, 0, 81, 84, 0, 0, + 0, 0, 0, 0, 0, 85, 86, 87, 88, 0, + 0, 89, 0, 90, 0, 82, 83, 0, 0, 0, + 0, 84, 175, 0, 0, 0, 0, 0, 0, 85, + 86, 87, 88, 69, 0, 89, 70, 90, 71, 72, + 73, 74, 516, 0, 0, 76, 0, 0, 77, 0, + 0, 0, 78, 0, 0, 0, 0, 0, 0, 79, + 0, 0, 176, 0, 0, 70, 80, 71, 72, 73, + 74, 997, 0, 0, 177, 0, 0, 77, 0, 0, + 0, 78, 81, 0, 0, 0, 0, 0, 79, 0, + 0, 214, 215, 216, 0, 80, 0, 0, 0, 0, + 0, 82, 83, 0, 0, 0, 0, 84, 175, 0, + 0, 81, 0, 0, 0, 85, 86, 87, 88, 0, + 0, 89, 0, 90, 0, 0, 0, 0, 0, 0, + 82, 83, 67, 0, 0, 0, 84, 0, 0, 0, + 214, 215, 216, 0, 178, 179, 87, 88, 176, 0, + 89, 70, 90, 71, 72, 73, 74, 217, 218, 0, + 177, 0, 0, 77, 0, 0, 0, 78, 0, 0, + 0, 0, 69, 0, 79, 70, 0, 71, 72, 73, + 74, 80, 0, 0, 76, 0, 0, 77, 0, 0, + 0, 78, 0, 219, 220, 0, 221, 81, 79, 0, + 0, 222, 0, 223, 0, 80, 217, 218, 0, 0, + 0, 0, 0, 0, 1267, 0, 82, 83, 0, 1344, + 0, 81, 84, 0, 0, 0, 0, 0, 0, 0, + 178, 179, 87, 88, 0, 0, 89, 0, 90, 0, + 82, 83, 219, 220, 0, 221, 84, 0, 0, 0, + 222, 0, 223, 0, 85, 86, 87, 88, 0, 105, + 89, 106, 90, 1267, 107, 108, 0, 0, 1346, 0, + 0, 0, 109, 110, 0, 0, 0, 0, 0, 0, + 0, 111, 0, 112, 113, 114, 115, 0, 0, 0, + 116, 0, 0, 0, 0, 117, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 118, 119, 120, 121, 122, 123, + 0, 0, 0, 0, 0, 124, 125, 126, 127, 0, + 0, 105, 0, 106, 128, 129, 107, 108, 130, 131, + 0, 0, 0, 132, 109, 110, 0, 0, 0, 133, + 134, 0, 135, 111, 0, 112, 113, 114, 115, 0, + 136, 0, 116, 0, 0, 0, 0, 117, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 689, + 0, 0, 0, 0, 0, 0, 118, 119, 120, 121, + 122, 123, 0, 0, 0, 0, 0, 124, 125, 126, + 127, 0, 0, 105, 0, 106, 128, 129, 107, 108, + 130, 131, 0, 0, 0, 132, 109, 110, 0, 0, + 0, 133, 134, 0, 135, 111, 0, 112, 113, 114, + 115, 0, 136, 0, 116, 0, 0, 0, 0, 117, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 871, 0, 0, 0, 0, 0, 0, 118, 119, + 120, 121, 122, 123, 0, 0, 0, 0, 0, 124, + 125, 126, 127, 0, 0, 105, 0, 106, 128, 129, + 107, 108, 130, 131, 0, 0, 0, 132, 109, 110, + 0, 0, 0, 133, 134, 0, 135, 111, 0, 112, + 113, 114, 115, 0, 136, 0, 116, 0, 0, 0, + 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 913, 0, 0, 0, 0, 0, 0, + 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, + 0, 124, 125, 126, 127, 0, 0, 105, 0, 106, + 128, 129, 107, 108, 130, 131, 0, 0, 0, 132, + 109, 110, 0, 0, 0, 133, 134, 0, 135, 111, + 0, 112, 113, 114, 115, 0, 136, 0, 116, 0, + 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 1021, 0, 0, 0, 0, + 0, 0, 118, 119, 120, 121, 122, 123, 0, 0, + 0, 0, 0, 124, 125, 126, 127, 0, 0, 105, + 0, 106, 128, 129, 107, 108, 130, 131, 0, 0, + 0, 132, 109, 110, 0, 0, 0, 133, 134, 0, + 135, 111, 0, 112, 113, 114, 115, 0, 136, 0, + 116, 0, 0, 0, 0, 117, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1071, 0, 0, + 0, 0, 0, 0, 118, 119, 120, 121, 122, 123, + 0, 0, 0, 0, 0, 124, 125, 126, 127, 0, + 0, 105, 0, 106, 128, 129, 107, 108, 130, 131, + 0, 0, 0, 132, 109, 110, 0, 0, 0, 133, + 134, 0, 135, 111, 0, 112, 113, 114, 115, 105, + 136, 106, 116, 0, 0, 108, 0, 117, 0, 0, + 0, 0, 109, 110, 0, 0, 0, 0, 0, 1289, + 0, 0, 0, 112, 296, 114, 118, 119, 120, 121, + 122, 123, 0, 0, 0, 297, 0, 124, 125, 126, + 127, 0, 0, 0, 0, 0, 128, 129, 0, 0, + 130, 131, 0, 0, 0, 132, 0, 0, 122, 0, + 0, 133, 134, 0, 135, 0, 0, 0, 127, 0, + 0, 0, 136, 0, 128, 0, 0, 0, 0, 131, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, + 134, 1428, 135, 0, 0, 105, 0, 106, 0, 0, + 107, 108, 0, 0, 0, 0, 0, -147, 109, 110, + 0, 0, 0, 0, 0, 0, 0, 111, 0, 112, + 113, 114, 115, 105, 0, 106, 116, 0, 0, 108, + 0, 117, 0, 0, 0, 0, 109, 110, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 112, 113, 114, + 118, 119, 120, 121, 122, 123, 0, 0, 0, 297, + 0, 124, 125, 126, 127, 0, 0, 0, 0, 0, + 128, 129, 0, 0, 130, 131, 0, 0, 0, 132, + 0, 105, 122, 106, 0, 133, 134, 108, 135, 0, + 0, 0, 127, 0, 109, 110, 0, 0, 128, 0, + 0, 0, 130, 131, 0, 112, 296, 114, 0, 105, + 0, 106, 0, 133, 134, 108, 135, 297, 0, 0, + 0, 0, 109, 110, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 112, 296, 114, 0, 0, 0, 0, + 122, 308, 0, 0, 0, 297, 0, 0, 0, 0, + 127, 0, 0, 0, 0, 0, 128, 0, 0, 0, + 0, 131, 0, 0, 0, 0, 0, 0, 122, 0, + 0, 0, 134, 0, 135, 0, 0, 0, 127, 0, + 0, 0, 0, 0, 128, 0, 0, 0, 0, 131, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 134, 0, 135 +}; + +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-922))) + +#define yytable_value_is_error(Yytable_value) \ + YYID (0) + +static const yytype_int16 yycheck[] = +{ + 1, 61, 113, 130, 527, 460, 927, 295, 44, 708, + 507, 751, 315, 489, 659, 44, 15, 44, 458, 476, + 604, 92, 140, 140, 147, 140, 149, 150, 151, 152, + 182, 154, 613, 156, 489, 158, 81, 82, 83, 327, + 480, 713, 13, 88, 33, 15, 585, 6, 488, 8, + 15, 174, 15, 717, 794, 719, 720, 721, 722, 723, + 147, 62, 185, 186, 76, 15, 76, 59, 191, 192, + 76, 743, 744, 147, 746, 747, 748, 749, 147, 15, + 0, 147, 169, 147, 623, 148, 76, 150, 147, 147, + 91, 92, 166, 33, 586, 634, 164, 166, 99, 75, + 166, 147, 166, 147, 140, 147, 155, 166, 166, 147, + 164, 140, 33, 140, 10, 11, 12, 150, 149, 147, + 166, 164, 166, 147, 166, 770, 146, 164, 166, 10, + 11, 12, 165, 125, 146, 146, 146, 149, 166, 149, + 146, 164, 166, 149, 164, 146, 147, 33, 149, 150, + 151, 152, 6, 154, 8, 156, 146, 158, 155, 149, + 615, 206, 207, 208, 209, 146, 164, 166, 157, 158, + 159, 160, 161, 174, 163, 164, 165, 295, 295, 147, + 295, 182, 150, 164, 185, 186, 257, 258, 159, 150, + 191, 192, 495, 253, 164, 76, 77, 147, 350, 164, + 164, 164, 273, 274, 165, 323, 323, 166, 323, 327, + 327, 147, 327, 752, 155, 691, 112, 520, 263, 711, + 804, 150, 714, 163, 164, 165, 898, 228, 149, 147, + 814, 112, 113, 13, 115, 15, 165, 17, 467, 120, + 904, 122, 287, 164, 165, 13, 147, 15, 166, 17, + 147, 790, 791, 149, 164, 752, 257, 258, 164, 295, + 75, 933, 6, 386, 8, 166, 295, 155, 295, 166, + 147, 272, 273, 274, 275, 276, 277, 163, 164, 165, + 60, 282, 22, 23, 164, 166, 13, 323, 15, 166, + 17, 327, 60, 33, 323, 164, 323, 754, 327, 147, + 327, 277, 108, 109, 110, 164, 112, 113, 114, 2, + 149, 117, 22, 23, 315, 147, 122, 147, 166, 147, + 147, 127, 128, 33, 130, 131, 132, 911, 134, 135, + 164, 771, 787, 60, 166, 164, 166, 149, 166, 166, + 643, 98, 147, 147, 146, 164, 148, 149, 150, 350, + 164, 146, 997, 148, 642, 150, 895, 147, 64, 65, + 140, 166, 166, 56, 57, 58, 59, 60, 164, 845, + 63, 146, 140, 148, 154, 150, 166, 165, 166, 159, + 609, 143, 144, 145, 164, 386, 154, 690, 164, 164, + 845, 159, 164, 165, 166, 918, 164, 164, 895, 983, + 629, 630, 631, 632, 633, 406, 1327, 149, 272, 273, + 274, 275, 276, 140, 164, 996, 164, 157, 158, 159, + 160, 161, 914, 163, 164, 165, 146, 154, 148, 164, + 150, 476, 159, 54, 164, 56, 57, 58, 439, 113, + 114, 115, 443, 444, 445, 446, 447, 157, 158, 159, + 160, 161, 164, 163, 164, 165, 457, 164, 165, 166, + 461, 462, 277, 84, 164, 466, 1005, 1006, 469, 146, + 164, 148, 164, 150, 703, 504, 165, 166, 1001, 100, + 164, 165, 166, 459, 460, 165, 166, 166, 489, 164, + 296, 297, 164, 165, 495, 164, 302, 190, 119, 120, + 146, 147, 164, 504, 165, 166, 1087, 1247, 164, 1090, + 164, 1003, 164, 489, 164, 136, 517, 1009, 1010, 520, + 141, 164, 337, 164, 642, 642, 164, 642, 165, 166, + 164, 165, 289, 164, 165, 164, 164, 164, 164, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 789, 254, 164, 150, 159, 165, 259, 165, 149, 872, + 10, 11, 12, 48, 147, 439, 164, 806, 146, 443, + 444, 445, 446, 447, 585, 586, 587, 164, 155, 164, + 164, 148, 349, 457, 147, 167, 597, 461, 462, 147, + 166, 1093, 295, 604, 166, 166, 642, 608, 166, 156, + 586, 671, 613, 642, 1313, 642, 617, 618, 619, 620, + 621, 622, 623, 659, 166, 166, 166, 156, 166, 322, + 659, 607, 659, 634, 166, 166, 76, 77, 166, 615, + 166, 147, 643, 644, 459, 460, 166, 166, 166, 166, + 166, 880, 166, 166, 166, 166, 166, 166, 887, 888, + 889, 890, 891, 156, 166, 166, 166, 166, 697, 156, + 166, 166, 112, 113, 489, 115, 166, 1417, 1418, 1419, + 120, 487, 122, 15, 164, 166, 159, 166, 165, 690, + 383, 165, 149, 164, 166, 146, 756, 757, 167, 166, + 147, 516, 703, 147, 764, 147, 766, 400, 401, 754, + 711, 147, 164, 714, 407, 148, 717, 33, 719, 720, + 721, 722, 723, 164, 149, 165, 164, 164, 33, 48, + 731, 166, 166, 597, 770, 711, 164, 166, 714, 740, + 1321, 770, 164, 770, 159, 159, 169, 146, 48, 76, + 751, 752, 164, 155, 881, 155, 1337, 1338, 1339, 155, + 517, 155, 166, 1239, 10, 148, 164, 1259, 10, 1261, + 881, 586, 17, 10, 10, 532, 469, 156, 535, 1519, + 147, 159, 148, 159, 1239, 166, 1526, 788, 466, 790, + 791, 166, 607, 794, 167, 148, 797, 920, 921, 148, + 615, 148, 47, 804, 167, 148, 166, 867, 159, 166, + 166, 787, 166, 814, 164, 60, 61, 146, 164, 164, + 164, 169, 515, 824, 165, 165, 1318, 165, 1409, 166, + 164, 76, 149, 1414, 164, 147, 529, 147, 166, 1420, + 1421, 157, 158, 159, 160, 161, 147, 163, 164, 165, + 159, 150, 1081, 882, 159, 160, 161, 165, 163, 164, + 165, 106, 166, 166, 109, 167, 147, 112, 10, 845, + 166, 872, 169, 4, 147, 681, 682, 48, 164, 880, + 169, 164, 169, 128, 146, 886, 887, 888, 889, 890, + 891, 892, 1415, 1474, 895, 140, 711, 590, 147, 714, + 166, 156, 156, 904, 156, 166, 1029, 166, 156, 154, + 911, 604, 11, 914, 10, 1407, 166, 148, 10, 920, + 921, 10, 10, 148, 1505, 147, 927, 998, 169, 164, + 608, 169, 166, 10, 11, 12, 166, 1518, 914, 33, + 618, 619, 620, 621, 622, 166, 10, 11, 12, 642, + 167, 708, 10, 11, 12, 54, 713, 56, 57, 58, + 717, 997, 719, 720, 721, 722, 723, 167, 997, 1272, + 997, 167, 787, 167, 667, 668, 669, 670, 166, 672, + 1472, 166, 983, 15, 164, 84, 743, 744, 164, 746, + 747, 748, 749, 166, 164, 996, 155, 998, 166, 76, + 77, 100, 1003, 164, 1005, 1006, 166, 164, 1009, 1010, + 155, 155, 76, 77, 155, 164, 166, 15, 76, 77, + 119, 120, 146, 166, 10, 703, 166, 1003, 1029, 166, + 845, 166, 148, 1009, 1010, 112, 113, 136, 115, 10, + 148, 148, 141, 120, 10, 122, 148, 740, 112, 113, + 164, 115, 167, 166, 112, 113, 120, 115, 122, 156, + 166, 166, 120, 147, 122, 159, 160, 161, 166, 163, + 164, 165, 1073, 150, 156, 881, 156, 154, 156, 166, + 1081, 166, 159, 166, 10, 148, 1087, 10, 167, 1090, + 154, 149, 1093, 148, 164, 159, 164, 164, 148, 914, + 166, 10, 11, 12, 13, 164, 166, 148, 17, 166, + 788, 804, 166, 1242, 307, 645, 919, 1093, 1313, 797, + 327, 814, 882, 1239, 1073, 818, 697, 845, 327, 1273, + 1202, 405, -1, -1, -1, -1, -1, 10, 11, 12, + 13, 898, 835, -1, 17, -1, -1, 904, -1, -1, + -1, 60, -1, 846, 847, 848, 849, 850, 851, 852, + 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, + 863, 864, 865, 866, -1, 868, 933, 1248, 10, 11, + 12, 13, -1, -1, -1, 17, -1, 60, 1003, -1, + -1, -1, -1, -1, 1009, 1010, -1, -1, -1, -1, + -1, 1202, 880, 112, -1, -1, -1, -1, -1, 887, + 888, 889, 890, 891, -1, -1, -1, -1, 911, -1, + -1, -1, -1, 54, -1, 56, 57, 58, 60, -1, + -1, 140, 62, -1, 927, 66, -1, -1, 1239, 112, + -1, -1, -1, -1, -1, 154, 1247, 1248, -1, 1309, + 159, -1, -1, 84, -1, 85, -1, -1, 1259, -1, + 1261, -1, 61, 1239, -1, -1, -1, 140, -1, 100, + -1, 1272, -1, -1, -1, 105, -1, -1, 1093, 111, + 112, 154, -1, 1259, -1, 1261, 159, -1, 119, 120, + 983, 164, 985, 123, -1, 1355, 1356, -1, 1358, -1, + 1360, -1, -1, 133, -1, 136, -1, -1, 140, -1, + 141, -1, -1, -1, -1, -1, -1, 1318, -1, -1, + 1321, -1, 154, -1, -1, -1, 1327, 159, -1, -1, + -1, -1, 164, 164, -1, -1, 1337, 1338, 1339, -1, + -1, -1, 1318, 1403, 1037, -1, -1, -1, 178, 148, + -1, 181, -1, -1, 153, -1, 155, 1082, 157, -1, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, -1, -1, 10, 11, 12, + 13, -1, 15, -1, 17, 184, -1, -1, -1, 188, + 189, 190, -1, -1, -1, 225, 226, 20, 21, 22, + 23, -1, -1, 1081, -1, -1, 1407, -1, 1409, -1, + 33, -1, -1, 1414, -1, -1, 1417, 1418, 1419, 1420, + 1421, -1, -1, -1, 1239, -1, -1, 60, -1, -1, + -1, 1407, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 271, -1, -1, 1259, -1, 1261, -1, -1, 10, + 11, 12, 1512, 1513, 1514, -1, 1516, -1, -1, 289, + -1, 291, 18, 19, 20, 21, 22, 23, -1, 268, + -1, 1472, -1, 1474, -1, -1, -1, 33, 308, 112, + 310, 311, 312, 313, -1, 1242, -1, -1, 16, 17, + 18, 19, 20, 21, 22, 23, 1472, -1, -1, 329, + -1, -1, -1, 1318, 1505, 33, -1, 140, 338, -1, + -1, 341, -1, -1, -1, 76, 77, 1518, 1519, 349, + -1, 154, -1, -1, -1, 1526, 159, -1, -1, -1, + -1, 164, 155, 156, 157, 158, 159, 160, 161, 1232, + 163, 164, 165, 16, 17, 18, 19, 20, 21, 22, + 23, 112, 113, 114, 115, -1, 1313, -1, 388, 120, + 33, 122, 392, 20, 21, 22, 23, -1, -1, -1, + -1, -1, 133, -1, -1, 405, 33, 138, -1, 1304, + 1305, 1306, 1307, 1308, -1, 1310, 385, -1, -1, -1, + -1, -1, 1407, 1286, -1, -1, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, -1, 163, 164, 165, + -1, -1, 442, -1, -1, -1, -1, -1, -1, -1, + -1, 149, -1, 151, 152, 153, 154, -1, 458, 157, + 158, 159, 160, 161, 1327, 163, 164, 165, -1, -1, + 470, -1, -1, -1, -1, 1304, 1305, 1306, 1307, 1308, + 480, 1310, -1, -1, -1, -1, -1, 1472, 488, 1384, + 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, + 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, -1, + 163, 164, 165, -1, 524, -1, 169, 10, 11, 12, + 157, 158, 159, 160, 161, 535, 163, 164, 165, -1, + -1, 1404, -1, 512, 10, 11, 12, -1, -1, -1, + 519, -1, -1, 1448, -1, 1384, 1385, 1386, 1387, 1388, + 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, + 1399, 1400, 1401, 1402, -1, 54, -1, 56, 57, 58, + -1, 550, -1, 552, 584, 554, -1, 66, -1, -1, + -1, -1, -1, 76, 77, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 84, 1501, -1, -1, -1, + 76, 77, -1, -1, -1, -1, -1, -1, -1, 1448, + -1, 100, -1, -1, -1, -1, -1, 627, -1, 112, + 113, -1, 115, -1, -1, -1, -1, 120, -1, 122, + 119, 120, -1, -1, -1, 645, 112, 113, -1, 115, + -1, -1, -1, -1, 120, -1, 122, 136, -1, -1, + -1, -1, 141, 146, -1, -1, -1, -1, -1, -1, + -1, 137, 1501, 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, 701, 671, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, -1, -1, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, -1, + 70, -1, 72, 73, 74, 75, 76, 77, 78, 79, + 80, -1, 82, 83, 84, 16, 17, 18, 19, 20, + 21, 22, 23, 1264, 1265, 1266, -1, -1, -1, -1, + 100, 771, 33, -1, -1, -1, 106, 107, 108, -1, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, -1, -1, -1, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + -1, 1342, -1, 1344, -1, 1346, -1, -1, 1349, 1350, + 1351, -1, -1, -1, -1, -1, -1, -1, 827, 828, + 829, -1, 831, -1, 833, 834, 835, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 883, -1, -1, -1, -1, -1, -1, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, -1, 163, 164, 165, -1, -1, -1, 169, -1, + -1, -1, -1, -1, -1, 10, 11, 12, -1, 919, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, -1, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, + -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 76, 77, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, -1, 70, + 1000, 72, 73, 74, 75, 76, 77, 78, 79, 80, + -1, 82, 83, 84, -1, -1, -1, 112, 113, -1, + 115, -1, -1, -1, -1, 120, -1, 122, -1, 100, + -1, 1031, -1, -1, -1, 106, 107, 108, 133, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, -1, -1, -1, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, -1, 168, 169, 3, + 4, 5, 6, -1, 8, 9, 10, 11, 12, -1, + -1, 1080, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 10, 11, 12, 16, 17, 18, 19, 20, 21, + 22, 23, -1, -1, -1, -1, 50, 51, -1, -1, + 54, 33, 56, 57, 58, 59, 60, -1, 62, 63, + -1, -1, 66, 67, -1, -1, 70, -1, 47, -1, + 49, 75, 76, 77, -1, -1, -1, 81, -1, -1, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 76, 77, -1, + -1, -1, -1, -1, 108, -1, 110, -1, 112, -1, + -1, -1, -1, 117, -1, 119, 120, 121, -1, -1, + 124, 125, 10, 11, 12, 129, -1, -1, 132, 133, + 134, 135, 136, 112, 113, 139, 115, 141, -1, -1, + -1, 120, -1, 122, -1, -1, -1, -1, -1, -1, + 154, -1, -1, 157, 158, 159, -1, -1, 162, -1, + 164, 165, -1, -1, 168, -1, -1, 1267, -1, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + -1, 163, 164, 165, -1, -1, -1, 169, 76, 77, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 3, 4, 5, 6, -1, 8, 9, 10, + 11, -1, -1, -1, -1, -1, -1, -1, -1, 107, + -1, -1, -1, -1, 112, 113, -1, 115, -1, -1, + -1, -1, 120, -1, 122, -1, -1, -1, -1, -1, + 1309, -1, -1, -1, -1, -1, -1, -1, -1, 50, + 51, -1, -1, 54, -1, 56, 57, 58, 59, -1, + -1, 62, 63, -1, -1, 66, 67, -1, -1, 70, + -1, -1, -1, -1, 75, 76, 77, -1, -1, -1, + 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 1369, 1370, 1371, 1372, -1, 1374, 1375, 108, -1, 110, + -1, 112, -1, -1, -1, -1, 117, -1, 119, 120, + 121, -1, -1, 124, 125, -1, -1, -1, 129, -1, + -1, 132, 133, 134, 135, 136, -1, -1, 139, -1, + 141, -1, -1, -1, 1444, -1, -1, -1, -1, -1, + -1, -1, -1, 154, -1, -1, 157, 158, 159, -1, + -1, 162, -1, 164, 165, -1, -1, 168, 3, 4, + 5, 6, -1, 8, 9, 10, 11, -1, 10, 11, + 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 16, + 17, 18, 19, 20, 21, 22, 23, -1, -1, -1, + -1, -1, -1, -1, -1, 50, 33, -1, -1, 54, + -1, 56, 57, 58, -1, -1, -1, 62, -1, 64, + 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, + 75, 76, 77, -1, 76, 77, 81, -1, -1, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, + -1, -1, -1, 108, -1, 110, -1, 112, -1, -1, + 112, 113, 117, 115, 119, 120, 121, -1, 120, 124, + 122, -1, -1, -1, 129, -1, -1, 132, -1, -1, + -1, 136, 3, 4, 5, 6, 141, 8, 9, 10, + 11, 146, -1, -1, 146, -1, -1, -1, -1, 154, + -1, -1, 157, 158, 159, -1, -1, 162, -1, 164, + 165, -1, 149, 168, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, -1, 163, 164, 165, 50, + -1, -1, -1, 54, -1, 56, 57, 58, -1, -1, + -1, 62, -1, -1, -1, 66, 67, 10, 11, 12, + -1, -1, -1, -1, 75, 76, 77, -1, -1, -1, + 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + -1, -1, -1, -1, 47, -1, 49, 108, -1, 110, + -1, 112, -1, -1, -1, -1, 117, -1, 119, 120, + 121, -1, -1, 124, -1, -1, -1, -1, 129, -1, + -1, 132, -1, 76, 77, 136, 3, 4, 5, 6, + 141, 8, 9, 10, 11, -1, 10, 11, 12, -1, + -1, 15, -1, 154, -1, -1, 157, 158, 159, -1, + -1, 162, -1, 164, 165, 166, -1, 168, -1, 112, + 113, -1, 115, -1, -1, -1, -1, 120, -1, 122, + -1, -1, -1, 50, 51, -1, -1, 54, -1, 56, + 57, 58, -1, -1, -1, 62, -1, -1, -1, 66, + 67, -1, -1, 146, -1, -1, -1, -1, 75, 76, + 77, -1, 76, 77, 81, -1, -1, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, + -1, 108, -1, 110, -1, 112, -1, -1, 112, 113, + 117, 115, 119, 120, 121, -1, 120, 124, 122, -1, + -1, -1, 129, -1, -1, 132, -1, -1, -1, 136, + 3, 4, 5, 6, 141, 8, 9, 10, 11, -1, + 10, 11, 12, -1, -1, -1, -1, 154, -1, -1, + 157, 158, 159, -1, -1, 162, -1, 164, 165, -1, + -1, 168, -1, -1, -1, 16, 17, 18, 19, 20, + 21, 22, 23, -1, -1, -1, -1, 50, 51, -1, + -1, 54, 33, 56, 57, 58, -1, -1, -1, 62, + -1, -1, -1, 66, 67, -1, -1, -1, -1, -1, + -1, -1, 75, 76, 77, -1, 76, 77, 81, -1, + -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, + -1, -1, -1, -1, -1, 108, -1, 110, -1, 112, + -1, -1, 112, 113, 117, 115, 119, 120, 121, -1, + 120, 124, 122, -1, -1, -1, 129, -1, -1, 132, + -1, -1, -1, 136, 3, 4, 5, 6, 141, 8, + 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, + -1, 154, -1, -1, 157, 158, 159, -1, -1, 162, + -1, 164, 165, -1, -1, 168, -1, 148, -1, -1, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 50, 163, 164, 165, 54, -1, 56, 57, 58, + -1, -1, -1, 62, -1, -1, -1, 66, 67, -1, + -1, -1, -1, -1, -1, -1, 75, 76, 77, -1, + -1, -1, 81, -1, -1, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, -1, -1, -1, -1, -1, -1, -1, 108, + -1, 110, -1, 112, -1, -1, -1, -1, 117, -1, + 119, 120, 121, -1, -1, 124, -1, -1, -1, -1, + 129, -1, -1, 132, -1, -1, -1, 136, 3, 4, + 5, 6, 141, 8, 9, 10, 11, 146, -1, -1, + -1, -1, -1, -1, -1, 154, -1, -1, 157, 158, + 159, -1, -1, 162, -1, 164, 165, -1, -1, 168, + -1, -1, -1, 16, 17, 18, 19, 20, 21, 22, + 23, -1, -1, -1, -1, 50, -1, -1, -1, 54, + 33, 56, 57, 58, -1, -1, -1, 62, -1, -1, + -1, 66, 67, -1, -1, -1, -1, -1, -1, -1, + 75, 76, 77, -1, -1, -1, 81, -1, -1, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, + -1, -1, -1, 108, -1, 110, -1, 112, -1, -1, + -1, -1, 117, -1, 119, 120, 121, -1, -1, 124, + -1, -1, -1, -1, 129, -1, -1, 132, -1, -1, + -1, 136, 3, 4, 5, 6, 141, 8, 9, 10, + 11, -1, -1, -1, -1, -1, -1, -1, -1, 154, + -1, -1, 157, 158, 159, -1, -1, 162, -1, 164, + 165, 166, -1, 168, 147, -1, -1, -1, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 50, + 163, 164, 165, 54, -1, 56, 57, 58, -1, -1, + -1, 62, -1, -1, -1, 66, 67, -1, -1, -1, + -1, -1, -1, -1, 75, 76, 77, -1, -1, -1, + 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + -1, -1, -1, -1, -1, -1, -1, 108, -1, 110, + -1, 112, -1, -1, -1, -1, 117, -1, 119, 120, + 121, -1, -1, 124, -1, -1, -1, -1, 129, -1, + -1, 132, -1, -1, -1, 136, 3, 4, 5, 6, + 141, 8, 9, 10, 11, 146, -1, -1, -1, -1, + -1, -1, -1, 154, -1, -1, 157, 158, 159, -1, + -1, 162, -1, 164, 165, -1, -1, 168, -1, -1, + -1, 16, 17, 18, 19, 20, 21, 22, 23, -1, + -1, -1, -1, 50, -1, -1, -1, 54, 33, 56, + 57, 58, -1, -1, -1, 62, -1, -1, -1, 66, + 67, -1, -1, -1, -1, -1, -1, -1, 75, 76, + 77, -1, -1, -1, 81, -1, -1, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, + -1, 108, -1, 110, -1, 112, -1, -1, -1, -1, + 117, -1, 119, 120, 121, -1, -1, 124, -1, -1, + -1, -1, 129, -1, -1, 132, -1, -1, -1, 136, + 3, 4, 5, 6, 141, 8, 9, 10, 11, -1, + -1, -1, -1, -1, -1, -1, -1, 154, -1, -1, + 157, 158, 159, -1, -1, 162, -1, 164, 165, 166, + -1, 168, -1, -1, 149, -1, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 50, 163, 164, + 165, 54, -1, 56, 57, 58, -1, -1, -1, 62, + -1, -1, -1, 66, 67, -1, -1, -1, -1, -1, + -1, -1, 75, 76, 77, -1, -1, -1, 81, -1, + -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, + -1, -1, -1, -1, -1, 108, -1, 110, -1, 112, + -1, -1, -1, -1, 117, -1, 119, 120, 121, -1, + -1, 124, -1, -1, -1, -1, 129, -1, -1, 132, + -1, -1, -1, 136, 3, 4, 5, 6, 141, 8, + 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, + -1, 154, -1, -1, 157, 158, 159, -1, -1, 162, + -1, 164, 165, -1, -1, 168, 16, 17, 18, 19, + 20, 21, 22, 23, -1, -1, -1, -1, 47, -1, + -1, 50, 51, 33, -1, 54, -1, 56, 57, 58, + 59, 60, -1, 62, 63, -1, -1, 66, 67, -1, + -1, 70, -1, -1, -1, -1, 75, 76, 77, -1, + -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, + -1, 16, 17, 18, 19, 20, 21, 22, 23, -1, + -1, 100, -1, -1, -1, -1, -1, -1, 33, 108, + -1, 110, -1, 112, -1, -1, -1, 116, 117, -1, + 119, 120, 121, -1, -1, 124, 125, -1, -1, -1, + 129, -1, -1, 132, 133, 134, 135, 136, -1, -1, + 139, -1, 141, -1, 3, 4, 5, 6, -1, 8, + 9, 10, 11, 12, -1, 154, 15, -1, 157, 158, + -1, -1, -1, 162, -1, 164, -1, 147, -1, 168, + -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, -1, 163, 164, 165, 166, -1, 47, -1, + -1, 50, 51, -1, -1, 54, -1, 56, 57, 58, + 59, 60, -1, 62, 63, -1, -1, 66, 67, -1, + -1, 70, -1, -1, -1, -1, 75, 76, 77, -1, + -1, -1, -1, -1, -1, 84, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, -1, 163, 164, + 165, 100, -1, -1, -1, -1, -1, -1, -1, 108, + -1, 110, -1, 112, -1, -1, -1, 116, 117, -1, + 119, 120, 121, -1, -1, 124, 125, -1, -1, -1, + 129, -1, -1, 132, 133, 134, 135, 136, -1, -1, + 139, -1, 141, 3, 4, 5, 6, -1, 8, 9, + 10, -1, -1, -1, -1, 154, -1, -1, 157, 158, + -1, -1, -1, 162, -1, 164, -1, -1, -1, 168, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, + 19, 20, 21, 22, 23, -1, -1, -1, -1, -1, + 50, -1, -1, -1, 33, -1, -1, -1, -1, -1, + -1, -1, 62, -1, -1, -1, -1, 67, 17, 18, + 19, 20, 21, 22, 23, 75, 76, -1, -1, -1, + -1, 81, -1, -1, 33, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + -1, 16, 17, 18, 19, 20, 21, 22, 23, -1, + 110, -1, 112, -1, -1, -1, -1, 117, 33, -1, + -1, 121, -1, -1, 124, -1, -1, -1, -1, 129, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 154, -1, -1, 157, 158, 159, + 6, -1, 162, -1, 164, 165, -1, -1, 168, -1, + 16, 17, 18, 19, 20, 21, 22, 23, 157, 158, + 159, 160, 161, -1, 163, 164, 165, 33, -1, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, -1, -1, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, -1, 163, 164, 165, -1, -1, 65, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 10, 11, -1, -1, -1, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, -1, 163, 164, + 165, 166, 16, 17, 18, 19, 20, 21, 22, 23, + -1, -1, 108, -1, -1, -1, -1, -1, -1, 33, + -1, -1, 51, -1, -1, 54, -1, 56, 57, 58, + 59, -1, -1, -1, 63, -1, -1, 66, -1, -1, + -1, 70, -1, -1, -1, -1, -1, -1, 77, -1, + -1, 147, -1, -1, 150, 84, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, + -1, 100, 168, -1, 10, 11, -1, -1, -1, -1, + -1, -1, 111, -1, -1, -1, -1, -1, -1, -1, + 119, 120, -1, -1, -1, -1, 125, -1, -1, -1, + -1, -1, -1, -1, 133, 134, 135, 136, -1, -1, + 139, -1, 141, -1, -1, 51, -1, 146, 54, -1, + 56, 57, 58, 59, -1, -1, -1, 63, -1, -1, + 66, -1, -1, 162, 70, -1, 17, 151, 152, 153, + 154, 77, -1, 157, 158, 159, 160, 161, 84, 163, + 164, 165, 33, -1, -1, -1, -1, -1, -1, -1, + 10, 11, -1, -1, 100, -1, 47, -1, -1, -1, + -1, -1, -1, -1, -1, 111, -1, -1, -1, 60, + 61, -1, -1, 119, 120, -1, -1, -1, -1, 125, + -1, -1, -1, -1, -1, 76, -1, 133, 134, 135, + 136, 51, -1, 139, 54, 141, 56, 57, 58, 59, + -1, -1, -1, 63, -1, -1, 66, -1, -1, -1, + 70, -1, -1, -1, -1, 106, 162, 77, 109, -1, + -1, 112, -1, -1, 84, 16, 17, 18, 19, 20, + 21, 22, 23, -1, -1, -1, -1, 128, -1, -1, + 100, -1, 33, -1, -1, -1, -1, -1, -1, 140, + -1, 111, -1, -1, -1, -1, -1, -1, -1, 119, + 120, -1, -1, 154, -1, 125, -1, -1, -1, -1, + -1, -1, -1, 133, 134, 135, 136, -1, -1, 139, + -1, 141, 16, 17, 18, 19, 20, 21, 22, 23, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, + -1, -1, 162, 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, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, -1, 163, 164, 165, 166, 16, 17, 18, 19, + 20, 21, 22, 23, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 33, 16, 17, 18, 19, 20, 21, + 22, 23, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 33, -1, -1, -1, -1, -1, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, -1, 163, + 164, 165, 166, -1, -1, -1, -1, -1, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, -1, + 163, 164, 165, 166, -1, -1, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, -1, 163, 164, + 165, 166, -1, -1, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, -1, 163, 164, 165, 166, + -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, -1, 163, 164, 165, 166, -1, -1, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + -1, 163, 164, 165, 47, -1, 49, -1, -1, 52, + 53, -1, -1, -1, -1, -1, -1, 60, 61, -1, + -1, -1, -1, -1, -1, -1, 69, -1, 71, 72, + 73, 74, -1, -1, -1, 78, -1, -1, -1, -1, + 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 102, + 103, 104, 105, 106, 107, -1, -1, -1, -1, -1, + 113, 114, 115, 116, -1, -1, -1, -1, -1, 122, + 123, 11, 12, 126, 127, 15, -1, 17, 131, -1, + -1, -1, -1, -1, 137, 138, -1, 140, 17, 18, + 19, 20, 21, 22, 23, 148, -1, -1, -1, -1, + -1, -1, -1, -1, 33, -1, -1, 47, -1, -1, + -1, 51, -1, -1, 54, -1, 56, 57, 58, 59, + 60, -1, -1, 63, -1, -1, 66, -1, -1, -1, + 70, 18, 19, 20, 21, 22, 23, 77, -1, -1, + -1, -1, -1, -1, 84, -1, 33, 18, 19, 20, + 21, 22, 23, -1, -1, -1, -1, -1, -1, -1, + 100, -1, 33, 18, 19, 20, 21, 22, 23, -1, + -1, -1, -1, -1, -1, -1, 116, -1, 33, 119, + 120, -1, -1, -1, -1, 125, -1, 18, 19, 20, + 21, 22, 23, 133, 134, 135, 136, -1, -1, 139, + -1, 141, 33, 18, 19, 20, 21, 22, 23, -1, + -1, -1, -1, -1, 154, -1, -1, -1, 33, 159, + -1, -1, -1, 152, 153, 154, -1, -1, 157, 158, + 159, 160, 161, -1, 163, 164, 165, 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, 153, 154, 155, 156, + 157, 158, 159, 160, 161, -1, 163, 164, 165, -1, + -1, -1, -1, 154, 155, 156, 157, 158, 159, 160, + 161, -1, 163, 164, 165, -1, -1, 152, 153, 154, + -1, -1, 157, 158, 159, 160, 161, -1, 163, 164, + 165, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 6, -1, -1, -1, 155, 156, 157, 158, 159, 160, + 161, -1, 163, 164, 165, -1, -1, -1, 153, 154, + -1, -1, 157, 158, 159, 160, 161, 6, 163, 164, + 165, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 47, -1, 49, -1, -1, -1, 53, -1, -1, + -1, -1, -1, 154, 60, 61, 157, 158, 159, 160, + 161, -1, 163, 164, 165, 71, 72, 73, 47, -1, + 49, -1, -1, -1, 53, -1, -1, 83, -1, -1, + -1, 60, 61, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 71, 72, 73, -1, -1, -1, -1, 54, + 106, 56, 57, 58, 83, -1, -1, -1, -1, -1, + 116, -1, -1, -1, -1, -1, 122, -1, -1, -1, + 126, 127, 10, 11, 12, -1, -1, 106, -1, 84, + -1, -1, 138, -1, 140, -1, -1, 116, -1, -1, + -1, -1, -1, 122, -1, 100, -1, -1, 127, -1, + -1, 10, 11, 12, -1, -1, -1, -1, -1, 138, + -1, 140, -1, 51, 119, 120, 54, -1, 56, 57, + 58, 59, 60, -1, -1, 63, -1, -1, 66, -1, + -1, 136, 70, -1, -1, -1, 141, -1, -1, 77, + -1, -1, 51, -1, -1, 54, 84, 56, 57, 58, + 59, 60, -1, -1, 63, -1, -1, 66, -1, 164, + -1, 70, 100, -1, -1, -1, -1, -1, 77, 54, + -1, 56, 57, 58, -1, 84, -1, -1, -1, -1, + -1, 119, 120, -1, -1, -1, -1, 125, -1, -1, + -1, 100, 10, 11, 12, 133, 134, 135, 136, 84, + -1, 139, -1, 141, -1, -1, -1, -1, -1, -1, + 119, 120, -1, -1, -1, 100, 125, -1, -1, -1, + -1, 10, 11, 12, 133, 134, 135, 136, -1, -1, + 139, -1, 141, 51, 119, 120, 54, -1, 56, 57, + 58, 59, 60, -1, -1, 63, -1, -1, 66, -1, + -1, 136, 70, -1, -1, -1, 141, -1, -1, 77, + -1, -1, -1, -1, -1, 54, 84, 56, 57, 58, + 59, 60, -1, -1, -1, -1, -1, 66, -1, 164, + -1, -1, 100, -1, -1, -1, -1, -1, 77, 10, + 11, 12, -1, -1, -1, 84, -1, -1, -1, -1, + -1, 119, 120, -1, -1, -1, -1, 125, -1, -1, + -1, 100, -1, -1, -1, 133, 134, 135, 136, -1, + -1, 139, -1, 141, -1, -1, -1, -1, 11, 12, + 119, 120, 15, 54, -1, 56, 57, 58, -1, -1, + -1, -1, -1, -1, 133, 66, -1, 136, -1, -1, + 139, -1, 141, -1, -1, -1, 77, 11, 12, -1, + -1, 15, -1, 84, 47, -1, -1, -1, 51, -1, + -1, 54, -1, 56, 57, 58, 59, 60, -1, 100, + 63, -1, -1, 66, -1, -1, -1, 70, -1, -1, + -1, -1, -1, 47, 77, -1, -1, 51, 119, 120, + 54, 84, 56, 57, 58, 59, 60, -1, -1, 63, + -1, -1, 66, -1, -1, 136, 70, 100, 139, -1, + 141, -1, -1, 77, 54, -1, 56, 57, 58, -1, + 84, -1, -1, 116, -1, -1, 119, 120, -1, -1, + -1, -1, 125, -1, -1, -1, 100, -1, 11, 12, + 133, 134, 135, 136, 84, -1, 139, -1, 141, -1, + -1, -1, 116, -1, -1, 119, 120, -1, -1, -1, + 100, 125, -1, -1, -1, -1, -1, 11, 12, 133, + 134, 135, 136, -1, 47, 139, -1, 141, 51, 119, + 120, 54, -1, 56, 57, 58, 59, 60, -1, -1, + 63, -1, -1, 66, -1, -1, 136, 70, -1, -1, + -1, 141, -1, -1, 77, -1, -1, 51, -1, -1, + 54, 84, 56, 57, 58, 59, 60, -1, -1, 63, + -1, -1, 66, -1, 164, -1, 70, 100, -1, -1, + -1, -1, -1, 77, -1, -1, 10, 11, 12, -1, + 84, -1, -1, 116, -1, -1, 119, 120, -1, -1, + -1, -1, 125, 11, 12, -1, 100, -1, -1, -1, + 133, 134, 135, 136, -1, -1, 139, -1, 141, -1, + -1, -1, -1, -1, -1, 119, 120, 11, 12, -1, + -1, 125, -1, -1, -1, -1, -1, -1, -1, 133, + 134, 135, 136, 51, -1, 139, 54, 141, 56, 57, + 58, 59, 76, 77, -1, 63, -1, -1, 66, -1, + -1, -1, 70, -1, -1, -1, -1, 51, -1, 77, + 54, -1, 56, 57, 58, 59, 84, -1, -1, 63, + -1, -1, 66, -1, -1, -1, 70, -1, 112, 113, + -1, 115, 100, 77, -1, -1, 120, -1, 122, -1, + 84, -1, -1, -1, -1, -1, -1, -1, 116, 133, + -1, 119, 120, 11, 138, -1, 100, 125, -1, -1, + -1, -1, -1, -1, -1, 133, 134, 135, 136, -1, + -1, 139, -1, 141, -1, 119, 120, -1, -1, -1, + -1, 125, 11, -1, -1, -1, -1, -1, -1, 133, + 134, 135, 136, 51, -1, 139, 54, 141, 56, 57, + 58, 59, 60, -1, -1, 63, -1, -1, 66, -1, + -1, -1, 70, -1, -1, -1, -1, -1, -1, 77, + -1, -1, 51, -1, -1, 54, 84, 56, 57, 58, + 59, 60, -1, -1, 63, -1, -1, 66, -1, -1, + -1, 70, 100, -1, -1, -1, -1, -1, 77, -1, + -1, 10, 11, 12, -1, 84, -1, -1, -1, -1, + -1, 119, 120, -1, -1, -1, -1, 125, 11, -1, + -1, 100, -1, -1, -1, 133, 134, 135, 136, -1, + -1, 139, -1, 141, -1, -1, -1, -1, -1, -1, + 119, 120, 11, -1, -1, -1, 125, -1, -1, -1, + 10, 11, 12, -1, 133, 134, 135, 136, 51, -1, + 139, 54, 141, 56, 57, 58, 59, 76, 77, -1, + 63, -1, -1, 66, -1, -1, -1, 70, -1, -1, + -1, -1, 51, -1, 77, 54, -1, 56, 57, 58, + 59, 84, -1, -1, 63, -1, -1, 66, -1, -1, + -1, 70, -1, 112, 113, -1, 115, 100, 77, -1, + -1, 120, -1, 122, -1, 84, 76, 77, -1, -1, + -1, -1, -1, -1, 133, -1, 119, 120, -1, 138, + -1, 100, 125, -1, -1, -1, -1, -1, -1, -1, + 133, 134, 135, 136, -1, -1, 139, -1, 141, -1, + 119, 120, 112, 113, -1, 115, 125, -1, -1, -1, + 120, -1, 122, -1, 133, 134, 135, 136, -1, 47, + 139, 49, 141, 133, 52, 53, -1, -1, 138, -1, + -1, -1, 60, 61, -1, -1, -1, -1, -1, -1, + -1, 69, -1, 71, 72, 73, 74, -1, -1, -1, + 78, -1, -1, -1, -1, 83, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 102, 103, 104, 105, 106, 107, + -1, -1, -1, -1, -1, 113, 114, 115, 116, -1, + -1, 47, -1, 49, 122, 123, 52, 53, 126, 127, + -1, -1, -1, 131, 60, 61, -1, -1, -1, 137, + 138, -1, 140, 69, -1, 71, 72, 73, 74, -1, + 148, -1, 78, -1, -1, -1, -1, 83, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 167, + -1, -1, -1, -1, -1, -1, 102, 103, 104, 105, + 106, 107, -1, -1, -1, -1, -1, 113, 114, 115, + 116, -1, -1, 47, -1, 49, 122, 123, 52, 53, + 126, 127, -1, -1, -1, 131, 60, 61, -1, -1, + -1, 137, 138, -1, 140, 69, -1, 71, 72, 73, + 74, -1, 148, -1, 78, -1, -1, -1, -1, 83, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 167, -1, -1, -1, -1, -1, -1, 102, 103, + 104, 105, 106, 107, -1, -1, -1, -1, -1, 113, + 114, 115, 116, -1, -1, 47, -1, 49, 122, 123, + 52, 53, 126, 127, -1, -1, -1, 131, 60, 61, + -1, -1, -1, 137, 138, -1, 140, 69, -1, 71, + 72, 73, 74, -1, 148, -1, 78, -1, -1, -1, + -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 167, -1, -1, -1, -1, -1, -1, + 102, 103, 104, 105, 106, 107, -1, -1, -1, -1, + -1, 113, 114, 115, 116, -1, -1, 47, -1, 49, + 122, 123, 52, 53, 126, 127, -1, -1, -1, 131, + 60, 61, -1, -1, -1, 137, 138, -1, 140, 69, + -1, 71, 72, 73, 74, -1, 148, -1, 78, -1, + -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 167, -1, -1, -1, -1, + -1, -1, 102, 103, 104, 105, 106, 107, -1, -1, + -1, -1, -1, 113, 114, 115, 116, -1, -1, 47, + -1, 49, 122, 123, 52, 53, 126, 127, -1, -1, + -1, 131, 60, 61, -1, -1, -1, 137, 138, -1, + 140, 69, -1, 71, 72, 73, 74, -1, 148, -1, + 78, -1, -1, -1, -1, 83, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 167, -1, -1, + -1, -1, -1, -1, 102, 103, 104, 105, 106, 107, + -1, -1, -1, -1, -1, 113, 114, 115, 116, -1, + -1, 47, -1, 49, 122, 123, 52, 53, 126, 127, + -1, -1, -1, 131, 60, 61, -1, -1, -1, 137, + 138, -1, 140, 69, -1, 71, 72, 73, 74, 47, + 148, 49, 78, -1, -1, 53, -1, 83, -1, -1, + -1, -1, 60, 61, -1, -1, -1, -1, -1, 167, + -1, -1, -1, 71, 72, 73, 102, 103, 104, 105, + 106, 107, -1, -1, -1, 83, -1, 113, 114, 115, + 116, -1, -1, -1, -1, -1, 122, 123, -1, -1, + 126, 127, -1, -1, -1, 131, -1, -1, 106, -1, + -1, 137, 138, -1, 140, -1, -1, -1, 116, -1, + -1, -1, 148, -1, 122, -1, -1, -1, -1, 127, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, + 138, 167, 140, -1, -1, 47, -1, 49, -1, -1, + 52, 53, -1, -1, -1, -1, -1, 155, 60, 61, + -1, -1, -1, -1, -1, -1, -1, 69, -1, 71, + 72, 73, 74, 47, -1, 49, 78, -1, -1, 53, + -1, 83, -1, -1, -1, -1, 60, 61, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 71, 72, 73, + 102, 103, 104, 105, 106, 107, -1, -1, -1, 83, + -1, 113, 114, 115, 116, -1, -1, -1, -1, -1, + 122, 123, -1, -1, 126, 127, -1, -1, -1, 131, + -1, 47, 106, 49, -1, 137, 138, 53, 140, -1, + -1, -1, 116, -1, 60, 61, -1, -1, 122, -1, + -1, -1, 126, 127, -1, 71, 72, 73, -1, 47, + -1, 49, -1, 137, 138, 53, 140, 83, -1, -1, + -1, -1, 60, 61, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 71, 72, 73, -1, -1, -1, -1, + 106, 107, -1, -1, -1, 83, -1, -1, -1, -1, + 116, -1, -1, -1, -1, -1, 122, -1, -1, -1, + -1, 127, -1, -1, -1, -1, -1, -1, 106, -1, + -1, -1, 138, -1, 140, -1, -1, -1, 116, -1, + -1, -1, -1, -1, 122, -1, -1, -1, -1, 127, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 138, -1, 140 +}; + +/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ +static const yytype_uint16 yystos[] = +{ + 0, 143, 144, 145, 171, 172, 277, 3, 4, 5, + 6, 8, 9, 10, 11, 50, 54, 56, 57, 58, + 62, 66, 67, 75, 76, 77, 81, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 108, 110, 112, 117, 119, 120, + 121, 124, 129, 132, 136, 141, 154, 157, 158, 159, + 162, 164, 165, 168, 267, 268, 276, 11, 12, 51, + 54, 56, 57, 58, 59, 60, 63, 66, 70, 77, + 84, 100, 119, 120, 125, 133, 134, 135, 136, 139, + 141, 229, 230, 234, 236, 238, 244, 245, 249, 250, + 255, 256, 257, 258, 0, 47, 49, 52, 53, 60, + 61, 69, 71, 72, 73, 74, 78, 83, 102, 103, + 104, 105, 106, 107, 113, 114, 115, 116, 122, 123, + 126, 127, 131, 137, 138, 140, 148, 175, 177, 178, + 180, 183, 201, 251, 254, 277, 146, 164, 164, 164, + 164, 164, 164, 155, 164, 155, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, + 164, 164, 164, 164, 164, 11, 51, 63, 133, 134, + 232, 249, 250, 255, 155, 164, 164, 15, 164, 155, + 164, 164, 164, 267, 267, 267, 267, 267, 11, 54, + 56, 57, 58, 66, 77, 84, 100, 119, 120, 136, + 141, 234, 265, 267, 10, 11, 12, 76, 77, 112, + 113, 115, 120, 122, 150, 154, 159, 271, 272, 274, + 277, 267, 16, 17, 18, 19, 20, 21, 22, 23, + 33, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 163, 164, 165, 6, 8, 229, 230, 164, + 59, 125, 66, 100, 256, 256, 256, 274, 164, 256, + 13, 15, 17, 60, 140, 154, 159, 164, 227, 228, + 277, 228, 146, 10, 11, 12, 112, 149, 275, 235, + 277, 137, 181, 182, 274, 164, 72, 83, 180, 180, + 180, 180, 6, 180, 201, 180, 149, 179, 107, 180, + 164, 164, 164, 164, 180, 146, 274, 149, 149, 149, + 180, 180, 164, 180, 183, 202, 180, 180, 186, 107, + 274, 180, 180, 10, 11, 51, 63, 111, 133, 134, + 146, 162, 189, 192, 231, 233, 236, 238, 244, 249, + 250, 255, 264, 265, 277, 264, 234, 264, 264, 264, + 264, 234, 264, 234, 264, 234, 264, 234, 234, 234, + 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, + 234, 234, 264, 164, 274, 164, 164, 274, 235, 234, + 264, 264, 164, 10, 234, 234, 234, 267, 264, 264, + 166, 147, 166, 274, 274, 147, 169, 150, 217, 277, + 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, + 267, 166, 265, 267, 228, 228, 51, 267, 234, 159, + 274, 13, 15, 17, 60, 140, 154, 159, 227, 277, + 227, 228, 227, 228, 227, 227, 15, 17, 47, 60, + 116, 154, 159, 212, 213, 222, 229, 230, 277, 165, + 247, 248, 277, 11, 246, 256, 149, 10, 11, 12, + 47, 49, 112, 146, 274, 275, 274, 48, 147, 164, + 11, 231, 267, 180, 177, 146, 274, 274, 274, 274, + 274, 172, 146, 267, 155, 10, 11, 192, 231, 233, + 274, 148, 150, 164, 164, 164, 60, 229, 274, 164, + 176, 274, 146, 148, 149, 150, 218, 146, 148, 150, + 219, 148, 184, 274, 275, 235, 167, 166, 166, 166, + 166, 166, 166, 156, 166, 156, 166, 166, 166, 166, + 147, 166, 147, 166, 147, 166, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 267, 234, 264, 274, + 156, 166, 166, 274, 166, 166, 156, 166, 166, 166, + 166, 267, 267, 15, 154, 272, 164, 198, 277, 267, + 149, 166, 169, 166, 166, 166, 227, 159, 274, 227, + 227, 227, 227, 227, 165, 227, 181, 116, 229, 230, + 222, 227, 227, 166, 15, 147, 13, 17, 60, 140, + 154, 159, 164, 225, 275, 277, 13, 15, 17, 60, + 140, 154, 159, 164, 226, 263, 267, 277, 274, 167, + 246, 181, 164, 237, 239, 149, 180, 181, 3, 4, + 5, 9, 10, 15, 50, 62, 67, 75, 76, 108, + 110, 112, 117, 121, 124, 129, 132, 154, 157, 158, + 162, 164, 168, 214, 215, 222, 223, 269, 270, 276, + 277, 166, 166, 172, 146, 147, 147, 147, 147, 167, + 252, 147, 166, 10, 11, 12, 59, 60, 133, 203, + 204, 205, 206, 207, 255, 277, 164, 219, 187, 148, + 234, 190, 13, 159, 191, 51, 267, 229, 13, 17, + 60, 140, 154, 159, 224, 275, 277, 234, 172, 164, + 259, 260, 173, 174, 274, 64, 65, 259, 64, 65, + 146, 267, 13, 17, 60, 111, 140, 154, 159, 164, + 185, 208, 210, 275, 149, 274, 164, 164, 234, 234, + 234, 166, 166, 166, 164, 166, 164, 217, 212, 17, + 33, 47, 60, 61, 76, 106, 109, 112, 128, 140, + 154, 211, 277, 267, 227, 263, 166, 48, 229, 230, + 225, 226, 166, 166, 198, 15, 222, 159, 225, 225, + 225, 225, 225, 225, 165, 217, 159, 274, 226, 226, + 226, 226, 226, 226, 165, 217, 169, 147, 150, 48, + 231, 267, 172, 76, 240, 277, 182, 164, 155, 155, + 232, 155, 15, 164, 155, 164, 267, 267, 267, 267, + 234, 265, 267, 166, 15, 147, 16, 17, 18, 19, + 20, 21, 22, 23, 33, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 163, 164, 165, 180, + 180, 167, 253, 10, 10, 10, 10, 172, 276, 148, + 207, 156, 147, 15, 274, 13, 17, 60, 140, 154, + 159, 164, 225, 226, 188, 210, 148, 212, 159, 208, + 212, 166, 166, 224, 159, 224, 224, 224, 224, 224, + 164, 165, 166, 167, 193, 167, 261, 277, 146, 147, + 146, 164, 148, 148, 167, 148, 148, 146, 220, 221, + 267, 277, 148, 159, 208, 208, 6, 16, 17, 18, + 19, 20, 21, 22, 23, 33, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 65, 108, + 147, 150, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 164, 165, 168, 199, 208, 208, 208, + 208, 149, 164, 165, 211, 150, 217, 219, 246, 265, + 265, 166, 166, 166, 265, 265, 166, 60, 232, 181, + 164, 146, 169, 164, 222, 225, 226, 217, 217, 164, + 164, 211, 225, 166, 263, 226, 166, 263, 267, 166, + 166, 167, 149, 241, 242, 277, 234, 234, 234, 164, + 234, 164, 10, 234, 234, 234, 267, 166, 166, 15, + 223, 267, 267, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 166, 265, 267, 172, 147, 166, 147, 147, + 147, 167, 166, 225, 226, 183, 200, 201, 206, 274, + 150, 159, 150, 216, 277, 217, 219, 166, 208, 166, + 166, 164, 224, 196, 263, 212, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 70, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 82, 83, 84, 100, 106, 107, 108, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 168, 169, 262, 259, 174, 264, 264, + 220, 167, 147, 208, 10, 166, 169, 166, 4, 209, + 263, 267, 147, 166, 166, 166, 166, 198, 232, 228, + 48, 166, 274, 259, 212, 217, 217, 212, 212, 164, + 169, 164, 169, 147, 113, 114, 115, 133, 138, 243, + 273, 274, 146, 147, 166, 156, 156, 264, 156, 274, + 166, 166, 156, 166, 166, 267, 149, 166, 169, 167, + 10, 148, 10, 10, 10, 148, 216, 234, 50, 62, + 67, 117, 121, 124, 154, 157, 158, 159, 162, 164, + 168, 266, 268, 147, 198, 166, 164, 198, 197, 212, + 169, 166, 261, 167, 167, 166, 167, 146, 267, 214, + 169, 185, 211, 228, 15, 166, 167, 166, 166, 166, + 212, 212, 138, 273, 138, 273, 138, 273, 274, 113, + 114, 115, 15, 172, 243, 164, 164, 166, 164, 166, + 164, 267, 147, 166, 147, 166, 166, 147, 166, 164, + 155, 155, 155, 15, 164, 155, 266, 266, 266, 266, + 266, 234, 265, 266, 16, 17, 18, 19, 20, 21, + 22, 23, 33, 151, 152, 153, 154, 157, 158, 159, + 160, 161, 163, 164, 165, 188, 164, 194, 212, 166, + 198, 167, 15, 220, 166, 146, 166, 198, 198, 198, + 166, 166, 273, 273, 273, 273, 273, 273, 167, 265, + 265, 265, 265, 10, 148, 10, 148, 148, 10, 148, + 234, 234, 234, 234, 164, 10, 234, 234, 166, 166, + 266, 266, 266, 266, 266, 266, 266, 266, 266, 266, + 266, 266, 266, 266, 266, 266, 266, 266, 266, 166, + 265, 267, 195, 212, 166, 198, 167, 198, 259, 211, + 211, 211, 198, 198, 166, 166, 166, 166, 166, 147, + 147, 166, 166, 156, 156, 156, 274, 166, 166, 156, + 266, 149, 166, 169, 212, 166, 198, 167, 148, 10, + 10, 148, 164, 164, 164, 166, 164, 266, 166, 198, + 166, 166, 265, 265, 265, 265, 198, 211, 148, 148, + 166, 166, 166, 166, 211 +}; + +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab + + +/* Like YYERROR except do call yyerror. This remains here temporarily + to ease the transition to the new meaning of YYERROR, for GCC. + Once GCC version 2 has supplanted version 1, this can go. However, + YYFAIL appears to be in use. Nevertheless, it is formally deprecated + in Bison 2.4.2's NEWS entry, where a plan to phase it out is + discussed. */ + +#define YYFAIL goto yyerrlab +#if defined YYFAIL + /* This is here to suppress warnings from the GCC cpp's + -Wunused-macros. Normally we don't worry about that warning, but + some users do, and we want to make it easy for users to remove + YYFAIL uses, which will produce warnings from Bison 2.5. */ +#endif #define YYRECOVERING() (!!yyerrstatus) @@ -3041,14 +3581,14 @@ do \ } \ else \ { \ - yyerror (&yylloc, YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (0) + yyerror (YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (YYID (0)) /* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 +#define YYTERROR 1 +#define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. @@ -3058,7 +3598,7 @@ while (0) #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ - if (N) \ + if (YYID (N)) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ @@ -3072,58 +3612,59 @@ while (0) (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ - while (0) + while (YYID (0)) #endif #define YYRHSLOC(Rhs, K) ((Rhs)[K]) -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (0) - - /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ +#ifndef __attribute__ +/* This feature is available in gcc versions 2.5 and later. */ +# if (! defined __GNUC__ || __GNUC__ < 2 \ + || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) +# define __attribute__(Spec) /* empty */ +# endif +#endif + #ifndef YY_LOCATION_PRINT # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL /* Print *YYLOCP on YYO. Private, do not rely on its existence. */ -YY_ATTRIBUTE_UNUSED +__attribute__((__unused__)) +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static unsigned yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp) +#else +static unsigned +yy_location_print_ (yyo, yylocp) + FILE *yyo; + YYLTYPE const * const yylocp; +#endif { unsigned res = 0; int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0; if (0 <= yylocp->first_line) { - res += YYFPRINTF (yyo, "%d", yylocp->first_line); + res += fprintf (yyo, "%d", yylocp->first_line); if (0 <= yylocp->first_column) - res += YYFPRINTF (yyo, ".%d", yylocp->first_column); + res += fprintf (yyo, ".%d", yylocp->first_column); } if (0 <= yylocp->last_line) { if (yylocp->first_line < yylocp->last_line) { - res += YYFPRINTF (yyo, "-%d", yylocp->last_line); + res += fprintf (yyo, "-%d", yylocp->last_line); if (0 <= end_col) - res += YYFPRINTF (yyo, ".%d", end_col); + res += fprintf (yyo, ".%d", end_col); } else if (0 <= end_col && yylocp->first_column < end_col) - res += YYFPRINTF (yyo, "-%d", end_col); + res += fprintf (yyo, "-%d", end_col); } return res; } @@ -3137,35 +3678,73 @@ yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp) #endif -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value, Location); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (0) +/* YYLEX -- calling `yylex' with the right arguments. */ +#ifdef YYLEX_PARAM +# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) +#else +# define YYLEX yylex (&yylval, &yylloc) +#endif + +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (YYID (0)) + +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value, Location); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (YYID (0)) -/*----------------------------------------. -| Print this symbol's value on YYOUTPUT. | -`----------------------------------------*/ +/*--------------------------------. +| Print this symbol on YYOUTPUT. | +`--------------------------------*/ +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp) +#else +static void +yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + YYLTYPE const * const yylocationp; +#endif { FILE *yyo = yyoutput; YYUSE (yyo); - YYUSE (yylocationp); if (!yyvaluep) return; + YYUSE (yylocationp); # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); +# else + YYUSE (yyoutput); # endif - YYUSE (yytype); + switch (yytype) + { + default: + break; + } } @@ -3173,11 +3752,23 @@ yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvalue | Print this symbol on YYOUTPUT. | `--------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp) +#else +static void +yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp) + FILE *yyoutput; + int yytype; + YYSTYPE const * const yyvaluep; + YYLTYPE const * const yylocationp; +#endif { - YYFPRINTF (yyoutput, "%s %s (", - yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); + if (yytype < YYNTOKENS) + YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); + else + YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); YY_LOCATION_PRINT (yyoutput, *yylocationp); YYFPRINTF (yyoutput, ": "); @@ -3190,8 +3781,16 @@ yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYL | TOP (included). | `------------------------------------------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) +#else +static void +yy_stack_print (yybottom, yytop) + yytype_int16 *yybottom; + yytype_int16 *yytop; +#endif { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -3202,42 +3801,50 @@ yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) YYFPRINTF (stderr, "\n"); } -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (0) +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (YYID (0)) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void -yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule) +yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule) +#else +static void +yy_reduce_print (yyvsp, yylsp, yyrule) + YYSTYPE *yyvsp; + YYLTYPE *yylsp; + int yyrule; +#endif { - unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; + unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); + yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, - yystos[yyssp[yyi + 1 - yynrhs]], - &(yyvsp[(yyi + 1) - (yynrhs)]) - , &(yylsp[(yyi + 1) - (yynrhs)]) ); + yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], + &(yyvsp[(yyi + 1) - (yynrhs)]) + , &(yylsp[(yyi + 1) - (yynrhs)]) ); YYFPRINTF (stderr, "\n"); } } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyssp, yyvsp, yylsp, Rule); \ -} while (0) +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyvsp, yylsp, Rule); \ +} while (YYID (0)) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ @@ -3251,7 +3858,7 @@ int yydebug; /* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -3274,8 +3881,15 @@ int yydebug; # define yystrlen strlen # else /* Return the length of YYSTR. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) +#else +static YYSIZE_T +yystrlen (yystr) + const char *yystr; +#endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) @@ -3291,8 +3905,16 @@ yystrlen (const char *yystr) # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) +#else +static char * +yystpcpy (yydest, yysrc) + char *yydest; + const char *yysrc; +#endif { char *yyd = yydest; const char *yys = yysrc; @@ -3322,27 +3944,27 @@ yytnamerr (char *yyres, const char *yystr) char const *yyp = yystr; for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } do_not_strip_quotes: ; } @@ -3365,11 +3987,11 @@ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { - YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); + YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ - const char *yyformat = YY_NULLPTR; + const char *yyformat = YY_NULL; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per @@ -3377,6 +3999,10 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, int yycount = 0; /* There are many possibilities here to consider: + - Assume YYFAIL is not used. It's too flawed to consider. See + + for details. YYERROR is fine as it does not invoke this + function. - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected @@ -3426,7 +4052,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } yyarg[yycount++] = yytname[yyx]; { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; @@ -3493,18 +4119,33 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, | Release the memory associated to this symbol. | `-----------------------------------------------*/ +/*ARGSUSED*/ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp) +#else +static void +yydestruct (yymsg, yytype, yyvaluep, yylocationp) + const char *yymsg; + int yytype; + YYSTYPE *yyvaluep; + YYLTYPE *yylocationp; +#endif { YYUSE (yyvaluep); YYUSE (yylocationp); + if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yytype); - YY_IGNORE_MAYBE_UNINITIALIZED_END + switch (yytype) + { + + default: + break; + } } @@ -3514,27 +4155,66 @@ yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocatio | yyparse. | `----------*/ +#ifdef YYPARSE_PARAM +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) +int +yyparse (void *YYPARSE_PARAM) +#else +int +yyparse (YYPARSE_PARAM) + void *YYPARSE_PARAM; +#endif +#else /* ! YYPARSE_PARAM */ +#if (defined __STDC__ || defined __C99__FUNC__ \ + || defined __cplusplus || defined _MSC_VER) int yyparse (void) +#else +int +yyparse () + +#endif +#endif { /* The lookahead symbol. */ int yychar; -/* The semantic value of the lookahead symbol. */ +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") +#else /* Default value used for initialization, for pacifying older GCCs or non-GCC compilers. */ -YY_INITIAL_VALUE (static YYSTYPE yyval_default;) -YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); - -/* Location data for the lookahead symbol. */ +static YYSTYPE yyval_default; +# define YY_INITIAL_VALUE(Value) = Value +#endif static YYLTYPE yyloc_default # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL = { 1, 1, 1, 1 } # endif ; +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END +#endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + +/* The semantic value of the lookahead symbol. */ +YYSTYPE yylval YY_INITIAL_VALUE(yyval_default); + +/* Location data for the lookahead symbol. */ YYLTYPE yylloc = yyloc_default; + /* Number of syntax errors so far. */ int yynerrs; @@ -3543,9 +4223,9 @@ YYLTYPE yylloc = yyloc_default; int yyerrstatus; /* The stacks and their tools: - 'yyss': related to states. - 'yyvs': related to semantic values. - 'yyls': related to locations. + `yyss': related to states. + `yyvs': related to semantic values. + `yyls': related to locations. Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ @@ -3624,26 +4304,26 @@ YYLTYPE yylloc = yyloc_default; #ifdef yyoverflow { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - YYLTYPE *yyls1 = yyls; + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + YYLTYPE *yyls1 = yyls; - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yyls1, yysize * sizeof (*yylsp), - &yystacksize); + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yyls1, yysize * sizeof (*yylsp), + &yystacksize); - yyls = yyls1; - yyss = yyss1; - yyvs = yyvs1; + yyls = yyls1; + yyss = yyss1; + yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE @@ -3651,23 +4331,23 @@ YYLTYPE yylloc = yyloc_default; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; + yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); - YYSTACK_RELOCATE (yyls_alloc, yyls); + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); + YYSTACK_RELOCATE (yyls_alloc, yyls); # undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ @@ -3677,10 +4357,10 @@ YYLTYPE yylloc = yyloc_default; yylsp = yyls + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) - YYABORT; + YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); @@ -3709,7 +4389,7 @@ yybackup: if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); - yychar = yylex (&yylval, &yylloc); + yychar = YYLEX; } if (yychar <= YYEOF) @@ -3774,7 +4454,7 @@ yyreduce: yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: - '$$ = $1'. + `$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison @@ -3789,64 +4469,65 @@ yyreduce: switch (yyn) { case 3: -#line 444 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 450 "dtool/src/cppparser/cppBison.yxx" { - current_expr = (yyvsp[0].u.expr); + current_expr = (yyvsp[(2) - (2)].u.expr); } -#line 3797 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 4: -#line 448 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 454 "dtool/src/cppparser/cppBison.yxx" { - current_type = (yyvsp[0].u.type); + current_type = (yyvsp[(2) - (2)].u.type); } -#line 3805 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 10: -#line 466 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 472 "dtool/src/cppparser/cppBison.yxx" { - delete (yyvsp[-1].u.expr); + delete (yyvsp[(3) - (4)].u.expr); } -#line 3813 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 11: -#line 470 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 476 "dtool/src/cppparser/cppBison.yxx" { - delete (yyvsp[-2].u.expr); + delete (yyvsp[(3) - (5)].u.expr); } -#line 3821 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 12: -#line 474 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 480 "dtool/src/cppparser/cppBison.yxx" { - delete (yyvsp[-1].u.expr); + delete (yyvsp[(3) - (4)].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 */ +/* Line 1792 of yacc.c */ +#line 492 "dtool/src/cppparser/cppBison.yxx" { push_storage_class((current_storage_class & ~CPPInstance::SC_c_binding) | - ((yyvsp[-1].u.integer) & CPPInstance::SC_c_binding)); + ((yyvsp[(1) - (2)].u.integer) & CPPInstance::SC_c_binding)); } -#line 3838 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 14: -#line 491 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 497 "dtool/src/cppparser/cppBison.yxx" { pop_storage_class(); } -#line 3846 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 21: -#line 504 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 510 "dtool/src/cppparser/cppBison.yxx" { if (publish_nest_level != 0) { yyerror("Unclosed __begin_publish", publish_loc); @@ -3855,36 +4536,36 @@ yyreduce: } publish_previous = current_scope->get_current_vis(); - publish_loc = (yylsp[0]); + publish_loc = (yylsp[(1) - (1)]); publish_nest_level++; current_scope->set_current_vis(V_published); } -#line 3863 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 22: -#line 517 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 523 "dtool/src/cppparser/cppBison.yxx" { if (publish_nest_level != 1) { - yyerror("Unmatched __end_publish", (yylsp[0])); + yyerror("Unmatched __end_publish", (yylsp[(1) - (1)])); } else { current_scope->set_current_vis(publish_previous); } publish_nest_level = 0; } -#line 3876 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 23: -#line 526 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 532 "dtool/src/cppparser/cppBison.yxx" { 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 */ +/* Line 1792 of yacc.c */ +#line 536 "dtool/src/cppparser/cppBison.yxx" { if (publish_nest_level > 0) { current_scope->set_current_vis(V_published); @@ -3892,668 +4573,684 @@ yyreduce: current_scope->set_current_vis(V_public); } } -#line 3896 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 25: -#line 538 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 544 "dtool/src/cppparser/cppBison.yxx" { current_scope->set_current_vis(V_protected); } -#line 3904 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 26: -#line 542 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 548 "dtool/src/cppparser/cppBison.yxx" { 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 */ +/* Line 1792 of yacc.c */ +#line 552 "dtool/src/cppparser/cppBison.yxx" { - CPPDeclaration *getter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *getter = (yyvsp[(5) - (7)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); + yyerror("Reference to non-existent or invalid getter: " + (yyvsp[(5) - (7)].u.identifier)->get_fully_scoped_name(), (yylsp[(5) - (7)])); } - 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])); + CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[(3) - (7)].u.identifier), getter->as_function_group(), NULL, current_scope, (yylsp[(1) - (7)]).file); + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[(1) - (7)])); } -#line 3927 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 28: -#line 557 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 563 "dtool/src/cppparser/cppBison.yxx" { - CPPDeclaration *getter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *getter = (yyvsp[(5) - (9)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); + yyerror("Reference to non-existent or invalid getter: " + (yyvsp[(5) - (9)].u.identifier)->get_fully_scoped_name(), (yylsp[(5) - (9)])); } else { - CPPDeclaration *setter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *setter = (yyvsp[(7) - (9)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); CPPFunctionGroup *setter_func = NULL; if (setter == (CPPDeclaration *)NULL || setter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid setter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); + yyerror("Reference to non-existent or invalid setter: " + (yyvsp[(7) - (9)].u.identifier)->get_fully_scoped_name(), (yylsp[(7) - (9)])); } else { setter_func = setter->as_function_group(); } - CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-6].u.identifier), getter->as_function_group(), - setter_func, current_scope, (yylsp[-8]).file); - current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-8])); + CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[(3) - (9)].u.identifier), getter->as_function_group(), + setter_func, current_scope, (yylsp[(1) - (9)]).file); + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[(1) - (9)])); } } -#line 3952 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 29: -#line 578 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 584 "dtool/src/cppparser/cppBison.yxx" { - CPPDeclaration *getter = (yyvsp[-6].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *getter = (yyvsp[(5) - (11)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-6].u.identifier)->get_fully_scoped_name(), (yylsp[-6])); + yyerror("Reference to non-existent or invalid getter: " + (yyvsp[(5) - (11)].u.identifier)->get_fully_scoped_name(), (yylsp[(5) - (11)])); } else { - CPPDeclaration *setter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *setter = (yyvsp[(7) - (11)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); CPPFunctionGroup *setter_func = NULL; if (setter == (CPPDeclaration *)NULL || setter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid setter: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); + yyerror("Reference to non-existent or invalid setter: " + (yyvsp[(7) - (11)].u.identifier)->get_fully_scoped_name(), (yylsp[(7) - (11)])); } else { setter_func = setter->as_function_group(); } - CPPDeclaration *deleter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *deleter = (yyvsp[(9) - (11)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (deleter == (CPPDeclaration *)NULL || deleter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("reference to non-existent or invalid delete method: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); + yyerror("reference to non-existent or invalid delete method: " + (yyvsp[(9) - (11)].u.identifier)->get_fully_scoped_name(), (yylsp[(9) - (11)])); deleter = NULL; } - CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-8].u.identifier), getter->as_function_group(), - setter_func, current_scope, (yylsp[-10]).file); + CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[(3) - (11)].u.identifier), getter->as_function_group(), + setter_func, current_scope, (yylsp[(1) - (11)]).file); if (deleter) { make_property->_del_function = deleter->as_function_group(); } - current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-10])); + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[(1) - (11)])); } } -#line 3986 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 30: -#line 608 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 614 "dtool/src/cppparser/cppBison.yxx" { - CPPDeclaration *length_getter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *length_getter = (yyvsp[(5) - (9)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (length_getter == (CPPDeclaration *)NULL || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("reference to non-existent or invalid length method: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); + yyerror("reference to non-existent or invalid length method: " + (yyvsp[(5) - (9)].u.identifier)->get_fully_scoped_name(), (yylsp[(5) - (9)])); length_getter = NULL; } - CPPDeclaration *getter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *getter = (yyvsp[(7) - (9)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); + yyerror("Reference to non-existent or invalid getter: " + (yyvsp[(7) - (9)].u.identifier)->get_fully_scoped_name(), (yylsp[(7) - (9)])); } - CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-6].u.identifier), getter->as_function_group(), NULL, current_scope, (yylsp[-8]).file); + CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[(3) - (9)].u.identifier), getter->as_function_group(), NULL, current_scope, (yylsp[(1) - (9)]).file); make_property->_length_function = length_getter->as_function_group(); - current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-8])); + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[(1) - (9)])); } -#line 4007 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 31: -#line 625 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 631 "dtool/src/cppparser/cppBison.yxx" { - CPPDeclaration *length_getter = (yyvsp[-6].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *length_getter = (yyvsp[(5) - (11)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (length_getter == (CPPDeclaration *)NULL || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("reference to non-existent or invalid length method: " + (yyvsp[-6].u.identifier)->get_fully_scoped_name(), (yylsp[-6])); + yyerror("reference to non-existent or invalid length method: " + (yyvsp[(5) - (11)].u.identifier)->get_fully_scoped_name(), (yylsp[(5) - (11)])); length_getter = NULL; } - CPPDeclaration *getter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *getter = (yyvsp[(7) - (11)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); + yyerror("Reference to non-existent or invalid getter: " + (yyvsp[(7) - (11)].u.identifier)->get_fully_scoped_name(), (yylsp[(7) - (11)])); } else { - CPPDeclaration *setter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *setter = (yyvsp[(9) - (11)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); CPPFunctionGroup *setter_func = NULL; if (setter == (CPPDeclaration *)NULL || setter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid setter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); + yyerror("Reference to non-existent or invalid setter: " + (yyvsp[(9) - (11)].u.identifier)->get_fully_scoped_name(), (yylsp[(9) - (11)])); } else { setter_func = setter->as_function_group(); } - CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-8].u.identifier), getter->as_function_group(), - setter_func, current_scope, (yylsp[-10]).file); + CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[(3) - (11)].u.identifier), getter->as_function_group(), + setter_func, current_scope, (yylsp[(1) - (11)]).file); make_property->_length_function = length_getter->as_function_group(); - current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-10])); + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[(1) - (11)])); } } -#line 4039 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 32: -#line 653 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 659 "dtool/src/cppparser/cppBison.yxx" { - CPPDeclaration *length_getter = (yyvsp[-8].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *length_getter = (yyvsp[(5) - (13)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (length_getter == (CPPDeclaration *)NULL || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("reference to non-existent or invalid length method: " + (yyvsp[-8].u.identifier)->get_fully_scoped_name(), (yylsp[-8])); + yyerror("reference to non-existent or invalid length method: " + (yyvsp[(5) - (13)].u.identifier)->get_fully_scoped_name(), (yylsp[(5) - (13)])); length_getter = NULL; } - CPPDeclaration *getter = (yyvsp[-6].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *getter = (yyvsp[(7) - (13)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-6].u.identifier)->get_fully_scoped_name(), (yylsp[-6])); + yyerror("Reference to non-existent or invalid getter: " + (yyvsp[(7) - (13)].u.identifier)->get_fully_scoped_name(), (yylsp[(7) - (13)])); } else { - CPPDeclaration *setter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *setter = (yyvsp[(9) - (13)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); CPPFunctionGroup *setter_func = NULL; if (setter == (CPPDeclaration *)NULL || setter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid setter: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); + yyerror("Reference to non-existent or invalid setter: " + (yyvsp[(9) - (13)].u.identifier)->get_fully_scoped_name(), (yylsp[(9) - (13)])); } else { setter_func = setter->as_function_group(); } - CPPDeclaration *deleter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *deleter = (yyvsp[(11) - (13)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (deleter == (CPPDeclaration *)NULL || deleter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("reference to non-existent or invalid delete method: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); + yyerror("reference to non-existent or invalid delete method: " + (yyvsp[(11) - (13)].u.identifier)->get_fully_scoped_name(), (yylsp[(11) - (13)])); deleter = NULL; } - CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-10].u.identifier), getter->as_function_group(), - setter_func, current_scope, (yylsp[-12]).file); + CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[(3) - (13)].u.identifier), getter->as_function_group(), + setter_func, current_scope, (yylsp[(1) - (13)]).file); make_property->_length_function = length_getter->as_function_group(); if (deleter) { make_property->_del_function = deleter->as_function_group(); } - current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-12])); + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[(1) - (13)])); } } -#line 4080 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 33: -#line 690 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 696 "dtool/src/cppparser/cppBison.yxx" { - CPPDeclaration *hasser = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *hasser = (yyvsp[(5) - (9)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (hasser == (CPPDeclaration *)NULL || hasser->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid has-function: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); + yyerror("Reference to non-existent or invalid has-function: " + (yyvsp[(5) - (9)].u.identifier)->get_fully_scoped_name(), (yylsp[(5) - (9)])); } - CPPDeclaration *getter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *getter = (yyvsp[(7) - (9)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); + yyerror("Reference to non-existent or invalid getter: " + (yyvsp[(7) - (9)].u.identifier)->get_fully_scoped_name(), (yylsp[(7) - (9)])); } if (hasser && getter) { CPPMakeProperty *make_property; - make_property = new CPPMakeProperty((yyvsp[-6].u.identifier), + make_property = new CPPMakeProperty((yyvsp[(3) - (9)].u.identifier), hasser->as_function_group(), getter->as_function_group(), NULL, NULL, - current_scope, (yylsp[-8]).file); - current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-8])); + current_scope, (yylsp[(1) - (9)]).file); + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[(1) - (9)])); } } -#line 4106 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 34: -#line 712 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 718 "dtool/src/cppparser/cppBison.yxx" { - CPPDeclaration *hasser = (yyvsp[-8].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *hasser = (yyvsp[(5) - (13)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (hasser == (CPPDeclaration *)NULL || hasser->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid has-function: " + (yyvsp[-8].u.identifier)->get_fully_scoped_name(), (yylsp[-8])); + yyerror("Reference to non-existent or invalid has-function: " + (yyvsp[(5) - (13)].u.identifier)->get_fully_scoped_name(), (yylsp[(5) - (13)])); } - CPPDeclaration *getter = (yyvsp[-6].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *getter = (yyvsp[(7) - (13)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-6].u.identifier)->get_fully_scoped_name(), (yylsp[-6])); + yyerror("Reference to non-existent or invalid getter: " + (yyvsp[(7) - (13)].u.identifier)->get_fully_scoped_name(), (yylsp[(7) - (13)])); } - CPPDeclaration *setter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *setter = (yyvsp[(9) - (13)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (setter == (CPPDeclaration *)NULL || setter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid setter: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); + yyerror("Reference to non-existent or invalid setter: " + (yyvsp[(9) - (13)].u.identifier)->get_fully_scoped_name(), (yylsp[(9) - (13)])); } - CPPDeclaration *clearer = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *clearer = (yyvsp[(11) - (13)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (clearer == (CPPDeclaration *)NULL || clearer->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid clear-function: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); + yyerror("Reference to non-existent or invalid clear-function: " + (yyvsp[(11) - (13)].u.identifier)->get_fully_scoped_name(), (yylsp[(11) - (13)])); } if (hasser && getter && setter && clearer) { CPPMakeProperty *make_property; - make_property = new CPPMakeProperty((yyvsp[-10].u.identifier), + make_property = new CPPMakeProperty((yyvsp[(3) - (13)].u.identifier), hasser->as_function_group(), getter->as_function_group(), setter->as_function_group(), clearer->as_function_group(), - current_scope, (yylsp[-12]).file); - current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-12])); + current_scope, (yylsp[(1) - (13)]).file); + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[(1) - (13)])); } } -#line 4143 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 35: -#line 745 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 751 "dtool/src/cppparser/cppBison.yxx" { - CPPDeclaration *length_getter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *length_getter = (yyvsp[(5) - (9)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (length_getter == (CPPDeclaration *)NULL || length_getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("reference to non-existent or invalid length method: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); + yyerror("reference to non-existent or invalid length method: " + (yyvsp[(5) - (9)].u.identifier)->get_fully_scoped_name(), (yylsp[(5) - (9)])); length_getter = NULL; } - CPPDeclaration *element_getter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *element_getter = (yyvsp[(7) - (9)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (element_getter == (CPPDeclaration *)NULL || element_getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("reference to non-existent or invalid element method: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); + yyerror("reference to non-existent or invalid element method: " + (yyvsp[(7) - (9)].u.identifier)->get_fully_scoped_name(), (yylsp[(5) - (9)])); element_getter = NULL; } if (length_getter != (CPPDeclaration *)NULL && element_getter != (CPPDeclaration *)NULL) { - CPPMakeSeq *make_seq = new CPPMakeSeq((yyvsp[-6].u.identifier), + CPPMakeSeq *make_seq = new CPPMakeSeq((yyvsp[(3) - (9)].u.identifier), length_getter->as_function_group(), element_getter->as_function_group(), - current_scope, (yylsp[-8]).file); - current_scope->add_declaration(make_seq, global_scope, current_lexer, (yylsp[-8])); + current_scope, (yylsp[(1) - (9)]).file); + current_scope->add_declaration(make_seq, global_scope, current_lexer, (yylsp[(1) - (9)])); } } -#line 4169 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 36: -#line 767 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 773 "dtool/src/cppparser/cppBison.yxx" { - CPPExpression::Result result = (yyvsp[-4].u.expr)->evaluate(); + CPPExpression::Result result = (yyvsp[(3) - (7)].u.expr)->evaluate(); if (result._type == CPPExpression::RT_error) { - yywarning("static_assert requires a constant expression", (yylsp[-4])); + yywarning("static_assert requires a constant expression", (yylsp[(3) - (7)])); } else if (!result.as_boolean()) { stringstream str; - str << *(yyvsp[-2].u.expr); - yywarning("static_assert failed: " + str.str(), (yylsp[-4])); + str << *(yyvsp[(5) - (7)].u.expr); + yywarning("static_assert failed: " + str.str(), (yylsp[(3) - (7)])); } } -#line 4184 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 37: -#line 778 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 784 "dtool/src/cppparser/cppBison.yxx" { // This alternative version of static_assert was introduced in C++17. - CPPExpression::Result result = (yyvsp[-2].u.expr)->evaluate(); + CPPExpression::Result result = (yyvsp[(3) - (5)].u.expr)->evaluate(); if (result._type == CPPExpression::RT_error) { - yywarning("static_assert requires a constant expression", (yylsp[-2])); + yywarning("static_assert requires a constant expression", (yylsp[(3) - (5)])); } else if (!result.as_boolean()) { - yywarning("static_assert failed", (yylsp[-2])); + yywarning("static_assert failed", (yylsp[(3) - (5)])); } } -#line 4198 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 38: -#line 791 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 797 "dtool/src/cppparser/cppBison.yxx" { CPPScope *new_scope = new CPPScope(current_scope, CPPNameComponent("temp"), V_public); push_scope(new_scope); } -#line 4208 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 39: -#line 797 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 803 "dtool/src/cppparser/cppBison.yxx" { delete current_scope; pop_scope(); } -#line 4217 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 40: -#line 806 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 812 "dtool/src/cppparser/cppBison.yxx" { (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 */ +/* Line 1792 of yacc.c */ +#line 816 "dtool/src/cppparser/cppBison.yxx" { // This isn't really a storage class, but it helps with parsing. - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_const; + (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_const; } -#line 4234 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 42: -#line 815 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 821 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_extern; + (yyval.u.integer) = (yyvsp[(2) - (2)].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 */ +/* Line 1792 of yacc.c */ +#line 825 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_extern; - if ((yyvsp[-1].str) == "C") { + (yyval.u.integer) = (yyvsp[(3) - (3)].u.integer) | (int)CPPInstance::SC_extern; + if ((yyvsp[(2) - (3)].str) == "C") { (yyval.u.integer) |= (int)CPPInstance::SC_c_binding; - } else if ((yyvsp[-1].str) == "C++") { + } else if ((yyvsp[(2) - (3)].str) == "C++") { (yyval.u.integer) &= ~(int)CPPInstance::SC_c_binding; } else { - yywarning("Ignoring unknown linkage type \"" + (yyvsp[-1].str) + "\"", (yylsp[-1])); + yywarning("Ignoring unknown linkage type \"" + (yyvsp[(2) - (3)].str) + "\"", (yylsp[(2) - (3)])); } } -#line 4257 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 44: -#line 830 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 836 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_static; + (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_static; } -#line 4265 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 45: -#line 834 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 840 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_inline; + (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_inline; } -#line 4273 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 46: -#line 838 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 844 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_virtual; + (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_virtual; } -#line 4281 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 47: -#line 842 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 848 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_explicit; + (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_explicit; } -#line 4289 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 48: -#line 846 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 852 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_register; + (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_register; } -#line 4297 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 49: -#line 850 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 856 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_volatile; + (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_volatile; } -#line 4305 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 50: -#line 854 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 860 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_mutable; + (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_mutable; } -#line 4313 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 51: -#line 858 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 864 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_constexpr; + (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_constexpr; } -#line 4321 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 52: -#line 862 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 868 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_blocking; + (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_blocking; } -#line 4329 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 53: -#line 866 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 872 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_extension; + (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_extension; } -#line 4337 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 54: -#line 870 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 876 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_thread_local; + (yyval.u.integer) = (yyvsp[(2) - (2)].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 */ +/* Line 1792 of yacc.c */ +#line 880 "dtool/src/cppparser/cppBison.yxx" { // Ignore attribute specifiers for now. - (yyval.u.integer) = (yyvsp[0].u.integer); + (yyval.u.integer) = (yyvsp[(4) - (4)].u.integer); } -#line 4354 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 60: -#line 892 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 56: +/* Line 1792 of yacc.c */ +#line 885 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.integer) = (yyvsp[(5) - (5)].u.integer); +} + break; + + case 57: +/* Line 1792 of yacc.c */ +#line 889 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.integer) = (yyvsp[(5) - (5)].u.integer); +} + break; + + case 63: +/* Line 1792 of yacc.c */ +#line 907 "dtool/src/cppparser/cppBison.yxx" { // We don't need to push/pop type, because we can't nest // type_like_declaration. - if ((yyvsp[0].u.decl)->as_type_declaration()) { - current_type = (yyvsp[0].u.decl)->as_type_declaration()->_type; + if ((yyvsp[(2) - (2)].u.decl)->as_type_declaration()) { + current_type = (yyvsp[(2) - (2)].u.decl)->as_type_declaration()->_type; } else { - current_type = (yyvsp[0].u.decl)->as_type(); + current_type = (yyvsp[(2) - (2)].u.decl)->as_type(); } - push_storage_class((yyvsp[-1].u.integer)); + push_storage_class((yyvsp[(1) - (2)].u.integer)); } -#line 4369 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 61: -#line 903 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 64: +/* Line 1792 of yacc.c */ +#line 918 "dtool/src/cppparser/cppBison.yxx" { 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 */ + case 65: +/* Line 1792 of yacc.c */ +#line 923 "dtool/src/cppparser/cppBison.yxx" { // 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 // storage class, but we require it just to help yacc out in its // parsing. - current_scope->add_declaration((yyvsp[-1].u.decl), global_scope, current_lexer, (yylsp[-1])); + current_scope->add_declaration((yyvsp[(2) - (3)].u.decl), global_scope, current_lexer, (yylsp[(2) - (3)])); } -#line 4390 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 63: -#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)); - 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 4402 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 */ +/* Line 1792 of yacc.c */ +#line 932 "dtool/src/cppparser/cppBison.yxx" { - if (current_storage_class & CPPInstance::SC_const) { - (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); + if ((yyvsp[(2) - (3)].u.instance) != (CPPInstance *)NULL) { + (yyvsp[(2) - (3)].u.instance)->_storage_class |= (current_storage_class | (yyvsp[(1) - (3)].u.integer)); + current_scope->add_declaration((yyvsp[(2) - (3)].u.instance), global_scope, current_lexer, (yylsp[(2) - (3)])); + (yyvsp[(2) - (3)].u.instance)->set_initializer((yyvsp[(3) - (3)].u.expr)); } - CPPInstance *inst = new CPPInstance(current_type, (yyvsp[-1].u.inst_ident), - current_storage_class, - (yylsp[-1]).file); - inst->set_initializer((yyvsp[0].u.expr)); - current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[-1])); } -#line 4429 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 67: -#line 952 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 940 "dtool/src/cppparser/cppBison.yxx" { - if (current_storage_class & CPPInstance::SC_const) { - (yyvsp[-3].u.inst_ident)->add_modifier(IIT_const); + if ((yyvsp[(2) - (3)].u.instance) != (CPPInstance *)NULL) { + (yyvsp[(2) - (3)].u.instance)->_storage_class |= (current_storage_class | (yyvsp[(1) - (3)].u.integer)); + current_scope->add_declaration((yyvsp[(2) - (3)].u.instance), global_scope, current_lexer, (yylsp[(2) - (3)])); + (yyvsp[(2) - (3)].u.instance)->set_initializer((yyvsp[(3) - (3)].u.expr)); } - CPPInstance *inst = new CPPInstance(current_type, (yyvsp[-3].u.inst_ident), - current_storage_class, - (yylsp[-3]).file); - inst->set_initializer((yyvsp[-2].u.expr)); - current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[-3])); } -#line 4444 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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. - if ((yyvsp[0].u.decl)->as_type_declaration()) { - current_type = (yyvsp[0].u.decl)->as_type_declaration()->_type; - } else { - current_type = (yyvsp[0].u.decl)->as_type(); - } - push_storage_class((yyvsp[-1].u.integer)); -} -#line 4459 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 69: -#line 978 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 956 "dtool/src/cppparser/cppBison.yxx" { - pop_storage_class(); + if (current_storage_class & CPPInstance::SC_const) { + (yyvsp[(1) - (2)].u.inst_ident)->add_modifier(IIT_const); + } + CPPInstance *inst = new CPPInstance(current_type, (yyvsp[(1) - (2)].u.inst_ident), + current_storage_class, + (yylsp[(1) - (2)]).file); + inst->set_initializer((yyvsp[(2) - (2)].u.expr)); + current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[(1) - (2)])); } -#line 4467 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 70: -#line 982 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 967 "dtool/src/cppparser/cppBison.yxx" { - if ((yyvsp[-1].u.instance) != (CPPDeclaration *)NULL) { - CPPInstance *inst = (yyvsp[-1].u.instance)->as_instance(); - if (inst != (CPPInstance *)NULL) { - inst->_storage_class |= (current_storage_class | (yyvsp[-2].u.integer)); - current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[-1])); - CPPTypedefType *typedef_type = new CPPTypedefType(inst->_type, inst->_ident, current_scope); - current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, (yylsp[-1])); - } + if (current_storage_class & CPPInstance::SC_const) { + (yyvsp[(1) - (4)].u.inst_ident)->add_modifier(IIT_const); } + CPPInstance *inst = new CPPInstance(current_type, (yyvsp[(1) - (4)].u.inst_ident), + current_storage_class, + (yylsp[(1) - (4)]).file); + inst->set_initializer((yyvsp[(2) - (4)].u.expr)); + current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[(1) - (4)])); } -#line 4483 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 71: -#line 997 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 982 "dtool/src/cppparser/cppBison.yxx" { - if (current_storage_class & CPPInstance::SC_const) { - (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); + // We don't need to push/pop type, because we can't nest + // multiple_var_declarations. + if ((yyvsp[(2) - (2)].u.decl)->as_type_declaration()) { + current_type = (yyvsp[(2) - (2)].u.decl)->as_type_declaration()->_type; + } else { + current_type = (yyvsp[(2) - (2)].u.decl)->as_type(); } - CPPType *target_type = current_type; - 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])); + push_storage_class((yyvsp[(1) - (2)].u.integer)); } -#line 4496 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 72: -#line 1006 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 993 "dtool/src/cppparser/cppBison.yxx" { - if (current_storage_class & CPPInstance::SC_const) { - (yyvsp[-3].u.inst_ident)->add_modifier(IIT_const); - } - CPPType *target_type = current_type; - 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])); + pop_storage_class(); } -#line 4509 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 73: -#line 1020 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 997 "dtool/src/cppparser/cppBison.yxx" { - push_scope((yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope)); + if ((yyvsp[(2) - (3)].u.instance) != (CPPDeclaration *)NULL) { + CPPInstance *inst = (yyvsp[(2) - (3)].u.instance)->as_instance(); + if (inst != (CPPInstance *)NULL) { + inst->_storage_class |= (current_storage_class | (yyvsp[(1) - (3)].u.integer)); + current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[(2) - (3)])); + CPPTypedefType *typedef_type = new CPPTypedefType(inst->_type, inst->_ident, current_scope); + current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, (yylsp[(2) - (3)])); + } + } } -#line 4517 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 74: -#line 1024 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1012 "dtool/src/cppparser/cppBison.yxx" { - CPPType *type; - if ((yyvsp[-5].u.identifier)->get_simple_name() == current_scope->get_simple_name() || - (yyvsp[-5].u.identifier)->get_simple_name() == string("~") + current_scope->get_simple_name()) { - // This is a constructor, and has no return. - type = new CPPSimpleType(CPPSimpleType::T_void); - } else { - // This isn't a constructor, so it has an implicit return type of - // int. - yywarning("function has no return type, assuming int", (yylsp[-5])); - type = new CPPSimpleType(CPPSimpleType::T_int); + if (current_storage_class & CPPInstance::SC_const) { + (yyvsp[(1) - (2)].u.inst_ident)->add_modifier(IIT_const); } - pop_scope(); - - CPPInstanceIdentifier *ii = new CPPInstanceIdentifier((yyvsp[-5].u.identifier)); - ii->add_func_modifier((yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); - - (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-5]).file); + CPPType *target_type = current_type; + CPPTypedefType *typedef_type = new CPPTypedefType(target_type, (yyvsp[(1) - (2)].u.inst_ident), current_scope, (yylsp[(1) - (2)]).file); + current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, (yylsp[(1) - (2)])); } -#line 4541 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 75: -#line 1044 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1021 "dtool/src/cppparser/cppBison.yxx" { - push_scope((yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope)); + if (current_storage_class & CPPInstance::SC_const) { + (yyvsp[(1) - (4)].u.inst_ident)->add_modifier(IIT_const); + } + CPPType *target_type = current_type; + CPPTypedefType *typedef_type = new CPPTypedefType(target_type, (yyvsp[(1) - (4)].u.inst_ident), current_scope, (yylsp[(1) - (4)]).file); + current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, (yylsp[(1) - (4)])); } -#line 4549 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 76: -#line 1048 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1035 "dtool/src/cppparser/cppBison.yxx" + { + push_scope((yyvsp[(1) - (2)].u.identifier)->get_scope(current_scope, global_scope)); +} + break; + + case 77: +/* Line 1792 of yacc.c */ +#line 1039 "dtool/src/cppparser/cppBison.yxx" + { + CPPType *type; + if ((yyvsp[(1) - (6)].u.identifier)->get_simple_name() == current_scope->get_simple_name() || + (yyvsp[(1) - (6)].u.identifier)->get_simple_name() == string("~") + current_scope->get_simple_name()) { + // This is a constructor, and has no return. + type = new CPPSimpleType(CPPSimpleType::T_void); + } else { + // This isn't a constructor, so it has an implicit return type of + // int. + yywarning("function has no return type, assuming int", (yylsp[(1) - (6)])); + type = new CPPSimpleType(CPPSimpleType::T_int); + } + pop_scope(); + + CPPInstanceIdentifier *ii = new CPPInstanceIdentifier((yyvsp[(1) - (6)].u.identifier)); + ii->add_func_modifier((yyvsp[(4) - (6)].u.param_list), (yyvsp[(6) - (6)].u.integer)); + + (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[(1) - (6)]).file); +} + break; + + case 78: +/* Line 1792 of yacc.c */ +#line 1059 "dtool/src/cppparser/cppBison.yxx" + { + push_scope((yyvsp[(1) - (2)].u.identifier)->get_scope(current_scope, global_scope)); +} + break; + + case 79: +/* Line 1792 of yacc.c */ +#line 1063 "dtool/src/cppparser/cppBison.yxx" { pop_scope(); CPPType *type; - if ((yyvsp[-5].u.identifier)->get_simple_name() == current_scope->get_simple_name()) { + if ((yyvsp[(1) - (6)].u.identifier)->get_simple_name() == current_scope->get_simple_name()) { // This is a constructor, and has no return. type = new CPPSimpleType(CPPSimpleType::T_void); } else { @@ -4562,111 +5259,111 @@ yyreduce: type = new CPPSimpleType(CPPSimpleType::T_int); } - CPPInstanceIdentifier *ii = new CPPInstanceIdentifier((yyvsp[-5].u.identifier)); - ii->add_func_modifier((yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); + CPPInstanceIdentifier *ii = new CPPInstanceIdentifier((yyvsp[(1) - (6)].u.identifier)); + ii->add_func_modifier((yyvsp[(4) - (6)].u.param_list), (yyvsp[(6) - (6)].u.integer)); - (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-5]).file); + (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[(1) - (6)]).file); } -#line 4571 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 77: -#line 1071 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 80: +/* Line 1792 of yacc.c */ +#line 1086 "dtool/src/cppparser/cppBison.yxx" { - push_scope((yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope)); + push_scope((yyvsp[(2) - (3)].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 */ + case 81: +/* Line 1792 of yacc.c */ +#line 1090 "dtool/src/cppparser/cppBison.yxx" { pop_scope(); - if ((yyvsp[-5].u.identifier)->is_scoped()) { - yyerror("Invalid destructor name: ~" + (yyvsp[-5].u.identifier)->get_fully_scoped_name(), (yylsp[-5])); + if ((yyvsp[(2) - (7)].u.identifier)->is_scoped()) { + yyerror("Invalid destructor name: ~" + (yyvsp[(2) - (7)].u.identifier)->get_fully_scoped_name(), (yylsp[(2) - (7)])); } else { CPPIdentifier *ident = - new CPPIdentifier("~" + (yyvsp[-5].u.identifier)->get_simple_name(), (yylsp[-5])); - delete (yyvsp[-5].u.identifier); + new CPPIdentifier("~" + (yyvsp[(2) - (7)].u.identifier)->get_simple_name(), (yylsp[(2) - (7)])); + delete (yyvsp[(2) - (7)].u.identifier); CPPType *type; type = new CPPSimpleType(CPPSimpleType::T_void); CPPInstanceIdentifier *ii = new CPPInstanceIdentifier(ident); - ii->add_func_modifier((yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); + ii->add_func_modifier((yyvsp[(5) - (7)].u.param_list), (yyvsp[(7) - (7)].u.integer)); - (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-5]).file); + (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[(2) - (7)]).file); } } -#line 4602 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 79: -#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); - if (type == NULL) { - yyerror(string("internal error resolving type ") + (yyvsp[-10].u.identifier)->get_fully_scoped_name(), (yylsp[-10])); - } - assert(type != NULL); - - CPPInstanceIdentifier *ii = (yyvsp[-7].u.inst_ident); - ii->add_modifier(IIT_pointer); - 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 4628 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 81: -#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 */ +/* Line 1792 of yacc.c */ +#line 1116 "dtool/src/cppparser/cppBison.yxx" { - pop_scope(); - CPPType *type = (yyvsp[-11].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); - if (type == NULL) { - yyerror(string("internal error resolving type ") + (yyvsp[-11].u.identifier)->get_fully_scoped_name(), (yylsp[-11])); - } - assert(type != NULL); - - CPPInstanceIdentifier *ii = (yyvsp[-7].u.inst_ident); - ii->add_scoped_pointer_modifier((yyvsp[-9].u.identifier)); - ii->add_func_modifier((yyvsp[-3].u.param_list), (yyvsp[-1].u.integer)); - (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-11]).file); + push_scope((yyvsp[(4) - (6)].u.inst_ident)->get_scope(current_scope, global_scope)); } -#line 4654 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 83: -#line 1139 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1120 "dtool/src/cppparser/cppBison.yxx" { - if ((yyvsp[-3].u.identifier) != NULL) { - push_scope((yyvsp[-3].u.identifier)->get_scope(current_scope, global_scope)); + pop_scope(); + CPPType *type = (yyvsp[(1) - (11)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if (type == NULL) { + yyerror(string("internal error resolving type ") + (yyvsp[(1) - (11)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (11)])); } + assert(type != NULL); + + CPPInstanceIdentifier *ii = (yyvsp[(4) - (11)].u.inst_ident); + ii->add_modifier(IIT_pointer); + ii->add_func_modifier((yyvsp[(8) - (11)].u.param_list), (yyvsp[(10) - (11)].u.integer)); + (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[(1) - (11)]).file); } -#line 4664 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 84: -#line 1145 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1134 "dtool/src/cppparser/cppBison.yxx" { - if ((yyvsp[-7].u.identifier) != NULL) { + push_scope((yyvsp[(5) - (7)].u.inst_ident)->get_scope(current_scope, global_scope)); +} + break; + + case 85: +/* Line 1792 of yacc.c */ +#line 1138 "dtool/src/cppparser/cppBison.yxx" + { + pop_scope(); + CPPType *type = (yyvsp[(1) - (12)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if (type == NULL) { + yyerror(string("internal error resolving type ") + (yyvsp[(1) - (12)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (12)])); + } + assert(type != NULL); + + CPPInstanceIdentifier *ii = (yyvsp[(5) - (12)].u.inst_ident); + ii->add_scoped_pointer_modifier((yyvsp[(3) - (12)].u.identifier)); + ii->add_func_modifier((yyvsp[(9) - (12)].u.param_list), (yyvsp[(11) - (12)].u.integer)); + (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[(1) - (12)]).file); +} + break; + + case 86: +/* Line 1792 of yacc.c */ +#line 1154 "dtool/src/cppparser/cppBison.yxx" + { + if ((yyvsp[(1) - (4)].u.identifier) != NULL) { + push_scope((yyvsp[(1) - (4)].u.identifier)->get_scope(current_scope, global_scope)); + } +} + break; + + case 87: +/* Line 1792 of yacc.c */ +#line 1160 "dtool/src/cppparser/cppBison.yxx" + { + if ((yyvsp[(1) - (8)].u.identifier) != NULL) { pop_scope(); } @@ -4679,755 +5376,772 @@ yyreduce: // We give typecast operators the name "operator typecast ", // where is a simple name of the type to be typecast. Use // the method's return type to determine the full type description. - string name = "operator typecast " + (yyvsp[-6].u.type)->get_simple_name(); - CPPIdentifier *ident = (yyvsp[-7].u.identifier); + string name = "operator typecast " + (yyvsp[(2) - (8)].u.type)->get_simple_name(); + CPPIdentifier *ident = (yyvsp[(1) - (8)].u.identifier); if (ident == NULL) { - ident = new CPPIdentifier(name, (yylsp[-6])); + ident = new CPPIdentifier(name, (yylsp[(2) - (8)])); } else { ident->add_name(name); } (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)); + (new CPPInstance((yyvsp[(2) - (8)].u.type), (yyvsp[(3) - (8)].u.inst_ident), 0, (yylsp[(3) - (8)]).file), ident, (yyvsp[(6) - (8)].u.param_list), (yyvsp[(8) - (8)].u.integer)); } -#line 4693 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 85: -#line 1170 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 88: +/* Line 1792 of yacc.c */ +#line 1185 "dtool/src/cppparser/cppBison.yxx" { - if ((yyvsp[-4].u.identifier) != NULL) { - push_scope((yyvsp[-4].u.identifier)->get_scope(current_scope, global_scope)); + if ((yyvsp[(1) - (5)].u.identifier) != NULL) { + push_scope((yyvsp[(1) - (5)].u.identifier)->get_scope(current_scope, global_scope)); } } -#line 4703 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 86: -#line 1176 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 89: +/* Line 1792 of yacc.c */ +#line 1191 "dtool/src/cppparser/cppBison.yxx" { - if ((yyvsp[-8].u.identifier) != NULL) { + if ((yyvsp[(1) - (9)].u.identifier) != NULL) { pop_scope(); } - CPPIdentifier *ident = (yyvsp[-8].u.identifier); + CPPIdentifier *ident = (yyvsp[(1) - (9)].u.identifier); if (ident == NULL) { - ident = new CPPIdentifier("operator typecast", (yylsp[-5])); + ident = new CPPIdentifier("operator typecast", (yylsp[(4) - (9)])); } else { ident->add_name("operator typecast"); } - (yyvsp[-5].u.inst_ident)->add_modifier(IIT_const); + (yyvsp[(4) - (9)].u.inst_ident)->add_modifier(IIT_const); (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)); + (new CPPInstance((yyvsp[(3) - (9)].u.type), (yyvsp[(4) - (9)].u.inst_ident), 0, (yylsp[(4) - (9)]).file), ident, (yyvsp[(7) - (9)].u.param_list), (yyvsp[(9) - (9)].u.integer)); } -#line 4723 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 87: -#line 1196 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 90: +/* Line 1792 of yacc.c */ +#line 1211 "dtool/src/cppparser/cppBison.yxx" { CPPDeclaration *decl = - (yyvsp[0].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + (yyvsp[(1) - (1)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (decl != (CPPDeclaration *)NULL) { (yyval.u.instance) = decl->as_instance(); } else { (yyval.u.instance) = (CPPInstance *)NULL; } } -#line 4737 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 88: -#line 1209 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.integer) = 0; -} -#line 4745 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 89: -#line 1213 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_const_method; -} -#line 4753 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 90: -#line 1217 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_volatile_method; -} -#line 4761 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 91: -#line 1221 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1224 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_noexcept; + (yyval.u.integer) = 0; } -#line 4769 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 92: -#line 1225 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1228 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_final; + (yyval.u.integer) = (yyvsp[(1) - (2)].u.integer) | (int)CPPFunctionType::F_const_method; } -#line 4777 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 93: -#line 1229 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1232 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_override; + (yyval.u.integer) = (yyvsp[(1) - (2)].u.integer) | (int)CPPFunctionType::F_volatile_method; } -#line 4785 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 94: -#line 1233 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1236 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_lvalue_method; + (yyval.u.integer) = (yyvsp[(1) - (2)].u.integer) | (int)CPPFunctionType::F_noexcept; } -#line 4793 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 95: -#line 1237 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1249 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_rvalue_method; + (yyval.u.integer) = (yyvsp[(1) - (2)].u.integer) | (int)CPPFunctionType::F_final; } -#line 4801 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 96: -#line 1241 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1253 "dtool/src/cppparser/cppBison.yxx" { - // Used for lambdas, currently ignored. - (yyval.u.integer) = (yyvsp[-1].u.integer); + (yyval.u.integer) = (yyvsp[(1) - (2)].u.integer) | (int)CPPFunctionType::F_override; } -#line 4810 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 97: -#line 1246 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1257 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[-3].u.integer); + (yyval.u.integer) = (yyvsp[(1) - (2)].u.integer) | (int)CPPFunctionType::F_lvalue_method; } -#line 4818 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 98: -#line 1250 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1261 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[-4].u.integer); + (yyval.u.integer) = (yyvsp[(1) - (2)].u.integer) | (int)CPPFunctionType::F_rvalue_method; } -#line 4826 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 99: -#line 1254 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1265 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.integer) = (yyvsp[-5].u.integer); + // Used for lambdas, currently ignored. + (yyval.u.integer) = (yyvsp[(1) - (2)].u.integer); } -#line 4834 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 100: -#line 1265 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1270 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "!"; + // Used for lambdas in C++17, currently ignored. + (yyval.u.integer) = (yyvsp[(1) - (2)].u.integer); } -#line 4842 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 101: -#line 1269 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1275 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "~"; + (yyval.u.integer) = (yyvsp[(1) - (4)].u.integer); } -#line 4850 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 102: -#line 1273 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1279 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "*"; + (yyval.u.integer) = (yyvsp[(1) - (5)].u.integer); } -#line 4858 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 103: -#line 1277 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1283 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "/"; + (yyval.u.integer) = (yyvsp[(1) - (6)].u.integer); } -#line 4866 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 104: -#line 1281 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1287 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "%"; + (yyval.u.integer) = (yyvsp[(1) - (4)].u.integer); } -#line 4874 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 105: -#line 1285 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1294 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "+"; + (yyval.str) = "!"; } -#line 4882 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 106: -#line 1289 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1298 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "-"; + (yyval.str) = "~"; } -#line 4890 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 107: -#line 1293 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1302 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "|"; + (yyval.str) = "*"; } -#line 4898 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 108: -#line 1297 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1306 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "&"; + (yyval.str) = "/"; } -#line 4906 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 109: -#line 1301 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1310 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "^"; + (yyval.str) = "%"; } -#line 4914 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 110: -#line 1305 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1314 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "||"; + (yyval.str) = "+"; } -#line 4922 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 111: -#line 1309 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1318 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "&&"; + (yyval.str) = "-"; } -#line 4930 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 112: -#line 1313 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1322 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "=="; + (yyval.str) = "|"; } -#line 4938 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 113: -#line 1317 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1326 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "!="; + (yyval.str) = "&"; } -#line 4946 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 114: -#line 1321 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1330 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "<="; + (yyval.str) = "^"; } -#line 4954 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 115: -#line 1325 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1334 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = ">="; + (yyval.str) = "||"; } -#line 4962 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 116: -#line 1329 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1338 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "<"; + (yyval.str) = "&&"; } -#line 4970 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 117: -#line 1333 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1342 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = ">"; + (yyval.str) = "=="; } -#line 4978 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 118: -#line 1337 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1346 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "<<"; + (yyval.str) = "!="; } -#line 4986 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 119: -#line 1341 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1350 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = ">>"; + (yyval.str) = "<="; } -#line 4994 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 120: -#line 1345 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1354 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "="; + (yyval.str) = ">="; } -#line 5002 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 121: -#line 1349 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1358 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = ","; + (yyval.str) = "<"; } -#line 5010 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 122: -#line 1353 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1362 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "++"; + (yyval.str) = ">"; } -#line 5018 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 123: -#line 1357 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1366 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "--"; + (yyval.str) = "<<"; } -#line 5026 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 124: -#line 1361 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1370 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "*="; + (yyval.str) = ">>"; } -#line 5034 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 125: -#line 1365 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1374 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "/="; + (yyval.str) = "="; } -#line 5042 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 126: -#line 1369 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1378 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "%="; + (yyval.str) = ","; } -#line 5050 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 127: -#line 1373 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1382 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "+="; + (yyval.str) = "++"; } -#line 5058 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 128: -#line 1377 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1386 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "-="; + (yyval.str) = "--"; } -#line 5066 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 129: -#line 1381 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1390 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "|="; + (yyval.str) = "*="; } -#line 5074 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 130: -#line 1385 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1394 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "&="; + (yyval.str) = "/="; } -#line 5082 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 131: -#line 1389 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1398 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "^="; + (yyval.str) = "%="; } -#line 5090 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 132: -#line 1393 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1402 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "<<="; + (yyval.str) = "+="; } -#line 5098 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 133: -#line 1397 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1406 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = ">>="; + (yyval.str) = "-="; } -#line 5106 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 134: -#line 1401 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1410 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "->"; + (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 */ +/* Line 1792 of yacc.c */ +#line 1414 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "[]"; + (yyval.str) = "&="; } -#line 5122 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 136: -#line 1409 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1418 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "()"; + (yyval.str) = "^="; } -#line 5130 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 137: -#line 1413 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1422 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "new"; + (yyval.str) = "<<="; } -#line 5138 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 138: -#line 1417 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1426 "dtool/src/cppparser/cppBison.yxx" { - (yyval.str) = "delete"; + (yyval.str) = ">>="; +} + break; + + case 139: +/* Line 1792 of yacc.c */ +#line 1430 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.str) = "->"; +} + break; + + case 140: +/* Line 1792 of yacc.c */ +#line 1434 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.str) = "[]"; } -#line 5146 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 141: -#line 1429 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1438 "dtool/src/cppparser/cppBison.yxx" { - push_scope(new CPPTemplateScope(current_scope)); + (yyval.str) = "()"; } -#line 5154 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 142: -#line 1433 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1442 "dtool/src/cppparser/cppBison.yxx" { - pop_scope(); + (yyval.str) = "new"; } -#line 5162 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 146: -#line 1446 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 143: +/* Line 1792 of yacc.c */ +#line 1446 "dtool/src/cppparser/cppBison.yxx" { - CPPTemplateScope *ts = current_scope->as_template_scope(); - assert(ts != NULL); - ts->add_template_parameter((yyvsp[0].u.decl)); + (yyval.str) = "delete"; } -#line 5172 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 147: -#line 1452 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1459 "dtool/src/cppparser/cppBison.yxx" { - 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 5182 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 150: -#line 1466 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 148: +/* Line 1792 of yacc.c */ +#line 1463 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((CPPIdentifier *)NULL)); + pop_scope(); } -#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 */ +/* Line 1792 of yacc.c */ +#line 1476 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((yyvsp[-2].u.identifier), (yyvsp[0].u.type))); + CPPTemplateScope *ts = current_scope->as_template_scope(); + assert(ts != NULL); + ts->add_template_parameter((yyvsp[(1) - (1)].u.decl)); } -#line 5206 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 153: -#line 1478 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1482 "dtool/src/cppparser/cppBison.yxx" + { + CPPTemplateScope *ts = current_scope->as_template_scope(); + assert(ts != NULL); + ts->add_template_parameter((yyvsp[(3) - (3)].u.decl)); +} + break; + + case 156: +/* Line 1792 of yacc.c */ +#line 1496 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((CPPIdentifier *)NULL)); +} + break; + + case 157: +/* Line 1792 of yacc.c */ +#line 1500 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((yyvsp[(2) - (2)].u.identifier))); +} + break; + + case 158: +/* Line 1792 of yacc.c */ +#line 1504 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((yyvsp[(2) - (4)].u.identifier), (yyvsp[(4) - (4)].u.type))); +} + break; + + case 159: +/* Line 1792 of yacc.c */ +#line 1508 "dtool/src/cppparser/cppBison.yxx" { 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 5236 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 5247 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 5274 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 160: -#line 1521 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1514 "dtool/src/cppparser/cppBison.yxx" { - 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)); + CPPClassTemplateParameter *ctp = new CPPClassTemplateParameter((yyvsp[(3) - (3)].u.identifier)); + ctp->_packed = true; + (yyval.u.decl) = CPPType::new_type(ctp); } -#line 5283 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 161: -#line 1526 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1520 "dtool/src/cppparser/cppBison.yxx" { - (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); + CPPInstance *inst = new CPPInstance((yyvsp[(1) - (3)].u.type), (yyvsp[(2) - (3)].u.inst_ident), 0, (yylsp[(2) - (3)]).file); + inst->set_initializer((yyvsp[(3) - (3)].u.expr)); + (yyval.u.decl) = inst; } -#line 5295 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 162: -#line 1534 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1526 "dtool/src/cppparser/cppBison.yxx" { - (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); + (yyvsp[(3) - (4)].u.inst_ident)->add_modifier(IIT_const); + CPPInstance *inst = new CPPInstance((yyvsp[(2) - (4)].u.type), (yyvsp[(3) - (4)].u.inst_ident), 0, (yylsp[(3) - (4)]).file); + inst->set_initializer((yyvsp[(4) - (4)].u.expr)); + (yyval.u.decl) = inst; } -#line 5307 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 163: -#line 1546 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1533 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); + CPPInstance *inst = new CPPInstance((yyvsp[(1) - (2)].u.type), (yyvsp[(2) - (2)].u.inst_ident), 0, (yylsp[(2) - (2)]).file); + (yyval.u.decl) = inst; } -#line 5315 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 164: -#line 1550 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1538 "dtool/src/cppparser/cppBison.yxx" + { + (yyvsp[(3) - (3)].u.inst_ident)->add_modifier(IIT_const); + CPPInstance *inst = new CPPInstance((yyvsp[(2) - (3)].u.type), (yyvsp[(3) - (3)].u.inst_ident), 0, (yylsp[(3) - (3)]).file); + (yyval.u.decl) = inst; +} + break; + + case 165: +/* Line 1792 of yacc.c */ +#line 1547 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.type) = CPPType::new_type((yyvsp[(1) - (1)].u.simple_type)); +} + break; + + case 166: +/* Line 1792 of yacc.c */ +#line 1551 "dtool/src/cppparser/cppBison.yxx" + { + yywarning("Not a type: " + (yyvsp[(1) - (1)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (1)])); + (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_unknown)); +} + break; + + case 167: +/* Line 1792 of yacc.c */ +#line 1556 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.type) = (yyvsp[(1) - (1)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if ((yyval.u.type) == NULL) { + yyerror(string("internal error resolving type ") + (yyvsp[(1) - (1)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (1)])); + } + assert((yyval.u.type) != NULL); +} + break; + + case 168: +/* Line 1792 of yacc.c */ +#line 1564 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.type) = (yyvsp[(1) - (1)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if ((yyval.u.type) == NULL) { + yyerror(string("internal error resolving type ") + (yyvsp[(1) - (1)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (1)])); + } + assert((yyval.u.type) != NULL); +} + break; + + case 169: +/* Line 1792 of yacc.c */ +#line 1576 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[(1) - (1)].u.identifier)); +} + break; + + case 170: +/* Line 1792 of yacc.c */ +#line 1580 "dtool/src/cppparser/cppBison.yxx" { // For an operator function. We implement this simply by building a // ficticious name for the function; in other respects it's just // like a regular function. - CPPIdentifier *ident = (yyvsp[-1].u.identifier); + CPPIdentifier *ident = (yyvsp[(1) - (2)].u.identifier); if (ident == NULL) { - ident = new CPPIdentifier("operator "+(yyvsp[0].str), (yylsp[0])); + ident = new CPPIdentifier("operator "+(yyvsp[(2) - (2)].str), (yylsp[(2) - (2)])); } else { - ident->_names.push_back("operator "+(yyvsp[0].str)); + ident->_names.push_back("operator "+(yyvsp[(2) - (2)].str)); } (yyval.u.inst_ident) = new CPPInstanceIdentifier(ident); } -#line 5333 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 165: -#line 1564 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - // A C++11 literal operator. - if (!(yyvsp[-1].str).empty()) { - yyerror("expected empty string", (yylsp[-1])); - } - CPPIdentifier *ident = (yyvsp[-2].u.identifier); - if (ident == NULL) { - ident = new CPPIdentifier("operator \"\" "+(yyvsp[0].u.identifier)->get_simple_name(), (yylsp[0])); - } else { - ident->_names.push_back("operator \"\" "+(yyvsp[0].u.identifier)->get_simple_name()); - } - - (yyval.u.inst_ident) = new CPPInstanceIdentifier(ident); -} -#line 5352 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 5361 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 5370 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 5379 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 5388 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 5397 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 171: -#line 1604 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1594 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier)); + // A C++11 literal operator. + if (!(yyvsp[(2) - (3)].str).empty()) { + yyerror("expected empty string", (yylsp[(2) - (3)])); + } + CPPIdentifier *ident = (yyvsp[(1) - (3)].u.identifier); + if (ident == NULL) { + ident = new CPPIdentifier("operator \"\" "+(yyvsp[(3) - (3)].u.identifier)->get_simple_name(), (yylsp[(3) - (3)])); + } else { + ident->_names.push_back("operator \"\" "+(yyvsp[(3) - (3)].u.identifier)->get_simple_name()); + } + + (yyval.u.inst_ident) = new CPPInstanceIdentifier(ident); } -#line 5406 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 172: -#line 1609 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1609 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident); - (yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr)); + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_const); } -#line 5415 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 173: -#line 1614 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1614 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_paren); + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_volatile); } -#line 5424 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 174: -#line 1619 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1619 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_pointer); +} + break; + + case 175: +/* Line 1792 of yacc.c */ +#line 1624 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_reference); +} + break; + + case 176: +/* Line 1792 of yacc.c */ +#line 1629 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); +} + break; + + case 177: +/* Line 1792 of yacc.c */ +#line 1634 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.inst_ident) = (yyvsp[(3) - (3)].u.inst_ident); + (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[(1) - (3)].u.identifier)); +} + break; + + case 178: +/* Line 1792 of yacc.c */ +#line 1639 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.inst_ident) = (yyvsp[(1) - (4)].u.inst_ident); + (yyval.u.inst_ident)->add_array_modifier((yyvsp[(3) - (4)].u.expr)); +} + break; + + case 179: +/* Line 1792 of yacc.c */ +#line 1644 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.inst_ident) = (yyvsp[(2) - (3)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_paren); +} + break; + + case 180: +/* Line 1792 of yacc.c */ +#line 1649 "dtool/src/cppparser/cppBison.yxx" { // Create a scope for this function (in case it is a function) - CPPScope *scope = new CPPScope((yyvsp[-1].u.inst_ident)->get_scope(current_scope, global_scope), + CPPScope *scope = new CPPScope((yyvsp[(1) - (2)].u.inst_ident)->get_scope(current_scope, global_scope), CPPNameComponent(""), V_private); // It still needs to be able to pick up any template arguments, if this is @@ -5437,3665 +6151,3837 @@ yyreduce: push_scope(scope); } -#line 5432 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 175: -#line 1623 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 181: +/* Line 1792 of yacc.c */ +#line 1662 "dtool/src/cppparser/cppBison.yxx" { pop_scope(); - (yyval.u.inst_ident) = (yyvsp[-5].u.inst_ident); - if ((yyvsp[-2].u.param_list)->is_parameter_expr() && (yyvsp[0].u.integer) == 0) { + (yyval.u.inst_ident) = (yyvsp[(1) - (6)].u.inst_ident); + if ((yyvsp[(4) - (6)].u.param_list)->is_parameter_expr() && (yyvsp[(6) - (6)].u.integer) == 0) { // Oops, this must have been an instance declaration with a // parameter list, not a function prototype. - (yyval.u.inst_ident)->add_initializer_modifier((yyvsp[-2].u.param_list)); + (yyval.u.inst_ident)->add_initializer_modifier((yyvsp[(4) - (6)].u.param_list)); } else { // This was (probably) a function prototype. - (yyval.u.inst_ident)->add_func_modifier((yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); + (yyval.u.inst_ident)->add_func_modifier((yyvsp[(4) - (6)].u.param_list), (yyvsp[(6) - (6)].u.integer)); } } -#line 5450 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 176: -#line 1641 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 182: +/* Line 1792 of yacc.c */ +#line 1680 "dtool/src/cppparser/cppBison.yxx" { // 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 // order to avoid shift/reduce conflicts. - if ((yyvsp[0].u.type) != NULL) { - (yyvsp[-1].u.inst_ident)->add_trailing_return_type((yyvsp[0].u.type)); + if ((yyvsp[(2) - (2)].u.type) != NULL) { + (yyvsp[(1) - (2)].u.inst_ident)->add_trailing_return_type((yyvsp[(2) - (2)].u.type)); } - (yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident); + (yyval.u.inst_ident) = (yyvsp[(1) - (2)].u.inst_ident); } -#line 5464 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 5474 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 178: -#line 1661 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.type) = NULL; -} -#line 5482 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 5490 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 5499 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 181: -#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 */ +/* Line 1792 of yacc.c */ +#line 1690 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.param_list) = (yyvsp[0].u.param_list); + // Bitfield definition. + (yyvsp[(1) - (3)].u.inst_ident)->_bit_width = (yyvsp[(3) - (3)].u.integer); + (yyval.u.inst_ident) = (yyvsp[(1) - (3)].u.inst_ident); } -#line 5524 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 184: -#line 1691 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1700 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.param_list) = (yyvsp[-2].u.param_list); - (yyval.u.param_list)->_includes_ellipsis = true; + (yyval.u.type) = NULL; } -#line 5533 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 185: -#line 1696 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1704 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.param_list) = (yyvsp[-1].u.param_list); - (yyval.u.param_list)->_includes_ellipsis = true; + (yyval.u.type) = (yyvsp[(3) - (3)].u.inst_ident)->unroll_type((yyvsp[(2) - (3)].u.type)); } -#line 5542 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 186: -#line 1704 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1708 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.param_list) = new CPPParameterList; - (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); + (yyvsp[(4) - (4)].u.inst_ident)->add_modifier(IIT_const); + (yyval.u.type) = (yyvsp[(4) - (4)].u.inst_ident)->unroll_type((yyvsp[(3) - (4)].u.type)); } -#line 5551 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 187: -#line 1709 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1717 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.param_list) = (yyvsp[-2].u.param_list); - (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); + (yyval.u.param_list) = new CPPParameterList; } -#line 5560 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 188: -#line 1717 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1721 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.param_list) = new CPPParameterList; + (yyval.u.param_list)->_includes_ellipsis = true; } -#line 5568 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 189: -#line 1721 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1726 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.param_list) = new CPPParameterList; - (yyval.u.param_list)->_includes_ellipsis = true; + (yyval.u.param_list) = (yyvsp[(1) - (1)].u.param_list); } -#line 5577 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 190: -#line 1726 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1730 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.param_list) = (yyvsp[0].u.param_list); + (yyval.u.param_list) = (yyvsp[(1) - (3)].u.param_list); + (yyval.u.param_list)->_includes_ellipsis = true; } -#line 5585 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 191: -#line 1730 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1735 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.param_list) = (yyvsp[-2].u.param_list); + (yyval.u.param_list) = (yyvsp[(1) - (2)].u.param_list); (yyval.u.param_list)->_includes_ellipsis = true; } -#line 5594 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 192: -#line 1735 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1743 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.param_list) = (yyvsp[-1].u.param_list); - (yyval.u.param_list)->_includes_ellipsis = true; + (yyval.u.param_list) = new CPPParameterList; + (yyval.u.param_list)->_parameters.push_back((yyvsp[(1) - (1)].u.instance)); } -#line 5603 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 193: -#line 1743 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1748 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.param_list) = new CPPParameterList; - (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); + (yyval.u.param_list) = (yyvsp[(1) - (3)].u.param_list); + (yyval.u.param_list)->_parameters.push_back((yyvsp[(3) - (3)].u.instance)); } -#line 5612 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 194: -#line 1748 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1756 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.param_list) = (yyvsp[-2].u.param_list); - (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); + (yyval.u.param_list) = new CPPParameterList; } -#line 5621 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 195: -#line 1756 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1760 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = (CPPExpression *)NULL; + (yyval.u.param_list) = new CPPParameterList; + (yyval.u.param_list)->_includes_ellipsis = true; } -#line 5629 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 196: -#line 1760 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1765 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = (yyvsp[0].u.expr); + (yyval.u.param_list) = (yyvsp[(1) - (1)].u.param_list); } -#line 5637 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 197: -#line 1767 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1769 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = (CPPExpression *)NULL; + (yyval.u.param_list) = (yyvsp[(1) - (3)].u.param_list); + (yyval.u.param_list)->_includes_ellipsis = true; } -#line 5645 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 198: -#line 1771 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1774 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = (yyvsp[0].u.expr); + (yyval.u.param_list) = (yyvsp[(1) - (2)].u.param_list); + (yyval.u.param_list)->_includes_ellipsis = true; } -#line 5653 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 199: -#line 1778 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1782 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = (CPPExpression *)NULL; + (yyval.u.param_list) = new CPPParameterList; + (yyval.u.param_list)->_parameters.push_back((yyvsp[(1) - (1)].u.instance)); } -#line 5661 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 200: -#line 1782 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1787 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = (CPPExpression *)NULL; + (yyval.u.param_list) = (yyvsp[(1) - (3)].u.param_list); + (yyval.u.param_list)->_parameters.push_back((yyvsp[(3) - (3)].u.instance)); } -#line 5669 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 201: -#line 1786 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1795 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (CPPExpression *)NULL; } -#line 5677 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 202: -#line 1790 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1799 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(CPPExpression::get_default()); + (yyval.u.expr) = (yyvsp[(2) - (2)].u.expr); } -#line 5685 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 203: -#line 1794 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1806 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(CPPExpression::get_delete()); + (yyval.u.expr) = (CPPExpression *)NULL; } -#line 5693 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 204: -#line 1801 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1810 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = (CPPExpression *)NULL; + (yyval.u.expr) = (yyvsp[(2) - (2)].u.expr); } -#line 5701 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 205: -#line 1805 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1817 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (CPPExpression *)NULL; } -#line 5709 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 206: -#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 */ +/* Line 1792 of yacc.c */ +#line 1821 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = (CPPExpression *)NULL; } -#line 5741 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 207: +/* Line 1792 of yacc.c */ +#line 1825 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (CPPExpression *)NULL; +} + break; + + case 208: +/* Line 1792 of yacc.c */ +#line 1829 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::get_default()); +} + break; + + case 209: +/* Line 1792 of yacc.c */ +#line 1833 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::get_delete()); +} + break; + + case 210: +/* Line 1792 of yacc.c */ +#line 1840 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (CPPExpression *)NULL; +} + break; + + case 211: +/* Line 1792 of yacc.c */ +#line 1844 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (CPPExpression *)NULL; +} + break; + + case 212: +/* Line 1792 of yacc.c */ +#line 1848 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (yyvsp[(2) - (3)].u.expr); +} break; case 213: -#line 1834 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1852 "dtool/src/cppparser/cppBison.yxx" { + (yyval.u.expr) = new CPPExpression(CPPExpression::get_default()); } -#line 5748 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 217: -#line 1843 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 214: +/* Line 1792 of yacc.c */ +#line 1856 "dtool/src/cppparser/cppBison.yxx" { - (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)); + (yyval.u.expr) = new CPPExpression(CPPExpression::get_delete()); } -#line 5757 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 218: -#line 1848 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 215: +/* Line 1792 of yacc.c */ +#line 1860 "dtool/src/cppparser/cppBison.yxx" { - (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)); + (yyval.u.expr) = (CPPExpression *)NULL; } -#line 5767 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 219: -#line 1854 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1873 "dtool/src/cppparser/cppBison.yxx" { - (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 5777 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 */ +/* Line 1792 of yacc.c */ +#line 1882 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.instance) = (yyvsp[0].u.instance); + (yyval.u.instance) = new CPPInstance((yyvsp[(1) - (3)].u.type), (yyvsp[(2) - (3)].u.inst_ident), 0, (yylsp[(2) - (3)]).file); + (yyval.u.instance)->set_initializer((yyvsp[(3) - (3)].u.expr)); } -#line 5814 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 224: -#line 1888 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1887 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.instance) = (yyvsp[0].u.instance); + (yyvsp[(3) - (4)].u.inst_ident)->add_modifier(IIT_const); + (yyval.u.instance) = new CPPInstance((yyvsp[(2) - (4)].u.type), (yyvsp[(3) - (4)].u.inst_ident), 0, (yylsp[(3) - (4)]).file); + (yyval.u.instance)->set_initializer((yyvsp[(4) - (4)].u.expr)); } -#line 5822 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 225: -#line 1892 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1893 "dtool/src/cppparser/cppBison.yxx" + { + (yyvsp[(4) - (5)].u.inst_ident)->add_modifier(IIT_const); + (yyval.u.instance) = new CPPInstance((yyvsp[(3) - (5)].u.type), (yyvsp[(4) - (5)].u.inst_ident), 0, (yylsp[(3) - (5)]).file); + (yyval.u.instance)->set_initializer((yyvsp[(5) - (5)].u.expr)); +} + break; + + case 226: +/* Line 1792 of yacc.c */ +#line 1899 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.instance) = new CPPInstance((yyvsp[(1) - (3)].u.type), (yyvsp[(2) - (3)].u.inst_ident), 0, (yylsp[(2) - (3)]).file); + (yyval.u.instance)->set_initializer((yyvsp[(3) - (3)].u.expr)); +} + break; + + case 227: +/* Line 1792 of yacc.c */ +#line 1904 "dtool/src/cppparser/cppBison.yxx" + { + (yyvsp[(3) - (4)].u.inst_ident)->add_modifier(IIT_const); + (yyval.u.instance) = new CPPInstance((yyvsp[(2) - (4)].u.type), (yyvsp[(3) - (4)].u.inst_ident), 0, (yylsp[(3) - (4)]).file); + (yyval.u.instance)->set_initializer((yyvsp[(4) - (4)].u.expr)); +} + break; + + case 228: +/* Line 1792 of yacc.c */ +#line 1910 "dtool/src/cppparser/cppBison.yxx" + { + (yyvsp[(4) - (5)].u.inst_ident)->add_modifier(IIT_const); + (yyval.u.instance) = new CPPInstance((yyvsp[(3) - (5)].u.type), (yyvsp[(4) - (5)].u.inst_ident), 0, (yylsp[(3) - (5)]).file); + (yyval.u.instance)->set_initializer((yyvsp[(5) - (5)].u.expr)); +} + break; + + case 229: +/* Line 1792 of yacc.c */ +#line 1916 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.instance) = (yyvsp[(2) - (2)].u.instance); +} + break; + + case 230: +/* Line 1792 of yacc.c */ +#line 1920 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.instance) = (yyvsp[(4) - (4)].u.instance); +} + break; + + case 231: +/* Line 1792 of yacc.c */ +#line 1931 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.instance) = (yyvsp[(1) - (1)].u.instance); +} + break; + + case 232: +/* Line 1792 of yacc.c */ +#line 1935 "dtool/src/cppparser/cppBison.yxx" { 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)); + (yyval.u.instance)->set_initializer((yyvsp[(1) - (1)].u.expr)); } -#line 5833 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 226: -#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 5885 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 5894 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 233: -#line 1935 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1945 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier)); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); } -#line 5903 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 234: -#line 1940 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1949 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident); - (yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr)); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[(1) - (1)].u.identifier)); } -#line 5912 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 235: -#line 1948 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1953 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_const); } -#line 5920 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 236: -#line 1952 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1958 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_volatile); } -#line 5928 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 237: -#line 1956 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1963 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_const); + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_pointer); } -#line 5937 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 238: -#line 1961 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1968 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_volatile); + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_reference); } -#line 5946 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 239: -#line 1966 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1973 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_pointer); + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } -#line 5955 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 240: -#line 1971 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1978 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_reference); + (yyval.u.inst_ident) = (yyvsp[(3) - (3)].u.inst_ident); + (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[(1) - (3)].u.identifier)); } -#line 5964 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 241: -#line 1976 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1983 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); + (yyval.u.inst_ident) = (yyvsp[(1) - (4)].u.inst_ident); + (yyval.u.inst_ident)->add_array_modifier((yyvsp[(3) - (4)].u.expr)); } -#line 5973 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 242: -#line 1981 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1991 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier)); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); } -#line 5982 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 243: -#line 1986 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1995 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident); - (yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr)); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[(1) - (1)].u.identifier)); } -#line 5991 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 244: -#line 1991 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 1999 "dtool/src/cppparser/cppBison.yxx" { - (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)); + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_const); } -#line 6001 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 245: -#line 1997 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2004 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_paren); + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_volatile); } -#line 6010 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 246: -#line 2005 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2009 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); - (yyval.u.inst_ident)->_packed = true; + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_pointer); } -#line 6019 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 247: -#line 2010 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2014 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); - (yyval.u.inst_ident)->_packed = true; + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_reference); } -#line 6028 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 248: -#line 2015 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2019 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_const); + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } -#line 6037 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 249: -#line 2020 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2024 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_volatile); + (yyval.u.inst_ident) = (yyvsp[(3) - (3)].u.inst_ident); + (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[(1) - (3)].u.identifier)); } -#line 6046 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 250: -#line 2025 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2029 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_pointer); + (yyval.u.inst_ident) = (yyvsp[(1) - (4)].u.inst_ident); + (yyval.u.inst_ident)->add_array_modifier((yyvsp[(3) - (4)].u.expr)); } -#line 6055 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 251: -#line 2030 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2034 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_reference); + (yyval.u.inst_ident) = (yyvsp[(2) - (7)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_paren); + (yyval.u.inst_ident)->add_func_modifier((yyvsp[(5) - (7)].u.param_list), (yyvsp[(7) - (7)].u.integer)); } -#line 6064 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 252: -#line 2035 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2040 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); + (yyval.u.inst_ident) = (yyvsp[(2) - (3)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_paren); } -#line 6073 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 253: -#line 2040 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2048 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier)); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); + (yyval.u.inst_ident)->_packed = true; } -#line 6082 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 254: -#line 2045 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2053 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident); - (yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr)); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[(2) - (2)].u.identifier)); + (yyval.u.inst_ident)->_packed = true; } -#line 6091 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 255: -#line 2050 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2058 "dtool/src/cppparser/cppBison.yxx" { - (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)); + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_const); } -#line 6101 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 256: -#line 2056 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2063 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_paren); + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_volatile); } -#line 6110 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 257: -#line 2064 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2068 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_pointer); } -#line 6118 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 258: -#line 2068 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2073 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); - (yyval.u.inst_ident)->_packed = true; + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_reference); } -#line 6127 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 259: -#line 2073 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2078 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); - (yyval.u.inst_ident)->_packed = true; + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } -#line 6136 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 260: -#line 2078 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2083 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_const); + (yyval.u.inst_ident) = (yyvsp[(3) - (3)].u.inst_ident); + (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[(1) - (3)].u.identifier)); } -#line 6145 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 261: -#line 2083 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2088 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_volatile); + (yyval.u.inst_ident) = (yyvsp[(1) - (4)].u.inst_ident); + (yyval.u.inst_ident)->add_array_modifier((yyvsp[(3) - (4)].u.expr)); } -#line 6154 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 262: -#line 2088 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2093 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_pointer); + (yyval.u.inst_ident) = (yyvsp[(2) - (7)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_paren); + (yyval.u.inst_ident)->add_func_modifier((yyvsp[(5) - (7)].u.param_list), (yyvsp[(7) - (7)].u.integer)); } -#line 6163 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 263: -#line 2093 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2099 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_reference); + (yyval.u.inst_ident) = (yyvsp[(2) - (3)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_paren); } -#line 6172 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 264: -#line 2098 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2107 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); } -#line 6181 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 265: -#line 2103 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2111 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier)); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); + (yyval.u.inst_ident)->_packed = true; } -#line 6190 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 266: -#line 2108 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2116 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident); - (yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr)); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[(2) - (2)].u.identifier)); + (yyval.u.inst_ident)->_packed = true; } -#line 6199 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 267: -#line 2116 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2121 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_const); } -#line 6207 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 268: -#line 2120 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2126 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); - (yyval.u.inst_ident)->_packed = true; + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_volatile); } -#line 6216 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 269: -#line 2125 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2131 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); - (yyval.u.inst_ident)->_packed = true; + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_pointer); } -#line 6225 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 270: -#line 2130 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2136 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_const); + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_reference); } -#line 6234 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 271: -#line 2135 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2141 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_volatile); + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } -#line 6243 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 272: -#line 2140 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2146 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_pointer); + (yyval.u.inst_ident) = (yyvsp[(3) - (3)].u.inst_ident); + (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[(1) - (3)].u.identifier)); } -#line 6252 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 273: -#line 2145 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2151 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_reference); + (yyval.u.inst_ident) = (yyvsp[(1) - (4)].u.inst_ident); + (yyval.u.inst_ident)->add_array_modifier((yyvsp[(3) - (4)].u.expr)); } -#line 6261 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 274: -#line 2150 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2159 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); } -#line 6270 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 275: -#line 2155 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2163 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); - (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier)); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); + (yyval.u.inst_ident)->_packed = true; } -#line 6279 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 276: -#line 2160 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2168 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident); - (yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr)); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[(2) - (2)].u.identifier)); + (yyval.u.inst_ident)->_packed = true; } -#line 6288 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 277: -#line 2165 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2173 "dtool/src/cppparser/cppBison.yxx" { - (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)); + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_const); } -#line 6298 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 278: -#line 2171 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2178 "dtool/src/cppparser/cppBison.yxx" { - (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)); + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_volatile); } -#line 6309 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 279: -#line 2178 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2183 "dtool/src/cppparser/cppBison.yxx" { - (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)); + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_pointer); } -#line 6320 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 280: -#line 2185 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2188 "dtool/src/cppparser/cppBison.yxx" { - (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)); + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_reference); } -#line 6331 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 281: -#line 2195 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2193 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); + (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } -#line 6339 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 282: -#line 2199 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2198 "dtool/src/cppparser/cppBison.yxx" { - (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); + (yyval.u.inst_ident) = (yyvsp[(3) - (3)].u.inst_ident); + (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[(1) - (3)].u.identifier)); } -#line 6351 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 283: -#line 2207 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2203 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); + (yyval.u.inst_ident) = (yyvsp[(1) - (4)].u.inst_ident); + (yyval.u.inst_ident)->add_array_modifier((yyvsp[(3) - (4)].u.expr)); } -#line 6359 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 284: -#line 2211 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2208 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.type) = CPPType::new_type((yyvsp[0].u.struct_type)); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); + (yyval.u.inst_ident)->add_modifier(IIT_paren); + (yyval.u.inst_ident)->add_func_modifier((yyvsp[(2) - (5)].u.param_list), (yyvsp[(4) - (5)].u.integer), (yyvsp[(5) - (5)].u.type)); } -#line 6367 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 285: -#line 2215 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2214 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.type) = CPPType::new_type((yyvsp[0].u.struct_type)); + (yyval.u.inst_ident) = (yyvsp[(3) - (9)].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[(6) - (9)].u.param_list), (yyvsp[(8) - (9)].u.integer), (yyvsp[(9) - (9)].u.type)); } -#line 6375 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 286: -#line 2219 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2221 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.type) = CPPType::new_type((yyvsp[0].u.enum_type)); + (yyval.u.inst_ident) = (yyvsp[(3) - (9)].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[(6) - (9)].u.param_list), (yyvsp[(8) - (9)].u.integer), (yyvsp[(9) - (9)].u.type)); } -#line 6383 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 287: -#line 2223 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2228 "dtool/src/cppparser/cppBison.yxx" { - CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); - if (type != NULL) { - (yyval.u.type) = type; - } else { - CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType((yyvsp[-1].u.extension_enum), (yyvsp[0].u.identifier), current_scope, (yylsp[-1]).file)) - ->as_extension_type(); - CPPScope *scope = (yyvsp[0].u.identifier)->get_scope(current_scope, global_scope); - if (scope != NULL) { - scope->define_extension_type(et); - } - (yyval.u.type) = et; - } + (yyval.u.inst_ident) = (yyvsp[(3) - (9)].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[(6) - (9)].u.param_list), (yyvsp[(8) - (9)].u.integer), (yyvsp[(9) - (9)].u.type)); } -#line 6403 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 288: -#line 2239 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2238 "dtool/src/cppparser/cppBison.yxx" { - CPPType *type = (yyvsp[-2].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + (yyval.u.type) = CPPType::new_type((yyvsp[(1) - (1)].u.simple_type)); +} + break; + + case 289: +/* Line 1792 of yacc.c */ +#line 2242 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.type) = (yyvsp[(1) - (1)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if ((yyval.u.type) == NULL) { + yyerror(string("internal error resolving type ") + (yyvsp[(1) - (1)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (1)])); + } + assert((yyval.u.type) != NULL); +} + break; + + case 290: +/* Line 1792 of yacc.c */ +#line 2250 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[(2) - (2)].u.identifier))); +} + break; + + case 291: +/* Line 1792 of yacc.c */ +#line 2254 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.type) = CPPType::new_type((yyvsp[(1) - (1)].u.struct_type)); +} + break; + + case 292: +/* Line 1792 of yacc.c */ +#line 2258 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.type) = CPPType::new_type((yyvsp[(1) - (1)].u.struct_type)); +} + break; + + case 293: +/* Line 1792 of yacc.c */ +#line 2262 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.type) = CPPType::new_type((yyvsp[(1) - (1)].u.enum_type)); +} + break; + + case 294: +/* Line 1792 of yacc.c */ +#line 2266 "dtool/src/cppparser/cppBison.yxx" + { + CPPType *type = (yyvsp[(3) - (3)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != NULL) { (yyval.u.type) = type; } else { CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType((yyvsp[-3].u.extension_enum), (yyvsp[-2].u.identifier), current_scope, (yylsp[-3]).file)) + CPPType::new_type(new CPPExtensionType((yyvsp[(1) - (3)].u.extension_enum), (yyvsp[(3) - (3)].u.identifier), current_scope, (yylsp[(1) - (3)]).file)) ->as_extension_type(); - CPPScope *scope = (yyvsp[-2].u.identifier)->get_scope(current_scope, global_scope); + CPPScope *scope = (yyvsp[(3) - (3)].u.identifier)->get_scope(current_scope, global_scope); if (scope != NULL) { scope->define_extension_type(et); } (yyval.u.type) = et; } } -#line 6423 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 289: -#line 2255 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 295: +/* Line 1792 of yacc.c */ +#line 2282 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.type) = (yyvsp[-1].u.expr)->determine_type(); - if ((yyval.u.type) == (CPPType *)NULL) { - stringstream str; - str << *(yyvsp[-1].u.expr); - yyerror("could not determine type of " + str.str(), (yylsp[-1])); + CPPType *type = (yyvsp[(2) - (4)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if (type != NULL) { + (yyval.u.type) = type; + } else { + CPPExtensionType *et = + CPPType::new_type(new CPPExtensionType((yyvsp[(1) - (4)].u.extension_enum), (yyvsp[(2) - (4)].u.identifier), current_scope, (yylsp[(1) - (4)]).file)) + ->as_extension_type(); + CPPScope *scope = (yyvsp[(2) - (4)].u.identifier)->get_scope(current_scope, global_scope); + if (scope != NULL) { + scope->define_extension_type(et); + } + (yyval.u.type) = et; } } -#line 6436 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 290: -#line 2264 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 296: +/* Line 1792 of yacc.c */ +#line 2298 "dtool/src/cppparser/cppBison.yxx" { - CPPEnumType *enum_type = (yyvsp[-1].u.type)->as_enum_type(); + (yyval.u.type) = (yyvsp[(3) - (4)].u.expr)->determine_type(); + if ((yyval.u.type) == (CPPType *)NULL) { + stringstream str; + str << *(yyvsp[(3) - (4)].u.expr); + yyerror("could not determine type of " + str.str(), (yylsp[(3) - (4)])); + } +} + break; + + case 297: +/* Line 1792 of yacc.c */ +#line 2307 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); +} + break; + + case 298: +/* Line 1792 of yacc.c */ +#line 2311 "dtool/src/cppparser/cppBison.yxx" + { + CPPEnumType *enum_type = (yyvsp[(3) - (4)].u.type)->as_enum_type(); if (enum_type == NULL) { - yyerror("an enumeration type is required", (yylsp[-1])); - (yyval.u.type) = (yyvsp[-1].u.type); + yyerror("an enumeration type is required", (yylsp[(3) - (4)])); + (yyval.u.type) = (yyvsp[(3) - (4)].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 6458 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 6478 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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) { - yyerror(string("internal error resolving type ") + (yyvsp[0].u.identifier)->get_fully_scoped_name(), (yylsp[0])); - } - assert((yyval.u.decl) != NULL); -} -#line 6490 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 6498 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 296: -#line 2308 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.decl) = CPPType::new_type((yyvsp[0].u.struct_type)); -} -#line 6506 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 6514 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 6522 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 299: -#line 2320 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2321 "dtool/src/cppparser/cppBison.yxx" { - CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); - if (type != NULL) { - (yyval.u.decl) = type; - } else { - CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType((yyvsp[-1].u.extension_enum), (yyvsp[0].u.identifier), current_scope, (yylsp[-1]).file)) - ->as_extension_type(); - CPPScope *scope = (yyvsp[0].u.identifier)->get_scope(current_scope, global_scope); - if (scope != NULL) { - scope->define_extension_type(et); - } - (yyval.u.decl) = et; - } + (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } -#line 6542 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 300: -#line 2336 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2328 "dtool/src/cppparser/cppBison.yxx" { - CPPType *type = (yyvsp[-2].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); - if (type != NULL) { - (yyval.u.decl) = type; - } else { - CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType((yyvsp[-3].u.extension_enum), (yyvsp[-2].u.identifier), current_scope, (yylsp[-3]).file)) - ->as_extension_type(); - CPPScope *scope = (yyvsp[-2].u.identifier)->get_scope(current_scope, global_scope); - if (scope != NULL) { - scope->define_extension_type(et); - } - (yyval.u.decl) = et; + (yyval.u.type) = (yyvsp[(1) - (1)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if ((yyval.u.type) == NULL) { + yyerror(string("internal error resolving type ") + (yyvsp[(1) - (1)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (1)])); } + assert((yyval.u.type) != NULL); } -#line 6562 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 301: -#line 2352 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2339 "dtool/src/cppparser/cppBison.yxx" { - yywarning(string("C++ does not permit forward declaration of untyped enum ") + (yyvsp[0].u.identifier)->get_fully_scoped_name(), (yylsp[-1])); + (yyval.u.decl) = CPPType::new_type((yyvsp[(1) - (1)].u.simple_type)); +} + break; - CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + case 302: +/* Line 1792 of yacc.c */ +#line 2343 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.decl) = (yyvsp[(1) - (1)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if ((yyval.u.decl) == NULL) { + yyerror(string("internal error resolving type ") + (yyvsp[(1) - (1)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (1)])); + } + assert((yyval.u.decl) != NULL); +} + break; + + case 303: +/* Line 1792 of yacc.c */ +#line 2351 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.decl) = CPPType::new_type(new CPPTBDType((yyvsp[(2) - (2)].u.identifier))); +} + break; + + case 304: +/* Line 1792 of yacc.c */ +#line 2355 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.decl) = CPPType::new_type((yyvsp[(1) - (1)].u.struct_type)); +} + break; + + case 305: +/* Line 1792 of yacc.c */ +#line 2359 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.decl) = new CPPTypeDeclaration(CPPType::new_type((yyvsp[(1) - (1)].u.struct_type))); +} + break; + + case 306: +/* Line 1792 of yacc.c */ +#line 2363 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.decl) = new CPPTypeDeclaration(CPPType::new_type((yyvsp[(1) - (1)].u.enum_type))); +} + break; + + case 307: +/* Line 1792 of yacc.c */ +#line 2367 "dtool/src/cppparser/cppBison.yxx" + { + CPPType *type = (yyvsp[(3) - (3)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != NULL) { (yyval.u.decl) = type; } else { CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType((yyvsp[-1].u.extension_enum), (yyvsp[0].u.identifier), current_scope, (yylsp[-1]).file)) + CPPType::new_type(new CPPExtensionType((yyvsp[(1) - (3)].u.extension_enum), (yyvsp[(3) - (3)].u.identifier), current_scope, (yylsp[(1) - (3)]).file)) ->as_extension_type(); - CPPScope *scope = (yyvsp[0].u.identifier)->get_scope(current_scope, global_scope); + CPPScope *scope = (yyvsp[(3) - (3)].u.identifier)->get_scope(current_scope, global_scope); if (scope != NULL) { scope->define_extension_type(et); } (yyval.u.decl) = et; } } -#line 6584 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 302: -#line 2370 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 308: +/* Line 1792 of yacc.c */ +#line 2383 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.decl) = (yyvsp[-1].u.expr)->determine_type(); - if ((yyval.u.decl) == (CPPType *)NULL) { - stringstream str; - str << *(yyvsp[-1].u.expr); - yyerror("could not determine type of " + str.str(), (yylsp[-1])); + CPPType *type = (yyvsp[(2) - (4)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if (type != NULL) { + (yyval.u.decl) = type; + } else { + CPPExtensionType *et = + CPPType::new_type(new CPPExtensionType((yyvsp[(1) - (4)].u.extension_enum), (yyvsp[(2) - (4)].u.identifier), current_scope, (yylsp[(1) - (4)]).file)) + ->as_extension_type(); + CPPScope *scope = (yyvsp[(2) - (4)].u.identifier)->get_scope(current_scope, global_scope); + if (scope != NULL) { + scope->define_extension_type(et); + } + (yyval.u.decl) = et; } } -#line 6597 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 303: -#line 2379 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 309: +/* Line 1792 of yacc.c */ +#line 2399 "dtool/src/cppparser/cppBison.yxx" { - CPPEnumType *enum_type = (yyvsp[-1].u.type)->as_enum_type(); + yywarning(string("C++ does not permit forward declaration of untyped enum ") + (yyvsp[(2) - (2)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (2)])); + + CPPType *type = (yyvsp[(2) - (2)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if (type != NULL) { + (yyval.u.decl) = type; + } else { + CPPExtensionType *et = + CPPType::new_type(new CPPExtensionType((yyvsp[(1) - (2)].u.extension_enum), (yyvsp[(2) - (2)].u.identifier), current_scope, (yylsp[(1) - (2)]).file)) + ->as_extension_type(); + CPPScope *scope = (yyvsp[(2) - (2)].u.identifier)->get_scope(current_scope, global_scope); + if (scope != NULL) { + scope->define_extension_type(et); + } + (yyval.u.decl) = et; + } +} + break; + + case 310: +/* Line 1792 of yacc.c */ +#line 2417 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.decl) = (yyvsp[(3) - (4)].u.expr)->determine_type(); + if ((yyval.u.decl) == (CPPType *)NULL) { + stringstream str; + str << *(yyvsp[(3) - (4)].u.expr); + yyerror("could not determine type of " + str.str(), (yylsp[(3) - (4)])); + } +} + break; + + case 311: +/* Line 1792 of yacc.c */ +#line 2426 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.decl) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); +} + break; + + case 312: +/* Line 1792 of yacc.c */ +#line 2430 "dtool/src/cppparser/cppBison.yxx" + { + CPPEnumType *enum_type = (yyvsp[(3) - (4)].u.type)->as_enum_type(); if (enum_type == NULL) { - yyerror("an enumeration type is required", (yylsp[-1])); - (yyval.u.decl) = (yyvsp[-1].u.type); + yyerror("an enumeration type is required", (yylsp[(3) - (4)])); + (yyval.u.decl) = (yyvsp[(3) - (4)].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 */ + case 313: +/* Line 1792 of yacc.c */ +#line 2440 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.decl) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } -#line 6619 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 305: -#line 2396 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 314: +/* Line 1792 of yacc.c */ +#line 2447 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); + (yyval.u.type) = CPPType::new_type((yyvsp[(1) - (1)].u.simple_type)); } -#line 6627 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 306: -#line 2400 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 315: +/* Line 1792 of yacc.c */ +#line 2451 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.type) = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + (yyval.u.type) = (yyvsp[(1) - (1)].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])); + yyerror(string("internal error resolving type ") + (yyvsp[(1) - (1)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (1)])); } assert((yyval.u.type) != NULL); } -#line 6639 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 307: -#line 2408 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 316: +/* Line 1792 of yacc.c */ +#line 2459 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); + (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[(2) - (2)].u.identifier))); } -#line 6647 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 308: -#line 2412 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 317: +/* Line 1792 of yacc.c */ +#line 2463 "dtool/src/cppparser/cppBison.yxx" { - CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + CPPType *type = (yyvsp[(3) - (3)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != NULL) { (yyval.u.type) = type; } else { CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType((yyvsp[-1].u.extension_enum), (yyvsp[0].u.identifier), current_scope, (yylsp[-1]).file)) + CPPType::new_type(new CPPExtensionType((yyvsp[(1) - (3)].u.extension_enum), (yyvsp[(3) - (3)].u.identifier), current_scope, (yylsp[(1) - (3)]).file)) ->as_extension_type(); - CPPScope *scope = (yyvsp[0].u.identifier)->get_scope(current_scope, global_scope); + CPPScope *scope = (yyvsp[(3) - (3)].u.identifier)->get_scope(current_scope, global_scope); if (scope != NULL) { scope->define_extension_type(et); } (yyval.u.type) = et; } } -#line 6667 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 309: -#line 2428 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 318: +/* Line 1792 of yacc.c */ +#line 2479 "dtool/src/cppparser/cppBison.yxx" { - CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + CPPType *type = (yyvsp[(2) - (2)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != NULL) { (yyval.u.type) = type; } else { CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType((yyvsp[-1].u.extension_enum), (yyvsp[0].u.identifier), current_scope, (yylsp[-1]).file)) + CPPType::new_type(new CPPExtensionType((yyvsp[(1) - (2)].u.extension_enum), (yyvsp[(2) - (2)].u.identifier), current_scope, (yylsp[(1) - (2)]).file)) ->as_extension_type(); - CPPScope *scope = (yyvsp[0].u.identifier)->get_scope(current_scope, global_scope); + CPPScope *scope = (yyvsp[(2) - (2)].u.identifier)->get_scope(current_scope, global_scope); if (scope != NULL) { scope->define_extension_type(et); } (yyval.u.type) = et; } } -#line 6687 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 310: -#line 2444 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 319: +/* Line 1792 of yacc.c */ +#line 2495 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.type) = (yyvsp[-1].u.expr)->determine_type(); + (yyval.u.type) = (yyvsp[(3) - (4)].u.expr)->determine_type(); if ((yyval.u.type) == (CPPType *)NULL) { stringstream str; - str << *(yyvsp[-1].u.expr); - yyerror("could not determine type of " + str.str(), (yylsp[-1])); + str << *(yyvsp[(3) - (4)].u.expr); + yyerror("could not determine type of " + str.str(), (yylsp[(3) - (4)])); } } -#line 6700 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 311: -#line 2453 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 320: +/* Line 1792 of yacc.c */ +#line 2504 "dtool/src/cppparser/cppBison.yxx" { - CPPEnumType *enum_type = (yyvsp[-1].u.type)->as_enum_type(); + CPPEnumType *enum_type = (yyvsp[(3) - (4)].u.type)->as_enum_type(); if (enum_type == NULL) { - yyerror("an enumeration type is required", (yylsp[-1])); - (yyval.u.type) = (yyvsp[-1].u.type); + yyerror("an enumeration type is required", (yylsp[(3) - (4)])); + (yyval.u.type) = (yyvsp[(3) - (4)].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 */ + case 321: +/* Line 1792 of yacc.c */ +#line 2514 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } -#line 6722 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 313: -#line 2470 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 322: +/* Line 1792 of yacc.c */ +#line 2521 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.decl) = (yyvsp[0].u.decl); + (yyval.u.decl) = (yyvsp[(1) - (1)].u.decl); } -#line 6730 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 314: -#line 2474 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 323: +/* Line 1792 of yacc.c */ +#line 2525 "dtool/src/cppparser/cppBison.yxx" { - yyerror(string("unknown type '") + (yyvsp[0].u.identifier)->get_fully_scoped_name() + "'", (yylsp[0])); + yyerror(string("unknown type '") + (yyvsp[(1) - (1)].u.identifier)->get_fully_scoped_name() + "'", (yylsp[(1) - (1)])); (yyval.u.decl) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_unknown)); } -#line 6740 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 315: -#line 2482 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 324: +/* Line 1792 of yacc.c */ +#line 2533 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); + (yyval.u.type) = (yyvsp[(2) - (2)].u.inst_ident)->unroll_type((yyvsp[(1) - (2)].u.type)); } -#line 6748 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 316: -#line 2486 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 325: +/* Line 1792 of yacc.c */ +#line 2537 "dtool/src/cppparser/cppBison.yxx" { - (yyvsp[0].u.inst_ident)->add_modifier(IIT_const); - (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); + (yyvsp[(3) - (3)].u.inst_ident)->add_modifier(IIT_const); + (yyval.u.type) = (yyvsp[(3) - (3)].u.inst_ident)->unroll_type((yyvsp[(2) - (3)].u.type)); } -#line 6757 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 317: -#line 2491 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 326: +/* Line 1792 of yacc.c */ +#line 2542 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); + (yyval.u.type) = (yyvsp[(2) - (2)].u.inst_ident)->unroll_type((yyvsp[(1) - (2)].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 */ + case 327: +/* Line 1792 of yacc.c */ +#line 2546 "dtool/src/cppparser/cppBison.yxx" { - (yyvsp[0].u.inst_ident)->add_modifier(IIT_const); - (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); + (yyvsp[(3) - (3)].u.inst_ident)->add_modifier(IIT_const); + (yyval.u.type) = (yyvsp[(3) - (3)].u.inst_ident)->unroll_type((yyvsp[(2) - (3)].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 */ + case 332: +/* Line 1792 of yacc.c */ +#line 2561 "dtool/src/cppparser/cppBison.yxx" { CPPVisibility starting_vis = - ((yyvsp[-1].u.extension_enum) == CPPExtensionType::T_class) ? V_private : V_public; + ((yyvsp[(1) - (3)].u.extension_enum) == CPPExtensionType::T_class) ? V_private : V_public; CPPScope *new_scope = new CPPScope(current_scope, CPPNameComponent("anon"), starting_vis); - CPPStructType *st = new CPPStructType((yyvsp[-1].u.extension_enum), NULL, current_scope, - new_scope, (yylsp[-1]).file); + CPPStructType *st = new CPPStructType((yyvsp[(1) - (3)].u.extension_enum), NULL, current_scope, + new_scope, (yylsp[(1) - (3)]).file); new_scope->set_struct_type(st); push_scope(new_scope); push_struct(st); } -#line 6792 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 320: -#line 2517 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 333: +/* Line 1792 of yacc.c */ +#line 2575 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.struct_type) = current_struct; current_struct->_incomplete = false; pop_struct(); pop_scope(); } -#line 6803 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 321: -#line 2527 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 334: +/* Line 1792 of yacc.c */ +#line 2585 "dtool/src/cppparser/cppBison.yxx" { CPPVisibility starting_vis = - ((yyvsp[-1].u.extension_enum) == CPPExtensionType::T_class) ? V_private : V_public; + ((yyvsp[(1) - (3)].u.extension_enum) == CPPExtensionType::T_class) ? V_private : V_public; - CPPScope *scope = (yyvsp[0].u.identifier)->get_scope(current_scope, global_scope, current_lexer); + CPPScope *scope = (yyvsp[(3) - (3)].u.identifier)->get_scope(current_scope, global_scope, current_lexer); if (scope == NULL) { scope = current_scope; } - CPPScope *new_scope = new CPPScope(scope, (yyvsp[0].u.identifier)->_names.back(), + CPPScope *new_scope = new CPPScope(scope, (yyvsp[(3) - (3)].u.identifier)->_names.back(), starting_vis); - CPPStructType *st = new CPPStructType((yyvsp[-1].u.extension_enum), (yyvsp[0].u.identifier), current_scope, - new_scope, (yylsp[-1]).file); + CPPStructType *st = new CPPStructType((yyvsp[(1) - (3)].u.extension_enum), (yyvsp[(3) - (3)].u.identifier), current_scope, + new_scope, (yylsp[(1) - (3)]).file); new_scope->set_struct_type(st); current_scope->define_extension_type(st); push_scope(new_scope); push_struct(st); } -#line 6827 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 322: -#line 2547 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 335: +/* Line 1792 of yacc.c */ +#line 2605 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.struct_type) = current_struct; current_struct->_incomplete = false; pop_struct(); pop_scope(); } -#line 6838 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 324: -#line 2558 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - current_struct->_final = true; -} -#line 6846 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 329: -#line 2575 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - current_struct->append_derivation((yyvsp[0].u.type), V_unknown, false); -} -#line 6854 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 330: -#line 2579 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - current_struct->append_derivation((yyvsp[0].u.type), V_public, false); -} -#line 6862 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 331: -#line 2583 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - current_struct->append_derivation((yyvsp[0].u.type), V_protected, false); -} -#line 6870 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 332: -#line 2587 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - current_struct->append_derivation((yyvsp[0].u.type), V_private, false); -} -#line 6878 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 333: -#line 2591 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - current_struct->append_derivation((yyvsp[0].u.type), V_public, true); -} -#line 6886 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 334: -#line 2595 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - current_struct->append_derivation((yyvsp[0].u.type), V_protected, true); -} -#line 6894 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 335: -#line 2599 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - current_struct->append_derivation((yyvsp[0].u.type), V_private, true); -} -#line 6902 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 336: -#line 2603 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - current_struct->append_derivation((yyvsp[0].u.type), V_public, true); -} -#line 6910 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 337: -#line 2607 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2616 "dtool/src/cppparser/cppBison.yxx" { - current_struct->append_derivation((yyvsp[0].u.type), V_protected, true); + current_struct->_final = true; } -#line 6918 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 338: -#line 2611 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 342: +/* Line 1792 of yacc.c */ +#line 2633 "dtool/src/cppparser/cppBison.yxx" { - current_struct->append_derivation((yyvsp[0].u.type), V_private, true); + current_struct->append_derivation((yyvsp[(1) - (1)].u.type), V_unknown, false); } -#line 6926 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 339: -#line 2618 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 343: +/* Line 1792 of yacc.c */ +#line 2637 "dtool/src/cppparser/cppBison.yxx" + { + current_struct->append_derivation((yyvsp[(2) - (2)].u.type), V_public, false); +} + break; + + case 344: +/* Line 1792 of yacc.c */ +#line 2641 "dtool/src/cppparser/cppBison.yxx" + { + current_struct->append_derivation((yyvsp[(2) - (2)].u.type), V_protected, false); +} + break; + + case 345: +/* Line 1792 of yacc.c */ +#line 2645 "dtool/src/cppparser/cppBison.yxx" + { + current_struct->append_derivation((yyvsp[(2) - (2)].u.type), V_private, false); +} + break; + + case 346: +/* Line 1792 of yacc.c */ +#line 2649 "dtool/src/cppparser/cppBison.yxx" + { + current_struct->append_derivation((yyvsp[(3) - (3)].u.type), V_public, true); +} + break; + + case 347: +/* Line 1792 of yacc.c */ +#line 2653 "dtool/src/cppparser/cppBison.yxx" + { + current_struct->append_derivation((yyvsp[(3) - (3)].u.type), V_protected, true); +} + break; + + case 348: +/* Line 1792 of yacc.c */ +#line 2657 "dtool/src/cppparser/cppBison.yxx" + { + current_struct->append_derivation((yyvsp[(3) - (3)].u.type), V_private, true); +} + break; + + case 349: +/* Line 1792 of yacc.c */ +#line 2661 "dtool/src/cppparser/cppBison.yxx" + { + current_struct->append_derivation((yyvsp[(3) - (3)].u.type), V_public, true); +} + break; + + case 350: +/* Line 1792 of yacc.c */ +#line 2665 "dtool/src/cppparser/cppBison.yxx" + { + current_struct->append_derivation((yyvsp[(3) - (3)].u.type), V_protected, true); +} + break; + + case 351: +/* Line 1792 of yacc.c */ +#line 2669 "dtool/src/cppparser/cppBison.yxx" + { + current_struct->append_derivation((yyvsp[(3) - (3)].u.type), V_private, true); +} + break; + + case 352: +/* Line 1792 of yacc.c */ +#line 2676 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.enum_type) = current_enum; current_enum = NULL; } -#line 6935 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 6943 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 6951 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 6960 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 6969 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 344: -#line 2647 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); -} -#line 6977 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 6985 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 6994 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 7003 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 7012 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 7021 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 352: -#line 2685 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.extension_enum) = CPPExtensionType::T_enum; -} -#line 7029 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 353: -#line 2689 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2684 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.extension_enum) = CPPExtensionType::T_enum_class; + current_enum = new CPPEnumType((yyvsp[(1) - (3)].u.extension_enum), NULL, (yyvsp[(3) - (3)].u.type), current_scope, NULL, (yylsp[(1) - (3)]).file); } -#line 7037 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 354: -#line 2693 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2688 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.extension_enum) = CPPExtensionType::T_enum_struct; + current_enum = new CPPEnumType((yyvsp[(1) - (1)].u.extension_enum), NULL, current_scope, NULL, (yylsp[(1) - (1)]).file); } -#line 7045 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 355: -#line 2700 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2692 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.extension_enum) = CPPExtensionType::T_class; + CPPScope *new_scope = new CPPScope(current_scope, (yyvsp[(2) - (4)].u.identifier)->_names.back(), V_public); + current_enum = new CPPEnumType((yyvsp[(1) - (4)].u.extension_enum), (yyvsp[(2) - (4)].u.identifier), (yyvsp[(4) - (4)].u.type), current_scope, new_scope, (yylsp[(1) - (4)]).file); } -#line 7053 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 356: -#line 2704 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2697 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.extension_enum) = CPPExtensionType::T_struct; + CPPScope *new_scope = new CPPScope(current_scope, (yyvsp[(2) - (2)].u.identifier)->_names.back(), V_public); + current_enum = new CPPEnumType((yyvsp[(1) - (2)].u.extension_enum), (yyvsp[(2) - (2)].u.identifier), current_scope, new_scope, (yylsp[(1) - (2)]).file); } -#line 7061 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 357: -#line 2708 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2705 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.extension_enum) = CPPExtensionType::T_union; + (yyval.u.type) = CPPType::new_type((yyvsp[(1) - (1)].u.simple_type)); } -#line 7069 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 358: -#line 2715 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2709 "dtool/src/cppparser/cppBison.yxx" { - CPPScope *scope = (yyvsp[-1].u.identifier)->find_scope(current_scope, global_scope, current_lexer); - if (scope == NULL) { - // This must be a new namespace declaration. - CPPScope *parent_scope = - (yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope, current_lexer); - if (parent_scope == NULL) { - parent_scope = current_scope; - } - scope = new CPPScope(parent_scope, (yyvsp[-1].u.identifier)->_names.back(), V_public); - } - - CPPNamespace *nspace = new CPPNamespace((yyvsp[-1].u.identifier), scope, (yylsp[-2]).file); - current_scope->add_declaration(nspace, global_scope, current_lexer, (yylsp[-2])); - current_scope->define_namespace(nspace); - push_scope(scope); + (yyval.u.type) = (yyvsp[(1) - (1)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); } -#line 7091 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 359: -#line 2733 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - pop_scope(); -} -#line 7099 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 360: -#line 2737 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2717 "dtool/src/cppparser/cppBison.yxx" { - CPPScope *scope = (yyvsp[-1].u.identifier)->find_scope(current_scope, global_scope, current_lexer); - if (scope == NULL) { - // This must be a new namespace declaration. - CPPScope *parent_scope = - (yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope, current_lexer); - if (parent_scope == NULL) { - parent_scope = current_scope; - } - scope = new CPPScope(parent_scope, (yyvsp[-1].u.identifier)->_names.back(), V_public); - } - - CPPNamespace *nspace = new CPPNamespace((yyvsp[-1].u.identifier), scope, (yylsp[-2]).file); - nspace->_is_inline = true; - current_scope->add_declaration(nspace, global_scope, current_lexer, (yylsp[-2])); - current_scope->define_namespace(nspace); - push_scope(scope); + assert(current_enum != NULL); + current_enum->add_element((yyvsp[(2) - (3)].u.identifier)->get_simple_name(), NULL, current_lexer, (yylsp[(2) - (3)])); } -#line 7122 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 361: -#line 2756 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2722 "dtool/src/cppparser/cppBison.yxx" { - pop_scope(); + assert(current_enum != NULL); + current_enum->add_element((yyvsp[(2) - (5)].u.identifier)->get_simple_name(), (yyvsp[(4) - (5)].u.expr), current_lexer, (yylsp[(2) - (5)])); +} + break; + + case 363: +/* Line 1792 of yacc.c */ +#line 2730 "dtool/src/cppparser/cppBison.yxx" + { + assert(current_enum != NULL); + current_enum->add_element((yyvsp[(2) - (2)].u.identifier)->get_simple_name(), NULL, current_lexer, (yylsp[(2) - (2)])); } -#line 7130 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 364: -#line 2765 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2735 "dtool/src/cppparser/cppBison.yxx" { - 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); + assert(current_enum != NULL); + current_enum->add_element((yyvsp[(2) - (4)].u.identifier)->get_simple_name(), (yyvsp[(4) - (4)].u.expr), current_lexer, (yylsp[(2) - (4)])); } -#line 7140 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 365: -#line 2771 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2743 "dtool/src/cppparser/cppBison.yxx" { - // 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])); + (yyval.u.extension_enum) = CPPExtensionType::T_enum; } -#line 7151 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 366: -#line 2778 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2747 "dtool/src/cppparser/cppBison.yxx" { - 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); + (yyval.u.extension_enum) = CPPExtensionType::T_enum_class; +} + break; + + case 367: +/* Line 1792 of yacc.c */ +#line 2751 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.extension_enum) = CPPExtensionType::T_enum_struct; +} + break; + + case 368: +/* Line 1792 of yacc.c */ +#line 2758 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.extension_enum) = CPPExtensionType::T_class; +} + break; + + case 369: +/* Line 1792 of yacc.c */ +#line 2762 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.extension_enum) = CPPExtensionType::T_struct; } -#line 7161 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 370: -#line 2793 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2766 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_bool); + (yyval.u.extension_enum) = CPPExtensionType::T_union; } -#line 7169 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 371: -#line 2797 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2773 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char); + CPPScope *scope = (yyvsp[(2) - (3)].u.identifier)->find_scope(current_scope, global_scope, current_lexer); + if (scope == NULL) { + // This must be a new namespace declaration. + CPPScope *parent_scope = + (yyvsp[(2) - (3)].u.identifier)->get_scope(current_scope, global_scope, current_lexer); + if (parent_scope == NULL) { + parent_scope = current_scope; + } + scope = new CPPScope(parent_scope, (yyvsp[(2) - (3)].u.identifier)->_names.back(), V_public); + } + + CPPNamespace *nspace = new CPPNamespace((yyvsp[(2) - (3)].u.identifier), scope, (yylsp[(1) - (3)]).file); + current_scope->add_declaration(nspace, global_scope, current_lexer, (yylsp[(1) - (3)])); + current_scope->define_namespace(nspace); + push_scope(scope); } -#line 7177 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 372: -#line 2801 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2791 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_wchar_t); + pop_scope(); } -#line 7185 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 373: -#line 2805 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2795 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char16_t); + CPPScope *scope = (yyvsp[(3) - (4)].u.identifier)->find_scope(current_scope, global_scope, current_lexer); + if (scope == NULL) { + // This must be a new namespace declaration. + CPPScope *parent_scope = + (yyvsp[(3) - (4)].u.identifier)->get_scope(current_scope, global_scope, current_lexer); + if (parent_scope == NULL) { + parent_scope = current_scope; + } + scope = new CPPScope(parent_scope, (yyvsp[(3) - (4)].u.identifier)->_names.back(), V_public); + } + + CPPNamespace *nspace = new CPPNamespace((yyvsp[(3) - (4)].u.identifier), scope, (yylsp[(2) - (4)]).file); + nspace->_is_inline = true; + current_scope->add_declaration(nspace, global_scope, current_lexer, (yylsp[(2) - (4)])); + current_scope->define_namespace(nspace); + push_scope(scope); } -#line 7193 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 374: -#line 2809 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 2814 "dtool/src/cppparser/cppBison.yxx" + { + pop_scope(); +} + break; + + case 377: +/* Line 1792 of yacc.c */ +#line 2823 "dtool/src/cppparser/cppBison.yxx" + { + CPPUsing *using_decl = new CPPUsing((yyvsp[(2) - (3)].u.identifier), false, (yylsp[(1) - (3)]).file); + current_scope->add_declaration(using_decl, global_scope, current_lexer, (yylsp[(1) - (3)])); + current_scope->add_using(using_decl, global_scope, current_lexer); +} + break; + + case 378: +/* Line 1792 of yacc.c */ +#line 2829 "dtool/src/cppparser/cppBison.yxx" + { + // This is really just an alternative way to declare a typedef. + CPPTypedefType *typedef_type = new CPPTypedefType((yyvsp[(4) - (5)].u.type), (yyvsp[(2) - (5)].u.identifier), current_scope); + typedef_type->_using = true; + current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, (yylsp[(1) - (5)])); +} + break; + + case 379: +/* Line 1792 of yacc.c */ +#line 2836 "dtool/src/cppparser/cppBison.yxx" + { + CPPUsing *using_decl = new CPPUsing((yyvsp[(3) - (4)].u.identifier), true, (yylsp[(1) - (4)]).file); + current_scope->add_declaration(using_decl, global_scope, current_lexer, (yylsp[(1) - (4)])); + current_scope->add_using(using_decl, global_scope, current_lexer); +} + break; + + case 383: +/* Line 1792 of yacc.c */ +#line 2851 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_bool); +} + break; + + case 384: +/* Line 1792 of yacc.c */ +#line 2855 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char); +} + break; + + case 385: +/* Line 1792 of yacc.c */ +#line 2859 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_wchar_t); +} + break; + + case 386: +/* Line 1792 of yacc.c */ +#line 2863 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char16_t); +} + break; + + case 387: +/* Line 1792 of yacc.c */ +#line 2867 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char32_t); } -#line 7201 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 375: -#line 2813 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 388: +/* Line 1792 of yacc.c */ +#line 2871 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_short); } -#line 7210 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 376: -#line 2818 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 389: +/* Line 1792 of yacc.c */ +#line 2876 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_long); } -#line 7219 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 377: -#line 2823 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 390: +/* Line 1792 of yacc.c */ +#line 2881 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_unsigned); } -#line 7228 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 378: -#line 2828 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 391: +/* Line 1792 of yacc.c */ +#line 2886 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_signed); } -#line 7237 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 379: -#line 2833 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 392: +/* Line 1792 of yacc.c */ +#line 2891 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int); } -#line 7245 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 380: -#line 2837 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 393: +/* Line 1792 of yacc.c */ +#line 2895 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.simple_type) = (yyvsp[0].u.simple_type); + (yyval.u.simple_type) = (yyvsp[(2) - (2)].u.simple_type); (yyval.u.simple_type)->_flags |= CPPSimpleType::F_short; } -#line 7254 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 381: -#line 2842 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 394: +/* Line 1792 of yacc.c */ +#line 2900 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.simple_type) = (yyvsp[0].u.simple_type); + (yyval.u.simple_type) = (yyvsp[(2) - (2)].u.simple_type); if ((yyval.u.simple_type)->_flags & CPPSimpleType::F_long) { (yyval.u.simple_type)->_flags |= CPPSimpleType::F_longlong; } else { (yyval.u.simple_type)->_flags |= CPPSimpleType::F_long; } } -#line 7267 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 382: -#line 2851 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 395: +/* Line 1792 of yacc.c */ +#line 2909 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.simple_type) = (yyvsp[0].u.simple_type); + (yyval.u.simple_type) = (yyvsp[(2) - (2)].u.simple_type); (yyval.u.simple_type)->_flags |= CPPSimpleType::F_unsigned; } -#line 7276 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 383: -#line 2856 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 396: +/* Line 1792 of yacc.c */ +#line 2914 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.simple_type) = (yyvsp[0].u.simple_type); + (yyval.u.simple_type) = (yyvsp[(2) - (2)].u.simple_type); (yyval.u.simple_type)->_flags |= CPPSimpleType::F_signed; } -#line 7285 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 384: -#line 2864 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 397: +/* Line 1792 of yacc.c */ +#line 2922 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_float); } -#line 7293 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 385: -#line 2868 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 398: +/* Line 1792 of yacc.c */ +#line 2926 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_double); } -#line 7301 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 386: -#line 2872 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 399: +/* Line 1792 of yacc.c */ +#line 2930 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_double, CPPSimpleType::F_long); } -#line 7310 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 387: -#line 2880 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 400: +/* Line 1792 of yacc.c */ +#line 2938 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_void); } -#line 7318 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 388: -#line 2889 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 401: +/* Line 1792 of yacc.c */ +#line 2947 "dtool/src/cppparser/cppBison.yxx" { current_lexer->_resolve_identifiers = false; } -#line 7326 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 389: -#line 2893 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 402: +/* Line 1792 of yacc.c */ +#line 2951 "dtool/src/cppparser/cppBison.yxx" { current_lexer->_resolve_identifiers = true; } -#line 7334 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 495: -#line 2936 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 510: +/* Line 1792 of yacc.c */ +#line 2995 "dtool/src/cppparser/cppBison.yxx" { } -#line 7341 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 519: -#line 2945 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (CPPExpression *)NULL; -} -#line 7349 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 520: -#line 2949 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (yyvsp[0].u.expr); -} -#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 2978 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = (yyvsp[0].u.expr); -} -#line 7397 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 526: -#line 2982 "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 7405 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 527: -#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_static_cast)); -} -#line 7413 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 528: -#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_dynamic_cast)); -} -#line 7421 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 529: -#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_const_cast)); -} -#line 7429 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 530: -#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 */ +/* Line 1792 of yacc.c */ +#line 3004 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr)); + (yyval.u.expr) = (CPPExpression *)NULL; } -#line 7469 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 535: -#line 3018 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3008 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr)); + (yyval.u.expr) = (yyvsp[(1) - (1)].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 */ +/* Line 1792 of yacc.c */ +#line 3015 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr)); + (yyval.u.expr) = (CPPExpression *)NULL; } -#line 7485 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 537: -#line 3026 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3019 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr)); + (yyval.u.expr) = (yyvsp[(1) - (1)].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 */ +/* Line 1792 of yacc.c */ +#line 3026 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[0].u.expr)); + (yyval.u.expr) = (yyvsp[(1) - (1)].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 */ +/* Line 1792 of yacc.c */ +#line 3030 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(',', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].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 */ +/* Line 1792 of yacc.c */ +#line 3037 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = (yyvsp[(1) - (1)].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 */ +/* Line 1792 of yacc.c */ +#line 3041 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(2) - (4)].u.type), (yyvsp[(4) - (4)].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 */ +/* Line 1792 of yacc.c */ +#line 3045 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_static_cast)); } -#line 7533 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 543: -#line 3050 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3049 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_dynamic_cast)); } -#line 7541 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 544: -#line 3054 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3053 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_const_cast)); } -#line 7549 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 545: -#line 3058 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3057 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_reinterpret_cast)); } -#line 7557 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 546: -#line 3062 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3061 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[(3) - (4)].u.type))); } -#line 7565 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 547: -#line 3066 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3065 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + CPPDeclaration *arg = (yyvsp[(3) - (4)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + if (arg == (CPPDeclaration *)NULL) { + yyerror("undefined sizeof argument: " + (yyvsp[(3) - (4)].u.identifier)->get_fully_scoped_name(), (yylsp[(3) - (4)])); + } else if (arg->get_subtype() == CPPDeclaration::ST_instance) { + CPPInstance *inst = arg->as_instance(); + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func(inst->_type)); + } else { + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func(arg->as_type())); + } } -#line 7573 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 548: -#line 3070 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3077 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[(4) - (5)].u.identifier))); } -#line 7581 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 549: -#line 3074 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3081 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[(3) - (4)].u.type))); } -#line 7589 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 550: -#line 3078 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3085 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[(2) - (2)].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 */ +/* Line 1792 of yacc.c */ +#line 3089 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[(2) - (2)].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 */ +/* Line 1792 of yacc.c */ +#line 3093 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[(2) - (2)].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 */ +/* Line 1792 of yacc.c */ +#line 3097 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[(2) - (2)].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 */ +/* Line 1792 of yacc.c */ +#line 3101 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[(2) - (2)].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 */ +/* Line 1792 of yacc.c */ +#line 3105 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[(2) - (2)].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 */ +/* Line 1792 of yacc.c */ +#line 3109 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('?', (yyvsp[-4].u.expr), (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('*', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].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 */ +/* Line 1792 of yacc.c */ +#line 3113 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); + (yyval.u.expr) = new CPPExpression('/', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].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 */ +/* Line 1792 of yacc.c */ +#line 3117 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); + (yyval.u.expr) = new CPPExpression('%', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].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 */ +/* Line 1792 of yacc.c */ +#line 3121 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr)); + (yyval.u.expr) = new CPPExpression('+', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].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 */ +/* Line 1792 of yacc.c */ +#line 3125 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('.', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('-', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].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 */ +/* Line 1792 of yacc.c */ +#line 3129 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('|', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].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 */ +/* Line 1792 of yacc.c */ +#line 3133 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = (yyvsp[-1].u.expr); + (yyval.u.expr) = new CPPExpression('^', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].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 */ +/* Line 1792 of yacc.c */ +#line 3137 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = (yyvsp[0].u.expr); + (yyval.u.expr) = new CPPExpression('&', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].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 */ +/* Line 1792 of yacc.c */ +#line 3141 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-2].u.type), (yyvsp[0].u.expr))); + (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].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 */ +/* Line 1792 of yacc.c */ +#line 3145 "dtool/src/cppparser/cppBison.yxx" { - (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(ANDAND, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } -#line 7717 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 566: -#line 3146 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3149 "dtool/src/cppparser/cppBison.yxx" { - (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(EQCOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } -#line 7725 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 567: -#line 3150 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3153 "dtool/src/cppparser/cppBison.yxx" { - (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(NECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } -#line 7733 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 568: -#line 3154 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3157 "dtool/src/cppparser/cppBison.yxx" { - (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(LECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } -#line 7741 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 569: -#line 3158 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3161 "dtool/src/cppparser/cppBison.yxx" { - // A constructor call. - CPPType *type = (yyvsp[-3].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); - if (type == NULL) { - yyerror(string("internal error resolving type ") + (yyvsp[-3].u.identifier)->get_fully_scoped_name(), (yylsp[-3])); - } - assert(type != NULL); - (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); + (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } -#line 7755 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 570: -#line 3168 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3165 "dtool/src/cppparser/cppBison.yxx" { - CPPType *type = - CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_int)); - (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); + (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } -#line 7765 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 571: -#line 3174 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3169 "dtool/src/cppparser/cppBison.yxx" { - CPPType *type = - CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_char)); - (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); + (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } -#line 7775 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 572: -#line 3180 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3173 "dtool/src/cppparser/cppBison.yxx" { - CPPType *type = - CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_wchar_t)); - (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); + (yyval.u.expr) = new CPPExpression('?', (yyvsp[(1) - (5)].u.expr), (yyvsp[(3) - (5)].u.expr), (yyvsp[(5) - (5)].u.expr)); } -#line 7785 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 573: -#line 3186 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3177 "dtool/src/cppparser/cppBison.yxx" { - CPPType *type = - CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_char16_t)); - (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); + (yyval.u.expr) = new CPPExpression('[', (yyvsp[(1) - (4)].u.expr), (yyvsp[(3) - (4)].u.expr)); } -#line 7795 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 574: -#line 3192 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3181 "dtool/src/cppparser/cppBison.yxx" { - CPPType *type = - CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_char32_t)); - (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); + (yyval.u.expr) = new CPPExpression('f', (yyvsp[(1) - (4)].u.expr), (yyvsp[(3) - (4)].u.expr)); } -#line 7805 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 575: -#line 3198 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3185 "dtool/src/cppparser/cppBison.yxx" { - CPPType *type = - CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_bool)); - (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); + (yyval.u.expr) = new CPPExpression('f', (yyvsp[(1) - (3)].u.expr)); } -#line 7815 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 576: -#line 3204 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3189 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('.', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 577: +/* Line 1792 of yacc.c */ +#line 3193 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 578: +/* Line 1792 of yacc.c */ +#line 3197 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (yyvsp[(2) - (3)].u.expr); +} + break; + + case 579: +/* Line 1792 of yacc.c */ +#line 3205 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); +} + break; + + case 580: +/* Line 1792 of yacc.c */ +#line 3209 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(2) - (4)].u.type), (yyvsp[(4) - (4)].u.expr))); +} + break; + + case 581: +/* Line 1792 of yacc.c */ +#line 3213 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_static_cast)); +} + break; + + case 582: +/* Line 1792 of yacc.c */ +#line 3217 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_dynamic_cast)); +} + break; + + case 583: +/* Line 1792 of yacc.c */ +#line 3221 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_const_cast)); +} + break; + + case 584: +/* Line 1792 of yacc.c */ +#line 3225 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_reinterpret_cast)); +} + break; + + case 585: +/* Line 1792 of yacc.c */ +#line 3229 "dtool/src/cppparser/cppBison.yxx" + { + // A constructor call. + CPPType *type = (yyvsp[(1) - (4)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if (type == NULL) { + yyerror(string("internal error resolving type ") + (yyvsp[(1) - (4)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (4)])); + } + assert(type != NULL); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[(3) - (4)].u.expr))); +} + break; + + case 586: +/* Line 1792 of yacc.c */ +#line 3239 "dtool/src/cppparser/cppBison.yxx" + { + // Aggregate initialization. + CPPType *type = (yyvsp[(1) - (4)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if (type == NULL) { + yyerror(string("internal error resolving type ") + (yyvsp[(1) - (4)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (4)])); + } + assert(type != NULL); + (yyval.u.expr) = new CPPExpression(CPPExpression::aggregate_init_op(type, (yyvsp[(3) - (4)].u.expr))); +} + break; + + case 587: +/* Line 1792 of yacc.c */ +#line 3249 "dtool/src/cppparser/cppBison.yxx" + { + CPPType *type = + CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_int)); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[(3) - (4)].u.expr))); +} + break; + + case 588: +/* Line 1792 of yacc.c */ +#line 3255 "dtool/src/cppparser/cppBison.yxx" + { + CPPType *type = + CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_char)); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[(3) - (4)].u.expr))); +} + break; + + case 589: +/* Line 1792 of yacc.c */ +#line 3261 "dtool/src/cppparser/cppBison.yxx" + { + CPPType *type = + CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_wchar_t)); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[(3) - (4)].u.expr))); +} + break; + + case 590: +/* Line 1792 of yacc.c */ +#line 3267 "dtool/src/cppparser/cppBison.yxx" + { + CPPType *type = + CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_char16_t)); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[(3) - (4)].u.expr))); +} + break; + + case 591: +/* Line 1792 of yacc.c */ +#line 3273 "dtool/src/cppparser/cppBison.yxx" + { + CPPType *type = + CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_char32_t)); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[(3) - (4)].u.expr))); +} + break; + + case 592: +/* Line 1792 of yacc.c */ +#line 3279 "dtool/src/cppparser/cppBison.yxx" + { + CPPType *type = + CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_bool)); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[(3) - (4)].u.expr))); +} + break; + + case 593: +/* Line 1792 of yacc.c */ +#line 3285 "dtool/src/cppparser/cppBison.yxx" { 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))); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[(3) - (4)].u.expr))); } -#line 7826 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 577: -#line 3211 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 594: +/* Line 1792 of yacc.c */ +#line 3292 "dtool/src/cppparser/cppBison.yxx" { 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))); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[(3) - (4)].u.expr))); } -#line 7837 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 578: -#line 3218 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 595: +/* Line 1792 of yacc.c */ +#line 3299 "dtool/src/cppparser/cppBison.yxx" { 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))); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[(3) - (4)].u.expr))); } -#line 7848 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 579: -#line 3225 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + case 596: +/* Line 1792 of yacc.c */ +#line 3306 "dtool/src/cppparser/cppBison.yxx" { 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))); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[(3) - (4)].u.expr))); } -#line 7859 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 7869 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 7879 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 582: -#line 3244 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[-1].u.type))); -} -#line 7887 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 7903 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 7911 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 7919 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 587: -#line 3264 "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 7934 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 588: -#line 3275 "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 7949 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 589: -#line 3286 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr)); -} -#line 7957 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 590: -#line 3290 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr)); -} -#line 7965 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 591: -#line 3294 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr)); -} -#line 7973 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - case 592: -#line 3298 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ - { - (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr)); -} -#line 7981 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 7997 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 8005 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ - break; - - 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 8013 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 597: -#line 3318 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3313 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + CPPType *type = + CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_float)); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[(3) - (4)].u.expr))); } -#line 8021 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 598: -#line 3322 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3319 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + CPPType *type = + CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_double)); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[(3) - (4)].u.expr))); } -#line 8029 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 599: -#line 3326 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3325 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[(3) - (4)].u.type))); } -#line 8037 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 600: -#line 3330 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3329 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + CPPDeclaration *arg = (yyvsp[(3) - (4)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + if (arg == (CPPDeclaration *)NULL) { + yyerror("undefined sizeof argument: " + (yyvsp[(3) - (4)].u.identifier)->get_fully_scoped_name(), (yylsp[(3) - (4)])); + } else if (arg->get_subtype() == CPPDeclaration::ST_instance) { + CPPInstance *inst = arg->as_instance(); + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func(inst->_type)); + } else { + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func(arg->as_type())); + } } -#line 8045 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 601: -#line 3334 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3341 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[(4) - (5)].u.identifier))); } -#line 8053 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 602: -#line 3338 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3345 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[(3) - (4)].u.type))); } -#line 8061 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 603: -#line 3342 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3349 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[(2) - (2)].u.type))); } -#line 8069 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 604: -#line 3346 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3353 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[(2) - (5)].u.type), (yyvsp[(4) - (5)].u.expr))); } -#line 8077 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 605: -#line 3350 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3357 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + 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[(1) - (4)])); + } + (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[(3) - (4)].u.type), std_type_info)); } -#line 8085 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 606: -#line 3354 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3368 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + 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[(1) - (4)])); + } + (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[(3) - (4)].u.expr), std_type_info)); } -#line 8093 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 607: -#line 3358 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3379 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[(2) - (2)].u.expr)); } -#line 8101 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 608: -#line 3362 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3383 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[(2) - (2)].u.expr)); } -#line 8109 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 609: -#line 3366 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3387 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('<', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[(2) - (2)].u.expr)); } -#line 8117 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 610: -#line 3370 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3391 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('>', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[(2) - (2)].u.expr)); } -#line 8125 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 611: -#line 3374 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3395 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[(2) - (2)].u.expr)); } -#line 8133 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 612: -#line 3378 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3399 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[(2) - (2)].u.expr)); } -#line 8141 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 613: -#line 3382 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3403 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('?', (yyvsp[-4].u.expr), (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('*', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } -#line 8149 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 614: -#line 3386 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3407 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); + (yyval.u.expr) = new CPPExpression('/', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } -#line 8157 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 615: -#line 3390 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3411 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); + (yyval.u.expr) = new CPPExpression('%', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].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 */ +/* Line 1792 of yacc.c */ +#line 3415 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr)); + (yyval.u.expr) = new CPPExpression('+', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].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 */ +/* Line 1792 of yacc.c */ +#line 3419 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression('.', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('-', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].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 */ +/* Line 1792 of yacc.c */ +#line 3423 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); + (yyval.u.expr) = new CPPExpression('|', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].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 */ +/* Line 1792 of yacc.c */ +#line 3427 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = (yyvsp[-1].u.expr); + (yyval.u.expr) = new CPPExpression('^', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].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 */ +/* Line 1792 of yacc.c */ +#line 3431 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); + (yyval.u.expr) = new CPPExpression('&', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } -#line 8205 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 621: -#line 3417 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3435 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(true); + (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } -#line 8213 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 622: -#line 3421 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3439 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(false); + (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } -#line 8221 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 623: -#line 3425 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3443 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); + (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } -#line 8229 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 624: -#line 3429 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3447 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression((yyvsp[0].u.real)); + (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } -#line 8237 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 625: -#line 3433 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3451 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = (yyvsp[0].u.expr); + (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].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 */ +/* Line 1792 of yacc.c */ +#line 3455 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = (yyvsp[0].u.expr); + (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].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 */ +/* Line 1792 of yacc.c */ +#line 3459 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression((yyvsp[0].u.identifier), current_scope, global_scope, current_lexer); + (yyval.u.expr) = new CPPExpression('<', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } -#line 8261 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 628: -#line 3445 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3463 "dtool/src/cppparser/cppBison.yxx" { - // 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); + (yyval.u.expr) = new CPPExpression('>', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } -#line 8271 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 629: -#line 3451 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3467 "dtool/src/cppparser/cppBison.yxx" { - // 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); + (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } -#line 8281 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 630: -#line 3457 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3471 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr()); + (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } -#line 8289 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 631: -#line 3461 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3475 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = NULL; + (yyval.u.expr) = new CPPExpression('?', (yyvsp[(1) - (5)].u.expr), (yyvsp[(3) - (5)].u.expr), (yyvsp[(5) - (5)].u.expr)); } -#line 8297 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 632: -#line 3465 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3479 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = NULL; + (yyval.u.expr) = new CPPExpression('[', (yyvsp[(1) - (4)].u.expr), (yyvsp[(3) - (4)].u.expr)); } -#line 8305 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 633: -#line 3469 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3483 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_HAS_VIRTUAL_DESTRUCTOR, (yyvsp[-1].u.type))); + (yyval.u.expr) = new CPPExpression('f', (yyvsp[(1) - (4)].u.expr), (yyvsp[(3) - (4)].u.expr)); } -#line 8313 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 634: -#line 3473 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3487 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_ABSTRACT, (yyvsp[-1].u.type))); + (yyval.u.expr) = new CPPExpression('f', (yyvsp[(1) - (3)].u.expr)); } -#line 8321 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 635: -#line 3477 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3491 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CLASS, (yyvsp[-3].u.type), (yyvsp[-1].u.type))); + (yyval.u.expr) = new CPPExpression('.', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } -#line 8329 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 636: -#line 3481 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3495 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CLASS, (yyvsp[-1].u.type))); + (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); } -#line 8337 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 637: -#line 3485 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3499 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CONSTRUCTIBLE, (yyvsp[-1].u.type))); + (yyval.u.expr) = (yyvsp[(2) - (3)].u.expr); } -#line 8345 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 638: -#line 3489 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3506 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CONSTRUCTIBLE, (yyvsp[-3].u.type), (yyvsp[-1].u.type))); + (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.integer)); } -#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 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 */ +/* Line 1792 of yacc.c */ +#line 3510 "dtool/src/cppparser/cppBison.yxx" { (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 */ + case 640: +/* Line 1792 of yacc.c */ +#line 3514 "dtool/src/cppparser/cppBison.yxx" { (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 */ + case 641: +/* Line 1792 of yacc.c */ +#line 3518 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); + (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].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 */ + case 642: +/* Line 1792 of yacc.c */ +#line 3522 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression((yyvsp[0].u.real)); + (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].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 */ + case 643: +/* Line 1792 of yacc.c */ +#line 3526 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = (yyvsp[0].u.expr); + (yyval.u.expr) = (yyvsp[(1) - (1)].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 */ + case 644: +/* Line 1792 of yacc.c */ +#line 3530 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = (yyvsp[0].u.expr); + (yyval.u.expr) = (yyvsp[(1) - (1)].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 */ + case 645: +/* Line 1792 of yacc.c */ +#line 3534 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression((yyvsp[0].u.identifier), current_scope, global_scope, current_lexer); + (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].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 */ + case 646: +/* Line 1792 of yacc.c */ +#line 3538 "dtool/src/cppparser/cppBison.yxx" { // A variable named "final". C++11 explicitly permits this. - CPPIdentifier *ident = new CPPIdentifier("final", (yylsp[0])); + CPPIdentifier *ident = new CPPIdentifier("final", (yylsp[(1) - (1)])); (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 */ + case 647: +/* Line 1792 of yacc.c */ +#line 3544 "dtool/src/cppparser/cppBison.yxx" { // A variable named "override". C++11 explicitly permits this. - CPPIdentifier *ident = new CPPIdentifier("override", (yylsp[0])); + CPPIdentifier *ident = new CPPIdentifier("override", (yylsp[(1) - (1)])); (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 */ + case 648: +/* Line 1792 of yacc.c */ +#line 3550 "dtool/src/cppparser/cppBison.yxx" { (yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr()); } -#line 8891 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 649: +/* Line 1792 of yacc.c */ +#line 3554 "dtool/src/cppparser/cppBison.yxx" + { + (yyvsp[(2) - (8)].u.closure_type)->_flags = (yyvsp[(4) - (8)].u.integer); + (yyvsp[(2) - (8)].u.closure_type)->_return_type = (yyvsp[(5) - (8)].u.type); + (yyval.u.expr) = new CPPExpression(CPPExpression::lambda((yyvsp[(2) - (8)].u.closure_type))); +} + break; + + case 650: +/* Line 1792 of yacc.c */ +#line 3560 "dtool/src/cppparser/cppBison.yxx" + { + (yyvsp[(2) - (11)].u.closure_type)->_parameters = (yyvsp[(5) - (11)].u.param_list); + (yyvsp[(2) - (11)].u.closure_type)->_flags = (yyvsp[(7) - (11)].u.integer); + (yyvsp[(2) - (11)].u.closure_type)->_return_type = (yyvsp[(8) - (11)].u.type); + (yyval.u.expr) = new CPPExpression(CPPExpression::lambda((yyvsp[(2) - (11)].u.closure_type))); +} + break; + + case 651: +/* Line 1792 of yacc.c */ +#line 3567 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_HAS_VIRTUAL_DESTRUCTOR, (yyvsp[(3) - (4)].u.type))); +} + break; + + case 652: +/* Line 1792 of yacc.c */ +#line 3571 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_ABSTRACT, (yyvsp[(3) - (4)].u.type))); +} + break; + + case 653: +/* Line 1792 of yacc.c */ +#line 3575 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CLASS, (yyvsp[(3) - (6)].u.type), (yyvsp[(5) - (6)].u.type))); +} + break; + + case 654: +/* Line 1792 of yacc.c */ +#line 3579 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CLASS, (yyvsp[(3) - (4)].u.type))); +} + break; + + case 655: +/* Line 1792 of yacc.c */ +#line 3583 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CONSTRUCTIBLE, (yyvsp[(3) - (4)].u.type))); +} + break; + + case 656: +/* Line 1792 of yacc.c */ +#line 3587 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CONSTRUCTIBLE, (yyvsp[(3) - (6)].u.type), (yyvsp[(5) - (6)].u.type))); +} + break; + + case 657: +/* Line 1792 of yacc.c */ +#line 3591 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CONVERTIBLE_TO, (yyvsp[(3) - (6)].u.type), (yyvsp[(5) - (6)].u.type))); +} + break; + + case 658: +/* Line 1792 of yacc.c */ +#line 3595 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_DESTRUCTIBLE, (yyvsp[(3) - (4)].u.type))); +} + break; + + case 659: +/* Line 1792 of yacc.c */ +#line 3599 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_EMPTY, (yyvsp[(3) - (4)].u.type))); +} + break; + + case 660: +/* Line 1792 of yacc.c */ +#line 3603 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_ENUM, (yyvsp[(3) - (4)].u.type))); +} + break; + + case 661: +/* Line 1792 of yacc.c */ +#line 3607 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_FINAL, (yyvsp[(3) - (4)].u.type))); +} + break; + + case 662: +/* Line 1792 of yacc.c */ +#line 3611 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_FUNDAMENTAL, (yyvsp[(3) - (4)].u.type))); +} + break; + + case 663: +/* Line 1792 of yacc.c */ +#line 3615 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_POD, (yyvsp[(3) - (4)].u.type))); +} + break; + + case 664: +/* Line 1792 of yacc.c */ +#line 3619 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_POLYMORPHIC, (yyvsp[(3) - (4)].u.type))); +} + break; + + case 665: +/* Line 1792 of yacc.c */ +#line 3623 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_STANDARD_LAYOUT, (yyvsp[(3) - (4)].u.type))); +} + break; + + case 666: +/* Line 1792 of yacc.c */ +#line 3627 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_TRIVIAL, (yyvsp[(3) - (4)].u.type))); +} + break; + + case 667: +/* Line 1792 of yacc.c */ +#line 3631 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_UNION, (yyvsp[(3) - (4)].u.type))); +} + break; + + case 668: +/* Line 1792 of yacc.c */ +#line 3645 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); +} + break; + + case 669: +/* Line 1792 of yacc.c */ +#line 3649 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(2) - (4)].u.type), (yyvsp[(4) - (4)].u.expr))); +} + break; + + case 670: +/* Line 1792 of yacc.c */ +#line 3653 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_static_cast)); +} + break; + + case 671: +/* Line 1792 of yacc.c */ +#line 3657 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_dynamic_cast)); +} + break; + + case 672: +/* Line 1792 of yacc.c */ +#line 3661 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_const_cast)); +} + break; + + case 673: +/* Line 1792 of yacc.c */ +#line 3665 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_reinterpret_cast)); +} + break; + + case 674: +/* Line 1792 of yacc.c */ +#line 3669 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[(3) - (4)].u.type))); +} + break; + + case 675: +/* Line 1792 of yacc.c */ +#line 3673 "dtool/src/cppparser/cppBison.yxx" + { + CPPDeclaration *arg = (yyvsp[(3) - (4)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + if (arg == (CPPDeclaration *)NULL) { + yyerror("undefined sizeof argument: " + (yyvsp[(3) - (4)].u.identifier)->get_fully_scoped_name(), (yylsp[(3) - (4)])); + } else if (arg->get_subtype() == CPPDeclaration::ST_instance) { + CPPInstance *inst = arg->as_instance(); + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func(inst->_type)); + } else { + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func(arg->as_type())); + } +} + break; + + case 676: +/* Line 1792 of yacc.c */ +#line 3685 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[(4) - (5)].u.identifier))); +} + break; + + case 677: +/* Line 1792 of yacc.c */ +#line 3689 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[(3) - (4)].u.type))); +} + break; + + case 678: +/* Line 1792 of yacc.c */ +#line 3693 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[(2) - (2)].u.type))); +} + break; + + case 679: +/* Line 1792 of yacc.c */ +#line 3697 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[(2) - (5)].u.type), (yyvsp[(4) - (5)].u.expr))); +} + break; + + case 680: +/* Line 1792 of yacc.c */ +#line 3701 "dtool/src/cppparser/cppBison.yxx" + { + 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[(1) - (4)])); + } + (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[(3) - (4)].u.type), std_type_info)); +} + break; + + case 681: +/* Line 1792 of yacc.c */ +#line 3712 "dtool/src/cppparser/cppBison.yxx" + { + 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[(1) - (4)])); + } + (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[(3) - (4)].u.expr), std_type_info)); +} + break; + + case 682: +/* Line 1792 of yacc.c */ +#line 3723 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[(2) - (2)].u.expr)); +} + break; + + case 683: +/* Line 1792 of yacc.c */ +#line 3727 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[(2) - (2)].u.expr)); +} + break; + + case 684: +/* Line 1792 of yacc.c */ +#line 3731 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[(2) - (2)].u.expr)); +} + break; + + case 685: +/* Line 1792 of yacc.c */ +#line 3735 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[(2) - (2)].u.expr)); +} + break; + + case 686: +/* Line 1792 of yacc.c */ +#line 3739 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[(2) - (2)].u.expr)); +} + break; + + case 687: +/* Line 1792 of yacc.c */ +#line 3743 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('*', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 688: +/* Line 1792 of yacc.c */ +#line 3747 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('/', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 689: +/* Line 1792 of yacc.c */ +#line 3751 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('%', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 690: +/* Line 1792 of yacc.c */ +#line 3755 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('+', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 691: +/* Line 1792 of yacc.c */ +#line 3759 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('-', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 692: +/* Line 1792 of yacc.c */ +#line 3763 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('|', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 693: +/* Line 1792 of yacc.c */ +#line 3767 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('^', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 694: +/* Line 1792 of yacc.c */ +#line 3771 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('&', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 695: +/* Line 1792 of yacc.c */ +#line 3775 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 696: +/* Line 1792 of yacc.c */ +#line 3779 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 697: +/* Line 1792 of yacc.c */ +#line 3783 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 698: +/* Line 1792 of yacc.c */ +#line 3787 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 699: +/* Line 1792 of yacc.c */ +#line 3791 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 700: +/* Line 1792 of yacc.c */ +#line 3795 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 701: +/* Line 1792 of yacc.c */ +#line 3799 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('<', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 702: +/* Line 1792 of yacc.c */ +#line 3803 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('>', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 703: +/* Line 1792 of yacc.c */ +#line 3807 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 704: +/* Line 1792 of yacc.c */ +#line 3811 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 705: +/* Line 1792 of yacc.c */ +#line 3815 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('?', (yyvsp[(1) - (5)].u.expr), (yyvsp[(3) - (5)].u.expr), (yyvsp[(5) - (5)].u.expr)); +} + break; + + case 706: +/* Line 1792 of yacc.c */ +#line 3819 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('[', (yyvsp[(1) - (4)].u.expr), (yyvsp[(3) - (4)].u.expr)); +} + break; + + case 707: +/* Line 1792 of yacc.c */ +#line 3823 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('f', (yyvsp[(1) - (4)].u.expr), (yyvsp[(3) - (4)].u.expr)); +} + break; + + case 708: +/* Line 1792 of yacc.c */ +#line 3827 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('f', (yyvsp[(1) - (3)].u.expr)); +} + break; + + case 709: +/* Line 1792 of yacc.c */ +#line 3831 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression('.', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} + break; + + case 710: +/* Line 1792 of yacc.c */ +#line 3835 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); +} break; case 711: -#line 3801 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3839 "dtool/src/cppparser/cppBison.yxx" { - CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, true); - if (type == NULL) { - type = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); - } - (yyval.u.type) = type; + (yyval.u.expr) = (yyvsp[(2) - (3)].u.expr); } -#line 8903 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 712: -#line 3809 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3846 "dtool/src/cppparser/cppBison.yxx" { - CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, true, current_lexer); - if (type == NULL) { - type = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); - } - (yyval.u.type) = type; + (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.integer)); } -#line 8915 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 713: -#line 3817 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3850 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); + (yyval.u.expr) = new CPPExpression(true); } -#line 8923 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 714: -#line 3821 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3854 "dtool/src/cppparser/cppBison.yxx" { - CPPClassTemplateParameter *ctp = new CPPClassTemplateParameter((yyvsp[-1].u.identifier)); - ctp->_packed = true; - (yyval.u.type) = CPPType::new_type(ctp); + (yyval.u.expr) = new CPPExpression(false); } -#line 8933 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 715: -#line 3851 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3858 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.identifier) = (yyvsp[0].u.identifier); + (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.integer)); } -#line 8941 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 716: -#line 3855 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3862 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.identifier) = (yyvsp[0].u.identifier); + (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.real)); } -#line 8949 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 717: -#line 3859 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3866 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.identifier) = (yyvsp[0].u.identifier); + (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); } -#line 8957 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 718: -#line 3863 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3870 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.identifier) = new CPPIdentifier("final", (yylsp[0])); + (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); } -#line 8965 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 719: -#line 3867 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3874 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.identifier) = new CPPIdentifier("override", (yylsp[0])); + (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.identifier), current_scope, global_scope, current_lexer); } -#line 8973 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 720: -#line 3871 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3878 "dtool/src/cppparser/cppBison.yxx" { - // 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])); + // A variable named "final". C++11 explicitly permits this. + CPPIdentifier *ident = new CPPIdentifier("final", (yylsp[(1) - (1)])); + (yyval.u.expr) = new CPPExpression(ident, current_scope, global_scope, current_lexer); } -#line 8983 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 721: -#line 3877 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3884 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.identifier) = new CPPIdentifier("float", (yylsp[0])); + // A variable named "override". C++11 explicitly permits this. + CPPIdentifier *ident = new CPPIdentifier("override", (yylsp[(1) - (1)])); + (yyval.u.expr) = new CPPExpression(ident, current_scope, global_scope, current_lexer); } -#line 8991 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 722: -#line 3881 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3890 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.identifier) = new CPPIdentifier("public", (yylsp[0])); + (yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr()); } -#line 8999 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 723: -#line 3885 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3898 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.identifier) = new CPPIdentifier("private", (yylsp[0])); + (yyval.u.closure_type) = new CPPClosureType(); } -#line 9007 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 724: -#line 3889 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3902 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.identifier) = new CPPIdentifier("static", (yylsp[0])); + (yyval.u.closure_type) = new CPPClosureType(CPPClosureType::CT_by_value); } -#line 9015 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 725: -#line 3900 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3906 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.identifier) = (yyvsp[0].u.identifier); + (yyval.u.closure_type) = new CPPClosureType(CPPClosureType::CT_by_reference); } -#line 9023 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 726: -#line 3904 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3910 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.identifier) = (yyvsp[0].u.identifier); + (yyval.u.closure_type) = new CPPClosureType(); + (yyvsp[(1) - (2)].u.capture)->_initializer = (yyvsp[(2) - (2)].u.expr); + (yyval.u.closure_type)->_captures.push_back(*(yyvsp[(1) - (2)].u.capture)); + delete (yyvsp[(1) - (2)].u.capture); } -#line 9031 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 727: -#line 3908 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3917 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.identifier) = (yyvsp[0].u.identifier); + (yyval.u.closure_type) = (yyvsp[(1) - (4)].u.closure_type); + (yyvsp[(3) - (4)].u.capture)->_initializer = (yyvsp[(4) - (4)].u.expr); + (yyval.u.closure_type)->_captures.push_back(*(yyvsp[(3) - (4)].u.capture)); + delete (yyvsp[(3) - (4)].u.capture); } -#line 9039 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 728: -#line 3912 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3927 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.identifier) = new CPPIdentifier("override", (yylsp[0])); + (yyval.u.capture) = new CPPClosureType::Capture; + (yyval.u.capture)->_name = (yyvsp[(2) - (2)].u.identifier)->get_simple_name(); + (yyval.u.capture)->_type = CPPClosureType::CT_by_reference; } -#line 9047 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 729: -#line 3920 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3933 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = new CPPExpression((yyvsp[0].str)); + (yyval.u.capture) = new CPPClosureType::Capture; + (yyval.u.capture)->_name = (yyvsp[(2) - (3)].u.identifier)->get_simple_name(); + (yyval.u.capture)->_type = CPPClosureType::CT_by_reference; } -#line 9055 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 730: -#line 3924 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3939 "dtool/src/cppparser/cppBison.yxx" { - (yyval.u.expr) = (yyvsp[0].u.expr); + (yyval.u.capture) = new CPPClosureType::Capture; + (yyval.u.capture)->_name = (yyvsp[(1) - (1)].u.identifier)->get_simple_name(); + if ((yyval.u.capture)->_name == "this") { + (yyval.u.capture)->_type = CPPClosureType::CT_by_reference; + } else { + (yyval.u.capture)->_type = CPPClosureType::CT_by_value; + } } -#line 9063 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 731: -#line 3928 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3949 "dtool/src/cppparser/cppBison.yxx" { - // 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); + (yyval.u.capture) = new CPPClosureType::Capture; + (yyval.u.capture)->_name = (yyvsp[(2) - (2)].u.identifier)->get_simple_name(); + (yyval.u.capture)->_type = CPPClosureType::CT_by_value; + if ((yyval.u.capture)->_name != "this") { + yywarning("only capture name 'this' may be preceded by an asterisk", (yylsp[(2) - (2)])); + } } -#line 9073 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 732: -#line 3934 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 3961 "dtool/src/cppparser/cppBison.yxx" + { + CPPType *type = (yyvsp[(1) - (1)].u.identifier)->find_type(current_scope, global_scope, true); + if (type == NULL) { + type = CPPType::new_type(new CPPTBDType((yyvsp[(1) - (1)].u.identifier))); + } + (yyval.u.type) = type; +} + break; + + case 733: +/* Line 1792 of yacc.c */ +#line 3969 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[(2) - (2)].u.identifier))); +} + break; + + case 734: +/* Line 1792 of yacc.c */ +#line 3973 "dtool/src/cppparser/cppBison.yxx" + { + CPPClassTemplateParameter *ctp = new CPPClassTemplateParameter((yyvsp[(1) - (2)].u.identifier)); + ctp->_packed = true; + (yyval.u.type) = CPPType::new_type(ctp); +} + break; + + case 735: +/* Line 1792 of yacc.c */ +#line 4003 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.identifier) = (yyvsp[(1) - (1)].u.identifier); +} + break; + + case 736: +/* Line 1792 of yacc.c */ +#line 4007 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.identifier) = (yyvsp[(1) - (1)].u.identifier); +} + break; + + case 737: +/* Line 1792 of yacc.c */ +#line 4011 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.identifier) = (yyvsp[(1) - (1)].u.identifier); +} + break; + + case 738: +/* Line 1792 of yacc.c */ +#line 4015 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.identifier) = new CPPIdentifier("final", (yylsp[(1) - (1)])); +} + break; + + case 739: +/* Line 1792 of yacc.c */ +#line 4019 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.identifier) = new CPPIdentifier("override", (yylsp[(1) - (1)])); +} + break; + + case 740: +/* Line 1792 of yacc.c */ +#line 4023 "dtool/src/cppparser/cppBison.yxx" + { + // 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[(1) - (1)])); +} + break; + + case 741: +/* Line 1792 of yacc.c */ +#line 4029 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.identifier) = new CPPIdentifier("float", (yylsp[(1) - (1)])); +} + break; + + case 742: +/* Line 1792 of yacc.c */ +#line 4033 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.identifier) = new CPPIdentifier("public", (yylsp[(1) - (1)])); +} + break; + + case 743: +/* Line 1792 of yacc.c */ +#line 4037 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.identifier) = new CPPIdentifier("private", (yylsp[(1) - (1)])); +} + break; + + case 744: +/* Line 1792 of yacc.c */ +#line 4041 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.identifier) = new CPPIdentifier("static", (yylsp[(1) - (1)])); +} + break; + + case 745: +/* Line 1792 of yacc.c */ +#line 4052 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.identifier) = (yyvsp[(1) - (1)].u.identifier); +} + break; + + case 746: +/* Line 1792 of yacc.c */ +#line 4056 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.identifier) = (yyvsp[(1) - (1)].u.identifier); +} + break; + + case 747: +/* Line 1792 of yacc.c */ +#line 4060 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.identifier) = (yyvsp[(1) - (1)].u.identifier); +} + break; + + case 748: +/* Line 1792 of yacc.c */ +#line 4064 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.identifier) = new CPPIdentifier("override", (yylsp[(1) - (1)])); +} + break; + + case 749: +/* Line 1792 of yacc.c */ +#line 4072 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].str)); +} + break; + + case 750: +/* Line 1792 of yacc.c */ +#line 4076 "dtool/src/cppparser/cppBison.yxx" + { + (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); +} + break; + + case 751: +/* Line 1792 of yacc.c */ +#line 4080 "dtool/src/cppparser/cppBison.yxx" + { + // The right string takes on the literal type of the left. + (yyval.u.expr) = (yyvsp[(1) - (2)].u.expr); + (yyval.u.expr)->_str += (yyvsp[(2) - (2)].str); +} + break; + + case 752: +/* Line 1792 of yacc.c */ +#line 4086 "dtool/src/cppparser/cppBison.yxx" { // We have to check that the two literal types match up. - (yyval.u.expr) = (yyvsp[-1].u.expr); - if ((yyvsp[0].u.expr)->_type != CPPExpression::T_string && (yyvsp[0].u.expr)->_type != (yyvsp[-1].u.expr)->_type) { + (yyval.u.expr) = (yyvsp[(1) - (2)].u.expr); + if ((yyvsp[(2) - (2)].u.expr)->_type != CPPExpression::T_string && (yyvsp[(2) - (2)].u.expr)->_type != (yyvsp[(1) - (2)].u.expr)->_type) { yywarning("cannot concatenate two string literals of different types", (yyloc)); } - (yyval.u.expr)->_str += (yyvsp[0].u.expr)->_str; + (yyval.u.expr)->_str += (yyvsp[(2) - (2)].u.expr)->_str; } -#line 9086 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; -#line 9090 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ +/* Line 1792 of yacc.c */ +#line 9985 "built_x64/tmp/cppBison.yxx.c" default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -9118,7 +10004,7 @@ yyreduce: *++yyvsp = yyval; *++yylsp = yyloc; - /* Now 'shift' the result of the reduction. Determine what state + /* Now `shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ @@ -9133,9 +10019,9 @@ yyreduce: goto yynewstate; -/*--------------------------------------. -| yyerrlab -- here on detecting error. | -`--------------------------------------*/ +/*------------------------------------. +| yyerrlab -- here on detecting error | +`------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ @@ -9146,7 +10032,7 @@ yyerrlab: { ++yynerrs; #if ! YYERROR_VERBOSE - yyerror (&yylloc, YY_("syntax error")); + yyerror (YY_("syntax error")); #else # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ yyssp, yytoken) @@ -9173,7 +10059,7 @@ yyerrlab: yymsgp = yymsg; } } - yyerror (&yylloc, yymsgp); + yyerror (yymsgp); if (yysyntax_error_status == 2) goto yyexhaustedlab; } @@ -9186,20 +10072,20 @@ yyerrlab: if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an - error, discard it. */ + error, discard it. */ if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } else - { - yydestruct ("Error: discarding", - yytoken, &yylval, &yylloc); - yychar = YYEMPTY; - } + { + yydestruct ("Error: discarding", + yytoken, &yylval, &yylloc); + yychar = YYEMPTY; + } } /* Else will try to reuse lookahead token after shifting the error @@ -9219,7 +10105,7 @@ yyerrorlab: goto yyerrorlab; yyerror_range[1] = yylsp[1-yylen]; - /* Do not reclaim the symbols of the rule whose action triggered + /* Do not reclaim the symbols of the rule which action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; @@ -9232,29 +10118,29 @@ yyerrorlab: | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ + yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) - YYABORT; + YYABORT; yyerror_range[1] = *yylsp; yydestruct ("Error: popping", - yystos[yystate], yyvsp, yylsp); + yystos[yystate], yyvsp, yylsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -9296,7 +10182,7 @@ yyabortlab: | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: - yyerror (&yylloc, YY_("memory exhausted")); + yyerror (YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif @@ -9310,14 +10196,14 @@ yyreturn: yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval, &yylloc); } - /* Do not reclaim the symbols of the rule whose action triggered + /* Do not reclaim the symbols of the rule which action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp, yylsp); + yystos[*yyssp], yyvsp, yylsp); YYPOPSTACK (1); } #ifndef yyoverflow @@ -9328,5 +10214,8 @@ yyreturn: if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif - return yyresult; + /* Make sure YYID is used. */ + return YYID (yyresult); } + + diff --git a/dtool/src/cppparser/cppBison.h.prebuilt b/dtool/src/cppparser/cppBison.h.prebuilt index 223bfdf123..57b8c1be8a 100644 --- a/dtool/src/cppparser/cppBison.h.prebuilt +++ b/dtool/src/cppparser/cppBison.h.prebuilt @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.0.4. */ +/* A Bison parser, made by GNU Bison 2.7. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,9 +30,9 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -#ifndef YY_CPPYY_BUILT_TMP_CPPBISON_YXX_H_INCLUDED -# define YY_CPPYY_BUILT_TMP_CPPBISON_YXX_H_INCLUDED -/* Debug traces. */ +#ifndef YY_CPPYY_BUILT_X64_TMP_CPPBISON_YXX_H_INCLUDED +# define YY_CPPYY_BUILT_X64_TMP_CPPBISON_YXX_H_INCLUDED +/* Enabling traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif @@ -40,153 +40,156 @@ extern int cppyydebug; #endif -/* Token type. */ +/* Tokens. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - enum yytokentype - { - REAL = 258, - INTEGER = 259, - CHAR_TOK = 260, - SIMPLE_STRING = 261, - SIMPLE_IDENTIFIER = 262, - STRING_LITERAL = 263, - CUSTOM_LITERAL = 264, - IDENTIFIER = 265, - TYPENAME_IDENTIFIER = 266, - 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 - }; + /* Put the tokens into the symbol table, so that GDB and other debuggers + know about them. */ + enum yytokentype { + REAL = 258, + INTEGER = 259, + CHAR_TOK = 260, + SIMPLE_STRING = 261, + SIMPLE_IDENTIFIER = 262, + STRING_LITERAL = 263, + CUSTOM_LITERAL = 264, + IDENTIFIER = 265, + TYPENAME_IDENTIFIER = 266, + 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, + ATTR_LEFT = 302, + ATTR_RIGHT = 303, + KW_ALIGNAS = 304, + KW_ALIGNOF = 305, + KW_AUTO = 306, + KW_BEGIN_PUBLISH = 307, + KW_BLOCKING = 308, + KW_BOOL = 309, + KW_CATCH = 310, + KW_CHAR = 311, + KW_CHAR16_T = 312, + KW_CHAR32_T = 313, + KW_CLASS = 314, + KW_CONST = 315, + KW_CONSTEXPR = 316, + KW_CONST_CAST = 317, + KW_DECLTYPE = 318, + KW_DEFAULT = 319, + KW_DELETE = 320, + KW_DOUBLE = 321, + KW_DYNAMIC_CAST = 322, + KW_ELSE = 323, + KW_END_PUBLISH = 324, + KW_ENUM = 325, + KW_EXTENSION = 326, + KW_EXTERN = 327, + KW_EXPLICIT = 328, + KW_PUBLISHED = 329, + KW_FALSE = 330, + KW_FINAL = 331, + KW_FLOAT = 332, + KW_FRIEND = 333, + KW_FOR = 334, + KW_GOTO = 335, + KW_HAS_VIRTUAL_DESTRUCTOR = 336, + KW_IF = 337, + KW_INLINE = 338, + KW_INT = 339, + KW_IS_ABSTRACT = 340, + KW_IS_BASE_OF = 341, + KW_IS_CLASS = 342, + KW_IS_CONSTRUCTIBLE = 343, + KW_IS_CONVERTIBLE_TO = 344, + KW_IS_DESTRUCTIBLE = 345, + KW_IS_EMPTY = 346, + KW_IS_ENUM = 347, + KW_IS_FINAL = 348, + KW_IS_FUNDAMENTAL = 349, + KW_IS_POD = 350, + KW_IS_POLYMORPHIC = 351, + KW_IS_STANDARD_LAYOUT = 352, + KW_IS_TRIVIAL = 353, + KW_IS_UNION = 354, + KW_LONG = 355, + KW_MAKE_MAP_PROPERTY = 356, + KW_MAKE_PROPERTY = 357, + KW_MAKE_PROPERTY2 = 358, + KW_MAKE_SEQ = 359, + KW_MAKE_SEQ_PROPERTY = 360, + KW_MUTABLE = 361, + KW_NAMESPACE = 362, + KW_NEW = 363, + KW_NOEXCEPT = 364, + KW_NULLPTR = 365, + KW_OPERATOR = 366, + KW_OVERRIDE = 367, + KW_PRIVATE = 368, + KW_PROTECTED = 369, + KW_PUBLIC = 370, + KW_REGISTER = 371, + KW_REINTERPRET_CAST = 372, + KW_RETURN = 373, + KW_SHORT = 374, + KW_SIGNED = 375, + KW_SIZEOF = 376, + KW_STATIC = 377, + KW_STATIC_ASSERT = 378, + KW_STATIC_CAST = 379, + KW_STRUCT = 380, + KW_TEMPLATE = 381, + KW_THREAD_LOCAL = 382, + KW_THROW = 383, + KW_TRUE = 384, + KW_TRY = 385, + KW_TYPEDEF = 386, + KW_TYPEID = 387, + KW_TYPENAME = 388, + KW_UNDERLYING_TYPE = 389, + KW_UNION = 390, + KW_UNSIGNED = 391, + KW_USING = 392, + KW_VIRTUAL = 393, + KW_VOID = 394, + KW_VOLATILE = 395, + KW_WCHAR_T = 396, + KW_WHILE = 397, + START_CPP = 398, + START_CONST_EXPR = 399, + START_TYPE = 400 + }; #endif /* Tokens. */ #define REAL 258 @@ -233,122 +236,140 @@ extern int cppyydebug; #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 +#define ATTR_LEFT 302 +#define ATTR_RIGHT 303 +#define KW_ALIGNAS 304 +#define KW_ALIGNOF 305 +#define KW_AUTO 306 +#define KW_BEGIN_PUBLISH 307 +#define KW_BLOCKING 308 +#define KW_BOOL 309 +#define KW_CATCH 310 +#define KW_CHAR 311 +#define KW_CHAR16_T 312 +#define KW_CHAR32_T 313 +#define KW_CLASS 314 +#define KW_CONST 315 +#define KW_CONSTEXPR 316 +#define KW_CONST_CAST 317 +#define KW_DECLTYPE 318 +#define KW_DEFAULT 319 +#define KW_DELETE 320 +#define KW_DOUBLE 321 +#define KW_DYNAMIC_CAST 322 +#define KW_ELSE 323 +#define KW_END_PUBLISH 324 +#define KW_ENUM 325 +#define KW_EXTENSION 326 +#define KW_EXTERN 327 +#define KW_EXPLICIT 328 +#define KW_PUBLISHED 329 +#define KW_FALSE 330 +#define KW_FINAL 331 +#define KW_FLOAT 332 +#define KW_FRIEND 333 +#define KW_FOR 334 +#define KW_GOTO 335 +#define KW_HAS_VIRTUAL_DESTRUCTOR 336 +#define KW_IF 337 +#define KW_INLINE 338 +#define KW_INT 339 +#define KW_IS_ABSTRACT 340 +#define KW_IS_BASE_OF 341 +#define KW_IS_CLASS 342 +#define KW_IS_CONSTRUCTIBLE 343 +#define KW_IS_CONVERTIBLE_TO 344 +#define KW_IS_DESTRUCTIBLE 345 +#define KW_IS_EMPTY 346 +#define KW_IS_ENUM 347 +#define KW_IS_FINAL 348 +#define KW_IS_FUNDAMENTAL 349 +#define KW_IS_POD 350 +#define KW_IS_POLYMORPHIC 351 +#define KW_IS_STANDARD_LAYOUT 352 +#define KW_IS_TRIVIAL 353 +#define KW_IS_UNION 354 +#define KW_LONG 355 +#define KW_MAKE_MAP_PROPERTY 356 +#define KW_MAKE_PROPERTY 357 +#define KW_MAKE_PROPERTY2 358 +#define KW_MAKE_SEQ 359 +#define KW_MAKE_SEQ_PROPERTY 360 +#define KW_MUTABLE 361 +#define KW_NAMESPACE 362 +#define KW_NEW 363 +#define KW_NOEXCEPT 364 +#define KW_NULLPTR 365 +#define KW_OPERATOR 366 +#define KW_OVERRIDE 367 +#define KW_PRIVATE 368 +#define KW_PROTECTED 369 +#define KW_PUBLIC 370 +#define KW_REGISTER 371 +#define KW_REINTERPRET_CAST 372 +#define KW_RETURN 373 +#define KW_SHORT 374 +#define KW_SIGNED 375 +#define KW_SIZEOF 376 +#define KW_STATIC 377 +#define KW_STATIC_ASSERT 378 +#define KW_STATIC_CAST 379 +#define KW_STRUCT 380 +#define KW_TEMPLATE 381 +#define KW_THREAD_LOCAL 382 +#define KW_THROW 383 +#define KW_TRUE 384 +#define KW_TRY 385 +#define KW_TYPEDEF 386 +#define KW_TYPEID 387 +#define KW_TYPENAME 388 +#define KW_UNDERLYING_TYPE 389 +#define KW_UNION 390 +#define KW_UNSIGNED 391 +#define KW_USING 392 +#define KW_VIRTUAL 393 +#define KW_VOID 394 +#define KW_VOLATILE 395 +#define KW_WCHAR_T 396 +#define KW_WHILE 397 +#define START_CPP 398 +#define START_CONST_EXPR 399 +#define START_TYPE 400 -/* Value type. */ -/* Location type. */ + +#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + +# define yystype YYSTYPE /* obsolescent; will be withdrawn */ +# define YYSTYPE_IS_DECLARED 1 +#endif + #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED -typedef struct YYLTYPE YYLTYPE; -struct YYLTYPE +typedef struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; -}; +} YYLTYPE; +# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif - +#ifdef YYPARSE_PARAM +#if defined __STDC__ || defined __cplusplus +int cppyyparse (void *YYPARSE_PARAM); +#else +int cppyyparse (); +#endif +#else /* ! YYPARSE_PARAM */ +#if defined __STDC__ || defined __cplusplus int cppyyparse (void); +#else +int cppyyparse (); +#endif +#endif /* ! YYPARSE_PARAM */ -#endif /* !YY_CPPYY_BUILT_TMP_CPPBISON_YXX_H_INCLUDED */ +#endif /* !YY_CPPYY_BUILT_X64_TMP_CPPBISON_YXX_H_INCLUDED */ From ad34bc3eb8e778277c40e274a6c1b66d926e35ef Mon Sep 17 00:00:00 2001 From: Younguk Kim Date: Thu, 26 Jan 2017 00:16:26 +0900 Subject: [PATCH 05/29] Fix include guard typo. --- panda/src/parametrics/parametricCurveCollection.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/panda/src/parametrics/parametricCurveCollection.h b/panda/src/parametrics/parametricCurveCollection.h index 42a84c7861..1f4ab5c2cb 100644 --- a/panda/src/parametrics/parametricCurveCollection.h +++ b/panda/src/parametrics/parametricCurveCollection.h @@ -11,8 +11,8 @@ * @date 2001-03-04 */ -#ifndef NODEPATHCOLLECTION_H -#define NODEPATHCOLLECTION_H +#ifndef PARAMETRICCURVECOLLECTION_H +#define PARAMETRICCURVECOLLECTION_H #include "pandabase.h" From 8696dcea2c71bf675e74eb963acda63fb17eb9c2 Mon Sep 17 00:00:00 2001 From: fireclawthefox Date: Thu, 26 Jan 2017 11:25:52 +0100 Subject: [PATCH 06/29] Fixed deprecated usage of NodePath.remove in directtools --- direct/src/directtools/DirectCameraControl.py | 2 +- direct/src/directtools/DirectManipulation.py | 6 +++--- direct/src/directtools/DirectSession.py | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/direct/src/directtools/DirectCameraControl.py b/direct/src/directtools/DirectCameraControl.py index 2913260c57..7870fb09f5 100644 --- a/direct/src/directtools/DirectCameraControl.py +++ b/direct/src/directtools/DirectCameraControl.py @@ -413,7 +413,7 @@ class DirectCameraControl(DirectObject): np = NodePath('temp') np.setPos(base.direct.camera, hitPt) self.coaMarkerPos = np.getPos() - np.remove() + np.removeNode() self.coaMarker.setPos(self.coaMarkerPos) iRay.collisionNodePath.removeNode() diff --git a/direct/src/directtools/DirectManipulation.py b/direct/src/directtools/DirectManipulation.py index 3ebc697400..d7aeb1ee3b 100644 --- a/direct/src/directtools/DirectManipulation.py +++ b/direct/src/directtools/DirectManipulation.py @@ -186,7 +186,7 @@ class DirectManipulationControl(DirectObject): def drawMarquee(self, startX, startY): if self.marquee: - self.marquee.remove() + self.marquee.removeNode() self.marquee = None if base.direct.cameraControl.useMayaCamControls and base.direct.fAlt: @@ -228,7 +228,7 @@ class DirectManipulationControl(DirectObject): skipFlags |= SKIP_CAMERA * (1 - base.getControl()) if self.marquee: - self.marquee.remove() + self.marquee.removeNode() self.marquee = None base.direct.deselectAll() @@ -1691,7 +1691,7 @@ class ObjectHandles(NodePath, DirectObject): np.setPos(base.direct.camera, hitPt) resultPt = Point3(0) resultPt.assign(np.getPos()) - np.remove() + np.removeNode() del iRay return resultPt diff --git a/direct/src/directtools/DirectSession.py b/direct/src/directtools/DirectSession.py index 96f8bdb610..367b753064 100644 --- a/direct/src/directtools/DirectSession.py +++ b/direct/src/directtools/DirectSession.py @@ -900,7 +900,7 @@ class DirectSession(DirectObject): # If nothing specified, try selected node path nodePath = self.selected.last if nodePath: - nodePath.remove() + nodePath.removeNode() def removeAllSelected(self): self.selected.removeAll() From 78d14fcce3d4fc1030a1698c41086d10ace41c0b Mon Sep 17 00:00:00 2001 From: fireclawthefox Date: Thu, 26 Jan 2017 11:26:31 +0100 Subject: [PATCH 07/29] Fixed function name getChildren is expected in the MemoryExplorer and not getChildrenAsList getChildren is also more convenient to the rest of the p3d source --- direct/src/tkwidgets/MemoryExplorer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/direct/src/tkwidgets/MemoryExplorer.py b/direct/src/tkwidgets/MemoryExplorer.py index 62e74a6202..04e81875a0 100755 --- a/direct/src/tkwidgets/MemoryExplorer.py +++ b/direct/src/tkwidgets/MemoryExplorer.py @@ -284,7 +284,7 @@ class MemoryExplorerItem: def getNumChildren(self): return len(self.children) - def getChildrenAsList(self): + def getChildren(self): return self.children def getName(self): From 3318e254b863a4a4d747cdda7e0930ad15c300a0 Mon Sep 17 00:00:00 2001 From: fireclawthefox Date: Thu, 26 Jan 2017 11:26:48 +0100 Subject: [PATCH 08/29] Make the scene graph explorer occupy the empty space Expand the sge to fill up the otherwise unused space below it, which is useful for larger scenes. --- direct/src/tkpanels/DirectSessionPanel.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/direct/src/tkpanels/DirectSessionPanel.py b/direct/src/tkpanels/DirectSessionPanel.py index 65a262eda3..b40583cda3 100644 --- a/direct/src/tkpanels/DirectSessionPanel.py +++ b/direct/src/tkpanels/DirectSessionPanel.py @@ -177,8 +177,8 @@ class DirectSessionPanel(AppShell): sgeFrame, nodePath = render, scrolledCanvas_hull_width = 250, scrolledCanvas_hull_height = 300) - self.SGE.pack(fill = BOTH, expand = 0) - sgeFrame.pack(side = LEFT, fill = 'both', expand = 0) + self.SGE.pack(fill = BOTH, expand = 1) + sgeFrame.pack(side = LEFT, fill = 'both', expand = 1) # Create the notebook pages notebook = Pmw.NoteBook(notebookFrame) From c3a196860a8605a3a7dddf39e6b0203dd85d7ec3 Mon Sep 17 00:00:00 2001 From: rdb Date: Sat, 28 Jan 2017 17:41:09 +0100 Subject: [PATCH 09/29] downloader: support TLS SNI when negotiating with SSL server --- panda/src/downloader/httpChannel.cxx | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/panda/src/downloader/httpChannel.cxx b/panda/src/downloader/httpChannel.cxx index 96980fdfaa..3c90d63c3c 100644 --- a/panda/src/downloader/httpChannel.cxx +++ b/panda/src/downloader/httpChannel.cxx @@ -1474,6 +1474,14 @@ run_setup_ssl() { return false; } + string hostname = _request.get_url().get_server(); + result = SSL_set_tlsext_host_name(ssl, hostname.c_str()); + if (result == 0) { + downloader_cat.error() + << _NOTIFY_HTTP_CHANNEL_ID + << "Could not set TLS SNI hostname to '" << hostname << "'\n"; + } + /* * It would be nice to use something like SSL_set_client_cert_cb() here to set * a callback to provide the certificate should it be requested, or even to From cfe810ace70a685441aef757ee7b0ec4680be105 Mon Sep 17 00:00:00 2001 From: rdb Date: Mon, 6 Feb 2017 13:16:27 +0100 Subject: [PATCH 10/29] Add set_shader_inputs for efficiently setting multiple shader inputs --- dtool/src/interrogate/functionRemap.cxx | 11 +- dtool/src/interrogate/functionRemap.h | 1 + .../interfaceMakerPythonNative.cxx | 43 +++- panda/src/pgraph/nodePath.h | 2 + panda/src/pgraph/nodePath_ext.cxx | 216 ++++++++++++++++++ panda/src/pgraph/nodePath_ext.h | 2 + panda/src/pgraph/shaderAttrib.h | 3 + 7 files changed, 266 insertions(+), 12 deletions(-) diff --git a/dtool/src/interrogate/functionRemap.cxx b/dtool/src/interrogate/functionRemap.cxx index 6659a310db..085d9421d1 100644 --- a/dtool/src/interrogate/functionRemap.cxx +++ b/dtool/src/interrogate/functionRemap.cxx @@ -791,6 +791,15 @@ setup_properties(const InterrogateFunction &ifunc, InterfaceMaker *interface_mak _args_type = InterfaceMaker::AT_single_arg; } else { _args_type = InterfaceMaker::AT_varargs; + + // If the arguments are named "args" and "kwargs", we will be directly + // passing the argument tuples to the function. + if (_parameters.size() == first_param + 2 && + _parameters[first_param]._name == "args" && + (_parameters[first_param + 1]._name == "kwargs" || + _parameters[first_param + 1]._name == "kwds")) { + _flags |= F_explicit_args; + } } switch (_type) { @@ -890,7 +899,7 @@ setup_properties(const InterrogateFunction &ifunc, InterfaceMaker *interface_mak if (_args_type == InterfaceMaker::AT_varargs) { // Every other method can take keyword arguments, if they take more // than one argument. - _args_type = InterfaceMaker::AT_keyword_args; + _args_type |= InterfaceMaker::AT_keyword_args; } } break; diff --git a/dtool/src/interrogate/functionRemap.h b/dtool/src/interrogate/functionRemap.h index 72e18cf09e..b4b8aea6dd 100644 --- a/dtool/src/interrogate/functionRemap.h +++ b/dtool/src/interrogate/functionRemap.h @@ -100,6 +100,7 @@ public: F_coerce_constructor = 0x1000, F_divide_float = 0x2000, F_hash = 0x4000, + F_explicit_args = 0x8000, }; typedef vector Parameters; diff --git a/dtool/src/interrogate/interfaceMakerPythonNative.cxx b/dtool/src/interrogate/interfaceMakerPythonNative.cxx index f24839d331..2b51f87689 100644 --- a/dtool/src/interrogate/interfaceMakerPythonNative.cxx +++ b/dtool/src/interrogate/interfaceMakerPythonNative.cxx @@ -3453,7 +3453,13 @@ write_function_for_name(ostream &out, Object *obj, max_required_args = collapse_default_remaps(map_sets, max_required_args); } - if (map_sets.size() > 1 && (args_type == AT_varargs || args_type == AT_keyword_args)) { + if (remap->_flags & FunctionRemap::F_explicit_args) { + // We have a remap that wants to handle the wrapper itself. + string expected_params; + write_function_instance(out, remap, 0, 0, expected_params, 2, true, true, + args_type, return_flags); + + } else if (map_sets.size() > 1 && (args_type == AT_varargs || args_type == AT_keyword_args)) { switch (args_type) { case AT_keyword_args: indent(out, 2) << "int parameter_count = (int)PyTuple_Size(args);\n"; @@ -4536,19 +4542,23 @@ write_function_instance(ostream &out, FunctionRemap *remap, expected_params += methodNameFromCppName(remap, "", false); expected_params += "("; - int num_params = max_num_args; - if (remap->_has_this) { - num_params += 1; - } - if (num_params > (int)remap->_parameters.size()) { - // Limit to how many parameters this remap actually has. - num_params = (int)remap->_parameters.size(); - max_num_args = num_params; + int num_params = 0; + + if ((remap->_flags & FunctionRemap::F_explicit_args) == 0) { + num_params = max_num_args; if (remap->_has_this) { - --max_num_args; + num_params += 1; } + if (num_params > (int)remap->_parameters.size()) { + // Limit to how many parameters this remap actually has. + num_params = (int)remap->_parameters.size(); + max_num_args = num_params; + if (remap->_has_this) { + --max_num_args; + } + } + nassertv(num_params <= (int)remap->_parameters.size()); } - nassertv(num_params <= (int)remap->_parameters.size()); bool only_pyobjects = true; @@ -4584,6 +4594,17 @@ write_function_instance(ostream &out, FunctionRemap *remap, } } + if (remap->_flags & FunctionRemap::F_explicit_args) { + // The function handles the arguments by itself. + expected_params += "*args"; + pexprs.push_back("args"); + if (args_type == AT_keyword_args) { + expected_params += ", **kwargs"; + pexprs.push_back("kwds"); + } + num_params = 0; + } + // Now convert (the rest of the) actual arguments, one by one. for (; pn < num_params; ++pn) { ParameterRemap *param = remap->_parameters[pn]._remap; diff --git a/panda/src/pgraph/nodePath.h b/panda/src/pgraph/nodePath.h index 1bbe0845cf..6aeeda6d01 100644 --- a/panda/src/pgraph/nodePath.h +++ b/panda/src/pgraph/nodePath.h @@ -659,6 +659,8 @@ PUBLISHED: INLINE void set_shader_input(CPT_InternalName id, PN_stdfloat n1, PN_stdfloat n2=0, PN_stdfloat n3=0, PN_stdfloat n4=0, int priority=0); + EXTENSION(void set_shader_inputs(PyObject *args, PyObject *kwargs)); + void clear_shader_input(CPT_InternalName id); void set_instance_count(int instance_count); diff --git a/panda/src/pgraph/nodePath_ext.cxx b/panda/src/pgraph/nodePath_ext.cxx index 081a69a814..60cbe19a1c 100644 --- a/panda/src/pgraph/nodePath_ext.cxx +++ b/panda/src/pgraph/nodePath_ext.cxx @@ -13,6 +13,7 @@ #include "nodePath_ext.h" #include "typedWritable_ext.h" +#include "shaderAttrib.h" #ifdef HAVE_PYTHON @@ -24,6 +25,35 @@ extern struct Dtool_PyTypedObject Dtool_LPoint3d; #else extern struct Dtool_PyTypedObject Dtool_LPoint3f; #endif +extern struct Dtool_PyTypedObject Dtool_Texture; +extern struct Dtool_PyTypedObject Dtool_NodePath; +extern struct Dtool_PyTypedObject Dtool_PointerToArray_float; +extern struct Dtool_PyTypedObject Dtool_PointerToArray_double; +extern struct Dtool_PyTypedObject Dtool_PointerToArray_int; +extern struct Dtool_PyTypedObject Dtool_PointerToArray_UnalignedLVecBase4f; +extern struct Dtool_PyTypedObject Dtool_PointerToArray_LVecBase3f; +extern struct Dtool_PyTypedObject Dtool_PointerToArray_LVecBase2f; +extern struct Dtool_PyTypedObject Dtool_PointerToArray_UnalignedLMatrix4f; +extern struct Dtool_PyTypedObject Dtool_PointerToArray_LMatrix3f; +extern struct Dtool_PyTypedObject Dtool_PointerToArray_UnalignedLVecBase4d; +extern struct Dtool_PyTypedObject Dtool_PointerToArray_LVecBase3d; +extern struct Dtool_PyTypedObject Dtool_PointerToArray_LVecBase2d; +extern struct Dtool_PyTypedObject Dtool_PointerToArray_UnalignedLMatrix4d; +extern struct Dtool_PyTypedObject Dtool_PointerToArray_LMatrix3d; +extern struct Dtool_PyTypedObject Dtool_PointerToArray_UnalignedLVecBase4i; +extern struct Dtool_PyTypedObject Dtool_PointerToArray_LVecBase3i; +extern struct Dtool_PyTypedObject Dtool_PointerToArray_LVecBase2i; +extern struct Dtool_PyTypedObject Dtool_LVecBase4f; +extern struct Dtool_PyTypedObject Dtool_LVecBase3f; +extern struct Dtool_PyTypedObject Dtool_LVecBase2f; +extern struct Dtool_PyTypedObject Dtool_LVecBase4d; +extern struct Dtool_PyTypedObject Dtool_LVecBase3d; +extern struct Dtool_PyTypedObject Dtool_LVecBase2d; +extern struct Dtool_PyTypedObject Dtool_LVecBase4i; +extern struct Dtool_PyTypedObject Dtool_LVecBase3i; +extern struct Dtool_PyTypedObject Dtool_LVecBase2i; +extern struct Dtool_PyTypedObject Dtool_ShaderBuffer; +extern struct Dtool_PyTypedObject Dtool_ParamValueBase; #endif // CPPPARSER /** @@ -211,6 +241,192 @@ py_decode_NodePath_from_bam_stream_persist(PyObject *unpickler, const string &da return NodePath::decode_from_bam_stream(data, reader); } +/** + * Sets multiple shader inputs at the same time. This can be significantly + * more efficient if many inputs need to be set at the same time. + */ +void Extension:: +set_shader_inputs(PyObject *args, PyObject *kwargs) { + if (PyObject_Size(args) > 0) { + Dtool_Raise_TypeError("NodePath.set_shader_inputs takes only keyword arguments"); + return; + } + + PT(PandaNode) node = _this->node(); + CPT(RenderAttrib) prev_attrib = node->get_attrib(ShaderAttrib::get_class_slot()); + PT(ShaderAttrib) attrib; + if (prev_attrib == nullptr) { + attrib = new ShaderAttrib(); + } else { + attrib = new ShaderAttrib(*(const ShaderAttrib *)prev_attrib.p()); + } + + PyObject *key, *value; + Py_ssize_t pos = 0; + + while (PyDict_Next(kwargs, &pos, &key, &value)) { + char *buffer; + Py_ssize_t length; +#if PY_MAJOR_VERSION >= 3 + buffer = (char *)PyUnicode_AsUTF8AndSize(key, &length); + if (buffer == nullptr) { +#else + if (PyString_AsStringAndSize(key, &buffer, &length) == -1) { +#endif + Dtool_Raise_TypeError("NodePath.set_shader_inputs accepts only string keywords"); + return; + } + + CPT_InternalName name(string(buffer, length)); + ShaderInput *input = nullptr; + + if (PyTuple_CheckExact(value)) { + // A tuple is interpreted as a vector. + Py_ssize_t size = PyTuple_GET_SIZE(value); + if (size > 4) { + Dtool_Raise_TypeError("NodePath.set_shader_inputs tuple input should not have more than 4 scalars"); + return; + } + // If any of them is a float, we are storing it as a float vector. + bool is_float = false; + for (Py_ssize_t i = 0; i < size; ++i) { + if (PyFloat_CheckExact(PyTuple_GET_ITEM(value, i))) { + is_float = true; + break; + } + } + if (is_float) { + LVecBase4 vec(0); + for (Py_ssize_t i = 0; i < size; ++i) { + vec[i] = (PN_stdfloat)PyFloat_AsDouble(PyTuple_GET_ITEM(value, i)); + } + input = new ShaderInput(name, vec); + } else { + LVecBase4i vec(0); + for (Py_ssize_t i = 0; i < size; ++i) { + vec[i] = (int)PyLong_AsLong(PyTuple_GET_ITEM(value, i)); + } + input = new ShaderInput(name, vec); + } + + } else if (DtoolCanThisBeAPandaInstance(value)) { + Dtool_PyInstDef *inst = (Dtool_PyInstDef *)value; + void *ptr; + + if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_Texture))) { + input = new ShaderInput(name, (Texture *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_NodePath))) { + input = new ShaderInput(name, *(const NodePath *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_PointerToArray_float))) { + input = new ShaderInput(name, *(const PTA_float *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_PointerToArray_double))) { + input = new ShaderInput(name, *(const PTA_double *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_PointerToArray_int))) { + input = new ShaderInput(name, *(const PTA_int *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_PointerToArray_UnalignedLVecBase4f))) { + input = new ShaderInput(name, *(const PTA_LVecBase4f *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_PointerToArray_LVecBase3f))) { + input = new ShaderInput(name, *(const PTA_LVecBase3f *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_PointerToArray_LVecBase2f))) { + input = new ShaderInput(name, *(const PTA_LVecBase2f *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_PointerToArray_UnalignedLMatrix4f))) { + input = new ShaderInput(name, *(const PTA_LMatrix4f *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_PointerToArray_LMatrix3f))) { + input = new ShaderInput(name, *(const PTA_LMatrix3f *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_PointerToArray_UnalignedLVecBase4d))) { + input = new ShaderInput(name, *(const PTA_LVecBase4d *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_PointerToArray_LVecBase3d))) { + input = new ShaderInput(name, *(const PTA_LVecBase3d *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_PointerToArray_LVecBase2d))) { + input = new ShaderInput(name, *(const PTA_LVecBase2d *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_PointerToArray_UnalignedLMatrix4d))) { + input = new ShaderInput(name, *(const PTA_LMatrix4d *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_PointerToArray_LMatrix3d))) { + input = new ShaderInput(name, *(const PTA_LMatrix3d *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_PointerToArray_UnalignedLVecBase4i))) { + input = new ShaderInput(name, *(const PTA_LVecBase4i *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_PointerToArray_LVecBase3i))) { + input = new ShaderInput(name, *(const PTA_LVecBase3i *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_PointerToArray_LVecBase2i))) { + input = new ShaderInput(name, *(const PTA_LVecBase2i *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_LVecBase4f))) { + input = new ShaderInput(name, *(const LVecBase4f *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_LVecBase3f))) { + input = new ShaderInput(name, *(const LVecBase3f *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_LVecBase2f))) { + input = new ShaderInput(name, *(const LVecBase2f *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_LVecBase4d))) { + input = new ShaderInput(name, *(const LVecBase4d *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_LVecBase3d))) { + input = new ShaderInput(name, *(const LVecBase3d *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_LVecBase2d))) { + input = new ShaderInput(name, *(const LVecBase2d *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_LVecBase4i))) { + input = new ShaderInput(name, *(const LVecBase4i *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_LVecBase3i))) { + input = new ShaderInput(name, *(const LVecBase3i *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_LVecBase2i))) { + input = new ShaderInput(name, *(const LVecBase2i *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_ShaderBuffer))) { + input = new ShaderInput(name, (ShaderBuffer *)ptr); + + } else if ((ptr = inst->_My_Type->_Dtool_UpcastInterface(value, &Dtool_ParamValueBase))) { + input = new ShaderInput(name, (ParamValueBase *)ptr); + + } else { + Dtool_Raise_TypeError("unknown type passed to NodePath.set_shader_inputs"); + return; + } + + } else if (PyFloat_Check(value)) { + input = new ShaderInput(name, LVecBase4(PyFloat_AS_DOUBLE(value), 0, 0, 0)); + +#if PY_MAJOR_VERSION < 3 + } else if (PyInt_Check(value)) { + input = new ShaderInput(name, LVecBase4i((int)PyInt_AS_LONG(value), 0, 0, 0)); +#endif + + } else if (PyLong_Check(value)) { + input = new ShaderInput(name, LVecBase4i((int)PyLong_AsLong(value), 0, 0, 0)); + + } else { + Dtool_Raise_TypeError("unknown type passed to NodePath.set_shader_inputs"); + return; + } + + attrib->_inputs[move(name)] = input; + } + + node->set_attrib(ShaderAttrib::return_new(attrib)); +} + /** * Returns the tight bounds as a 2-tuple of LPoint3 objects. This is a * convenience function for Python users, among which the use of diff --git a/panda/src/pgraph/nodePath_ext.h b/panda/src/pgraph/nodePath_ext.h index 3b0b8db42a..44c78378db 100644 --- a/panda/src/pgraph/nodePath_ext.h +++ b/panda/src/pgraph/nodePath_ext.h @@ -49,6 +49,8 @@ public: // This is defined to implement cycle detection in Python tags. INLINE int __traverse__(visitproc visit, void *arg); + void set_shader_inputs(PyObject *args, PyObject *kwargs); + PyObject *get_tight_bounds(const NodePath &other = NodePath()) const; }; diff --git a/panda/src/pgraph/shaderAttrib.h b/panda/src/pgraph/shaderAttrib.h index 5a28e929b1..ebdcca499c 100644 --- a/panda/src/pgraph/shaderAttrib.h +++ b/panda/src/pgraph/shaderAttrib.h @@ -31,6 +31,7 @@ #include "pta_LVecBase4.h" #include "pta_LVecBase3.h" #include "pta_LVecBase2.h" +#include "extension.h" /** * @@ -147,6 +148,8 @@ private: typedef pmap Inputs; Inputs _inputs; + friend class Extension; + PUBLISHED: static int get_class_slot() { return _attrib_slot; From 604d826aa38f06ed4ac7bae2bc537ad2c445bf20 Mon Sep 17 00:00:00 2001 From: rdb Date: Thu, 9 Feb 2017 14:12:08 +0100 Subject: [PATCH 11/29] Bring README.md up to date --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index ceb23f7793..a6e1a267a5 100644 --- a/README.md +++ b/README.md @@ -31,8 +31,8 @@ are included as part of the Windows 7.1 SDK. You will also need to have the third-party dependency libraries available for the build scripts to use. These are available from one of these two URLs, depending on whether you are on a 32-bit or 64-bit system: -https://www.panda3d.org/download/panda3d-1.9.2/panda3d-1.9.2-tools-win32.zip -https://www.panda3d.org/download/panda3d-1.9.2/panda3d-1.9.2-tools-win64.zip +https://www.panda3d.org/download/panda3d-1.9.3/panda3d-1.9.3-tools-win32.zip +https://www.panda3d.org/download/panda3d-1.9.3/panda3d-1.9.3-tools-win64.zip After acquiring these dependencies, you may simply build Panda3D from the command prompt using the following command: @@ -93,11 +93,11 @@ may have to use the installpanda.py script instead, which will directly copy the files into the appropriate locations on your computer. You may have to run the `ldconfig` tool in order to update your library cache after installing Panda3D. -Mac OS X --------- +macOS +----- -On Mac OS X, you will need to download a set of precompiled thirdparty packages in order to -compile Panda3D, which can be acquired from [here](https://www.panda3d.org/download/panda3d-1.9.2/panda3d-1.9.2-tools-mac.tar.gz). +On macOS, you will need to download a set of precompiled thirdparty packages in order to +compile Panda3D, which can be acquired from [here](https://www.panda3d.org/download/panda3d-1.9.3/panda3d-1.9.3-tools-mac.tar.gz). After placing the thirdparty directory inside the panda3d source directory, you may build Panda3D using a command like the following: @@ -107,7 +107,7 @@ python makepanda/makepanda.py --everything --installer ``` In order to make a universal build, pass the --universal flag. You may also -target a specific minimum Mac OS X version using the --osxtarget flag followed +target a specific minimum macOS version using the --osxtarget flag followed by the release number, eg. 10.6 or 10.7. If the build was successful, makepanda will have generated a .dmg file in From dcb793aed4b10d23e205a582e98517167eb77cbb Mon Sep 17 00:00:00 2001 From: rdb Date: Thu, 9 Feb 2017 22:56:37 +0100 Subject: [PATCH 12/29] Clean up cpuid code, make selection of cpu/mem info available on Linux, macOS and FreeBSD --- panda/src/display/displayInformation.cxx | 94 +---- panda/src/display/displayInformation.h | 18 +- panda/src/display/graphicsPipe.cxx | 172 +++++++- panda/src/display/graphicsPipe.h | 4 +- panda/src/windisplay/winGraphicsPipe.cxx | 495 +---------------------- 5 files changed, 186 insertions(+), 597 deletions(-) diff --git a/panda/src/display/displayInformation.cxx b/panda/src/display/displayInformation.cxx index 60e3a69e8b..ac357344a5 100644 --- a/panda/src/display/displayInformation.cxx +++ b/panda/src/display/displayInformation.cxx @@ -14,6 +14,13 @@ #include "graphicsStateGuardian.h" #include "displayInformation.h" +// For __rdtsc +#ifdef _MSC_VER +#include +#elif defined(__GNUC__) && !defined(__APPLE__) +#include +#endif + /** * Returns true if these two DisplayModes are identical. */ @@ -58,12 +65,6 @@ DisplayInformation:: if (_display_mode_array != NULL) { delete[] _display_mode_array; } - if (_cpu_id_data != NULL) { - delete _cpu_id_data; - } - if (_cpu_brand_string != NULL) { - delete _cpu_brand_string; - } } /** @@ -134,12 +135,6 @@ DisplayInformation() { _driver_date_day = 0; _driver_date_year = 0; - _cpu_id_version = 1; - _cpu_id_size = 0; - _cpu_id_data = 0; - - _cpu_vendor_string = 0; - _cpu_brand_string = 0; _cpu_version_information = 0; _cpu_brand_index = 0; @@ -152,7 +147,6 @@ DisplayInformation() { _num_logical_cpus = 0; _get_memory_information_function = 0; - _cpu_time_function = 0; _update_cpu_frequency_function = 0; _os_version_major = -1; @@ -493,62 +487,17 @@ get_driver_date_year() { /** * */ -int DisplayInformation:: -get_cpu_id_version() { - return _cpu_id_version; -} - -/** - * Returns the number of 32-bit values for cpu id binary data. - */ -int DisplayInformation:: -get_cpu_id_size() { - return _cpu_id_size; -} - -/** - * Returns part of cpu id binary data based on the index. - */ -unsigned int DisplayInformation:: -get_cpu_id_data(int index) { - unsigned int data; - - data = 0; - if (index >= 0 && index < _cpu_id_size) { - data = _cpu_id_data [index]; - } - - return data; +const string &DisplayInformation:: +get_cpu_vendor_string() const { + return _cpu_vendor_string; } /** * */ -const char *DisplayInformation:: -get_cpu_vendor_string() { - const char *string; - - string = _cpu_vendor_string; - if (string == 0) { - string = ""; - } - - return string; -} - -/** - * - */ -const char *DisplayInformation:: -get_cpu_brand_string() { - const char *string; - - string = _cpu_brand_string; - if (string == 0) { - string = ""; - } - - return string; +const string &DisplayInformation:: +get_cpu_brand_string() const { + return _cpu_brand_string; } /** @@ -576,18 +525,17 @@ get_cpu_frequency() { } /** - * + * Equivalent to the rdtsc processor instruction. */ uint64_t DisplayInformation:: get_cpu_time() { - uint64_t cpu_time; - - cpu_time = 0; - if (_cpu_time_function) { - cpu_time = _cpu_time_function(); - } - - return cpu_time; +#if defined(_MSC_VER) || (defined(__GNUC__) && !defined(__APPLE__)) + return __rdtsc(); +#else + unsigned int lo, hi = 0; + __asm__ __volatile__ ("rdtsc" : "=a" (lo), "=d" (hi)); + return ((uint64_t)hi << 32) | lo; +#endif } /** diff --git a/panda/src/display/displayInformation.h b/panda/src/display/displayInformation.h index 440e3e8ee8..919e400741 100644 --- a/panda/src/display/displayInformation.h +++ b/panda/src/display/displayInformation.h @@ -94,17 +94,13 @@ PUBLISHED: int get_driver_date_day(); int get_driver_date_year(); - int get_cpu_id_version(); - int get_cpu_id_size(); - unsigned int get_cpu_id_data(int index); - - const char *get_cpu_vendor_string(); - const char *get_cpu_brand_string(); + const string &get_cpu_vendor_string() const; + const string &get_cpu_brand_string() const; unsigned int get_cpu_version_information(); unsigned int get_cpu_brand_index(); uint64_t get_cpu_frequency(); - uint64_t get_cpu_time(); + static uint64_t get_cpu_time(); uint64_t get_maximum_cpu_frequency(); uint64_t get_current_cpu_frequency(); @@ -158,12 +154,9 @@ public: int _driver_date_day; int _driver_date_year; - int _cpu_id_version; - int _cpu_id_size; - unsigned int *_cpu_id_data; - char *_cpu_vendor_string; - char *_cpu_brand_string; + string _cpu_vendor_string; + string _cpu_brand_string; unsigned int _cpu_version_information; unsigned int _cpu_brand_index; @@ -176,7 +169,6 @@ public: int _num_logical_cpus; void (*_get_memory_information_function) (DisplayInformation *display_information); - uint64_t (*_cpu_time_function) (void); int (*_update_cpu_frequency_function) (int processor_number, DisplayInformation *display_information); int _os_version_major; diff --git a/panda/src/display/graphicsPipe.cxx b/panda/src/display/graphicsPipe.cxx index 996b5694ff..7bf9df67a6 100644 --- a/panda/src/display/graphicsPipe.cxx +++ b/panda/src/display/graphicsPipe.cxx @@ -18,6 +18,92 @@ #include "mutexHolder.h" #include "displayInformation.h" +#ifdef IS_LINUX +#include +#include +#endif + +#ifdef IS_OSX +#include +#endif + +#ifdef IS_FREEBSD +#include +#endif + +#if defined(__GNUC__) && !defined(__APPLE__) +// GCC and Clang offer a useful cpuid.h header. +#include +#endif + +#ifdef _MSC_VER +// MSVC has a __cpuid intrinsic. +#include +#endif + +#ifdef _WIN32 +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#include +#endif + +union cpuid_info { + char str[16]; + struct { + uint32_t eax, ebx, ecx, edx; + }; +}; + +/** + * Returns the highest cpuid leaf that is supported by the CPU. + */ +static inline uint32_t get_cpuid_max(uint32_t leaf) { +#if defined(__GNUC__) && !defined(__APPLE__) + return __get_cpuid_max(leaf, 0); +#elif defined(_MSC_VER) + uint32_t p[4] = {0}; + __cpuid((int *)p, leaf); + return p[0]; +#else + unsigned int eax = 0; + __asm__ ("cpuid\n\t" + : "=a" (eax) + : "0" (leaf)); + return eax; +#endif +} + +/** + * Gets cpuid info for the given leaf. + */ +static inline void get_cpuid(uint32_t leaf, cpuid_info &info) { +#if defined(__GNUC__) && !defined(__APPLE__) + __cpuid(leaf, info.eax, info.ebx, info.ecx, info.edx); +#elif defined(_MSC_VER) + __cpuid((int *)info.str, leaf); +#else + __asm__ ("cpuid\n\t" + : "=a" (info.eax), "=b" (info.ebx), "=c" (info.ecx), "=d" (info.edx) + : "0" (leaf)); +#endif +} + +#ifdef IS_LINUX +/** + * Updates the current memory usage statistics in the DisplayInformation. + */ +static void update_memory_info(DisplayInformation *info) { + struct sysinfo meminfo; + if (sysinfo(&meminfo) == 0) { + info->_physical_memory = meminfo.totalram; + info->_available_physical_memory = meminfo.freeram; + info->_page_file_size = meminfo.totalswap; + info->_available_page_file_size = meminfo.freeswap; + } +} +#endif + TypeHandle GraphicsPipe::_type_handle; /** @@ -38,24 +124,78 @@ GraphicsPipe() : _display_width = 0; _display_height = 0; - _display_information = new DisplayInformation ( ); -} + _display_information = new DisplayInformation(); -/** - * Don't try to copy GraphicsPipes. - */ -GraphicsPipe:: -GraphicsPipe(const GraphicsPipe &) { - _is_valid = false; - nassertv(false); -} + cpuid_info info; + const uint32_t max_cpuid = get_cpuid_max(0); + const uint32_t max_extended = get_cpuid_max(0x80000000); -/** - * Don't try to copy GraphicsPipes. - */ -void GraphicsPipe:: -operator = (const GraphicsPipe &) { - nassertv(false); + if (max_cpuid >= 1) { + get_cpuid(0, info); + swap(info.ecx, info.edx); + _display_information->_cpu_vendor_string = string(info.str + 4, 12); + + get_cpuid(1, info); + _display_information->_cpu_version_information = info.eax; + _display_information->_cpu_brand_index = info.ebx & 0xff; + } + + if (max_extended >= 0x80000004) { + string brand; + get_cpuid(0x80000002, info); + brand += string(info.str, strnlen(info.str, 16)); + get_cpuid(0x80000003, info); + brand += string(info.str, strnlen(info.str, 16)); + get_cpuid(0x80000004, info); + brand += string(info.str, strnlen(info.str, 16)); + _display_information->_cpu_brand_string = move(brand); + } + +#if defined(IS_OSX) + // macOS exposes a lot of useful information through sysctl. + size_t len = sizeof(uint64_t); + sysctlbyname("hw.memsize", &_display_information->_physical_memory, &len, NULL, 0); + len = sizeof(uint64_t); + sysctlbyname("hw.cpufrequency", &_display_information->_cpu_frequency, &len, NULL, 0); + len = sizeof(uint64_t); + sysctlbyname("hw.cpufrequency", &_display_information->_current_cpu_frequency, &len, NULL, 0); + len = sizeof(uint64_t); + sysctlbyname("hw.cpufrequency_max", &_display_information->_maximum_cpu_frequency, &len, NULL, 0); + len = sizeof(int); + sysctlbyname("hw.physicalcpu", &_display_information->_num_cpu_cores, &len, NULL, 0); + len = sizeof(int); + sysctlbyname("hw.logicalcpu", &_display_information->_num_logical_cpus, &len, NULL, 0); + +#elif defined(IS_LINUX) + _display_information->_get_memory_information_function = &update_memory_info; + update_memory_info(_display_information); + +#elif defined(IS_FREEBSD) + size_t len = sizeof(uint64_t); + sysctlbyname("hw.physmem", &_display_information->_physical_memory, &len, NULL, 0); + len = sizeof(uint64_t); + sysctlbyname("vm.swap_total", &_display_information->_page_file_size, &len, NULL, 0); + +#elif defined(_WIN32) + MEMORYSTATUSEX status; + status.dwLength = sizeof(MEMORYSTATUSEX); + if (GlobalMemoryStatusEx(&status)) { + _display_information->_physical_memory = status.ullTotalPhys; + _display_information->_available_physical_memory = status.ullAvailPhys; + _display_information->_page_file_size = status.ullTotalPageFile; + _display_information->_available_page_file_size = status.ullAvailPageFile; + _display_information->_process_virtual_memory = status.ullTotalVirtual; + _display_information->_available_process_virtual_memory = status.ullAvailVirtual; + _display_information->_memory_load = status.dwMemoryLoad; + } +#endif + +#if defined(IS_LINUX) || defined(IS_FREEBSD) + long nproc = sysconf(_SC_NPROCESSORS_CONF); + if (nproc > 0) { + _display_information->_num_logical_cpus = nproc; + } +#endif } /** diff --git a/panda/src/display/graphicsPipe.h b/panda/src/display/graphicsPipe.h index 462fa3afcf..f7994b92e1 100644 --- a/panda/src/display/graphicsPipe.h +++ b/panda/src/display/graphicsPipe.h @@ -53,8 +53,8 @@ class EXPCL_PANDA_DISPLAY GraphicsPipe : public TypedReferenceCount { protected: GraphicsPipe(); private: - GraphicsPipe(const GraphicsPipe ©); - void operator = (const GraphicsPipe ©); + GraphicsPipe(const GraphicsPipe ©) DELETED; + GraphicsPipe &operator = (const GraphicsPipe ©) DELETED_ASSIGN; PUBLISHED: virtual ~GraphicsPipe(); diff --git a/panda/src/windisplay/winGraphicsPipe.cxx b/panda/src/windisplay/winGraphicsPipe.cxx index 3d584de226..cf76e06296 100644 --- a/panda/src/windisplay/winGraphicsPipe.cxx +++ b/panda/src/windisplay/winGraphicsPipe.cxx @@ -20,10 +20,7 @@ #include "psapi.h" #include "powrprof.h" - -#ifdef _WIN64 #include -#endif TypeHandle WinGraphicsPipe::_type_handle; @@ -99,443 +96,6 @@ void get_memory_information (DisplayInformation *display_information) { } } -typedef union { - uint64_t long_integer; -} -LONG_INTEGER; - -uint64_t cpu_time_function (void) { -#ifdef _WIN64 - return __rdtsc(); -#else - LONG_INTEGER long_integer; - LONG_INTEGER *long_integer_pointer; - - long_integer_pointer = &long_integer; - - __asm { - mov ebx,[long_integer_pointer] - rdtsc - mov [ebx + 0], eax - mov [ebx + 4], edx - } - - return long_integer.long_integer; -#endif -} - -typedef union { - struct { - union { - struct { - unsigned char al; - unsigned char ah; - }; - unsigned int eax; - }; - unsigned int ebx; - unsigned int ecx; - unsigned int edx; - }; -} CPU_ID_REGISTERS; - -typedef struct { - union { - struct { - int maximum_cpu_id_input; - char cpu_vendor [16]; - }; - - CPU_ID_REGISTERS cpu_id_registers_0; - }; - - union { - CPU_ID_REGISTERS cpu_id_registers_1; - - struct { - // eax - union { - unsigned int eax; - unsigned int version_information; - struct { - unsigned int stepping_id : 4; - unsigned int model : 4; - unsigned int family : 4; - unsigned int processor_type : 2; - unsigned int reserved_0 : 2; - unsigned int extended_model_id : 4; - unsigned int extended_family_id : 8; - unsigned int reserved_1 : 4; - }; - }; - - // ebx - union { - unsigned int ebx; - struct { - unsigned int brand_index : 8; - unsigned int clflush : 8; - unsigned int maximum_logical_processors : 8; - unsigned int initial_apic_id : 8; - }; - }; - - // ecx - union { - unsigned int ecx; - struct { - unsigned int sse3 : 1; - unsigned int reserved_1_to_2 : 2; - unsigned int monitor : 1; - unsigned int ds_cpl : 1; - unsigned int vmx : 1; - unsigned int reserved_6 : 1; - unsigned int est : 1; - unsigned int tm2 : 1; - unsigned int reserved_9 : 1; - unsigned int cnxt_id : 1; - unsigned int reserved_11_to_12 : 2; - unsigned int cmpxchg16b : 1; - unsigned int xtpr_disable : 1; - unsigned int reserved_15_to_31 : 17; - }; - }; - - // edx - union { - unsigned int edx; - struct { - unsigned int fpu : 1; - unsigned int vme : 1; - unsigned int de : 1; - unsigned int pse : 1; - unsigned int tsc : 1; - unsigned int msr : 1; - unsigned int pae : 1; - unsigned int mce : 1; - unsigned int cx8 : 1; - unsigned int apic : 1; - unsigned int reserved_10 : 1; - unsigned int sep : 1; - unsigned int mtrr : 1; - unsigned int pge : 1; - unsigned int mca : 1; - unsigned int cmov : 1; - unsigned int pat : 1; - unsigned int pse_36 : 1; - unsigned int psn : 1; - unsigned int cflush : 1; - unsigned int reserved_20 : 1; - unsigned int ds : 1; - unsigned int acpi : 1; - unsigned int mmx : 1; - unsigned int fxsr : 1; - unsigned int sse : 1; - unsigned int sse2 : 1; - unsigned int ss : 1; - unsigned int htt : 1; - unsigned int tm : 1; - unsigned int reserved_30 : 1; - unsigned int pbe : 1; - }; - }; - }; - }; - - #define MAXIMUM_2 8 - #define MAXIMUM_CHARACTERS (MAXIMUM_2 * sizeof(CPU_ID_REGISTERS)) - - union { - CPU_ID_REGISTERS cpu_id_registers_2; - unsigned char character_array_2 [MAXIMUM_CHARACTERS]; - CPU_ID_REGISTERS cpu_id_registers_2_array [MAXIMUM_2]; - }; - - union { - CPU_ID_REGISTERS cpu_id_registers_0x80000000; - }; - - union { - CPU_ID_REGISTERS cpu_id_registers_0x80000001; - }; - - union { - char cpu_brand_string [sizeof(CPU_ID_REGISTERS) * 3]; - struct { - CPU_ID_REGISTERS cpu_id_registers_0x80000002; - CPU_ID_REGISTERS cpu_id_registers_0x80000003; - CPU_ID_REGISTERS cpu_id_registers_0x80000004; - }; - }; - - union { - struct { - unsigned int eax; - unsigned int ebx; - union { - unsigned int ecx; - struct { - unsigned int l1_data_cache_line_size : 8; - unsigned int l1_data_reserved_8_to_15 : 8; - unsigned int l1_data_associativity : 8; - unsigned int l1_data_cache_size : 8; - }; - }; - union { - unsigned int edx; - struct { - unsigned int l1_code_cache_line_size : 8; - unsigned int l1_code_reserved_8_to_15 : 8; - unsigned int l1_code_associativity : 8; - unsigned int l1_code_cache_size : 8; - }; - }; - }; - CPU_ID_REGISTERS cpu_id_registers_0x80000005; - }; - - union { - struct { - unsigned int eax; - unsigned int ebx; - union { - unsigned int ecx; - struct { - unsigned int l2_cache_line_size : 8; - unsigned int l2_reserved_8_to_11 : 4; - unsigned int l2_associativity : 4; - unsigned int l2_cache_size : 16; - }; - }; - unsigned int edx; - }; - CPU_ID_REGISTERS cpu_id_registers_0x80000006; - }; - - CPU_ID_REGISTERS cpu_id_registers_0x80000008; - - unsigned int cache_line_size; - unsigned int log_base_2_cache_line_size; -} CPU_ID; - -typedef struct { - CPU_ID_REGISTERS cpu_id_registers_0; - CPU_ID_REGISTERS cpu_id_registers_1; - - CPU_ID_REGISTERS cpu_id_registers_0x80000000; - CPU_ID_REGISTERS cpu_id_registers_0x80000001; - CPU_ID_REGISTERS cpu_id_registers_0x80000002; - CPU_ID_REGISTERS cpu_id_registers_0x80000003; - CPU_ID_REGISTERS cpu_id_registers_0x80000004; - - CPU_ID_REGISTERS cpu_id_registers_0x80000006; - - CPU_ID_REGISTERS cpu_id_registers_0x80000008; -} CPU_ID_BINARY_DATA; - -void cpu_id_to_cpu_id_binary_data (CPU_ID *cpu_id, CPU_ID_BINARY_DATA *cpu_id_binary_data) { - cpu_id_binary_data->cpu_id_registers_0 = cpu_id->cpu_id_registers_0; - cpu_id_binary_data->cpu_id_registers_1 = cpu_id->cpu_id_registers_1; - cpu_id_binary_data->cpu_id_registers_0x80000000 = cpu_id->cpu_id_registers_0x80000000; - cpu_id_binary_data->cpu_id_registers_0x80000001 = cpu_id->cpu_id_registers_0x80000001; - cpu_id_binary_data->cpu_id_registers_0x80000002 = cpu_id->cpu_id_registers_0x80000002; - cpu_id_binary_data->cpu_id_registers_0x80000003 = cpu_id->cpu_id_registers_0x80000003; - cpu_id_binary_data->cpu_id_registers_0x80000004 = cpu_id->cpu_id_registers_0x80000004; - cpu_id_binary_data->cpu_id_registers_0x80000006 = cpu_id->cpu_id_registers_0x80000006; - cpu_id_binary_data->cpu_id_registers_0x80000008 = cpu_id->cpu_id_registers_0x80000008; -} - -void cpu_id_binary_data_to_cpu_id (CPU_ID_BINARY_DATA *cpu_id_binary_data, CPU_ID *cpu_id) { - memset (cpu_id, 0, sizeof(CPU_ID)); - - cpu_id->cpu_id_registers_0 = cpu_id_binary_data->cpu_id_registers_0; - cpu_id->cpu_id_registers_1 = cpu_id_binary_data->cpu_id_registers_1; - cpu_id->cpu_id_registers_0x80000000 = cpu_id_binary_data->cpu_id_registers_0x80000000; - cpu_id->cpu_id_registers_0x80000001 = cpu_id_binary_data->cpu_id_registers_0x80000001; - cpu_id->cpu_id_registers_0x80000002 = cpu_id_binary_data->cpu_id_registers_0x80000002; - cpu_id->cpu_id_registers_0x80000003 = cpu_id_binary_data->cpu_id_registers_0x80000003; - cpu_id->cpu_id_registers_0x80000004 = cpu_id_binary_data->cpu_id_registers_0x80000004; - cpu_id->cpu_id_registers_0x80000006 = cpu_id_binary_data->cpu_id_registers_0x80000006; - cpu_id->cpu_id_registers_0x80000008 = cpu_id_binary_data->cpu_id_registers_0x80000008; -} - -int cpuid(int input_eax, CPU_ID_REGISTERS *cpu_id_registers) { - int state; - - state = false; - __try { - if (input_eax == 0) { - // the order of ecx and edx is swapped when saved to make a proper - // vendor string -#ifdef _WIN64 - __cpuid((int*)cpu_id_registers, input_eax); - unsigned int tmp = cpu_id_registers->edx; - cpu_id_registers->edx = cpu_id_registers->ecx; - cpu_id_registers->ecx = tmp; -#else - __asm { - mov eax, [input_eax] - mov edi, [cpu_id_registers] - - cpuid - - mov [edi + 0], eax - mov [edi + 4], ebx - mov [edi + 8], edx - mov [edi + 12], ecx - } -#endif - } else { -#ifdef _WIN64 - __cpuid((int*)cpu_id_registers, input_eax); -#else - __asm { - mov eax, [input_eax] - mov edi, [cpu_id_registers] - - cpuid - - mov [edi + 0], eax - mov [edi + 4], ebx - mov [edi + 8], ecx - mov [edi + 12], edx - } -#endif - } - - state = true; - } - __except (1) { - state = false; - } - - return state; -} - -void parse_cpu_id(CPU_ID *cpu_id) { - printf("CPUID\n"); - printf(" vendor = %s\n", cpu_id->cpu_vendor); - printf(" brand string %s\n", cpu_id->cpu_brand_string); - printf(" maximum_cpu_id_input = %u\n", cpu_id->maximum_cpu_id_input); - printf(" maximum extended information = 0x%X\n", cpu_id->cpu_id_registers_0x80000000.eax); - - printf(" MMX = %u\n", cpu_id->mmx); - printf(" SSE = %u\n", cpu_id->sse); - printf(" SSE2 = %u\n", cpu_id->sse2); - printf(" SSE3 = %u\n", cpu_id->sse3); - - printf(" EST = %u\n", cpu_id->est); - - if (cpu_id->maximum_cpu_id_input >= 1) { - printf(" version_information\n"); - printf(" stepping_id %u\n", cpu_id->stepping_id); - printf(" model %u\n", cpu_id->model); - printf(" family %u\n", cpu_id->family); - printf(" processor_type %u\n", cpu_id->processor_type); - printf(" extended_model_id %u\n", cpu_id->extended_model_id); - printf(" extended_family_id %u\n", cpu_id->extended_family_id); - - printf(" brand_index %u\n", cpu_id->brand_index); - printf(" clflush %u\n", cpu_id->clflush); - printf(" maximum_logical_processors %u\n", cpu_id->maximum_logical_processors); - printf(" initial_apic_id %u\n", cpu_id->initial_apic_id); - -// printf(" cache_line_size %u\n", cpu_id->cache_line_size); printf(" -// log_base_2_cache_line_size %u\n", cpu_id->log_base_2_cache_line_size); - } - - if (cpu_id->cpu_id_registers_0x80000000.eax >= 0x80000005) { - printf(" l1_data_cache_line_size %d\n", cpu_id->l1_data_cache_line_size); - printf(" l1_data_associativity %d\n", cpu_id->l1_data_associativity); - printf(" l1_data_cache_size %dK\n", cpu_id->l1_data_cache_size); - - printf(" l1_code_cache_line_size %d\n", cpu_id->l1_code_cache_line_size); - printf(" l1_code_associativity %d\n", cpu_id->l1_code_associativity); - printf(" l1_code_cache_size %dK\n", cpu_id->l1_code_cache_size); - } - - if (cpu_id->cpu_id_registers_0x80000000.eax >= 0x80000006) { - printf(" l2_cache_line_size %d\n", cpu_id->l2_cache_line_size); - printf(" l2_associativity %d\n", cpu_id->l2_associativity); - printf(" l2_cache_size %dK\n", cpu_id->l2_cache_size); - } -} - -int initialize_cpu_id(CPU_ID *cpu_id) { - int debug = false; - memset(cpu_id, 0, sizeof(CPU_ID)); - - if (cpuid(0, &cpu_id->cpu_id_registers_0)) { - if (cpu_id->maximum_cpu_id_input >= 1) { - cpuid(1, &cpu_id->cpu_id_registers_1); - } - if (cpu_id->maximum_cpu_id_input >= 2) { - unsigned int index; - - cpuid(2, &cpu_id->cpu_id_registers_2); - if (debug) { - printf(" al = %u\n", cpu_id->cpu_id_registers_2.al); - } - - for (index = 1; index < cpu_id->cpu_id_registers_2.al && index < MAXIMUM_2; index++) { - cpuid(2, &cpu_id->cpu_id_registers_2_array [index]); - } - - for (index = 1; index < MAXIMUM_CHARACTERS; index++) { - if (cpu_id->character_array_2 [index]) { - if (debug) { - printf(" cache/TLB byte = %X\n", cpu_id->character_array_2 [index]); - } - switch (cpu_id->character_array_2 [index]) { - case 0x0A: - case 0x0C: - cpu_id->cache_line_size = 32; - cpu_id->log_base_2_cache_line_size = 5; - break; - - case 0x2C: - case 0x60: - case 0x66: - case 0x67: - case 0x68: - cpu_id->cache_line_size = 64; - cpu_id->log_base_2_cache_line_size = 6; - break; - } - } - } - } - - cpuid(0x80000000, &cpu_id->cpu_id_registers_0x80000000); - - if (cpu_id->cpu_id_registers_0x80000000.eax >= 0x80000001) { - cpuid(0x80000001, &cpu_id->cpu_id_registers_0x80000001); - } - - if (cpu_id->cpu_id_registers_0x80000000.eax >= 0x80000004) { - cpuid(0x80000002, &cpu_id->cpu_id_registers_0x80000002); - cpuid(0x80000003, &cpu_id->cpu_id_registers_0x80000003); - cpuid(0x80000004, &cpu_id->cpu_id_registers_0x80000004); - } - - if (cpu_id->cpu_id_registers_0x80000000.eax >= 0x80000005) { - cpuid(0x80000005, &cpu_id->cpu_id_registers_0x80000005); - } - - if (cpu_id->cpu_id_registers_0x80000000.eax >= 0x80000006) { - cpuid(0x80000006, &cpu_id->cpu_id_registers_0x80000006); - } - - if (cpu_id->cpu_id_registers_0x80000000.eax >= 0x80000008) { - cpuid(0x80000008, &cpu_id->cpu_id_registers_0x80000008); - } - - return true; - } - - return false; -} - int update_cpu_frequency_function(int processor_number, DisplayInformation *display_information) { int update; @@ -776,9 +336,6 @@ lookup_cpu_data() { // set callback for memory function _display_information->_get_memory_information_function = get_memory_information; - // set callback for cpu time function - _display_information->_cpu_time_function = cpu_time_function; - // determine CPU frequency uint64_t time; uint64_t end_time; @@ -803,12 +360,12 @@ lookup_cpu_data() { if (QueryPerformanceFrequency(&frequency)) { if (frequency.QuadPart > 0) { if (QueryPerformanceCounter (&counter)) { - time = cpu_time_function(); + time = __rdtsc(); end.QuadPart = counter.QuadPart + frequency.QuadPart; while (QueryPerformanceCounter (&counter) && counter.QuadPart < end.QuadPart) { } - end_time = cpu_time_function(); + end_time = __rdtsc(); _display_information->_cpu_frequency = end_time - time; } @@ -821,54 +378,6 @@ lookup_cpu_data() { sprintf(string, "CPU frequency: %I64d\n", _display_information->_cpu_frequency); windisplay_cat.info() << string; - - // CPUID - CPU_ID cpu_id; - - windisplay_cat.info() << "start CPU ID\n"; - - if (initialize_cpu_id(&cpu_id)) { - CPU_ID_BINARY_DATA *cpu_id_binary_data; - - cpu_id_binary_data = new (CPU_ID_BINARY_DATA); - if (cpu_id_binary_data) { - cpu_id_to_cpu_id_binary_data(&cpu_id, cpu_id_binary_data); - _display_information->_cpu_id_size = sizeof(CPU_ID_BINARY_DATA) / sizeof(unsigned int); - _display_information->_cpu_id_data = (unsigned int *) cpu_id_binary_data; - - _display_information->_cpu_vendor_string = strdup(cpu_id.cpu_vendor); - _display_information->_cpu_brand_string = strdup(cpu_id.cpu_brand_string); - _display_information->_cpu_version_information = cpu_id.version_information; - _display_information->_cpu_brand_index = cpu_id.brand_index; - - if (windisplay_cat.is_debug()) { - windisplay_cat.debug() - << hex << _display_information->_cpu_id_version << dec << "|"; - - int index; - for (index = 0; index < _display_information->_cpu_id_size; ++index) { - unsigned int data; - data = _display_information->_cpu_id_data[index]; - - windisplay_cat.debug(false) - << hex << data << dec; - if (index < _display_information->_cpu_id_size - 1) { - windisplay_cat.debug(false) - << "|"; - } - } - windisplay_cat.debug(false) - << "\n"; - } - } - - if (windisplay_cat.is_debug()) { - parse_cpu_id(&cpu_id); - } - } - - windisplay_cat.info() << "end CPU ID\n"; - // Number of CPU's count_number_of_cpus(_display_information); } From 218ad7058dded4ed12223d14336f6f1fcaa27b74 Mon Sep 17 00:00:00 2001 From: rdb Date: Thu, 9 Feb 2017 23:50:14 +0100 Subject: [PATCH 13/29] pystub: definitions for debug version of Python --- dtool/src/pystub/pystub.cxx | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/dtool/src/pystub/pystub.cxx b/dtool/src/pystub/pystub.cxx index d0d6a4ca1a..1ebad938bd 100644 --- a/dtool/src/pystub/pystub.cxx +++ b/dtool/src/pystub/pystub.cxx @@ -90,6 +90,7 @@ extern "C" { EXPCL_PYSTUB int PyModule_AddObject(...); EXPCL_PYSTUB int PyModule_AddStringConstant(...); EXPCL_PYSTUB int PyModule_Create2(...); + EXPCL_PYSTUB int PyModule_Create2TraceRefs(...); EXPCL_PYSTUB int PyNumber_Check(...); EXPCL_PYSTUB int PyNumber_Float(...); EXPCL_PYSTUB int PyNumber_Int(...); @@ -175,6 +176,7 @@ extern "C" { EXPCL_PYSTUB int Py_InitModule4(...); EXPCL_PYSTUB int Py_InitModule4_64(...); EXPCL_PYSTUB int Py_InitModule4TraceRefs(...); + EXPCL_PYSTUB int Py_InitModule4TraceRefs_64(...); EXPCL_PYSTUB int _PyArg_ParseTuple_SizeT(...); EXPCL_PYSTUB int _PyArg_ParseTupleAndKeywords_SizeT(...); EXPCL_PYSTUB int _PyArg_Parse_SizeT(...); @@ -184,9 +186,14 @@ extern "C" { EXPCL_PYSTUB int _PyObject_Del(...); EXPCL_PYSTUB int _PyUnicode_AsString(...); EXPCL_PYSTUB int _PyUnicode_AsStringAndSize(...); + EXPCL_PYSTUB int _Py_AddToAllObjects(...); EXPCL_PYSTUB int _Py_BuildValue_SizeT(...); EXPCL_PYSTUB int _Py_Dealloc(...); + EXPCL_PYSTUB int _Py_ForgetReference(...); EXPCL_PYSTUB int _Py_NegativeRefcount(...); + EXPCL_PYSTUB int _Py_NewReference(...); + EXPCL_PYSTUB int _Py_PrintReferenceAddresses(...); + EXPCL_PYSTUB int _Py_PrintReferences(...); EXPCL_PYSTUB int _Py_RefTotal(...); EXPCL_PYSTUB void Py_Initialize(); @@ -292,6 +299,7 @@ int PyModule_AddIntConstant(...) { return 0; }; int PyModule_AddObject(...) { return 0; }; int PyModule_AddStringConstant(...) { return 0; }; int PyModule_Create2(...) { return 0; }; +int PyModule_Create2TraceRefs(...) { return 0; }; int PyNumber_Check(...) { return 0; } int PyNumber_Float(...) { return 0; } int PyNumber_Int(...) { return 0; } @@ -377,6 +385,7 @@ int Py_BuildValue(...) { return 0; } int Py_InitModule4(...) { return 0; } int Py_InitModule4_64(...) { return 0; } int Py_InitModule4TraceRefs(...) { return 0; }; +int Py_InitModule4TraceRefs_64(...) { return 0; }; int _PyArg_ParseTuple_SizeT(...) { return 0; }; int _PyArg_ParseTupleAndKeywords_SizeT(...) { return 0; }; int _PyArg_Parse_SizeT(...) { return 0; }; @@ -386,9 +395,14 @@ int _PyObject_DebugFree(...) { return 0; }; int _PyObject_Del(...) { return 0; }; int _PyUnicode_AsString(...) { return 0; }; int _PyUnicode_AsStringAndSize(...) { return 0; }; +int _Py_AddToAllObjects(...) { return 0; }; int _Py_BuildValue_SizeT(...) { return 0; }; int _Py_Dealloc(...) { return 0; }; +int _Py_ForgetReference(...) { return 0; }; int _Py_NegativeRefcount(...) { return 0; }; +int _Py_NewReference(...) { return 0; }; +int _Py_PrintReferenceAddresses(...) { return 0; }; +int _Py_PrintReferences(...) { return 0; }; int _Py_RefTotal(...) { return 0; }; // We actually might call this one. From 18f09c48dd87ada568463184472e6d4106cd49ed Mon Sep 17 00:00:00 2001 From: rdb Date: Thu, 9 Feb 2017 23:52:38 +0100 Subject: [PATCH 14/29] cppparser: parse template friend declaration --- dtool/src/cppparser/cppBison.cxx.prebuilt | 10760 ++++++++++---------- dtool/src/cppparser/cppBison.h.prebuilt | 337 +- dtool/src/cppparser/cppBison.yxx | 2 + 3 files changed, 5284 insertions(+), 5815 deletions(-) diff --git a/dtool/src/cppparser/cppBison.cxx.prebuilt b/dtool/src/cppparser/cppBison.cxx.prebuilt index 63f0b0ea17..f0cefb3526 100644 --- a/dtool/src/cppparser/cppBison.cxx.prebuilt +++ b/dtool/src/cppparser/cppBison.cxx.prebuilt @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 2.7. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -44,13 +44,13 @@ #define YYBISON 1 /* Bison version. */ -#define YYBISON_VERSION "2.7" +#define YYBISON_VERSION "3.0.4" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" /* Pure parsers. */ -#define YYPURE 1 +#define YYPURE 2 /* Push parsers. */ #define YYPUSH 0 @@ -63,15 +63,12 @@ #define yyparse cppyyparse #define yylex cppyylex #define yyerror cppyyerror -#define yylval cppyylval -#define yychar cppyychar #define yydebug cppyydebug #define yynerrs cppyynerrs -#define yylloc cppyylloc + /* Copy the first part of user declarations. */ -/* Line 371 of yacc.c */ -#line 7 "dtool/src/cppparser/cppBison.yxx" +#line 7 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:339 */ #include "cppBisonDefs.h" @@ -267,14 +264,13 @@ pop_struct() { } -/* Line 371 of yacc.c */ -#line 272 "built_x64/tmp/cppBison.yxx.c" +#line 268 "built/tmp/cppBison.yxx.c" /* yacc.c:339 */ -# ifndef YY_NULL +# ifndef YY_NULLPTR # if defined __cplusplus && 201103L <= __cplusplus -# define YY_NULL nullptr +# define YY_NULLPTR nullptr # else -# define YY_NULL 0 +# define YY_NULLPTR 0 # endif # endif @@ -288,9 +284,9 @@ pop_struct() { /* In a future release of Bison, this section will be replaced by #include "cppBison.yxx.h". */ -#ifndef YY_CPPYY_BUILT_X64_TMP_CPPBISON_YXX_H_INCLUDED -# define YY_CPPYY_BUILT_X64_TMP_CPPBISON_YXX_H_INCLUDED -/* Enabling traces. */ +#ifndef YY_CPPYY_BUILT_TMP_CPPBISON_YXX_H_INCLUDED +# define YY_CPPYY_BUILT_TMP_CPPBISON_YXX_H_INCLUDED +/* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif @@ -298,156 +294,155 @@ pop_struct() { extern int cppyydebug; #endif -/* Tokens. */ +/* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - REAL = 258, - INTEGER = 259, - CHAR_TOK = 260, - SIMPLE_STRING = 261, - SIMPLE_IDENTIFIER = 262, - STRING_LITERAL = 263, - CUSTOM_LITERAL = 264, - IDENTIFIER = 265, - TYPENAME_IDENTIFIER = 266, - 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, - ATTR_LEFT = 302, - ATTR_RIGHT = 303, - KW_ALIGNAS = 304, - KW_ALIGNOF = 305, - KW_AUTO = 306, - KW_BEGIN_PUBLISH = 307, - KW_BLOCKING = 308, - KW_BOOL = 309, - KW_CATCH = 310, - KW_CHAR = 311, - KW_CHAR16_T = 312, - KW_CHAR32_T = 313, - KW_CLASS = 314, - KW_CONST = 315, - KW_CONSTEXPR = 316, - KW_CONST_CAST = 317, - KW_DECLTYPE = 318, - KW_DEFAULT = 319, - KW_DELETE = 320, - KW_DOUBLE = 321, - KW_DYNAMIC_CAST = 322, - KW_ELSE = 323, - KW_END_PUBLISH = 324, - KW_ENUM = 325, - KW_EXTENSION = 326, - KW_EXTERN = 327, - KW_EXPLICIT = 328, - KW_PUBLISHED = 329, - KW_FALSE = 330, - KW_FINAL = 331, - KW_FLOAT = 332, - KW_FRIEND = 333, - KW_FOR = 334, - KW_GOTO = 335, - KW_HAS_VIRTUAL_DESTRUCTOR = 336, - KW_IF = 337, - KW_INLINE = 338, - KW_INT = 339, - KW_IS_ABSTRACT = 340, - KW_IS_BASE_OF = 341, - KW_IS_CLASS = 342, - KW_IS_CONSTRUCTIBLE = 343, - KW_IS_CONVERTIBLE_TO = 344, - KW_IS_DESTRUCTIBLE = 345, - KW_IS_EMPTY = 346, - KW_IS_ENUM = 347, - KW_IS_FINAL = 348, - KW_IS_FUNDAMENTAL = 349, - KW_IS_POD = 350, - KW_IS_POLYMORPHIC = 351, - KW_IS_STANDARD_LAYOUT = 352, - KW_IS_TRIVIAL = 353, - KW_IS_UNION = 354, - KW_LONG = 355, - KW_MAKE_MAP_PROPERTY = 356, - KW_MAKE_PROPERTY = 357, - KW_MAKE_PROPERTY2 = 358, - KW_MAKE_SEQ = 359, - KW_MAKE_SEQ_PROPERTY = 360, - KW_MUTABLE = 361, - KW_NAMESPACE = 362, - KW_NEW = 363, - KW_NOEXCEPT = 364, - KW_NULLPTR = 365, - KW_OPERATOR = 366, - KW_OVERRIDE = 367, - KW_PRIVATE = 368, - KW_PROTECTED = 369, - KW_PUBLIC = 370, - KW_REGISTER = 371, - KW_REINTERPRET_CAST = 372, - KW_RETURN = 373, - KW_SHORT = 374, - KW_SIGNED = 375, - KW_SIZEOF = 376, - KW_STATIC = 377, - KW_STATIC_ASSERT = 378, - KW_STATIC_CAST = 379, - KW_STRUCT = 380, - KW_TEMPLATE = 381, - KW_THREAD_LOCAL = 382, - KW_THROW = 383, - KW_TRUE = 384, - KW_TRY = 385, - KW_TYPEDEF = 386, - KW_TYPEID = 387, - KW_TYPENAME = 388, - KW_UNDERLYING_TYPE = 389, - KW_UNION = 390, - KW_UNSIGNED = 391, - KW_USING = 392, - KW_VIRTUAL = 393, - KW_VOID = 394, - KW_VOLATILE = 395, - KW_WCHAR_T = 396, - KW_WHILE = 397, - START_CPP = 398, - START_CONST_EXPR = 399, - START_TYPE = 400 - }; + enum yytokentype + { + REAL = 258, + INTEGER = 259, + CHAR_TOK = 260, + SIMPLE_STRING = 261, + SIMPLE_IDENTIFIER = 262, + STRING_LITERAL = 263, + CUSTOM_LITERAL = 264, + IDENTIFIER = 265, + TYPENAME_IDENTIFIER = 266, + 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, + ATTR_LEFT = 302, + ATTR_RIGHT = 303, + KW_ALIGNAS = 304, + KW_ALIGNOF = 305, + KW_AUTO = 306, + KW_BEGIN_PUBLISH = 307, + KW_BLOCKING = 308, + KW_BOOL = 309, + KW_CATCH = 310, + KW_CHAR = 311, + KW_CHAR16_T = 312, + KW_CHAR32_T = 313, + KW_CLASS = 314, + KW_CONST = 315, + KW_CONSTEXPR = 316, + KW_CONST_CAST = 317, + KW_DECLTYPE = 318, + KW_DEFAULT = 319, + KW_DELETE = 320, + KW_DOUBLE = 321, + KW_DYNAMIC_CAST = 322, + KW_ELSE = 323, + KW_END_PUBLISH = 324, + KW_ENUM = 325, + KW_EXTENSION = 326, + KW_EXTERN = 327, + KW_EXPLICIT = 328, + KW_PUBLISHED = 329, + KW_FALSE = 330, + KW_FINAL = 331, + KW_FLOAT = 332, + KW_FRIEND = 333, + KW_FOR = 334, + KW_GOTO = 335, + KW_HAS_VIRTUAL_DESTRUCTOR = 336, + KW_IF = 337, + KW_INLINE = 338, + KW_INT = 339, + KW_IS_ABSTRACT = 340, + KW_IS_BASE_OF = 341, + KW_IS_CLASS = 342, + KW_IS_CONSTRUCTIBLE = 343, + KW_IS_CONVERTIBLE_TO = 344, + KW_IS_DESTRUCTIBLE = 345, + KW_IS_EMPTY = 346, + KW_IS_ENUM = 347, + KW_IS_FINAL = 348, + KW_IS_FUNDAMENTAL = 349, + KW_IS_POD = 350, + KW_IS_POLYMORPHIC = 351, + KW_IS_STANDARD_LAYOUT = 352, + KW_IS_TRIVIAL = 353, + KW_IS_UNION = 354, + KW_LONG = 355, + KW_MAKE_MAP_PROPERTY = 356, + KW_MAKE_PROPERTY = 357, + KW_MAKE_PROPERTY2 = 358, + KW_MAKE_SEQ = 359, + KW_MAKE_SEQ_PROPERTY = 360, + KW_MUTABLE = 361, + KW_NAMESPACE = 362, + KW_NEW = 363, + KW_NOEXCEPT = 364, + KW_NULLPTR = 365, + KW_OPERATOR = 366, + KW_OVERRIDE = 367, + KW_PRIVATE = 368, + KW_PROTECTED = 369, + KW_PUBLIC = 370, + KW_REGISTER = 371, + KW_REINTERPRET_CAST = 372, + KW_RETURN = 373, + KW_SHORT = 374, + KW_SIGNED = 375, + KW_SIZEOF = 376, + KW_STATIC = 377, + KW_STATIC_ASSERT = 378, + KW_STATIC_CAST = 379, + KW_STRUCT = 380, + KW_TEMPLATE = 381, + KW_THREAD_LOCAL = 382, + KW_THROW = 383, + KW_TRUE = 384, + KW_TRY = 385, + KW_TYPEDEF = 386, + KW_TYPEID = 387, + KW_TYPENAME = 388, + KW_UNDERLYING_TYPE = 389, + KW_UNION = 390, + KW_UNSIGNED = 391, + KW_USING = 392, + KW_VIRTUAL = 393, + KW_VOID = 394, + KW_VOLATILE = 395, + KW_WCHAR_T = 396, + KW_WHILE = 397, + START_CPP = 398, + START_CONST_EXPR = 399, + START_TYPE = 400 + }; #endif /* Tokens. */ #define REAL 258 @@ -594,48 +589,31 @@ extern int cppyydebug; #define START_CONST_EXPR 399 #define START_TYPE 400 +/* Value type. */ - -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -#endif - +/* Location type. */ #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED -typedef struct YYLTYPE +typedef struct YYLTYPE YYLTYPE; +struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; -} YYLTYPE; -# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ +}; # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int cppyyparse (void *YYPARSE_PARAM); -#else -int cppyyparse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus -int cppyyparse (void); -#else -int cppyyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ -#endif /* !YY_CPPYY_BUILT_X64_TMP_CPPBISON_YXX_H_INCLUDED */ +int cppyyparse (void); + +#endif /* !YY_CPPYY_BUILT_TMP_CPPBISON_YXX_H_INCLUDED */ /* Copy the second part of user declarations. */ -/* Line 390 of yacc.c */ -#line 639 "built_x64/tmp/cppBison.yxx.c" +#line 617 "built/tmp/cppBison.yxx.c" /* yacc.c:358 */ #ifdef short # undef short @@ -649,11 +627,8 @@ typedef unsigned char yytype_uint8; #ifdef YYTYPE_INT8 typedef YYTYPE_INT8 yytype_int8; -#elif (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -typedef signed char yytype_int8; #else -typedef short int yytype_int8; +typedef signed char yytype_int8; #endif #ifdef YYTYPE_UINT16 @@ -673,8 +648,7 @@ typedef short int yytype_int16; # define YYSIZE_T __SIZE_TYPE__ # elif defined size_t # define YYSIZE_T size_t -# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# elif ! defined YYSIZE_T # include /* INFRINGES ON USER NAME SPACE */ # define YYSIZE_T size_t # else @@ -696,6 +670,33 @@ typedef short int yytype_int16; # endif #endif +#ifndef YY_ATTRIBUTE +# if (defined __GNUC__ \ + && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__))) \ + || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C +# define YY_ATTRIBUTE(Spec) __attribute__(Spec) +# else +# define YY_ATTRIBUTE(Spec) /* empty */ +# endif +#endif + +#ifndef YY_ATTRIBUTE_PURE +# define YY_ATTRIBUTE_PURE YY_ATTRIBUTE ((__pure__)) +#endif + +#ifndef YY_ATTRIBUTE_UNUSED +# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__)) +#endif + +#if !defined _Noreturn \ + && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112) +# if defined _MSC_VER && 1200 <= _MSC_VER +# define _Noreturn __declspec (noreturn) +# else +# define _Noreturn YY_ATTRIBUTE ((__noreturn__)) +# endif +#endif + /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ # define YYUSE(E) ((void) (E)) @@ -703,23 +704,25 @@ typedef short int yytype_int16; # define YYUSE(E) /* empty */ #endif -/* Identity function, used to suppress warnings about constant conditions. */ -#ifndef lint -# define YYID(N) (N) +#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ +/* Suppress an incorrect diagnostic about yylval being uninitialized. */ +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ + _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ + _Pragma ("GCC diagnostic pop") #else -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -static int -YYID (int yyi) -#else -static int -YYID (yyi) - int yyi; +# define YY_INITIAL_VALUE(Value) Value #endif -{ - return yyi; -} +#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN +# define YY_IGNORE_MAYBE_UNINITIALIZED_END #endif +#ifndef YY_INITIAL_VALUE +# define YY_INITIAL_VALUE(Value) /* Nothing. */ +#endif + #if ! defined yyoverflow || YYERROR_VERBOSE @@ -738,8 +741,7 @@ YYID (yyi) # define alloca _alloca # else # define YYSTACK_ALLOC alloca -# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS # include /* INFRINGES ON USER NAME SPACE */ /* Use EXIT_SUCCESS as a witness for stdlib.h. */ # ifndef EXIT_SUCCESS @@ -751,8 +753,8 @@ YYID (yyi) # endif # ifdef YYSTACK_ALLOC - /* Pacify GCC's `empty if-body' warning. */ -# define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0)) + /* Pacify GCC's 'empty if-body' warning. */ +# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) # ifndef YYSTACK_ALLOC_MAXIMUM /* The OS might guarantee only one guard page at the bottom of the stack, and a page size can be as small as 4096 bytes. So we cannot safely @@ -768,7 +770,7 @@ YYID (yyi) # endif # if (defined __cplusplus && ! defined EXIT_SUCCESS \ && ! ((defined YYMALLOC || defined malloc) \ - && (defined YYFREE || defined free))) + && (defined YYFREE || defined free))) # include /* INFRINGES ON USER NAME SPACE */ # ifndef EXIT_SUCCESS # define EXIT_SUCCESS 0 @@ -776,15 +778,13 @@ YYID (yyi) # endif # ifndef YYMALLOC # define YYMALLOC malloc -# if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined malloc && ! defined EXIT_SUCCESS void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */ # endif # endif # ifndef YYFREE # define YYFREE free -# if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +# if ! defined free && ! defined EXIT_SUCCESS void free (void *); /* INFRINGES ON USER NAME SPACE */ # endif # endif @@ -794,8 +794,8 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */ #if (! defined yyoverflow \ && (! defined __cplusplus \ - || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ - && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) + || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \ + && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) /* A type that is properly aligned for any stack member. */ union yyalloc @@ -821,16 +821,16 @@ union yyalloc elements in the stack, and YYPTR gives the new location of the stack. Advance YYPTR to a properly aligned location for the next stack. */ -# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ - do \ - { \ - YYSIZE_T yynewbytes; \ - YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ - Stack = &yyptr->Stack_alloc; \ - yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ - yyptr += yynewbytes / sizeof (*yyptr); \ - } \ - while (YYID (0)) +# define YYSTACK_RELOCATE(Stack_alloc, Stack) \ + do \ + { \ + YYSIZE_T yynewbytes; \ + YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \ + Stack = &yyptr->Stack_alloc; \ + yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \ + yyptr += yynewbytes / sizeof (*yyptr); \ + } \ + while (0) #endif @@ -849,7 +849,7 @@ union yyalloc for (yyi = 0; yyi < (Count); yyi++) \ (Dst)[yyi] = (Src)[yyi]; \ } \ - while (YYID (0)) + while (0) # endif # endif #endif /* !YYCOPY_NEEDED */ @@ -857,25 +857,27 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 104 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 7002 +#define YYLAST 6907 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 170 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 108 /* YYNRULES -- Number of rules. */ -#define YYNRULES 753 -/* YYNRULES -- Number of states. */ -#define YYNSTATES 1535 +#define YYNRULES 755 +/* YYNSTATES -- Number of states. */ +#define YYNSTATES 1537 -/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ +/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned + by yylex, with out-of-bounds checking. */ #define YYUNDEFTOK 2 #define YYMAXUTOK 400 -#define YYTRANSLATE(YYX) \ +#define YYTRANSLATE(YYX) \ ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK) -/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX. */ +/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM + as returned by yylex, without out-of-bounds checking. */ static const yytype_uint8 yytranslate[] = { 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, @@ -922,349 +924,7 @@ static const yytype_uint8 yytranslate[] = }; #if YYDEBUG -/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in - YYRHS. */ -static const yytype_uint16 yyprhs[] = -{ - 0, 0, 3, 6, 9, 12, 14, 17, 20, 22, - 26, 31, 37, 42, 43, 49, 51, 53, 55, 57, - 59, 62, 64, 66, 69, 72, 75, 78, 86, 96, - 108, 118, 130, 144, 154, 168, 178, 186, 192, 193, - 197, 199, 202, 205, 209, 212, 215, 218, 221, 224, - 227, 230, 233, 236, 239, 242, 247, 253, 259, 261, - 265, 267, 272, 277, 278, 283, 287, 291, 295, 297, - 300, 305, 306, 311, 315, 318, 323, 324, 331, 332, - 339, 340, 348, 349, 361, 362, 375, 376, 385, 386, - 396, 398, 400, 403, 406, 409, 412, 415, 418, 421, - 424, 427, 432, 438, 445, 450, 452, 454, 456, 458, - 460, 462, 464, 466, 468, 470, 472, 474, 476, 478, - 480, 482, 484, 486, 488, 490, 492, 494, 496, 498, - 500, 502, 504, 506, 508, 510, 512, 514, 516, 518, - 520, 523, 526, 528, 530, 532, 534, 537, 538, 545, - 548, 550, 552, 554, 558, 560, 562, 564, 567, 572, - 575, 579, 583, 588, 591, 595, 597, 599, 601, 603, - 605, 608, 612, 615, 618, 621, 624, 627, 631, 636, - 640, 641, 648, 651, 655, 657, 661, 666, 668, 670, - 672, 676, 679, 681, 685, 687, 689, 691, 695, 698, - 700, 704, 706, 709, 711, 714, 716, 720, 726, 730, - 734, 736, 740, 744, 748, 752, 757, 759, 761, 764, - 766, 770, 774, 780, 784, 789, 795, 799, 804, 810, - 813, 818, 820, 822, 824, 826, 829, 832, 835, 838, - 841, 845, 850, 852, 854, 857, 860, 863, 866, 869, - 873, 878, 886, 890, 892, 895, 898, 901, 904, 907, - 910, 914, 919, 927, 931, 933, 935, 938, 941, 944, - 947, 950, 953, 957, 962, 964, 966, 969, 972, 975, - 978, 981, 984, 988, 993, 999, 1009, 1019, 1029, 1031, - 1033, 1036, 1038, 1040, 1042, 1046, 1051, 1056, 1061, 1066, - 1068, 1070, 1072, 1074, 1077, 1079, 1081, 1083, 1087, 1092, - 1095, 1100, 1105, 1110, 1112, 1114, 1116, 1119, 1123, 1126, - 1131, 1136, 1138, 1140, 1142, 1145, 1149, 1152, 1156, 1158, - 1163, 1169, 1175, 1176, 1183, 1184, 1194, 1196, 1198, 1200, - 1202, 1205, 1209, 1211, 1214, 1217, 1220, 1224, 1228, 1232, - 1236, 1240, 1244, 1249, 1253, 1255, 1260, 1263, 1265, 1267, - 1269, 1273, 1279, 1281, 1284, 1289, 1291, 1294, 1297, 1299, - 1301, 1303, 1304, 1311, 1312, 1320, 1325, 1331, 1335, 1341, - 1346, 1348, 1350, 1352, 1354, 1356, 1358, 1360, 1362, 1364, - 1366, 1368, 1370, 1372, 1375, 1378, 1381, 1384, 1386, 1388, - 1391, 1393, 1394, 1397, 1399, 1402, 1404, 1406, 1408, 1410, - 1412, 1414, 1416, 1418, 1420, 1422, 1424, 1426, 1428, 1430, - 1432, 1434, 1436, 1438, 1440, 1442, 1444, 1446, 1448, 1450, - 1452, 1454, 1456, 1458, 1460, 1462, 1464, 1466, 1468, 1470, - 1472, 1474, 1476, 1478, 1480, 1482, 1484, 1486, 1488, 1490, - 1492, 1494, 1496, 1498, 1500, 1502, 1504, 1506, 1508, 1510, - 1512, 1514, 1516, 1518, 1520, 1522, 1524, 1526, 1528, 1530, - 1532, 1534, 1536, 1538, 1540, 1542, 1544, 1546, 1548, 1550, - 1552, 1554, 1556, 1558, 1560, 1562, 1564, 1566, 1568, 1570, - 1572, 1574, 1576, 1578, 1580, 1582, 1584, 1586, 1588, 1590, - 1592, 1594, 1596, 1598, 1600, 1602, 1604, 1606, 1608, 1610, - 1612, 1614, 1616, 1618, 1620, 1622, 1624, 1626, 1628, 1630, - 1632, 1634, 1636, 1638, 1640, 1642, 1644, 1646, 1648, 1650, - 1652, 1654, 1656, 1658, 1662, 1664, 1666, 1668, 1670, 1672, - 1676, 1678, 1683, 1691, 1699, 1707, 1715, 1720, 1725, 1731, - 1736, 1739, 1742, 1745, 1748, 1751, 1754, 1758, 1762, 1766, - 1770, 1774, 1778, 1782, 1786, 1790, 1794, 1798, 1802, 1806, - 1810, 1814, 1818, 1824, 1829, 1834, 1838, 1842, 1846, 1850, - 1852, 1857, 1865, 1873, 1881, 1889, 1894, 1899, 1904, 1909, - 1914, 1919, 1924, 1929, 1934, 1939, 1944, 1949, 1954, 1959, - 1964, 1969, 1975, 1980, 1983, 1989, 1994, 1999, 2002, 2005, - 2008, 2011, 2014, 2017, 2021, 2025, 2029, 2033, 2037, 2041, - 2045, 2049, 2053, 2057, 2061, 2065, 2069, 2073, 2077, 2081, - 2085, 2089, 2095, 2100, 2105, 2109, 2113, 2117, 2121, 2123, - 2125, 2127, 2129, 2131, 2133, 2135, 2137, 2139, 2141, 2143, - 2152, 2164, 2169, 2174, 2181, 2186, 2191, 2198, 2205, 2210, - 2215, 2220, 2225, 2230, 2235, 2240, 2245, 2250, 2255, 2257, - 2262, 2270, 2278, 2286, 2294, 2299, 2304, 2310, 2315, 2318, - 2324, 2329, 2334, 2337, 2340, 2343, 2346, 2349, 2353, 2357, - 2361, 2365, 2369, 2373, 2377, 2381, 2385, 2389, 2393, 2397, - 2401, 2405, 2409, 2413, 2417, 2421, 2427, 2432, 2437, 2441, - 2445, 2449, 2453, 2455, 2457, 2459, 2461, 2463, 2465, 2467, - 2469, 2471, 2473, 2475, 2477, 2479, 2481, 2484, 2489, 2492, - 2496, 2498, 2501, 2503, 2506, 2509, 2511, 2513, 2515, 2517, - 2519, 2521, 2523, 2525, 2527, 2529, 2531, 2533, 2535, 2537, - 2539, 2541, 2544, 2547 -}; - -/* YYRHS -- A `-1'-separated list of the rules' RHS. */ -static const yytype_int16 yyrhs[] = -{ - 171, 0, -1, 143, 172, -1, 144, 267, -1, 145, - 234, -1, 277, -1, 172, 148, -1, 172, 177, -1, - 174, -1, 173, 147, 174, -1, 274, 164, 264, 166, - -1, 274, 164, 264, 166, 15, -1, 274, 146, 264, - 167, -1, -1, 180, 146, 176, 172, 167, -1, 183, - -1, 201, -1, 175, -1, 251, -1, 178, -1, 131, - 186, -1, 52, -1, 69, -1, 74, 149, -1, 115, - 149, -1, 114, 149, -1, 113, 149, -1, 102, 164, - 274, 147, 10, 166, 148, -1, 102, 164, 274, 147, - 10, 147, 10, 166, 148, -1, 102, 164, 274, 147, - 10, 147, 10, 147, 10, 166, 148, -1, 105, 164, - 274, 147, 10, 147, 10, 166, 148, -1, 105, 164, - 274, 147, 10, 147, 10, 147, 10, 166, 148, -1, - 105, 164, 274, 147, 10, 147, 10, 147, 10, 147, - 10, 166, 148, -1, 103, 164, 274, 147, 10, 147, - 10, 166, 148, -1, 103, 164, 274, 147, 10, 147, - 10, 147, 10, 147, 10, 166, 148, -1, 104, 164, - 274, 147, 10, 147, 10, 166, 148, -1, 123, 164, - 267, 147, 276, 166, 148, -1, 123, 164, 267, 166, - 148, -1, -1, 78, 179, 177, -1, 277, -1, 60, - 180, -1, 72, 180, -1, 72, 6, 180, -1, 122, - 180, -1, 83, 180, -1, 138, 180, -1, 73, 180, - -1, 116, 180, -1, 140, 180, -1, 106, 180, -1, - 61, 180, -1, 53, 180, -1, 71, 180, -1, 127, - 180, -1, 47, 181, 48, 180, -1, 49, 164, 267, - 166, 180, -1, 49, 164, 231, 166, 180, -1, 182, - -1, 182, 147, 181, -1, 274, -1, 274, 164, 214, - 166, -1, 137, 274, 149, 182, -1, -1, 180, 233, - 184, 185, -1, 180, 231, 148, -1, 180, 189, 218, - -1, 180, 192, 219, -1, 254, -1, 210, 219, -1, - 210, 217, 147, 185, -1, -1, 180, 233, 187, 188, - -1, 180, 192, 219, -1, 210, 219, -1, 210, 217, - 147, 188, -1, -1, 10, 164, 190, 212, 166, 198, - -1, -1, 11, 164, 191, 212, 166, 198, -1, -1, - 162, 274, 164, 193, 212, 166, 198, -1, -1, 11, - 164, 159, 208, 166, 164, 194, 212, 166, 198, 211, - -1, -1, 11, 164, 13, 159, 208, 166, 164, 195, - 212, 166, 198, 211, -1, -1, 111, 229, 224, 164, - 196, 212, 166, 198, -1, -1, 111, 60, 229, 224, - 164, 197, 212, 166, 198, -1, 10, -1, 277, -1, - 198, 60, -1, 198, 140, -1, 198, 109, -1, 198, - 76, -1, 198, 112, -1, 198, 154, -1, 198, 17, - -1, 198, 106, -1, 198, 61, -1, 198, 128, 164, - 166, -1, 198, 128, 164, 274, 166, -1, 198, 128, - 164, 274, 15, 166, -1, 198, 47, 181, 48, -1, - 168, -1, 162, -1, 159, -1, 160, -1, 161, -1, - 157, -1, 158, -1, 152, -1, 154, -1, 153, -1, - 16, -1, 17, -1, 18, -1, 19, -1, 20, -1, - 21, -1, 155, -1, 156, -1, 22, -1, 23, -1, - 150, -1, 147, -1, 35, -1, 36, -1, 37, -1, - 38, -1, 39, -1, 40, -1, 41, -1, 42, -1, - 43, -1, 44, -1, 45, -1, 46, -1, 33, -1, - 165, 169, -1, 164, 166, -1, 108, -1, 65, -1, - 183, -1, 201, -1, 72, 201, -1, -1, 126, 202, - 155, 203, 156, 200, -1, 126, 183, -1, 277, -1, - 204, -1, 206, -1, 204, 147, 206, -1, 59, -1, - 133, -1, 205, -1, 205, 274, -1, 205, 274, 150, - 234, -1, 205, 15, -1, 205, 15, 274, -1, 207, - 225, 216, -1, 60, 207, 225, 216, -1, 207, 226, - -1, 60, 207, 226, -1, 255, -1, 10, -1, 11, - -1, 12, -1, 275, -1, 111, 199, -1, 111, 6, - 10, -1, 60, 208, -1, 140, 208, -1, 159, 208, - -1, 154, 208, -1, 17, 208, -1, 13, 159, 208, - -1, 208, 165, 263, 169, -1, 164, 208, 166, -1, - -1, 208, 164, 209, 214, 166, 198, -1, 208, 211, - -1, 208, 149, 4, -1, 277, -1, 33, 232, 228, - -1, 33, 60, 232, 228, -1, 277, -1, 15, -1, - 213, -1, 213, 147, 15, -1, 213, 15, -1, 222, - -1, 213, 147, 222, -1, 277, -1, 15, -1, 215, - -1, 215, 147, 15, -1, 215, 15, -1, 223, -1, - 215, 147, 223, -1, 277, -1, 150, 266, -1, 277, - -1, 150, 267, -1, 148, -1, 146, 259, 167, -1, - 149, 173, 146, 259, 167, -1, 150, 64, 148, -1, - 150, 65, 148, -1, 148, -1, 146, 259, 167, -1, - 150, 267, 148, -1, 150, 64, 148, -1, 150, 65, - 148, -1, 150, 146, 220, 167, -1, 277, -1, 221, - -1, 221, 147, -1, 267, -1, 146, 220, 167, -1, - 221, 147, 267, -1, 221, 147, 146, 220, 167, -1, - 229, 225, 217, -1, 60, 229, 225, 217, -1, 60, - 116, 229, 225, 217, -1, 230, 226, 217, -1, 60, - 230, 226, 217, -1, 60, 116, 230, 226, 217, -1, - 116, 222, -1, 47, 181, 48, 222, -1, 222, -1, - 269, -1, 277, -1, 275, -1, 60, 224, -1, 140, - 224, -1, 159, 224, -1, 154, 224, -1, 17, 224, - -1, 13, 159, 224, -1, 224, 165, 263, 169, -1, - 277, -1, 275, -1, 60, 225, -1, 140, 225, -1, - 159, 225, -1, 154, 225, -1, 17, 225, -1, 13, - 159, 225, -1, 225, 165, 263, 169, -1, 164, 225, - 166, 164, 212, 166, 198, -1, 164, 225, 166, -1, - 15, -1, 15, 274, -1, 60, 226, -1, 140, 226, - -1, 159, 226, -1, 154, 226, -1, 17, 226, -1, - 13, 159, 226, -1, 226, 165, 263, 169, -1, 164, - 226, 166, 164, 212, 166, 198, -1, 164, 226, 166, - -1, 277, -1, 15, -1, 15, 274, -1, 60, 227, - -1, 140, 227, -1, 159, 227, -1, 154, 227, -1, - 17, 227, -1, 13, 159, 227, -1, 227, 165, 263, - 169, -1, 277, -1, 15, -1, 15, 274, -1, 60, - 228, -1, 140, 228, -1, 159, 227, -1, 154, 227, - -1, 17, 227, -1, 13, 159, 227, -1, 227, 165, - 263, 169, -1, 164, 212, 166, 198, 211, -1, 164, - 159, 227, 166, 164, 212, 166, 198, 211, -1, 164, - 154, 227, 166, 164, 212, 166, 198, 211, -1, 164, - 17, 227, 166, 164, 212, 166, 198, 211, -1, 255, - -1, 11, -1, 133, 274, -1, 236, -1, 238, -1, - 244, -1, 250, 235, 274, -1, 249, 275, 149, 246, - -1, 63, 164, 267, 166, -1, 63, 164, 51, 166, - -1, 134, 164, 234, 166, -1, 51, -1, 12, -1, - 255, -1, 11, -1, 133, 274, -1, 236, -1, 238, - -1, 244, -1, 250, 235, 274, -1, 249, 275, 149, - 246, -1, 249, 274, -1, 63, 164, 267, 166, -1, - 63, 164, 51, 166, -1, 134, 164, 234, 166, -1, - 51, -1, 255, -1, 11, -1, 133, 274, -1, 250, - 235, 274, -1, 249, 274, -1, 63, 164, 267, 166, - -1, 134, 164, 234, 166, -1, 51, -1, 231, -1, - 10, -1, 229, 228, -1, 60, 229, 228, -1, 230, - 228, -1, 60, 230, 228, -1, 277, -1, 235, 47, - 181, 48, -1, 235, 49, 164, 267, 166, -1, 235, - 49, 164, 231, 166, -1, -1, 250, 235, 146, 237, - 172, 167, -1, -1, 250, 235, 275, 239, 240, 241, - 146, 172, 167, -1, 277, -1, 76, -1, 277, -1, - 242, -1, 149, 243, -1, 242, 147, 243, -1, 273, - -1, 115, 273, -1, 114, 273, -1, 113, 273, -1, - 138, 115, 273, -1, 138, 114, 273, -1, 138, 113, - 273, -1, 115, 138, 273, -1, 114, 138, 273, -1, - 113, 138, 273, -1, 245, 146, 248, 167, -1, 249, - 149, 246, -1, 249, -1, 249, 275, 149, 246, -1, - 249, 275, -1, 256, -1, 11, -1, 277, -1, 247, - 274, 147, -1, 247, 274, 150, 267, 147, -1, 247, - -1, 247, 274, -1, 247, 274, 150, 267, -1, 70, - -1, 70, 59, -1, 70, 125, -1, 59, -1, 125, - -1, 135, -1, -1, 107, 274, 146, 252, 172, 167, - -1, -1, 83, 107, 274, 146, 253, 172, 167, -1, - 107, 146, 172, 167, -1, 83, 107, 146, 172, 167, - -1, 137, 274, 148, -1, 137, 274, 150, 234, 148, - -1, 137, 107, 274, 148, -1, 256, -1, 257, -1, - 258, -1, 54, -1, 56, -1, 141, -1, 57, -1, - 58, -1, 119, -1, 100, -1, 136, -1, 120, -1, - 84, -1, 119, 256, -1, 100, 256, -1, 136, 256, - -1, 120, 256, -1, 77, -1, 66, -1, 100, 66, - -1, 139, -1, -1, 260, 261, -1, 277, -1, 261, - 262, -1, 3, -1, 4, -1, 6, -1, 8, -1, - 9, -1, 5, -1, 10, -1, 11, -1, 12, -1, - 13, -1, 7, -1, 15, -1, 16, -1, 17, -1, - 18, -1, 19, -1, 20, -1, 21, -1, 22, -1, - 23, -1, 24, -1, 25, -1, 33, -1, 34, -1, - 35, -1, 36, -1, 37, -1, 38, -1, 39, -1, - 40, -1, 41, -1, 42, -1, 43, -1, 44, -1, - 45, -1, 46, -1, 47, -1, 48, -1, 49, -1, - 50, -1, 51, -1, 54, -1, 55, -1, 56, -1, - 57, -1, 58, -1, 59, -1, 60, -1, 61, -1, - 62, -1, 63, -1, 64, -1, 65, -1, 66, -1, - 67, -1, 68, -1, 70, -1, 72, -1, 73, -1, - 75, -1, 76, -1, 77, -1, 78, -1, 79, -1, - 80, -1, 82, -1, 83, -1, 84, -1, 100, -1, - 106, -1, 107, -1, 108, -1, 110, -1, 111, -1, - 112, -1, 113, -1, 114, -1, 115, -1, 74, -1, - 116, -1, 117, -1, 118, -1, 119, -1, 120, -1, - 121, -1, 122, -1, 123, -1, 124, -1, 125, -1, - 126, -1, 127, -1, 128, -1, 129, -1, 130, -1, - 131, -1, 132, -1, 133, -1, 134, -1, 135, -1, - 136, -1, 137, -1, 138, -1, 139, -1, 140, -1, - 141, -1, 142, -1, 157, -1, 158, -1, 159, -1, - 160, -1, 154, -1, 152, -1, 153, -1, 168, -1, - 162, -1, 150, -1, 161, -1, 155, -1, 156, -1, - 164, -1, 166, -1, 163, -1, 147, -1, 148, -1, - 149, -1, 165, -1, 169, -1, 151, -1, 146, 261, - 167, -1, 277, -1, 267, -1, 277, -1, 265, -1, - 267, -1, 265, 147, 267, -1, 268, -1, 164, 234, - 166, 266, -1, 124, 155, 234, 156, 164, 265, 166, - -1, 67, 155, 234, 156, 164, 265, 166, -1, 62, - 155, 234, 156, 164, 265, 166, -1, 117, 155, 234, - 156, 164, 265, 166, -1, 121, 164, 234, 166, -1, - 121, 164, 10, 166, -1, 121, 15, 164, 274, 166, - -1, 50, 164, 234, 166, -1, 168, 266, -1, 162, - 266, -1, 158, 266, -1, 157, 266, -1, 159, 266, - -1, 154, 266, -1, 266, 159, 266, -1, 266, 160, - 266, -1, 266, 161, 266, -1, 266, 157, 266, -1, - 266, 158, 266, -1, 266, 152, 266, -1, 266, 153, - 266, -1, 266, 154, 266, -1, 266, 16, 266, -1, - 266, 17, 266, -1, 266, 18, 266, -1, 266, 19, - 266, -1, 266, 20, 266, -1, 266, 21, 266, -1, - 266, 22, 266, -1, 266, 23, 266, -1, 266, 151, - 266, 149, 266, -1, 266, 165, 267, 169, -1, 266, - 164, 265, 166, -1, 266, 164, 166, -1, 266, 163, - 266, -1, 266, 33, 266, -1, 164, 265, 166, -1, - 268, -1, 164, 234, 166, 267, -1, 124, 155, 234, - 156, 164, 265, 166, -1, 67, 155, 234, 156, 164, - 265, 166, -1, 62, 155, 234, 156, 164, 265, 166, - -1, 117, 155, 234, 156, 164, 265, 166, -1, 11, - 164, 264, 166, -1, 11, 146, 264, 167, -1, 84, - 164, 264, 166, -1, 56, 164, 264, 166, -1, 141, - 164, 264, 166, -1, 57, 164, 264, 166, -1, 58, - 164, 264, 166, -1, 54, 164, 264, 166, -1, 119, - 164, 264, 166, -1, 100, 164, 264, 166, -1, 136, - 164, 264, 166, -1, 120, 164, 264, 166, -1, 77, - 164, 264, 166, -1, 66, 164, 264, 166, -1, 121, - 164, 234, 166, -1, 121, 164, 10, 166, -1, 121, - 15, 164, 274, 166, -1, 50, 164, 234, 166, -1, - 108, 232, -1, 108, 232, 164, 264, 166, -1, 132, - 164, 234, 166, -1, 132, 164, 267, 166, -1, 168, - 267, -1, 162, 267, -1, 158, 267, -1, 157, 267, - -1, 159, 267, -1, 154, 267, -1, 267, 159, 267, - -1, 267, 160, 267, -1, 267, 161, 267, -1, 267, - 157, 267, -1, 267, 158, 267, -1, 267, 152, 267, - -1, 267, 153, 267, -1, 267, 154, 267, -1, 267, - 16, 267, -1, 267, 17, 267, -1, 267, 18, 267, - -1, 267, 19, 267, -1, 267, 20, 267, -1, 267, - 21, 267, -1, 267, 155, 267, -1, 267, 156, 267, - -1, 267, 22, 267, -1, 267, 23, 267, -1, 267, - 151, 267, 149, 267, -1, 267, 165, 267, 169, -1, - 267, 164, 265, 166, -1, 267, 164, 166, -1, 267, - 163, 267, -1, 267, 33, 267, -1, 164, 265, 166, - -1, 4, -1, 129, -1, 75, -1, 5, -1, 3, - -1, 276, -1, 9, -1, 10, -1, 76, -1, 112, - -1, 110, -1, 165, 271, 169, 198, 211, 146, 259, - 167, -1, 165, 271, 169, 164, 212, 166, 198, 211, - 146, 259, 167, -1, 81, 164, 234, 166, -1, 85, - 164, 234, 166, -1, 86, 164, 234, 147, 234, 166, - -1, 87, 164, 234, 166, -1, 88, 164, 234, 166, - -1, 88, 164, 234, 147, 234, 166, -1, 89, 164, - 234, 147, 234, 166, -1, 90, 164, 234, 166, -1, - 91, 164, 234, 166, -1, 92, 164, 234, 166, -1, - 93, 164, 234, 166, -1, 94, 164, 234, 166, -1, - 95, 164, 234, 166, -1, 96, 164, 234, 166, -1, - 97, 164, 234, 166, -1, 98, 164, 234, 166, -1, - 99, 164, 234, 166, -1, 270, -1, 164, 234, 166, - 267, -1, 124, 155, 234, 156, 164, 265, 166, -1, - 67, 155, 234, 156, 164, 265, 166, -1, 62, 155, - 234, 156, 164, 265, 166, -1, 117, 155, 234, 156, - 164, 265, 166, -1, 121, 164, 234, 166, -1, 121, - 164, 10, 166, -1, 121, 15, 164, 274, 166, -1, - 50, 164, 234, 166, -1, 108, 232, -1, 108, 232, - 164, 264, 166, -1, 132, 164, 234, 166, -1, 132, - 164, 267, 166, -1, 168, 267, -1, 162, 267, -1, - 158, 267, -1, 157, 267, -1, 154, 267, -1, 269, - 159, 267, -1, 269, 160, 267, -1, 269, 161, 267, - -1, 269, 157, 267, -1, 269, 158, 267, -1, 269, - 152, 267, -1, 269, 153, 267, -1, 269, 154, 267, - -1, 269, 16, 267, -1, 269, 17, 267, -1, 269, - 18, 267, -1, 269, 19, 267, -1, 269, 20, 267, - -1, 269, 21, 267, -1, 269, 155, 267, -1, 269, - 156, 267, -1, 269, 22, 267, -1, 269, 23, 267, - -1, 269, 151, 267, 149, 267, -1, 269, 165, 267, - 169, -1, 269, 164, 265, 166, -1, 269, 164, 166, - -1, 269, 163, 267, -1, 269, 33, 267, -1, 164, - 265, 166, -1, 4, -1, 129, -1, 75, -1, 5, - -1, 3, -1, 276, -1, 9, -1, 10, -1, 76, - -1, 112, -1, 110, -1, 277, -1, 150, -1, 154, - -1, 272, 217, -1, 271, 147, 272, 217, -1, 154, - 274, -1, 154, 274, 15, -1, 274, -1, 159, 274, - -1, 274, -1, 133, 274, -1, 274, 15, -1, 10, - -1, 11, -1, 12, -1, 76, -1, 112, -1, 120, - -1, 77, -1, 115, -1, 113, -1, 122, -1, 10, - -1, 11, -1, 12, -1, 112, -1, 6, -1, 8, - -1, 276, 6, -1, 276, 8, -1, -1 -}; - -/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ + /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { 0, 448, 448, 449, 453, 460, 461, 462, 466, 467, @@ -1281,68 +941,68 @@ static const yytype_uint16 yyrline[] = 1313, 1317, 1321, 1325, 1329, 1333, 1337, 1341, 1345, 1349, 1353, 1357, 1361, 1365, 1369, 1373, 1377, 1381, 1385, 1389, 1393, 1397, 1401, 1405, 1409, 1413, 1417, 1421, 1425, 1429, - 1433, 1437, 1441, 1445, 1452, 1453, 1457, 1459, 1458, 1466, - 1470, 1471, 1475, 1481, 1490, 1491, 1495, 1499, 1503, 1507, - 1513, 1519, 1525, 1532, 1537, 1546, 1550, 1555, 1563, 1575, - 1579, 1593, 1608, 1613, 1618, 1623, 1628, 1633, 1638, 1643, - 1649, 1648, 1679, 1689, 1699, 1703, 1707, 1716, 1720, 1725, - 1729, 1734, 1742, 1747, 1755, 1759, 1764, 1768, 1773, 1781, - 1786, 1794, 1798, 1805, 1809, 1816, 1820, 1824, 1828, 1832, - 1839, 1843, 1847, 1851, 1855, 1859, 1866, 1867, 1868, 1872, - 1875, 1876, 1877, 1881, 1886, 1892, 1898, 1903, 1909, 1915, - 1919, 1930, 1934, 1944, 1948, 1952, 1957, 1962, 1967, 1972, - 1977, 1982, 1990, 1994, 1998, 2003, 2008, 2013, 2018, 2023, - 2028, 2033, 2039, 2047, 2052, 2057, 2062, 2067, 2072, 2077, - 2082, 2087, 2092, 2098, 2106, 2110, 2115, 2120, 2125, 2130, - 2135, 2140, 2145, 2150, 2158, 2162, 2167, 2172, 2177, 2182, - 2187, 2192, 2197, 2202, 2207, 2213, 2220, 2227, 2237, 2241, - 2249, 2253, 2257, 2261, 2265, 2281, 2297, 2306, 2310, 2320, - 2327, 2338, 2342, 2350, 2354, 2358, 2362, 2366, 2382, 2398, - 2416, 2425, 2429, 2439, 2446, 2450, 2458, 2462, 2478, 2494, - 2503, 2513, 2520, 2524, 2532, 2536, 2541, 2545, 2553, 2554, - 2555, 2556, 2561, 2560, 2585, 2584, 2614, 2615, 2622, 2623, - 2627, 2628, 2632, 2636, 2640, 2644, 2648, 2652, 2656, 2660, - 2664, 2668, 2675, 2683, 2687, 2691, 2696, 2704, 2708, 2715, - 2716, 2721, 2728, 2729, 2734, 2742, 2746, 2750, 2757, 2761, - 2765, 2773, 2772, 2795, 2794, 2817, 2818, 2822, 2828, 2835, - 2844, 2845, 2846, 2850, 2854, 2858, 2862, 2866, 2870, 2875, - 2880, 2885, 2890, 2894, 2899, 2908, 2913, 2921, 2925, 2929, - 2937, 2947, 2947, 2957, 2958, 2962, 2963, 2964, 2965, 2966, - 2967, 2968, 2969, 2970, 2971, 2972, 2973, 2973, 2973, 2974, - 2974, 2974, 2974, 2975, 2975, 2975, 2975, 2975, 2976, 2976, - 2976, 2977, 2977, 2977, 2977, 2977, 2978, 2978, 2978, 2978, - 2978, 2979, 2979, 2980, 2980, 2980, 2980, 2980, 2981, 2981, - 2981, 2981, 2981, 2982, 2982, 2982, 2982, 2983, 2983, 2983, - 2983, 2983, 2984, 2984, 2984, 2984, 2984, 2985, 2985, 2985, - 2985, 2985, 2985, 2986, 2986, 2986, 2986, 2986, 2987, 2987, - 2987, 2987, 2988, 2988, 2988, 2988, 2989, 2989, 2989, 2989, - 2989, 2990, 2990, 2990, 2990, 2991, 2991, 2991, 2991, 2991, - 2992, 2992, 2992, 2992, 2993, 2993, 2993, 2993, 2993, 2994, - 2994, 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, 2997, - 2997, 2997, 2998, 2998, 2998, 2998, 2998, 2998, 2998, 2998, - 2998, 2998, 2999, 2999, 3003, 3007, 3014, 3018, 3025, 3029, - 3036, 3040, 3044, 3048, 3052, 3056, 3060, 3064, 3076, 3080, - 3084, 3088, 3092, 3096, 3100, 3104, 3108, 3112, 3116, 3120, - 3124, 3128, 3132, 3136, 3140, 3144, 3148, 3152, 3156, 3160, - 3164, 3168, 3172, 3176, 3180, 3184, 3188, 3192, 3196, 3204, - 3208, 3212, 3216, 3220, 3224, 3228, 3238, 3248, 3254, 3260, - 3266, 3272, 3278, 3284, 3291, 3298, 3305, 3312, 3318, 3324, - 3328, 3340, 3344, 3348, 3352, 3356, 3367, 3378, 3382, 3386, - 3390, 3394, 3398, 3402, 3406, 3410, 3414, 3418, 3422, 3426, - 3430, 3434, 3438, 3442, 3446, 3450, 3454, 3458, 3462, 3466, - 3470, 3474, 3478, 3482, 3486, 3490, 3494, 3498, 3505, 3509, - 3513, 3517, 3521, 3525, 3529, 3533, 3537, 3543, 3549, 3553, - 3559, 3566, 3570, 3574, 3578, 3582, 3586, 3590, 3594, 3598, - 3602, 3606, 3610, 3614, 3618, 3622, 3626, 3630, 3644, 3648, - 3652, 3656, 3660, 3664, 3668, 3672, 3684, 3688, 3692, 3696, - 3700, 3711, 3722, 3726, 3730, 3734, 3738, 3742, 3746, 3750, - 3754, 3758, 3762, 3766, 3770, 3774, 3778, 3782, 3786, 3790, - 3794, 3798, 3802, 3806, 3810, 3814, 3818, 3822, 3826, 3830, - 3834, 3838, 3845, 3849, 3853, 3857, 3861, 3865, 3869, 3873, - 3877, 3883, 3889, 3897, 3901, 3905, 3909, 3916, 3926, 3932, - 3938, 3948, 3960, 3968, 3972, 4002, 4006, 4010, 4014, 4018, - 4022, 4028, 4032, 4036, 4040, 4051, 4055, 4059, 4063, 4071, - 4075, 4079, 4085, 4096 + 1433, 1437, 1441, 1445, 1452, 1453, 1454, 1458, 1460, 1459, + 1467, 1468, 1472, 1473, 1477, 1483, 1492, 1493, 1497, 1501, + 1505, 1509, 1515, 1521, 1527, 1534, 1539, 1548, 1552, 1557, + 1565, 1577, 1581, 1595, 1610, 1615, 1620, 1625, 1630, 1635, + 1640, 1645, 1651, 1650, 1681, 1691, 1701, 1705, 1709, 1718, + 1722, 1727, 1731, 1736, 1744, 1749, 1757, 1761, 1766, 1770, + 1775, 1783, 1788, 1796, 1800, 1807, 1811, 1818, 1822, 1826, + 1830, 1834, 1841, 1845, 1849, 1853, 1857, 1861, 1868, 1869, + 1870, 1874, 1877, 1878, 1879, 1883, 1888, 1894, 1900, 1905, + 1911, 1917, 1921, 1932, 1936, 1946, 1950, 1954, 1959, 1964, + 1969, 1974, 1979, 1984, 1992, 1996, 2000, 2005, 2010, 2015, + 2020, 2025, 2030, 2035, 2041, 2049, 2054, 2059, 2064, 2069, + 2074, 2079, 2084, 2089, 2094, 2100, 2108, 2112, 2117, 2122, + 2127, 2132, 2137, 2142, 2147, 2152, 2160, 2164, 2169, 2174, + 2179, 2184, 2189, 2194, 2199, 2204, 2209, 2215, 2222, 2229, + 2239, 2243, 2251, 2255, 2259, 2263, 2267, 2283, 2299, 2308, + 2312, 2322, 2329, 2340, 2344, 2352, 2356, 2360, 2364, 2368, + 2384, 2400, 2418, 2427, 2431, 2441, 2448, 2452, 2460, 2464, + 2480, 2496, 2505, 2515, 2522, 2526, 2534, 2538, 2543, 2547, + 2555, 2556, 2557, 2558, 2563, 2562, 2587, 2586, 2616, 2617, + 2624, 2625, 2629, 2630, 2634, 2638, 2642, 2646, 2650, 2654, + 2658, 2662, 2666, 2670, 2677, 2685, 2689, 2693, 2698, 2706, + 2710, 2717, 2718, 2723, 2730, 2731, 2736, 2744, 2748, 2752, + 2759, 2763, 2767, 2775, 2774, 2797, 2796, 2819, 2820, 2824, + 2830, 2837, 2846, 2847, 2848, 2852, 2856, 2860, 2864, 2868, + 2872, 2877, 2882, 2887, 2892, 2896, 2901, 2910, 2915, 2923, + 2927, 2931, 2939, 2949, 2949, 2959, 2960, 2964, 2965, 2966, + 2967, 2968, 2969, 2970, 2971, 2972, 2973, 2974, 2975, 2975, + 2975, 2976, 2976, 2976, 2976, 2977, 2977, 2977, 2977, 2977, + 2978, 2978, 2978, 2979, 2979, 2979, 2979, 2979, 2980, 2980, + 2980, 2980, 2980, 2981, 2981, 2982, 2982, 2982, 2982, 2982, + 2983, 2983, 2983, 2983, 2983, 2984, 2984, 2984, 2984, 2985, + 2985, 2985, 2985, 2985, 2986, 2986, 2986, 2986, 2986, 2987, + 2987, 2987, 2987, 2987, 2987, 2988, 2988, 2988, 2988, 2988, + 2989, 2989, 2989, 2989, 2990, 2990, 2990, 2990, 2991, 2991, + 2991, 2991, 2991, 2992, 2992, 2992, 2992, 2993, 2993, 2993, + 2993, 2993, 2994, 2994, 2994, 2994, 2995, 2995, 2995, 2995, + 2995, 2996, 2996, 2999, 2999, 2999, 2999, 2999, 2999, 2999, + 2999, 2999, 2999, 2999, 3000, 3000, 3000, 3000, 3000, 3000, + 3000, 3000, 3000, 3000, 3001, 3001, 3005, 3009, 3016, 3020, + 3027, 3031, 3038, 3042, 3046, 3050, 3054, 3058, 3062, 3066, + 3078, 3082, 3086, 3090, 3094, 3098, 3102, 3106, 3110, 3114, + 3118, 3122, 3126, 3130, 3134, 3138, 3142, 3146, 3150, 3154, + 3158, 3162, 3166, 3170, 3174, 3178, 3182, 3186, 3190, 3194, + 3198, 3206, 3210, 3214, 3218, 3222, 3226, 3230, 3240, 3250, + 3256, 3262, 3268, 3274, 3280, 3286, 3293, 3300, 3307, 3314, + 3320, 3326, 3330, 3342, 3346, 3350, 3354, 3358, 3369, 3380, + 3384, 3388, 3392, 3396, 3400, 3404, 3408, 3412, 3416, 3420, + 3424, 3428, 3432, 3436, 3440, 3444, 3448, 3452, 3456, 3460, + 3464, 3468, 3472, 3476, 3480, 3484, 3488, 3492, 3496, 3500, + 3507, 3511, 3515, 3519, 3523, 3527, 3531, 3535, 3539, 3545, + 3551, 3555, 3561, 3568, 3572, 3576, 3580, 3584, 3588, 3592, + 3596, 3600, 3604, 3608, 3612, 3616, 3620, 3624, 3628, 3632, + 3646, 3650, 3654, 3658, 3662, 3666, 3670, 3674, 3686, 3690, + 3694, 3698, 3702, 3713, 3724, 3728, 3732, 3736, 3740, 3744, + 3748, 3752, 3756, 3760, 3764, 3768, 3772, 3776, 3780, 3784, + 3788, 3792, 3796, 3800, 3804, 3808, 3812, 3816, 3820, 3824, + 3828, 3832, 3836, 3840, 3847, 3851, 3855, 3859, 3863, 3867, + 3871, 3875, 3879, 3885, 3891, 3899, 3903, 3907, 3911, 3918, + 3928, 3934, 3940, 3950, 3962, 3970, 3974, 4004, 4008, 4012, + 4016, 4020, 4024, 4030, 4034, 4038, 4042, 4053, 4057, 4061, + 4065, 4073, 4077, 4081, 4087, 4098 }; #endif @@ -1417,13 +1077,13 @@ static const char *const yytname[] = "const_expr_comma", "no_angle_bracket_const_expr", "const_expr", "const_operand", "formal_const_expr", "formal_const_operand", "capture_list", "capture", "class_derivation_name", "name", - "name_no_final", "string_literal", "empty", YY_NULL + "name_no_final", "string_literal", "empty", YY_NULLPTR }; #endif # ifdef YYPRINT -/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to - token YYLEX-NUM. */ +/* YYTOKNUM[NUM] -- (External) token number corresponding to the + (internal) symbol number NUM (which must be that of a token). */ static const yytype_uint16 yytoknum[] = { 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, @@ -1446,1164 +1106,997 @@ static const yytype_uint16 yytoknum[] = }; # endif -/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -static const yytype_uint16 yyr1[] = +#define YYPACT_NINF -922 + +#define yypact_value_is_default(Yystate) \ + (!!((Yystate) == (-922))) + +#define YYTABLE_NINF -751 + +#define yytable_value_is_error(Yytable_value) \ + 0 + + /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ +static const yytype_int16 yypact[] = { - 0, 170, 171, 171, 171, 172, 172, 172, 173, 173, - 174, 174, 174, 176, 175, 177, 177, 177, 177, 177, - 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, - 177, 177, 177, 177, 177, 177, 177, 177, 179, 178, - 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, - 180, 180, 180, 180, 180, 180, 180, 180, 181, 181, - 182, 182, 182, 184, 183, 183, 183, 183, 183, 185, - 185, 187, 186, 186, 188, 188, 190, 189, 191, 189, - 193, 192, 194, 192, 195, 192, 196, 192, 197, 192, - 192, 198, 198, 198, 198, 198, 198, 198, 198, 198, - 198, 198, 198, 198, 198, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, - 199, 199, 199, 199, 200, 200, 201, 202, 201, 201, - 203, 203, 204, 204, 205, 205, 206, 206, 206, 206, - 206, 206, 206, 206, 206, 207, 207, 207, 207, 208, - 208, 208, 208, 208, 208, 208, 208, 208, 208, 208, - 209, 208, 210, 210, 211, 211, 211, 212, 212, 212, - 212, 212, 213, 213, 214, 214, 214, 214, 214, 215, - 215, 216, 216, 217, 217, 218, 218, 218, 218, 218, - 219, 219, 219, 219, 219, 219, 220, 220, 220, 221, - 221, 221, 221, 222, 222, 222, 222, 222, 222, 222, - 222, 223, 223, 224, 224, 224, 224, 224, 224, 224, - 224, 224, 225, 225, 225, 225, 225, 225, 225, 225, - 225, 225, 225, 226, 226, 226, 226, 226, 226, 226, - 226, 226, 226, 226, 227, 227, 227, 227, 227, 227, - 227, 227, 227, 227, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 228, 228, 228, 228, 229, 229, - 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, - 230, 231, 231, 231, 231, 231, 231, 231, 231, 231, - 231, 231, 231, 231, 232, 232, 232, 232, 232, 232, - 232, 232, 233, 233, 234, 234, 234, 234, 235, 235, - 235, 235, 237, 236, 239, 238, 240, 240, 241, 241, - 242, 242, 243, 243, 243, 243, 243, 243, 243, 243, - 243, 243, 244, 245, 245, 245, 245, 246, 246, 247, - 247, 247, 248, 248, 248, 249, 249, 249, 250, 250, - 250, 252, 251, 253, 251, 251, 251, 254, 254, 254, - 255, 255, 255, 256, 256, 256, 256, 256, 256, 256, - 256, 256, 256, 256, 256, 256, 256, 257, 257, 257, - 258, 260, 259, 261, 261, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, - 262, 262, 262, 262, 263, 263, 264, 264, 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, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 268, 268, - 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, - 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, - 268, 268, 268, 268, 268, 268, 268, 268, 269, 269, - 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, - 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, - 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, - 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, - 269, 269, 270, 270, 270, 270, 270, 270, 270, 270, - 270, 270, 270, 271, 271, 271, 271, 271, 272, 272, - 272, 272, 273, 273, 273, 274, 274, 274, 274, 274, - 274, 274, 274, 274, 274, 275, 275, 275, 275, 276, - 276, 276, 276, 277 + 135, -922, 3702, 5708, 37, 4828, -922, -922, -922, -922, + -922, -922, -922, -922, -125, -122, -95, -89, -85, -71, + -59, -41, -50, -922, -922, -38, 12, 28, 42, 55, + 75, 78, 130, 156, 185, 194, 203, 217, 224, 252, + 287, 294, 296, 303, 6019, -922, -922, -37, 307, 311, + 14, -20, -922, 313, 326, 332, 3702, 3702, 3702, 3702, + 3702, 1776, 1058, 3702, 4709, -922, 77, -922, -922, -922, + -922, -922, -922, -922, -922, 5818, 336, -922, -23, -922, + -922, 4057, 4449, 4449, -922, 3303, 344, -922, 4449, -922, + -922, 59, 59, -922, -922, -922, -922, 20, 48, -922, + -922, -922, -922, -922, -922, 468, 345, -922, 6767, 6767, + 6767, -922, 6767, 5186, 6767, 39, -922, 6758, 347, 348, + 352, 354, 6767, 1630, 52, 100, 186, 6767, 6767, 359, + 6638, 6767, 6767, 5704, 6767, 6767, -922, -922, -922, -922, + 4196, -922, -922, -922, -922, -922, 3702, 3702, 5708, 3702, + 3702, 3702, 3702, 5708, 3702, 5708, 3702, 5708, 3702, 5708, + 5708, 5708, 5708, 5708, 5708, 5708, 5708, 5708, 5708, 5708, + 5708, 5708, 5708, 5708, 3702, -922, -922, 362, 3303, 370, + 373, 3303, -922, -922, 5708, 3702, 3702, 374, 5304, 5708, + 1776, 3702, 3702, 51, 51, 51, 51, 51, -125, -95, + -89, -85, -71, -41, -38, 28, 4337, 4997, 5357, 5612, + 332, 87, -103, 4709, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, 3303, 3303, -98, 191, -922, + -922, 51, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, + 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, + 3702, 3702, 3702, 2764, 3702, -922, -922, 59, 59, 2898, + -922, -922, -922, 4449, -922, -922, -922, -922, 5708, -922, + 262, 257, 162, 59, 59, 162, 162, 4941, 188, -922, + 367, -922, -922, -922, -922, -922, -922, 4431, 278, 5129, + -922, 3303, 491, 395, 379, 2486, 5213, 6767, -922, -922, + -922, -922, 6767, -922, -922, -922, -922, 6730, 2901, -922, + 3303, 3303, 3303, 3303, -922, -922, 402, -922, -922, -922, + -922, -922, 3702, -922, 4289, -922, 397, -922, 4375, -922, + 3303, 216, -922, -922, 385, 387, -922, 392, 5904, 3303, + 407, -922, 3303, -21, 324, 425, -922, -922, -922, -922, + 1115, -922, -922, 408, 427, -922, 412, 418, 428, 429, + 432, 433, 423, 434, 437, 441, 443, 444, 449, 456, + 462, -69, 482, 464, 467, 469, 470, 472, 473, 479, + 481, 483, 485, 492, 3702, -922, 5708, 3702, -922, 5260, + 501, 493, 494, 3303, 508, 509, 528, 520, 4060, 522, + 523, 3702, 3702, -922, 633, -922, 1031, 532, 3702, -922, + -922, 4026, 4994, 507, 507, 569, 569, 405, 405, -922, + 3054, 1798, 1271, 1600, 569, 569, 683, 683, 51, 51, + 51, -922, -922, -46, 2253, -922, -922, 533, 4444, 534, + 162, 536, 545, 3303, 162, 162, 162, 162, 162, 541, + -922, 188, -922, 188, -922, 541, 541, -922, 162, 468, + 5794, 5679, 162, 162, 543, 7, -922, 442, 396, -922, + 3702, 3303, 546, -922, -922, -922, -922, 4431, -12, -8, + 10, 468, 548, 71, -922, -922, -922, 561, 6767, 468, + 1917, -125, 549, 4501, -922, -922, -922, 578, 588, 590, + 591, 598, 6134, -922, 3855, 5453, 353, 582, 324, -922, + -922, 577, -922, 5708, -922, 21, 3032, 6043, 1099, -922, + 5708, -922, 583, -922, -922, 3303, 66, -922, -922, -922, + 2625, -922, -922, 413, -922, 599, 5129, -922, -922, -922, + -922, -922, -922, -922, 585, -922, 602, -922, -922, -922, + -922, 5708, -922, 5708, -922, 5708, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, 4522, 611, 612, + -922, 606, -922, -922, 614, -922, -922, 618, -922, -922, + -922, -922, 51, 4709, -922, 3303, 191, 5559, 1592, -922, + 4709, 3702, -922, -922, -922, -922, -922, 541, 162, -922, + 541, 541, 541, 541, 541, 3702, 63, 706, 5818, 442, + 396, -922, 98, 120, -922, -922, 5588, 625, 442, 442, + 442, 442, 442, 442, -70, -922, -922, 627, 3303, 396, + 396, 396, 396, 396, 396, -33, 623, 4709, -922, -58, + -922, 641, 747, 2486, -922, 720, 468, -922, -922, -922, + -922, -922, -922, -922, -922, 635, 647, 650, -922, -922, + 6019, -922, -922, 651, 38, 654, -922, 646, 3702, 3702, + 3702, 3702, 1776, 3702, 645, 25, -922, -922, 4763, -922, + 77, -922, 6767, 6767, 6206, -922, 803, 805, 806, 818, + -922, -922, 376, 682, -922, -922, -922, -922, 5521, -922, + 676, 688, 3169, -922, 1035, -922, -922, 21, -922, 413, + -922, 690, 5559, 680, 413, 5559, 679, 4540, 1099, 692, + 1099, 1099, 1099, 1099, 1099, 167, -922, -922, 686, 6278, + -922, 689, -922, 290, -922, -113, 701, 705, 691, 707, + 711, 3166, 3322, 708, 413, 413, 4129, 413, 413, 413, + 413, -922, 61, 411, -922, 4431, -922, 3702, 3702, 699, + 702, 703, -922, -922, -922, 3702, -922, 3702, -922, 709, + -922, 5933, 468, -922, -922, -922, -922, -922, -922, 712, + -922, -922, 725, -922, 4709, 541, 704, 715, 5679, 442, + 396, -70, -33, 729, 732, 1592, -922, -922, 442, 740, + 740, 740, 740, 740, 298, 3702, -922, 396, -922, 742, + 742, 742, 742, 742, 321, 3702, -922, 743, -922, 3702, + -922, 731, 4558, 6350, -922, 760, -922, -922, 5708, 5708, + 5708, 746, 5708, 749, 5333, 5708, 1776, 51, 51, 51, + 51, 750, -26, 51, -922, -922, 3836, 3702, 3702, 3702, + 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, + 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3702, 3300, 3702, + -922, -922, -922, -922, -14, 768, 771, 772, 6422, 17, + -922, 1035, 6647, 5453, 3303, 767, 763, 1035, 1035, 1035, + 1035, 1035, 1035, 85, 742, -922, 411, -922, 757, 413, + 209, 758, -922, -922, 329, 1099, 775, 775, 775, 775, + 775, -922, 3702, -922, -922, 5559, -922, 2319, -922, -922, + 3303, 3702, 3702, -922, -922, -922, -922, -922, 3166, 761, + 789, 4709, -922, -922, 413, 341, 341, 927, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, 776, 774, -922, -922, 341, 341, + 341, 267, 937, -922, 3702, -922, 2625, 797, -922, 641, + 58, 89, -922, -922, -922, 93, 94, -922, 6019, 59, + 898, 132, -922, -922, 5559, -922, -70, -33, -922, -922, + 5559, 5559, -922, 740, 783, 802, 742, 808, 804, 3590, + -922, -922, -922, 3919, 828, 829, -922, 812, 826, 831, + 3702, 832, 3303, 823, 825, 836, 827, 4595, 3702, -922, + -922, -922, 4026, 4994, 507, 507, 569, 569, 405, 405, + -922, 4613, 1798, 1271, 1600, 569, 569, 683, 683, 51, + 51, 51, -922, -922, 96, 2505, 6494, 984, 847, 987, + 990, 992, -922, 856, 85, 742, -922, -922, -922, -922, + -922, -922, 5708, 1035, 3975, -922, -922, 860, -922, -922, + 276, 844, -922, -922, 775, 5559, 843, 848, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, + -922, -922, -922, -922, -922, -922, -922, -922, 846, -922, + 850, 849, 851, -922, 3434, 341, -922, -922, -922, -922, + -922, 1917, 855, 3322, 413, -922, -922, -922, -922, 1592, + 59, -922, -922, -922, 2, 858, 861, -922, -922, 865, + 866, 5559, -922, 5559, -922, -922, 5778, 6003, 6052, 3303, + 368, -922, -922, 1011, -922, 3919, -922, 869, 872, 871, + 876, 878, -922, -922, 887, -922, -922, 51, 3702, -922, + -922, -922, 99, -922, 104, 895, 145, -922, -922, -922, + 899, 919, 920, 921, 40, 923, 3975, 3975, 3975, 3975, + 3975, 1776, 3975, 4211, -922, 413, 2679, 915, -922, 2679, + 5559, 914, -922, -922, 2094, -922, -922, 1066, -922, 3166, + 4709, 917, -922, -922, 938, -922, 926, -922, -922, -922, + -922, -922, 932, 933, 4191, -922, 4191, -922, 4191, -922, + -922, 4191, 4191, 4191, -922, 6566, -922, 3702, 3702, -922, + 3702, -922, 3702, 4709, 1075, 939, 1076, 941, 953, 1092, + 955, 5708, 5708, 5708, 5708, 940, 5424, 5708, 67, 67, + 67, 67, 67, 947, 149, 67, 3975, 3975, 3975, 3975, + 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, 3975, + 3975, 3975, 3975, 3975, 3975, 3568, 3702, -922, -922, 5559, + 948, -922, 2679, -922, -922, 954, -922, -922, -922, 1592, + 1592, 1592, -922, -922, -922, -922, -922, -922, -922, -922, + -922, 153, 171, 177, 181, 949, -922, 958, -922, -922, + 189, -922, 957, 950, 964, 972, 3303, 970, 971, 982, + 3975, -922, 4820, 5010, 1350, 1350, 604, 604, 662, 662, + -922, 1203, 5026, 5050, 5066, 770, 770, 67, 67, 67, + -922, -922, 193, 2782, 5559, 973, -922, 2679, -922, 2679, + 974, -922, -922, -922, 2679, 2679, -922, -922, -922, -922, + 994, 1130, 1135, 1000, -922, 985, 986, 988, 989, -922, + -922, 993, 67, 3975, -922, -922, 995, -922, 2679, -922, + -922, 996, 998, -922, 3702, 3702, 3702, -922, 3702, 4211, + -922, 1592, 1006, 1008, 205, 210, 214, 263, 1592, -922, + -922, -922, -922, -922, -922, -922, -922 }; -/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -static const yytype_uint8 yyr2[] = -{ - 0, 2, 2, 2, 2, 1, 2, 2, 1, 3, - 4, 5, 4, 0, 5, 1, 1, 1, 1, 1, - 2, 1, 1, 2, 2, 2, 2, 7, 9, 11, - 9, 11, 13, 9, 13, 9, 7, 5, 0, 3, - 1, 2, 2, 3, 2, 2, 2, 2, 2, 2, - 2, 2, 2, 2, 2, 4, 5, 5, 1, 3, - 1, 4, 4, 0, 4, 3, 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, - 2, 4, 5, 6, 4, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 2, 2, 1, 1, 1, 1, 2, 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, - 4, 1, 1, 1, 1, 2, 2, 2, 2, 2, - 3, 4, 1, 1, 2, 2, 2, 2, 2, 3, - 4, 7, 3, 1, 2, 2, 2, 2, 2, 2, - 3, 4, 7, 3, 1, 1, 2, 2, 2, 2, - 2, 2, 3, 4, 1, 1, 2, 2, 2, 2, - 2, 2, 3, 4, 5, 9, 9, 9, 1, 1, - 2, 1, 1, 1, 3, 4, 4, 4, 4, 1, - 1, 1, 1, 2, 1, 1, 1, 3, 4, 2, - 4, 4, 4, 1, 1, 1, 2, 3, 2, 4, - 4, 1, 1, 1, 2, 3, 2, 3, 1, 4, - 5, 5, 0, 6, 0, 9, 1, 1, 1, 1, - 2, 3, 1, 2, 2, 2, 3, 3, 3, 3, - 3, 3, 4, 3, 1, 4, 2, 1, 1, 1, - 3, 5, 1, 2, 4, 1, 2, 2, 1, 1, - 1, 0, 6, 0, 7, 4, 5, 3, 5, 4, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 2, 2, 2, 1, 1, 2, - 1, 0, 2, 1, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 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, 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, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, - 1, 4, 7, 7, 7, 7, 4, 4, 5, 4, - 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 5, 4, 4, 3, 3, 3, 3, 1, - 4, 7, 7, 7, 7, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 5, 4, 2, 5, 4, 4, 2, 2, 2, - 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 5, 4, 4, 3, 3, 3, 3, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 8, - 11, 4, 4, 6, 4, 4, 6, 6, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 1, 4, - 7, 7, 7, 7, 4, 4, 5, 4, 2, 5, - 4, 4, 2, 2, 2, 2, 2, 3, 3, 3, - 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, - 3, 3, 3, 3, 3, 5, 4, 4, 3, 3, - 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 2, 4, 2, 3, - 1, 2, 1, 2, 2, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 0 -}; - -/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE doesn't specify something else to do. Zero - means the default is an error. */ + /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ static const yytype_uint16 yydefact[] = { - 0, 753, 0, 0, 0, 753, 5, 642, 638, 641, - 749, 750, 644, 645, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 640, 646, 0, 0, 0, 0, 0, + 0, 755, 0, 0, 0, 755, 5, 644, 640, 643, + 751, 752, 646, 647, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 642, 648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 648, 647, 0, 0, 0, - 0, 0, 639, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 753, 0, 3, 579, 643, 289, 300, 299, - 383, 384, 386, 387, 368, 0, 0, 398, 365, 397, - 392, 389, 388, 391, 369, 0, 0, 370, 390, 400, - 385, 753, 753, 4, 291, 292, 293, 0, 354, 753, - 288, 380, 381, 382, 1, 0, 0, 21, 753, 753, - 753, 22, 753, 753, 753, 0, 38, 753, 0, 0, - 0, 0, 753, 0, 0, 0, 0, 753, 753, 0, - 753, 753, 753, 0, 753, 753, 6, 17, 7, 19, - 0, 15, 16, 18, 68, 40, 753, 753, 0, 753, - 753, 753, 753, 0, 753, 0, 753, 0, 753, 0, + 0, 0, 0, 0, 0, 650, 649, 0, 0, 0, + 0, 0, 641, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 755, 0, 3, 581, 645, 291, 302, 301, + 385, 386, 388, 389, 370, 0, 0, 400, 367, 399, + 394, 391, 390, 393, 371, 0, 0, 372, 392, 402, + 387, 755, 755, 4, 293, 294, 295, 0, 356, 755, + 290, 382, 383, 384, 1, 0, 0, 21, 755, 755, + 755, 22, 755, 755, 755, 0, 38, 755, 0, 0, + 0, 0, 755, 0, 0, 0, 0, 755, 755, 0, + 755, 755, 755, 0, 755, 755, 6, 17, 7, 19, + 0, 15, 16, 18, 68, 40, 755, 755, 0, 755, + 755, 755, 755, 0, 755, 0, 755, 0, 755, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 753, 315, 321, 0, 0, 0, - 603, 0, 753, 314, 0, 753, 753, 0, 0, 0, - 0, 753, 753, 612, 610, 609, 611, 608, 289, 383, - 384, 386, 387, 398, 397, 392, 389, 388, 391, 390, - 385, 0, 0, 538, 735, 736, 737, 738, 741, 739, - 743, 742, 740, 744, 724, 725, 0, 0, 753, 730, - 723, 607, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 755, 317, 323, 0, 0, 0, + 605, 0, 755, 316, 0, 755, 755, 0, 0, 0, + 0, 755, 755, 614, 612, 611, 613, 610, 291, 385, + 386, 388, 389, 400, 399, 394, 391, 390, 393, 392, + 387, 0, 0, 540, 737, 738, 739, 740, 743, 741, + 745, 744, 742, 746, 726, 727, 0, 0, 755, 732, + 725, 609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 751, 752, 753, 753, 0, - 366, 367, 399, 389, 394, 393, 396, 290, 0, 395, - 0, 275, 753, 753, 753, 753, 753, 753, 0, 324, - 274, 326, 753, 745, 746, 747, 748, 0, 356, 0, - 328, 0, 0, 58, 60, 0, 753, 753, 52, 41, - 51, 53, 753, 42, 146, 47, 23, 753, 0, 45, - 0, 0, 0, 0, 50, 753, 0, 26, 25, 24, - 48, 44, 0, 0, 149, 0, 54, 0, 20, 0, - 0, 46, 49, 323, 302, 313, 0, 0, 0, 0, - 13, 0, 0, 0, 322, 63, 304, 305, 306, 354, - 753, 301, 0, 537, 536, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 753, 754, 755, 755, 0, + 368, 369, 401, 391, 396, 395, 398, 292, 0, 397, + 0, 277, 755, 755, 755, 755, 755, 755, 0, 326, + 276, 328, 755, 747, 748, 749, 750, 0, 358, 0, + 330, 0, 0, 58, 60, 0, 755, 755, 52, 41, + 51, 53, 755, 42, 147, 47, 23, 755, 0, 45, + 0, 0, 0, 0, 50, 755, 0, 26, 25, 24, + 48, 44, 0, 151, 0, 150, 0, 54, 0, 20, + 0, 0, 46, 49, 325, 304, 315, 0, 0, 0, + 0, 13, 0, 0, 0, 324, 63, 306, 307, 308, + 356, 755, 303, 0, 539, 538, 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, 316, 0, 753, 318, 0, 0, + 0, 0, 0, 0, 0, 318, 0, 755, 320, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 637, 728, 731, 0, 753, 0, 726, 203, - 621, 622, 623, 624, 625, 626, 629, 630, 636, 0, - 618, 619, 620, 627, 628, 616, 617, 613, 614, 615, - 635, 634, 0, 0, 325, 327, 0, 0, 0, 753, - 276, 0, 265, 753, 753, 753, 753, 753, 281, 264, - 0, 277, 0, 278, 280, 279, 188, 753, 0, 0, - 0, 753, 753, 0, 189, 192, 753, 0, 187, 753, - 362, 0, 359, 358, 353, 357, 0, 735, 736, 737, - 0, 0, 739, 332, 294, 334, 0, 753, 0, 753, - 302, 0, 0, 43, 39, 753, 0, 0, 0, 0, - 0, 753, 371, 0, 753, 323, 302, 0, 322, 71, - 0, 377, 0, 76, 78, 0, 0, 753, 303, 0, - 753, 0, 401, 205, 0, 0, 66, 401, 210, 0, - 67, 65, 0, 309, 356, 0, 586, 585, 602, 592, - 588, 590, 591, 0, 598, 0, 597, 651, 587, 652, - 0, 654, 0, 655, 0, 658, 659, 660, 661, 662, - 663, 664, 665, 666, 667, 594, 0, 0, 0, 317, - 0, 593, 596, 0, 600, 599, 0, 605, 606, 595, - 589, 580, 539, 729, 0, 753, 753, 753, 91, 204, - 0, 633, 632, 297, 296, 298, 282, 753, 266, 271, - 267, 268, 270, 269, 753, 0, 0, 0, 753, 0, - 229, 0, 0, 753, 191, 0, 0, 753, 753, 753, - 753, 753, 753, 753, 243, 242, 0, 253, 0, 0, - 0, 0, 0, 0, 753, 0, 535, 534, 363, 352, - 295, 0, 0, 753, 753, 0, 55, 59, 716, 712, - 715, 718, 719, 195, 0, 0, 0, 714, 720, 0, - 722, 721, 0, 0, 0, 713, 0, 0, 0, 0, - 0, 0, 0, 0, 196, 231, 199, 232, 668, 717, - 194, 753, 753, 753, 373, 0, 0, 0, 0, 375, - 753, 0, 0, 166, 167, 168, 154, 0, 155, 0, - 151, 156, 152, 753, 165, 150, 0, 73, 0, 379, - 0, 753, 0, 0, 753, 0, 0, 753, 0, 753, - 753, 753, 753, 753, 0, 234, 233, 0, 753, 80, - 0, 753, 0, 8, 0, 0, 0, 0, 0, 0, - 753, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 64, 753, 753, 169, 0, 307, 0, 0, 0, 0, - 0, 319, 320, 604, 0, 601, 0, 727, 0, 98, - 0, 0, 92, 100, 95, 99, 94, 96, 0, 93, - 97, 0, 184, 631, 272, 0, 0, 0, 753, 0, - 753, 753, 0, 0, 753, 190, 193, 753, 248, 244, - 245, 247, 246, 0, 753, 223, 0, 254, 259, 255, - 256, 258, 257, 0, 753, 226, 283, 360, 0, 329, - 0, 0, 753, 337, 753, 336, 62, 0, 0, 0, - 678, 0, 0, 0, 0, 0, 686, 685, 684, 683, - 0, 0, 682, 61, 198, 0, 0, 0, 0, 0, + 0, 0, 0, 639, 730, 733, 0, 755, 0, 728, + 205, 623, 624, 625, 626, 627, 628, 631, 632, 638, + 0, 620, 621, 622, 629, 630, 618, 619, 615, 616, + 617, 637, 636, 0, 0, 327, 329, 0, 0, 0, + 755, 278, 0, 267, 755, 755, 755, 755, 755, 283, + 266, 0, 279, 0, 280, 282, 281, 190, 755, 0, + 0, 0, 755, 755, 0, 191, 194, 755, 0, 189, + 755, 364, 0, 361, 360, 355, 359, 0, 737, 738, + 739, 0, 0, 741, 334, 296, 336, 0, 755, 0, + 755, 304, 0, 0, 43, 39, 755, 0, 0, 0, + 0, 0, 755, 373, 0, 755, 325, 304, 0, 324, + 71, 0, 379, 0, 76, 78, 0, 0, 755, 305, + 0, 755, 0, 403, 207, 0, 0, 66, 403, 212, + 0, 67, 65, 0, 311, 358, 0, 588, 587, 604, + 594, 590, 592, 593, 0, 600, 0, 599, 653, 589, + 654, 0, 656, 0, 657, 0, 660, 661, 662, 663, + 664, 665, 666, 667, 668, 669, 596, 0, 0, 0, + 319, 0, 595, 598, 0, 602, 601, 0, 607, 608, + 597, 591, 582, 541, 731, 0, 755, 755, 755, 91, + 206, 0, 635, 634, 299, 298, 300, 284, 755, 268, + 273, 269, 270, 272, 271, 755, 0, 0, 0, 755, + 0, 231, 0, 0, 755, 193, 0, 0, 755, 755, + 755, 755, 755, 755, 755, 245, 244, 0, 255, 0, + 0, 0, 0, 0, 0, 755, 0, 537, 536, 365, + 354, 297, 0, 0, 755, 755, 0, 55, 59, 718, + 714, 717, 720, 721, 197, 0, 0, 0, 716, 722, + 0, 724, 723, 0, 0, 0, 715, 0, 0, 0, + 0, 0, 0, 0, 0, 198, 233, 201, 234, 670, + 719, 196, 755, 755, 755, 375, 0, 0, 0, 0, + 377, 755, 0, 0, 168, 169, 170, 156, 0, 157, + 0, 153, 158, 154, 755, 167, 152, 0, 73, 0, + 381, 0, 755, 0, 0, 755, 0, 0, 755, 0, + 755, 755, 755, 755, 755, 0, 236, 235, 0, 755, + 80, 0, 755, 0, 8, 0, 0, 0, 0, 0, + 0, 755, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 755, 755, 171, 0, 309, 0, 0, 0, + 0, 0, 321, 322, 606, 0, 603, 0, 729, 0, + 98, 0, 0, 92, 100, 95, 99, 94, 96, 0, + 93, 97, 0, 186, 633, 274, 0, 0, 0, 755, + 0, 755, 755, 0, 0, 755, 192, 195, 755, 250, + 246, 247, 249, 248, 0, 755, 225, 0, 256, 261, + 257, 258, 260, 259, 0, 755, 228, 285, 362, 0, + 331, 0, 0, 755, 339, 755, 338, 62, 0, 0, + 0, 680, 0, 0, 0, 0, 0, 688, 687, 686, + 685, 0, 0, 684, 61, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, - 56, 376, 753, 0, 0, 0, 0, 753, 0, 37, - 753, 753, 0, 159, 157, 0, 753, 753, 753, 753, - 753, 753, 753, 163, 72, 753, 378, 0, 0, 0, - 0, 311, 310, 0, 753, 239, 235, 236, 238, 237, - 86, 753, 312, 14, 753, 206, 402, 403, 401, 0, - 753, 753, 208, 209, 211, 213, 214, 753, 0, 217, - 219, 216, 212, 0, 176, 172, 0, 115, 116, 117, - 118, 119, 120, 123, 124, 139, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 143, 142, - 126, 125, 112, 114, 113, 121, 122, 110, 111, 107, - 108, 109, 106, 0, 0, 105, 170, 173, 175, 174, - 0, 0, 180, 753, 182, 0, 0, 69, 308, 0, - 0, 653, 656, 657, 0, 0, 753, 0, 753, 0, - 0, 401, 273, 753, 230, 753, 753, 224, 227, 753, - 753, 284, 249, 252, 0, 260, 263, 0, 364, 331, - 330, 333, 0, 0, 339, 338, 0, 0, 0, 753, - 0, 0, 0, 0, 0, 0, 0, 0, 711, 197, - 200, 695, 696, 697, 698, 699, 700, 703, 704, 710, - 0, 692, 693, 694, 701, 702, 690, 691, 687, 688, - 689, 709, 708, 0, 0, 753, 0, 0, 0, 0, - 0, 372, 0, 753, 164, 144, 148, 145, 153, 160, - 0, 753, 0, 161, 201, 0, 74, 753, 0, 0, - 753, 88, 240, 753, 0, 0, 405, 406, 410, 407, - 415, 408, 409, 411, 412, 413, 414, 416, 417, 418, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 57, 56, 378, 755, 0, 0, 0, 0, 755, 0, + 37, 755, 755, 0, 161, 159, 0, 755, 755, 755, + 755, 755, 755, 755, 165, 72, 755, 380, 0, 0, + 0, 0, 313, 312, 0, 755, 241, 237, 238, 240, + 239, 86, 755, 314, 14, 755, 208, 404, 405, 403, + 0, 755, 755, 210, 211, 213, 215, 216, 755, 0, + 219, 221, 218, 214, 0, 178, 174, 0, 115, 116, + 117, 118, 119, 120, 123, 124, 139, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 143, + 142, 126, 125, 112, 114, 113, 121, 122, 110, 111, + 107, 108, 109, 106, 0, 0, 105, 172, 175, 177, + 176, 0, 0, 182, 755, 184, 0, 0, 69, 310, + 0, 0, 655, 658, 659, 0, 0, 755, 0, 755, + 0, 0, 403, 275, 755, 232, 755, 755, 226, 229, + 755, 755, 286, 251, 254, 0, 262, 265, 0, 366, + 333, 332, 335, 0, 0, 341, 340, 0, 0, 0, + 755, 0, 0, 0, 0, 0, 0, 0, 0, 713, + 199, 202, 697, 698, 699, 700, 701, 702, 705, 706, + 712, 0, 694, 695, 696, 703, 704, 692, 693, 689, + 690, 691, 711, 710, 0, 0, 755, 0, 0, 0, + 0, 0, 374, 0, 755, 166, 146, 144, 149, 145, + 155, 162, 0, 755, 0, 163, 203, 0, 74, 755, + 0, 0, 755, 88, 242, 755, 0, 0, 407, 408, + 412, 409, 417, 410, 411, 413, 414, 415, 416, 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, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 483, 464, 465, 466, 467, + 459, 460, 461, 462, 463, 464, 465, 485, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, - 478, 479, 480, 481, 482, 484, 485, 486, 487, 488, + 478, 479, 480, 481, 482, 483, 484, 486, 487, 488, 489, 490, 491, 492, 493, 494, 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, - 509, 510, 753, 527, 528, 529, 520, 532, 516, 517, - 515, 522, 523, 511, 512, 513, 514, 521, 519, 526, - 524, 530, 525, 518, 531, 404, 0, 9, 0, 0, - 0, 215, 218, 177, 171, 141, 140, 179, 183, 753, - 0, 204, 0, 583, 582, 584, 581, 753, 753, 185, - 104, 101, 0, 0, 0, 225, 228, 0, 0, 753, - 250, 753, 261, 361, 743, 0, 742, 0, 0, 340, - 342, 732, 753, 0, 677, 0, 0, 0, 0, 0, - 675, 674, 0, 680, 681, 669, 0, 707, 706, 374, - 0, 27, 0, 0, 0, 36, 162, 158, 0, 0, + 509, 510, 511, 512, 755, 529, 530, 531, 522, 534, + 518, 519, 517, 524, 525, 513, 514, 515, 516, 523, + 521, 528, 526, 532, 527, 520, 533, 406, 0, 9, + 0, 0, 0, 217, 220, 179, 173, 141, 140, 181, + 185, 755, 0, 206, 0, 585, 584, 586, 583, 755, + 755, 187, 104, 101, 0, 0, 0, 227, 230, 0, + 0, 755, 252, 755, 263, 363, 745, 0, 744, 0, + 0, 342, 344, 734, 755, 0, 679, 0, 0, 0, + 0, 0, 677, 676, 0, 682, 683, 671, 0, 709, + 708, 376, 0, 27, 0, 0, 0, 36, 164, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 202, 540, 0, 77, 0, 82, 79, 753, 0, - 241, 753, 0, 207, 12, 10, 220, 753, 221, 0, - 178, 70, 0, 186, 0, 102, 649, 753, 753, 753, - 0, 0, 0, 345, 0, 344, 0, 343, 733, 0, - 0, 0, 734, 753, 341, 0, 0, 679, 0, 676, - 0, 705, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 555, 553, 552, 554, - 551, 0, 0, 550, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 204, 542, 0, 77, 0, 82, 79, + 755, 0, 243, 755, 0, 209, 12, 10, 222, 755, + 223, 0, 180, 70, 0, 188, 0, 102, 651, 755, + 755, 755, 0, 0, 0, 347, 0, 346, 0, 345, + 735, 0, 0, 0, 736, 755, 343, 0, 0, 681, + 0, 678, 0, 707, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 557, 555, + 554, 556, 553, 0, 0, 552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 75, 84, 753, 0, 753, - 81, 533, 11, 0, 753, 401, 103, 753, 753, 753, - 753, 753, 351, 350, 349, 348, 347, 346, 335, 0, - 0, 0, 0, 0, 28, 0, 33, 35, 0, 30, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 578, - 564, 565, 566, 567, 568, 569, 570, 571, 577, 0, - 561, 562, 563, 559, 560, 556, 557, 558, 576, 575, - 0, 0, 753, 0, 753, 87, 222, 181, 0, 287, - 286, 285, 251, 262, 672, 671, 673, 670, 0, 0, - 0, 0, 549, 0, 0, 0, 0, 547, 546, 0, - 541, 0, 574, 573, 0, 753, 89, 650, 29, 0, - 0, 31, 0, 0, 0, 548, 0, 572, 753, 753, - 0, 0, 0, 0, 0, 0, 753, 83, 34, 32, - 544, 543, 545, 542, 85 + 0, 0, 0, 0, 0, 0, 0, 75, 84, 755, + 0, 755, 81, 535, 11, 0, 755, 403, 103, 755, + 755, 755, 755, 755, 353, 352, 351, 350, 349, 348, + 337, 0, 0, 0, 0, 0, 28, 0, 33, 35, + 0, 30, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 580, 566, 567, 568, 569, 570, 571, 572, 573, + 579, 0, 563, 564, 565, 561, 562, 558, 559, 560, + 578, 577, 0, 0, 755, 0, 755, 87, 224, 183, + 0, 289, 288, 287, 253, 264, 674, 673, 675, 672, + 0, 0, 0, 0, 551, 0, 0, 0, 0, 549, + 548, 0, 543, 0, 576, 575, 0, 755, 89, 652, + 29, 0, 0, 31, 0, 0, 0, 550, 0, 574, + 755, 755, 0, 0, 0, 0, 0, 0, 755, 83, + 34, 32, 546, 545, 547, 544, 85 }; -/* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int16 yydefgoto[] = -{ - -1, 4, 5, 732, 733, 137, 520, 138, 139, 307, - 140, 292, 293, 141, 532, 750, 328, 708, 894, 342, - 711, 714, 343, 914, 1407, 1472, 1093, 1318, 587, 976, - 1076, 142, 325, 699, 700, 701, 702, 703, 751, 1239, - 752, 781, 463, 464, 673, 674, 1083, 408, 526, 530, - 928, 929, 465, 676, 724, 798, 808, 278, 279, 91, - 92, 344, 180, 345, 93, 289, 94, 643, 95, 644, - 824, 1023, 1024, 1269, 96, 97, 474, 470, 471, 98, - 99, 143, 690, 872, 144, 100, 101, 102, 103, 730, - 731, 916, 1225, 635, 352, 353, 1311, 213, 65, 677, - 678, 227, 228, 1270, 1271, 624, 66, 145 -}; - -/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ -#define YYPACT_NINF -922 -static const yytype_int16 yypact[] = -{ - 238, -922, 3707, 5766, 80, 4877, -922, -922, -922, -922, - -922, -922, -922, -922, -20, -68, -54, -43, -37, -23, - -49, 2, 3, -922, -922, 36, 90, 94, 120, 131, - 141, 166, 171, 181, 186, 204, 224, 233, 250, 252, - 265, 270, 288, 300, 6077, -922, -922, 59, 306, 308, - 30, 112, -922, 325, 331, 338, 3707, 3707, 3707, 3707, - 3707, 2266, 923, 3707, 3915, -922, 146, -922, -922, -922, - -922, -922, -922, -922, -922, 5876, 344, -922, 8, -922, - -922, 1691, 379, 379, -922, 3040, 346, -922, 379, -922, - -922, 220, 220, -922, -922, -922, -922, -11, 104, -922, - -922, -922, -922, -922, -922, 1704, 348, -922, 6862, 6862, - 6862, -922, 6862, 5244, 6862, -31, -922, 6834, 350, 357, - 359, 362, 6862, 1687, 161, 188, 258, 6862, 6862, 371, - 6652, 6862, 6862, 2382, 6862, 6862, -922, -922, -922, -922, - 4341, -922, -922, -922, -922, -922, 3707, 3707, 5766, 3707, - 3707, 3707, 3707, 5766, 3707, 5766, 3707, 5766, 3707, 5766, - 5766, 5766, 5766, 5766, 5766, 5766, 5766, 5766, 5766, 5766, - 5766, 5766, 5766, 5766, 3707, -922, -922, 372, 3040, 373, - 374, 3040, -922, -922, 5766, 3707, 3707, 398, 5362, 5766, - 2266, 3707, 3707, 60, 60, 60, 60, 60, -20, -54, - -43, -37, -23, 2, 36, 94, 1169, 5295, 5415, 5670, - 338, 321, -74, 3915, -922, -922, -922, -922, -922, -922, - -922, -922, -922, -922, -922, 3040, 3040, -87, 413, -922, - -922, 60, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, - 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, - 3707, 3707, 3707, 2769, 3707, -922, -922, 220, 220, 2903, - -922, -922, -922, 379, -922, -922, -922, -922, 5766, -922, - 405, 560, 273, 220, 220, 273, 273, 4990, 400, -922, - 402, -922, -922, -922, -922, -922, -922, 901, 419, 2827, - -922, 3040, 525, 427, 412, 2469, 5271, 6862, -922, -922, - -922, -922, 6862, -922, -922, -922, -922, 6748, 2638, -922, - 3040, 3040, 3040, 3040, -922, -922, 432, -922, -922, -922, - -922, -922, 3707, 4434, -922, 433, -922, 4520, -922, 3040, - -63, -922, -922, 225, 423, -922, 425, 5962, 3040, 426, - -922, 3040, 198, 205, 443, -922, -922, -922, -922, 942, - -922, -922, 428, 447, -922, 434, 438, 439, 442, 458, - 459, 453, 460, 471, 462, 468, 469, 472, 452, 474, - -69, 494, 480, 481, 482, 483, 484, 486, 487, 488, - 489, 490, 491, 3707, -922, 5766, 3707, -922, 2291, 507, - 498, 499, 3040, 500, 501, 513, 504, 4205, 505, 510, - 3707, 3707, -922, 668, -922, 936, 520, 3707, -922, -922, - 4171, 1444, 1377, 1377, 260, 260, 11, 11, -922, 2653, - 5043, 5059, 5099, 260, 260, 695, 695, 60, 60, 60, - -922, -922, -66, 1527, -922, -922, 519, 4589, 521, 273, - 523, 527, 3040, 273, 273, 273, 273, 273, 526, -922, - 400, -922, 400, -922, 526, 526, -922, 273, 1704, 5852, - 5737, 273, 273, 528, 50, -922, 1127, 232, -922, 3707, - 3040, 531, -922, -922, -922, -922, 901, -12, -10, -6, - 1704, 529, 10, -922, -922, -922, 543, 6862, 1704, 3841, - -20, 533, 4646, -922, -922, -922, 549, 553, 556, 558, - 564, 6192, -922, 3860, 5511, 280, 548, 205, -922, -922, - 567, -922, 5766, -922, 29, 3037, 6101, 1091, -922, 5766, - -922, 559, -922, -922, 3040, 294, -922, -922, -922, 2635, - -922, -922, 1168, -922, 575, 2827, -922, -922, -922, -922, - -922, -922, -922, 562, -922, 563, -922, -922, -922, -922, - 5766, -922, 5766, -922, 5766, -922, -922, -922, -922, -922, - -922, -922, -922, -922, -922, -922, 4667, 565, 566, -922, - 572, -922, -922, 571, -922, -922, 578, -922, -922, -922, - -922, 60, 3915, -922, 3040, 413, 5617, 4489, -922, 3915, - 3707, -922, -922, -922, -922, -922, 526, 273, -922, 526, - 526, 526, 526, 526, 3707, 212, 681, 5876, 1127, 232, - -922, 311, 320, -922, -922, 5646, 585, 1127, 1127, 1127, - 1127, 1127, 1127, -33, -922, -922, 586, 3040, 232, 232, - 232, 232, 232, 232, 39, 577, 3915, -922, 32, -922, - 601, 700, 2469, -922, 673, 1704, -922, -922, -922, -922, - -922, -922, -922, -922, 588, 598, 600, -922, -922, 6077, - -922, -922, 604, 35, 606, -922, 602, 3707, 3707, 3707, - 3707, 2266, 3707, 596, 64, -922, -922, 4758, -922, 146, - -922, 6862, 6862, 6264, -922, 754, 758, 763, 764, -922, - -922, 256, 617, -922, -922, -922, -922, 5579, -922, 621, - 633, 2906, -922, 1367, -922, -922, 29, -922, 1168, -922, - 634, 5617, 622, 1168, 5617, 619, 4685, 1091, 624, 1091, - 1091, 1091, 1091, 1091, 328, -922, -922, 625, 6336, -922, - 627, -922, 354, -922, 19, 647, 651, 637, 653, 657, - 3171, 3059, 649, 1168, 1168, 4274, 1168, 1168, 1168, 1168, - -922, 79, 323, -922, 901, -922, 3707, 3707, 640, 643, - 644, -922, -922, -922, 3707, -922, 3707, -922, 646, -922, - 5991, 1704, -922, -922, -922, -922, -922, -922, 650, -922, - -922, 671, -922, 3915, 526, 652, 654, 5737, 1127, 232, - -33, 39, 655, 656, 4489, -922, -922, 1127, 659, 659, - 659, 659, 659, 339, 3707, -922, 232, -922, 660, 660, - 660, 660, 660, 363, 3707, -922, 662, -922, 3707, -922, - 663, 4703, 6408, -922, 683, -922, -922, 5766, 5766, 5766, - 666, 5766, 670, 5391, 5766, 2266, 60, 60, 60, 60, - 672, -64, 60, -922, -922, 3981, 3707, 3707, 3707, 3707, - 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3707, - 3707, 3707, 3707, 3707, 3707, 3707, 3707, 3305, 3707, -922, - -922, -922, -922, -59, 688, 690, 699, 6480, 41, -922, - 1367, 6776, 5511, 3040, 701, 691, 1367, 1367, 1367, 1367, - 1367, 1367, 71, 660, -922, 323, -922, 696, 1168, 228, - 697, -922, -922, 366, 1091, 692, 692, 692, 692, 692, - -922, 3707, -922, -922, 5617, -922, 2099, -922, -922, 3040, - 3707, 3707, -922, -922, -922, -922, -922, 3171, 698, 719, - 3915, -922, -922, 1168, 369, 369, 858, -922, -922, -922, - -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, - -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, - -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, - -922, -922, -922, 704, 703, -922, -922, 369, 369, 369, - 293, 869, -922, 3707, -922, 2635, 727, -922, 601, -58, - -46, -922, -922, -922, -44, -42, -922, 6077, 220, 829, - 119, -922, -922, 5617, -922, -33, 39, -922, -922, 5617, - 5617, -922, 659, 714, 711, 660, 717, 713, 3327, -922, - -922, -922, 1439, 738, 751, -922, 734, 745, 746, 3707, - 748, 3040, 739, 741, 752, 750, 4740, 3707, -922, -922, - -922, 4171, 1444, 1377, 1377, 260, 260, 11, 11, -922, - 3595, 5043, 5059, 5099, 260, 260, 695, 695, 60, 60, - 60, -922, -922, -38, 1909, 6552, 904, 769, 908, 911, - 912, -922, 775, 71, 660, -922, -922, -922, -922, -922, - 5766, 1367, 4120, -922, -922, 778, -922, -922, 316, 765, - -922, -922, 692, 5617, 759, 766, -922, -922, -922, -922, - -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, - -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, - -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, - -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, - -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, - -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, - -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, - -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, - -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, - -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, - -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, - -922, -922, -922, -922, -922, -922, -922, -922, -922, -922, - -922, -922, -922, -922, -922, -922, 783, -922, 800, 770, - 804, -922, 3439, 369, -922, -922, -922, -922, -922, 3841, - 762, 3059, 1168, -922, -922, -922, -922, 4489, 220, -922, - -922, -922, 1, 806, 779, -922, -922, 812, 815, 5617, - -922, 5617, -922, -922, 5836, 6061, 6110, 3040, 326, -922, - -922, 968, -922, 1439, -922, 820, 824, 827, 830, 832, - -922, -922, 839, -922, -922, 60, 3707, -922, -922, -922, - -28, -922, -24, 840, 82, -922, -922, -922, 843, 841, - 855, 856, 37, 859, 4120, 4120, 4120, 4120, 4120, 2266, - 4120, 4356, -922, 1168, 755, 851, -922, 755, 5617, 850, - -922, -922, 1840, -922, -922, 1002, -922, 3171, 3915, 857, - -922, -922, 876, -922, 860, -922, -922, -922, -922, -922, - 863, 865, 2075, -922, 2075, -922, 2075, -922, -922, 2075, - 2075, 2075, -922, 6624, -922, 3707, 3707, -922, 3707, -922, - 3707, 3915, 1014, 884, 1029, 892, 893, 1034, 898, 5766, - 5766, 5766, 5766, 886, 5482, 5766, 114, 114, 114, 114, - 114, 887, 99, 114, 4120, 4120, 4120, 4120, 4120, 4120, - 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, 4120, - 4120, 4120, 4120, 3573, 3707, -922, -922, 5617, 894, -922, - 755, -922, -922, 885, -922, -922, -922, 4489, 4489, 4489, - -922, -922, -922, -922, -922, -922, -922, -922, -922, 103, - 123, 152, 168, 895, -922, 916, -922, -922, 170, -922, - 902, 903, 918, 920, 3040, 913, 915, 922, 4120, -922, - 5001, 5075, 1543, 1543, 290, 290, 684, 684, -922, 1472, - 5115, 5149, 4141, 906, 906, 114, 114, 114, -922, -922, - 172, 2288, 5617, 917, -922, 755, -922, 755, 921, -922, - -922, -922, 755, 755, -922, -922, -922, -922, 937, 1074, - 1077, 945, -922, 930, 932, 933, 934, -922, -922, 941, - 114, 4120, -922, -922, 940, -922, 755, -922, -922, 943, - 946, -922, 3707, 3707, 3707, -922, 3707, 4356, -922, 4489, - 950, 959, 173, 195, 196, 210, 4489, -922, -922, -922, - -922, -922, -922, -922, -922 -}; - -/* YYPGOTO[NTERM-NUM]. */ + /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -922, -922, -303, -922, 197, -922, -922, 807, -922, -922, - 194, -440, 470, -127, -922, -129, -922, -922, -195, -922, - -922, -922, 793, -922, -922, -922, -922, -922, -581, -922, - -922, -111, -922, -922, -922, -922, 240, 429, -672, -922, - -699, -740, -492, -922, -116, -922, 51, -539, -922, -497, - -921, -922, -455, 282, -664, 322, -229, 136, -71, 185, - 24, -288, -645, 801, 1201, -152, -118, -922, -117, -922, - -922, -922, -922, -144, -115, -922, -457, -922, -922, -36, - -27, -922, -922, -922, -922, -29, -45, -922, -922, -523, - -922, -72, -922, -584, -123, -60, 341, 307, 275, -922, - -922, -922, 726, 669, 1170, 243, -476, -1 + -922, -922, -284, -922, 238, -922, -922, 853, -127, -922, + 195, -424, 519, -126, -922, -78, -922, -922, -148, -922, + -922, -922, 840, -922, -922, -922, -922, -922, -582, -922, + -922, -111, -922, -922, -922, -922, 286, 474, -641, -922, + -691, -728, -576, -922, -64, -922, 108, -558, -922, -492, + -921, -922, -434, 337, -608, 241, 389, 609, -87, 24, + 86, -287, -647, 859, 230, -162, -130, -922, -128, -922, + -922, -922, -922, -91, -121, -922, -471, -922, -922, -18, + 18, -922, -922, -922, -922, -29, 81, -922, -922, -514, + -922, -16, -922, -567, -104, -60, 288, 716, 90, -922, + -922, -922, 787, -367, 1319, -68, -481, -1 }; -/* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule which - number is the opposite. If YYTABLE_NINF, syntax error. */ -#define YYTABLE_NINF -749 + /* YYDEFGOTO[NTERM-NUM]. */ +static const yytype_int16 yydefgoto[] = +{ + -1, 4, 5, 733, 734, 137, 521, 138, 139, 307, + 140, 292, 293, 141, 533, 751, 329, 709, 895, 343, + 712, 715, 344, 915, 1409, 1474, 1095, 1320, 588, 977, + 1078, 142, 326, 700, 701, 702, 703, 704, 752, 1241, + 753, 782, 464, 465, 674, 675, 1085, 409, 527, 531, + 929, 930, 466, 677, 725, 799, 809, 278, 279, 91, + 92, 345, 180, 346, 93, 289, 94, 644, 95, 645, + 825, 1024, 1025, 1271, 96, 97, 475, 471, 472, 98, + 99, 143, 691, 873, 144, 100, 101, 102, 103, 731, + 732, 917, 1227, 636, 353, 354, 1313, 213, 65, 678, + 679, 227, 228, 1272, 1273, 625, 66, 145 +}; + + /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 6, 212, 304, 324, 737, 610, 1230, 491, 181, 895, - 707, 984, 501, 679, 830, 183, 1334, 182, 606, 640, - 785, 281, 346, 347, 355, 348, 357, 358, 359, 360, - 388, 362, 794, 364, 675, 366, 264, 265, 266, 508, - 641, 899, 712, 269, 240, 187, 767, 255, 647, 256, - 832, 382, 1373, 903, 1011, 905, 906, 907, 908, 909, - 405, 230, 390, 391, -745, 614, -746, 260, 398, 399, - -747, 934, 935, 401, 977, 978, 979, 980, 552, 844, - 104, 401, 406, 401, 805, 511, -748, 512, 1066, 401, - 280, 280, 402, 240, 768, 815, 148, 553, 290, 258, - 591, 401, 1038, 401, 349, 401, 153, 1067, 1243, 401, - 149, 351, 770, 350, 283, 284, 285, 407, 306, 1362, - 1244, 150, 1245, 1364, 1246, 998, 146, 151, 1287, 214, - 215, 216, 804, 261, -745, 282, -746, -745, 1363, -746, - -747, 152, 1365, -747, 147, 354, 354, 1392, 354, 354, - 354, 354, 255, 354, 256, 354, -748, 354, 155, -748, - 796, 264, 265, 266, 269, 920, 154, 1335, 247, 248, - 249, 250, 251, 354, 252, 253, 254, 346, 347, 817, - 348, 290, 818, 921, 354, 354, 434, 435, 713, 407, - 354, 354, 683, 432, 188, 217, 218, 615, 535, 833, - 156, 1374, 451, 453, 814, 346, 347, 1072, 348, 346, - 347, 845, 348, 986, 184, 878, 286, 728, 264, 897, - 1014, 1082, 900, 252, 253, 254, 1088, 409, 981, 1367, - 1017, 219, 220, 270, 221, 271, 804, 272, 634, 222, - 1092, 223, 475, 982, 983, 626, 401, 627, 1368, 628, - 401, 1007, 1008, 287, 157, 987, 280, 280, 158, 349, - 257, 1233, 10, 568, 11, 1449, 351, 189, 350, 1484, - 401, 449, 280, 280, 449, 449, 468, 1402, 1403, 1404, - 273, 472, 238, 239, 159, 1251, 441, 349, 442, 1485, - 443, 349, 629, 240, 351, 160, 350, 988, 351, 401, - 350, 467, 298, 299, 300, 161, 301, 303, 305, 64, - 317, 309, 1390, 1391, 6, 401, 314, 1490, 1486, 401, - 401, 320, 321, 1392, 323, 326, 327, 1094, 331, 332, - 162, 999, 1004, 444, 1487, 163, 1491, 318, 1502, 1530, - 822, 288, 401, 401, 522, 164, 523, 524, 525, 290, - 165, 527, 1248, 528, 820, 529, 1085, 401, 735, 736, - 274, 1531, 1532, 193, 194, 195, 196, 197, 166, 679, - 231, -90, 630, -90, 275, -90, 1533, 604, 786, 276, - 791, 1, 2, 3, 277, 354, 631, 877, 167, 513, - 675, 632, 982, 983, 1089, 1226, 633, 168, 1086, 1240, - 809, 810, 811, 812, 813, 588, 1413, 319, 448, 450, - 452, 454, 455, 445, 169, 1247, 170, 247, 248, 249, - 250, 251, 1095, 252, 253, 254, -90, 446, -90, 171, - -90, 475, 447, 70, 172, 71, 72, 73, 449, 1349, - 1350, 1351, 449, 449, 449, 449, 449, 1397, 1398, 1399, - 1400, 1401, 173, 1402, 1403, 1404, 449, 982, 983, 1237, - 449, 449, 466, 80, 174, 625, 1255, 1256, 637, 527, - 185, 528, 186, 985, 893, 704, 604, 792, 1253, 263, - 982, 983, 1315, 609, 467, 604, 793, 400, 680, 190, - 303, 309, 910, 911, 6, 191, 493, 397, 82, 83, - 918, 919, 192, 705, 804, 1013, 1314, 1332, 259, 1317, - 268, 1254, 295, 467, 310, 88, 726, 1257, 1258, 6, - 90, 311, 517, 312, 346, 347, 313, 348, 814, 1016, - 1091, 911, 485, 982, 983, 322, 383, 385, 386, 410, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 1006, 433, 392, 407, 439, 469, 437, -264, 476, 1065, - 214, 215, 216, 487, 488, 596, 489, 1015, 502, 599, - 600, 601, 602, 603, 409, 468, 782, 514, 504, 515, - 519, 531, 534, 605, 401, 536, 449, 611, 612, 550, - 537, 1319, 492, 637, 538, 539, 349, 625, 540, 543, - 467, 841, 588, 351, 895, 350, 625, 625, 625, 625, - 625, 625, 409, 181, 541, 542, 544, 545, 546, 503, - 183, 789, 182, 409, 547, 548, 217, 218, 549, 467, - 551, 554, 6, 825, 608, 466, 555, 556, 557, 558, - 559, 1074, 560, 561, 562, 563, 564, 565, 809, 810, - 811, 812, 813, 570, 571, 572, 574, 575, 704, 576, - 577, 579, 219, 220, 466, 221, 580, 1479, 1480, 1481, - 222, 646, 223, 583, 586, 593, 597, 595, -266, 6, - 566, 604, 645, 642, 613, 684, 989, 990, 639, 681, - 685, 717, 625, 686, 994, 687, 995, 581, 582, 475, - 468, 688, 706, 468, 589, 709, 726, 1392, 726, 726, - 726, 726, 726, 729, 754, -265, 756, 757, 240, 787, - 917, 762, 763, 784, 181, 467, 764, 765, 467, 931, - 1410, 183, 766, 182, 797, 806, 816, -355, 819, 823, - 782, 409, 827, 828, 1075, 829, 1417, 1418, 1419, 831, - 725, 834, 843, 679, 873, 879, 835, 1340, 874, 1341, - 1077, 466, 769, 875, 876, 753, 636, 881, 485, 1527, - 882, 898, 896, 904, 675, 901, 1534, 625, 623, 409, - 409, 912, 788, 782, 915, 922, 625, 1228, 1229, 923, - 466, 925, 771, 637, 924, 926, 991, 1063, 933, 992, - 993, 467, 996, 637, 1000, 772, 773, 1001, 1003, 1009, - 1010, 1002, 716, 1025, 804, 814, 1408, -273, 1475, 1019, - 1029, 774, 1022, 1477, 1031, 1068, 741, 1069, 1037, 1482, - 1483, 1397, 1398, 1399, 1400, 1401, 1070, 1402, 1403, 1404, - 1081, 1080, 1015, 704, 249, 250, 251, 911, 252, 253, - 254, 775, 1087, 1090, 776, 1231, 1232, 777, 1234, 467, - 1235, 6, 1236, 1238, 1242, 869, 870, 1250, 1259, 625, - 1260, 1261, 1262, 778, 1272, 625, 625, 625, 625, 625, - 625, 1084, 1478, 1506, 409, 779, 466, 783, 1273, 466, - 1274, 1275, 1276, 726, 1278, 1280, 1277, 1281, 1282, 780, - 637, 636, 473, 468, 1290, 1473, 1283, 1291, 1292, 354, - 354, 1293, 1294, 1295, 1519, 1313, 931, 1249, 1320, 1316, - 790, 1330, 1321, 214, 215, 216, 1325, 1526, 467, 1392, - 799, 800, 801, 802, 803, 1337, 214, 215, 216, 821, - 1323, 753, 477, 478, 479, 70, 753, 71, 72, 73, - 725, 181, 725, 725, 725, 725, 725, 1324, 183, 1353, - 182, 1326, 466, 1336, 836, 837, 838, 839, 1338, 842, - 1504, 1339, 637, 1352, 1355, 80, 753, 753, 1356, 753, - 753, 753, 753, 1357, 1358, 588, 1370, 280, 1359, 217, - 218, 263, 468, 1360, 409, 409, 1366, 1369, 468, 468, - 1371, 1372, 217, 218, 1375, 1406, 1409, 1412, 217, 218, - 82, 83, 1415, 1414, 1433, 892, 1416, 467, 354, 1420, - 466, 1421, 1434, 467, 467, 219, 220, 88, 221, 1435, - 1436, 1437, 90, 222, 1438, 223, 1439, 930, 219, 220, - 1444, 221, 1476, 1448, 482, 220, 222, 221, 223, 1493, - 1474, 1488, 222, 1489, 223, 1399, 1400, 1401, 1492, 1402, - 1403, 1404, 1084, 224, 1494, 323, 1495, 225, 1499, 1497, - 625, 1498, 226, 1505, 1509, 1508, 588, 1510, 1507, 588, - 584, 287, 468, 1511, 1512, 226, 1513, 1514, 1528, 466, - 1515, 283, 284, 285, 718, 1516, 1518, 1529, 719, 1520, - 1005, 636, 1521, 1331, 494, 826, 1227, 467, 1405, 1012, - 507, 636, 1078, 1329, 1296, 1018, 880, 1040, 509, 1354, - 1322, 585, 0, 0, 0, 0, 0, 283, 284, 285, - 616, 753, 1036, 0, 617, 0, 0, 725, 0, 0, - 0, 720, 0, 1041, 1042, 1043, 1044, 1045, 1046, 1047, - 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, - 1058, 1059, 1060, 1061, 0, 1064, 753, 1333, 283, 284, - 285, 742, 0, 0, 0, 743, 0, 618, 466, 0, - 0, 0, 0, 0, 466, 466, 0, 0, 0, 0, - 0, 917, 1073, 286, 0, 0, 0, 0, 0, 799, - 800, 801, 802, 803, 0, 0, 0, 0, 636, 0, - 0, 0, 0, 70, 0, 71, 72, 73, 744, 0, - 0, 721, 229, 0, 930, 262, 0, 0, 680, 286, - 0, 0, 0, 0, 0, 722, 782, 280, 0, 1382, - 723, 0, 0, 80, 0, 267, 0, 0, 468, 0, - 468, 0, 211, 467, 0, 0, 0, 619, 0, 263, - 0, 6, 0, 0, 0, 294, 0, 0, 466, 745, - 286, 620, 0, 467, 0, 467, 621, 0, 82, 83, - 636, 622, 1241, 316, 0, 1429, 1430, 0, 1431, 0, - 1432, 0, 0, 330, 0, 88, 0, 0, 746, 0, - 90, 0, 0, 0, 0, 0, 0, 468, 0, 0, - 588, 0, 747, 0, 0, 0, 931, 748, 0, 0, - 0, 0, 749, 174, 0, 0, 588, 588, 588, 0, - 0, 0, 467, 1470, 1285, 0, 0, 0, 384, 356, - 0, 387, 0, 0, 361, 0, 363, 1312, 365, 0, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 0, 0, 283, 284, 285, - 885, 0, 627, 0, 886, 389, 0, 0, 0, 394, - 395, 396, 0, 0, 0, 403, 404, 236, 237, 238, - 239, 0, 0, 1012, 0, 0, 468, 0, 588, 0, - 240, 0, 0, 588, 0, 0, 782, 782, 782, 588, - 588, 0, 0, 0, 466, 0, 0, 887, 0, 0, - 0, 467, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 440, 0, 0, 466, 0, 466, 0, 0, 214, - 215, 216, 1522, 1523, 1524, 0, 1525, 0, 0, 484, - 0, 486, 234, 235, 236, 237, 238, 239, 0, 438, - 0, 468, 0, 588, 0, 0, 0, 240, 496, 286, - 497, 498, 499, 500, 0, 753, 0, 0, 1384, 1385, - 1386, 1387, 1388, 1389, 1390, 1391, 467, 0, 0, 510, - 0, 0, 0, 466, 588, 1392, 0, 888, 518, 0, - 0, 521, 0, 0, 0, 217, 218, 588, 782, 533, - 0, 889, 0, 0, 0, 782, 890, 0, 0, 0, - 0, 891, 245, 246, 247, 248, 249, 250, 251, 1328, - 252, 253, 254, 232, 233, 234, 235, 236, 237, 238, - 239, 219, 1264, 1265, 1266, 0, 753, 0, 569, 222, - 240, 223, 573, 1388, 1389, 1390, 1391, 0, 0, 0, - 0, 0, 1267, 0, 0, 229, 1392, 1268, 0, 1312, - 1312, 1312, 1312, 1312, 0, 1312, 567, 0, 0, 0, - 0, 0, 466, 1361, 0, 0, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 0, 252, 253, 254, - 0, 0, 598, 0, 0, 0, 0, 0, 0, 0, - 0, 1501, 0, 1393, 1394, 1395, 1396, 0, 294, 1397, - 1398, 1399, 1400, 1401, 930, 1402, 1403, 1404, 0, 0, - 638, 0, 0, 0, 0, 1376, 1377, 1378, 1379, 1380, - 294, 1383, 0, 0, 0, 0, 0, 466, 294, 1312, - 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, - 1312, 1312, 1312, 1312, 1312, 1312, 1312, 1312, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 0, - 252, 253, 254, 0, 734, 0, 592, 214, 215, 216, - 1397, 1398, 1399, 1400, 1401, 755, 1402, 1403, 1404, 0, - 0, 1471, 0, 710, 214, 215, 216, 0, 0, 0, - 727, 0, 0, 1312, 0, 1450, 1451, 1452, 1453, 1454, - 1455, 1456, 1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, - 1465, 1466, 1467, 1468, 0, 70, 0, 71, 72, 73, - 0, 758, 0, 759, 403, 760, 0, 262, 0, 0, - 0, 0, 0, 217, 218, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 80, 1312, 0, 0, 0, - 217, 218, 0, 0, 0, 0, 0, 0, 0, 1500, - 0, 263, 0, 0, 0, 0, 0, 807, 0, 219, - 220, 0, 221, 0, 0, 0, 0, 222, 0, 223, - 82, 83, 0, 0, 0, 294, 219, 220, 0, 221, - 0, 0, 0, 0, 222, 0, 223, 88, 0, 0, - 0, 0, 90, 315, 0, 0, 0, 0, 0, 0, - 0, 291, 1517, 1096, 1097, 1098, 1099, 1100, 1101, 1102, - 1103, 1104, 1105, 1106, 0, 1107, 1108, 1109, 1110, 1111, - 1112, 1113, 1114, 1115, 1116, 1117, 0, 0, 0, 0, - 0, 884, 840, 1118, 1119, 1120, 1121, 1122, 1123, 1124, - 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, - 1135, 1136, 0, 0, 1137, 1138, 1139, 1140, 1141, 1142, - 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 0, - 1152, 0, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, - 1161, 0, 1162, 1163, 1164, 232, 233, 234, 235, 236, - 237, 238, 239, 1343, 1345, 1347, 0, 0, 0, 0, - 1165, 294, 240, 0, 0, 0, 1166, 1167, 1168, 0, - 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, - 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, - 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, - 1199, 1200, 1201, 0, 0, 0, 1202, 1203, 1204, 1205, - 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, - 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1411, 1223, 1224, - 0, 1422, 0, 1423, 0, 1424, 0, 0, 1425, 1426, - 1427, 0, 0, 0, 0, 0, 0, 0, 1026, 1027, - 1028, 0, 1030, 0, 1033, 1034, 1035, 0, 0, 0, + 6, 212, 304, 323, 325, 281, 641, 1232, 492, 680, + 347, 769, 348, 831, 738, 183, 708, 1336, 896, 349, + 389, 146, 615, 255, 985, 256, 181, 611, 768, 187, + 288, 502, 795, 921, 713, 607, 260, 104, 786, 147, + 845, 509, 148, 356, 402, 358, 359, 360, 361, 406, + 363, 922, 365, 833, 367, 1375, 676, 642, 283, 284, + 285, 230, 182, 403, -747, 648, 806, 1012, -748, 149, + 383, 407, 270, 900, 271, 150, 272, 816, 553, 151, + 408, 391, 392, 255, 240, 256, -749, 399, 400, 818, + 280, 280, 819, 152, 771, 805, 153, 554, 290, 257, + 1394, 402, 261, 935, 936, 155, 978, 979, 980, 981, + 904, 352, 906, 907, 908, 909, 910, 408, 184, 273, + 592, 402, 350, 154, 999, 523, 156, 524, 525, 526, + 736, 737, 815, 1067, -747, 189, 898, -747, -748, 901, + 1039, -748, 214, 215, 216, 355, 355, -750, 355, 355, + 355, 355, 1068, 355, 616, 355, -749, 355, 351, -749, + 286, 258, 264, 265, 266, 347, 282, 348, 1337, 269, + 435, 436, 846, 355, 349, 442, 157, 443, 188, 444, + 714, 290, 797, 1073, 355, 355, 452, 454, 306, 536, + 355, 355, 158, 433, 347, 987, 348, 287, 347, 274, + 348, 317, 834, 349, 1376, 402, 159, 349, 217, 218, + 982, 879, 684, 275, 252, 253, 254, -750, 276, 160, + -750, 486, 445, 277, 1245, 983, 984, 410, 605, 787, + 1404, 1405, 1406, 1008, 1009, 1084, 402, 729, 1015, 161, + 402, 402, 162, 402, 219, 220, 1364, 221, 1018, 318, + 805, 1366, 222, 401, 223, 1246, 280, 280, 1090, 1247, + 1248, 988, 1289, 605, 793, 1365, 352, 214, 215, 216, + 1367, 450, 280, 280, 450, 450, 469, 350, 1, 2, + 3, 473, 535, 569, 989, 605, 794, 264, 265, 266, + 269, 211, 1369, 1235, 163, 352, 402, 1094, 1253, 352, + 402, 467, 446, 298, 299, 300, 350, 301, 303, 305, + 350, 1370, 309, 351, 6, 1451, 447, 314, 402, 1486, + 164, 448, 320, 321, 402, 324, 327, 328, 402, 332, + 333, 911, 912, 217, 218, 319, 1492, 1487, 1087, 1097, + 402, 408, 351, 1488, 264, 1096, 351, 1489, 1000, 165, + 290, 1250, 402, 470, 1005, 1493, 821, 402, 166, 1504, + 823, 402, 518, 468, 512, 680, 513, 167, 476, 219, + 220, 1532, 221, 983, 984, 1091, 1533, 222, 357, 223, + 1534, 168, 10, 362, 11, 364, 355, 366, 169, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 1088, 1228, 589, 878, 1415, 627, + 402, 628, 676, 629, 390, 1249, 170, 1242, 395, 396, + 397, 440, -267, 283, 284, 285, 743, 477, 1256, 1535, + 744, 983, 984, 1239, 1259, 1260, 919, 920, 240, 450, + 983, 984, 1317, 450, 450, 450, 450, 450, 1257, 1258, + 726, 171, 283, 284, 285, 617, 630, 450, 172, 618, + 173, 450, 450, 805, 1014, 754, 626, 174, 486, 638, + 528, 185, 529, 745, 530, 186, 705, 190, 214, 215, + 216, 1351, 1352, 1353, 609, 467, 815, 1017, 1255, 681, + 191, 303, 309, 1093, 912, 6, 192, 494, 439, -90, + 259, -90, 619, -90, 706, 983, 984, 1316, 268, 295, + 1319, 310, 311, 347, 467, 348, 312, 727, 313, 1321, + 6, 1334, 349, 322, 746, 286, 384, 236, 237, 238, + 239, -90, -266, -90, 386, -90, 631, 387, 393, 488, + 240, 718, 489, 490, 217, 218, 610, 468, 503, 514, + 632, 515, 505, 747, 286, 633, 516, 528, 476, 529, + 634, 986, 247, 248, 249, 250, 251, 748, 252, 253, + 254, 520, 749, 532, 402, 537, 468, 750, 538, 544, + 219, 220, 620, 221, 539, 410, 469, 783, 222, 1066, + 223, 238, 239, 546, 540, 541, 621, 450, 542, 543, + 545, 622, 240, 551, 638, 291, 623, 547, 626, 548, + 549, 467, 842, 589, 352, 550, 568, 626, 626, 626, + 626, 626, 626, 410, 896, 350, 1392, 1393, 552, 555, + 556, 183, 789, 557, 410, 558, 559, 1394, 560, 561, + 467, 754, 181, 6, 826, 562, 754, 563, 584, 564, + 726, 565, 726, 726, 726, 726, 726, 571, 566, 572, + 573, 351, 245, 246, 247, 248, 249, 250, 251, 705, + 252, 253, 254, 468, 575, 576, 754, 754, 182, 754, + 754, 754, 754, 647, 577, 1342, 578, 1343, 580, 581, + 6, 1481, 1482, 1483, 790, 1394, 587, 990, 991, 594, + 596, -268, 468, 626, 598, 995, 605, 996, 624, 614, + 646, 469, 643, 640, 469, 682, 240, 727, 64, 727, + 727, 727, 727, 727, 685, 710, 247, 248, 249, 250, + 251, 918, 252, 253, 254, 686, 467, 687, 688, 467, + 932, 1412, 183, 711, 1410, 689, 707, 730, 755, 757, + 728, 783, 410, 181, 788, 1076, 1077, 1419, 1420, 1421, + 680, 1399, 1400, 1401, 1402, 1403, 758, 1404, 1405, 1406, + 765, 1079, 193, 194, 195, 196, 197, 763, 764, 231, + 766, 759, 767, 760, 798, 761, 807, -357, 626, 182, + 410, 410, 817, 1529, 783, 820, 824, 626, 468, 828, + 1536, 468, 829, 1394, 638, 830, 832, 676, 1064, 835, + 836, 844, 467, 874, 638, 875, 876, 1230, 1231, 1399, + 1400, 1401, 1402, 1403, 1026, 1404, 1405, 1406, 877, 1477, + 880, 754, 882, 1475, 1479, 883, 476, 726, 897, 899, + 1484, 1485, 249, 250, 251, 902, 252, 253, 254, 923, + 791, 905, 913, 924, 705, 926, 916, 635, 925, 927, + 800, 801, 802, 803, 804, 992, 754, 934, 993, 994, + 467, 1002, 6, 1003, 468, 997, 1001, 870, 871, 1004, + 626, 449, 451, 453, 455, 456, 626, 626, 626, 626, + 626, 626, 1086, 1010, 1508, 410, 1011, 1020, 1506, 1345, + 1347, 1349, 841, 1480, 727, 805, 398, 815, -275, 1023, + 1030, 638, 1251, 1032, 469, 1069, 1038, 1082, 1070, 1071, + 355, 355, 1083, 1089, 1092, 1521, 1279, 932, 1233, 1401, + 1402, 1403, 468, 1404, 1405, 1406, 1234, 1236, 1528, 467, + 912, 1240, 1237, 1238, 1244, 893, 1252, 1261, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 424, 425, 426, 427, 428, 429, 430, 431, 183, + 434, 1262, 1263, 1264, 1274, 438, 1275, 1424, 1276, 1425, + 181, 1426, 1277, 638, 1427, 1428, 1429, 1278, 1280, 1282, + 1355, 1283, 1284, 1285, 1292, 1293, 589, 1294, 280, 792, + 1295, 468, 1296, 469, 1297, 410, 410, 1315, 1318, 469, + 469, 493, 1322, 1325, 1323, 1327, 182, 1326, 1328, 810, + 811, 812, 813, 814, 1332, 1338, 1354, 1339, 467, 355, + 1006, 1340, 1341, 1357, 467, 467, 1358, 1359, 504, 1013, + 1360, 214, 215, 216, 1361, 283, 284, 285, 886, 597, + 628, 1362, 887, 600, 601, 602, 603, 604, 1027, 1028, + 1029, 1368, 1031, 1371, 1034, 1035, 1036, 606, 214, 215, + 216, 612, 613, 1086, 1372, 1373, 1374, 324, 1377, 1408, + 1411, 1414, 626, 1416, 1417, 1435, 1437, 1436, 589, 1438, + 468, 589, 1418, 894, 469, 888, 468, 468, 1422, 1423, + 567, 1439, 1440, 1441, 1446, 1491, 1495, 217, 218, 283, + 284, 285, 719, 1450, 1476, 1490, 720, 582, 583, 467, + 1496, 1478, 1074, 1494, 590, 478, 479, 480, 1497, 800, + 801, 802, 803, 804, 217, 218, 1499, 1500, 1501, 1507, + 1511, 1509, 1510, 219, 220, 1512, 221, 286, 1513, 1514, + 1515, 222, 1516, 223, 1530, 1517, 1531, 1518, 1229, 721, + 495, 1520, 1522, 1335, 1523, 827, 1333, 1407, 508, 1080, + 219, 220, 881, 221, 1314, 889, 754, 1331, 222, 1007, + 223, 468, 1298, 1041, 1356, 585, 637, 510, 1324, 890, + 226, 217, 218, 586, 891, 0, 1016, 0, 0, 892, + 0, 0, 0, 918, 0, 0, 0, 785, 224, 0, + 0, 286, 225, 0, 0, 0, 0, 226, 0, 1386, + 1387, 1388, 1389, 1390, 1391, 1392, 1393, 483, 220, 0, + 221, 0, 717, 0, 0, 222, 1394, 223, 0, 722, + 681, 0, 0, 0, 0, 0, 742, 754, 783, 280, + 0, 1384, 0, 723, 0, 0, 0, 0, 724, 0, + 469, 0, 469, 0, 287, 467, 0, 0, 0, 0, + 1075, 0, 0, 6, 0, 0, 0, 810, 811, 812, + 813, 814, 0, 0, 0, 467, 0, 467, 0, 234, + 235, 236, 237, 238, 239, 0, 0, 1431, 1432, 0, + 1433, 0, 1434, 0, 240, 0, 0, 784, 0, 0, + 0, 0, 1299, 0, 0, 0, 0, 0, 0, 469, + 0, 637, 589, 0, 1013, 0, 0, 468, 932, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 589, 589, + 589, 0, 0, 0, 467, 1472, 0, 468, 0, 468, + 0, 0, 1503, 0, 1395, 1396, 1397, 1398, 0, 822, + 1399, 1400, 1401, 1402, 1403, 0, 1404, 1405, 1406, 0, + 1390, 1391, 1392, 1393, 0, 0, 0, 0, 0, 0, + 0, 229, 0, 1394, 837, 838, 839, 840, 0, 843, + 0, 0, 0, 0, 0, 0, 1314, 1314, 1314, 1314, + 1314, 0, 1314, 0, 267, 0, 468, 0, 469, 0, + 589, 0, 0, 0, 0, 589, 0, 0, 783, 783, + 783, 589, 589, 0, 294, 244, 245, 246, 247, 248, + 249, 250, 251, 467, 252, 253, 254, 0, 0, 0, + 0, 0, 316, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 331, 0, 1524, 1525, 1526, 931, 1527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1079, 0, 0, 0, 0, 0, 0, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 0, 252, 253, 254, 0, 0, 0, 1288, 0, - 0, 0, 0, 0, 0, 214, 215, 216, 0, 734, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, - 1104, 1105, 1106, 0, 1107, 1108, 1109, 1110, 1111, 1112, - 1113, 1114, 1115, 1116, 1117, 0, 0, 0, 0, 0, - 0, 0, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, - 1126, 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, - 1136, 217, 218, 1137, 1138, 1139, 1140, 1141, 1142, 1143, - 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151, 0, 1152, - 1252, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, - 0, 1162, 1163, 1164, 0, 0, 0, 219, 220, 0, - 221, 0, 0, 0, 0, 222, 0, 223, 0, 1165, - 0, 1279, 0, 0, 0, 1166, 1167, 1168, 1267, 1169, - 1170, 1171, 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, - 1180, 1181, 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, - 1190, 1191, 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, - 1200, 1201, 0, 0, 0, 1202, 1203, 1204, 1205, 1206, - 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, - 1217, 1218, 1219, 1220, 1221, 1222, 0, 1223, 1224, 7, + 0, 0, 1016, 469, 0, 589, 1314, 1314, 1314, 1314, + 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, 1314, + 1314, 1314, 1314, 1314, 1314, 468, 0, 385, 467, 0, + 388, 0, 0, 0, 0, 0, 589, 1399, 1400, 1401, + 1402, 1403, 0, 1404, 1405, 1406, 0, 0, 0, 589, + 783, 637, 0, 0, 0, 0, 0, 783, 0, 0, + 0, 637, 0, 0, 0, 1019, 0, 0, 0, 0, + 1314, 1383, 0, 0, 404, 405, 0, 0, 0, 0, + 0, 0, 1037, 0, 0, 0, 0, 0, 0, 0, + 468, 0, 0, 1042, 1043, 1044, 1045, 1046, 1047, 1048, + 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, + 1059, 1060, 1061, 1062, 0, 1065, 0, 0, 0, 0, + 441, 0, 0, 1314, 1378, 1379, 1380, 1381, 1382, 0, + 1385, 1442, 1443, 1444, 1445, 0, 1448, 1449, 485, 770, + 487, 0, 0, 0, 0, 0, 0, 0, 234, 235, + 236, 237, 238, 239, 0, 771, 0, 497, 637, 498, + 499, 500, 501, 240, 0, 0, 0, 0, 0, 772, + 214, 215, 216, 0, 931, 0, 0, 0, 0, 511, + 0, 0, 773, 774, 0, 0, 0, 0, 519, 0, + 0, 522, 0, 0, 0, 0, 0, 0, 775, 534, + 0, 0, 0, 0, 1452, 1453, 1454, 1455, 1456, 1457, + 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, + 1468, 1469, 1470, 0, 0, 0, 0, 0, 776, 0, + 637, 777, 1243, 0, 778, 0, 217, 218, 570, 0, + 0, 0, 574, 0, 0, 0, 0, 0, 0, 0, + 779, 0, 0, 0, 0, 229, 0, 0, 0, 0, + 0, 0, 780, 0, 0, 0, 0, 0, 1502, 0, + 0, 0, 219, 220, 0, 221, 781, 0, 0, 0, + 222, 0, 223, 0, 1287, 245, 246, 247, 248, 249, + 250, 251, 599, 252, 253, 254, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 315, 0, 294, 7, 8, 9, 10, 0, 11, 12, 13, 198, 68, 0, - 0, 1297, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 214, 215, 216, 232, 233, 234, 235, 236, 237, + 639, 1519, 0, 0, 0, 0, 0, 0, 0, 0, + 294, 0, 0, 0, 0, 0, 0, 0, 294, 0, + 0, 0, 0, 0, 0, 0, 234, 235, 236, 237, 238, 239, 0, 0, 0, 0, 15, 69, 0, 0, 199, 240, 200, 201, 202, 74, 75, 0, 20, 76, - 0, 0, 203, 22, 0, 0, 78, 0, 480, 0, - 481, 23, 24, 204, 0, 0, 0, 26, 0, 0, + 0, 0, 203, 22, 735, 0, 78, 0, 0, 0, + 0, 23, 24, 204, 0, 756, 0, 26, 0, 0, 205, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 206, 217, 218, 0, + 37, 38, 39, 40, 41, 42, 206, 0, 0, 0, 0, 0, 0, 0, 44, 0, 45, 0, 46, 0, 0, 0, 0, 47, 0, 207, 208, 50, 0, 0, - 51, 84, 214, 215, 216, 52, 0, 0, 53, 85, - 86, 87, 209, 219, 220, 89, 221, 210, 0, 0, - 0, 222, 0, 223, 0, 0, 0, 0, 0, 0, - 56, 0, 0, 57, 58, 59, 0, 0, 60, 0, - 61, 62, 0, 0, 63, 0, 0, 1348, 0, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 0, 252, 253, 254, 0, 0, 0, 1503, 217, 218, + 51, 84, 0, 0, 404, 52, 0, 0, 53, 85, + 86, 87, 209, 0, 0, 89, 0, 210, 0, 0, + 649, 650, 651, 10, 0, 11, 652, 653, 67, 68, + 56, 0, 654, 57, 58, 59, 0, 0, 60, 0, + 61, 62, 0, 0, 63, 0, 0, 808, 0, 0, + 1330, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 0, 252, 253, 254, 459, 294, 0, 655, 69, 0, + 0, 70, 0, 71, 72, 73, 74, 460, 0, 656, + 76, 0, 0, 77, 657, 0, 0, 78, 0, 0, + 0, 0, 658, 659, 79, 0, 0, 0, 0, 0, + 0, 80, 0, 0, 1363, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, + 0, 885, 0, 0, 0, 660, 0, 661, 0, 662, + 0, 0, 0, 461, 663, 0, 82, 83, 664, 0, + 0, 665, 84, 0, 0, 931, 666, 0, 0, 667, + 85, 86, 87, 88, 0, 0, 89, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 7, 8, 9, 10, 0, 11, 12, 13, - 490, 0, 0, 0, 0, 0, 0, 0, 0, 329, - 0, 0, 0, 0, 219, 220, 0, 221, 0, 0, - 0, 0, 222, 0, 223, 0, 0, 0, 0, 0, - 1381, 0, 0, 0, 0, 0, 0, 0, 0, 15, - 335, 0, 0, 199, 0, 200, 201, 202, 74, 0, - 0, 20, 336, 0, 0, 203, 22, 0, 0, 78, - 0, 0, 0, 0, 23, 24, 204, 0, 0, 0, - 26, 0, 0, 205, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 206, - 1440, 1441, 1442, 1443, 0, 1446, 1447, 44, 0, 45, - 0, 46, 0, 0, 0, 0, 47, 0, 207, 208, - 50, 0, 0, 51, 84, 0, 0, 0, 52, 0, - 0, 53, 338, 339, 87, 209, 0, 0, 89, 0, - 210, 0, 0, 0, 1496, 0, 0, 0, 0, 0, - 0, 0, 0, 56, 0, 0, 57, 58, 59, 0, - 0, 60, 0, 61, 62, 0, 0, 63, 7, 8, - 9, 10, 0, 11, 12, 13, 14, 0, 214, 215, - 216, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 232, + 0, 668, 0, 0, 669, 670, 0, 0, 0, 671, + 0, 672, 0, 0, 0, 673, 0, 0, 0, 0, + 0, 294, 0, 0, 0, 0, 0, 1098, 1099, 1100, + 1101, 1102, 1103, 1104, 1105, 1106, 1107, 1108, 0, 1109, + 1110, 1111, 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, + 0, 0, 1473, 0, 0, 0, 0, 1120, 1121, 1122, + 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131, 1132, + 1133, 1134, 1135, 1136, 1137, 1138, 0, 0, 1139, 1140, + 1141, 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, + 1151, 1152, 1153, 0, 1154, 0, 1155, 1156, 1157, 1158, + 1159, 1160, 1161, 1162, 1163, 0, 1164, 1165, 1166, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1167, 0, 0, 0, 0, 0, + 1168, 1169, 1170, 1081, 1171, 1172, 1173, 1174, 1175, 1176, + 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186, + 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196, + 1197, 1198, 1199, 1200, 1201, 1202, 1203, 0, 0, 735, + 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211, 1212, 1213, + 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221, 1222, 1223, + 1224, 1413, 1225, 1226, 0, 0, 0, 0, 0, 232, 233, 234, 235, 236, 237, 238, 239, 0, 0, 0, - 0, 0, 0, 0, 0, 15, 240, 0, 0, 16, - 0, 17, 18, 19, 0, 0, 0, 20, 0, 738, - 739, 21, 22, 0, 0, 0, 0, 0, 0, 0, - 23, 24, 25, 0, 217, 218, 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, - 219, 220, 47, 221, 48, 49, 50, 0, 222, 51, - 223, 0, 0, 0, 52, 0, 0, 53, 0, 0, - 0, 54, 7, 8, 9, 10, 55, 11, 12, 13, - 14, 740, 0, 0, 495, 0, 0, 0, 0, 56, - 0, 0, 57, 58, 59, 0, 0, 60, 0, 61, - 62, 0, 590, 63, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 0, 252, 253, 254, 15, - 0, 0, 0, 16, 0, 17, 18, 19, 0, 0, - 0, 20, 0, 0, 0, 21, 22, 477, 478, 479, - 0, 0, 0, 0, 23, 24, 25, 0, 0, 0, - 26, 0, 0, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 0, 0, 0, 0, 480, 0, 481, 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, 217, 218, 54, 7, 8, 9, 10, - 55, 11, 12, 13, 14, 0, 214, 215, 216, 0, - 0, 883, 0, 56, 0, 0, 57, 58, 59, 0, - 0, 60, 0, 61, 62, 431, 0, 63, 0, 482, - 220, 0, 221, 0, 0, 0, 0, 222, 0, 223, - 0, 0, 0, 15, 436, 0, 0, 16, 0, 17, - 18, 19, 0, 0, 0, 20, 0, 0, 0, 21, - 22, 0, 0, 483, 0, 0, 0, 0, 23, 24, - 25, 0, 217, 218, 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, 219, 220, - 47, 221, 48, 49, 50, 0, 222, 51, 223, 0, - 0, 0, 52, 0, 0, 53, 0, 0, 0, 54, - 7, 8, 9, 10, 55, 11, 12, 13, 14, 0, - 214, 215, 216, 0, 0, 0, 0, 56, 0, 0, - 57, 58, 59, 0, 0, 60, 0, 61, 62, 0, - 0, 63, 0, 0, 0, 232, 233, 234, 235, 236, - 237, 238, 239, 0, 0, 0, 0, 15, 715, 0, - 0, 16, 240, 17, 18, 19, 0, 0, 0, 20, - 0, 0, 0, 21, 22, 0, 0, 0, 0, 0, - 0, 0, 23, 24, 25, 0, 217, 218, 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, 219, 220, 47, 221, 48, 49, 50, 0, - 222, 51, 223, 0, 0, 0, 52, 0, 0, 53, - 0, 0, 0, 54, 7, 8, 9, 10, 55, 11, - 12, 13, 14, 0, 0, 0, 0, 0, 0, 0, - 0, 56, 0, 0, 57, 58, 59, 0, 0, 60, - 0, 61, 62, 0, 0, 63, 0, 932, 0, 0, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 15, 252, 253, 254, 16, 0, 17, 18, 19, - 0, 0, 0, 20, 0, 0, 0, 21, 22, 0, - 0, 0, 0, 0, 0, 0, 23, 24, 25, 0, - 0, 0, 26, 0, 0, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 0, 0, 0, 0, 0, 0, 0, 44, - 0, 45, 0, 46, 0, 0, 0, 0, 47, 0, - 48, 49, 50, 0, 0, 51, 0, 0, 0, 0, - 52, 0, 0, 53, 0, 0, 0, 54, 7, 8, - 9, 10, 55, 11, 12, 13, 14, 927, 0, 0, - 0, 0, 0, 0, 0, 56, 0, 0, 57, 58, - 59, 0, 0, 60, 0, 61, 62, 0, 0, 63, - 0, 0, 0, 232, 233, 234, 235, 236, 237, 238, - 239, 0, 0, 0, 0, 15, 0, 0, 0, 16, - 240, 17, 18, 19, 0, 0, 0, 20, 0, 0, - 0, 21, 22, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 240, 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, 0, 0, 0, 0, 0, + 1254, 0, 1098, 1099, 1100, 1101, 1102, 1103, 1104, 1105, + 1106, 1107, 1108, 0, 1109, 1110, 1111, 1112, 1113, 1114, + 1115, 1116, 1117, 1118, 1119, 0, 0, 0, 0, 0, + 0, 1281, 1120, 1121, 1122, 1123, 1124, 1125, 1126, 1127, + 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136, 1137, + 1138, 0, 0, 1139, 1140, 1141, 1142, 1143, 1144, 1145, + 1146, 1147, 1148, 1149, 1150, 1151, 1152, 1153, 0, 1154, + 0, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, + 0, 1164, 1165, 1166, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 0, 252, 253, 254, 1167, + 0, 0, 593, 0, 0, 1168, 1169, 1170, 0, 1171, + 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181, + 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191, + 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201, + 1202, 1203, 0, 0, 0, 1204, 1205, 1206, 1207, 1208, + 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216, 1217, 1218, + 1219, 1220, 1221, 1222, 1223, 1224, 0, 1225, 1226, 7, + 8, 9, 10, 0, 11, 12, 13, 491, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 232, 233, 234, 235, 236, 237, 238, 239, 0, + 0, 0, 0, 0, 0, 0, 15, 336, 240, 0, + 199, 0, 200, 201, 202, 74, 0, 0, 20, 337, + 0, 0, 203, 22, 0, 0, 78, 0, 0, 0, + 0, 23, 24, 204, 0, 0, 0, 26, 0, 0, + 205, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 206, 0, 1350, 0, + 0, 0, 0, 0, 44, 0, 45, 0, 46, 0, + 0, 0, 0, 47, 0, 207, 208, 50, 0, 0, + 51, 84, 0, 0, 0, 52, 0, 0, 53, 339, + 340, 87, 209, 0, 0, 89, 0, 210, 7, 8, + 9, 10, 0, 11, 12, 13, 14, 0, 0, 0, + 56, 0, 0, 57, 58, 59, 0, 0, 60, 0, + 61, 62, 0, 0, 63, 0, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 0, 252, 253, + 254, 0, 0, 0, 1290, 15, 0, 0, 0, 16, + 0, 17, 18, 19, 0, 0, 0, 20, 0, 739, + 740, 21, 22, 0, 0, 0, 770, 0, 0, 0, 23, 24, 25, 0, 0, 0, 26, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 0, 0, 0, 0, - 0, 0, 0, 44, 0, 45, 0, 46, 0, 0, - 0, 0, 47, 0, 48, 49, 50, 0, 0, 51, - 0, 0, 0, 0, 52, 0, 0, 53, 0, 0, - 0, 54, 7, 8, 9, 10, 55, 11, 12, 13, - 14, 0, 0, 0, 0, 0, 0, 0, 0, 56, - 0, 0, 57, 58, 59, 0, 0, 60, 0, 61, - 62, 1062, 0, 63, 1263, 0, 0, 0, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 15, - 252, 253, 254, 16, 0, 17, 18, 19, 0, 0, - 0, 20, 0, 0, 0, 21, 22, 0, 0, 0, - 0, 0, 0, 0, 23, 24, 25, 0, 0, 0, - 26, 0, 0, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 0, 0, 0, 0, 0, 0, 0, 44, 0, 45, - 0, 46, 0, 0, 0, 0, 47, 0, 48, 49, - 50, 0, 0, 51, 0, 0, 0, 0, 52, 0, - 0, 53, 0, 0, 0, 54, 7, 8, 9, 10, - 55, 11, 12, 13, 14, 1327, 0, 0, 0, 0, - 0, 0, 0, 56, 0, 0, 57, 58, 59, 0, - 0, 60, 0, 61, 62, 0, 0, 63, 0, 0, - 0, 232, 233, 234, 235, 236, 237, 238, 239, 0, - 0, 0, 0, 15, 0, 0, 0, 16, 240, 17, - 18, 19, 0, 0, 0, 20, 0, 0, 0, 21, - 22, 0, 0, 0, 0, 0, 0, 0, 23, 24, - 25, 0, 0, 0, 26, 0, 0, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 0, 0, 0, 0, 0, 0, - 0, 44, 0, 45, 0, 46, 0, 0, 0, 0, - 47, 0, 48, 49, 50, 0, 0, 51, 0, 0, - 0, 0, 52, 0, 0, 53, 0, 0, 0, 54, - 7, 8, 9, 10, 55, 11, 12, 13, 14, 0, - 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, - 57, 58, 59, 0, 0, 60, 0, 61, 62, 1469, - 0, 63, 0, 0, 1286, 0, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 15, 252, 253, - 254, 16, 0, 17, 18, 19, 0, 0, 0, 20, - 0, 0, 0, 21, 22, 0, 0, 0, 0, 0, - 0, 0, 23, 24, 25, 0, 0, 0, 26, 0, - 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 0, 0, - 0, 0, 0, 0, 0, 44, 0, 45, 0, 46, - 0, 0, 0, 0, 47, 0, 48, 49, 50, 0, - 0, 51, 0, 0, 0, 0, 52, 0, 0, 53, - 0, 0, 0, 54, 648, 649, 650, 10, 55, 11, - 651, 652, 67, 68, 0, 0, 653, 0, 0, 0, - 0, 56, 0, 0, 57, 58, 59, 0, 0, 60, - 0, 61, 62, 0, 0, 63, 232, 233, 234, 235, - 236, 237, 238, 239, 0, 0, 0, 0, 458, 0, - 0, 654, 69, 240, 0, 70, 0, 71, 72, 73, - 74, 459, 0, 655, 76, 0, 0, 77, 656, 0, - 0, 78, 0, 0, 0, 0, 657, 658, 79, 0, - 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, - 0, 232, 233, 234, 235, 236, 237, 238, 239, 0, - 0, 81, 0, 0, 0, 0, 0, 0, 240, 659, - 0, 660, 0, 661, 0, 0, 0, 460, 662, 0, - 82, 83, 663, 0, 0, 664, 84, 0, 0, 0, - 665, 0, 0, 666, 85, 86, 87, 88, 0, 0, - 89, 0, 90, 0, 648, 649, 650, 10, 0, 11, - 651, 652, 67, 68, 0, 667, 1039, 0, 668, 669, - 0, 0, 0, 670, 0, 671, 0, 691, 0, 672, - 0, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 0, 252, 253, 254, 692, 0, 458, 0, - 0, 654, 69, 0, 0, 70, 0, 71, 72, 73, - 74, 459, 0, 655, 76, 0, 0, 77, 656, 0, - 0, 78, 0, 0, 0, 0, 657, 658, 79, 0, - 0, 0, 0, 0, 0, 80, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 0, 252, 253, - 254, 81, 0, 0, 0, 0, 0, 0, 0, 659, - 0, 660, 0, 661, 0, 0, 0, 460, 662, 0, - 82, 83, 663, 0, 0, 664, 84, 0, 0, 0, - 665, 0, 0, 666, 85, 86, 87, 88, 0, 0, - 89, 0, 90, 7, 8, 9, 10, 0, 11, 12, - 13, 0, 0, 0, 0, 667, 0, 0, 668, 669, - 0, 0, 0, 670, 0, 671, 0, 0, 0, 672, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 1386, - 1387, 1388, 1389, 1390, 1391, 0, 0, 0, 0, 0, - 1298, 0, 0, 0, 1392, 0, 0, 0, 0, 0, - 0, 0, 1299, 0, 0, 0, 0, 1300, 233, 234, - 235, 236, 237, 238, 239, 23, 24, 0, 0, 0, - 0, 26, 0, 0, 240, 28, 29, 30, 31, 32, + 38, 39, 40, 41, 42, 43, 772, 0, 0, 0, + 0, 0, 0, 44, 0, 45, 0, 46, 0, 773, + 774, 0, 47, 0, 48, 49, 50, 0, 0, 51, + 0, 0, 0, 0, 52, 775, 0, 53, 0, 0, + 0, 54, 0, 0, 0, 1498, 55, 7, 8, 9, + 10, 741, 11, 12, 13, 14, 0, 0, 0, 56, + 0, 0, 57, 58, 59, 776, 0, 60, 777, 61, + 62, 778, 0, 63, 0, 0, 0, 0, 232, 233, + 234, 235, 236, 237, 238, 239, 0, 779, 0, 0, + 0, 0, 0, 0, 15, 240, 0, 0, 16, 780, + 17, 18, 19, 0, 0, 0, 20, 0, 0, 0, + 21, 22, 0, 781, 0, 0, 0, 0, 0, 23, + 24, 25, 0, 0, 0, 26, 0, 0, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 0, 0, 0, 0, 0, + 0, 0, 44, 0, 45, 0, 46, 0, 0, 0, + 0, 47, 0, 48, 49, 50, 0, 0, 51, 0, + 0, 0, 0, 52, 0, 0, 53, 0, 0, 0, + 54, 7, 8, 9, 10, 55, 11, 12, 13, 14, + 0, 214, 215, 216, 0, 0, 0, 0, 56, 0, + 0, 57, 58, 59, 0, 0, 60, 0, 61, 62, + 432, 0, 63, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 0, 252, 253, 254, 15, 437, + 0, 1505, 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, 217, 218, 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, 219, 220, 47, 221, 48, 49, 50, + 0, 222, 51, 223, 0, 0, 0, 52, 0, 0, + 53, 0, 0, 0, 54, 7, 8, 9, 10, 55, + 11, 12, 13, 14, 0, 0, 0, 496, 0, 0, + 0, 0, 56, 0, 0, 57, 58, 59, 0, 0, + 60, 0, 61, 62, 0, 0, 63, 0, 0, 0, + 232, 233, 234, 235, 236, 237, 238, 239, 0, 0, + 0, 0, 15, 716, 0, 0, 16, 240, 17, 18, + 19, 0, 0, 0, 20, 0, 0, 0, 21, 22, + 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, + 0, 0, 0, 26, 0, 0, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 0, 0, 0, 0, 0, 0, 0, + 44, 0, 45, 0, 46, 0, 0, 0, 0, 47, + 0, 48, 49, 50, 0, 0, 51, 0, 0, 0, + 0, 52, 0, 0, 53, 0, 0, 0, 54, 7, + 8, 9, 10, 55, 11, 12, 13, 14, 0, 214, + 215, 216, 0, 0, 884, 0, 56, 0, 0, 57, + 58, 59, 0, 0, 60, 0, 61, 62, 0, 0, + 63, 0, 0, 591, 0, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 15, 252, 253, 254, + 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, 217, 218, 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, 219, 220, 47, 221, 48, 49, 50, 0, 222, + 51, 223, 0, 0, 0, 52, 0, 0, 53, 0, + 0, 0, 54, 7, 8, 9, 10, 55, 11, 12, + 13, 14, 928, 214, 215, 216, 0, 0, 0, 0, + 56, 0, 0, 57, 58, 59, 0, 0, 60, 0, + 61, 62, 0, 0, 63, 0, 0, 0, 232, 233, + 234, 235, 236, 237, 238, 239, 0, 0, 0, 0, + 15, 0, 0, 0, 16, 240, 17, 18, 19, 0, + 0, 0, 20, 0, 0, 0, 21, 22, 0, 0, + 0, 0, 0, 0, 0, 23, 24, 25, 0, 217, + 218, 26, 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 0, 232, 233, 234, 235, 236, 237, 238, 239, 0, - 45, 0, 46, 0, 0, 0, 0, 1301, 240, 0, - 0, 1302, 0, 0, 1303, 0, 0, 0, 0, 52, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1304, 0, 0, 1305, 1306, 1307, - 936, 0, 1308, 0, 1309, 62, 0, 0, 1310, 0, - 937, 938, 939, 940, 941, 942, 943, 944, 1397, 1398, - 1399, 1400, 1401, 0, 1402, 1403, 1404, 945, 0, 946, - 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, - 957, 0, 0, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 0, 252, 253, 254, 0, 0, 958, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 333, 334, 0, 0, 0, 241, 242, 243, 244, + 43, 0, 0, 0, 0, 0, 0, 0, 44, 0, + 45, 0, 46, 0, 0, 219, 220, 47, 221, 48, + 49, 50, 0, 222, 51, 223, 0, 0, 0, 52, + 0, 0, 53, 0, 0, 0, 54, 7, 8, 9, + 10, 55, 11, 12, 13, 14, 0, 0, 0, 0, + 0, 0, 0, 0, 56, 0, 0, 57, 58, 59, + 0, 0, 60, 0, 61, 62, 1063, 0, 63, 0, + 933, 0, 0, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 15, 252, 253, 254, 16, 0, + 17, 18, 19, 0, 0, 0, 20, 0, 0, 0, + 21, 22, 0, 0, 0, 0, 0, 0, 0, 23, + 24, 25, 0, 0, 0, 26, 0, 0, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 0, 0, 0, 0, 0, + 0, 0, 44, 0, 45, 0, 46, 0, 0, 0, + 0, 47, 0, 48, 49, 50, 0, 0, 51, 0, + 0, 0, 0, 52, 0, 0, 53, 0, 0, 0, + 54, 7, 8, 9, 10, 55, 11, 12, 13, 14, + 1329, 0, 0, 0, 0, 0, 0, 0, 56, 0, + 0, 57, 58, 59, 0, 0, 60, 0, 61, 62, + 0, 0, 63, 0, 0, 0, 232, 233, 234, 235, + 236, 237, 238, 239, 0, 0, 0, 0, 15, 0, + 0, 0, 16, 240, 17, 18, 19, 0, 0, 0, + 20, 0, 0, 0, 21, 22, 0, 0, 0, 0, + 0, 0, 0, 23, 24, 25, 0, 0, 0, 26, + 0, 0, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 0, + 0, 0, 0, 0, 0, 0, 44, 0, 45, 0, + 46, 0, 0, 0, 0, 47, 0, 48, 49, 50, + 0, 0, 51, 0, 0, 0, 0, 52, 0, 0, + 53, 0, 0, 0, 54, 7, 8, 9, 10, 55, + 11, 12, 13, 14, 0, 0, 0, 0, 0, 0, + 0, 0, 56, 0, 0, 57, 58, 59, 0, 0, + 60, 0, 61, 62, 1471, 0, 63, 1265, 0, 0, + 0, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 15, 252, 253, 254, 16, 0, 17, 18, + 19, 0, 0, 0, 20, 0, 0, 0, 21, 22, + 0, 0, 0, 0, 0, 0, 0, 23, 24, 25, + 0, 0, 0, 26, 0, 0, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 0, 0, 0, 0, 0, 0, 0, + 44, 0, 45, 0, 46, 0, 0, 0, 0, 47, + 0, 48, 49, 50, 0, 0, 51, 0, 0, 0, + 0, 52, 0, 0, 53, 0, 0, 0, 54, 649, + 650, 651, 10, 55, 11, 652, 653, 67, 68, 0, + 0, 1040, 0, 0, 0, 0, 56, 0, 0, 57, + 58, 59, 0, 0, 60, 0, 61, 62, 0, 0, + 63, 232, 233, 234, 235, 236, 237, 238, 239, 0, + 0, 0, 0, 459, 0, 0, 655, 69, 240, 0, + 70, 0, 71, 72, 73, 74, 460, 0, 656, 76, + 0, 0, 77, 657, 0, 0, 78, 0, 0, 0, + 0, 658, 659, 79, 0, 0, 0, 0, 0, 0, + 80, 0, 0, 0, 0, 0, 0, 0, 0, 214, + 215, 216, 0, 0, 0, 0, 81, 0, 0, 0, + 0, 0, 0, 0, 660, 0, 661, 0, 662, 0, + 0, 0, 461, 663, 0, 82, 83, 664, 0, 0, + 665, 84, 0, 0, 0, 666, 0, 0, 667, 85, + 86, 87, 88, 0, 0, 89, 0, 90, 7, 8, + 9, 10, 0, 11, 12, 13, 0, 0, 0, 0, + 668, 0, 0, 669, 670, 217, 218, 0, 671, 0, + 672, 0, 692, 0, 673, 0, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 0, 252, 253, - 254, 578, 1384, 1385, 1386, 1387, 1388, 1389, 1390, 1391, - 0, 0, 959, 0, 0, 0, 0, 0, 0, 1392, - 0, 0, 335, 0, 0, 70, 0, 71, 72, 73, - 74, 0, 0, 0, 336, 0, 0, 77, 0, 0, - 0, 78, 0, 0, 0, 0, 0, 0, 79, 0, - 0, 960, 0, 0, 961, 80, 962, 963, 964, 965, - 966, 967, 968, 969, 970, 971, 972, 0, 973, 974, - 0, 81, 975, 0, 333, 334, 0, 0, 0, 0, - 0, 0, 337, 0, 0, 0, 0, 0, 0, 0, - 82, 83, 0, 0, 0, 0, 84, 0, 0, 0, - 0, 0, 0, 0, 338, 339, 87, 88, 0, 0, - 89, 0, 90, 0, 0, 335, 0, 340, 70, 0, - 71, 72, 73, 74, 0, 0, 0, 336, 0, 0, - 77, 0, 0, 341, 78, 0, 769, 1393, 1394, 1395, - 1396, 79, 0, 1397, 1398, 1399, 1400, 1401, 80, 1402, - 1403, 1404, 770, 0, 0, 0, 0, 0, 0, 0, - 505, 506, 0, 0, 81, 0, 771, 0, 0, 0, - 0, 0, 0, 0, 0, 337, 0, 0, 0, 772, - 773, 0, 0, 82, 83, 0, 0, 0, 0, 84, - 0, 0, 0, 0, 0, 774, 0, 338, 339, 87, - 88, 335, 0, 89, 70, 90, 71, 72, 73, 74, - 0, 0, 0, 336, 0, 0, 77, 0, 0, 0, - 78, 0, 0, 0, 0, 775, 341, 79, 776, 0, - 0, 777, 0, 0, 80, 232, 233, 234, 235, 236, - 237, 238, 239, 0, 0, 0, 0, 778, 0, 0, - 81, 0, 240, 0, 0, 0, 0, 0, 0, 779, - 0, 337, 0, 0, 0, 0, 0, 0, 0, 82, - 83, 0, 0, 780, 0, 84, 0, 0, 0, 0, - 0, 0, 0, 338, 339, 87, 88, 0, 0, 89, - 0, 90, 232, 233, 234, 235, 236, 237, 238, 239, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, - 0, 0, 341, 232, 233, 234, 235, 236, 237, 238, - 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 240, 232, 233, 234, 235, 236, 237, 238, 239, 0, + 254, 693, 0, 0, 0, 1300, 0, 0, 0, 0, + 0, 219, 1266, 1267, 1268, 0, 0, 1301, 0, 222, + 0, 223, 1302, 233, 234, 235, 236, 237, 238, 239, + 23, 24, 1269, 0, 0, 0, 26, 1270, 0, 240, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 0, 232, 233, 234, 235, + 236, 237, 238, 239, 0, 45, 0, 46, 0, 0, + 0, 0, 1303, 240, 0, 0, 1304, 0, 0, 1305, + 0, 0, 0, 0, 52, 0, 0, 0, 0, 0, + 0, 70, 0, 71, 72, 73, 0, 0, 0, 0, + 0, 0, 0, 262, 0, 0, 0, 0, 0, 1306, + 0, 0, 1307, 1308, 1309, 937, 0, 1310, 0, 1311, + 62, 80, 0, 1312, 0, 938, 939, 940, 941, 942, + 943, 944, 945, 0, 0, 0, 0, 263, 0, 0, + 0, 0, 946, 0, 947, 948, 949, 950, 951, 952, + 953, 954, 955, 956, 957, 958, 82, 83, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 0, 252, + 253, 254, 0, 88, 959, 0, 0, 0, 90, 0, + 0, 214, 215, 216, 0, 0, 334, 335, 0, 0, + 0, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 0, 252, 253, 254, 579, 1386, 1387, 1388, + 1389, 1390, 1391, 1392, 1393, 0, 0, 960, 0, 0, + 0, 0, 0, 0, 1394, 0, 0, 336, 0, 0, + 70, 0, 71, 72, 73, 74, 0, 0, 0, 337, + 0, 0, 77, 0, 0, 0, 78, 217, 218, 0, + 0, 0, 0, 79, 0, 0, 961, 0, 0, 962, + 80, 963, 964, 965, 966, 967, 968, 969, 970, 971, + 972, 973, 0, 974, 975, 0, 81, 976, 0, 334, + 335, 0, 0, 219, 220, 0, 221, 338, 0, 0, + 0, 222, 0, 223, 0, 82, 83, 0, 0, 0, + 0, 84, 0, 0, 1269, 0, 0, 0, 0, 339, + 340, 87, 88, 0, 0, 89, 0, 90, 0, 0, + 336, 0, 341, 70, 0, 71, 72, 73, 74, 0, + 0, 0, 337, 0, 0, 77, 0, 0, 342, 78, + 0, 0, 1395, 1396, 1397, 1398, 79, 0, 1399, 1400, + 1401, 1402, 1403, 80, 1404, 1405, 1406, 0, 0, 0, + 0, 0, 0, 0, 0, 506, 507, 0, 0, 81, + 0, 70, 0, 71, 72, 73, 0, 0, 0, 0, + 338, 0, 0, 262, 0, 0, 0, 0, 82, 83, + 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, + 0, 80, 339, 340, 87, 88, 336, 0, 89, 70, + 90, 71, 72, 73, 74, 0, 0, 263, 337, 0, + 0, 77, 474, 0, 0, 78, 0, 0, 0, 0, + 0, 342, 79, 0, 0, 0, 82, 83, 0, 80, + 232, 233, 234, 235, 236, 237, 238, 239, 0, 0, + 0, 0, 0, 88, 0, 81, 0, 240, 90, 0, + 0, 0, 0, 0, 0, 70, 338, 71, 72, 73, + 0, 0, 0, 0, 82, 83, 0, 0, 0, 0, + 84, 174, 0, 70, 0, 71, 72, 73, 339, 340, + 87, 88, 0, 0, 89, 80, 90, 232, 233, 234, + 235, 236, 237, 238, 239, 0, 0, 0, 0, 0, + 0, 263, 0, 80, 240, 0, 0, 342, 232, 233, + 234, 235, 236, 237, 238, 239, 0, 0, 0, 263, + 82, 83, 0, 0, 0, 240, 232, 233, 234, 235, + 236, 237, 238, 239, 0, 0, 0, 88, 82, 83, + 0, 0, 90, 240, 232, 233, 234, 235, 236, 237, + 238, 239, 0, 0, 0, 88, 0, 0, 0, 0, + 90, 240, 0, 0, 0, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 0, 252, 253, 254, + 595, 232, 233, 234, 235, 236, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 232, 233, 234, 235, 236, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 0, 252, 253, 254, 594, 232, 233, 234, 235, - 236, 237, 238, 239, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 240, 846, 847, 848, 849, 850, 851, - 852, 853, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 854, 0, 0, 0, 0, 0, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 0, 252, - 253, 254, 682, 0, 0, 0, 0, 0, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 0, - 252, 253, 254, 761, 0, 0, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 0, 252, 253, - 254, 902, 0, 0, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 0, 252, 253, 254, 1020, - 0, 0, 0, 0, 0, 0, 0, -2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 0, 252, 253, 254, 683, 0, 0, + 0, 0, 0, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 0, 252, 253, 254, 762, 0, 0, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 0, 252, 253, 254, 1284, 0, 0, 855, - 856, 857, 858, 859, 860, 861, 862, 863, 864, 865, - 0, 866, 867, 868, 105, 0, 106, 0, 0, 107, - 108, 0, 0, 0, 0, 0, 0, 109, 110, 0, - 0, 0, 0, 0, 0, 0, 111, 0, 112, 113, - 114, 115, 0, 0, 0, 116, 0, 0, 0, 0, - 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, - 119, 120, 121, 122, 123, 0, 0, 0, 0, 0, - 124, 125, 126, 127, 0, 0, 0, 0, 0, 128, - 129, 67, 68, 130, 131, 456, 0, 457, 132, 0, - 0, 0, 0, 0, 133, 134, 0, 135, 1385, 1386, - 1387, 1388, 1389, 1390, 1391, 136, 0, 0, 0, 0, - 0, 0, 0, 0, 1392, 0, 0, 458, 0, 0, - 0, 69, 0, 0, 70, 0, 71, 72, 73, 74, - 459, 0, 0, 76, 0, 0, 77, 0, 0, 0, - 78, 234, 235, 236, 237, 238, 239, 79, 0, 0, - 0, 0, 0, 0, 80, 0, 240, 234, 235, 236, + 250, 251, 0, 252, 253, 254, 903, 0, 0, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 0, 252, 253, 254, 1021, 232, 233, 234, 235, 236, 237, 238, 239, 0, 0, 0, 0, 0, 0, 0, - 81, 0, 240, 1386, 1387, 1388, 1389, 1390, 1391, 0, - 0, 0, 0, 0, 0, 0, 460, 0, 1392, 82, - 83, 0, 0, 0, 0, 84, 0, 234, 235, 236, - 237, 238, 239, 85, 86, 87, 88, 0, 0, 89, - 0, 90, 240, 1386, 1387, 1388, 1389, 1390, 1391, 0, - 0, 0, 0, 0, 461, 0, 0, 0, 1392, 462, - 0, 0, 0, 1394, 1395, 1396, 0, 0, 1397, 1398, - 1399, 1400, 1401, 0, 1402, 1403, 1404, 1386, 1387, 1388, - 1389, 1390, 1391, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1392, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 0, 252, 253, 254, 0, - 0, 0, 0, 244, 245, 246, 247, 248, 249, 250, - 251, 0, 252, 253, 254, 0, 0, 1394, 1395, 1396, - 0, 0, 1397, 1398, 1399, 1400, 1401, 0, 1402, 1403, - 1404, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 302, 0, 0, 0, 245, 246, 247, 248, 249, 250, - 251, 0, 252, 253, 254, 0, 0, 0, 1395, 1396, - 0, 0, 1397, 1398, 1399, 1400, 1401, 302, 1402, 1403, - 1404, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 105, 0, 106, 0, 0, 0, 108, 0, 0, - 0, 0, 0, 1396, 109, 110, 1397, 1398, 1399, 1400, - 1401, 0, 1402, 1403, 1404, 112, 113, 114, 105, 0, - 106, 0, 0, 0, 108, 0, 0, 297, 0, 0, - 0, 109, 110, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 112, 296, 114, 0, 0, 0, 0, 70, - 122, 71, 72, 73, 297, 0, 0, 0, 0, 0, - 127, 0, 0, 0, 0, 0, 128, 0, 0, 0, - 130, 131, 393, 67, 68, 0, 0, 122, 0, 80, - 0, 0, 134, 0, 135, 0, 0, 127, 0, 0, - 0, 0, 0, 128, 0, 263, 0, 0, 131, 0, - 0, 1032, 67, 68, 0, 0, 0, 0, 0, 134, - 0, 135, 0, 69, 82, 83, 70, 0, 71, 72, - 73, 74, 75, 0, 0, 76, 0, 0, 77, 0, - 0, 88, 78, 0, 0, 0, 90, 0, 0, 79, - 0, 0, 69, 0, 0, 70, 80, 71, 72, 73, - 74, 75, 0, 0, 76, 0, 0, 77, 0, 185, - 0, 78, 81, 0, 0, 0, 0, 0, 79, 70, - 0, 71, 72, 73, 0, 80, 0, 0, 0, 0, - 0, 82, 83, 0, 0, 0, 0, 84, 0, 0, - 0, 81, 1445, 67, 68, 85, 86, 87, 88, 80, - 0, 89, 0, 90, 0, 0, 0, 0, 0, 0, - 82, 83, 0, 0, 0, 263, 84, 0, 0, 0, - 0, 693, 694, 695, 85, 86, 87, 88, 0, 0, - 89, 0, 90, 69, 82, 83, 70, 0, 71, 72, - 73, 74, 75, 0, 0, 76, 0, 0, 77, 0, - 0, 88, 78, 0, 0, 0, 90, 0, 0, 79, - 0, 0, 0, 0, 0, 70, 80, 71, 72, 73, - 696, 697, 0, 0, 0, 0, 0, 77, 0, 186, - 0, 0, 81, 0, 0, 0, 0, 0, 79, 693, - 694, 695, 0, 0, 0, 80, 0, 0, 0, 0, - 0, 82, 83, 0, 0, 0, 0, 84, 0, 0, - 0, 81, 0, 0, 0, 85, 86, 87, 88, 0, - 0, 89, 0, 90, 0, 0, 0, 0, 67, 68, - 82, 83, 456, 70, 0, 71, 72, 73, 0, 0, - 0, 0, 0, 0, 698, 77, 0, 88, 0, 0, - 89, 0, 90, 0, 0, 0, 79, 67, 68, 0, - 0, 795, 0, 80, 458, 0, 0, 0, 69, 0, - 0, 70, 0, 71, 72, 73, 74, 459, 0, 81, - 76, 0, 0, 77, 0, 0, 0, 78, 0, 0, - 0, 0, 0, 458, 79, 0, 0, 69, 82, 83, - 70, 80, 71, 72, 73, 74, 459, 0, 0, 76, - 0, 0, 77, 0, 0, 88, 78, 81, 89, 0, - 90, 0, 0, 79, 70, 0, 71, 72, 73, 0, - 80, 0, 0, 460, 0, 0, 82, 83, 0, 0, - 0, 0, 84, 0, 0, 0, 81, 0, 67, 68, - 85, 86, 87, 88, 80, 0, 89, 0, 90, 0, - 0, 0, 460, 0, 0, 82, 83, 0, 0, 0, - 263, 84, 0, 0, 0, 0, 0, 67, 68, 85, - 86, 87, 88, 0, 458, 89, 0, 90, 69, 82, - 83, 70, 0, 71, 72, 73, 74, 459, 0, 0, - 76, 0, 0, 77, 0, 0, 88, 78, 0, 0, - 0, 90, 0, 0, 79, 0, 0, 69, 0, 0, - 70, 80, 71, 72, 73, 74, 75, 0, 0, 76, - 0, 0, 77, 0, 191, 0, 78, 81, 0, 0, - 0, 0, 0, 79, 0, 0, 214, 215, 216, 0, - 80, 0, 0, 460, 0, 0, 82, 83, 0, 0, - 0, 0, 84, 67, 68, 0, 81, 0, 0, 0, - 85, 86, 87, 88, 0, 0, 89, 0, 90, 0, - 0, 0, 0, 0, 0, 82, 83, 67, 68, 0, - 0, 84, 0, 0, 0, 0, 0, 0, 0, 85, - 86, 87, 88, 69, 0, 89, 70, 90, 71, 72, - 73, 74, 217, 218, 0, 76, 0, 0, 77, 0, - 0, 0, 78, 0, 0, 0, 0, 69, 0, 79, - 70, 0, 71, 72, 73, 74, 80, 0, 0, 76, - 0, 0, 77, 0, 0, 0, 78, 0, 219, 220, - 0, 221, 81, 79, 0, 0, 222, 0, 223, 0, - 80, 0, 0, 0, 0, 0, 0, 0, 607, 1267, - 0, 82, 83, 67, 1342, 0, 81, 84, 0, 0, - 0, 0, 0, 0, 0, 85, 86, 87, 88, 0, - 0, 89, 0, 90, 0, 82, 83, 0, 0, 0, - 0, 84, 175, 0, 0, 0, 0, 0, 0, 85, - 86, 87, 88, 69, 0, 89, 70, 90, 71, 72, - 73, 74, 516, 0, 0, 76, 0, 0, 77, 0, - 0, 0, 78, 0, 0, 0, 0, 0, 0, 79, - 0, 0, 176, 0, 0, 70, 80, 71, 72, 73, - 74, 997, 0, 0, 177, 0, 0, 77, 0, 0, - 0, 78, 81, 0, 0, 0, 0, 0, 79, 0, - 0, 214, 215, 216, 0, 80, 0, 0, 0, 0, - 0, 82, 83, 0, 0, 0, 0, 84, 175, 0, - 0, 81, 0, 0, 0, 85, 86, 87, 88, 0, - 0, 89, 0, 90, 0, 0, 0, 0, 0, 0, - 82, 83, 67, 0, 0, 0, 84, 0, 0, 0, - 214, 215, 216, 0, 178, 179, 87, 88, 176, 0, - 89, 70, 90, 71, 72, 73, 74, 217, 218, 0, - 177, 0, 0, 77, 0, 0, 0, 78, 0, 0, - 0, 0, 69, 0, 79, 70, 0, 71, 72, 73, - 74, 80, 0, 0, 76, 0, 0, 77, 0, 0, - 0, 78, 0, 219, 220, 0, 221, 81, 79, 0, - 0, 222, 0, 223, 0, 80, 217, 218, 0, 0, - 0, 0, 0, 0, 1267, 0, 82, 83, 0, 1344, - 0, 81, 84, 0, 0, 0, 0, 0, 0, 0, - 178, 179, 87, 88, 0, 0, 89, 0, 90, 0, - 82, 83, 219, 220, 0, 221, 84, 0, 0, 0, - 222, 0, 223, 0, 85, 86, 87, 88, 0, 105, - 89, 106, 90, 1267, 107, 108, 0, 0, 1346, 0, - 0, 0, 109, 110, 0, 0, 0, 0, 0, 0, - 0, 111, 0, 112, 113, 114, 115, 0, 0, 0, - 116, 0, 0, 0, 0, 117, 0, 0, 0, 0, + 0, 0, 240, 0, 0, 0, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 0, 252, 253, + 254, 1286, 1288, 0, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 0, 252, 253, 254, 847, + 848, 849, 850, 851, 852, 853, 854, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 855, 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, 0, 0, 0, -2, 0, + 0, 0, 0, 0, 0, 0, 0, 1387, 1388, 1389, + 1390, 1391, 1392, 1393, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1394, 0, 0, 0, 0, 0, 0, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 0, 252, 253, 254, 105, 0, 106, 0, 0, + 107, 108, 0, 0, 0, 0, 0, 0, 109, 110, + 0, 0, 0, 0, 0, 0, 0, 111, 0, 112, + 113, 114, 115, 0, 0, 0, 116, 0, 0, 0, + 0, 117, 0, 0, 856, 857, 858, 859, 860, 861, + 862, 863, 864, 865, 866, 0, 867, 868, 869, 0, + 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, + 0, 124, 125, 126, 127, 0, 0, 0, 0, 0, + 128, 129, 67, 68, 130, 131, 457, 0, 458, 132, + 0, 0, 0, 0, 0, 133, 134, 0, 135, 0, + 0, 0, 1396, 1397, 1398, 0, 136, 1399, 1400, 1401, + 1402, 1403, 0, 1404, 1405, 1406, 0, 0, 459, 0, + 0, 0, 69, 0, 0, 70, 0, 71, 72, 73, + 74, 460, 0, 0, 76, 0, 0, 77, 0, 0, + 0, 78, 234, 235, 236, 237, 238, 239, 79, 0, + 0, 0, 0, 0, 0, 80, 0, 240, 1388, 1389, + 1390, 1391, 1392, 1393, 0, 0, 0, 0, 0, 0, + 0, 81, 0, 1394, 1388, 1389, 1390, 1391, 1392, 1393, + 0, 70, 0, 71, 72, 73, 0, 461, 0, 1394, + 82, 83, 0, 0, 0, 0, 84, 0, 1388, 1389, + 1390, 1391, 1392, 1393, 85, 86, 87, 88, 0, 0, + 89, 80, 90, 1394, 1388, 1389, 1390, 1391, 1392, 1393, + 0, 0, 0, 0, 0, 462, 0, 263, 0, 1394, + 463, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 82, 83, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 88, 0, 0, 0, 0, 90, 478, + 479, 480, 0, 0, 0, 0, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 0, 252, 253, 254, + 0, 185, 1396, 1397, 1398, 0, 0, 1399, 1400, 1401, + 1402, 1403, 0, 1404, 1405, 1406, 481, 0, 482, 1397, + 1398, 0, 0, 1399, 1400, 1401, 1402, 1403, 0, 1404, + 1405, 1406, 302, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1398, 217, 218, 1399, 1400, 1401, + 1402, 1403, 0, 1404, 1405, 1406, 0, 0, 0, 302, + 0, 0, 0, 1399, 1400, 1401, 1402, 1403, 0, 1404, + 1405, 1406, 0, 105, 0, 106, 0, 0, 0, 108, + 0, 483, 220, 0, 221, 0, 109, 110, 0, 222, + 0, 223, 0, 0, 0, 0, 0, 112, 113, 114, + 105, 0, 106, 0, 0, 0, 108, 0, 0, 297, + 214, 215, 216, 109, 110, 484, 0, 0, 0, 0, + 0, 0, 0, 0, 112, 296, 114, 0, 0, 0, + 0, 0, 122, 0, 0, 0, 297, 0, 0, 0, + 0, 0, 127, 0, 0, 0, 0, 481, 128, 482, + 0, 0, 130, 131, 394, 67, 68, 0, 0, 122, + 0, 0, 0, 0, 134, 0, 135, 0, 0, 127, + 0, 0, 0, 0, 0, 128, 217, 218, 0, 0, + 131, 0, 0, 1033, 67, 68, 0, 0, 0, 0, + 0, 134, 0, 135, 0, 69, 0, 0, 70, 0, + 71, 72, 73, 74, 75, 0, 0, 76, 0, 0, + 77, 0, 219, 220, 78, 221, 0, 0, 0, 0, + 222, 79, 223, 0, 69, 0, 0, 70, 80, 71, + 72, 73, 74, 75, 0, 0, 76, 0, 0, 77, + 0, 0, 0, 78, 81, 0, 0, 0, 0, 0, + 79, 70, 0, 71, 72, 73, 0, 80, 0, 0, + 0, 0, 0, 82, 83, 0, 0, 0, 0, 84, + 0, 0, 0, 81, 1447, 67, 68, 85, 86, 87, + 88, 80, 0, 89, 0, 90, 0, 0, 0, 0, + 0, 0, 82, 83, 0, 0, 0, 263, 84, 0, + 0, 0, 0, 694, 695, 696, 85, 86, 87, 88, + 0, 0, 89, 0, 90, 69, 82, 83, 70, 0, + 71, 72, 73, 74, 75, 0, 0, 76, 0, 0, + 77, 0, 0, 88, 78, 0, 0, 0, 90, 0, + 0, 79, 0, 0, 0, 0, 0, 70, 80, 71, + 72, 73, 697, 698, 0, 0, 0, 0, 0, 77, + 0, 186, 0, 0, 81, 0, 0, 0, 0, 0, + 79, 694, 695, 696, 0, 0, 0, 80, 0, 0, + 0, 0, 0, 82, 83, 0, 0, 0, 0, 84, + 0, 0, 0, 81, 0, 0, 0, 85, 86, 87, + 88, 0, 0, 89, 0, 90, 0, 0, 0, 0, + 67, 68, 82, 83, 457, 70, 0, 71, 72, 73, + 0, 0, 0, 0, 0, 0, 699, 77, 0, 88, + 0, 0, 89, 0, 90, 0, 0, 0, 79, 67, + 68, 0, 0, 796, 0, 80, 459, 0, 0, 0, + 69, 0, 0, 70, 0, 71, 72, 73, 74, 460, + 0, 81, 76, 0, 0, 77, 0, 0, 0, 78, + 0, 0, 0, 0, 0, 459, 79, 0, 0, 69, + 82, 83, 70, 80, 71, 72, 73, 74, 460, 0, + 0, 76, 0, 0, 77, 0, 0, 88, 78, 81, + 89, 0, 90, 0, 0, 79, 70, 0, 71, 72, + 73, 0, 80, 0, 0, 461, 0, 0, 82, 83, + 0, 0, 0, 0, 84, 0, 0, 0, 81, 0, + 67, 68, 85, 86, 87, 88, 80, 0, 89, 0, + 90, 0, 0, 0, 461, 0, 0, 82, 83, 0, + 0, 0, 263, 84, 214, 215, 216, 0, 0, 67, + 68, 85, 86, 87, 88, 0, 459, 89, 0, 90, + 69, 82, 83, 70, 0, 71, 72, 73, 74, 460, + 0, 0, 76, 0, 0, 77, 0, 0, 88, 78, + 0, 0, 0, 90, 0, 0, 79, 0, 0, 69, + 0, 0, 70, 80, 71, 72, 73, 74, 75, 0, + 0, 76, 0, 0, 77, 0, 191, 0, 78, 81, + 217, 218, 0, 0, 0, 79, 0, 0, 214, 215, + 216, 0, 80, 0, 0, 461, 0, 0, 82, 83, + 0, 0, 0, 0, 84, 67, 68, 0, 81, 0, + 0, 330, 85, 86, 87, 88, 219, 220, 89, 221, + 90, 0, 0, 0, 222, 0, 223, 82, 83, 67, + 68, 0, 0, 84, 0, 0, 0, 0, 0, 0, + 0, 85, 86, 87, 88, 69, 0, 89, 70, 90, + 71, 72, 73, 74, 217, 218, 0, 76, 0, 0, + 77, 0, 0, 0, 78, 0, 0, 0, 0, 69, + 0, 79, 70, 0, 71, 72, 73, 74, 80, 0, + 0, 76, 0, 0, 77, 0, 0, 0, 78, 0, + 219, 220, 0, 221, 81, 79, 0, 0, 222, 0, + 223, 0, 80, 0, 0, 0, 0, 0, 0, 0, + 608, 1269, 0, 82, 83, 67, 1344, 0, 81, 84, + 0, 0, 0, 0, 0, 0, 0, 85, 86, 87, + 88, 0, 0, 89, 0, 90, 0, 82, 83, 0, + 0, 0, 0, 84, 175, 0, 0, 0, 0, 0, + 0, 85, 86, 87, 88, 69, 0, 89, 70, 90, + 71, 72, 73, 74, 517, 0, 0, 76, 0, 0, + 77, 0, 0, 0, 78, 0, 0, 0, 0, 0, + 0, 79, 0, 0, 176, 0, 0, 70, 80, 71, + 72, 73, 74, 998, 0, 0, 177, 0, 0, 77, + 0, 0, 0, 78, 81, 0, 0, 0, 0, 0, + 79, 0, 0, 214, 215, 216, 0, 80, 0, 0, + 0, 0, 0, 82, 83, 0, 0, 0, 0, 84, + 175, 0, 0, 81, 0, 0, 0, 85, 86, 87, + 88, 0, 0, 89, 0, 90, 0, 0, 0, 0, + 0, 0, 82, 83, 67, 0, 0, 0, 84, 0, + 0, 0, 214, 215, 216, 0, 178, 179, 87, 88, + 176, 0, 89, 70, 90, 71, 72, 73, 74, 217, + 218, 0, 177, 0, 0, 77, 0, 0, 0, 78, + 0, 0, 0, 0, 69, 0, 79, 70, 0, 71, + 72, 73, 74, 80, 0, 0, 76, 0, 0, 77, + 0, 0, 0, 78, 0, 219, 220, 0, 221, 81, + 79, 0, 0, 222, 0, 223, 0, 80, 217, 218, + 0, 0, 0, 0, 0, 0, 1269, 0, 82, 83, + 0, 1346, 0, 81, 84, 0, 0, 0, 0, 0, + 0, 0, 178, 179, 87, 88, 0, 0, 89, 0, + 90, 0, 82, 83, 219, 220, 0, 221, 84, 0, + 0, 0, 222, 0, 223, 0, 85, 86, 87, 88, + 0, 105, 89, 106, 90, 1269, 107, 108, 0, 0, + 1348, 0, 0, 0, 109, 110, 0, 0, 0, 0, + 0, 0, 0, 111, 0, 112, 113, 114, 115, 0, + 0, 0, 116, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 118, 119, 120, 121, 122, 123, - 0, 0, 0, 0, 0, 124, 125, 126, 127, 0, - 0, 105, 0, 106, 128, 129, 107, 108, 130, 131, - 0, 0, 0, 132, 109, 110, 0, 0, 0, 133, - 134, 0, 135, 111, 0, 112, 113, 114, 115, 0, - 136, 0, 116, 0, 0, 0, 0, 117, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 689, 0, 0, 0, 0, 0, 0, 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, 0, 124, 125, 126, 127, 0, 0, 105, 0, 106, 128, 129, 107, 108, @@ -2611,710 +2104,694 @@ static const yytype_int16 yytable[] = 0, 133, 134, 0, 135, 111, 0, 112, 113, 114, 115, 0, 136, 0, 116, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 871, 0, 0, 0, 0, 0, 0, 118, 119, + 0, 690, 0, 0, 0, 0, 0, 0, 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, 0, 124, 125, 126, 127, 0, 0, 105, 0, 106, 128, 129, 107, 108, 130, 131, 0, 0, 0, 132, 109, 110, 0, 0, 0, 133, 134, 0, 135, 111, 0, 112, 113, 114, 115, 0, 136, 0, 116, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 913, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 872, 0, 0, 0, 0, 0, 0, 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, 0, 124, 125, 126, 127, 0, 0, 105, 0, 106, 128, 129, 107, 108, 130, 131, 0, 0, 0, 132, 109, 110, 0, 0, 0, 133, 134, 0, 135, 111, 0, 112, 113, 114, 115, 0, 136, 0, 116, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1021, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 914, 0, 0, 0, 0, 0, 0, 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, 0, 124, 125, 126, 127, 0, 0, 105, 0, 106, 128, 129, 107, 108, 130, 131, 0, 0, 0, 132, 109, 110, 0, 0, 0, 133, 134, 0, 135, 111, 0, 112, 113, 114, 115, 0, 136, 0, 116, 0, 0, 0, 0, 117, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1071, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 1022, 0, 0, 0, 0, 0, 0, 118, 119, 120, 121, 122, 123, 0, 0, 0, 0, 0, 124, 125, 126, 127, 0, 0, 105, 0, 106, 128, 129, 107, 108, 130, 131, 0, 0, 0, 132, 109, 110, 0, 0, 0, 133, - 134, 0, 135, 111, 0, 112, 113, 114, 115, 105, - 136, 106, 116, 0, 0, 108, 0, 117, 0, 0, - 0, 0, 109, 110, 0, 0, 0, 0, 0, 1289, - 0, 0, 0, 112, 296, 114, 118, 119, 120, 121, - 122, 123, 0, 0, 0, 297, 0, 124, 125, 126, - 127, 0, 0, 0, 0, 0, 128, 129, 0, 0, - 130, 131, 0, 0, 0, 132, 0, 0, 122, 0, - 0, 133, 134, 0, 135, 0, 0, 0, 127, 0, - 0, 0, 136, 0, 128, 0, 0, 0, 0, 131, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 133, - 134, 1428, 135, 0, 0, 105, 0, 106, 0, 0, - 107, 108, 0, 0, 0, 0, 0, -147, 109, 110, - 0, 0, 0, 0, 0, 0, 0, 111, 0, 112, - 113, 114, 115, 105, 0, 106, 116, 0, 0, 108, - 0, 117, 0, 0, 0, 0, 109, 110, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 112, 113, 114, - 118, 119, 120, 121, 122, 123, 0, 0, 0, 297, - 0, 124, 125, 126, 127, 0, 0, 0, 0, 0, - 128, 129, 0, 0, 130, 131, 0, 0, 0, 132, - 0, 105, 122, 106, 0, 133, 134, 108, 135, 0, - 0, 0, 127, 0, 109, 110, 0, 0, 128, 0, - 0, 0, 130, 131, 0, 112, 296, 114, 0, 105, - 0, 106, 0, 133, 134, 108, 135, 297, 0, 0, - 0, 0, 109, 110, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 112, 296, 114, 0, 0, 0, 0, - 122, 308, 0, 0, 0, 297, 0, 0, 0, 0, - 127, 0, 0, 0, 0, 0, 128, 0, 0, 0, - 0, 131, 0, 0, 0, 0, 0, 0, 122, 0, - 0, 0, 134, 0, 135, 0, 0, 0, 127, 0, - 0, 0, 0, 0, 128, 0, 0, 0, 0, 131, + 134, 0, 135, 111, 0, 112, 113, 114, 115, 0, + 136, 0, 116, 0, 0, 0, 0, 117, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 1072, + 0, 0, 0, 0, 0, 0, 118, 119, 120, 121, + 122, 123, 0, 0, 0, 0, 0, 124, 125, 126, + 127, 0, 0, 105, 0, 106, 128, 129, 107, 108, + 130, 131, 0, 0, 0, 132, 109, 110, 0, 0, + 0, 133, 134, 0, 135, 111, 0, 112, 113, 114, + 115, 0, 136, 0, 116, 0, 0, 0, 0, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 134, 0, 135 + 0, 1291, 0, 0, 0, 0, 0, 0, 118, 119, + 120, 121, 122, 123, 0, 0, 0, 0, 0, 124, + 125, 126, 127, 0, 0, 105, 0, 106, 128, 129, + 0, 108, 130, 131, 105, 0, 106, 132, 109, 110, + 108, 0, 0, 133, 134, 0, 135, 109, 110, 112, + 296, 114, 0, 0, 136, 0, 116, 0, 112, 113, + 114, 297, 0, 0, 0, 116, 0, 0, 0, 0, + 297, 0, 0, 1430, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 122, 0, 0, 0, 0, 0, + 0, 0, 0, 122, 127, 0, 0, 0, 0, 0, + 128, 0, 0, 127, 0, 131, 0, 0, 0, 128, + 0, 0, 0, 130, 131, 133, 134, 105, 135, 106, + 0, 0, 107, 108, 133, 134, 0, 135, 0, 0, + 109, 110, 0, -148, 0, 0, 0, 0, 0, 111, + 0, 112, 113, 114, 115, 105, 0, 106, 116, 0, + 0, 108, 0, 117, 105, 0, 106, 0, 109, 110, + 108, 0, 0, 0, 0, 0, 0, 109, 110, 112, + 296, 114, 118, 119, 120, 121, 122, 123, 112, 296, + 114, 297, 0, 124, 125, 126, 127, 0, 0, 0, + 297, 0, 128, 129, 0, 0, 130, 131, 0, 0, + 0, 132, 0, 0, 122, 308, 0, 133, 134, 0, + 135, 0, 0, 122, 127, 0, 0, 0, 0, 0, + 128, 0, 0, 127, 0, 131, 0, 0, 0, 128, + 0, 0, 0, 0, 131, 0, 134, 0, 135, 0, + 0, 0, 0, 0, 0, 134, 0, 135 }; -#define yypact_value_is_default(Yystate) \ - (!!((Yystate) == (-922))) - -#define yytable_value_is_error(Yytable_value) \ - YYID (0) - static const yytype_int16 yycheck[] = { - 1, 61, 113, 130, 527, 460, 927, 295, 44, 708, - 507, 751, 315, 489, 659, 44, 15, 44, 458, 476, - 604, 92, 140, 140, 147, 140, 149, 150, 151, 152, - 182, 154, 613, 156, 489, 158, 81, 82, 83, 327, - 480, 713, 13, 88, 33, 15, 585, 6, 488, 8, - 15, 174, 15, 717, 794, 719, 720, 721, 722, 723, - 147, 62, 185, 186, 76, 15, 76, 59, 191, 192, - 76, 743, 744, 147, 746, 747, 748, 749, 147, 15, - 0, 147, 169, 147, 623, 148, 76, 150, 147, 147, - 91, 92, 166, 33, 586, 634, 164, 166, 99, 75, - 166, 147, 166, 147, 140, 147, 155, 166, 166, 147, - 164, 140, 33, 140, 10, 11, 12, 150, 149, 147, - 166, 164, 166, 147, 166, 770, 146, 164, 166, 10, - 11, 12, 165, 125, 146, 146, 146, 149, 166, 149, - 146, 164, 166, 149, 164, 146, 147, 33, 149, 150, - 151, 152, 6, 154, 8, 156, 146, 158, 155, 149, - 615, 206, 207, 208, 209, 146, 164, 166, 157, 158, - 159, 160, 161, 174, 163, 164, 165, 295, 295, 147, - 295, 182, 150, 164, 185, 186, 257, 258, 159, 150, - 191, 192, 495, 253, 164, 76, 77, 147, 350, 164, - 164, 164, 273, 274, 165, 323, 323, 166, 323, 327, - 327, 147, 327, 752, 155, 691, 112, 520, 263, 711, - 804, 150, 714, 163, 164, 165, 898, 228, 149, 147, - 814, 112, 113, 13, 115, 15, 165, 17, 467, 120, - 904, 122, 287, 164, 165, 13, 147, 15, 166, 17, - 147, 790, 791, 149, 164, 752, 257, 258, 164, 295, - 75, 933, 6, 386, 8, 166, 295, 155, 295, 166, - 147, 272, 273, 274, 275, 276, 277, 163, 164, 165, - 60, 282, 22, 23, 164, 166, 13, 323, 15, 166, - 17, 327, 60, 33, 323, 164, 323, 754, 327, 147, - 327, 277, 108, 109, 110, 164, 112, 113, 114, 2, - 149, 117, 22, 23, 315, 147, 122, 147, 166, 147, - 147, 127, 128, 33, 130, 131, 132, 911, 134, 135, - 164, 771, 787, 60, 166, 164, 166, 149, 166, 166, - 643, 98, 147, 147, 146, 164, 148, 149, 150, 350, - 164, 146, 997, 148, 642, 150, 895, 147, 64, 65, - 140, 166, 166, 56, 57, 58, 59, 60, 164, 845, - 63, 146, 140, 148, 154, 150, 166, 165, 166, 159, - 609, 143, 144, 145, 164, 386, 154, 690, 164, 164, - 845, 159, 164, 165, 166, 918, 164, 164, 895, 983, - 629, 630, 631, 632, 633, 406, 1327, 149, 272, 273, - 274, 275, 276, 140, 164, 996, 164, 157, 158, 159, - 160, 161, 914, 163, 164, 165, 146, 154, 148, 164, - 150, 476, 159, 54, 164, 56, 57, 58, 439, 113, - 114, 115, 443, 444, 445, 446, 447, 157, 158, 159, - 160, 161, 164, 163, 164, 165, 457, 164, 165, 166, - 461, 462, 277, 84, 164, 466, 1005, 1006, 469, 146, - 164, 148, 164, 150, 703, 504, 165, 166, 1001, 100, - 164, 165, 166, 459, 460, 165, 166, 166, 489, 164, - 296, 297, 164, 165, 495, 164, 302, 190, 119, 120, - 146, 147, 164, 504, 165, 166, 1087, 1247, 164, 1090, - 164, 1003, 164, 489, 164, 136, 517, 1009, 1010, 520, - 141, 164, 337, 164, 642, 642, 164, 642, 165, 166, - 164, 165, 289, 164, 165, 164, 164, 164, 164, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 789, 254, 164, 150, 159, 165, 259, 165, 149, 872, - 10, 11, 12, 48, 147, 439, 164, 806, 146, 443, - 444, 445, 446, 447, 585, 586, 587, 164, 155, 164, - 164, 148, 349, 457, 147, 167, 597, 461, 462, 147, - 166, 1093, 295, 604, 166, 166, 642, 608, 166, 156, - 586, 671, 613, 642, 1313, 642, 617, 618, 619, 620, - 621, 622, 623, 659, 166, 166, 166, 156, 166, 322, - 659, 607, 659, 634, 166, 166, 76, 77, 166, 615, - 166, 147, 643, 644, 459, 460, 166, 166, 166, 166, - 166, 880, 166, 166, 166, 166, 166, 166, 887, 888, - 889, 890, 891, 156, 166, 166, 166, 166, 697, 156, - 166, 166, 112, 113, 489, 115, 166, 1417, 1418, 1419, - 120, 487, 122, 15, 164, 166, 159, 166, 165, 690, - 383, 165, 149, 164, 166, 146, 756, 757, 167, 166, - 147, 516, 703, 147, 764, 147, 766, 400, 401, 754, - 711, 147, 164, 714, 407, 148, 717, 33, 719, 720, - 721, 722, 723, 164, 149, 165, 164, 164, 33, 48, - 731, 166, 166, 597, 770, 711, 164, 166, 714, 740, - 1321, 770, 164, 770, 159, 159, 169, 146, 48, 76, - 751, 752, 164, 155, 881, 155, 1337, 1338, 1339, 155, - 517, 155, 166, 1239, 10, 148, 164, 1259, 10, 1261, - 881, 586, 17, 10, 10, 532, 469, 156, 535, 1519, - 147, 159, 148, 159, 1239, 166, 1526, 788, 466, 790, - 791, 166, 607, 794, 167, 148, 797, 920, 921, 148, - 615, 148, 47, 804, 167, 148, 166, 867, 159, 166, - 166, 787, 166, 814, 164, 60, 61, 146, 164, 164, - 164, 169, 515, 824, 165, 165, 1318, 165, 1409, 166, - 164, 76, 149, 1414, 164, 147, 529, 147, 166, 1420, - 1421, 157, 158, 159, 160, 161, 147, 163, 164, 165, - 159, 150, 1081, 882, 159, 160, 161, 165, 163, 164, - 165, 106, 166, 166, 109, 167, 147, 112, 10, 845, - 166, 872, 169, 4, 147, 681, 682, 48, 164, 880, - 169, 164, 169, 128, 146, 886, 887, 888, 889, 890, - 891, 892, 1415, 1474, 895, 140, 711, 590, 147, 714, - 166, 156, 156, 904, 156, 166, 1029, 166, 156, 154, - 911, 604, 11, 914, 10, 1407, 166, 148, 10, 920, - 921, 10, 10, 148, 1505, 147, 927, 998, 169, 164, - 608, 169, 166, 10, 11, 12, 166, 1518, 914, 33, - 618, 619, 620, 621, 622, 166, 10, 11, 12, 642, - 167, 708, 10, 11, 12, 54, 713, 56, 57, 58, - 717, 997, 719, 720, 721, 722, 723, 167, 997, 1272, - 997, 167, 787, 167, 667, 668, 669, 670, 166, 672, - 1472, 166, 983, 15, 164, 84, 743, 744, 164, 746, - 747, 748, 749, 166, 164, 996, 155, 998, 166, 76, - 77, 100, 1003, 164, 1005, 1006, 166, 164, 1009, 1010, - 155, 155, 76, 77, 155, 164, 166, 15, 76, 77, - 119, 120, 146, 166, 10, 703, 166, 1003, 1029, 166, - 845, 166, 148, 1009, 1010, 112, 113, 136, 115, 10, - 148, 148, 141, 120, 10, 122, 148, 740, 112, 113, - 164, 115, 167, 166, 112, 113, 120, 115, 122, 156, - 166, 166, 120, 147, 122, 159, 160, 161, 166, 163, - 164, 165, 1073, 150, 156, 881, 156, 154, 156, 166, - 1081, 166, 159, 166, 10, 148, 1087, 10, 167, 1090, - 154, 149, 1093, 148, 164, 159, 164, 164, 148, 914, - 166, 10, 11, 12, 13, 164, 166, 148, 17, 166, - 788, 804, 166, 1242, 307, 645, 919, 1093, 1313, 797, - 327, 814, 882, 1239, 1073, 818, 697, 845, 327, 1273, - 1202, 405, -1, -1, -1, -1, -1, 10, 11, 12, - 13, 898, 835, -1, 17, -1, -1, 904, -1, -1, - -1, 60, -1, 846, 847, 848, 849, 850, 851, 852, - 853, 854, 855, 856, 857, 858, 859, 860, 861, 862, - 863, 864, 865, 866, -1, 868, 933, 1248, 10, 11, - 12, 13, -1, -1, -1, 17, -1, 60, 1003, -1, - -1, -1, -1, -1, 1009, 1010, -1, -1, -1, -1, - -1, 1202, 880, 112, -1, -1, -1, -1, -1, 887, - 888, 889, 890, 891, -1, -1, -1, -1, 911, -1, - -1, -1, -1, 54, -1, 56, 57, 58, 60, -1, - -1, 140, 62, -1, 927, 66, -1, -1, 1239, 112, - -1, -1, -1, -1, -1, 154, 1247, 1248, -1, 1309, - 159, -1, -1, 84, -1, 85, -1, -1, 1259, -1, - 1261, -1, 61, 1239, -1, -1, -1, 140, -1, 100, - -1, 1272, -1, -1, -1, 105, -1, -1, 1093, 111, - 112, 154, -1, 1259, -1, 1261, 159, -1, 119, 120, - 983, 164, 985, 123, -1, 1355, 1356, -1, 1358, -1, - 1360, -1, -1, 133, -1, 136, -1, -1, 140, -1, - 141, -1, -1, -1, -1, -1, -1, 1318, -1, -1, - 1321, -1, 154, -1, -1, -1, 1327, 159, -1, -1, - -1, -1, 164, 164, -1, -1, 1337, 1338, 1339, -1, - -1, -1, 1318, 1403, 1037, -1, -1, -1, 178, 148, - -1, 181, -1, -1, 153, -1, 155, 1082, 157, -1, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, -1, -1, 10, 11, 12, - 13, -1, 15, -1, 17, 184, -1, -1, -1, 188, - 189, 190, -1, -1, -1, 225, 226, 20, 21, 22, - 23, -1, -1, 1081, -1, -1, 1407, -1, 1409, -1, - 33, -1, -1, 1414, -1, -1, 1417, 1418, 1419, 1420, - 1421, -1, -1, -1, 1239, -1, -1, 60, -1, -1, - -1, 1407, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 271, -1, -1, 1259, -1, 1261, -1, -1, 10, - 11, 12, 1512, 1513, 1514, -1, 1516, -1, -1, 289, - -1, 291, 18, 19, 20, 21, 22, 23, -1, 268, - -1, 1472, -1, 1474, -1, -1, -1, 33, 308, 112, - 310, 311, 312, 313, -1, 1242, -1, -1, 16, 17, - 18, 19, 20, 21, 22, 23, 1472, -1, -1, 329, - -1, -1, -1, 1318, 1505, 33, -1, 140, 338, -1, - -1, 341, -1, -1, -1, 76, 77, 1518, 1519, 349, - -1, 154, -1, -1, -1, 1526, 159, -1, -1, -1, - -1, 164, 155, 156, 157, 158, 159, 160, 161, 1232, - 163, 164, 165, 16, 17, 18, 19, 20, 21, 22, - 23, 112, 113, 114, 115, -1, 1313, -1, 388, 120, - 33, 122, 392, 20, 21, 22, 23, -1, -1, -1, - -1, -1, 133, -1, -1, 405, 33, 138, -1, 1304, - 1305, 1306, 1307, 1308, -1, 1310, 385, -1, -1, -1, - -1, -1, 1407, 1286, -1, -1, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, -1, 163, 164, 165, - -1, -1, 442, -1, -1, -1, -1, -1, -1, -1, - -1, 149, -1, 151, 152, 153, 154, -1, 458, 157, - 158, 159, 160, 161, 1327, 163, 164, 165, -1, -1, - 470, -1, -1, -1, -1, 1304, 1305, 1306, 1307, 1308, - 480, 1310, -1, -1, -1, -1, -1, 1472, 488, 1384, - 1385, 1386, 1387, 1388, 1389, 1390, 1391, 1392, 1393, 1394, - 1395, 1396, 1397, 1398, 1399, 1400, 1401, 1402, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, -1, - 163, 164, 165, -1, 524, -1, 169, 10, 11, 12, - 157, 158, 159, 160, 161, 535, 163, 164, 165, -1, - -1, 1404, -1, 512, 10, 11, 12, -1, -1, -1, - 519, -1, -1, 1448, -1, 1384, 1385, 1386, 1387, 1388, - 1389, 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, - 1399, 1400, 1401, 1402, -1, 54, -1, 56, 57, 58, - -1, 550, -1, 552, 584, 554, -1, 66, -1, -1, - -1, -1, -1, 76, 77, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 84, 1501, -1, -1, -1, - 76, 77, -1, -1, -1, -1, -1, -1, -1, 1448, - -1, 100, -1, -1, -1, -1, -1, 627, -1, 112, - 113, -1, 115, -1, -1, -1, -1, 120, -1, 122, - 119, 120, -1, -1, -1, 645, 112, 113, -1, 115, - -1, -1, -1, -1, 120, -1, 122, 136, -1, -1, - -1, -1, 141, 146, -1, -1, -1, -1, -1, -1, - -1, 137, 1501, 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, 701, 671, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, -1, -1, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, -1, - 70, -1, 72, 73, 74, 75, 76, 77, 78, 79, - 80, -1, 82, 83, 84, 16, 17, 18, 19, 20, - 21, 22, 23, 1264, 1265, 1266, -1, -1, -1, -1, - 100, 771, 33, -1, -1, -1, 106, 107, 108, -1, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, -1, -1, -1, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 1, 61, 113, 130, 130, 92, 477, 928, 295, 490, + 140, 587, 140, 660, 528, 44, 508, 15, 709, 140, + 182, 146, 15, 6, 752, 8, 44, 461, 586, 15, + 98, 315, 614, 146, 13, 459, 59, 0, 605, 164, + 15, 328, 164, 147, 147, 149, 150, 151, 152, 147, + 154, 164, 156, 15, 158, 15, 490, 481, 10, 11, + 12, 62, 44, 166, 76, 489, 624, 795, 76, 164, + 174, 169, 13, 714, 15, 164, 17, 635, 147, 164, + 150, 185, 186, 6, 33, 8, 76, 191, 192, 147, + 91, 92, 150, 164, 33, 165, 155, 166, 99, 75, + 33, 147, 125, 744, 745, 155, 747, 748, 749, 750, + 718, 140, 720, 721, 722, 723, 724, 150, 155, 60, + 166, 147, 140, 164, 771, 146, 164, 148, 149, 150, + 64, 65, 165, 147, 146, 155, 712, 149, 146, 715, + 166, 149, 10, 11, 12, 146, 147, 76, 149, 150, + 151, 152, 166, 154, 147, 156, 146, 158, 140, 149, + 112, 75, 81, 82, 83, 295, 146, 295, 166, 88, + 257, 258, 147, 174, 295, 13, 164, 15, 164, 17, + 159, 182, 616, 166, 185, 186, 273, 274, 149, 351, + 191, 192, 164, 253, 324, 753, 324, 149, 328, 140, + 328, 149, 164, 324, 164, 147, 164, 328, 76, 77, + 149, 692, 496, 154, 163, 164, 165, 146, 159, 164, + 149, 289, 60, 164, 166, 164, 165, 228, 165, 166, + 163, 164, 165, 791, 792, 150, 147, 521, 805, 164, + 147, 147, 164, 147, 112, 113, 147, 115, 815, 149, + 165, 147, 120, 166, 122, 166, 257, 258, 899, 166, + 166, 753, 166, 165, 166, 166, 295, 10, 11, 12, + 166, 272, 273, 274, 275, 276, 277, 295, 143, 144, + 145, 282, 350, 387, 755, 165, 166, 206, 207, 208, + 209, 61, 147, 934, 164, 324, 147, 905, 166, 328, + 147, 277, 140, 108, 109, 110, 324, 112, 113, 114, + 328, 166, 117, 295, 315, 166, 154, 122, 147, 166, + 164, 159, 127, 128, 147, 130, 131, 132, 147, 134, + 135, 164, 165, 76, 77, 149, 147, 166, 896, 915, + 147, 150, 324, 166, 263, 912, 328, 166, 772, 164, + 351, 998, 147, 165, 788, 166, 643, 147, 164, 166, + 644, 147, 338, 277, 148, 846, 150, 164, 287, 112, + 113, 166, 115, 164, 165, 166, 166, 120, 148, 122, + 166, 164, 6, 153, 8, 155, 387, 157, 164, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - -1, 1342, -1, 1344, -1, 1346, -1, -1, 1349, 1350, - 1351, -1, -1, -1, -1, -1, -1, -1, 827, 828, - 829, -1, 831, -1, 833, 834, 835, -1, -1, -1, + 170, 171, 172, 173, 896, 919, 407, 691, 1329, 13, + 147, 15, 846, 17, 184, 997, 164, 984, 188, 189, + 190, 159, 165, 10, 11, 12, 13, 149, 1004, 166, + 17, 164, 165, 166, 1010, 1011, 146, 147, 33, 440, + 164, 165, 166, 444, 445, 446, 447, 448, 1006, 1007, + 518, 164, 10, 11, 12, 13, 60, 458, 164, 17, + 164, 462, 463, 165, 166, 533, 467, 164, 536, 470, + 146, 164, 148, 60, 150, 164, 505, 164, 10, 11, + 12, 113, 114, 115, 460, 461, 165, 166, 1002, 490, + 164, 296, 297, 164, 165, 496, 164, 302, 268, 146, + 164, 148, 60, 150, 505, 164, 165, 1089, 164, 164, + 1092, 164, 164, 643, 490, 643, 164, 518, 164, 1095, + 521, 1249, 643, 164, 111, 112, 164, 20, 21, 22, + 23, 146, 165, 148, 164, 150, 140, 164, 164, 48, + 33, 517, 147, 164, 76, 77, 460, 461, 146, 164, + 154, 164, 155, 140, 112, 159, 164, 146, 477, 148, + 164, 150, 157, 158, 159, 160, 161, 154, 163, 164, + 165, 164, 159, 148, 147, 167, 490, 164, 166, 156, + 112, 113, 140, 115, 166, 586, 587, 588, 120, 873, + 122, 22, 23, 156, 166, 166, 154, 598, 166, 166, + 166, 159, 33, 147, 605, 137, 164, 166, 609, 166, + 166, 587, 672, 614, 643, 166, 386, 618, 619, 620, + 621, 622, 623, 624, 1315, 643, 22, 23, 166, 147, + 166, 660, 608, 166, 635, 166, 166, 33, 166, 166, + 616, 709, 660, 644, 645, 166, 714, 166, 15, 166, + 718, 166, 720, 721, 722, 723, 724, 156, 166, 166, + 166, 643, 155, 156, 157, 158, 159, 160, 161, 698, + 163, 164, 165, 587, 166, 166, 744, 745, 660, 747, + 748, 749, 750, 488, 156, 1261, 166, 1263, 166, 166, + 691, 1419, 1420, 1421, 608, 33, 164, 757, 758, 166, + 166, 165, 616, 704, 159, 765, 165, 767, 467, 166, + 149, 712, 164, 167, 715, 166, 33, 718, 2, 720, + 721, 722, 723, 724, 146, 148, 157, 158, 159, 160, + 161, 732, 163, 164, 165, 147, 712, 147, 147, 715, + 741, 1323, 771, 513, 1320, 147, 164, 164, 149, 164, + 520, 752, 753, 771, 48, 882, 882, 1339, 1340, 1341, + 1241, 157, 158, 159, 160, 161, 164, 163, 164, 165, + 164, 882, 56, 57, 58, 59, 60, 166, 166, 63, + 166, 551, 164, 553, 159, 555, 159, 146, 789, 771, + 791, 792, 169, 1521, 795, 48, 76, 798, 712, 164, + 1528, 715, 155, 33, 805, 155, 155, 1241, 868, 155, + 164, 166, 788, 10, 815, 10, 10, 921, 922, 157, + 158, 159, 160, 161, 825, 163, 164, 165, 10, 1411, + 148, 899, 156, 1409, 1416, 147, 755, 905, 148, 159, + 1422, 1423, 159, 160, 161, 166, 163, 164, 165, 148, + 609, 159, 166, 148, 883, 148, 167, 468, 167, 148, + 619, 620, 621, 622, 623, 166, 934, 159, 166, 166, + 846, 146, 873, 169, 788, 166, 164, 682, 683, 164, + 881, 272, 273, 274, 275, 276, 887, 888, 889, 890, + 891, 892, 893, 164, 1476, 896, 164, 166, 1474, 1266, + 1267, 1268, 672, 1417, 905, 165, 190, 165, 165, 149, + 164, 912, 999, 164, 915, 147, 166, 150, 147, 147, + 921, 922, 159, 166, 166, 1507, 1030, 928, 167, 159, + 160, 161, 846, 163, 164, 165, 147, 10, 1520, 915, + 165, 4, 166, 169, 147, 704, 48, 164, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 998, + 254, 169, 164, 169, 146, 259, 147, 1344, 166, 1346, + 998, 1348, 156, 984, 1351, 1352, 1353, 156, 156, 166, + 1274, 166, 156, 166, 10, 148, 997, 10, 999, 610, + 10, 915, 10, 1004, 148, 1006, 1007, 147, 164, 1010, + 1011, 295, 169, 167, 166, 166, 998, 167, 167, 630, + 631, 632, 633, 634, 169, 167, 15, 166, 1004, 1030, + 789, 166, 166, 164, 1010, 1011, 164, 166, 322, 798, + 164, 10, 11, 12, 166, 10, 11, 12, 13, 440, + 15, 164, 17, 444, 445, 446, 447, 448, 828, 829, + 830, 166, 832, 164, 834, 835, 836, 458, 10, 11, + 12, 462, 463, 1074, 155, 155, 155, 882, 155, 164, + 166, 15, 1083, 166, 146, 10, 10, 148, 1089, 148, + 1004, 1092, 166, 704, 1095, 60, 1010, 1011, 166, 166, + 384, 148, 10, 148, 164, 147, 156, 76, 77, 10, + 11, 12, 13, 166, 166, 166, 17, 401, 402, 1095, + 156, 167, 881, 166, 408, 10, 11, 12, 156, 888, + 889, 890, 891, 892, 76, 77, 166, 166, 156, 166, + 10, 167, 148, 112, 113, 10, 115, 112, 148, 164, + 164, 120, 164, 122, 148, 166, 148, 164, 920, 60, + 307, 166, 166, 1250, 166, 646, 1244, 1315, 328, 883, + 112, 113, 698, 115, 1084, 140, 1244, 1241, 120, 790, + 122, 1095, 1074, 846, 1275, 154, 470, 328, 1204, 154, + 159, 76, 77, 406, 159, -1, 807, -1, -1, 164, + -1, -1, -1, 1204, -1, -1, -1, 598, 150, -1, + -1, 112, 154, -1, -1, -1, -1, 159, -1, 16, + 17, 18, 19, 20, 21, 22, 23, 112, 113, -1, + 115, -1, 516, -1, -1, 120, 33, 122, -1, 140, + 1241, -1, -1, -1, -1, -1, 530, 1315, 1249, 1250, + -1, 1311, -1, 154, -1, -1, -1, -1, 159, -1, + 1261, -1, 1263, -1, 149, 1241, -1, -1, -1, -1, + 881, -1, -1, 1274, -1, -1, -1, 888, 889, 890, + 891, 892, -1, -1, -1, 1261, -1, 1263, -1, 18, + 19, 20, 21, 22, 23, -1, -1, 1357, 1358, -1, + 1360, -1, 1362, -1, 33, -1, -1, 591, -1, -1, + -1, -1, 1082, -1, -1, -1, -1, -1, -1, 1320, + -1, 605, 1323, -1, 1083, -1, -1, 1241, 1329, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 1339, 1340, + 1341, -1, -1, -1, 1320, 1405, -1, 1261, -1, 1263, + -1, -1, 149, -1, 151, 152, 153, 154, -1, 643, + 157, 158, 159, 160, 161, -1, 163, 164, 165, -1, + 20, 21, 22, 23, -1, -1, -1, -1, -1, -1, + -1, 62, -1, 33, 668, 669, 670, 671, -1, 673, + -1, -1, -1, -1, -1, -1, 1306, 1307, 1308, 1309, + 1310, -1, 1312, -1, 85, -1, 1320, -1, 1409, -1, + 1411, -1, -1, -1, -1, 1416, -1, -1, 1419, 1420, + 1421, 1422, 1423, -1, 105, 154, 155, 156, 157, 158, + 159, 160, 161, 1409, 163, 164, 165, -1, -1, -1, + -1, -1, 123, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 133, -1, 1514, 1515, 1516, 741, 1518, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 883, -1, -1, -1, -1, -1, -1, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, -1, 163, 164, 165, -1, -1, -1, 169, -1, - -1, -1, -1, -1, -1, 10, 11, 12, -1, 919, + -1, -1, 1083, 1474, -1, 1476, 1386, 1387, 1388, 1389, + 1390, 1391, 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, + 1400, 1401, 1402, 1403, 1404, 1409, -1, 178, 1474, -1, + 181, -1, -1, -1, -1, -1, 1507, 157, 158, 159, + 160, 161, -1, 163, 164, 165, -1, -1, -1, 1520, + 1521, 805, -1, -1, -1, -1, -1, 1528, -1, -1, + -1, 815, -1, -1, -1, 819, -1, -1, -1, -1, + 1450, 1311, -1, -1, 225, 226, -1, -1, -1, -1, + -1, -1, 836, -1, -1, -1, -1, -1, -1, -1, + 1474, -1, -1, 847, 848, 849, 850, 851, 852, 853, + 854, 855, 856, 857, 858, 859, 860, 861, 862, 863, + 864, 865, 866, 867, -1, 869, -1, -1, -1, -1, + 271, -1, -1, 1503, 1306, 1307, 1308, 1309, 1310, -1, + 1312, 1371, 1372, 1373, 1374, -1, 1376, 1377, 289, 17, + 291, -1, -1, -1, -1, -1, -1, -1, 18, 19, + 20, 21, 22, 23, -1, 33, -1, 308, 912, 310, + 311, 312, 313, 33, -1, -1, -1, -1, -1, 47, + 10, 11, 12, -1, 928, -1, -1, -1, -1, 330, + -1, -1, 60, 61, -1, -1, -1, -1, 339, -1, + -1, 342, -1, -1, -1, -1, -1, -1, 76, 350, + -1, -1, -1, -1, 1386, 1387, 1388, 1389, 1390, 1391, + 1392, 1393, 1394, 1395, 1396, 1397, 1398, 1399, 1400, 1401, + 1402, 1403, 1404, -1, -1, -1, -1, -1, 106, -1, + 984, 109, 986, -1, 112, -1, 76, 77, 389, -1, + -1, -1, 393, -1, -1, -1, -1, -1, -1, -1, + 128, -1, -1, -1, -1, 406, -1, -1, -1, -1, + -1, -1, 140, -1, -1, -1, -1, -1, 1450, -1, + -1, -1, 112, 113, -1, 115, 154, -1, -1, -1, + 120, -1, 122, -1, 1038, 155, 156, 157, 158, 159, + 160, 161, 443, 163, 164, 165, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 146, -1, 459, 3, + 4, 5, 6, -1, 8, 9, 10, 11, 12, -1, + 471, 1503, -1, -1, -1, -1, -1, -1, -1, -1, + 481, -1, -1, -1, -1, -1, -1, -1, 489, -1, + -1, -1, -1, -1, -1, -1, 18, 19, 20, 21, + 22, 23, -1, -1, -1, -1, 50, 51, -1, -1, + 54, 33, 56, 57, 58, 59, 60, -1, 62, 63, + -1, -1, 66, 67, 525, -1, 70, -1, -1, -1, + -1, 75, 76, 77, -1, 536, -1, 81, -1, -1, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, -1, -1, -1, + -1, -1, -1, -1, 108, -1, 110, -1, 112, -1, + -1, -1, -1, 117, -1, 119, 120, 121, -1, -1, + 124, 125, -1, -1, 585, 129, -1, -1, 132, 133, + 134, 135, 136, -1, -1, 139, -1, 141, -1, -1, + 3, 4, 5, 6, -1, 8, 9, 10, 11, 12, + 154, -1, 15, 157, 158, 159, -1, -1, 162, -1, + 164, 165, -1, -1, 168, -1, -1, 628, -1, -1, + 1234, 153, 154, 155, 156, 157, 158, 159, 160, 161, + -1, 163, 164, 165, 47, 646, -1, 50, 51, -1, + -1, 54, -1, 56, 57, 58, 59, 60, -1, 62, + 63, -1, -1, 66, 67, -1, -1, 70, -1, -1, + -1, -1, 75, 76, 77, -1, -1, -1, -1, -1, + -1, 84, -1, -1, 1288, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 100, -1, -1, + -1, 702, -1, -1, -1, 108, -1, 110, -1, 112, + -1, -1, -1, 116, 117, -1, 119, 120, 121, -1, + -1, 124, 125, -1, -1, 1329, 129, -1, -1, 132, + 133, 134, 135, 136, -1, -1, 139, -1, 141, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3, 4, 5, 6, 7, 8, 9, 10, + -1, 154, -1, -1, 157, 158, -1, -1, -1, 162, + -1, 164, -1, -1, -1, 168, -1, -1, -1, -1, + -1, 772, -1, -1, -1, -1, -1, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, -1, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + -1, -1, 1406, -1, -1, -1, -1, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, -1, -1, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, -1, 70, -1, 72, 73, 74, 75, + 76, 77, 78, 79, 80, -1, 82, 83, 84, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 100, -1, -1, -1, -1, -1, + 106, 107, 108, 884, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, -1, -1, 920, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, -1, -1, -1, -1, -1, 16, + 17, 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, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 1001, -1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, -1, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, - -1, -1, 33, 34, 35, 36, 37, 38, 39, 40, + -1, 1032, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 76, 77, 54, 55, 56, 57, 58, 59, 60, + 51, -1, -1, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, -1, 70, - 1000, 72, 73, 74, 75, 76, 77, 78, 79, 80, - -1, 82, 83, 84, -1, -1, -1, 112, 113, -1, - 115, -1, -1, -1, -1, 120, -1, 122, -1, 100, - -1, 1031, -1, -1, -1, 106, 107, 108, 133, 110, + -1, 72, 73, 74, 75, 76, 77, 78, 79, 80, + -1, 82, 83, 84, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, -1, 163, 164, 165, 100, + -1, -1, 169, -1, -1, 106, 107, 108, -1, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, -1, -1, -1, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, 3, - 4, 5, 6, -1, 8, 9, 10, 11, 12, -1, - -1, 1080, -1, -1, -1, -1, -1, -1, -1, -1, + 4, 5, 6, -1, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 10, 11, 12, 16, 17, 18, 19, 20, 21, - 22, 23, -1, -1, -1, -1, 50, 51, -1, -1, - 54, 33, 56, 57, 58, 59, 60, -1, 62, 63, - -1, -1, 66, 67, -1, -1, 70, -1, 47, -1, - 49, 75, 76, 77, -1, -1, -1, 81, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 16, 17, 18, 19, 20, 21, 22, 23, -1, + -1, -1, -1, -1, -1, -1, 50, 51, 33, -1, + 54, -1, 56, 57, 58, 59, -1, -1, 62, 63, + -1, -1, 66, 67, -1, -1, 70, -1, -1, -1, + -1, 75, 76, 77, -1, -1, -1, 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 76, 77, -1, + 94, 95, 96, 97, 98, 99, 100, -1, 1269, -1, -1, -1, -1, -1, 108, -1, 110, -1, 112, -1, -1, -1, -1, 117, -1, 119, 120, 121, -1, -1, - 124, 125, 10, 11, 12, 129, -1, -1, 132, 133, - 134, 135, 136, 112, 113, 139, 115, 141, -1, -1, - -1, 120, -1, 122, -1, -1, -1, -1, -1, -1, + 124, 125, -1, -1, -1, 129, -1, -1, 132, 133, + 134, 135, 136, -1, -1, 139, -1, 141, 3, 4, + 5, 6, -1, 8, 9, 10, 11, -1, -1, -1, 154, -1, -1, 157, 158, 159, -1, -1, 162, -1, - 164, 165, -1, -1, 168, -1, -1, 1267, -1, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - -1, 163, 164, 165, -1, -1, -1, 169, 76, 77, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 3, 4, 5, 6, -1, 8, 9, 10, - 11, -1, -1, -1, -1, -1, -1, -1, -1, 107, - -1, -1, -1, -1, 112, 113, -1, 115, -1, -1, - -1, -1, 120, -1, 122, -1, -1, -1, -1, -1, - 1309, -1, -1, -1, -1, -1, -1, -1, -1, 50, - 51, -1, -1, 54, -1, 56, 57, 58, 59, -1, - -1, 62, 63, -1, -1, 66, 67, -1, -1, 70, - -1, -1, -1, -1, 75, 76, 77, -1, -1, -1, - 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 1369, 1370, 1371, 1372, -1, 1374, 1375, 108, -1, 110, - -1, 112, -1, -1, -1, -1, 117, -1, 119, 120, - 121, -1, -1, 124, 125, -1, -1, -1, 129, -1, - -1, 132, 133, 134, 135, 136, -1, -1, 139, -1, - 141, -1, -1, -1, 1444, -1, -1, -1, -1, -1, - -1, -1, -1, 154, -1, -1, 157, 158, 159, -1, - -1, 162, -1, 164, 165, -1, -1, 168, 3, 4, - 5, 6, -1, 8, 9, 10, 11, -1, 10, 11, - 12, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 16, - 17, 18, 19, 20, 21, 22, 23, -1, -1, -1, - -1, -1, -1, -1, -1, 50, 33, -1, -1, 54, + 164, 165, -1, -1, 168, -1, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, -1, 163, 164, + 165, -1, -1, -1, 169, 50, -1, -1, -1, 54, -1, 56, 57, 58, -1, -1, -1, 62, -1, 64, - 65, 66, 67, -1, -1, -1, -1, -1, -1, -1, - 75, 76, 77, -1, 76, 77, 81, -1, -1, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, - -1, -1, -1, 108, -1, 110, -1, 112, -1, -1, - 112, 113, 117, 115, 119, 120, 121, -1, 120, 124, - 122, -1, -1, -1, 129, -1, -1, 132, -1, -1, - -1, 136, 3, 4, 5, 6, 141, 8, 9, 10, - 11, 146, -1, -1, 146, -1, -1, -1, -1, 154, - -1, -1, 157, 158, 159, -1, -1, 162, -1, 164, - 165, -1, 149, 168, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, -1, 163, 164, 165, 50, - -1, -1, -1, 54, -1, 56, 57, 58, -1, -1, - -1, 62, -1, -1, -1, 66, 67, 10, 11, 12, - -1, -1, -1, -1, 75, 76, 77, -1, -1, -1, - 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - -1, -1, -1, -1, 47, -1, 49, 108, -1, 110, - -1, 112, -1, -1, -1, -1, 117, -1, 119, 120, - 121, -1, -1, 124, -1, -1, -1, -1, 129, -1, - -1, 132, -1, 76, 77, 136, 3, 4, 5, 6, - 141, 8, 9, 10, 11, -1, 10, 11, 12, -1, - -1, 15, -1, 154, -1, -1, 157, 158, 159, -1, - -1, 162, -1, 164, 165, 166, -1, 168, -1, 112, - 113, -1, 115, -1, -1, -1, -1, 120, -1, 122, - -1, -1, -1, 50, 51, -1, -1, 54, -1, 56, - 57, 58, -1, -1, -1, 62, -1, -1, -1, 66, - 67, -1, -1, 146, -1, -1, -1, -1, 75, 76, - 77, -1, 76, 77, 81, -1, -1, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, - -1, 108, -1, 110, -1, 112, -1, -1, 112, 113, - 117, 115, 119, 120, 121, -1, 120, 124, 122, -1, - -1, -1, 129, -1, -1, 132, -1, -1, -1, 136, - 3, 4, 5, 6, 141, 8, 9, 10, 11, -1, - 10, 11, 12, -1, -1, -1, -1, 154, -1, -1, - 157, 158, 159, -1, -1, 162, -1, 164, 165, -1, - -1, 168, -1, -1, -1, 16, 17, 18, 19, 20, - 21, 22, 23, -1, -1, -1, -1, 50, 51, -1, - -1, 54, 33, 56, 57, 58, -1, -1, -1, 62, - -1, -1, -1, 66, 67, -1, -1, -1, -1, -1, - -1, -1, 75, 76, 77, -1, 76, 77, 81, -1, - -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, - -1, -1, -1, -1, -1, 108, -1, 110, -1, 112, - -1, -1, 112, 113, 117, 115, 119, 120, 121, -1, - 120, 124, 122, -1, -1, -1, 129, -1, -1, 132, - -1, -1, -1, 136, 3, 4, 5, 6, 141, 8, - 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, - -1, 154, -1, -1, 157, 158, 159, -1, -1, 162, - -1, 164, 165, -1, -1, 168, -1, 148, -1, -1, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 50, 163, 164, 165, 54, -1, 56, 57, 58, - -1, -1, -1, 62, -1, -1, -1, 66, 67, -1, - -1, -1, -1, -1, -1, -1, 75, 76, 77, -1, - -1, -1, 81, -1, -1, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, -1, -1, -1, -1, -1, -1, -1, 108, - -1, 110, -1, 112, -1, -1, -1, -1, 117, -1, - 119, 120, 121, -1, -1, 124, -1, -1, -1, -1, - 129, -1, -1, 132, -1, -1, -1, 136, 3, 4, - 5, 6, 141, 8, 9, 10, 11, 146, -1, -1, - -1, -1, -1, -1, -1, 154, -1, -1, 157, 158, - 159, -1, -1, 162, -1, 164, 165, -1, -1, 168, - -1, -1, -1, 16, 17, 18, 19, 20, 21, 22, - 23, -1, -1, -1, -1, 50, -1, -1, -1, 54, - 33, 56, 57, 58, -1, -1, -1, 62, -1, -1, - -1, 66, 67, -1, -1, -1, -1, -1, -1, -1, + 65, 66, 67, -1, -1, -1, 17, -1, -1, -1, 75, 76, 77, -1, -1, -1, 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, -1, -1, -1, -1, - -1, -1, -1, 108, -1, 110, -1, 112, -1, -1, - -1, -1, 117, -1, 119, 120, 121, -1, -1, 124, - -1, -1, -1, -1, 129, -1, -1, 132, -1, -1, - -1, 136, 3, 4, 5, 6, 141, 8, 9, 10, - 11, -1, -1, -1, -1, -1, -1, -1, -1, 154, - -1, -1, 157, 158, 159, -1, -1, 162, -1, 164, - 165, 166, -1, 168, 147, -1, -1, -1, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 50, - 163, 164, 165, 54, -1, 56, 57, 58, -1, -1, - -1, 62, -1, -1, -1, 66, 67, -1, -1, -1, - -1, -1, -1, -1, 75, 76, 77, -1, -1, -1, - 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - -1, -1, -1, -1, -1, -1, -1, 108, -1, 110, - -1, 112, -1, -1, -1, -1, 117, -1, 119, 120, - 121, -1, -1, 124, -1, -1, -1, -1, 129, -1, - -1, 132, -1, -1, -1, 136, 3, 4, 5, 6, - 141, 8, 9, 10, 11, 146, -1, -1, -1, -1, - -1, -1, -1, 154, -1, -1, 157, 158, 159, -1, - -1, 162, -1, 164, 165, -1, -1, 168, -1, -1, - -1, 16, 17, 18, 19, 20, 21, 22, 23, -1, - -1, -1, -1, 50, -1, -1, -1, 54, 33, 56, - 57, 58, -1, -1, -1, 62, -1, -1, -1, 66, - 67, -1, -1, -1, -1, -1, -1, -1, 75, 76, - 77, -1, -1, -1, 81, -1, -1, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, -1, -1, -1, -1, -1, -1, - -1, 108, -1, 110, -1, 112, -1, -1, -1, -1, - 117, -1, 119, 120, 121, -1, -1, 124, -1, -1, - -1, -1, 129, -1, -1, 132, -1, -1, -1, 136, - 3, 4, 5, 6, 141, 8, 9, 10, 11, -1, - -1, -1, -1, -1, -1, -1, -1, 154, -1, -1, - 157, 158, 159, -1, -1, 162, -1, 164, 165, 166, - -1, 168, -1, -1, 149, -1, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 50, 163, 164, - 165, 54, -1, 56, 57, 58, -1, -1, -1, 62, - -1, -1, -1, 66, 67, -1, -1, -1, -1, -1, - -1, -1, 75, 76, 77, -1, -1, -1, 81, -1, - -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, -1, -1, - -1, -1, -1, -1, -1, 108, -1, 110, -1, 112, - -1, -1, -1, -1, 117, -1, 119, 120, 121, -1, - -1, 124, -1, -1, -1, -1, 129, -1, -1, 132, - -1, -1, -1, 136, 3, 4, 5, 6, 141, 8, - 9, 10, 11, 12, -1, -1, 15, -1, -1, -1, - -1, 154, -1, -1, 157, 158, 159, -1, -1, 162, - -1, 164, 165, -1, -1, 168, 16, 17, 18, 19, - 20, 21, 22, 23, -1, -1, -1, -1, 47, -1, - -1, 50, 51, 33, -1, 54, -1, 56, 57, 58, - 59, 60, -1, 62, 63, -1, -1, 66, 67, -1, - -1, 70, -1, -1, -1, -1, 75, 76, 77, -1, - -1, -1, -1, -1, -1, 84, -1, -1, -1, -1, - -1, 16, 17, 18, 19, 20, 21, 22, 23, -1, - -1, 100, -1, -1, -1, -1, -1, -1, 33, 108, - -1, 110, -1, 112, -1, -1, -1, 116, 117, -1, - 119, 120, 121, -1, -1, 124, 125, -1, -1, -1, - 129, -1, -1, 132, 133, 134, 135, 136, -1, -1, - 139, -1, 141, -1, 3, 4, 5, 6, -1, 8, - 9, 10, 11, 12, -1, 154, 15, -1, 157, 158, - -1, -1, -1, 162, -1, 164, -1, 147, -1, 168, - -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, -1, 163, 164, 165, 166, -1, 47, -1, - -1, 50, 51, -1, -1, 54, -1, 56, 57, 58, - 59, 60, -1, 62, 63, -1, -1, 66, 67, -1, - -1, 70, -1, -1, -1, -1, 75, 76, 77, -1, - -1, -1, -1, -1, -1, 84, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, -1, 163, 164, - 165, 100, -1, -1, -1, -1, -1, -1, -1, 108, - -1, 110, -1, 112, -1, -1, -1, 116, 117, -1, - 119, 120, 121, -1, -1, 124, 125, -1, -1, -1, - 129, -1, -1, 132, 133, 134, 135, 136, -1, -1, - 139, -1, 141, 3, 4, 5, 6, -1, 8, 9, - 10, -1, -1, -1, -1, 154, -1, -1, 157, 158, - -1, -1, -1, 162, -1, 164, -1, -1, -1, 168, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 18, - 19, 20, 21, 22, 23, -1, -1, -1, -1, -1, - 50, -1, -1, -1, 33, -1, -1, -1, -1, -1, - -1, -1, 62, -1, -1, -1, -1, 67, 17, 18, - 19, 20, 21, 22, 23, 75, 76, -1, -1, -1, - -1, 81, -1, -1, 33, 85, 86, 87, 88, 89, + 95, 96, 97, 98, 99, 100, 47, -1, -1, -1, + -1, -1, -1, 108, -1, 110, -1, 112, -1, 60, + 61, -1, 117, -1, 119, 120, 121, -1, -1, 124, + -1, -1, -1, -1, 129, 76, -1, 132, -1, -1, + -1, 136, -1, -1, -1, 1446, 141, 3, 4, 5, + 6, 146, 8, 9, 10, 11, -1, -1, -1, 154, + -1, -1, 157, 158, 159, 106, -1, 162, 109, 164, + 165, 112, -1, 168, -1, -1, -1, -1, 16, 17, + 18, 19, 20, 21, 22, 23, -1, 128, -1, -1, + -1, -1, -1, -1, 50, 33, -1, -1, 54, 140, + 56, 57, 58, -1, -1, -1, 62, -1, -1, -1, + 66, 67, -1, 154, -1, -1, -1, -1, -1, 75, + 76, 77, -1, -1, -1, 81, -1, -1, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, -1, -1, -1, -1, -1, + -1, -1, 108, -1, 110, -1, 112, -1, -1, -1, + -1, 117, -1, 119, 120, 121, -1, -1, 124, -1, + -1, -1, -1, 129, -1, -1, 132, -1, -1, -1, + 136, 3, 4, 5, 6, 141, 8, 9, 10, 11, + -1, 10, 11, 12, -1, -1, -1, -1, 154, -1, + -1, 157, 158, 159, -1, -1, 162, -1, 164, 165, + 166, -1, 168, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, -1, 163, 164, 165, 50, 51, + -1, 169, 54, -1, 56, 57, 58, -1, -1, -1, + 62, -1, -1, -1, 66, 67, -1, -1, -1, -1, + -1, -1, -1, 75, 76, 77, -1, 76, 77, 81, + -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, + -1, -1, -1, -1, -1, -1, 108, -1, 110, -1, + 112, -1, -1, 112, 113, 117, 115, 119, 120, 121, + -1, 120, 124, 122, -1, -1, -1, 129, -1, -1, + 132, -1, -1, -1, 136, 3, 4, 5, 6, 141, + 8, 9, 10, 11, -1, -1, -1, 146, -1, -1, + -1, -1, 154, -1, -1, 157, 158, 159, -1, -1, + 162, -1, 164, 165, -1, -1, 168, -1, -1, -1, + 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, + -1, -1, 50, 51, -1, -1, 54, 33, 56, 57, + 58, -1, -1, -1, 62, -1, -1, -1, 66, 67, + -1, -1, -1, -1, -1, -1, -1, 75, 76, 77, + -1, -1, -1, 81, -1, -1, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, -1, -1, -1, -1, -1, -1, -1, + 108, -1, 110, -1, 112, -1, -1, -1, -1, 117, + -1, 119, 120, 121, -1, -1, 124, -1, -1, -1, + -1, 129, -1, -1, 132, -1, -1, -1, 136, 3, + 4, 5, 6, 141, 8, 9, 10, 11, -1, 10, + 11, 12, -1, -1, 15, -1, 154, -1, -1, 157, + 158, 159, -1, -1, 162, -1, 164, 165, -1, -1, + 168, -1, -1, 149, -1, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 50, 163, 164, 165, + 54, -1, 56, 57, 58, -1, -1, -1, 62, -1, + -1, -1, 66, 67, -1, -1, -1, -1, -1, -1, + -1, 75, 76, 77, -1, 76, 77, 81, -1, -1, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, -1, -1, -1, + -1, -1, -1, -1, 108, -1, 110, -1, 112, -1, + -1, 112, 113, 117, 115, 119, 120, 121, -1, 120, + 124, 122, -1, -1, -1, 129, -1, -1, 132, -1, + -1, -1, 136, 3, 4, 5, 6, 141, 8, 9, + 10, 11, 146, 10, 11, 12, -1, -1, -1, -1, + 154, -1, -1, 157, 158, 159, -1, -1, 162, -1, + 164, 165, -1, -1, 168, -1, -1, -1, 16, 17, + 18, 19, 20, 21, 22, 23, -1, -1, -1, -1, + 50, -1, -1, -1, 54, 33, 56, 57, 58, -1, + -1, -1, 62, -1, -1, -1, 66, 67, -1, -1, + -1, -1, -1, -1, -1, 75, 76, 77, -1, 76, + 77, 81, -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - -1, 16, 17, 18, 19, 20, 21, 22, 23, -1, - 110, -1, 112, -1, -1, -1, -1, 117, 33, -1, - -1, 121, -1, -1, 124, -1, -1, -1, -1, 129, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 100, -1, -1, -1, -1, -1, -1, -1, 108, -1, + 110, -1, 112, -1, -1, 112, 113, 117, 115, 119, + 120, 121, -1, 120, 124, 122, -1, -1, -1, 129, + -1, -1, 132, -1, -1, -1, 136, 3, 4, 5, + 6, 141, 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, -1, -1, 154, -1, -1, 157, 158, 159, - 6, -1, 162, -1, 164, 165, -1, -1, 168, -1, - 16, 17, 18, 19, 20, 21, 22, 23, 157, 158, - 159, 160, 161, -1, 163, 164, 165, 33, -1, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, -1, -1, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, -1, 163, 164, 165, -1, -1, 65, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 10, 11, -1, -1, -1, 151, 152, 153, 154, + -1, -1, 162, -1, 164, 165, 166, -1, 168, -1, + 148, -1, -1, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 50, 163, 164, 165, 54, -1, + 56, 57, 58, -1, -1, -1, 62, -1, -1, -1, + 66, 67, -1, -1, -1, -1, -1, -1, -1, 75, + 76, 77, -1, -1, -1, 81, -1, -1, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, -1, -1, -1, -1, -1, + -1, -1, 108, -1, 110, -1, 112, -1, -1, -1, + -1, 117, -1, 119, 120, 121, -1, -1, 124, -1, + -1, -1, -1, 129, -1, -1, 132, -1, -1, -1, + 136, 3, 4, 5, 6, 141, 8, 9, 10, 11, + 146, -1, -1, -1, -1, -1, -1, -1, 154, -1, + -1, 157, 158, 159, -1, -1, 162, -1, 164, 165, + -1, -1, 168, -1, -1, -1, 16, 17, 18, 19, + 20, 21, 22, 23, -1, -1, -1, -1, 50, -1, + -1, -1, 54, 33, 56, 57, 58, -1, -1, -1, + 62, -1, -1, -1, 66, 67, -1, -1, -1, -1, + -1, -1, -1, 75, 76, 77, -1, -1, -1, 81, + -1, -1, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, -1, + -1, -1, -1, -1, -1, -1, 108, -1, 110, -1, + 112, -1, -1, -1, -1, 117, -1, 119, 120, 121, + -1, -1, 124, -1, -1, -1, -1, 129, -1, -1, + 132, -1, -1, -1, 136, 3, 4, 5, 6, 141, + 8, 9, 10, 11, -1, -1, -1, -1, -1, -1, + -1, -1, 154, -1, -1, 157, 158, 159, -1, -1, + 162, -1, 164, 165, 166, -1, 168, 147, -1, -1, + -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 50, 163, 164, 165, 54, -1, 56, 57, + 58, -1, -1, -1, 62, -1, -1, -1, 66, 67, + -1, -1, -1, -1, -1, -1, -1, 75, 76, 77, + -1, -1, -1, 81, -1, -1, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, -1, -1, -1, -1, -1, -1, -1, + 108, -1, 110, -1, 112, -1, -1, -1, -1, 117, + -1, 119, 120, 121, -1, -1, 124, -1, -1, -1, + -1, 129, -1, -1, 132, -1, -1, -1, 136, 3, + 4, 5, 6, 141, 8, 9, 10, 11, 12, -1, + -1, 15, -1, -1, -1, -1, 154, -1, -1, 157, + 158, 159, -1, -1, 162, -1, 164, 165, -1, -1, + 168, 16, 17, 18, 19, 20, 21, 22, 23, -1, + -1, -1, -1, 47, -1, -1, 50, 51, 33, -1, + 54, -1, 56, 57, 58, 59, 60, -1, 62, 63, + -1, -1, 66, 67, -1, -1, 70, -1, -1, -1, + -1, 75, 76, 77, -1, -1, -1, -1, -1, -1, + 84, -1, -1, -1, -1, -1, -1, -1, -1, 10, + 11, 12, -1, -1, -1, -1, 100, -1, -1, -1, + -1, -1, -1, -1, 108, -1, 110, -1, 112, -1, + -1, -1, 116, 117, -1, 119, 120, 121, -1, -1, + 124, 125, -1, -1, -1, 129, -1, -1, 132, 133, + 134, 135, 136, -1, -1, 139, -1, 141, 3, 4, + 5, 6, -1, 8, 9, 10, -1, -1, -1, -1, + 154, -1, -1, 157, 158, 76, 77, -1, 162, -1, + 164, -1, 147, -1, 168, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, -1, 163, 164, - 165, 166, 16, 17, 18, 19, 20, 21, 22, 23, - -1, -1, 108, -1, -1, -1, -1, -1, -1, 33, - -1, -1, 51, -1, -1, 54, -1, 56, 57, 58, - 59, -1, -1, -1, 63, -1, -1, 66, -1, -1, - -1, 70, -1, -1, -1, -1, -1, -1, 77, -1, - -1, 147, -1, -1, 150, 84, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, -1, 164, 165, - -1, 100, 168, -1, 10, 11, -1, -1, -1, -1, - -1, -1, 111, -1, -1, -1, -1, -1, -1, -1, - 119, 120, -1, -1, -1, -1, 125, -1, -1, -1, - -1, -1, -1, -1, 133, 134, 135, 136, -1, -1, - 139, -1, 141, -1, -1, 51, -1, 146, 54, -1, - 56, 57, 58, 59, -1, -1, -1, 63, -1, -1, - 66, -1, -1, 162, 70, -1, 17, 151, 152, 153, - 154, 77, -1, 157, 158, 159, 160, 161, 84, 163, - 164, 165, 33, -1, -1, -1, -1, -1, -1, -1, - 10, 11, -1, -1, 100, -1, 47, -1, -1, -1, - -1, -1, -1, -1, -1, 111, -1, -1, -1, 60, - 61, -1, -1, 119, 120, -1, -1, -1, -1, 125, - -1, -1, -1, -1, -1, 76, -1, 133, 134, 135, - 136, 51, -1, 139, 54, 141, 56, 57, 58, 59, - -1, -1, -1, 63, -1, -1, 66, -1, -1, -1, - 70, -1, -1, -1, -1, 106, 162, 77, 109, -1, - -1, 112, -1, -1, 84, 16, 17, 18, 19, 20, - 21, 22, 23, -1, -1, -1, -1, 128, -1, -1, - 100, -1, 33, -1, -1, -1, -1, -1, -1, 140, - -1, 111, -1, -1, -1, -1, -1, -1, -1, 119, - 120, -1, -1, 154, -1, 125, -1, -1, -1, -1, - -1, -1, -1, 133, 134, 135, 136, -1, -1, 139, - -1, 141, 16, 17, 18, 19, 20, 21, 22, 23, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, - -1, -1, 162, 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, + 165, 166, -1, -1, -1, 50, -1, -1, -1, -1, + -1, 112, 113, 114, 115, -1, -1, 62, -1, 120, + -1, 122, 67, 17, 18, 19, 20, 21, 22, 23, + 75, 76, 133, -1, -1, -1, 81, 138, -1, 33, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, -1, 16, 17, 18, 19, + 20, 21, 22, 23, -1, 110, -1, 112, -1, -1, + -1, -1, 117, 33, -1, -1, 121, -1, -1, 124, + -1, -1, -1, -1, 129, -1, -1, -1, -1, -1, + -1, 54, -1, 56, 57, 58, -1, -1, -1, -1, + -1, -1, -1, 66, -1, -1, -1, -1, -1, 154, + -1, -1, 157, 158, 159, 6, -1, 162, -1, 164, + 165, 84, -1, 168, -1, 16, 17, 18, 19, 20, + 21, 22, 23, -1, -1, -1, -1, 100, -1, -1, + -1, -1, 33, -1, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 119, 120, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, -1, 163, + 164, 165, -1, 136, 65, -1, -1, -1, 141, -1, + -1, 10, 11, 12, -1, -1, 10, 11, -1, -1, + -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, -1, 163, 164, 165, 166, 16, 17, 18, + 19, 20, 21, 22, 23, -1, -1, 108, -1, -1, + -1, -1, -1, -1, 33, -1, -1, 51, -1, -1, + 54, -1, 56, 57, 58, 59, -1, -1, -1, 63, + -1, -1, 66, -1, -1, -1, 70, 76, 77, -1, + -1, -1, -1, 77, -1, -1, 147, -1, -1, 150, + 84, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, -1, 164, 165, -1, 100, 168, -1, 10, + 11, -1, -1, 112, 113, -1, 115, 111, -1, -1, + -1, 120, -1, 122, -1, 119, 120, -1, -1, -1, + -1, 125, -1, -1, 133, -1, -1, -1, -1, 133, + 134, 135, 136, -1, -1, 139, -1, 141, -1, -1, + 51, -1, 146, 54, -1, 56, 57, 58, 59, -1, + -1, -1, 63, -1, -1, 66, -1, -1, 162, 70, + -1, -1, 151, 152, 153, 154, 77, -1, 157, 158, + 159, 160, 161, 84, 163, 164, 165, -1, -1, -1, + -1, -1, -1, -1, -1, 10, 11, -1, -1, 100, + -1, 54, -1, 56, 57, 58, -1, -1, -1, -1, + 111, -1, -1, 66, -1, -1, -1, -1, 119, 120, + -1, -1, -1, -1, 125, -1, -1, -1, -1, -1, + -1, 84, 133, 134, 135, 136, 51, -1, 139, 54, + 141, 56, 57, 58, 59, -1, -1, 100, 63, -1, + -1, 66, 11, -1, -1, 70, -1, -1, -1, -1, + -1, 162, 77, -1, -1, -1, 119, 120, -1, 84, + 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, + -1, -1, -1, 136, -1, 100, -1, 33, 141, -1, + -1, -1, -1, -1, -1, 54, 111, 56, 57, 58, + -1, -1, -1, -1, 119, 120, -1, -1, -1, -1, + 125, 164, -1, 54, -1, 56, 57, 58, 133, 134, + 135, 136, -1, -1, 139, 84, 141, 16, 17, 18, + 19, 20, 21, 22, 23, -1, -1, -1, -1, -1, + -1, 100, -1, 84, 33, -1, -1, 162, 16, 17, + 18, 19, 20, 21, 22, 23, -1, -1, -1, 100, + 119, 120, -1, -1, -1, 33, 16, 17, 18, 19, + 20, 21, 22, 23, -1, -1, -1, 136, 119, 120, + -1, -1, 141, 33, 16, 17, 18, 19, 20, 21, + 22, 23, -1, -1, -1, 136, -1, -1, -1, -1, + 141, 33, -1, -1, -1, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, -1, 163, 164, 165, + 166, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, -1, -1, -1, -1, -1, -1, -1, 33, -1, -1, -1, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, -1, 163, 164, 165, 166, 16, 17, 18, 19, - 20, 21, 22, 23, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 33, 16, 17, 18, 19, 20, 21, - 22, 23, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 33, -1, -1, -1, -1, -1, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, -1, 163, - 164, 165, 166, -1, -1, -1, -1, -1, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, -1, - 163, 164, 165, 166, -1, -1, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, -1, 163, 164, - 165, 166, -1, -1, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, -1, 163, 164, 165, 166, - -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, -1, 163, 164, 165, 166, -1, -1, + -1, -1, -1, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, -1, 163, 164, 165, 166, -1, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, -1, 163, 164, 165, 166, -1, -1, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - -1, 163, 164, 165, 47, -1, 49, -1, -1, 52, - 53, -1, -1, -1, -1, -1, -1, 60, 61, -1, - -1, -1, -1, -1, -1, -1, 69, -1, 71, 72, - 73, 74, -1, -1, -1, 78, -1, -1, -1, -1, - 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 102, - 103, 104, 105, 106, 107, -1, -1, -1, -1, -1, - 113, 114, 115, 116, -1, -1, -1, -1, -1, 122, - 123, 11, 12, 126, 127, 15, -1, 17, 131, -1, - -1, -1, -1, -1, 137, 138, -1, 140, 17, 18, - 19, 20, 21, 22, 23, 148, -1, -1, -1, -1, - -1, -1, -1, -1, 33, -1, -1, 47, -1, -1, - -1, 51, -1, -1, 54, -1, 56, 57, 58, 59, - 60, -1, -1, 63, -1, -1, 66, -1, -1, -1, - 70, 18, 19, 20, 21, 22, 23, 77, -1, -1, - -1, -1, -1, -1, 84, -1, 33, 18, 19, 20, + -1, 163, 164, 165, 166, 16, 17, 18, 19, 20, 21, 22, 23, -1, -1, -1, -1, -1, -1, -1, - 100, -1, 33, 18, 19, 20, 21, 22, 23, -1, - -1, -1, -1, -1, -1, -1, 116, -1, 33, 119, - 120, -1, -1, -1, -1, 125, -1, 18, 19, 20, - 21, 22, 23, 133, 134, 135, 136, -1, -1, 139, - -1, 141, 33, 18, 19, 20, 21, 22, 23, -1, - -1, -1, -1, -1, 154, -1, -1, -1, 33, 159, - -1, -1, -1, 152, 153, 154, -1, -1, 157, 158, - 159, 160, 161, -1, 163, 164, 165, 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, 153, 154, 155, 156, - 157, 158, 159, 160, 161, -1, 163, 164, 165, -1, - -1, -1, -1, 154, 155, 156, 157, 158, 159, 160, - 161, -1, 163, 164, 165, -1, -1, 152, 153, 154, - -1, -1, 157, 158, 159, 160, 161, -1, 163, 164, - 165, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 6, -1, -1, -1, 155, 156, 157, 158, 159, 160, - 161, -1, 163, 164, 165, -1, -1, -1, 153, 154, - -1, -1, 157, 158, 159, 160, 161, 6, 163, 164, - 165, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 47, -1, 49, -1, -1, -1, 53, -1, -1, - -1, -1, -1, 154, 60, 61, 157, 158, 159, 160, - 161, -1, 163, 164, 165, 71, 72, 73, 47, -1, - 49, -1, -1, -1, 53, -1, -1, 83, -1, -1, - -1, 60, 61, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 71, 72, 73, -1, -1, -1, -1, 54, - 106, 56, 57, 58, 83, -1, -1, -1, -1, -1, - 116, -1, -1, -1, -1, -1, 122, -1, -1, -1, - 126, 127, 10, 11, 12, -1, -1, 106, -1, 84, - -1, -1, 138, -1, 140, -1, -1, 116, -1, -1, - -1, -1, -1, 122, -1, 100, -1, -1, 127, -1, - -1, 10, 11, 12, -1, -1, -1, -1, -1, 138, - -1, 140, -1, 51, 119, 120, 54, -1, 56, 57, - 58, 59, 60, -1, -1, 63, -1, -1, 66, -1, - -1, 136, 70, -1, -1, -1, 141, -1, -1, 77, - -1, -1, 51, -1, -1, 54, 84, 56, 57, 58, - 59, 60, -1, -1, 63, -1, -1, 66, -1, 164, - -1, 70, 100, -1, -1, -1, -1, -1, 77, 54, - -1, 56, 57, 58, -1, 84, -1, -1, -1, -1, - -1, 119, 120, -1, -1, -1, -1, 125, -1, -1, - -1, 100, 10, 11, 12, 133, 134, 135, 136, 84, - -1, 139, -1, 141, -1, -1, -1, -1, -1, -1, - 119, 120, -1, -1, -1, 100, 125, -1, -1, -1, - -1, 10, 11, 12, 133, 134, 135, 136, -1, -1, - 139, -1, 141, 51, 119, 120, 54, -1, 56, 57, - 58, 59, 60, -1, -1, 63, -1, -1, 66, -1, - -1, 136, 70, -1, -1, -1, 141, -1, -1, 77, - -1, -1, -1, -1, -1, 54, 84, 56, 57, 58, - 59, 60, -1, -1, -1, -1, -1, 66, -1, 164, - -1, -1, 100, -1, -1, -1, -1, -1, 77, 10, - 11, 12, -1, -1, -1, 84, -1, -1, -1, -1, - -1, 119, 120, -1, -1, -1, -1, 125, -1, -1, - -1, 100, -1, -1, -1, 133, 134, 135, 136, -1, - -1, 139, -1, 141, -1, -1, -1, -1, 11, 12, - 119, 120, 15, 54, -1, 56, 57, 58, -1, -1, - -1, -1, -1, -1, 133, 66, -1, 136, -1, -1, - 139, -1, 141, -1, -1, -1, 77, 11, 12, -1, - -1, 15, -1, 84, 47, -1, -1, -1, 51, -1, - -1, 54, -1, 56, 57, 58, 59, 60, -1, 100, - 63, -1, -1, 66, -1, -1, -1, 70, -1, -1, - -1, -1, -1, 47, 77, -1, -1, 51, 119, 120, - 54, 84, 56, 57, 58, 59, 60, -1, -1, 63, - -1, -1, 66, -1, -1, 136, 70, 100, 139, -1, - 141, -1, -1, 77, 54, -1, 56, 57, 58, -1, - 84, -1, -1, 116, -1, -1, 119, 120, -1, -1, - -1, -1, 125, -1, -1, -1, 100, -1, 11, 12, - 133, 134, 135, 136, 84, -1, 139, -1, 141, -1, - -1, -1, 116, -1, -1, 119, 120, -1, -1, -1, - 100, 125, -1, -1, -1, -1, -1, 11, 12, 133, - 134, 135, 136, -1, 47, 139, -1, 141, 51, 119, - 120, 54, -1, 56, 57, 58, 59, 60, -1, -1, - 63, -1, -1, 66, -1, -1, 136, 70, -1, -1, - -1, 141, -1, -1, 77, -1, -1, 51, -1, -1, - 54, 84, 56, 57, 58, 59, 60, -1, -1, 63, - -1, -1, 66, -1, 164, -1, 70, 100, -1, -1, - -1, -1, -1, 77, -1, -1, 10, 11, 12, -1, - 84, -1, -1, 116, -1, -1, 119, 120, -1, -1, - -1, -1, 125, 11, 12, -1, 100, -1, -1, -1, - 133, 134, 135, 136, -1, -1, 139, -1, 141, -1, - -1, -1, -1, -1, -1, 119, 120, 11, 12, -1, - -1, 125, -1, -1, -1, -1, -1, -1, -1, 133, - 134, 135, 136, 51, -1, 139, 54, 141, 56, 57, - 58, 59, 76, 77, -1, 63, -1, -1, 66, -1, - -1, -1, 70, -1, -1, -1, -1, 51, -1, 77, - 54, -1, 56, 57, 58, 59, 84, -1, -1, 63, - -1, -1, 66, -1, -1, -1, 70, -1, 112, 113, - -1, 115, 100, 77, -1, -1, 120, -1, 122, -1, - 84, -1, -1, -1, -1, -1, -1, -1, 116, 133, - -1, 119, 120, 11, 138, -1, 100, 125, -1, -1, - -1, -1, -1, -1, -1, 133, 134, 135, 136, -1, - -1, 139, -1, 141, -1, 119, 120, -1, -1, -1, - -1, 125, 11, -1, -1, -1, -1, -1, -1, 133, - 134, 135, 136, 51, -1, 139, 54, 141, 56, 57, - 58, 59, 60, -1, -1, 63, -1, -1, 66, -1, - -1, -1, 70, -1, -1, -1, -1, -1, -1, 77, - -1, -1, 51, -1, -1, 54, 84, 56, 57, 58, - 59, 60, -1, -1, 63, -1, -1, 66, -1, -1, - -1, 70, 100, -1, -1, -1, -1, -1, 77, -1, - -1, 10, 11, 12, -1, 84, -1, -1, -1, -1, - -1, 119, 120, -1, -1, -1, -1, 125, 11, -1, - -1, 100, -1, -1, -1, 133, 134, 135, 136, -1, - -1, 139, -1, 141, -1, -1, -1, -1, -1, -1, - 119, 120, 11, -1, -1, -1, 125, -1, -1, -1, - 10, 11, 12, -1, 133, 134, 135, 136, 51, -1, - 139, 54, 141, 56, 57, 58, 59, 76, 77, -1, - 63, -1, -1, 66, -1, -1, -1, 70, -1, -1, - -1, -1, 51, -1, 77, 54, -1, 56, 57, 58, - 59, 84, -1, -1, 63, -1, -1, 66, -1, -1, - -1, 70, -1, 112, 113, -1, 115, 100, 77, -1, - -1, 120, -1, 122, -1, 84, 76, 77, -1, -1, - -1, -1, -1, -1, 133, -1, 119, 120, -1, 138, - -1, 100, 125, -1, -1, -1, -1, -1, -1, -1, - 133, 134, 135, 136, -1, -1, 139, -1, 141, -1, - 119, 120, 112, 113, -1, 115, 125, -1, -1, -1, - 120, -1, 122, -1, 133, 134, 135, 136, -1, 47, - 139, 49, 141, 133, 52, 53, -1, -1, 138, -1, - -1, -1, 60, 61, -1, -1, -1, -1, -1, -1, - -1, 69, -1, 71, 72, 73, 74, -1, -1, -1, - 78, -1, -1, -1, -1, 83, -1, -1, -1, -1, + -1, -1, 33, -1, -1, -1, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, -1, 163, 164, + 165, 166, 149, -1, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, -1, 163, 164, 165, 16, + 17, 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, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, + -1, -1, -1, -1, -1, -1, -1, 17, 18, 19, + 20, 21, 22, 23, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 33, -1, -1, -1, -1, -1, -1, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, -1, 163, 164, 165, 47, -1, 49, -1, -1, + 52, 53, -1, -1, -1, -1, -1, -1, 60, 61, + -1, -1, -1, -1, -1, -1, -1, 69, -1, 71, + 72, 73, 74, -1, -1, -1, 78, -1, -1, -1, + -1, 83, -1, -1, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, -1, 163, 164, 165, -1, + 102, 103, 104, 105, 106, 107, -1, -1, -1, -1, + -1, 113, 114, 115, 116, -1, -1, -1, -1, -1, + 122, 123, 11, 12, 126, 127, 15, -1, 17, 131, + -1, -1, -1, -1, -1, 137, 138, -1, 140, -1, + -1, -1, 152, 153, 154, -1, 148, 157, 158, 159, + 160, 161, -1, 163, 164, 165, -1, -1, 47, -1, + -1, -1, 51, -1, -1, 54, -1, 56, 57, 58, + 59, 60, -1, -1, 63, -1, -1, 66, -1, -1, + -1, 70, 18, 19, 20, 21, 22, 23, 77, -1, + -1, -1, -1, -1, -1, 84, -1, 33, 18, 19, + 20, 21, 22, 23, -1, -1, -1, -1, -1, -1, + -1, 100, -1, 33, 18, 19, 20, 21, 22, 23, + -1, 54, -1, 56, 57, 58, -1, 116, -1, 33, + 119, 120, -1, -1, -1, -1, 125, -1, 18, 19, + 20, 21, 22, 23, 133, 134, 135, 136, -1, -1, + 139, 84, 141, 33, 18, 19, 20, 21, 22, 23, + -1, -1, -1, -1, -1, 154, -1, 100, -1, 33, + 159, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 119, 120, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 136, -1, -1, -1, -1, 141, 10, + 11, 12, -1, -1, -1, -1, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, -1, 163, 164, 165, + -1, 164, 152, 153, 154, -1, -1, 157, 158, 159, + 160, 161, -1, 163, 164, 165, 47, -1, 49, 153, + 154, -1, -1, 157, 158, 159, 160, 161, -1, 163, + 164, 165, 6, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 154, 76, 77, 157, 158, 159, + 160, 161, -1, 163, 164, 165, -1, -1, -1, 6, + -1, -1, -1, 157, 158, 159, 160, 161, -1, 163, + 164, 165, -1, 47, -1, 49, -1, -1, -1, 53, + -1, 112, 113, -1, 115, -1, 60, 61, -1, 120, + -1, 122, -1, -1, -1, -1, -1, 71, 72, 73, + 47, -1, 49, -1, -1, -1, 53, -1, -1, 83, + 10, 11, 12, 60, 61, 146, -1, -1, -1, -1, + -1, -1, -1, -1, 71, 72, 73, -1, -1, -1, + -1, -1, 106, -1, -1, -1, 83, -1, -1, -1, + -1, -1, 116, -1, -1, -1, -1, 47, 122, 49, + -1, -1, 126, 127, 10, 11, 12, -1, -1, 106, + -1, -1, -1, -1, 138, -1, 140, -1, -1, 116, + -1, -1, -1, -1, -1, 122, 76, 77, -1, -1, + 127, -1, -1, 10, 11, 12, -1, -1, -1, -1, + -1, 138, -1, 140, -1, 51, -1, -1, 54, -1, + 56, 57, 58, 59, 60, -1, -1, 63, -1, -1, + 66, -1, 112, 113, 70, 115, -1, -1, -1, -1, + 120, 77, 122, -1, 51, -1, -1, 54, 84, 56, + 57, 58, 59, 60, -1, -1, 63, -1, -1, 66, + -1, -1, -1, 70, 100, -1, -1, -1, -1, -1, + 77, 54, -1, 56, 57, 58, -1, 84, -1, -1, + -1, -1, -1, 119, 120, -1, -1, -1, -1, 125, + -1, -1, -1, 100, 10, 11, 12, 133, 134, 135, + 136, 84, -1, 139, -1, 141, -1, -1, -1, -1, + -1, -1, 119, 120, -1, -1, -1, 100, 125, -1, + -1, -1, -1, 10, 11, 12, 133, 134, 135, 136, + -1, -1, 139, -1, 141, 51, 119, 120, 54, -1, + 56, 57, 58, 59, 60, -1, -1, 63, -1, -1, + 66, -1, -1, 136, 70, -1, -1, -1, 141, -1, + -1, 77, -1, -1, -1, -1, -1, 54, 84, 56, + 57, 58, 59, 60, -1, -1, -1, -1, -1, 66, + -1, 164, -1, -1, 100, -1, -1, -1, -1, -1, + 77, 10, 11, 12, -1, -1, -1, 84, -1, -1, + -1, -1, -1, 119, 120, -1, -1, -1, -1, 125, + -1, -1, -1, 100, -1, -1, -1, 133, 134, 135, + 136, -1, -1, 139, -1, 141, -1, -1, -1, -1, + 11, 12, 119, 120, 15, 54, -1, 56, 57, 58, + -1, -1, -1, -1, -1, -1, 133, 66, -1, 136, + -1, -1, 139, -1, 141, -1, -1, -1, 77, 11, + 12, -1, -1, 15, -1, 84, 47, -1, -1, -1, + 51, -1, -1, 54, -1, 56, 57, 58, 59, 60, + -1, 100, 63, -1, -1, 66, -1, -1, -1, 70, + -1, -1, -1, -1, -1, 47, 77, -1, -1, 51, + 119, 120, 54, 84, 56, 57, 58, 59, 60, -1, + -1, 63, -1, -1, 66, -1, -1, 136, 70, 100, + 139, -1, 141, -1, -1, 77, 54, -1, 56, 57, + 58, -1, 84, -1, -1, 116, -1, -1, 119, 120, + -1, -1, -1, -1, 125, -1, -1, -1, 100, -1, + 11, 12, 133, 134, 135, 136, 84, -1, 139, -1, + 141, -1, -1, -1, 116, -1, -1, 119, 120, -1, + -1, -1, 100, 125, 10, 11, 12, -1, -1, 11, + 12, 133, 134, 135, 136, -1, 47, 139, -1, 141, + 51, 119, 120, 54, -1, 56, 57, 58, 59, 60, + -1, -1, 63, -1, -1, 66, -1, -1, 136, 70, + -1, -1, -1, 141, -1, -1, 77, -1, -1, 51, + -1, -1, 54, 84, 56, 57, 58, 59, 60, -1, + -1, 63, -1, -1, 66, -1, 164, -1, 70, 100, + 76, 77, -1, -1, -1, 77, -1, -1, 10, 11, + 12, -1, 84, -1, -1, 116, -1, -1, 119, 120, + -1, -1, -1, -1, 125, 11, 12, -1, 100, -1, + -1, 107, 133, 134, 135, 136, 112, 113, 139, 115, + 141, -1, -1, -1, 120, -1, 122, 119, 120, 11, + 12, -1, -1, 125, -1, -1, -1, -1, -1, -1, + -1, 133, 134, 135, 136, 51, -1, 139, 54, 141, + 56, 57, 58, 59, 76, 77, -1, 63, -1, -1, + 66, -1, -1, -1, 70, -1, -1, -1, -1, 51, + -1, 77, 54, -1, 56, 57, 58, 59, 84, -1, + -1, 63, -1, -1, 66, -1, -1, -1, 70, -1, + 112, 113, -1, 115, 100, 77, -1, -1, 120, -1, + 122, -1, 84, -1, -1, -1, -1, -1, -1, -1, + 116, 133, -1, 119, 120, 11, 138, -1, 100, 125, + -1, -1, -1, -1, -1, -1, -1, 133, 134, 135, + 136, -1, -1, 139, -1, 141, -1, 119, 120, -1, + -1, -1, -1, 125, 11, -1, -1, -1, -1, -1, + -1, 133, 134, 135, 136, 51, -1, 139, 54, 141, + 56, 57, 58, 59, 60, -1, -1, 63, -1, -1, + 66, -1, -1, -1, 70, -1, -1, -1, -1, -1, + -1, 77, -1, -1, 51, -1, -1, 54, 84, 56, + 57, 58, 59, 60, -1, -1, 63, -1, -1, 66, + -1, -1, -1, 70, 100, -1, -1, -1, -1, -1, + 77, -1, -1, 10, 11, 12, -1, 84, -1, -1, + -1, -1, -1, 119, 120, -1, -1, -1, -1, 125, + 11, -1, -1, 100, -1, -1, -1, 133, 134, 135, + 136, -1, -1, 139, -1, 141, -1, -1, -1, -1, + -1, -1, 119, 120, 11, -1, -1, -1, 125, -1, + -1, -1, 10, 11, 12, -1, 133, 134, 135, 136, + 51, -1, 139, 54, 141, 56, 57, 58, 59, 76, + 77, -1, 63, -1, -1, 66, -1, -1, -1, 70, + -1, -1, -1, -1, 51, -1, 77, 54, -1, 56, + 57, 58, 59, 84, -1, -1, 63, -1, -1, 66, + -1, -1, -1, 70, -1, 112, 113, -1, 115, 100, + 77, -1, -1, 120, -1, 122, -1, 84, 76, 77, + -1, -1, -1, -1, -1, -1, 133, -1, 119, 120, + -1, 138, -1, 100, 125, -1, -1, -1, -1, -1, + -1, -1, 133, 134, 135, 136, -1, -1, 139, -1, + 141, -1, 119, 120, 112, 113, -1, 115, 125, -1, + -1, -1, 120, -1, 122, -1, 133, 134, 135, 136, + -1, 47, 139, 49, 141, 133, 52, 53, -1, -1, + 138, -1, -1, -1, 60, 61, -1, -1, -1, -1, + -1, -1, -1, 69, -1, 71, 72, 73, 74, -1, + -1, -1, 78, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 102, 103, 104, 105, 106, 107, - -1, -1, -1, -1, -1, 113, 114, 115, 116, -1, - -1, 47, -1, 49, 122, 123, 52, 53, 126, 127, - -1, -1, -1, 131, 60, 61, -1, -1, -1, 137, - 138, -1, 140, 69, -1, 71, 72, 73, 74, -1, - 148, -1, 78, -1, -1, -1, -1, 83, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 167, -1, -1, -1, -1, -1, -1, 102, 103, 104, 105, 106, 107, -1, -1, -1, -1, -1, 113, 114, 115, 116, -1, -1, 47, -1, 49, 122, 123, 52, 53, @@ -3348,42 +2825,45 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, 113, 114, 115, 116, -1, -1, 47, -1, 49, 122, 123, 52, 53, 126, 127, -1, -1, -1, 131, 60, 61, -1, -1, -1, 137, - 138, -1, 140, 69, -1, 71, 72, 73, 74, 47, - 148, 49, 78, -1, -1, 53, -1, 83, -1, -1, - -1, -1, 60, 61, -1, -1, -1, -1, -1, 167, - -1, -1, -1, 71, 72, 73, 102, 103, 104, 105, - 106, 107, -1, -1, -1, 83, -1, 113, 114, 115, - 116, -1, -1, -1, -1, -1, 122, 123, -1, -1, - 126, 127, -1, -1, -1, 131, -1, -1, 106, -1, - -1, 137, 138, -1, 140, -1, -1, -1, 116, -1, - -1, -1, 148, -1, 122, -1, -1, -1, -1, 127, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 137, - 138, 167, 140, -1, -1, 47, -1, 49, -1, -1, - 52, 53, -1, -1, -1, -1, -1, 155, 60, 61, - -1, -1, -1, -1, -1, -1, -1, 69, -1, 71, - 72, 73, 74, 47, -1, 49, 78, -1, -1, 53, - -1, 83, -1, -1, -1, -1, 60, 61, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 71, 72, 73, - 102, 103, 104, 105, 106, 107, -1, -1, -1, 83, - -1, 113, 114, 115, 116, -1, -1, -1, -1, -1, - 122, 123, -1, -1, 126, 127, -1, -1, -1, 131, - -1, 47, 106, 49, -1, 137, 138, 53, 140, -1, - -1, -1, 116, -1, 60, 61, -1, -1, 122, -1, - -1, -1, 126, 127, -1, 71, 72, 73, -1, 47, - -1, 49, -1, 137, 138, 53, 140, 83, -1, -1, - -1, -1, 60, 61, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 71, 72, 73, -1, -1, -1, -1, - 106, 107, -1, -1, -1, 83, -1, -1, -1, -1, - 116, -1, -1, -1, -1, -1, 122, -1, -1, -1, - -1, 127, -1, -1, -1, -1, -1, -1, 106, -1, - -1, -1, 138, -1, 140, -1, -1, -1, 116, -1, - -1, -1, -1, -1, 122, -1, -1, -1, -1, 127, + 138, -1, 140, 69, -1, 71, 72, 73, 74, -1, + 148, -1, 78, -1, -1, -1, -1, 83, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 167, + -1, -1, -1, -1, -1, -1, 102, 103, 104, 105, + 106, 107, -1, -1, -1, -1, -1, 113, 114, 115, + 116, -1, -1, 47, -1, 49, 122, 123, 52, 53, + 126, 127, -1, -1, -1, 131, 60, 61, -1, -1, + -1, 137, 138, -1, 140, 69, -1, 71, 72, 73, + 74, -1, 148, -1, 78, -1, -1, -1, -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 138, -1, 140 + -1, 167, -1, -1, -1, -1, -1, -1, 102, 103, + 104, 105, 106, 107, -1, -1, -1, -1, -1, 113, + 114, 115, 116, -1, -1, 47, -1, 49, 122, 123, + -1, 53, 126, 127, 47, -1, 49, 131, 60, 61, + 53, -1, -1, 137, 138, -1, 140, 60, 61, 71, + 72, 73, -1, -1, 148, -1, 78, -1, 71, 72, + 73, 83, -1, -1, -1, 78, -1, -1, -1, -1, + 83, -1, -1, 167, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 106, -1, -1, -1, -1, -1, + -1, -1, -1, 106, 116, -1, -1, -1, -1, -1, + 122, -1, -1, 116, -1, 127, -1, -1, -1, 122, + -1, -1, -1, 126, 127, 137, 138, 47, 140, 49, + -1, -1, 52, 53, 137, 138, -1, 140, -1, -1, + 60, 61, -1, 155, -1, -1, -1, -1, -1, 69, + -1, 71, 72, 73, 74, 47, -1, 49, 78, -1, + -1, 53, -1, 83, 47, -1, 49, -1, 60, 61, + 53, -1, -1, -1, -1, -1, -1, 60, 61, 71, + 72, 73, 102, 103, 104, 105, 106, 107, 71, 72, + 73, 83, -1, 113, 114, 115, 116, -1, -1, -1, + 83, -1, 122, 123, -1, -1, 126, 127, -1, -1, + -1, 131, -1, -1, 106, 107, -1, 137, 138, -1, + 140, -1, -1, 106, 116, -1, -1, -1, -1, -1, + 122, -1, -1, 116, -1, 127, -1, -1, -1, 122, + -1, -1, -1, -1, 127, -1, 138, -1, 140, -1, + -1, -1, -1, -1, -1, 138, -1, 140 }; -/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ + /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing + symbol of state STATE-NUM. */ static const yytype_uint16 yystos[] = { 0, 143, 144, 145, 171, 172, 277, 3, 4, 5, @@ -3418,154 +2898,302 @@ static const yytype_uint16 yystos[] = 277, 137, 181, 182, 274, 164, 72, 83, 180, 180, 180, 180, 6, 180, 201, 180, 149, 179, 107, 180, 164, 164, 164, 164, 180, 146, 274, 149, 149, 149, - 180, 180, 164, 180, 183, 202, 180, 180, 186, 107, - 274, 180, 180, 10, 11, 51, 63, 111, 133, 134, - 146, 162, 189, 192, 231, 233, 236, 238, 244, 249, - 250, 255, 264, 265, 277, 264, 234, 264, 264, 264, - 264, 234, 264, 234, 264, 234, 264, 234, 234, 234, + 180, 180, 164, 178, 180, 183, 202, 180, 180, 186, + 107, 274, 180, 180, 10, 11, 51, 63, 111, 133, + 134, 146, 162, 189, 192, 231, 233, 236, 238, 244, + 249, 250, 255, 264, 265, 277, 264, 234, 264, 264, + 264, 264, 234, 264, 234, 264, 234, 264, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, - 234, 234, 264, 164, 274, 164, 164, 274, 235, 234, - 264, 264, 164, 10, 234, 234, 234, 267, 264, 264, - 166, 147, 166, 274, 274, 147, 169, 150, 217, 277, + 234, 234, 234, 264, 164, 274, 164, 164, 274, 235, + 234, 264, 264, 164, 10, 234, 234, 234, 267, 264, + 264, 166, 147, 166, 274, 274, 147, 169, 150, 217, + 277, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 166, 265, 267, 228, 228, 51, 267, 234, + 159, 274, 13, 15, 17, 60, 140, 154, 159, 227, + 277, 227, 228, 227, 228, 227, 227, 15, 17, 47, + 60, 116, 154, 159, 212, 213, 222, 229, 230, 277, + 165, 247, 248, 277, 11, 246, 256, 149, 10, 11, + 12, 47, 49, 112, 146, 274, 275, 274, 48, 147, + 164, 11, 231, 267, 180, 177, 146, 274, 274, 274, + 274, 274, 172, 146, 267, 155, 10, 11, 192, 231, + 233, 274, 148, 150, 164, 164, 164, 60, 229, 274, + 164, 176, 274, 146, 148, 149, 150, 218, 146, 148, + 150, 219, 148, 184, 274, 275, 235, 167, 166, 166, + 166, 166, 166, 166, 156, 166, 156, 166, 166, 166, + 166, 147, 166, 147, 166, 147, 166, 166, 166, 166, + 166, 166, 166, 166, 166, 166, 166, 267, 234, 264, + 274, 156, 166, 166, 274, 166, 166, 156, 166, 166, + 166, 166, 267, 267, 15, 154, 272, 164, 198, 277, + 267, 149, 166, 169, 166, 166, 166, 227, 159, 274, + 227, 227, 227, 227, 227, 165, 227, 181, 116, 229, + 230, 222, 227, 227, 166, 15, 147, 13, 17, 60, + 140, 154, 159, 164, 225, 275, 277, 13, 15, 17, + 60, 140, 154, 159, 164, 226, 263, 267, 277, 274, + 167, 246, 181, 164, 237, 239, 149, 180, 181, 3, + 4, 5, 9, 10, 15, 50, 62, 67, 75, 76, + 108, 110, 112, 117, 121, 124, 129, 132, 154, 157, + 158, 162, 164, 168, 214, 215, 222, 223, 269, 270, + 276, 277, 166, 166, 172, 146, 147, 147, 147, 147, + 167, 252, 147, 166, 10, 11, 12, 59, 60, 133, + 203, 204, 205, 206, 207, 255, 277, 164, 219, 187, + 148, 234, 190, 13, 159, 191, 51, 267, 229, 13, + 17, 60, 140, 154, 159, 224, 275, 277, 234, 172, + 164, 259, 260, 173, 174, 274, 64, 65, 259, 64, + 65, 146, 267, 13, 17, 60, 111, 140, 154, 159, + 164, 185, 208, 210, 275, 149, 274, 164, 164, 234, + 234, 234, 166, 166, 166, 164, 166, 164, 217, 212, + 17, 33, 47, 60, 61, 76, 106, 109, 112, 128, + 140, 154, 211, 277, 267, 227, 263, 166, 48, 229, + 230, 225, 226, 166, 166, 198, 15, 222, 159, 225, + 225, 225, 225, 225, 225, 165, 217, 159, 274, 226, + 226, 226, 226, 226, 226, 165, 217, 169, 147, 150, + 48, 231, 267, 172, 76, 240, 277, 182, 164, 155, + 155, 232, 155, 15, 164, 155, 164, 267, 267, 267, + 267, 234, 265, 267, 166, 15, 147, 16, 17, 18, + 19, 20, 21, 22, 23, 33, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 163, 164, 165, + 180, 180, 167, 253, 10, 10, 10, 10, 172, 276, + 148, 207, 156, 147, 15, 274, 13, 17, 60, 140, + 154, 159, 164, 225, 226, 188, 210, 148, 212, 159, + 208, 212, 166, 166, 224, 159, 224, 224, 224, 224, + 224, 164, 165, 166, 167, 193, 167, 261, 277, 146, + 147, 146, 164, 148, 148, 167, 148, 148, 146, 220, + 221, 267, 277, 148, 159, 208, 208, 6, 16, 17, + 18, 19, 20, 21, 22, 23, 33, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 65, + 108, 147, 150, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 164, 165, 168, 199, 208, 208, + 208, 208, 149, 164, 165, 211, 150, 217, 219, 246, + 265, 265, 166, 166, 166, 265, 265, 166, 60, 232, + 181, 164, 146, 169, 164, 222, 225, 226, 217, 217, + 164, 164, 211, 225, 166, 263, 226, 166, 263, 267, + 166, 166, 167, 149, 241, 242, 277, 234, 234, 234, + 164, 234, 164, 10, 234, 234, 234, 267, 166, 166, + 15, 223, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 166, 265, 267, 228, 228, 51, 267, 234, 159, - 274, 13, 15, 17, 60, 140, 154, 159, 227, 277, - 227, 228, 227, 228, 227, 227, 15, 17, 47, 60, - 116, 154, 159, 212, 213, 222, 229, 230, 277, 165, - 247, 248, 277, 11, 246, 256, 149, 10, 11, 12, - 47, 49, 112, 146, 274, 275, 274, 48, 147, 164, - 11, 231, 267, 180, 177, 146, 274, 274, 274, 274, - 274, 172, 146, 267, 155, 10, 11, 192, 231, 233, - 274, 148, 150, 164, 164, 164, 60, 229, 274, 164, - 176, 274, 146, 148, 149, 150, 218, 146, 148, 150, - 219, 148, 184, 274, 275, 235, 167, 166, 166, 166, - 166, 166, 166, 156, 166, 156, 166, 166, 166, 166, - 147, 166, 147, 166, 147, 166, 166, 166, 166, 166, - 166, 166, 166, 166, 166, 166, 267, 234, 264, 274, - 156, 166, 166, 274, 166, 166, 156, 166, 166, 166, - 166, 267, 267, 15, 154, 272, 164, 198, 277, 267, - 149, 166, 169, 166, 166, 166, 227, 159, 274, 227, - 227, 227, 227, 227, 165, 227, 181, 116, 229, 230, - 222, 227, 227, 166, 15, 147, 13, 17, 60, 140, - 154, 159, 164, 225, 275, 277, 13, 15, 17, 60, - 140, 154, 159, 164, 226, 263, 267, 277, 274, 167, - 246, 181, 164, 237, 239, 149, 180, 181, 3, 4, - 5, 9, 10, 15, 50, 62, 67, 75, 76, 108, - 110, 112, 117, 121, 124, 129, 132, 154, 157, 158, - 162, 164, 168, 214, 215, 222, 223, 269, 270, 276, - 277, 166, 166, 172, 146, 147, 147, 147, 147, 167, - 252, 147, 166, 10, 11, 12, 59, 60, 133, 203, - 204, 205, 206, 207, 255, 277, 164, 219, 187, 148, - 234, 190, 13, 159, 191, 51, 267, 229, 13, 17, - 60, 140, 154, 159, 224, 275, 277, 234, 172, 164, - 259, 260, 173, 174, 274, 64, 65, 259, 64, 65, - 146, 267, 13, 17, 60, 111, 140, 154, 159, 164, - 185, 208, 210, 275, 149, 274, 164, 164, 234, 234, - 234, 166, 166, 166, 164, 166, 164, 217, 212, 17, - 33, 47, 60, 61, 76, 106, 109, 112, 128, 140, - 154, 211, 277, 267, 227, 263, 166, 48, 229, 230, - 225, 226, 166, 166, 198, 15, 222, 159, 225, 225, - 225, 225, 225, 225, 165, 217, 159, 274, 226, 226, - 226, 226, 226, 226, 165, 217, 169, 147, 150, 48, - 231, 267, 172, 76, 240, 277, 182, 164, 155, 155, - 232, 155, 15, 164, 155, 164, 267, 267, 267, 267, - 234, 265, 267, 166, 15, 147, 16, 17, 18, 19, - 20, 21, 22, 23, 33, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 163, 164, 165, 180, - 180, 167, 253, 10, 10, 10, 10, 172, 276, 148, - 207, 156, 147, 15, 274, 13, 17, 60, 140, 154, - 159, 164, 225, 226, 188, 210, 148, 212, 159, 208, - 212, 166, 166, 224, 159, 224, 224, 224, 224, 224, - 164, 165, 166, 167, 193, 167, 261, 277, 146, 147, - 146, 164, 148, 148, 167, 148, 148, 146, 220, 221, - 267, 277, 148, 159, 208, 208, 6, 16, 17, 18, - 19, 20, 21, 22, 23, 33, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 65, 108, - 147, 150, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 164, 165, 168, 199, 208, 208, 208, - 208, 149, 164, 165, 211, 150, 217, 219, 246, 265, - 265, 166, 166, 166, 265, 265, 166, 60, 232, 181, - 164, 146, 169, 164, 222, 225, 226, 217, 217, 164, - 164, 211, 225, 166, 263, 226, 166, 263, 267, 166, - 166, 167, 149, 241, 242, 277, 234, 234, 234, 164, - 234, 164, 10, 234, 234, 234, 267, 166, 166, 15, - 223, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, - 267, 267, 166, 265, 267, 172, 147, 166, 147, 147, - 147, 167, 166, 225, 226, 183, 200, 201, 206, 274, - 150, 159, 150, 216, 277, 217, 219, 166, 208, 166, - 166, 164, 224, 196, 263, 212, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 70, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 82, 83, 84, 100, 106, 107, 108, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 168, 169, 262, 259, 174, 264, 264, - 220, 167, 147, 208, 10, 166, 169, 166, 4, 209, - 263, 267, 147, 166, 166, 166, 166, 198, 232, 228, - 48, 166, 274, 259, 212, 217, 217, 212, 212, 164, - 169, 164, 169, 147, 113, 114, 115, 133, 138, 243, - 273, 274, 146, 147, 166, 156, 156, 264, 156, 274, - 166, 166, 156, 166, 166, 267, 149, 166, 169, 167, - 10, 148, 10, 10, 10, 148, 216, 234, 50, 62, - 67, 117, 121, 124, 154, 157, 158, 159, 162, 164, - 168, 266, 268, 147, 198, 166, 164, 198, 197, 212, - 169, 166, 261, 167, 167, 166, 167, 146, 267, 214, - 169, 185, 211, 228, 15, 166, 167, 166, 166, 166, - 212, 212, 138, 273, 138, 273, 138, 273, 274, 113, - 114, 115, 15, 172, 243, 164, 164, 166, 164, 166, - 164, 267, 147, 166, 147, 166, 166, 147, 166, 164, - 155, 155, 155, 15, 164, 155, 266, 266, 266, 266, - 266, 234, 265, 266, 16, 17, 18, 19, 20, 21, - 22, 23, 33, 151, 152, 153, 154, 157, 158, 159, - 160, 161, 163, 164, 165, 188, 164, 194, 212, 166, - 198, 167, 15, 220, 166, 146, 166, 198, 198, 198, - 166, 166, 273, 273, 273, 273, 273, 273, 167, 265, - 265, 265, 265, 10, 148, 10, 148, 148, 10, 148, - 234, 234, 234, 234, 164, 10, 234, 234, 166, 166, + 267, 267, 267, 166, 265, 267, 172, 147, 166, 147, + 147, 147, 167, 166, 225, 226, 178, 183, 200, 201, + 206, 274, 150, 159, 150, 216, 277, 217, 219, 166, + 208, 166, 166, 164, 224, 196, 263, 212, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 70, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 82, 83, 84, 100, 106, 107, + 108, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 168, 169, 262, 259, 174, + 264, 264, 220, 167, 147, 208, 10, 166, 169, 166, + 4, 209, 263, 267, 147, 166, 166, 166, 166, 198, + 232, 228, 48, 166, 274, 259, 212, 217, 217, 212, + 212, 164, 169, 164, 169, 147, 113, 114, 115, 133, + 138, 243, 273, 274, 146, 147, 166, 156, 156, 264, + 156, 274, 166, 166, 156, 166, 166, 267, 149, 166, + 169, 167, 10, 148, 10, 10, 10, 148, 216, 234, + 50, 62, 67, 117, 121, 124, 154, 157, 158, 159, + 162, 164, 168, 266, 268, 147, 198, 166, 164, 198, + 197, 212, 169, 166, 261, 167, 167, 166, 167, 146, + 267, 214, 169, 185, 211, 228, 15, 166, 167, 166, + 166, 166, 212, 212, 138, 273, 138, 273, 138, 273, + 274, 113, 114, 115, 15, 172, 243, 164, 164, 166, + 164, 166, 164, 267, 147, 166, 147, 166, 166, 147, + 166, 164, 155, 155, 155, 15, 164, 155, 266, 266, + 266, 266, 266, 234, 265, 266, 16, 17, 18, 19, + 20, 21, 22, 23, 33, 151, 152, 153, 154, 157, + 158, 159, 160, 161, 163, 164, 165, 188, 164, 194, + 212, 166, 198, 167, 15, 220, 166, 146, 166, 198, + 198, 198, 166, 166, 273, 273, 273, 273, 273, 273, + 167, 265, 265, 265, 265, 10, 148, 10, 148, 148, + 10, 148, 234, 234, 234, 234, 164, 10, 234, 234, + 166, 166, 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, 166, - 265, 267, 195, 212, 166, 198, 167, 198, 259, 211, - 211, 211, 198, 198, 166, 166, 166, 166, 166, 147, - 147, 166, 166, 156, 156, 156, 274, 166, 166, 156, - 266, 149, 166, 169, 212, 166, 198, 167, 148, 10, - 10, 148, 164, 164, 164, 166, 164, 266, 166, 198, - 166, 166, 265, 265, 265, 265, 198, 211, 148, 148, - 166, 166, 166, 166, 211 + 266, 166, 265, 267, 195, 212, 166, 198, 167, 198, + 259, 211, 211, 211, 198, 198, 166, 166, 166, 166, + 166, 147, 147, 166, 166, 156, 156, 156, 274, 166, + 166, 156, 266, 149, 166, 169, 212, 166, 198, 167, + 148, 10, 10, 148, 164, 164, 164, 166, 164, 266, + 166, 198, 166, 166, 265, 265, 265, 265, 198, 211, + 148, 148, 166, 166, 166, 166, 211 }; -#define yyerrok (yyerrstatus = 0) -#define yyclearin (yychar = YYEMPTY) -#define YYEMPTY (-2) -#define YYEOF 0 + /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +static const yytype_uint16 yyr1[] = +{ + 0, 170, 171, 171, 171, 172, 172, 172, 173, 173, + 174, 174, 174, 176, 175, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, + 177, 177, 177, 177, 177, 177, 177, 177, 179, 178, + 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, + 180, 180, 180, 180, 180, 180, 180, 180, 181, 181, + 182, 182, 182, 184, 183, 183, 183, 183, 183, 185, + 185, 187, 186, 186, 188, 188, 190, 189, 191, 189, + 193, 192, 194, 192, 195, 192, 196, 192, 197, 192, + 192, 198, 198, 198, 198, 198, 198, 198, 198, 198, + 198, 198, 198, 198, 198, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 199, 199, 199, 199, 199, 199, + 199, 199, 199, 199, 200, 200, 200, 201, 202, 201, + 201, 201, 203, 203, 204, 204, 205, 205, 206, 206, + 206, 206, 206, 206, 206, 206, 206, 207, 207, 207, + 207, 208, 208, 208, 208, 208, 208, 208, 208, 208, + 208, 208, 209, 208, 210, 210, 211, 211, 211, 212, + 212, 212, 212, 212, 213, 213, 214, 214, 214, 214, + 214, 215, 215, 216, 216, 217, 217, 218, 218, 218, + 218, 218, 219, 219, 219, 219, 219, 219, 220, 220, + 220, 221, 221, 221, 221, 222, 222, 222, 222, 222, + 222, 222, 222, 223, 223, 224, 224, 224, 224, 224, + 224, 224, 224, 224, 225, 225, 225, 225, 225, 225, + 225, 225, 225, 225, 225, 226, 226, 226, 226, 226, + 226, 226, 226, 226, 226, 226, 227, 227, 227, 227, + 227, 227, 227, 227, 227, 227, 228, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, + 229, 229, 230, 231, 231, 231, 231, 231, 231, 231, + 231, 231, 231, 231, 231, 231, 232, 232, 232, 232, + 232, 232, 232, 232, 233, 233, 234, 234, 234, 234, + 235, 235, 235, 235, 237, 236, 239, 238, 240, 240, + 241, 241, 242, 242, 243, 243, 243, 243, 243, 243, + 243, 243, 243, 243, 244, 245, 245, 245, 245, 246, + 246, 247, 247, 247, 248, 248, 248, 249, 249, 249, + 250, 250, 250, 252, 251, 253, 251, 251, 251, 254, + 254, 254, 255, 255, 255, 256, 256, 256, 256, 256, + 256, 256, 256, 256, 256, 256, 256, 256, 256, 257, + 257, 257, 258, 260, 259, 261, 261, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 262, 262, 262, 262, + 262, 262, 262, 262, 262, 262, 263, 263, 264, 264, + 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, 267, 267, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, + 267, 267, 267, 267, 267, 267, 267, 267, 267, 267, + 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, + 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, + 268, 268, 268, 268, 268, 268, 268, 268, 268, 268, + 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 269, 269, 269, 269, 269, 269, + 269, 269, 269, 269, 270, 270, 270, 270, 270, 270, + 270, 270, 270, 270, 270, 271, 271, 271, 271, 271, + 272, 272, 272, 272, 273, 273, 273, 274, 274, 274, + 274, 274, 274, 274, 274, 274, 274, 275, 275, 275, + 275, 276, 276, 276, 276, 277 +}; -#define YYACCEPT goto yyacceptlab -#define YYABORT goto yyabortlab -#define YYERROR goto yyerrorlab + /* 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, 5, 4, 0, 5, 1, 1, 1, 1, 1, + 2, 1, 1, 2, 2, 2, 2, 7, 9, 11, + 9, 11, 13, 9, 13, 9, 7, 5, 0, 3, + 1, 2, 2, 3, 2, 2, 2, 2, 2, 2, + 2, 2, 2, 2, 2, 4, 5, 5, 1, 3, + 1, 4, 4, 0, 4, 3, 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, + 2, 4, 5, 6, 4, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 2, 2, 1, 1, 1, 1, 1, 2, 0, 6, + 2, 2, 1, 1, 1, 3, 1, 1, 1, 2, + 4, 2, 3, 3, 4, 2, 3, 1, 1, 1, + 1, 1, 2, 3, 2, 2, 2, 2, 2, 3, + 4, 3, 0, 6, 2, 3, 1, 3, 4, 1, + 1, 1, 3, 2, 1, 3, 1, 1, 1, 3, + 2, 1, 3, 1, 2, 1, 2, 1, 3, 5, + 3, 3, 1, 3, 3, 3, 3, 4, 1, 1, + 2, 1, 3, 3, 5, 3, 4, 5, 3, 4, + 5, 2, 4, 1, 1, 1, 1, 2, 2, 2, + 2, 2, 3, 4, 1, 1, 2, 2, 2, 2, + 2, 3, 4, 7, 3, 1, 2, 2, 2, 2, + 2, 2, 3, 4, 7, 3, 1, 1, 2, 2, + 2, 2, 2, 2, 3, 4, 1, 1, 2, 2, + 2, 2, 2, 2, 3, 4, 5, 9, 9, 9, + 1, 1, 2, 1, 1, 1, 3, 4, 4, 4, + 4, 1, 1, 1, 1, 2, 1, 1, 1, 3, + 4, 2, 4, 4, 4, 1, 1, 1, 2, 3, + 2, 4, 4, 1, 1, 1, 2, 3, 2, 3, + 1, 4, 5, 5, 0, 6, 0, 9, 1, 1, + 1, 1, 2, 3, 1, 2, 2, 2, 3, 3, + 3, 3, 3, 3, 4, 3, 1, 4, 2, 1, + 1, 1, 3, 5, 1, 2, 4, 1, 2, 2, + 1, 1, 1, 0, 6, 0, 7, 4, 5, 3, + 5, 4, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 2, 2, 1, + 1, 2, 1, 0, 2, 1, 2, 1, 1, 1, + 1, 1, 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, 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, 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, 1, 1, 1, 3, 1, 1, 1, 1, + 1, 3, 1, 4, 7, 7, 7, 7, 4, 4, + 5, 4, 2, 2, 2, 2, 2, 2, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 5, 4, 4, 3, 3, 3, + 3, 1, 4, 7, 7, 7, 7, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 5, 4, 2, 5, 4, 4, 2, + 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 5, 4, 4, 3, 3, 3, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 8, 11, 4, 4, 6, 4, 4, 6, 6, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 1, 4, 7, 7, 7, 7, 4, 4, 5, 4, + 2, 5, 4, 4, 2, 2, 2, 2, 2, 3, + 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, + 3, 3, 3, 3, 3, 3, 3, 5, 4, 4, + 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 4, + 2, 3, 1, 2, 1, 2, 2, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 0 +}; -/* Like YYERROR except do call yyerror. This remains here temporarily - to ease the transition to the new meaning of YYERROR, for GCC. - Once GCC version 2 has supplanted version 1, this can go. However, - YYFAIL appears to be in use. Nevertheless, it is formally deprecated - in Bison 2.4.2's NEWS entry, where a plan to phase it out is - discussed. */ +#define yyerrok (yyerrstatus = 0) +#define yyclearin (yychar = YYEMPTY) +#define YYEMPTY (-2) +#define YYEOF 0 + +#define YYACCEPT goto yyacceptlab +#define YYABORT goto yyabortlab +#define YYERROR goto yyerrorlab -#define YYFAIL goto yyerrlab -#if defined YYFAIL - /* This is here to suppress warnings from the GCC cpp's - -Wunused-macros. Normally we don't worry about that warning, but - some users do, and we want to make it easy for users to remove - YYFAIL uses, which will produce warnings from Bison 2.5. */ -#endif #define YYRECOVERING() (!!yyerrstatus) @@ -3581,14 +3209,14 @@ do \ } \ else \ { \ - yyerror (YY_("syntax error: cannot back up")); \ - YYERROR; \ - } \ -while (YYID (0)) + yyerror (&yylloc, YY_("syntax error: cannot back up")); \ + YYERROR; \ + } \ +while (0) /* Error token number */ -#define YYTERROR 1 -#define YYERRCODE 256 +#define YYTERROR 1 +#define YYERRCODE 256 /* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N]. @@ -3598,7 +3226,7 @@ while (YYID (0)) #ifndef YYLLOC_DEFAULT # define YYLLOC_DEFAULT(Current, Rhs, N) \ do \ - if (YYID (N)) \ + if (N) \ { \ (Current).first_line = YYRHSLOC (Rhs, 1).first_line; \ (Current).first_column = YYRHSLOC (Rhs, 1).first_column; \ @@ -3612,59 +3240,58 @@ while (YYID (0)) (Current).first_column = (Current).last_column = \ YYRHSLOC (Rhs, 0).last_column; \ } \ - while (YYID (0)) + while (0) #endif #define YYRHSLOC(Rhs, K) ((Rhs)[K]) +/* Enable debugging if requested. */ +#if YYDEBUG + +# ifndef YYFPRINTF +# include /* INFRINGES ON USER NAME SPACE */ +# define YYFPRINTF fprintf +# endif + +# define YYDPRINTF(Args) \ +do { \ + if (yydebug) \ + YYFPRINTF Args; \ +} while (0) + + /* YY_LOCATION_PRINT -- Print the location on the stream. This macro was not mandated originally: define only if we know we won't break user code: when these are the locations we know. */ -#ifndef __attribute__ -/* This feature is available in gcc versions 2.5 and later. */ -# if (! defined __GNUC__ || __GNUC__ < 2 \ - || (__GNUC__ == 2 && __GNUC_MINOR__ < 5)) -# define __attribute__(Spec) /* empty */ -# endif -#endif - #ifndef YY_LOCATION_PRINT # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL /* Print *YYLOCP on YYO. Private, do not rely on its existence. */ -__attribute__((__unused__)) -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) +YY_ATTRIBUTE_UNUSED static unsigned yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp) -#else -static unsigned -yy_location_print_ (yyo, yylocp) - FILE *yyo; - YYLTYPE const * const yylocp; -#endif { unsigned res = 0; int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0; if (0 <= yylocp->first_line) { - res += fprintf (yyo, "%d", yylocp->first_line); + res += YYFPRINTF (yyo, "%d", yylocp->first_line); if (0 <= yylocp->first_column) - res += fprintf (yyo, ".%d", yylocp->first_column); + res += YYFPRINTF (yyo, ".%d", yylocp->first_column); } if (0 <= yylocp->last_line) { if (yylocp->first_line < yylocp->last_line) { - res += fprintf (yyo, "-%d", yylocp->last_line); + res += YYFPRINTF (yyo, "-%d", yylocp->last_line); if (0 <= end_col) - res += fprintf (yyo, ".%d", end_col); + res += YYFPRINTF (yyo, ".%d", end_col); } else if (0 <= end_col && yylocp->first_column < end_col) - res += fprintf (yyo, "-%d", end_col); + res += YYFPRINTF (yyo, "-%d", end_col); } return res; } @@ -3678,73 +3305,35 @@ yy_location_print_ (yyo, yylocp) #endif -/* YYLEX -- calling `yylex' with the right arguments. */ -#ifdef YYLEX_PARAM -# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) -#else -# define YYLEX yylex (&yylval, &yylloc) -#endif - -/* Enable debugging if requested. */ -#if YYDEBUG - -# ifndef YYFPRINTF -# include /* INFRINGES ON USER NAME SPACE */ -# define YYFPRINTF fprintf -# endif - -# define YYDPRINTF(Args) \ -do { \ - if (yydebug) \ - YYFPRINTF Args; \ -} while (YYID (0)) - -# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ -do { \ - if (yydebug) \ - { \ - YYFPRINTF (stderr, "%s ", Title); \ - yy_symbol_print (stderr, \ - Type, Value, Location); \ - YYFPRINTF (stderr, "\n"); \ - } \ -} while (YYID (0)) +# define YY_SYMBOL_PRINT(Title, Type, Value, Location) \ +do { \ + if (yydebug) \ + { \ + YYFPRINTF (stderr, "%s ", Title); \ + yy_symbol_print (stderr, \ + Type, Value, Location); \ + YYFPRINTF (stderr, "\n"); \ + } \ +} while (0) -/*--------------------------------. -| Print this symbol on YYOUTPUT. | -`--------------------------------*/ +/*----------------------------------------. +| Print this symbol's value on YYOUTPUT. | +`----------------------------------------*/ -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp) -#else -static void -yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; - YYLTYPE const * const yylocationp; -#endif { FILE *yyo = yyoutput; YYUSE (yyo); + YYUSE (yylocationp); if (!yyvaluep) return; - YYUSE (yylocationp); # ifdef YYPRINT if (yytype < YYNTOKENS) YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep); -# else - YYUSE (yyoutput); # endif - switch (yytype) - { - default: - break; - } + YYUSE (yytype); } @@ -3752,23 +3341,11 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp) | Print this symbol on YYOUTPUT. | `--------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep, YYLTYPE const * const yylocationp) -#else -static void -yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp) - FILE *yyoutput; - int yytype; - YYSTYPE const * const yyvaluep; - YYLTYPE const * const yylocationp; -#endif { - if (yytype < YYNTOKENS) - YYFPRINTF (yyoutput, "token %s (", yytname[yytype]); - else - YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]); + YYFPRINTF (yyoutput, "%s %s (", + yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]); YY_LOCATION_PRINT (yyoutput, *yylocationp); YYFPRINTF (yyoutput, ": "); @@ -3781,16 +3358,8 @@ yy_symbol_print (yyoutput, yytype, yyvaluep, yylocationp) | TOP (included). | `------------------------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop) -#else -static void -yy_stack_print (yybottom, yytop) - yytype_int16 *yybottom; - yytype_int16 *yytop; -#endif { YYFPRINTF (stderr, "Stack now"); for (; yybottom <= yytop; yybottom++) @@ -3801,50 +3370,42 @@ yy_stack_print (yybottom, yytop) YYFPRINTF (stderr, "\n"); } -# define YY_STACK_PRINT(Bottom, Top) \ -do { \ - if (yydebug) \ - yy_stack_print ((Bottom), (Top)); \ -} while (YYID (0)) +# define YY_STACK_PRINT(Bottom, Top) \ +do { \ + if (yydebug) \ + yy_stack_print ((Bottom), (Top)); \ +} while (0) /*------------------------------------------------. | Report that the YYRULE is going to be reduced. | `------------------------------------------------*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void -yy_reduce_print (YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule) -#else -static void -yy_reduce_print (yyvsp, yylsp, yyrule) - YYSTYPE *yyvsp; - YYLTYPE *yylsp; - int yyrule; -#endif +yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, YYLTYPE *yylsp, int yyrule) { + unsigned long int yylno = yyrline[yyrule]; int yynrhs = yyr2[yyrule]; int yyi; - unsigned long int yylno = yyrline[yyrule]; YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n", - yyrule - 1, yylno); + yyrule - 1, yylno); /* The symbols being reduced. */ for (yyi = 0; yyi < yynrhs; yyi++) { YYFPRINTF (stderr, " $%d = ", yyi + 1); - yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi], - &(yyvsp[(yyi + 1) - (yynrhs)]) - , &(yylsp[(yyi + 1) - (yynrhs)]) ); + yy_symbol_print (stderr, + yystos[yyssp[yyi + 1 - yynrhs]], + &(yyvsp[(yyi + 1) - (yynrhs)]) + , &(yylsp[(yyi + 1) - (yynrhs)]) ); YYFPRINTF (stderr, "\n"); } } -# define YY_REDUCE_PRINT(Rule) \ -do { \ - if (yydebug) \ - yy_reduce_print (yyvsp, yylsp, Rule); \ -} while (YYID (0)) +# define YY_REDUCE_PRINT(Rule) \ +do { \ + if (yydebug) \ + yy_reduce_print (yyssp, yyvsp, yylsp, Rule); \ +} while (0) /* Nonzero means print parse trace. It is left uninitialized so that multiple parsers can coexist. */ @@ -3858,7 +3419,7 @@ int yydebug; /* YYINITDEPTH -- initial size of the parser's stacks. */ -#ifndef YYINITDEPTH +#ifndef YYINITDEPTH # define YYINITDEPTH 200 #endif @@ -3881,15 +3442,8 @@ int yydebug; # define yystrlen strlen # else /* Return the length of YYSTR. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static YYSIZE_T yystrlen (const char *yystr) -#else -static YYSIZE_T -yystrlen (yystr) - const char *yystr; -#endif { YYSIZE_T yylen; for (yylen = 0; yystr[yylen]; yylen++) @@ -3905,16 +3459,8 @@ yystrlen (yystr) # else /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in YYDEST. */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static char * yystpcpy (char *yydest, const char *yysrc) -#else -static char * -yystpcpy (yydest, yysrc) - char *yydest; - const char *yysrc; -#endif { char *yyd = yydest; const char *yys = yysrc; @@ -3944,27 +3490,27 @@ yytnamerr (char *yyres, const char *yystr) char const *yyp = yystr; for (;;) - switch (*++yyp) - { - case '\'': - case ',': - goto do_not_strip_quotes; + switch (*++yyp) + { + case '\'': + case ',': + goto do_not_strip_quotes; - case '\\': - if (*++yyp != '\\') - goto do_not_strip_quotes; - /* Fall through. */ - default: - if (yyres) - yyres[yyn] = *yyp; - yyn++; - break; + case '\\': + if (*++yyp != '\\') + goto do_not_strip_quotes; + /* Fall through. */ + default: + if (yyres) + yyres[yyn] = *yyp; + yyn++; + break; - case '"': - if (yyres) - yyres[yyn] = '\0'; - return yyn; - } + case '"': + if (yyres) + yyres[yyn] = '\0'; + return yyn; + } do_not_strip_quotes: ; } @@ -3987,11 +3533,11 @@ static int yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, yytype_int16 *yyssp, int yytoken) { - YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]); + YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]); YYSIZE_T yysize = yysize0; enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 }; /* Internationalized format string. */ - const char *yyformat = YY_NULL; + const char *yyformat = YY_NULLPTR; /* Arguments of yyformat. */ char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM]; /* Number of reported tokens (one for the "unexpected", one per @@ -3999,10 +3545,6 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, int yycount = 0; /* There are many possibilities here to consider: - - Assume YYFAIL is not used. It's too flawed to consider. See - - for details. YYERROR is fine as it does not invoke this - function. - If this state is a consistent state with a default action, then the only way this function was invoked is if the default action is an error action. In that case, don't check for expected @@ -4052,7 +3594,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, } yyarg[yycount++] = yytname[yyx]; { - YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]); + YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, yytname[yyx]); if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)) return 2; @@ -4119,33 +3661,18 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg, | Release the memory associated to this symbol. | `-----------------------------------------------*/ -/*ARGSUSED*/ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) static void yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep, YYLTYPE *yylocationp) -#else -static void -yydestruct (yymsg, yytype, yyvaluep, yylocationp) - const char *yymsg; - int yytype; - YYSTYPE *yyvaluep; - YYLTYPE *yylocationp; -#endif { YYUSE (yyvaluep); YYUSE (yylocationp); - if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp); - switch (yytype) - { - - default: - break; - } + YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN + YYUSE (yytype); + YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -4155,66 +3682,27 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp) | yyparse. | `----------*/ -#ifdef YYPARSE_PARAM -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) -int -yyparse (void *YYPARSE_PARAM) -#else -int -yyparse (YYPARSE_PARAM) - void *YYPARSE_PARAM; -#endif -#else /* ! YYPARSE_PARAM */ -#if (defined __STDC__ || defined __C99__FUNC__ \ - || defined __cplusplus || defined _MSC_VER) int yyparse (void) -#else -int -yyparse () - -#endif -#endif { /* The lookahead symbol. */ int yychar; -#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ -/* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ - _Pragma ("GCC diagnostic push") \ - _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\ - _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") -# define YY_IGNORE_MAYBE_UNINITIALIZED_END \ - _Pragma ("GCC diagnostic pop") -#else +/* The semantic value of the lookahead symbol. */ /* Default value used for initialization, for pacifying older GCCs or non-GCC compilers. */ -static YYSTYPE yyval_default; -# define YY_INITIAL_VALUE(Value) = Value -#endif +YY_INITIAL_VALUE (static YYSTYPE yyval_default;) +YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); + +/* Location data for the lookahead symbol. */ static YYLTYPE yyloc_default # if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL = { 1, 1, 1, 1 } # endif ; -#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN -# define YY_IGNORE_MAYBE_UNINITIALIZED_END -#endif -#ifndef YY_INITIAL_VALUE -# define YY_INITIAL_VALUE(Value) /* Nothing. */ -#endif - -/* The semantic value of the lookahead symbol. */ -YYSTYPE yylval YY_INITIAL_VALUE(yyval_default); - -/* Location data for the lookahead symbol. */ YYLTYPE yylloc = yyloc_default; - /* Number of syntax errors so far. */ int yynerrs; @@ -4223,9 +3711,9 @@ YYLTYPE yylloc = yyloc_default; int yyerrstatus; /* The stacks and their tools: - `yyss': related to states. - `yyvs': related to semantic values. - `yyls': related to locations. + 'yyss': related to states. + 'yyvs': related to semantic values. + 'yyls': related to locations. Refer to the stacks through separate pointers, to allow yyoverflow to reallocate them elsewhere. */ @@ -4304,26 +3792,26 @@ YYLTYPE yylloc = yyloc_default; #ifdef yyoverflow { - /* Give user a chance to reallocate the stack. Use copies of - these so that the &'s don't force the real ones into - memory. */ - YYSTYPE *yyvs1 = yyvs; - yytype_int16 *yyss1 = yyss; - YYLTYPE *yyls1 = yyls; + /* Give user a chance to reallocate the stack. Use copies of + these so that the &'s don't force the real ones into + memory. */ + YYSTYPE *yyvs1 = yyvs; + yytype_int16 *yyss1 = yyss; + YYLTYPE *yyls1 = yyls; - /* Each stack pointer address is followed by the size of the - data in use in that stack, in bytes. This used to be a - conditional around just the two extra args, but that might - be undefined if yyoverflow is a macro. */ - yyoverflow (YY_("memory exhausted"), - &yyss1, yysize * sizeof (*yyssp), - &yyvs1, yysize * sizeof (*yyvsp), - &yyls1, yysize * sizeof (*yylsp), - &yystacksize); + /* Each stack pointer address is followed by the size of the + data in use in that stack, in bytes. This used to be a + conditional around just the two extra args, but that might + be undefined if yyoverflow is a macro. */ + yyoverflow (YY_("memory exhausted"), + &yyss1, yysize * sizeof (*yyssp), + &yyvs1, yysize * sizeof (*yyvsp), + &yyls1, yysize * sizeof (*yylsp), + &yystacksize); - yyls = yyls1; - yyss = yyss1; - yyvs = yyvs1; + yyls = yyls1; + yyss = yyss1; + yyvs = yyvs1; } #else /* no yyoverflow */ # ifndef YYSTACK_RELOCATE @@ -4331,23 +3819,23 @@ YYLTYPE yylloc = yyloc_default; # else /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + goto yyexhaustedlab; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) - yystacksize = YYMAXDEPTH; + yystacksize = YYMAXDEPTH; { - yytype_int16 *yyss1 = yyss; - union yyalloc *yyptr = - (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); - if (! yyptr) - goto yyexhaustedlab; - YYSTACK_RELOCATE (yyss_alloc, yyss); - YYSTACK_RELOCATE (yyvs_alloc, yyvs); - YYSTACK_RELOCATE (yyls_alloc, yyls); + yytype_int16 *yyss1 = yyss; + union yyalloc *yyptr = + (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); + if (! yyptr) + goto yyexhaustedlab; + YYSTACK_RELOCATE (yyss_alloc, yyss); + YYSTACK_RELOCATE (yyvs_alloc, yyvs); + YYSTACK_RELOCATE (yyls_alloc, yyls); # undef YYSTACK_RELOCATE - if (yyss1 != yyssa) - YYSTACK_FREE (yyss1); + if (yyss1 != yyssa) + YYSTACK_FREE (yyss1); } # endif #endif /* no yyoverflow */ @@ -4357,10 +3845,10 @@ YYLTYPE yylloc = yyloc_default; yylsp = yyls + yysize - 1; YYDPRINTF ((stderr, "Stack size increased to %lu\n", - (unsigned long int) yystacksize)); + (unsigned long int) yystacksize)); if (yyss + yystacksize - 1 <= yyssp) - YYABORT; + YYABORT; } YYDPRINTF ((stderr, "Entering state %d\n", yystate)); @@ -4389,7 +3877,7 @@ yybackup: if (yychar == YYEMPTY) { YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; + yychar = yylex (&yylval, &yylloc); } if (yychar <= YYEOF) @@ -4454,7 +3942,7 @@ yyreduce: yylen = yyr2[yyn]; /* If YYLEN is nonzero, implement the default value of the action: - `$$ = $1'. + '$$ = $1'. Otherwise, the following line sets YYVAL to garbage. This behavior is undocumented and Bison @@ -4469,65 +3957,64 @@ yyreduce: switch (yyn) { case 3: -/* Line 1792 of yacc.c */ -#line 450 "dtool/src/cppparser/cppBison.yxx" +#line 450 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - current_expr = (yyvsp[(2) - (2)].u.expr); + current_expr = (yyvsp[0].u.expr); } +#line 3965 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 4: -/* Line 1792 of yacc.c */ -#line 454 "dtool/src/cppparser/cppBison.yxx" +#line 454 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - current_type = (yyvsp[(2) - (2)].u.type); + current_type = (yyvsp[0].u.type); } +#line 3973 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 10: -/* Line 1792 of yacc.c */ -#line 472 "dtool/src/cppparser/cppBison.yxx" +#line 472 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - delete (yyvsp[(3) - (4)].u.expr); + delete (yyvsp[-1].u.expr); } +#line 3981 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 11: -/* Line 1792 of yacc.c */ -#line 476 "dtool/src/cppparser/cppBison.yxx" +#line 476 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - delete (yyvsp[(3) - (5)].u.expr); + delete (yyvsp[-2].u.expr); } +#line 3989 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 12: -/* Line 1792 of yacc.c */ -#line 480 "dtool/src/cppparser/cppBison.yxx" +#line 480 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - delete (yyvsp[(3) - (4)].u.expr); + delete (yyvsp[-1].u.expr); } +#line 3997 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 13: -/* Line 1792 of yacc.c */ -#line 492 "dtool/src/cppparser/cppBison.yxx" +#line 492 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { push_storage_class((current_storage_class & ~CPPInstance::SC_c_binding) | - ((yyvsp[(1) - (2)].u.integer) & CPPInstance::SC_c_binding)); + ((yyvsp[-1].u.integer) & CPPInstance::SC_c_binding)); } +#line 4006 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 14: -/* Line 1792 of yacc.c */ -#line 497 "dtool/src/cppparser/cppBison.yxx" +#line 497 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_storage_class(); } +#line 4014 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 21: -/* Line 1792 of yacc.c */ -#line 510 "dtool/src/cppparser/cppBison.yxx" +#line 510 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if (publish_nest_level != 0) { yyerror("Unclosed __begin_publish", publish_loc); @@ -4536,36 +4023,36 @@ yyreduce: } publish_previous = current_scope->get_current_vis(); - publish_loc = (yylsp[(1) - (1)]); + publish_loc = (yylsp[0]); publish_nest_level++; current_scope->set_current_vis(V_published); } +#line 4031 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 22: -/* Line 1792 of yacc.c */ -#line 523 "dtool/src/cppparser/cppBison.yxx" +#line 523 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if (publish_nest_level != 1) { - yyerror("Unmatched __end_publish", (yylsp[(1) - (1)])); + yyerror("Unmatched __end_publish", (yylsp[0])); } else { current_scope->set_current_vis(publish_previous); } publish_nest_level = 0; } +#line 4044 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 23: -/* Line 1792 of yacc.c */ -#line 532 "dtool/src/cppparser/cppBison.yxx" +#line 532 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_scope->set_current_vis(V_published); } +#line 4052 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 24: -/* Line 1792 of yacc.c */ -#line 536 "dtool/src/cppparser/cppBison.yxx" +#line 536 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if (publish_nest_level > 0) { current_scope->set_current_vis(V_published); @@ -4573,684 +4060,684 @@ yyreduce: current_scope->set_current_vis(V_public); } } +#line 4064 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 25: -/* Line 1792 of yacc.c */ -#line 544 "dtool/src/cppparser/cppBison.yxx" +#line 544 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_scope->set_current_vis(V_protected); } +#line 4072 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 26: -/* Line 1792 of yacc.c */ -#line 548 "dtool/src/cppparser/cppBison.yxx" +#line 548 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_scope->set_current_vis(V_private); } +#line 4080 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 27: -/* Line 1792 of yacc.c */ -#line 552 "dtool/src/cppparser/cppBison.yxx" +#line 552 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPDeclaration *getter = (yyvsp[(5) - (7)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *getter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid getter: " + (yyvsp[(5) - (7)].u.identifier)->get_fully_scoped_name(), (yylsp[(5) - (7)])); + yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); } - CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[(3) - (7)].u.identifier), getter->as_function_group(), NULL, current_scope, (yylsp[(1) - (7)]).file); - current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[(1) - (7)])); + 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 4095 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 28: -/* Line 1792 of yacc.c */ -#line 563 "dtool/src/cppparser/cppBison.yxx" +#line 563 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPDeclaration *getter = (yyvsp[(5) - (9)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *getter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid getter: " + (yyvsp[(5) - (9)].u.identifier)->get_fully_scoped_name(), (yylsp[(5) - (9)])); + yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); } else { - CPPDeclaration *setter = (yyvsp[(7) - (9)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *setter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); CPPFunctionGroup *setter_func = NULL; if (setter == (CPPDeclaration *)NULL || setter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid setter: " + (yyvsp[(7) - (9)].u.identifier)->get_fully_scoped_name(), (yylsp[(7) - (9)])); + yyerror("Reference to non-existent or invalid setter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); } else { setter_func = setter->as_function_group(); } - CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[(3) - (9)].u.identifier), getter->as_function_group(), - setter_func, current_scope, (yylsp[(1) - (9)]).file); - current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[(1) - (9)])); + CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-6].u.identifier), getter->as_function_group(), + setter_func, current_scope, (yylsp[-8]).file); + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-8])); } } +#line 4120 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 29: -/* Line 1792 of yacc.c */ -#line 584 "dtool/src/cppparser/cppBison.yxx" +#line 584 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPDeclaration *getter = (yyvsp[(5) - (11)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *getter = (yyvsp[-6].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid getter: " + (yyvsp[(5) - (11)].u.identifier)->get_fully_scoped_name(), (yylsp[(5) - (11)])); + yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-6].u.identifier)->get_fully_scoped_name(), (yylsp[-6])); } else { - CPPDeclaration *setter = (yyvsp[(7) - (11)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *setter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); CPPFunctionGroup *setter_func = NULL; if (setter == (CPPDeclaration *)NULL || setter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid setter: " + (yyvsp[(7) - (11)].u.identifier)->get_fully_scoped_name(), (yylsp[(7) - (11)])); + yyerror("Reference to non-existent or invalid setter: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); } else { setter_func = setter->as_function_group(); } - CPPDeclaration *deleter = (yyvsp[(9) - (11)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *deleter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (deleter == (CPPDeclaration *)NULL || deleter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("reference to non-existent or invalid delete method: " + (yyvsp[(9) - (11)].u.identifier)->get_fully_scoped_name(), (yylsp[(9) - (11)])); + yyerror("reference to non-existent or invalid delete method: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); deleter = NULL; } - CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[(3) - (11)].u.identifier), getter->as_function_group(), - setter_func, current_scope, (yylsp[(1) - (11)]).file); + CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-8].u.identifier), getter->as_function_group(), + setter_func, current_scope, (yylsp[-10]).file); if (deleter) { make_property->_del_function = deleter->as_function_group(); } - current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[(1) - (11)])); + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-10])); } } +#line 4154 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 30: -/* Line 1792 of yacc.c */ -#line 614 "dtool/src/cppparser/cppBison.yxx" +#line 614 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPDeclaration *length_getter = (yyvsp[(5) - (9)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + 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) { - yyerror("reference to non-existent or invalid length method: " + (yyvsp[(5) - (9)].u.identifier)->get_fully_scoped_name(), (yylsp[(5) - (9)])); + yyerror("reference to non-existent or invalid length method: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); length_getter = NULL; } - CPPDeclaration *getter = (yyvsp[(7) - (9)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *getter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid getter: " + (yyvsp[(7) - (9)].u.identifier)->get_fully_scoped_name(), (yylsp[(7) - (9)])); + yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); } - CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[(3) - (9)].u.identifier), getter->as_function_group(), NULL, current_scope, (yylsp[(1) - (9)]).file); + CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-6].u.identifier), getter->as_function_group(), NULL, current_scope, (yylsp[-8]).file); make_property->_length_function = length_getter->as_function_group(); - current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[(1) - (9)])); + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-8])); } +#line 4175 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 31: -/* Line 1792 of yacc.c */ -#line 631 "dtool/src/cppparser/cppBison.yxx" +#line 631 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPDeclaration *length_getter = (yyvsp[(5) - (11)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + 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) { - yyerror("reference to non-existent or invalid length method: " + (yyvsp[(5) - (11)].u.identifier)->get_fully_scoped_name(), (yylsp[(5) - (11)])); + yyerror("reference to non-existent or invalid length method: " + (yyvsp[-6].u.identifier)->get_fully_scoped_name(), (yylsp[-6])); length_getter = NULL; } - CPPDeclaration *getter = (yyvsp[(7) - (11)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *getter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid getter: " + (yyvsp[(7) - (11)].u.identifier)->get_fully_scoped_name(), (yylsp[(7) - (11)])); + yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); } else { - CPPDeclaration *setter = (yyvsp[(9) - (11)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *setter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); CPPFunctionGroup *setter_func = NULL; if (setter == (CPPDeclaration *)NULL || setter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid setter: " + (yyvsp[(9) - (11)].u.identifier)->get_fully_scoped_name(), (yylsp[(9) - (11)])); + yyerror("Reference to non-existent or invalid setter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); } else { setter_func = setter->as_function_group(); } - CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[(3) - (11)].u.identifier), getter->as_function_group(), - setter_func, current_scope, (yylsp[(1) - (11)]).file); + CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-8].u.identifier), getter->as_function_group(), + setter_func, current_scope, (yylsp[-10]).file); make_property->_length_function = length_getter->as_function_group(); - current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[(1) - (11)])); + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-10])); } } +#line 4207 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 32: -/* Line 1792 of yacc.c */ -#line 659 "dtool/src/cppparser/cppBison.yxx" +#line 659 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPDeclaration *length_getter = (yyvsp[(5) - (13)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + 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) { - yyerror("reference to non-existent or invalid length method: " + (yyvsp[(5) - (13)].u.identifier)->get_fully_scoped_name(), (yylsp[(5) - (13)])); + yyerror("reference to non-existent or invalid length method: " + (yyvsp[-8].u.identifier)->get_fully_scoped_name(), (yylsp[-8])); length_getter = NULL; } - CPPDeclaration *getter = (yyvsp[(7) - (13)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *getter = (yyvsp[-6].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid getter: " + (yyvsp[(7) - (13)].u.identifier)->get_fully_scoped_name(), (yylsp[(7) - (13)])); + yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-6].u.identifier)->get_fully_scoped_name(), (yylsp[-6])); } else { - CPPDeclaration *setter = (yyvsp[(9) - (13)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *setter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); CPPFunctionGroup *setter_func = NULL; if (setter == (CPPDeclaration *)NULL || setter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid setter: " + (yyvsp[(9) - (13)].u.identifier)->get_fully_scoped_name(), (yylsp[(9) - (13)])); + yyerror("Reference to non-existent or invalid setter: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); } else { setter_func = setter->as_function_group(); } - CPPDeclaration *deleter = (yyvsp[(11) - (13)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *deleter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (deleter == (CPPDeclaration *)NULL || deleter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("reference to non-existent or invalid delete method: " + (yyvsp[(11) - (13)].u.identifier)->get_fully_scoped_name(), (yylsp[(11) - (13)])); + yyerror("reference to non-existent or invalid delete method: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); deleter = NULL; } - CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[(3) - (13)].u.identifier), getter->as_function_group(), - setter_func, current_scope, (yylsp[(1) - (13)]).file); + CPPMakeProperty *make_property = new CPPMakeProperty((yyvsp[-10].u.identifier), getter->as_function_group(), + setter_func, current_scope, (yylsp[-12]).file); make_property->_length_function = length_getter->as_function_group(); if (deleter) { make_property->_del_function = deleter->as_function_group(); } - current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[(1) - (13)])); + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-12])); } } +#line 4248 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 33: -/* Line 1792 of yacc.c */ -#line 696 "dtool/src/cppparser/cppBison.yxx" +#line 696 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPDeclaration *hasser = (yyvsp[(5) - (9)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *hasser = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (hasser == (CPPDeclaration *)NULL || hasser->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid has-function: " + (yyvsp[(5) - (9)].u.identifier)->get_fully_scoped_name(), (yylsp[(5) - (9)])); + yyerror("Reference to non-existent or invalid has-function: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); } - CPPDeclaration *getter = (yyvsp[(7) - (9)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *getter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid getter: " + (yyvsp[(7) - (9)].u.identifier)->get_fully_scoped_name(), (yylsp[(7) - (9)])); + yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); } if (hasser && getter) { CPPMakeProperty *make_property; - make_property = new CPPMakeProperty((yyvsp[(3) - (9)].u.identifier), + make_property = new CPPMakeProperty((yyvsp[-6].u.identifier), hasser->as_function_group(), getter->as_function_group(), NULL, NULL, - current_scope, (yylsp[(1) - (9)]).file); - current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[(1) - (9)])); + current_scope, (yylsp[-8]).file); + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-8])); } } +#line 4274 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 34: -/* Line 1792 of yacc.c */ -#line 718 "dtool/src/cppparser/cppBison.yxx" +#line 718 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPDeclaration *hasser = (yyvsp[(5) - (13)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *hasser = (yyvsp[-8].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (hasser == (CPPDeclaration *)NULL || hasser->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid has-function: " + (yyvsp[(5) - (13)].u.identifier)->get_fully_scoped_name(), (yylsp[(5) - (13)])); + yyerror("Reference to non-existent or invalid has-function: " + (yyvsp[-8].u.identifier)->get_fully_scoped_name(), (yylsp[-8])); } - CPPDeclaration *getter = (yyvsp[(7) - (13)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *getter = (yyvsp[-6].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (getter == (CPPDeclaration *)NULL || getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid getter: " + (yyvsp[(7) - (13)].u.identifier)->get_fully_scoped_name(), (yylsp[(7) - (13)])); + yyerror("Reference to non-existent or invalid getter: " + (yyvsp[-6].u.identifier)->get_fully_scoped_name(), (yylsp[-6])); } - CPPDeclaration *setter = (yyvsp[(9) - (13)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *setter = (yyvsp[-4].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (setter == (CPPDeclaration *)NULL || setter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid setter: " + (yyvsp[(9) - (13)].u.identifier)->get_fully_scoped_name(), (yylsp[(9) - (13)])); + yyerror("Reference to non-existent or invalid setter: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); } - CPPDeclaration *clearer = (yyvsp[(11) - (13)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *clearer = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (clearer == (CPPDeclaration *)NULL || clearer->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("Reference to non-existent or invalid clear-function: " + (yyvsp[(11) - (13)].u.identifier)->get_fully_scoped_name(), (yylsp[(11) - (13)])); + yyerror("Reference to non-existent or invalid clear-function: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-2])); } if (hasser && getter && setter && clearer) { CPPMakeProperty *make_property; - make_property = new CPPMakeProperty((yyvsp[(3) - (13)].u.identifier), + make_property = new CPPMakeProperty((yyvsp[-10].u.identifier), hasser->as_function_group(), getter->as_function_group(), setter->as_function_group(), clearer->as_function_group(), - current_scope, (yylsp[(1) - (13)]).file); - current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[(1) - (13)])); + current_scope, (yylsp[-12]).file); + current_scope->add_declaration(make_property, global_scope, current_lexer, (yylsp[-12])); } } +#line 4311 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 35: -/* Line 1792 of yacc.c */ -#line 751 "dtool/src/cppparser/cppBison.yxx" +#line 751 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPDeclaration *length_getter = (yyvsp[(5) - (9)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + 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) { - yyerror("reference to non-existent or invalid length method: " + (yyvsp[(5) - (9)].u.identifier)->get_fully_scoped_name(), (yylsp[(5) - (9)])); + yyerror("reference to non-existent or invalid length method: " + (yyvsp[-4].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); length_getter = NULL; } - CPPDeclaration *element_getter = (yyvsp[(7) - (9)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *element_getter = (yyvsp[-2].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (element_getter == (CPPDeclaration *)NULL || element_getter->get_subtype() != CPPDeclaration::ST_function_group) { - yyerror("reference to non-existent or invalid element method: " + (yyvsp[(7) - (9)].u.identifier)->get_fully_scoped_name(), (yylsp[(5) - (9)])); + yyerror("reference to non-existent or invalid element method: " + (yyvsp[-2].u.identifier)->get_fully_scoped_name(), (yylsp[-4])); element_getter = NULL; } if (length_getter != (CPPDeclaration *)NULL && element_getter != (CPPDeclaration *)NULL) { - CPPMakeSeq *make_seq = new CPPMakeSeq((yyvsp[(3) - (9)].u.identifier), + CPPMakeSeq *make_seq = new CPPMakeSeq((yyvsp[-6].u.identifier), length_getter->as_function_group(), element_getter->as_function_group(), - current_scope, (yylsp[(1) - (9)]).file); - current_scope->add_declaration(make_seq, global_scope, current_lexer, (yylsp[(1) - (9)])); + current_scope, (yylsp[-8]).file); + current_scope->add_declaration(make_seq, global_scope, current_lexer, (yylsp[-8])); } } +#line 4337 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 36: -/* Line 1792 of yacc.c */ -#line 773 "dtool/src/cppparser/cppBison.yxx" +#line 773 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPExpression::Result result = (yyvsp[(3) - (7)].u.expr)->evaluate(); + CPPExpression::Result result = (yyvsp[-4].u.expr)->evaluate(); if (result._type == CPPExpression::RT_error) { - yywarning("static_assert requires a constant expression", (yylsp[(3) - (7)])); + yywarning("static_assert requires a constant expression", (yylsp[-4])); } else if (!result.as_boolean()) { stringstream str; - str << *(yyvsp[(5) - (7)].u.expr); - yywarning("static_assert failed: " + str.str(), (yylsp[(3) - (7)])); + str << *(yyvsp[-2].u.expr); + yywarning("static_assert failed: " + str.str(), (yylsp[-4])); } } +#line 4352 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 37: -/* Line 1792 of yacc.c */ -#line 784 "dtool/src/cppparser/cppBison.yxx" +#line 784 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // This alternative version of static_assert was introduced in C++17. - CPPExpression::Result result = (yyvsp[(3) - (5)].u.expr)->evaluate(); + CPPExpression::Result result = (yyvsp[-2].u.expr)->evaluate(); if (result._type == CPPExpression::RT_error) { - yywarning("static_assert requires a constant expression", (yylsp[(3) - (5)])); + yywarning("static_assert requires a constant expression", (yylsp[-2])); } else if (!result.as_boolean()) { - yywarning("static_assert failed", (yylsp[(3) - (5)])); + yywarning("static_assert failed", (yylsp[-2])); } } +#line 4366 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 38: -/* Line 1792 of yacc.c */ -#line 797 "dtool/src/cppparser/cppBison.yxx" +#line 797 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPScope *new_scope = new CPPScope(current_scope, CPPNameComponent("temp"), V_public); push_scope(new_scope); } +#line 4376 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 39: -/* Line 1792 of yacc.c */ -#line 803 "dtool/src/cppparser/cppBison.yxx" +#line 803 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { delete current_scope; pop_scope(); } +#line 4385 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 40: -/* Line 1792 of yacc.c */ -#line 812 "dtool/src/cppparser/cppBison.yxx" +#line 812 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.integer) = 0; } +#line 4393 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 41: -/* Line 1792 of yacc.c */ -#line 816 "dtool/src/cppparser/cppBison.yxx" +#line 816 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // This isn't really a storage class, but it helps with parsing. - (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_const; + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_const; } +#line 4402 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 42: -/* Line 1792 of yacc.c */ -#line 821 "dtool/src/cppparser/cppBison.yxx" +#line 821 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_extern; + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_extern; } +#line 4410 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 43: -/* Line 1792 of yacc.c */ -#line 825 "dtool/src/cppparser/cppBison.yxx" +#line 825 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(3) - (3)].u.integer) | (int)CPPInstance::SC_extern; - if ((yyvsp[(2) - (3)].str) == "C") { + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_extern; + if ((yyvsp[-1].str) == "C") { (yyval.u.integer) |= (int)CPPInstance::SC_c_binding; - } else if ((yyvsp[(2) - (3)].str) == "C++") { + } else if ((yyvsp[-1].str) == "C++") { (yyval.u.integer) &= ~(int)CPPInstance::SC_c_binding; } else { - yywarning("Ignoring unknown linkage type \"" + (yyvsp[(2) - (3)].str) + "\"", (yylsp[(2) - (3)])); + yywarning("Ignoring unknown linkage type \"" + (yyvsp[-1].str) + "\"", (yylsp[-1])); } } +#line 4425 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 44: -/* Line 1792 of yacc.c */ -#line 836 "dtool/src/cppparser/cppBison.yxx" +#line 836 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_static; + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_static; } +#line 4433 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 45: -/* Line 1792 of yacc.c */ -#line 840 "dtool/src/cppparser/cppBison.yxx" +#line 840 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_inline; + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_inline; } +#line 4441 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 46: -/* Line 1792 of yacc.c */ -#line 844 "dtool/src/cppparser/cppBison.yxx" +#line 844 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_virtual; + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_virtual; } +#line 4449 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 47: -/* Line 1792 of yacc.c */ -#line 848 "dtool/src/cppparser/cppBison.yxx" +#line 848 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_explicit; + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_explicit; } +#line 4457 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 48: -/* Line 1792 of yacc.c */ -#line 852 "dtool/src/cppparser/cppBison.yxx" +#line 852 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_register; + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_register; } +#line 4465 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 49: -/* Line 1792 of yacc.c */ -#line 856 "dtool/src/cppparser/cppBison.yxx" +#line 856 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_volatile; + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_volatile; } +#line 4473 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 50: -/* Line 1792 of yacc.c */ -#line 860 "dtool/src/cppparser/cppBison.yxx" +#line 860 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_mutable; + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_mutable; } +#line 4481 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 51: -/* Line 1792 of yacc.c */ -#line 864 "dtool/src/cppparser/cppBison.yxx" +#line 864 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_constexpr; + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_constexpr; } +#line 4489 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 52: -/* Line 1792 of yacc.c */ -#line 868 "dtool/src/cppparser/cppBison.yxx" +#line 868 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_blocking; + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_blocking; } +#line 4497 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 53: -/* Line 1792 of yacc.c */ -#line 872 "dtool/src/cppparser/cppBison.yxx" +#line 872 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_extension; + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_extension; } +#line 4505 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 54: -/* Line 1792 of yacc.c */ -#line 876 "dtool/src/cppparser/cppBison.yxx" +#line 876 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(2) - (2)].u.integer) | (int)CPPInstance::SC_thread_local; + (yyval.u.integer) = (yyvsp[0].u.integer) | (int)CPPInstance::SC_thread_local; } +#line 4513 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 55: -/* Line 1792 of yacc.c */ -#line 880 "dtool/src/cppparser/cppBison.yxx" +#line 880 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // Ignore attribute specifiers for now. - (yyval.u.integer) = (yyvsp[(4) - (4)].u.integer); + (yyval.u.integer) = (yyvsp[0].u.integer); } +#line 4522 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 56: -/* Line 1792 of yacc.c */ -#line 885 "dtool/src/cppparser/cppBison.yxx" +#line 885 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(5) - (5)].u.integer); + (yyval.u.integer) = (yyvsp[0].u.integer); } +#line 4530 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 57: -/* Line 1792 of yacc.c */ -#line 889 "dtool/src/cppparser/cppBison.yxx" +#line 889 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(5) - (5)].u.integer); + (yyval.u.integer) = (yyvsp[0].u.integer); } +#line 4538 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 63: -/* Line 1792 of yacc.c */ -#line 907 "dtool/src/cppparser/cppBison.yxx" +#line 907 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // We don't need to push/pop type, because we can't nest // type_like_declaration. - if ((yyvsp[(2) - (2)].u.decl)->as_type_declaration()) { - current_type = (yyvsp[(2) - (2)].u.decl)->as_type_declaration()->_type; + if ((yyvsp[0].u.decl)->as_type_declaration()) { + current_type = (yyvsp[0].u.decl)->as_type_declaration()->_type; } else { - current_type = (yyvsp[(2) - (2)].u.decl)->as_type(); + current_type = (yyvsp[0].u.decl)->as_type(); } - push_storage_class((yyvsp[(1) - (2)].u.integer)); + push_storage_class((yyvsp[-1].u.integer)); } +#line 4553 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 64: -/* Line 1792 of yacc.c */ -#line 918 "dtool/src/cppparser/cppBison.yxx" +#line 918 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_storage_class(); } +#line 4561 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 65: -/* Line 1792 of yacc.c */ -#line 923 "dtool/src/cppparser/cppBison.yxx" +#line 923 "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 // storage class, but we require it just to help yacc out in its // parsing. - current_scope->add_declaration((yyvsp[(2) - (3)].u.decl), global_scope, current_lexer, (yylsp[(2) - (3)])); + current_scope->add_declaration((yyvsp[-1].u.decl), global_scope, current_lexer, (yylsp[-1])); } +#line 4574 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 66: -/* Line 1792 of yacc.c */ -#line 932 "dtool/src/cppparser/cppBison.yxx" +#line 932 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - if ((yyvsp[(2) - (3)].u.instance) != (CPPInstance *)NULL) { - (yyvsp[(2) - (3)].u.instance)->_storage_class |= (current_storage_class | (yyvsp[(1) - (3)].u.integer)); - current_scope->add_declaration((yyvsp[(2) - (3)].u.instance), global_scope, current_lexer, (yylsp[(2) - (3)])); - (yyvsp[(2) - (3)].u.instance)->set_initializer((yyvsp[(3) - (3)].u.expr)); + 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 4586 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 67: -/* Line 1792 of yacc.c */ -#line 940 "dtool/src/cppparser/cppBison.yxx" +#line 940 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - if ((yyvsp[(2) - (3)].u.instance) != (CPPInstance *)NULL) { - (yyvsp[(2) - (3)].u.instance)->_storage_class |= (current_storage_class | (yyvsp[(1) - (3)].u.integer)); - current_scope->add_declaration((yyvsp[(2) - (3)].u.instance), global_scope, current_lexer, (yylsp[(2) - (3)])); - (yyvsp[(2) - (3)].u.instance)->set_initializer((yyvsp[(3) - (3)].u.expr)); + 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 4598 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 69: -/* Line 1792 of yacc.c */ -#line 956 "dtool/src/cppparser/cppBison.yxx" +#line 956 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if (current_storage_class & CPPInstance::SC_const) { - (yyvsp[(1) - (2)].u.inst_ident)->add_modifier(IIT_const); + (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); } - CPPInstance *inst = new CPPInstance(current_type, (yyvsp[(1) - (2)].u.inst_ident), + CPPInstance *inst = new CPPInstance(current_type, (yyvsp[-1].u.inst_ident), current_storage_class, - (yylsp[(1) - (2)]).file); - inst->set_initializer((yyvsp[(2) - (2)].u.expr)); - current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[(1) - (2)])); + (yylsp[-1]).file); + inst->set_initializer((yyvsp[0].u.expr)); + current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[-1])); } +#line 4613 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 70: -/* Line 1792 of yacc.c */ -#line 967 "dtool/src/cppparser/cppBison.yxx" +#line 967 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if (current_storage_class & CPPInstance::SC_const) { - (yyvsp[(1) - (4)].u.inst_ident)->add_modifier(IIT_const); + (yyvsp[-3].u.inst_ident)->add_modifier(IIT_const); } - CPPInstance *inst = new CPPInstance(current_type, (yyvsp[(1) - (4)].u.inst_ident), + CPPInstance *inst = new CPPInstance(current_type, (yyvsp[-3].u.inst_ident), current_storage_class, - (yylsp[(1) - (4)]).file); - inst->set_initializer((yyvsp[(2) - (4)].u.expr)); - current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[(1) - (4)])); + (yylsp[-3]).file); + inst->set_initializer((yyvsp[-2].u.expr)); + current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[-3])); } +#line 4628 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 71: -/* Line 1792 of yacc.c */ -#line 982 "dtool/src/cppparser/cppBison.yxx" +#line 982 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // We don't need to push/pop type, because we can't nest // multiple_var_declarations. - if ((yyvsp[(2) - (2)].u.decl)->as_type_declaration()) { - current_type = (yyvsp[(2) - (2)].u.decl)->as_type_declaration()->_type; + if ((yyvsp[0].u.decl)->as_type_declaration()) { + current_type = (yyvsp[0].u.decl)->as_type_declaration()->_type; } else { - current_type = (yyvsp[(2) - (2)].u.decl)->as_type(); + current_type = (yyvsp[0].u.decl)->as_type(); } - push_storage_class((yyvsp[(1) - (2)].u.integer)); + push_storage_class((yyvsp[-1].u.integer)); } +#line 4643 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 72: -/* Line 1792 of yacc.c */ -#line 993 "dtool/src/cppparser/cppBison.yxx" +#line 993 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_storage_class(); } +#line 4651 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 73: -/* Line 1792 of yacc.c */ -#line 997 "dtool/src/cppparser/cppBison.yxx" +#line 997 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - if ((yyvsp[(2) - (3)].u.instance) != (CPPDeclaration *)NULL) { - CPPInstance *inst = (yyvsp[(2) - (3)].u.instance)->as_instance(); + if ((yyvsp[-1].u.instance) != (CPPDeclaration *)NULL) { + CPPInstance *inst = (yyvsp[-1].u.instance)->as_instance(); if (inst != (CPPInstance *)NULL) { - inst->_storage_class |= (current_storage_class | (yyvsp[(1) - (3)].u.integer)); - current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[(2) - (3)])); + inst->_storage_class |= (current_storage_class | (yyvsp[-2].u.integer)); + current_scope->add_declaration(inst, global_scope, current_lexer, (yylsp[-1])); CPPTypedefType *typedef_type = new CPPTypedefType(inst->_type, inst->_ident, current_scope); - current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, (yylsp[(2) - (3)])); + current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, (yylsp[-1])); } } } +#line 4667 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 74: -/* Line 1792 of yacc.c */ -#line 1012 "dtool/src/cppparser/cppBison.yxx" +#line 1012 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if (current_storage_class & CPPInstance::SC_const) { - (yyvsp[(1) - (2)].u.inst_ident)->add_modifier(IIT_const); + (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); } CPPType *target_type = current_type; - CPPTypedefType *typedef_type = new CPPTypedefType(target_type, (yyvsp[(1) - (2)].u.inst_ident), current_scope, (yylsp[(1) - (2)]).file); - current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, (yylsp[(1) - (2)])); + 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 4680 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 75: -/* Line 1792 of yacc.c */ -#line 1021 "dtool/src/cppparser/cppBison.yxx" +#line 1021 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { if (current_storage_class & CPPInstance::SC_const) { - (yyvsp[(1) - (4)].u.inst_ident)->add_modifier(IIT_const); + (yyvsp[-3].u.inst_ident)->add_modifier(IIT_const); } CPPType *target_type = current_type; - CPPTypedefType *typedef_type = new CPPTypedefType(target_type, (yyvsp[(1) - (4)].u.inst_ident), current_scope, (yylsp[(1) - (4)]).file); - current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, (yylsp[(1) - (4)])); + 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 4693 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 76: -/* Line 1792 of yacc.c */ -#line 1035 "dtool/src/cppparser/cppBison.yxx" +#line 1035 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - push_scope((yyvsp[(1) - (2)].u.identifier)->get_scope(current_scope, global_scope)); + push_scope((yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope)); } +#line 4701 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 77: -/* Line 1792 of yacc.c */ -#line 1039 "dtool/src/cppparser/cppBison.yxx" +#line 1039 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPType *type; - if ((yyvsp[(1) - (6)].u.identifier)->get_simple_name() == current_scope->get_simple_name() || - (yyvsp[(1) - (6)].u.identifier)->get_simple_name() == string("~") + current_scope->get_simple_name()) { + if ((yyvsp[-5].u.identifier)->get_simple_name() == current_scope->get_simple_name() || + (yyvsp[-5].u.identifier)->get_simple_name() == string("~") + current_scope->get_simple_name()) { // This is a constructor, and has no return. type = new CPPSimpleType(CPPSimpleType::T_void); } else { // This isn't a constructor, so it has an implicit return type of // int. - yywarning("function has no return type, assuming int", (yylsp[(1) - (6)])); + yywarning("function has no return type, assuming int", (yylsp[-5])); type = new CPPSimpleType(CPPSimpleType::T_int); } pop_scope(); - CPPInstanceIdentifier *ii = new CPPInstanceIdentifier((yyvsp[(1) - (6)].u.identifier)); - ii->add_func_modifier((yyvsp[(4) - (6)].u.param_list), (yyvsp[(6) - (6)].u.integer)); + CPPInstanceIdentifier *ii = new CPPInstanceIdentifier((yyvsp[-5].u.identifier)); + ii->add_func_modifier((yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); - (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[(1) - (6)]).file); + (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-5]).file); } +#line 4725 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 78: -/* Line 1792 of yacc.c */ -#line 1059 "dtool/src/cppparser/cppBison.yxx" +#line 1059 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - push_scope((yyvsp[(1) - (2)].u.identifier)->get_scope(current_scope, global_scope)); + push_scope((yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope)); } +#line 4733 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 79: -/* Line 1792 of yacc.c */ -#line 1063 "dtool/src/cppparser/cppBison.yxx" +#line 1063 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_scope(); CPPType *type; - if ((yyvsp[(1) - (6)].u.identifier)->get_simple_name() == current_scope->get_simple_name()) { + if ((yyvsp[-5].u.identifier)->get_simple_name() == current_scope->get_simple_name()) { // This is a constructor, and has no return. type = new CPPSimpleType(CPPSimpleType::T_void); } else { @@ -5259,111 +4746,111 @@ yyreduce: type = new CPPSimpleType(CPPSimpleType::T_int); } - CPPInstanceIdentifier *ii = new CPPInstanceIdentifier((yyvsp[(1) - (6)].u.identifier)); - ii->add_func_modifier((yyvsp[(4) - (6)].u.param_list), (yyvsp[(6) - (6)].u.integer)); + CPPInstanceIdentifier *ii = new CPPInstanceIdentifier((yyvsp[-5].u.identifier)); + ii->add_func_modifier((yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); - (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[(1) - (6)]).file); + (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-5]).file); } +#line 4755 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 80: -/* Line 1792 of yacc.c */ -#line 1086 "dtool/src/cppparser/cppBison.yxx" +#line 1086 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - push_scope((yyvsp[(2) - (3)].u.identifier)->get_scope(current_scope, global_scope)); + push_scope((yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope)); } +#line 4763 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 81: -/* Line 1792 of yacc.c */ -#line 1090 "dtool/src/cppparser/cppBison.yxx" +#line 1090 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_scope(); - if ((yyvsp[(2) - (7)].u.identifier)->is_scoped()) { - yyerror("Invalid destructor name: ~" + (yyvsp[(2) - (7)].u.identifier)->get_fully_scoped_name(), (yylsp[(2) - (7)])); + if ((yyvsp[-5].u.identifier)->is_scoped()) { + yyerror("Invalid destructor name: ~" + (yyvsp[-5].u.identifier)->get_fully_scoped_name(), (yylsp[-5])); } else { CPPIdentifier *ident = - new CPPIdentifier("~" + (yyvsp[(2) - (7)].u.identifier)->get_simple_name(), (yylsp[(2) - (7)])); - delete (yyvsp[(2) - (7)].u.identifier); + new CPPIdentifier("~" + (yyvsp[-5].u.identifier)->get_simple_name(), (yylsp[-5])); + delete (yyvsp[-5].u.identifier); CPPType *type; type = new CPPSimpleType(CPPSimpleType::T_void); CPPInstanceIdentifier *ii = new CPPInstanceIdentifier(ident); - ii->add_func_modifier((yyvsp[(5) - (7)].u.param_list), (yyvsp[(7) - (7)].u.integer)); + ii->add_func_modifier((yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); - (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[(2) - (7)]).file); + (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[-5]).file); } } +#line 4786 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 82: -/* Line 1792 of yacc.c */ -#line 1116 "dtool/src/cppparser/cppBison.yxx" +#line 1116 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - push_scope((yyvsp[(4) - (6)].u.inst_ident)->get_scope(current_scope, global_scope)); + push_scope((yyvsp[-2].u.inst_ident)->get_scope(current_scope, global_scope)); } +#line 4794 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 83: -/* Line 1792 of yacc.c */ -#line 1120 "dtool/src/cppparser/cppBison.yxx" +#line 1120 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_scope(); - CPPType *type = (yyvsp[(1) - (11)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + CPPType *type = (yyvsp[-10].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type == NULL) { - yyerror(string("internal error resolving type ") + (yyvsp[(1) - (11)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (11)])); + yyerror(string("internal error resolving type ") + (yyvsp[-10].u.identifier)->get_fully_scoped_name(), (yylsp[-10])); } assert(type != NULL); - CPPInstanceIdentifier *ii = (yyvsp[(4) - (11)].u.inst_ident); + CPPInstanceIdentifier *ii = (yyvsp[-7].u.inst_ident); ii->add_modifier(IIT_pointer); - ii->add_func_modifier((yyvsp[(8) - (11)].u.param_list), (yyvsp[(10) - (11)].u.integer)); - (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[(1) - (11)]).file); + 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 4812 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 84: -/* Line 1792 of yacc.c */ -#line 1134 "dtool/src/cppparser/cppBison.yxx" +#line 1134 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - push_scope((yyvsp[(5) - (7)].u.inst_ident)->get_scope(current_scope, global_scope)); + push_scope((yyvsp[-2].u.inst_ident)->get_scope(current_scope, global_scope)); } +#line 4820 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 85: -/* Line 1792 of yacc.c */ -#line 1138 "dtool/src/cppparser/cppBison.yxx" +#line 1138 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_scope(); - CPPType *type = (yyvsp[(1) - (12)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + CPPType *type = (yyvsp[-11].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type == NULL) { - yyerror(string("internal error resolving type ") + (yyvsp[(1) - (12)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (12)])); + yyerror(string("internal error resolving type ") + (yyvsp[-11].u.identifier)->get_fully_scoped_name(), (yylsp[-11])); } assert(type != NULL); - CPPInstanceIdentifier *ii = (yyvsp[(5) - (12)].u.inst_ident); - ii->add_scoped_pointer_modifier((yyvsp[(3) - (12)].u.identifier)); - ii->add_func_modifier((yyvsp[(9) - (12)].u.param_list), (yyvsp[(11) - (12)].u.integer)); - (yyval.u.instance) = new CPPInstance(type, ii, 0, (yylsp[(1) - (12)]).file); + CPPInstanceIdentifier *ii = (yyvsp[-7].u.inst_ident); + ii->add_scoped_pointer_modifier((yyvsp[-9].u.identifier)); + 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 4838 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 86: -/* Line 1792 of yacc.c */ -#line 1154 "dtool/src/cppparser/cppBison.yxx" +#line 1154 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - if ((yyvsp[(1) - (4)].u.identifier) != NULL) { - push_scope((yyvsp[(1) - (4)].u.identifier)->get_scope(current_scope, global_scope)); + if ((yyvsp[-3].u.identifier) != NULL) { + push_scope((yyvsp[-3].u.identifier)->get_scope(current_scope, global_scope)); } } +#line 4848 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 87: -/* Line 1792 of yacc.c */ -#line 1160 "dtool/src/cppparser/cppBison.yxx" +#line 1160 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - if ((yyvsp[(1) - (8)].u.identifier) != NULL) { + if ((yyvsp[-7].u.identifier) != NULL) { pop_scope(); } @@ -5376,772 +4863,772 @@ yyreduce: // We give typecast operators the name "operator typecast ", // where is a simple name of the type to be typecast. Use // the method's return type to determine the full type description. - string name = "operator typecast " + (yyvsp[(2) - (8)].u.type)->get_simple_name(); - CPPIdentifier *ident = (yyvsp[(1) - (8)].u.identifier); + string name = "operator typecast " + (yyvsp[-6].u.type)->get_simple_name(); + CPPIdentifier *ident = (yyvsp[-7].u.identifier); if (ident == NULL) { - ident = new CPPIdentifier(name, (yylsp[(2) - (8)])); + ident = new CPPIdentifier(name, (yylsp[-6])); } else { ident->add_name(name); } (yyval.u.instance) = CPPInstance::make_typecast_function - (new CPPInstance((yyvsp[(2) - (8)].u.type), (yyvsp[(3) - (8)].u.inst_ident), 0, (yylsp[(3) - (8)]).file), ident, (yyvsp[(6) - (8)].u.param_list), (yyvsp[(8) - (8)].u.integer)); + (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 4877 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 88: -/* Line 1792 of yacc.c */ -#line 1185 "dtool/src/cppparser/cppBison.yxx" +#line 1185 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - if ((yyvsp[(1) - (5)].u.identifier) != NULL) { - push_scope((yyvsp[(1) - (5)].u.identifier)->get_scope(current_scope, global_scope)); + if ((yyvsp[-4].u.identifier) != NULL) { + push_scope((yyvsp[-4].u.identifier)->get_scope(current_scope, global_scope)); } } +#line 4887 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 89: -/* Line 1792 of yacc.c */ -#line 1191 "dtool/src/cppparser/cppBison.yxx" +#line 1191 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - if ((yyvsp[(1) - (9)].u.identifier) != NULL) { + if ((yyvsp[-8].u.identifier) != NULL) { pop_scope(); } - CPPIdentifier *ident = (yyvsp[(1) - (9)].u.identifier); + CPPIdentifier *ident = (yyvsp[-8].u.identifier); if (ident == NULL) { - ident = new CPPIdentifier("operator typecast", (yylsp[(4) - (9)])); + ident = new CPPIdentifier("operator typecast", (yylsp[-5])); } else { ident->add_name("operator typecast"); } - (yyvsp[(4) - (9)].u.inst_ident)->add_modifier(IIT_const); + (yyvsp[-5].u.inst_ident)->add_modifier(IIT_const); (yyval.u.instance) = CPPInstance::make_typecast_function - (new CPPInstance((yyvsp[(3) - (9)].u.type), (yyvsp[(4) - (9)].u.inst_ident), 0, (yylsp[(4) - (9)]).file), ident, (yyvsp[(7) - (9)].u.param_list), (yyvsp[(9) - (9)].u.integer)); + (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 4907 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 90: -/* Line 1792 of yacc.c */ -#line 1211 "dtool/src/cppparser/cppBison.yxx" +#line 1211 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPDeclaration *decl = - (yyvsp[(1) - (1)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + (yyvsp[0].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (decl != (CPPDeclaration *)NULL) { (yyval.u.instance) = decl->as_instance(); } else { (yyval.u.instance) = (CPPInstance *)NULL; } } +#line 4921 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 91: -/* Line 1792 of yacc.c */ -#line 1224 "dtool/src/cppparser/cppBison.yxx" +#line 1224 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.integer) = 0; } +#line 4929 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 92: -/* Line 1792 of yacc.c */ -#line 1228 "dtool/src/cppparser/cppBison.yxx" +#line 1228 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(1) - (2)].u.integer) | (int)CPPFunctionType::F_const_method; + (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_const_method; } +#line 4937 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 93: -/* Line 1792 of yacc.c */ -#line 1232 "dtool/src/cppparser/cppBison.yxx" +#line 1232 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(1) - (2)].u.integer) | (int)CPPFunctionType::F_volatile_method; + (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_volatile_method; } +#line 4945 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 94: -/* Line 1792 of yacc.c */ -#line 1236 "dtool/src/cppparser/cppBison.yxx" +#line 1236 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(1) - (2)].u.integer) | (int)CPPFunctionType::F_noexcept; + (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_noexcept; } +#line 4953 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 95: -/* Line 1792 of yacc.c */ -#line 1249 "dtool/src/cppparser/cppBison.yxx" +#line 1249 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(1) - (2)].u.integer) | (int)CPPFunctionType::F_final; + (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_final; } +#line 4961 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 96: -/* Line 1792 of yacc.c */ -#line 1253 "dtool/src/cppparser/cppBison.yxx" +#line 1253 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(1) - (2)].u.integer) | (int)CPPFunctionType::F_override; + (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_override; } +#line 4969 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 97: -/* Line 1792 of yacc.c */ -#line 1257 "dtool/src/cppparser/cppBison.yxx" +#line 1257 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(1) - (2)].u.integer) | (int)CPPFunctionType::F_lvalue_method; + (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_lvalue_method; } +#line 4977 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 98: -/* Line 1792 of yacc.c */ -#line 1261 "dtool/src/cppparser/cppBison.yxx" +#line 1261 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(1) - (2)].u.integer) | (int)CPPFunctionType::F_rvalue_method; + (yyval.u.integer) = (yyvsp[-1].u.integer) | (int)CPPFunctionType::F_rvalue_method; } +#line 4985 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 99: -/* Line 1792 of yacc.c */ -#line 1265 "dtool/src/cppparser/cppBison.yxx" +#line 1265 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // Used for lambdas, currently ignored. - (yyval.u.integer) = (yyvsp[(1) - (2)].u.integer); + (yyval.u.integer) = (yyvsp[-1].u.integer); } +#line 4994 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 100: -/* Line 1792 of yacc.c */ -#line 1270 "dtool/src/cppparser/cppBison.yxx" +#line 1270 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // Used for lambdas in C++17, currently ignored. - (yyval.u.integer) = (yyvsp[(1) - (2)].u.integer); + (yyval.u.integer) = (yyvsp[-1].u.integer); } +#line 5003 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 101: -/* Line 1792 of yacc.c */ -#line 1275 "dtool/src/cppparser/cppBison.yxx" +#line 1275 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(1) - (4)].u.integer); + (yyval.u.integer) = (yyvsp[-3].u.integer); } +#line 5011 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 102: -/* Line 1792 of yacc.c */ -#line 1279 "dtool/src/cppparser/cppBison.yxx" +#line 1279 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(1) - (5)].u.integer); + (yyval.u.integer) = (yyvsp[-4].u.integer); } +#line 5019 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 103: -/* Line 1792 of yacc.c */ -#line 1283 "dtool/src/cppparser/cppBison.yxx" +#line 1283 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(1) - (6)].u.integer); + (yyval.u.integer) = (yyvsp[-5].u.integer); } +#line 5027 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 104: -/* Line 1792 of yacc.c */ -#line 1287 "dtool/src/cppparser/cppBison.yxx" +#line 1287 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.integer) = (yyvsp[(1) - (4)].u.integer); + (yyval.u.integer) = (yyvsp[-3].u.integer); } +#line 5035 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 105: -/* Line 1792 of yacc.c */ -#line 1294 "dtool/src/cppparser/cppBison.yxx" +#line 1294 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "!"; } +#line 5043 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 106: -/* Line 1792 of yacc.c */ -#line 1298 "dtool/src/cppparser/cppBison.yxx" +#line 1298 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "~"; } +#line 5051 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 107: -/* Line 1792 of yacc.c */ -#line 1302 "dtool/src/cppparser/cppBison.yxx" +#line 1302 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "*"; } +#line 5059 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 108: -/* Line 1792 of yacc.c */ -#line 1306 "dtool/src/cppparser/cppBison.yxx" +#line 1306 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "/"; } +#line 5067 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 109: -/* Line 1792 of yacc.c */ -#line 1310 "dtool/src/cppparser/cppBison.yxx" +#line 1310 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "%"; } +#line 5075 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 110: -/* Line 1792 of yacc.c */ -#line 1314 "dtool/src/cppparser/cppBison.yxx" +#line 1314 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "+"; } +#line 5083 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 111: -/* Line 1792 of yacc.c */ -#line 1318 "dtool/src/cppparser/cppBison.yxx" +#line 1318 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "-"; } +#line 5091 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 112: -/* Line 1792 of yacc.c */ -#line 1322 "dtool/src/cppparser/cppBison.yxx" +#line 1322 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "|"; } +#line 5099 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 113: -/* Line 1792 of yacc.c */ -#line 1326 "dtool/src/cppparser/cppBison.yxx" +#line 1326 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "&"; } +#line 5107 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 114: -/* Line 1792 of yacc.c */ -#line 1330 "dtool/src/cppparser/cppBison.yxx" +#line 1330 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "^"; } +#line 5115 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 115: -/* Line 1792 of yacc.c */ -#line 1334 "dtool/src/cppparser/cppBison.yxx" +#line 1334 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "||"; } +#line 5123 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 116: -/* Line 1792 of yacc.c */ -#line 1338 "dtool/src/cppparser/cppBison.yxx" +#line 1338 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "&&"; } +#line 5131 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 117: -/* Line 1792 of yacc.c */ -#line 1342 "dtool/src/cppparser/cppBison.yxx" +#line 1342 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "=="; } +#line 5139 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 118: -/* Line 1792 of yacc.c */ -#line 1346 "dtool/src/cppparser/cppBison.yxx" +#line 1346 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "!="; } +#line 5147 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 119: -/* Line 1792 of yacc.c */ -#line 1350 "dtool/src/cppparser/cppBison.yxx" +#line 1350 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "<="; } +#line 5155 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 120: -/* Line 1792 of yacc.c */ -#line 1354 "dtool/src/cppparser/cppBison.yxx" +#line 1354 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = ">="; } +#line 5163 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 121: -/* Line 1792 of yacc.c */ -#line 1358 "dtool/src/cppparser/cppBison.yxx" +#line 1358 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "<"; } +#line 5171 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 122: -/* Line 1792 of yacc.c */ -#line 1362 "dtool/src/cppparser/cppBison.yxx" +#line 1362 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = ">"; } +#line 5179 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 123: -/* Line 1792 of yacc.c */ -#line 1366 "dtool/src/cppparser/cppBison.yxx" +#line 1366 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "<<"; } +#line 5187 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 124: -/* Line 1792 of yacc.c */ -#line 1370 "dtool/src/cppparser/cppBison.yxx" +#line 1370 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = ">>"; } +#line 5195 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 125: -/* Line 1792 of yacc.c */ -#line 1374 "dtool/src/cppparser/cppBison.yxx" +#line 1374 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "="; } +#line 5203 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 126: -/* Line 1792 of yacc.c */ -#line 1378 "dtool/src/cppparser/cppBison.yxx" +#line 1378 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = ","; } +#line 5211 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 127: -/* Line 1792 of yacc.c */ -#line 1382 "dtool/src/cppparser/cppBison.yxx" +#line 1382 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "++"; } +#line 5219 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 128: -/* Line 1792 of yacc.c */ -#line 1386 "dtool/src/cppparser/cppBison.yxx" +#line 1386 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "--"; } +#line 5227 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 129: -/* Line 1792 of yacc.c */ -#line 1390 "dtool/src/cppparser/cppBison.yxx" +#line 1390 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "*="; } +#line 5235 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 130: -/* Line 1792 of yacc.c */ -#line 1394 "dtool/src/cppparser/cppBison.yxx" +#line 1394 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "/="; } +#line 5243 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 131: -/* Line 1792 of yacc.c */ -#line 1398 "dtool/src/cppparser/cppBison.yxx" +#line 1398 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "%="; } +#line 5251 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 132: -/* Line 1792 of yacc.c */ -#line 1402 "dtool/src/cppparser/cppBison.yxx" +#line 1402 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "+="; } +#line 5259 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 133: -/* Line 1792 of yacc.c */ -#line 1406 "dtool/src/cppparser/cppBison.yxx" +#line 1406 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "-="; } +#line 5267 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 134: -/* Line 1792 of yacc.c */ -#line 1410 "dtool/src/cppparser/cppBison.yxx" +#line 1410 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "|="; } +#line 5275 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 135: -/* Line 1792 of yacc.c */ -#line 1414 "dtool/src/cppparser/cppBison.yxx" +#line 1414 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "&="; } +#line 5283 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 136: -/* Line 1792 of yacc.c */ -#line 1418 "dtool/src/cppparser/cppBison.yxx" +#line 1418 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "^="; } +#line 5291 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 137: -/* Line 1792 of yacc.c */ -#line 1422 "dtool/src/cppparser/cppBison.yxx" +#line 1422 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "<<="; } +#line 5299 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 138: -/* Line 1792 of yacc.c */ -#line 1426 "dtool/src/cppparser/cppBison.yxx" +#line 1426 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = ">>="; } +#line 5307 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 139: -/* Line 1792 of yacc.c */ -#line 1430 "dtool/src/cppparser/cppBison.yxx" +#line 1430 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "->"; } +#line 5315 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 140: -/* Line 1792 of yacc.c */ -#line 1434 "dtool/src/cppparser/cppBison.yxx" +#line 1434 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "[]"; } +#line 5323 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 141: -/* Line 1792 of yacc.c */ -#line 1438 "dtool/src/cppparser/cppBison.yxx" +#line 1438 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "()"; } +#line 5331 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 142: -/* Line 1792 of yacc.c */ -#line 1442 "dtool/src/cppparser/cppBison.yxx" +#line 1442 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "new"; } +#line 5339 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 143: -/* Line 1792 of yacc.c */ -#line 1446 "dtool/src/cppparser/cppBison.yxx" +#line 1446 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.str) = "delete"; } - break; - - case 147: -/* Line 1792 of yacc.c */ -#line 1459 "dtool/src/cppparser/cppBison.yxx" - { - push_scope(new CPPTemplateScope(current_scope)); -} +#line 5347 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 148: -/* Line 1792 of yacc.c */ -#line 1463 "dtool/src/cppparser/cppBison.yxx" +#line 1460 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + push_scope(new CPPTemplateScope(current_scope)); +} +#line 5355 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 149: +#line 1464 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_scope(); } +#line 5363 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 152: -/* Line 1792 of yacc.c */ -#line 1476 "dtool/src/cppparser/cppBison.yxx" + case 154: +#line 1478 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPTemplateScope *ts = current_scope->as_template_scope(); assert(ts != NULL); - ts->add_template_parameter((yyvsp[(1) - (1)].u.decl)); + ts->add_template_parameter((yyvsp[0].u.decl)); } +#line 5373 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 153: -/* Line 1792 of yacc.c */ -#line 1482 "dtool/src/cppparser/cppBison.yxx" + case 155: +#line 1484 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPTemplateScope *ts = current_scope->as_template_scope(); assert(ts != NULL); - ts->add_template_parameter((yyvsp[(3) - (3)].u.decl)); -} - break; - - case 156: -/* Line 1792 of yacc.c */ -#line 1496 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((CPPIdentifier *)NULL)); -} - break; - - case 157: -/* Line 1792 of yacc.c */ -#line 1500 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((yyvsp[(2) - (2)].u.identifier))); + ts->add_template_parameter((yyvsp[0].u.decl)); } +#line 5383 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 158: -/* Line 1792 of yacc.c */ -#line 1504 "dtool/src/cppparser/cppBison.yxx" +#line 1498 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((yyvsp[(2) - (4)].u.identifier), (yyvsp[(4) - (4)].u.type))); + (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((CPPIdentifier *)NULL)); } +#line 5391 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 159: -/* Line 1792 of yacc.c */ -#line 1508 "dtool/src/cppparser/cppBison.yxx" +#line 1502 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.decl) = CPPType::new_type(new CPPClassTemplateParameter((yyvsp[0].u.identifier))); +} +#line 5399 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 160: +#line 1506 "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 5407 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 161: +#line 1510 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPClassTemplateParameter *ctp = new CPPClassTemplateParameter((CPPIdentifier *)NULL); ctp->_packed = true; (yyval.u.decl) = CPPType::new_type(ctp); } - break; - - case 160: -/* Line 1792 of yacc.c */ -#line 1514 "dtool/src/cppparser/cppBison.yxx" - { - CPPClassTemplateParameter *ctp = new CPPClassTemplateParameter((yyvsp[(3) - (3)].u.identifier)); - ctp->_packed = true; - (yyval.u.decl) = CPPType::new_type(ctp); -} - break; - - case 161: -/* Line 1792 of yacc.c */ -#line 1520 "dtool/src/cppparser/cppBison.yxx" - { - CPPInstance *inst = new CPPInstance((yyvsp[(1) - (3)].u.type), (yyvsp[(2) - (3)].u.inst_ident), 0, (yylsp[(2) - (3)]).file); - inst->set_initializer((yyvsp[(3) - (3)].u.expr)); - (yyval.u.decl) = inst; -} +#line 5417 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 162: -/* Line 1792 of yacc.c */ -#line 1526 "dtool/src/cppparser/cppBison.yxx" +#line 1516 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyvsp[(3) - (4)].u.inst_ident)->add_modifier(IIT_const); - CPPInstance *inst = new CPPInstance((yyvsp[(2) - (4)].u.type), (yyvsp[(3) - (4)].u.inst_ident), 0, (yylsp[(3) - (4)]).file); - inst->set_initializer((yyvsp[(4) - (4)].u.expr)); - (yyval.u.decl) = inst; + CPPClassTemplateParameter *ctp = new CPPClassTemplateParameter((yyvsp[0].u.identifier)); + ctp->_packed = true; + (yyval.u.decl) = CPPType::new_type(ctp); } +#line 5427 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 163: -/* Line 1792 of yacc.c */ -#line 1533 "dtool/src/cppparser/cppBison.yxx" +#line 1522 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPInstance *inst = new CPPInstance((yyvsp[(1) - (2)].u.type), (yyvsp[(2) - (2)].u.inst_ident), 0, (yylsp[(2) - (2)]).file); + 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 5437 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 164: -/* Line 1792 of yacc.c */ -#line 1538 "dtool/src/cppparser/cppBison.yxx" +#line 1528 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyvsp[(3) - (3)].u.inst_ident)->add_modifier(IIT_const); - CPPInstance *inst = new CPPInstance((yyvsp[(2) - (3)].u.type), (yyvsp[(3) - (3)].u.inst_ident), 0, (yylsp[(3) - (3)]).file); + (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 5448 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 165: -/* Line 1792 of yacc.c */ -#line 1547 "dtool/src/cppparser/cppBison.yxx" +#line 1535 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.type) = CPPType::new_type((yyvsp[(1) - (1)].u.simple_type)); + CPPInstance *inst = new CPPInstance((yyvsp[-1].u.type), (yyvsp[0].u.inst_ident), 0, (yylsp[0]).file); + (yyval.u.decl) = inst; } +#line 5457 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 166: -/* Line 1792 of yacc.c */ -#line 1551 "dtool/src/cppparser/cppBison.yxx" +#line 1540 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - yywarning("Not a type: " + (yyvsp[(1) - (1)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (1)])); - (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_unknown)); + (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 5467 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 167: -/* Line 1792 of yacc.c */ -#line 1556 "dtool/src/cppparser/cppBison.yxx" +#line 1549 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.type) = (yyvsp[(1) - (1)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); - if ((yyval.u.type) == NULL) { - yyerror(string("internal error resolving type ") + (yyvsp[(1) - (1)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (1)])); - } - assert((yyval.u.type) != NULL); + (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); } +#line 5475 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 168: -/* Line 1792 of yacc.c */ -#line 1564 "dtool/src/cppparser/cppBison.yxx" +#line 1553 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.type) = (yyvsp[(1) - (1)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); - if ((yyval.u.type) == NULL) { - yyerror(string("internal error resolving type ") + (yyvsp[(1) - (1)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (1)])); - } - assert((yyval.u.type) != NULL); + 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 5484 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 169: -/* Line 1792 of yacc.c */ -#line 1576 "dtool/src/cppparser/cppBison.yxx" +#line 1558 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[(1) - (1)].u.identifier)); + (yyval.u.type) = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if ((yyval.u.type) == NULL) { + yyerror(string("internal error resolving type ") + (yyvsp[0].u.identifier)->get_fully_scoped_name(), (yylsp[0])); + } + assert((yyval.u.type) != NULL); } +#line 5496 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 170: -/* Line 1792 of yacc.c */ -#line 1580 "dtool/src/cppparser/cppBison.yxx" +#line 1566 "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 5508 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 171: +#line 1578 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); +} +#line 5516 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 172: +#line 1582 "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 // like a regular function. - CPPIdentifier *ident = (yyvsp[(1) - (2)].u.identifier); + CPPIdentifier *ident = (yyvsp[-1].u.identifier); if (ident == NULL) { - ident = new CPPIdentifier("operator "+(yyvsp[(2) - (2)].str), (yylsp[(2) - (2)])); + ident = new CPPIdentifier("operator "+(yyvsp[0].str), (yylsp[0])); } else { - ident->_names.push_back("operator "+(yyvsp[(2) - (2)].str)); + ident->_names.push_back("operator "+(yyvsp[0].str)); } (yyval.u.inst_ident) = new CPPInstanceIdentifier(ident); } - break; - - case 171: -/* Line 1792 of yacc.c */ -#line 1594 "dtool/src/cppparser/cppBison.yxx" - { - // A C++11 literal operator. - if (!(yyvsp[(2) - (3)].str).empty()) { - yyerror("expected empty string", (yylsp[(2) - (3)])); - } - CPPIdentifier *ident = (yyvsp[(1) - (3)].u.identifier); - if (ident == NULL) { - ident = new CPPIdentifier("operator \"\" "+(yyvsp[(3) - (3)].u.identifier)->get_simple_name(), (yylsp[(3) - (3)])); - } else { - ident->_names.push_back("operator \"\" "+(yyvsp[(3) - (3)].u.identifier)->get_simple_name()); - } - - (yyval.u.inst_ident) = new CPPInstanceIdentifier(ident); -} - break; - - case 172: -/* Line 1792 of yacc.c */ -#line 1609 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_const); -} +#line 5534 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 173: -/* Line 1792 of yacc.c */ -#line 1614 "dtool/src/cppparser/cppBison.yxx" +#line 1596 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_volatile); + // A C++11 literal operator. + if (!(yyvsp[-1].str).empty()) { + yyerror("expected empty string", (yylsp[-1])); + } + CPPIdentifier *ident = (yyvsp[-2].u.identifier); + if (ident == NULL) { + ident = new CPPIdentifier("operator \"\" "+(yyvsp[0].u.identifier)->get_simple_name(), (yylsp[0])); + } else { + ident->_names.push_back("operator \"\" "+(yyvsp[0].u.identifier)->get_simple_name()); + } + + (yyval.u.inst_ident) = new CPPInstanceIdentifier(ident); } +#line 5553 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 174: -/* Line 1792 of yacc.c */ -#line 1619 "dtool/src/cppparser/cppBison.yxx" +#line 1611 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_pointer); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_const); } +#line 5562 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 175: -/* Line 1792 of yacc.c */ -#line 1624 "dtool/src/cppparser/cppBison.yxx" +#line 1616 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_reference); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_volatile); } +#line 5571 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 176: -/* Line 1792 of yacc.c */ -#line 1629 "dtool/src/cppparser/cppBison.yxx" +#line 1621 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_pointer); } +#line 5580 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 177: -/* Line 1792 of yacc.c */ -#line 1634 "dtool/src/cppparser/cppBison.yxx" +#line 1626 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(3) - (3)].u.inst_ident); - (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[(1) - (3)].u.identifier)); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_reference); } +#line 5589 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 178: -/* Line 1792 of yacc.c */ -#line 1639 "dtool/src/cppparser/cppBison.yxx" +#line 1631 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(1) - (4)].u.inst_ident); - (yyval.u.inst_ident)->add_array_modifier((yyvsp[(3) - (4)].u.expr)); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } +#line 5598 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 179: -/* Line 1792 of yacc.c */ -#line 1644 "dtool/src/cppparser/cppBison.yxx" +#line 1636 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (3)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_paren); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier)); } +#line 5607 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 180: -/* Line 1792 of yacc.c */ -#line 1649 "dtool/src/cppparser/cppBison.yxx" +#line 1641 "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 5616 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 181: +#line 1646 "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 5625 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 182: +#line 1651 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // Create a scope for this function (in case it is a function) - CPPScope *scope = new CPPScope((yyvsp[(1) - (2)].u.inst_ident)->get_scope(current_scope, global_scope), + CPPScope *scope = new CPPScope((yyvsp[-1].u.inst_ident)->get_scope(current_scope, global_scope), CPPNameComponent(""), V_private); // It still needs to be able to pick up any template arguments, if this is @@ -6151,2052 +5638,2052 @@ yyreduce: push_scope(scope); } +#line 5642 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 181: -/* Line 1792 of yacc.c */ -#line 1662 "dtool/src/cppparser/cppBison.yxx" + case 183: +#line 1664 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_scope(); - (yyval.u.inst_ident) = (yyvsp[(1) - (6)].u.inst_ident); - if ((yyvsp[(4) - (6)].u.param_list)->is_parameter_expr() && (yyvsp[(6) - (6)].u.integer) == 0) { + (yyval.u.inst_ident) = (yyvsp[-5].u.inst_ident); + if ((yyvsp[-2].u.param_list)->is_parameter_expr() && (yyvsp[0].u.integer) == 0) { // Oops, this must have been an instance declaration with a // parameter list, not a function prototype. - (yyval.u.inst_ident)->add_initializer_modifier((yyvsp[(4) - (6)].u.param_list)); + (yyval.u.inst_ident)->add_initializer_modifier((yyvsp[-2].u.param_list)); } else { // This was (probably) a function prototype. - (yyval.u.inst_ident)->add_func_modifier((yyvsp[(4) - (6)].u.param_list), (yyvsp[(6) - (6)].u.integer)); + (yyval.u.inst_ident)->add_func_modifier((yyvsp[-2].u.param_list), (yyvsp[0].u.integer)); } } +#line 5660 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 182: -/* Line 1792 of yacc.c */ -#line 1680 "dtool/src/cppparser/cppBison.yxx" + case 184: +#line 1682 "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 // order to avoid shift/reduce conflicts. - if ((yyvsp[(2) - (2)].u.type) != NULL) { - (yyvsp[(1) - (2)].u.inst_ident)->add_trailing_return_type((yyvsp[(2) - (2)].u.type)); + if ((yyvsp[0].u.type) != NULL) { + (yyvsp[-1].u.inst_ident)->add_trailing_return_type((yyvsp[0].u.type)); } - (yyval.u.inst_ident) = (yyvsp[(1) - (2)].u.inst_ident); -} - break; - - case 183: -/* Line 1792 of yacc.c */ -#line 1690 "dtool/src/cppparser/cppBison.yxx" - { - // Bitfield definition. - (yyvsp[(1) - (3)].u.inst_ident)->_bit_width = (yyvsp[(3) - (3)].u.integer); - (yyval.u.inst_ident) = (yyvsp[(1) - (3)].u.inst_ident); -} - break; - - case 184: -/* Line 1792 of yacc.c */ -#line 1700 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.type) = NULL; + (yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident); } +#line 5674 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 185: -/* Line 1792 of yacc.c */ -#line 1704 "dtool/src/cppparser/cppBison.yxx" +#line 1692 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.type) = (yyvsp[(3) - (3)].u.inst_ident)->unroll_type((yyvsp[(2) - (3)].u.type)); + // Bitfield definition. + (yyvsp[-2].u.inst_ident)->_bit_width = (yyvsp[0].u.integer); + (yyval.u.inst_ident) = (yyvsp[-2].u.inst_ident); } +#line 5684 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 186: -/* Line 1792 of yacc.c */ -#line 1708 "dtool/src/cppparser/cppBison.yxx" +#line 1702 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyvsp[(4) - (4)].u.inst_ident)->add_modifier(IIT_const); - (yyval.u.type) = (yyvsp[(4) - (4)].u.inst_ident)->unroll_type((yyvsp[(3) - (4)].u.type)); + (yyval.u.type) = NULL; } +#line 5692 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 187: -/* Line 1792 of yacc.c */ -#line 1717 "dtool/src/cppparser/cppBison.yxx" +#line 1706 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.param_list) = new CPPParameterList; + (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); } +#line 5700 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 188: -/* Line 1792 of yacc.c */ -#line 1721 "dtool/src/cppparser/cppBison.yxx" +#line 1710 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.param_list) = new CPPParameterList; - (yyval.u.param_list)->_includes_ellipsis = true; + (yyvsp[0].u.inst_ident)->add_modifier(IIT_const); + (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); } +#line 5709 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 189: -/* Line 1792 of yacc.c */ -#line 1726 "dtool/src/cppparser/cppBison.yxx" +#line 1719 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.param_list) = (yyvsp[(1) - (1)].u.param_list); + (yyval.u.param_list) = new CPPParameterList; } +#line 5717 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 190: -/* Line 1792 of yacc.c */ -#line 1730 "dtool/src/cppparser/cppBison.yxx" +#line 1723 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.param_list) = (yyvsp[(1) - (3)].u.param_list); + (yyval.u.param_list) = new CPPParameterList; (yyval.u.param_list)->_includes_ellipsis = true; } +#line 5726 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 191: -/* Line 1792 of yacc.c */ -#line 1735 "dtool/src/cppparser/cppBison.yxx" +#line 1728 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.param_list) = (yyvsp[(1) - (2)].u.param_list); - (yyval.u.param_list)->_includes_ellipsis = true; + (yyval.u.param_list) = (yyvsp[0].u.param_list); } +#line 5734 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 192: -/* Line 1792 of yacc.c */ -#line 1743 "dtool/src/cppparser/cppBison.yxx" +#line 1732 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.param_list) = new CPPParameterList; - (yyval.u.param_list)->_parameters.push_back((yyvsp[(1) - (1)].u.instance)); + (yyval.u.param_list) = (yyvsp[-2].u.param_list); + (yyval.u.param_list)->_includes_ellipsis = true; } +#line 5743 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 193: -/* Line 1792 of yacc.c */ -#line 1748 "dtool/src/cppparser/cppBison.yxx" +#line 1737 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.param_list) = (yyvsp[(1) - (3)].u.param_list); - (yyval.u.param_list)->_parameters.push_back((yyvsp[(3) - (3)].u.instance)); + (yyval.u.param_list) = (yyvsp[-1].u.param_list); + (yyval.u.param_list)->_includes_ellipsis = true; } +#line 5752 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 194: -/* Line 1792 of yacc.c */ -#line 1756 "dtool/src/cppparser/cppBison.yxx" +#line 1745 "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 5761 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 195: -/* Line 1792 of yacc.c */ -#line 1760 "dtool/src/cppparser/cppBison.yxx" +#line 1750 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.param_list) = new CPPParameterList; - (yyval.u.param_list)->_includes_ellipsis = true; + (yyval.u.param_list) = (yyvsp[-2].u.param_list); + (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); } +#line 5770 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 196: -/* Line 1792 of yacc.c */ -#line 1765 "dtool/src/cppparser/cppBison.yxx" +#line 1758 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.param_list) = (yyvsp[(1) - (1)].u.param_list); + (yyval.u.param_list) = new CPPParameterList; } +#line 5778 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 197: -/* Line 1792 of yacc.c */ -#line 1769 "dtool/src/cppparser/cppBison.yxx" +#line 1762 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.param_list) = (yyvsp[(1) - (3)].u.param_list); + (yyval.u.param_list) = new CPPParameterList; (yyval.u.param_list)->_includes_ellipsis = true; } +#line 5787 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 198: -/* Line 1792 of yacc.c */ -#line 1774 "dtool/src/cppparser/cppBison.yxx" +#line 1767 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.param_list) = (yyvsp[(1) - (2)].u.param_list); - (yyval.u.param_list)->_includes_ellipsis = true; + (yyval.u.param_list) = (yyvsp[0].u.param_list); } +#line 5795 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 199: -/* Line 1792 of yacc.c */ -#line 1782 "dtool/src/cppparser/cppBison.yxx" +#line 1771 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.param_list) = new CPPParameterList; - (yyval.u.param_list)->_parameters.push_back((yyvsp[(1) - (1)].u.instance)); + (yyval.u.param_list) = (yyvsp[-2].u.param_list); + (yyval.u.param_list)->_includes_ellipsis = true; } +#line 5804 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 200: -/* Line 1792 of yacc.c */ -#line 1787 "dtool/src/cppparser/cppBison.yxx" +#line 1776 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.param_list) = (yyvsp[(1) - (3)].u.param_list); - (yyval.u.param_list)->_parameters.push_back((yyvsp[(3) - (3)].u.instance)); + (yyval.u.param_list) = (yyvsp[-1].u.param_list); + (yyval.u.param_list)->_includes_ellipsis = true; } +#line 5813 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 201: -/* Line 1792 of yacc.c */ -#line 1795 "dtool/src/cppparser/cppBison.yxx" +#line 1784 "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 5822 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 202: -/* Line 1792 of yacc.c */ -#line 1799 "dtool/src/cppparser/cppBison.yxx" +#line 1789 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (yyvsp[(2) - (2)].u.expr); + (yyval.u.param_list) = (yyvsp[-2].u.param_list); + (yyval.u.param_list)->_parameters.push_back((yyvsp[0].u.instance)); } +#line 5831 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 203: -/* Line 1792 of yacc.c */ -#line 1806 "dtool/src/cppparser/cppBison.yxx" +#line 1797 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = (CPPExpression *)NULL; } +#line 5839 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 204: -/* Line 1792 of yacc.c */ -#line 1810 "dtool/src/cppparser/cppBison.yxx" +#line 1801 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (yyvsp[(2) - (2)].u.expr); + (yyval.u.expr) = (yyvsp[0].u.expr); } +#line 5847 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 205: -/* Line 1792 of yacc.c */ -#line 1817 "dtool/src/cppparser/cppBison.yxx" +#line 1808 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = (CPPExpression *)NULL; } +#line 5855 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 206: -/* Line 1792 of yacc.c */ -#line 1821 "dtool/src/cppparser/cppBison.yxx" +#line 1812 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (CPPExpression *)NULL; + (yyval.u.expr) = (yyvsp[0].u.expr); } +#line 5863 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 207: -/* Line 1792 of yacc.c */ -#line 1825 "dtool/src/cppparser/cppBison.yxx" +#line 1819 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = (CPPExpression *)NULL; } +#line 5871 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 208: -/* Line 1792 of yacc.c */ -#line 1829 "dtool/src/cppparser/cppBison.yxx" +#line 1823 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::get_default()); + (yyval.u.expr) = (CPPExpression *)NULL; } +#line 5879 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 209: -/* Line 1792 of yacc.c */ -#line 1833 "dtool/src/cppparser/cppBison.yxx" +#line 1827 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::get_delete()); + (yyval.u.expr) = (CPPExpression *)NULL; } +#line 5887 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 210: -/* Line 1792 of yacc.c */ -#line 1840 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = (CPPExpression *)NULL; -} - break; - - case 211: -/* Line 1792 of yacc.c */ -#line 1844 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = (CPPExpression *)NULL; -} - break; - - case 212: -/* Line 1792 of yacc.c */ -#line 1848 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = (yyvsp[(2) - (3)].u.expr); -} - break; - - case 213: -/* Line 1792 of yacc.c */ -#line 1852 "dtool/src/cppparser/cppBison.yxx" +#line 1831 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(CPPExpression::get_default()); } +#line 5895 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 214: -/* Line 1792 of yacc.c */ -#line 1856 "dtool/src/cppparser/cppBison.yxx" + case 211: +#line 1835 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(CPPExpression::get_delete()); } +#line 5903 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 215: -/* Line 1792 of yacc.c */ -#line 1860 "dtool/src/cppparser/cppBison.yxx" + case 212: +#line 1842 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = (CPPExpression *)NULL; } +#line 5911 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 219: -/* Line 1792 of yacc.c */ -#line 1873 "dtool/src/cppparser/cppBison.yxx" + case 213: +#line 1846 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { + (yyval.u.expr) = (CPPExpression *)NULL; } +#line 5919 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 223: -/* Line 1792 of yacc.c */ -#line 1882 "dtool/src/cppparser/cppBison.yxx" + case 214: +#line 1850 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.instance) = new CPPInstance((yyvsp[(1) - (3)].u.type), (yyvsp[(2) - (3)].u.inst_ident), 0, (yylsp[(2) - (3)]).file); - (yyval.u.instance)->set_initializer((yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = (yyvsp[-1].u.expr); } +#line 5927 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 224: -/* Line 1792 of yacc.c */ -#line 1887 "dtool/src/cppparser/cppBison.yxx" + case 215: +#line 1854 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyvsp[(3) - (4)].u.inst_ident)->add_modifier(IIT_const); - (yyval.u.instance) = new CPPInstance((yyvsp[(2) - (4)].u.type), (yyvsp[(3) - (4)].u.inst_ident), 0, (yylsp[(3) - (4)]).file); - (yyval.u.instance)->set_initializer((yyvsp[(4) - (4)].u.expr)); + (yyval.u.expr) = new CPPExpression(CPPExpression::get_default()); } +#line 5935 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 216: +#line 1858 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::get_delete()); +} +#line 5943 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 217: +#line 1862 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (CPPExpression *)NULL; +} +#line 5951 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 221: +#line 1875 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { +} +#line 5958 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 225: -/* Line 1792 of yacc.c */ -#line 1893 "dtool/src/cppparser/cppBison.yxx" +#line 1884 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyvsp[(4) - (5)].u.inst_ident)->add_modifier(IIT_const); - (yyval.u.instance) = new CPPInstance((yyvsp[(3) - (5)].u.type), (yyvsp[(4) - (5)].u.inst_ident), 0, (yylsp[(3) - (5)]).file); - (yyval.u.instance)->set_initializer((yyvsp[(5) - (5)].u.expr)); + (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 5967 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 226: -/* Line 1792 of yacc.c */ -#line 1899 "dtool/src/cppparser/cppBison.yxx" +#line 1889 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.instance) = new CPPInstance((yyvsp[(1) - (3)].u.type), (yyvsp[(2) - (3)].u.inst_ident), 0, (yylsp[(2) - (3)]).file); - (yyval.u.instance)->set_initializer((yyvsp[(3) - (3)].u.expr)); + (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 5977 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 227: -/* Line 1792 of yacc.c */ -#line 1904 "dtool/src/cppparser/cppBison.yxx" +#line 1895 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyvsp[(3) - (4)].u.inst_ident)->add_modifier(IIT_const); - (yyval.u.instance) = new CPPInstance((yyvsp[(2) - (4)].u.type), (yyvsp[(3) - (4)].u.inst_ident), 0, (yylsp[(3) - (4)]).file); - (yyval.u.instance)->set_initializer((yyvsp[(4) - (4)].u.expr)); + (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 5987 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 228: -/* Line 1792 of yacc.c */ -#line 1910 "dtool/src/cppparser/cppBison.yxx" +#line 1901 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyvsp[(4) - (5)].u.inst_ident)->add_modifier(IIT_const); - (yyval.u.instance) = new CPPInstance((yyvsp[(3) - (5)].u.type), (yyvsp[(4) - (5)].u.inst_ident), 0, (yylsp[(3) - (5)]).file); - (yyval.u.instance)->set_initializer((yyvsp[(5) - (5)].u.expr)); + (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 5996 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 229: -/* Line 1792 of yacc.c */ -#line 1916 "dtool/src/cppparser/cppBison.yxx" +#line 1906 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.instance) = (yyvsp[(2) - (2)].u.instance); + (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); + (yyval.u.instance) = new CPPInstance((yyvsp[-2].u.type), (yyvsp[-1].u.inst_ident), 0, (yylsp[-1]).file); + (yyval.u.instance)->set_initializer((yyvsp[0].u.expr)); } +#line 6006 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 230: -/* Line 1792 of yacc.c */ -#line 1920 "dtool/src/cppparser/cppBison.yxx" +#line 1912 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.instance) = (yyvsp[(4) - (4)].u.instance); + (yyvsp[-1].u.inst_ident)->add_modifier(IIT_const); + (yyval.u.instance) = new CPPInstance((yyvsp[-2].u.type), (yyvsp[-1].u.inst_ident), 0, (yylsp[-2]).file); + (yyval.u.instance)->set_initializer((yyvsp[0].u.expr)); } +#line 6016 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 231: -/* Line 1792 of yacc.c */ -#line 1931 "dtool/src/cppparser/cppBison.yxx" +#line 1918 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.instance) = (yyvsp[(1) - (1)].u.instance); + (yyval.u.instance) = (yyvsp[0].u.instance); } +#line 6024 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 232: -/* Line 1792 of yacc.c */ -#line 1935 "dtool/src/cppparser/cppBison.yxx" +#line 1922 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.instance) = (yyvsp[0].u.instance); +} +#line 6032 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 233: +#line 1933 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.instance) = (yyvsp[0].u.instance); +} +#line 6040 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 234: +#line 1937 "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[(1) - (1)].u.expr)); -} - break; - - case 233: -/* Line 1792 of yacc.c */ -#line 1945 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); -} - break; - - case 234: -/* Line 1792 of yacc.c */ -#line 1949 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[(1) - (1)].u.identifier)); + (yyval.u.instance)->set_initializer((yyvsp[0].u.expr)); } +#line 6051 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 235: -/* Line 1792 of yacc.c */ -#line 1953 "dtool/src/cppparser/cppBison.yxx" +#line 1947 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_const); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); } +#line 6059 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 236: -/* Line 1792 of yacc.c */ -#line 1958 "dtool/src/cppparser/cppBison.yxx" +#line 1951 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_volatile); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); } +#line 6067 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 237: -/* Line 1792 of yacc.c */ -#line 1963 "dtool/src/cppparser/cppBison.yxx" +#line 1955 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_pointer); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_const); } +#line 6076 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 238: -/* Line 1792 of yacc.c */ -#line 1968 "dtool/src/cppparser/cppBison.yxx" +#line 1960 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_reference); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_volatile); } +#line 6085 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 239: -/* Line 1792 of yacc.c */ -#line 1973 "dtool/src/cppparser/cppBison.yxx" +#line 1965 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_pointer); } +#line 6094 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 240: -/* Line 1792 of yacc.c */ -#line 1978 "dtool/src/cppparser/cppBison.yxx" +#line 1970 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(3) - (3)].u.inst_ident); - (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[(1) - (3)].u.identifier)); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_reference); } +#line 6103 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 241: -/* Line 1792 of yacc.c */ -#line 1983 "dtool/src/cppparser/cppBison.yxx" +#line 1975 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(1) - (4)].u.inst_ident); - (yyval.u.inst_ident)->add_array_modifier((yyvsp[(3) - (4)].u.expr)); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } +#line 6112 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 242: -/* Line 1792 of yacc.c */ -#line 1991 "dtool/src/cppparser/cppBison.yxx" +#line 1980 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier)); } +#line 6121 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 243: -/* Line 1792 of yacc.c */ -#line 1995 "dtool/src/cppparser/cppBison.yxx" +#line 1985 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[(1) - (1)].u.identifier)); + (yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident); + (yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr)); } +#line 6130 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 244: -/* Line 1792 of yacc.c */ -#line 1999 "dtool/src/cppparser/cppBison.yxx" +#line 1993 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_const); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); } +#line 6138 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 245: -/* Line 1792 of yacc.c */ -#line 2004 "dtool/src/cppparser/cppBison.yxx" +#line 1997 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_volatile); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); } +#line 6146 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 246: -/* Line 1792 of yacc.c */ -#line 2009 "dtool/src/cppparser/cppBison.yxx" +#line 2001 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_pointer); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_const); } +#line 6155 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 247: -/* Line 1792 of yacc.c */ -#line 2014 "dtool/src/cppparser/cppBison.yxx" +#line 2006 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_reference); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_volatile); } +#line 6164 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 248: -/* Line 1792 of yacc.c */ -#line 2019 "dtool/src/cppparser/cppBison.yxx" +#line 2011 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_pointer); } +#line 6173 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 249: -/* Line 1792 of yacc.c */ -#line 2024 "dtool/src/cppparser/cppBison.yxx" +#line 2016 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(3) - (3)].u.inst_ident); - (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[(1) - (3)].u.identifier)); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_reference); } +#line 6182 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 250: -/* Line 1792 of yacc.c */ -#line 2029 "dtool/src/cppparser/cppBison.yxx" +#line 2021 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(1) - (4)].u.inst_ident); - (yyval.u.inst_ident)->add_array_modifier((yyvsp[(3) - (4)].u.expr)); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } +#line 6191 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 251: -/* Line 1792 of yacc.c */ -#line 2034 "dtool/src/cppparser/cppBison.yxx" +#line 2026 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (7)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_paren); - (yyval.u.inst_ident)->add_func_modifier((yyvsp[(5) - (7)].u.param_list), (yyvsp[(7) - (7)].u.integer)); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier)); } +#line 6200 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 252: -/* Line 1792 of yacc.c */ -#line 2040 "dtool/src/cppparser/cppBison.yxx" +#line 2031 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (3)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_paren); + (yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident); + (yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr)); } +#line 6209 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 253: -/* Line 1792 of yacc.c */ -#line 2048 "dtool/src/cppparser/cppBison.yxx" +#line 2036 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); - (yyval.u.inst_ident)->_packed = true; + (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 6219 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 254: -/* Line 1792 of yacc.c */ -#line 2053 "dtool/src/cppparser/cppBison.yxx" +#line 2042 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[(2) - (2)].u.identifier)); - (yyval.u.inst_ident)->_packed = true; + (yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_paren); } +#line 6228 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 255: -/* Line 1792 of yacc.c */ -#line 2058 "dtool/src/cppparser/cppBison.yxx" +#line 2050 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_const); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); + (yyval.u.inst_ident)->_packed = true; } +#line 6237 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 256: -/* Line 1792 of yacc.c */ -#line 2063 "dtool/src/cppparser/cppBison.yxx" +#line 2055 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_volatile); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); + (yyval.u.inst_ident)->_packed = true; } +#line 6246 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 257: -/* Line 1792 of yacc.c */ -#line 2068 "dtool/src/cppparser/cppBison.yxx" +#line 2060 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_pointer); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_const); } +#line 6255 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 258: -/* Line 1792 of yacc.c */ -#line 2073 "dtool/src/cppparser/cppBison.yxx" +#line 2065 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_reference); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_volatile); } +#line 6264 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 259: -/* Line 1792 of yacc.c */ -#line 2078 "dtool/src/cppparser/cppBison.yxx" +#line 2070 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_pointer); } +#line 6273 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 260: -/* Line 1792 of yacc.c */ -#line 2083 "dtool/src/cppparser/cppBison.yxx" +#line 2075 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(3) - (3)].u.inst_ident); - (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[(1) - (3)].u.identifier)); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_reference); } +#line 6282 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 261: -/* Line 1792 of yacc.c */ -#line 2088 "dtool/src/cppparser/cppBison.yxx" +#line 2080 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(1) - (4)].u.inst_ident); - (yyval.u.inst_ident)->add_array_modifier((yyvsp[(3) - (4)].u.expr)); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } +#line 6291 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 262: -/* Line 1792 of yacc.c */ -#line 2093 "dtool/src/cppparser/cppBison.yxx" +#line 2085 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (7)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_paren); - (yyval.u.inst_ident)->add_func_modifier((yyvsp[(5) - (7)].u.param_list), (yyvsp[(7) - (7)].u.integer)); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier)); } +#line 6300 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 263: -/* Line 1792 of yacc.c */ -#line 2099 "dtool/src/cppparser/cppBison.yxx" +#line 2090 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (3)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_paren); + (yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident); + (yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr)); } +#line 6309 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 264: -/* Line 1792 of yacc.c */ -#line 2107 "dtool/src/cppparser/cppBison.yxx" +#line 2095 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); + (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 6319 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 265: -/* Line 1792 of yacc.c */ -#line 2111 "dtool/src/cppparser/cppBison.yxx" +#line 2101 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); - (yyval.u.inst_ident)->_packed = true; + (yyval.u.inst_ident) = (yyvsp[-1].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_paren); } +#line 6328 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 266: -/* Line 1792 of yacc.c */ -#line 2116 "dtool/src/cppparser/cppBison.yxx" +#line 2109 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[(2) - (2)].u.identifier)); - (yyval.u.inst_ident)->_packed = true; + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); } +#line 6336 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 267: -/* Line 1792 of yacc.c */ -#line 2121 "dtool/src/cppparser/cppBison.yxx" +#line 2113 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_const); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); + (yyval.u.inst_ident)->_packed = true; } +#line 6345 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 268: -/* Line 1792 of yacc.c */ -#line 2126 "dtool/src/cppparser/cppBison.yxx" +#line 2118 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_volatile); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); + (yyval.u.inst_ident)->_packed = true; } +#line 6354 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 269: -/* Line 1792 of yacc.c */ -#line 2131 "dtool/src/cppparser/cppBison.yxx" +#line 2123 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_pointer); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_const); } +#line 6363 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 270: -/* Line 1792 of yacc.c */ -#line 2136 "dtool/src/cppparser/cppBison.yxx" +#line 2128 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_reference); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_volatile); } +#line 6372 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 271: -/* Line 1792 of yacc.c */ -#line 2141 "dtool/src/cppparser/cppBison.yxx" +#line 2133 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_pointer); } +#line 6381 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 272: -/* Line 1792 of yacc.c */ -#line 2146 "dtool/src/cppparser/cppBison.yxx" +#line 2138 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(3) - (3)].u.inst_ident); - (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[(1) - (3)].u.identifier)); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_reference); } +#line 6390 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 273: -/* Line 1792 of yacc.c */ -#line 2151 "dtool/src/cppparser/cppBison.yxx" +#line 2143 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(1) - (4)].u.inst_ident); - (yyval.u.inst_ident)->add_array_modifier((yyvsp[(3) - (4)].u.expr)); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } +#line 6399 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 274: -/* Line 1792 of yacc.c */ -#line 2159 "dtool/src/cppparser/cppBison.yxx" +#line 2148 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier)); } +#line 6408 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 275: -/* Line 1792 of yacc.c */ -#line 2163 "dtool/src/cppparser/cppBison.yxx" +#line 2153 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); - (yyval.u.inst_ident)->_packed = true; + (yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident); + (yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr)); } +#line 6417 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 276: -/* Line 1792 of yacc.c */ -#line 2168 "dtool/src/cppparser/cppBison.yxx" +#line 2161 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[(2) - (2)].u.identifier)); - (yyval.u.inst_ident)->_packed = true; + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); } +#line 6425 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 277: -/* Line 1792 of yacc.c */ -#line 2173 "dtool/src/cppparser/cppBison.yxx" +#line 2165 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_const); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); + (yyval.u.inst_ident)->_packed = true; } +#line 6434 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 278: -/* Line 1792 of yacc.c */ -#line 2178 "dtool/src/cppparser/cppBison.yxx" +#line 2170 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_volatile); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((yyvsp[0].u.identifier)); + (yyval.u.inst_ident)->_packed = true; } +#line 6443 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 279: -/* Line 1792 of yacc.c */ -#line 2183 "dtool/src/cppparser/cppBison.yxx" +#line 2175 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_pointer); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_const); } +#line 6452 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 280: -/* Line 1792 of yacc.c */ -#line 2188 "dtool/src/cppparser/cppBison.yxx" +#line 2180 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_reference); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_volatile); } +#line 6461 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 281: -/* Line 1792 of yacc.c */ -#line 2193 "dtool/src/cppparser/cppBison.yxx" +#line 2185 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(2) - (2)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_pointer); } +#line 6470 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 282: -/* Line 1792 of yacc.c */ -#line 2198 "dtool/src/cppparser/cppBison.yxx" +#line 2190 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(3) - (3)].u.inst_ident); - (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[(1) - (3)].u.identifier)); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_reference); } +#line 6479 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 283: -/* Line 1792 of yacc.c */ -#line 2203 "dtool/src/cppparser/cppBison.yxx" +#line 2195 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(1) - (4)].u.inst_ident); - (yyval.u.inst_ident)->add_array_modifier((yyvsp[(3) - (4)].u.expr)); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); } +#line 6488 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 284: -/* Line 1792 of yacc.c */ -#line 2208 "dtool/src/cppparser/cppBison.yxx" +#line 2200 "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[(2) - (5)].u.param_list), (yyvsp[(4) - (5)].u.integer), (yyvsp[(5) - (5)].u.type)); + (yyval.u.inst_ident) = (yyvsp[0].u.inst_ident); + (yyval.u.inst_ident)->add_scoped_pointer_modifier((yyvsp[-2].u.identifier)); } +#line 6497 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 285: -/* Line 1792 of yacc.c */ -#line 2214 "dtool/src/cppparser/cppBison.yxx" +#line 2205 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(3) - (9)].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[(6) - (9)].u.param_list), (yyvsp[(8) - (9)].u.integer), (yyvsp[(9) - (9)].u.type)); + (yyval.u.inst_ident) = (yyvsp[-3].u.inst_ident); + (yyval.u.inst_ident)->add_array_modifier((yyvsp[-1].u.expr)); } +#line 6506 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 286: -/* Line 1792 of yacc.c */ -#line 2221 "dtool/src/cppparser/cppBison.yxx" +#line 2210 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(3) - (9)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_reference); + (yyval.u.inst_ident) = new CPPInstanceIdentifier((CPPIdentifier *)NULL); (yyval.u.inst_ident)->add_modifier(IIT_paren); - (yyval.u.inst_ident)->add_func_modifier((yyvsp[(6) - (9)].u.param_list), (yyvsp[(8) - (9)].u.integer), (yyvsp[(9) - (9)].u.type)); + (yyval.u.inst_ident)->add_func_modifier((yyvsp[-3].u.param_list), (yyvsp[-1].u.integer), (yyvsp[0].u.type)); } +#line 6516 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 287: -/* Line 1792 of yacc.c */ -#line 2228 "dtool/src/cppparser/cppBison.yxx" +#line 2216 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.inst_ident) = (yyvsp[(3) - (9)].u.inst_ident); - (yyval.u.inst_ident)->add_modifier(IIT_rvalue_reference); + (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[(6) - (9)].u.param_list), (yyvsp[(8) - (9)].u.integer), (yyvsp[(9) - (9)].u.type)); + (yyval.u.inst_ident)->add_func_modifier((yyvsp[-3].u.param_list), (yyvsp[-1].u.integer), (yyvsp[0].u.type)); } +#line 6527 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 288: -/* Line 1792 of yacc.c */ -#line 2238 "dtool/src/cppparser/cppBison.yxx" +#line 2223 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.type) = CPPType::new_type((yyvsp[(1) - (1)].u.simple_type)); + (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 6538 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 289: -/* Line 1792 of yacc.c */ -#line 2242 "dtool/src/cppparser/cppBison.yxx" +#line 2230 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.type) = (yyvsp[(1) - (1)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); - if ((yyval.u.type) == NULL) { - yyerror(string("internal error resolving type ") + (yyvsp[(1) - (1)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (1)])); - } - assert((yyval.u.type) != NULL); + (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 6549 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 290: -/* Line 1792 of yacc.c */ -#line 2250 "dtool/src/cppparser/cppBison.yxx" +#line 2240 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[(2) - (2)].u.identifier))); + (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); } +#line 6557 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 291: -/* Line 1792 of yacc.c */ -#line 2254 "dtool/src/cppparser/cppBison.yxx" +#line 2244 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.type) = CPPType::new_type((yyvsp[(1) - (1)].u.struct_type)); + (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 6569 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 292: -/* Line 1792 of yacc.c */ -#line 2258 "dtool/src/cppparser/cppBison.yxx" +#line 2252 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.type) = CPPType::new_type((yyvsp[(1) - (1)].u.struct_type)); + (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); } +#line 6577 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 293: -/* Line 1792 of yacc.c */ -#line 2262 "dtool/src/cppparser/cppBison.yxx" +#line 2256 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.type) = CPPType::new_type((yyvsp[(1) - (1)].u.enum_type)); + (yyval.u.type) = CPPType::new_type((yyvsp[0].u.struct_type)); } +#line 6585 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 294: -/* Line 1792 of yacc.c */ -#line 2266 "dtool/src/cppparser/cppBison.yxx" +#line 2260 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPType *type = (yyvsp[(3) - (3)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); - if (type != NULL) { - (yyval.u.type) = type; - } else { - CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType((yyvsp[(1) - (3)].u.extension_enum), (yyvsp[(3) - (3)].u.identifier), current_scope, (yylsp[(1) - (3)]).file)) - ->as_extension_type(); - CPPScope *scope = (yyvsp[(3) - (3)].u.identifier)->get_scope(current_scope, global_scope); - if (scope != NULL) { - scope->define_extension_type(et); - } - (yyval.u.type) = et; - } + (yyval.u.type) = CPPType::new_type((yyvsp[0].u.struct_type)); } +#line 6593 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 295: -/* Line 1792 of yacc.c */ -#line 2282 "dtool/src/cppparser/cppBison.yxx" +#line 2264 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPType *type = (yyvsp[(2) - (4)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + (yyval.u.type) = CPPType::new_type((yyvsp[0].u.enum_type)); +} +#line 6601 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 296: +#line 2268 "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) { (yyval.u.type) = type; } else { CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType((yyvsp[(1) - (4)].u.extension_enum), (yyvsp[(2) - (4)].u.identifier), current_scope, (yylsp[(1) - (4)]).file)) + CPPType::new_type(new CPPExtensionType((yyvsp[-2].u.extension_enum), (yyvsp[0].u.identifier), current_scope, (yylsp[-2]).file)) ->as_extension_type(); - CPPScope *scope = (yyvsp[(2) - (4)].u.identifier)->get_scope(current_scope, global_scope); + CPPScope *scope = (yyvsp[0].u.identifier)->get_scope(current_scope, global_scope); if (scope != NULL) { scope->define_extension_type(et); } (yyval.u.type) = et; } } - break; - - case 296: -/* Line 1792 of yacc.c */ -#line 2298 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.type) = (yyvsp[(3) - (4)].u.expr)->determine_type(); - if ((yyval.u.type) == (CPPType *)NULL) { - stringstream str; - str << *(yyvsp[(3) - (4)].u.expr); - yyerror("could not determine type of " + str.str(), (yylsp[(3) - (4)])); - } -} +#line 6621 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 297: -/* Line 1792 of yacc.c */ -#line 2307 "dtool/src/cppparser/cppBison.yxx" +#line 2284 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); + CPPType *type = (yyvsp[-2].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if (type != NULL) { + (yyval.u.type) = type; + } else { + CPPExtensionType *et = + CPPType::new_type(new CPPExtensionType((yyvsp[-3].u.extension_enum), (yyvsp[-2].u.identifier), current_scope, (yylsp[-3]).file)) + ->as_extension_type(); + CPPScope *scope = (yyvsp[-2].u.identifier)->get_scope(current_scope, global_scope); + if (scope != NULL) { + scope->define_extension_type(et); + } + (yyval.u.type) = et; + } } +#line 6641 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 298: -/* Line 1792 of yacc.c */ -#line 2311 "dtool/src/cppparser/cppBison.yxx" +#line 2300 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPEnumType *enum_type = (yyvsp[(3) - (4)].u.type)->as_enum_type(); + (yyval.u.type) = (yyvsp[-1].u.expr)->determine_type(); + if ((yyval.u.type) == (CPPType *)NULL) { + stringstream str; + str << *(yyvsp[-1].u.expr); + yyerror("could not determine type of " + str.str(), (yylsp[-1])); + } +} +#line 6654 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 299: +#line 2309 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); +} +#line 6662 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 300: +#line 2313 "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[(3) - (4)])); - (yyval.u.type) = (yyvsp[(3) - (4)].u.type); + yyerror("an enumeration type is required", (yylsp[-1])); + (yyval.u.type) = (yyvsp[-1].u.type); } else { (yyval.u.type) = enum_type->get_underlying_type(); } } - break; - - case 299: -/* Line 1792 of yacc.c */ -#line 2321 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); -} - break; - - case 300: -/* Line 1792 of yacc.c */ -#line 2328 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.type) = (yyvsp[(1) - (1)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); - if ((yyval.u.type) == NULL) { - yyerror(string("internal error resolving type ") + (yyvsp[(1) - (1)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (1)])); - } - assert((yyval.u.type) != NULL); -} +#line 6676 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 301: -/* Line 1792 of yacc.c */ -#line 2339 "dtool/src/cppparser/cppBison.yxx" +#line 2323 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.decl) = CPPType::new_type((yyvsp[(1) - (1)].u.simple_type)); + (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } +#line 6684 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 302: -/* Line 1792 of yacc.c */ -#line 2343 "dtool/src/cppparser/cppBison.yxx" +#line 2330 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.decl) = (yyvsp[(1) - (1)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); - if ((yyval.u.decl) == NULL) { - yyerror(string("internal error resolving type ") + (yyvsp[(1) - (1)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (1)])); + (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.decl) != NULL); + assert((yyval.u.type) != NULL); } +#line 6696 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 303: -/* Line 1792 of yacc.c */ -#line 2351 "dtool/src/cppparser/cppBison.yxx" +#line 2341 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.decl) = CPPType::new_type(new CPPTBDType((yyvsp[(2) - (2)].u.identifier))); + (yyval.u.decl) = CPPType::new_type((yyvsp[0].u.simple_type)); } +#line 6704 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 304: -/* Line 1792 of yacc.c */ -#line 2355 "dtool/src/cppparser/cppBison.yxx" +#line 2345 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.decl) = CPPType::new_type((yyvsp[(1) - (1)].u.struct_type)); + (yyval.u.decl) = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if ((yyval.u.decl) == NULL) { + yyerror(string("internal error resolving type ") + (yyvsp[0].u.identifier)->get_fully_scoped_name(), (yylsp[0])); + } + assert((yyval.u.decl) != NULL); } +#line 6716 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 305: -/* Line 1792 of yacc.c */ -#line 2359 "dtool/src/cppparser/cppBison.yxx" +#line 2353 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.decl) = new CPPTypeDeclaration(CPPType::new_type((yyvsp[(1) - (1)].u.struct_type))); + (yyval.u.decl) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); } +#line 6724 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 306: -/* Line 1792 of yacc.c */ -#line 2363 "dtool/src/cppparser/cppBison.yxx" +#line 2357 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.decl) = new CPPTypeDeclaration(CPPType::new_type((yyvsp[(1) - (1)].u.enum_type))); + (yyval.u.decl) = CPPType::new_type((yyvsp[0].u.struct_type)); } +#line 6732 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 307: -/* Line 1792 of yacc.c */ -#line 2367 "dtool/src/cppparser/cppBison.yxx" +#line 2361 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPType *type = (yyvsp[(3) - (3)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); - if (type != NULL) { - (yyval.u.decl) = type; - } else { - CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType((yyvsp[(1) - (3)].u.extension_enum), (yyvsp[(3) - (3)].u.identifier), current_scope, (yylsp[(1) - (3)]).file)) - ->as_extension_type(); - CPPScope *scope = (yyvsp[(3) - (3)].u.identifier)->get_scope(current_scope, global_scope); - if (scope != NULL) { - scope->define_extension_type(et); - } - (yyval.u.decl) = et; - } + (yyval.u.decl) = new CPPTypeDeclaration(CPPType::new_type((yyvsp[0].u.struct_type))); } +#line 6740 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 308: -/* Line 1792 of yacc.c */ -#line 2383 "dtool/src/cppparser/cppBison.yxx" +#line 2365 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPType *type = (yyvsp[(2) - (4)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); - if (type != NULL) { - (yyval.u.decl) = type; - } else { - CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType((yyvsp[(1) - (4)].u.extension_enum), (yyvsp[(2) - (4)].u.identifier), current_scope, (yylsp[(1) - (4)]).file)) - ->as_extension_type(); - CPPScope *scope = (yyvsp[(2) - (4)].u.identifier)->get_scope(current_scope, global_scope); - if (scope != NULL) { - scope->define_extension_type(et); - } - (yyval.u.decl) = et; - } + (yyval.u.decl) = new CPPTypeDeclaration(CPPType::new_type((yyvsp[0].u.enum_type))); } +#line 6748 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 309: -/* Line 1792 of yacc.c */ -#line 2399 "dtool/src/cppparser/cppBison.yxx" +#line 2369 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - yywarning(string("C++ does not permit forward declaration of untyped enum ") + (yyvsp[(2) - (2)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (2)])); - - CPPType *type = (yyvsp[(2) - (2)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); if (type != NULL) { (yyval.u.decl) = type; } else { CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType((yyvsp[(1) - (2)].u.extension_enum), (yyvsp[(2) - (2)].u.identifier), current_scope, (yylsp[(1) - (2)]).file)) + CPPType::new_type(new CPPExtensionType((yyvsp[-2].u.extension_enum), (yyvsp[0].u.identifier), current_scope, (yylsp[-2]).file)) ->as_extension_type(); - CPPScope *scope = (yyvsp[(2) - (2)].u.identifier)->get_scope(current_scope, global_scope); + CPPScope *scope = (yyvsp[0].u.identifier)->get_scope(current_scope, global_scope); if (scope != NULL) { scope->define_extension_type(et); } (yyval.u.decl) = et; } } +#line 6768 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 310: -/* Line 1792 of yacc.c */ -#line 2417 "dtool/src/cppparser/cppBison.yxx" +#line 2385 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.decl) = (yyvsp[(3) - (4)].u.expr)->determine_type(); - if ((yyval.u.decl) == (CPPType *)NULL) { - stringstream str; - str << *(yyvsp[(3) - (4)].u.expr); - yyerror("could not determine type of " + str.str(), (yylsp[(3) - (4)])); + CPPType *type = (yyvsp[-2].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if (type != NULL) { + (yyval.u.decl) = type; + } else { + CPPExtensionType *et = + CPPType::new_type(new CPPExtensionType((yyvsp[-3].u.extension_enum), (yyvsp[-2].u.identifier), current_scope, (yylsp[-3]).file)) + ->as_extension_type(); + CPPScope *scope = (yyvsp[-2].u.identifier)->get_scope(current_scope, global_scope); + if (scope != NULL) { + scope->define_extension_type(et); + } + (yyval.u.decl) = et; } } +#line 6788 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 311: -/* Line 1792 of yacc.c */ -#line 2426 "dtool/src/cppparser/cppBison.yxx" +#line 2401 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.decl) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); + yywarning(string("C++ does not permit forward declaration of untyped enum ") + (yyvsp[0].u.identifier)->get_fully_scoped_name(), (yylsp[-1])); + + CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if (type != NULL) { + (yyval.u.decl) = type; + } else { + CPPExtensionType *et = + CPPType::new_type(new CPPExtensionType((yyvsp[-1].u.extension_enum), (yyvsp[0].u.identifier), current_scope, (yylsp[-1]).file)) + ->as_extension_type(); + CPPScope *scope = (yyvsp[0].u.identifier)->get_scope(current_scope, global_scope); + if (scope != NULL) { + scope->define_extension_type(et); + } + (yyval.u.decl) = et; + } } +#line 6810 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 312: -/* Line 1792 of yacc.c */ -#line 2430 "dtool/src/cppparser/cppBison.yxx" +#line 2419 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPEnumType *enum_type = (yyvsp[(3) - (4)].u.type)->as_enum_type(); + (yyval.u.decl) = (yyvsp[-1].u.expr)->determine_type(); + if ((yyval.u.decl) == (CPPType *)NULL) { + stringstream str; + str << *(yyvsp[-1].u.expr); + yyerror("could not determine type of " + str.str(), (yylsp[-1])); + } +} +#line 6823 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 313: +#line 2428 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.decl) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); +} +#line 6831 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 314: +#line 2432 "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[(3) - (4)])); - (yyval.u.decl) = (yyvsp[(3) - (4)].u.type); + yyerror("an enumeration type is required", (yylsp[-1])); + (yyval.u.decl) = (yyvsp[-1].u.type); } else { (yyval.u.decl) = enum_type->get_underlying_type(); } } - break; - - case 313: -/* Line 1792 of yacc.c */ -#line 2440 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.decl) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); -} - break; - - case 314: -/* Line 1792 of yacc.c */ -#line 2447 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.type) = CPPType::new_type((yyvsp[(1) - (1)].u.simple_type)); -} +#line 6845 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 315: -/* Line 1792 of yacc.c */ -#line 2451 "dtool/src/cppparser/cppBison.yxx" +#line 2442 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.type) = (yyvsp[(1) - (1)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); - if ((yyval.u.type) == NULL) { - yyerror(string("internal error resolving type ") + (yyvsp[(1) - (1)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (1)])); - } - assert((yyval.u.type) != NULL); + (yyval.u.decl) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } +#line 6853 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 316: -/* Line 1792 of yacc.c */ -#line 2459 "dtool/src/cppparser/cppBison.yxx" +#line 2449 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[(2) - (2)].u.identifier))); + (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); } +#line 6861 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 317: -/* Line 1792 of yacc.c */ -#line 2463 "dtool/src/cppparser/cppBison.yxx" +#line 2453 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPType *type = (yyvsp[(3) - (3)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); - if (type != NULL) { - (yyval.u.type) = type; - } else { - CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType((yyvsp[(1) - (3)].u.extension_enum), (yyvsp[(3) - (3)].u.identifier), current_scope, (yylsp[(1) - (3)]).file)) - ->as_extension_type(); - CPPScope *scope = (yyvsp[(3) - (3)].u.identifier)->get_scope(current_scope, global_scope); - if (scope != NULL) { - scope->define_extension_type(et); - } - (yyval.u.type) = et; + (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 6873 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 318: -/* Line 1792 of yacc.c */ -#line 2479 "dtool/src/cppparser/cppBison.yxx" +#line 2461 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPType *type = (yyvsp[(2) - (2)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); +} +#line 6881 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 319: +#line 2465 "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) { (yyval.u.type) = type; } else { CPPExtensionType *et = - CPPType::new_type(new CPPExtensionType((yyvsp[(1) - (2)].u.extension_enum), (yyvsp[(2) - (2)].u.identifier), current_scope, (yylsp[(1) - (2)]).file)) + CPPType::new_type(new CPPExtensionType((yyvsp[-2].u.extension_enum), (yyvsp[0].u.identifier), current_scope, (yylsp[-2]).file)) ->as_extension_type(); - CPPScope *scope = (yyvsp[(2) - (2)].u.identifier)->get_scope(current_scope, global_scope); + CPPScope *scope = (yyvsp[0].u.identifier)->get_scope(current_scope, global_scope); if (scope != NULL) { scope->define_extension_type(et); } (yyval.u.type) = et; } } - break; - - case 319: -/* Line 1792 of yacc.c */ -#line 2495 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.type) = (yyvsp[(3) - (4)].u.expr)->determine_type(); - if ((yyval.u.type) == (CPPType *)NULL) { - stringstream str; - str << *(yyvsp[(3) - (4)].u.expr); - yyerror("could not determine type of " + str.str(), (yylsp[(3) - (4)])); - } -} +#line 6901 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 320: -/* Line 1792 of yacc.c */ -#line 2504 "dtool/src/cppparser/cppBison.yxx" +#line 2481 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPEnumType *enum_type = (yyvsp[(3) - (4)].u.type)->as_enum_type(); + CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if (type != NULL) { + (yyval.u.type) = type; + } else { + CPPExtensionType *et = + CPPType::new_type(new CPPExtensionType((yyvsp[-1].u.extension_enum), (yyvsp[0].u.identifier), current_scope, (yylsp[-1]).file)) + ->as_extension_type(); + CPPScope *scope = (yyvsp[0].u.identifier)->get_scope(current_scope, global_scope); + if (scope != NULL) { + scope->define_extension_type(et); + } + (yyval.u.type) = et; + } +} +#line 6921 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 321: +#line 2497 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.type) = (yyvsp[-1].u.expr)->determine_type(); + if ((yyval.u.type) == (CPPType *)NULL) { + stringstream str; + str << *(yyvsp[-1].u.expr); + yyerror("could not determine type of " + str.str(), (yylsp[-1])); + } +} +#line 6934 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 322: +#line 2506 "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[(3) - (4)])); - (yyval.u.type) = (yyvsp[(3) - (4)].u.type); + yyerror("an enumeration type is required", (yylsp[-1])); + (yyval.u.type) = (yyvsp[-1].u.type); } else { (yyval.u.type) = enum_type->get_underlying_type(); } } - break; - - case 321: -/* Line 1792 of yacc.c */ -#line 2514 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); -} - break; - - case 322: -/* Line 1792 of yacc.c */ -#line 2521 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.decl) = (yyvsp[(1) - (1)].u.decl); -} +#line 6948 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 323: -/* Line 1792 of yacc.c */ -#line 2525 "dtool/src/cppparser/cppBison.yxx" +#line 2516 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - yyerror(string("unknown type '") + (yyvsp[(1) - (1)].u.identifier)->get_fully_scoped_name() + "'", (yylsp[(1) - (1)])); - - (yyval.u.decl) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_unknown)); + (yyval.u.type) = CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_auto)); } +#line 6956 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 324: -/* Line 1792 of yacc.c */ -#line 2533 "dtool/src/cppparser/cppBison.yxx" +#line 2523 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.type) = (yyvsp[(2) - (2)].u.inst_ident)->unroll_type((yyvsp[(1) - (2)].u.type)); + (yyval.u.decl) = (yyvsp[0].u.decl); } +#line 6964 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 325: -/* Line 1792 of yacc.c */ -#line 2537 "dtool/src/cppparser/cppBison.yxx" +#line 2527 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyvsp[(3) - (3)].u.inst_ident)->add_modifier(IIT_const); - (yyval.u.type) = (yyvsp[(3) - (3)].u.inst_ident)->unroll_type((yyvsp[(2) - (3)].u.type)); + 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 6974 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 326: -/* Line 1792 of yacc.c */ -#line 2542 "dtool/src/cppparser/cppBison.yxx" +#line 2535 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.type) = (yyvsp[(2) - (2)].u.inst_ident)->unroll_type((yyvsp[(1) - (2)].u.type)); + (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); } +#line 6982 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 327: -/* Line 1792 of yacc.c */ -#line 2546 "dtool/src/cppparser/cppBison.yxx" +#line 2539 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyvsp[(3) - (3)].u.inst_ident)->add_modifier(IIT_const); - (yyval.u.type) = (yyvsp[(3) - (3)].u.inst_ident)->unroll_type((yyvsp[(2) - (3)].u.type)); + (yyvsp[0].u.inst_ident)->add_modifier(IIT_const); + (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); } +#line 6991 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 332: -/* Line 1792 of yacc.c */ -#line 2561 "dtool/src/cppparser/cppBison.yxx" + case 328: +#line 2544 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.type) = (yyvsp[0].u.inst_ident)->unroll_type((yyvsp[-1].u.type)); +} +#line 6999 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 329: +#line 2548 "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 7008 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 334: +#line 2563 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPVisibility starting_vis = - ((yyvsp[(1) - (3)].u.extension_enum) == CPPExtensionType::T_class) ? V_private : V_public; + ((yyvsp[-2].u.extension_enum) == CPPExtensionType::T_class) ? V_private : V_public; CPPScope *new_scope = new CPPScope(current_scope, CPPNameComponent("anon"), starting_vis); - CPPStructType *st = new CPPStructType((yyvsp[(1) - (3)].u.extension_enum), NULL, current_scope, - new_scope, (yylsp[(1) - (3)]).file); + CPPStructType *st = new CPPStructType((yyvsp[-2].u.extension_enum), NULL, current_scope, + new_scope, (yylsp[-2]).file); new_scope->set_struct_type(st); push_scope(new_scope); push_struct(st); } +#line 7026 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 333: -/* Line 1792 of yacc.c */ -#line 2575 "dtool/src/cppparser/cppBison.yxx" + case 335: +#line 2577 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.struct_type) = current_struct; current_struct->_incomplete = false; pop_struct(); pop_scope(); } +#line 7037 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 334: -/* Line 1792 of yacc.c */ -#line 2585 "dtool/src/cppparser/cppBison.yxx" + case 336: +#line 2587 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { CPPVisibility starting_vis = - ((yyvsp[(1) - (3)].u.extension_enum) == CPPExtensionType::T_class) ? V_private : V_public; + ((yyvsp[-2].u.extension_enum) == CPPExtensionType::T_class) ? V_private : V_public; - CPPScope *scope = (yyvsp[(3) - (3)].u.identifier)->get_scope(current_scope, global_scope, current_lexer); + CPPScope *scope = (yyvsp[0].u.identifier)->get_scope(current_scope, global_scope, current_lexer); if (scope == NULL) { scope = current_scope; } - CPPScope *new_scope = new CPPScope(scope, (yyvsp[(3) - (3)].u.identifier)->_names.back(), + CPPScope *new_scope = new CPPScope(scope, (yyvsp[0].u.identifier)->_names.back(), starting_vis); - CPPStructType *st = new CPPStructType((yyvsp[(1) - (3)].u.extension_enum), (yyvsp[(3) - (3)].u.identifier), current_scope, - new_scope, (yylsp[(1) - (3)]).file); + CPPStructType *st = new CPPStructType((yyvsp[-2].u.extension_enum), (yyvsp[0].u.identifier), current_scope, + new_scope, (yylsp[-2]).file); new_scope->set_struct_type(st); current_scope->define_extension_type(st); push_scope(new_scope); push_struct(st); } +#line 7061 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 335: -/* Line 1792 of yacc.c */ -#line 2605 "dtool/src/cppparser/cppBison.yxx" + case 337: +#line 2607 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.struct_type) = current_struct; current_struct->_incomplete = false; pop_struct(); pop_scope(); } +#line 7072 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 337: -/* Line 1792 of yacc.c */ -#line 2616 "dtool/src/cppparser/cppBison.yxx" + case 339: +#line 2618 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_struct->_final = true; } - break; - - case 342: -/* Line 1792 of yacc.c */ -#line 2633 "dtool/src/cppparser/cppBison.yxx" - { - current_struct->append_derivation((yyvsp[(1) - (1)].u.type), V_unknown, false); -} - break; - - case 343: -/* Line 1792 of yacc.c */ -#line 2637 "dtool/src/cppparser/cppBison.yxx" - { - current_struct->append_derivation((yyvsp[(2) - (2)].u.type), V_public, false); -} +#line 7080 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 344: -/* Line 1792 of yacc.c */ -#line 2641 "dtool/src/cppparser/cppBison.yxx" +#line 2635 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - current_struct->append_derivation((yyvsp[(2) - (2)].u.type), V_protected, false); + current_struct->append_derivation((yyvsp[0].u.type), V_unknown, false); } +#line 7088 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 345: -/* Line 1792 of yacc.c */ -#line 2645 "dtool/src/cppparser/cppBison.yxx" +#line 2639 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - current_struct->append_derivation((yyvsp[(2) - (2)].u.type), V_private, false); + current_struct->append_derivation((yyvsp[0].u.type), V_public, false); } +#line 7096 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 346: -/* Line 1792 of yacc.c */ -#line 2649 "dtool/src/cppparser/cppBison.yxx" +#line 2643 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - current_struct->append_derivation((yyvsp[(3) - (3)].u.type), V_public, true); + current_struct->append_derivation((yyvsp[0].u.type), V_protected, false); } +#line 7104 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 347: -/* Line 1792 of yacc.c */ -#line 2653 "dtool/src/cppparser/cppBison.yxx" +#line 2647 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - current_struct->append_derivation((yyvsp[(3) - (3)].u.type), V_protected, true); + current_struct->append_derivation((yyvsp[0].u.type), V_private, false); } +#line 7112 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 348: -/* Line 1792 of yacc.c */ -#line 2657 "dtool/src/cppparser/cppBison.yxx" +#line 2651 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - current_struct->append_derivation((yyvsp[(3) - (3)].u.type), V_private, true); + current_struct->append_derivation((yyvsp[0].u.type), V_public, true); } +#line 7120 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 349: -/* Line 1792 of yacc.c */ -#line 2661 "dtool/src/cppparser/cppBison.yxx" +#line 2655 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - current_struct->append_derivation((yyvsp[(3) - (3)].u.type), V_public, true); + current_struct->append_derivation((yyvsp[0].u.type), V_protected, true); } +#line 7128 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 350: -/* Line 1792 of yacc.c */ -#line 2665 "dtool/src/cppparser/cppBison.yxx" +#line 2659 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - current_struct->append_derivation((yyvsp[(3) - (3)].u.type), V_protected, true); + current_struct->append_derivation((yyvsp[0].u.type), V_private, true); } +#line 7136 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 351: -/* Line 1792 of yacc.c */ -#line 2669 "dtool/src/cppparser/cppBison.yxx" +#line 2663 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - current_struct->append_derivation((yyvsp[(3) - (3)].u.type), V_private, true); + current_struct->append_derivation((yyvsp[0].u.type), V_public, true); } +#line 7144 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 352: -/* Line 1792 of yacc.c */ -#line 2676 "dtool/src/cppparser/cppBison.yxx" +#line 2667 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + current_struct->append_derivation((yyvsp[0].u.type), V_protected, true); +} +#line 7152 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 353: +#line 2671 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + current_struct->append_derivation((yyvsp[0].u.type), V_private, true); +} +#line 7160 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 354: +#line 2678 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.enum_type) = current_enum; current_enum = NULL; } - break; - - case 353: -/* Line 1792 of yacc.c */ -#line 2684 "dtool/src/cppparser/cppBison.yxx" - { - current_enum = new CPPEnumType((yyvsp[(1) - (3)].u.extension_enum), NULL, (yyvsp[(3) - (3)].u.type), current_scope, NULL, (yylsp[(1) - (3)]).file); -} - break; - - case 354: -/* Line 1792 of yacc.c */ -#line 2688 "dtool/src/cppparser/cppBison.yxx" - { - current_enum = new CPPEnumType((yyvsp[(1) - (1)].u.extension_enum), NULL, current_scope, NULL, (yylsp[(1) - (1)]).file); -} +#line 7169 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 355: -/* Line 1792 of yacc.c */ -#line 2692 "dtool/src/cppparser/cppBison.yxx" +#line 2686 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPScope *new_scope = new CPPScope(current_scope, (yyvsp[(2) - (4)].u.identifier)->_names.back(), V_public); - current_enum = new CPPEnumType((yyvsp[(1) - (4)].u.extension_enum), (yyvsp[(2) - (4)].u.identifier), (yyvsp[(4) - (4)].u.type), current_scope, new_scope, (yylsp[(1) - (4)]).file); + current_enum = new CPPEnumType((yyvsp[-2].u.extension_enum), NULL, (yyvsp[0].u.type), current_scope, NULL, (yylsp[-2]).file); } +#line 7177 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 356: -/* Line 1792 of yacc.c */ -#line 2697 "dtool/src/cppparser/cppBison.yxx" +#line 2690 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPScope *new_scope = new CPPScope(current_scope, (yyvsp[(2) - (2)].u.identifier)->_names.back(), V_public); - current_enum = new CPPEnumType((yyvsp[(1) - (2)].u.extension_enum), (yyvsp[(2) - (2)].u.identifier), current_scope, new_scope, (yylsp[(1) - (2)]).file); + current_enum = new CPPEnumType((yyvsp[0].u.extension_enum), NULL, current_scope, NULL, (yylsp[0]).file); } +#line 7185 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 357: -/* Line 1792 of yacc.c */ -#line 2705 "dtool/src/cppparser/cppBison.yxx" +#line 2694 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.type) = CPPType::new_type((yyvsp[(1) - (1)].u.simple_type)); + 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 7194 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 358: -/* Line 1792 of yacc.c */ -#line 2709 "dtool/src/cppparser/cppBison.yxx" +#line 2699 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.type) = (yyvsp[(1) - (1)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + 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 7203 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 359: +#line 2707 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.type) = CPPType::new_type((yyvsp[0].u.simple_type)); +} +#line 7211 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 360: -/* Line 1792 of yacc.c */ -#line 2717 "dtool/src/cppparser/cppBison.yxx" +#line 2711 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - assert(current_enum != NULL); - current_enum->add_element((yyvsp[(2) - (3)].u.identifier)->get_simple_name(), NULL, current_lexer, (yylsp[(2) - (3)])); + (yyval.u.type) = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); } +#line 7219 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 361: -/* Line 1792 of yacc.c */ -#line 2722 "dtool/src/cppparser/cppBison.yxx" + case 362: +#line 2719 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { assert(current_enum != NULL); - current_enum->add_element((yyvsp[(2) - (5)].u.identifier)->get_simple_name(), (yyvsp[(4) - (5)].u.expr), current_lexer, (yylsp[(2) - (5)])); + current_enum->add_element((yyvsp[-1].u.identifier)->get_simple_name(), NULL, current_lexer, (yylsp[-1])); } +#line 7228 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 363: -/* Line 1792 of yacc.c */ -#line 2730 "dtool/src/cppparser/cppBison.yxx" +#line 2724 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { assert(current_enum != NULL); - current_enum->add_element((yyvsp[(2) - (2)].u.identifier)->get_simple_name(), NULL, current_lexer, (yylsp[(2) - (2)])); -} - break; - - case 364: -/* Line 1792 of yacc.c */ -#line 2735 "dtool/src/cppparser/cppBison.yxx" - { - assert(current_enum != NULL); - current_enum->add_element((yyvsp[(2) - (4)].u.identifier)->get_simple_name(), (yyvsp[(4) - (4)].u.expr), current_lexer, (yylsp[(2) - (4)])); + current_enum->add_element((yyvsp[-3].u.identifier)->get_simple_name(), (yyvsp[-1].u.expr), current_lexer, (yylsp[-3])); } +#line 7237 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 365: -/* Line 1792 of yacc.c */ -#line 2743 "dtool/src/cppparser/cppBison.yxx" +#line 2732 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.extension_enum) = CPPExtensionType::T_enum; + assert(current_enum != NULL); + current_enum->add_element((yyvsp[0].u.identifier)->get_simple_name(), NULL, current_lexer, (yylsp[0])); } +#line 7246 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 366: -/* Line 1792 of yacc.c */ -#line 2747 "dtool/src/cppparser/cppBison.yxx" +#line 2737 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.extension_enum) = CPPExtensionType::T_enum_class; + assert(current_enum != NULL); + current_enum->add_element((yyvsp[-2].u.identifier)->get_simple_name(), (yyvsp[0].u.expr), current_lexer, (yylsp[-2])); } +#line 7255 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 367: -/* Line 1792 of yacc.c */ -#line 2751 "dtool/src/cppparser/cppBison.yxx" +#line 2745 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.extension_enum) = CPPExtensionType::T_enum_struct; + (yyval.u.extension_enum) = CPPExtensionType::T_enum; } +#line 7263 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 368: -/* Line 1792 of yacc.c */ -#line 2758 "dtool/src/cppparser/cppBison.yxx" +#line 2749 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.extension_enum) = CPPExtensionType::T_class; + (yyval.u.extension_enum) = CPPExtensionType::T_enum_class; } +#line 7271 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 369: -/* Line 1792 of yacc.c */ -#line 2762 "dtool/src/cppparser/cppBison.yxx" +#line 2753 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.extension_enum) = CPPExtensionType::T_struct; + (yyval.u.extension_enum) = CPPExtensionType::T_enum_struct; } +#line 7279 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 370: -/* Line 1792 of yacc.c */ -#line 2766 "dtool/src/cppparser/cppBison.yxx" +#line 2760 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.extension_enum) = CPPExtensionType::T_union; + (yyval.u.extension_enum) = CPPExtensionType::T_class; } +#line 7287 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 371: -/* Line 1792 of yacc.c */ -#line 2773 "dtool/src/cppparser/cppBison.yxx" +#line 2764 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPScope *scope = (yyvsp[(2) - (3)].u.identifier)->find_scope(current_scope, global_scope, current_lexer); - if (scope == NULL) { - // This must be a new namespace declaration. - CPPScope *parent_scope = - (yyvsp[(2) - (3)].u.identifier)->get_scope(current_scope, global_scope, current_lexer); - if (parent_scope == NULL) { - parent_scope = current_scope; - } - scope = new CPPScope(parent_scope, (yyvsp[(2) - (3)].u.identifier)->_names.back(), V_public); - } - - CPPNamespace *nspace = new CPPNamespace((yyvsp[(2) - (3)].u.identifier), scope, (yylsp[(1) - (3)]).file); - current_scope->add_declaration(nspace, global_scope, current_lexer, (yylsp[(1) - (3)])); - current_scope->define_namespace(nspace); - push_scope(scope); + (yyval.u.extension_enum) = CPPExtensionType::T_struct; } +#line 7295 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 372: -/* Line 1792 of yacc.c */ -#line 2791 "dtool/src/cppparser/cppBison.yxx" +#line 2768 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - pop_scope(); + (yyval.u.extension_enum) = CPPExtensionType::T_union; } +#line 7303 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 373: -/* Line 1792 of yacc.c */ -#line 2795 "dtool/src/cppparser/cppBison.yxx" +#line 2775 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPScope *scope = (yyvsp[(3) - (4)].u.identifier)->find_scope(current_scope, global_scope, current_lexer); + CPPScope *scope = (yyvsp[-1].u.identifier)->find_scope(current_scope, global_scope, current_lexer); if (scope == NULL) { // This must be a new namespace declaration. CPPScope *parent_scope = - (yyvsp[(3) - (4)].u.identifier)->get_scope(current_scope, global_scope, current_lexer); + (yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope, current_lexer); if (parent_scope == NULL) { parent_scope = current_scope; } - scope = new CPPScope(parent_scope, (yyvsp[(3) - (4)].u.identifier)->_names.back(), V_public); + scope = new CPPScope(parent_scope, (yyvsp[-1].u.identifier)->_names.back(), V_public); } - CPPNamespace *nspace = new CPPNamespace((yyvsp[(3) - (4)].u.identifier), scope, (yylsp[(2) - (4)]).file); - nspace->_is_inline = true; - current_scope->add_declaration(nspace, global_scope, current_lexer, (yylsp[(2) - (4)])); + CPPNamespace *nspace = new CPPNamespace((yyvsp[-1].u.identifier), scope, (yylsp[-2]).file); + current_scope->add_declaration(nspace, global_scope, current_lexer, (yylsp[-2])); current_scope->define_namespace(nspace); push_scope(scope); } +#line 7325 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 374: -/* Line 1792 of yacc.c */ -#line 2814 "dtool/src/cppparser/cppBison.yxx" +#line 2793 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { pop_scope(); } +#line 7333 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 377: -/* Line 1792 of yacc.c */ -#line 2823 "dtool/src/cppparser/cppBison.yxx" + case 375: +#line 2797 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPUsing *using_decl = new CPPUsing((yyvsp[(2) - (3)].u.identifier), false, (yylsp[(1) - (3)]).file); - current_scope->add_declaration(using_decl, global_scope, current_lexer, (yylsp[(1) - (3)])); - current_scope->add_using(using_decl, global_scope, current_lexer); + CPPScope *scope = (yyvsp[-1].u.identifier)->find_scope(current_scope, global_scope, current_lexer); + if (scope == NULL) { + // This must be a new namespace declaration. + CPPScope *parent_scope = + (yyvsp[-1].u.identifier)->get_scope(current_scope, global_scope, current_lexer); + if (parent_scope == NULL) { + parent_scope = current_scope; + } + scope = new CPPScope(parent_scope, (yyvsp[-1].u.identifier)->_names.back(), V_public); + } + + CPPNamespace *nspace = new CPPNamespace((yyvsp[-1].u.identifier), scope, (yylsp[-2]).file); + nspace->_is_inline = true; + current_scope->add_declaration(nspace, global_scope, current_lexer, (yylsp[-2])); + current_scope->define_namespace(nspace); + push_scope(scope); } +#line 7356 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 378: -/* Line 1792 of yacc.c */ -#line 2829 "dtool/src/cppparser/cppBison.yxx" + case 376: +#line 2816 "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[(4) - (5)].u.type), (yyvsp[(2) - (5)].u.identifier), current_scope); - typedef_type->_using = true; - current_scope->add_declaration(CPPType::new_type(typedef_type), global_scope, current_lexer, (yylsp[(1) - (5)])); + pop_scope(); } +#line 7364 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 379: -/* Line 1792 of yacc.c */ -#line 2836 "dtool/src/cppparser/cppBison.yxx" +#line 2825 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPUsing *using_decl = new CPPUsing((yyvsp[(3) - (4)].u.identifier), true, (yylsp[(1) - (4)]).file); - current_scope->add_declaration(using_decl, global_scope, current_lexer, (yylsp[(1) - (4)])); + 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 7374 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 383: -/* Line 1792 of yacc.c */ -#line 2851 "dtool/src/cppparser/cppBison.yxx" + case 380: +#line 2831 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_bool); + // 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 7385 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 384: -/* Line 1792 of yacc.c */ -#line 2855 "dtool/src/cppparser/cppBison.yxx" + case 381: +#line 2838 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char); + 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 7395 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 385: -/* Line 1792 of yacc.c */ -#line 2859 "dtool/src/cppparser/cppBison.yxx" +#line 2853 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_wchar_t); + (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_bool); } +#line 7403 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 386: -/* Line 1792 of yacc.c */ -#line 2863 "dtool/src/cppparser/cppBison.yxx" +#line 2857 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char16_t); + (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char); } +#line 7411 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 387: -/* Line 1792 of yacc.c */ -#line 2867 "dtool/src/cppparser/cppBison.yxx" +#line 2861 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char32_t); + (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_wchar_t); } +#line 7419 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 388: -/* Line 1792 of yacc.c */ -#line 2871 "dtool/src/cppparser/cppBison.yxx" +#line 2865 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char16_t); +} +#line 7427 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 389: +#line 2869 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_char32_t); +} +#line 7435 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 390: +#line 2873 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_short); } +#line 7444 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 389: -/* Line 1792 of yacc.c */ -#line 2876 "dtool/src/cppparser/cppBison.yxx" + case 391: +#line 2878 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_long); } +#line 7453 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 390: -/* Line 1792 of yacc.c */ -#line 2881 "dtool/src/cppparser/cppBison.yxx" + case 392: +#line 2883 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_unsigned); } +#line 7462 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 391: -/* Line 1792 of yacc.c */ -#line 2886 "dtool/src/cppparser/cppBison.yxx" + case 393: +#line 2888 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int, CPPSimpleType::F_signed); } - break; - - case 392: -/* Line 1792 of yacc.c */ -#line 2891 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int); -} - break; - - case 393: -/* Line 1792 of yacc.c */ -#line 2895 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.simple_type) = (yyvsp[(2) - (2)].u.simple_type); - (yyval.u.simple_type)->_flags |= CPPSimpleType::F_short; -} +#line 7471 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 394: -/* Line 1792 of yacc.c */ -#line 2900 "dtool/src/cppparser/cppBison.yxx" +#line 2893 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.simple_type) = (yyvsp[(2) - (2)].u.simple_type); + (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_int); +} +#line 7479 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 395: +#line 2897 "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 7488 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 396: +#line 2902 "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) { (yyval.u.simple_type)->_flags |= CPPSimpleType::F_longlong; } else { (yyval.u.simple_type)->_flags |= CPPSimpleType::F_long; } } - break; - - case 395: -/* Line 1792 of yacc.c */ -#line 2909 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.simple_type) = (yyvsp[(2) - (2)].u.simple_type); - (yyval.u.simple_type)->_flags |= CPPSimpleType::F_unsigned; -} - break; - - case 396: -/* Line 1792 of yacc.c */ -#line 2914 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.simple_type) = (yyvsp[(2) - (2)].u.simple_type); - (yyval.u.simple_type)->_flags |= CPPSimpleType::F_signed; -} +#line 7501 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 397: -/* Line 1792 of yacc.c */ -#line 2922 "dtool/src/cppparser/cppBison.yxx" +#line 2911 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_float); + (yyval.u.simple_type) = (yyvsp[0].u.simple_type); + (yyval.u.simple_type)->_flags |= CPPSimpleType::F_unsigned; } +#line 7510 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 398: -/* Line 1792 of yacc.c */ -#line 2926 "dtool/src/cppparser/cppBison.yxx" +#line 2916 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_double); + (yyval.u.simple_type) = (yyvsp[0].u.simple_type); + (yyval.u.simple_type)->_flags |= CPPSimpleType::F_signed; } +#line 7519 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 399: -/* Line 1792 of yacc.c */ -#line 2930 "dtool/src/cppparser/cppBison.yxx" +#line 2924 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_float); +} +#line 7527 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 400: +#line 2928 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_double); +} +#line 7535 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 401: +#line 2932 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_double, CPPSimpleType::F_long); } - break; - - case 400: -/* Line 1792 of yacc.c */ -#line 2938 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_void); -} - break; - - case 401: -/* Line 1792 of yacc.c */ -#line 2947 "dtool/src/cppparser/cppBison.yxx" - { - current_lexer->_resolve_identifiers = false; -} +#line 7544 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 402: -/* Line 1792 of yacc.c */ -#line 2951 "dtool/src/cppparser/cppBison.yxx" +#line 2940 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.simple_type) = new CPPSimpleType(CPPSimpleType::T_void); +} +#line 7552 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 403: +#line 2949 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + current_lexer->_resolve_identifiers = false; +} +#line 7560 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 404: +#line 2953 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { current_lexer->_resolve_identifiers = true; } +#line 7568 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 510: -/* Line 1792 of yacc.c */ -#line 2995 "dtool/src/cppparser/cppBison.yxx" + case 512: +#line 2997 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { } - break; - - case 534: -/* Line 1792 of yacc.c */ -#line 3004 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = (CPPExpression *)NULL; -} - break; - - case 535: -/* Line 1792 of yacc.c */ -#line 3008 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); -} +#line 7575 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 536: -/* Line 1792 of yacc.c */ -#line 3015 "dtool/src/cppparser/cppBison.yxx" +#line 3006 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = (CPPExpression *)NULL; } +#line 7583 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 537: -/* Line 1792 of yacc.c */ -#line 3019 "dtool/src/cppparser/cppBison.yxx" +#line 3010 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); + (yyval.u.expr) = (yyvsp[0].u.expr); } +#line 7591 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 538: -/* Line 1792 of yacc.c */ -#line 3026 "dtool/src/cppparser/cppBison.yxx" +#line 3017 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); + (yyval.u.expr) = (CPPExpression *)NULL; } +#line 7599 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 539: -/* Line 1792 of yacc.c */ -#line 3030 "dtool/src/cppparser/cppBison.yxx" +#line 3021 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(',', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = (yyvsp[0].u.expr); } +#line 7607 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 540: -/* Line 1792 of yacc.c */ -#line 3037 "dtool/src/cppparser/cppBison.yxx" +#line 3028 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); + (yyval.u.expr) = (yyvsp[0].u.expr); } +#line 7615 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 541: -/* Line 1792 of yacc.c */ -#line 3041 "dtool/src/cppparser/cppBison.yxx" +#line 3032 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(2) - (4)].u.type), (yyvsp[(4) - (4)].u.expr))); + (yyval.u.expr) = new CPPExpression(',', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 7623 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 542: -/* Line 1792 of yacc.c */ -#line 3045 "dtool/src/cppparser/cppBison.yxx" +#line 3039 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_static_cast)); + (yyval.u.expr) = (yyvsp[0].u.expr); } +#line 7631 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 543: -/* Line 1792 of yacc.c */ -#line 3049 "dtool/src/cppparser/cppBison.yxx" +#line 3043 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_dynamic_cast)); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-2].u.type), (yyvsp[0].u.expr))); } +#line 7639 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 544: -/* Line 1792 of yacc.c */ -#line 3053 "dtool/src/cppparser/cppBison.yxx" +#line 3047 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_const_cast)); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_static_cast)); } +#line 7647 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 545: -/* Line 1792 of yacc.c */ -#line 3057 "dtool/src/cppparser/cppBison.yxx" +#line 3051 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_reinterpret_cast)); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_dynamic_cast)); } +#line 7655 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 546: -/* Line 1792 of yacc.c */ -#line 3061 "dtool/src/cppparser/cppBison.yxx" +#line 3055 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[(3) - (4)].u.type))); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_const_cast)); } +#line 7663 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 547: -/* Line 1792 of yacc.c */ -#line 3065 "dtool/src/cppparser/cppBison.yxx" +#line 3059 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPDeclaration *arg = (yyvsp[(3) - (4)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_reinterpret_cast)); +} +#line 7671 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 548: +#line 3063 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[-1].u.type))); +} +#line 7679 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 549: +#line 3067 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + CPPDeclaration *arg = (yyvsp[-1].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (arg == (CPPDeclaration *)NULL) { - yyerror("undefined sizeof argument: " + (yyvsp[(3) - (4)].u.identifier)->get_fully_scoped_name(), (yylsp[(3) - (4)])); + yyerror("undefined sizeof argument: " + (yyvsp[-1].u.identifier)->get_fully_scoped_name(), (yylsp[-1])); } else if (arg->get_subtype() == CPPDeclaration::ST_instance) { CPPInstance *inst = arg->as_instance(); (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func(inst->_type)); @@ -8204,1102 +7691,471 @@ yyreduce: (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func(arg->as_type())); } } - break; - - case 548: -/* Line 1792 of yacc.c */ -#line 3077 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[(4) - (5)].u.identifier))); -} - break; - - case 549: -/* Line 1792 of yacc.c */ -#line 3081 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[(3) - (4)].u.type))); -} +#line 7695 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 550: -/* Line 1792 of yacc.c */ -#line 3085 "dtool/src/cppparser/cppBison.yxx" +#line 3079 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[(2) - (2)].u.expr)); + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[-1].u.identifier))); } +#line 7703 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 551: -/* Line 1792 of yacc.c */ -#line 3089 "dtool/src/cppparser/cppBison.yxx" +#line 3083 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[(2) - (2)].u.expr)); + (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[-1].u.type))); } +#line 7711 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 552: -/* Line 1792 of yacc.c */ -#line 3093 "dtool/src/cppparser/cppBison.yxx" +#line 3087 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[(2) - (2)].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr)); } +#line 7719 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 553: -/* Line 1792 of yacc.c */ -#line 3097 "dtool/src/cppparser/cppBison.yxx" +#line 3091 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[(2) - (2)].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr)); } +#line 7727 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 554: -/* Line 1792 of yacc.c */ -#line 3101 "dtool/src/cppparser/cppBison.yxx" +#line 3095 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[(2) - (2)].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr)); } +#line 7735 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 555: -/* Line 1792 of yacc.c */ -#line 3105 "dtool/src/cppparser/cppBison.yxx" +#line 3099 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[(2) - (2)].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr)); } +#line 7743 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 556: -/* Line 1792 of yacc.c */ -#line 3109 "dtool/src/cppparser/cppBison.yxx" +#line 3103 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('*', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[0].u.expr)); } +#line 7751 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 557: -/* Line 1792 of yacc.c */ -#line 3113 "dtool/src/cppparser/cppBison.yxx" +#line 3107 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('/', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr)); } +#line 7759 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 558: -/* Line 1792 of yacc.c */ -#line 3117 "dtool/src/cppparser/cppBison.yxx" +#line 3111 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('%', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 7767 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 559: -/* Line 1792 of yacc.c */ -#line 3121 "dtool/src/cppparser/cppBison.yxx" +#line 3115 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('+', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 7775 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 560: -/* Line 1792 of yacc.c */ -#line 3125 "dtool/src/cppparser/cppBison.yxx" +#line 3119 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('-', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 7783 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 561: -/* Line 1792 of yacc.c */ -#line 3129 "dtool/src/cppparser/cppBison.yxx" +#line 3123 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('|', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 7791 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 562: -/* Line 1792 of yacc.c */ -#line 3133 "dtool/src/cppparser/cppBison.yxx" +#line 3127 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('^', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 7799 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 563: -/* Line 1792 of yacc.c */ -#line 3137 "dtool/src/cppparser/cppBison.yxx" +#line 3131 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('&', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 7807 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 564: -/* Line 1792 of yacc.c */ -#line 3141 "dtool/src/cppparser/cppBison.yxx" +#line 3135 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 7815 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 565: -/* Line 1792 of yacc.c */ -#line 3145 "dtool/src/cppparser/cppBison.yxx" +#line 3139 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 7823 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 566: -/* Line 1792 of yacc.c */ -#line 3149 "dtool/src/cppparser/cppBison.yxx" +#line 3143 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 7831 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 567: -/* Line 1792 of yacc.c */ -#line 3153 "dtool/src/cppparser/cppBison.yxx" +#line 3147 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 7839 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 568: -/* Line 1792 of yacc.c */ -#line 3157 "dtool/src/cppparser/cppBison.yxx" +#line 3151 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 7847 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 569: -/* Line 1792 of yacc.c */ -#line 3161 "dtool/src/cppparser/cppBison.yxx" +#line 3155 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 7855 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 570: -/* Line 1792 of yacc.c */ -#line 3165 "dtool/src/cppparser/cppBison.yxx" +#line 3159 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 7863 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 571: -/* Line 1792 of yacc.c */ -#line 3169 "dtool/src/cppparser/cppBison.yxx" +#line 3163 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 7871 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 572: -/* Line 1792 of yacc.c */ -#line 3173 "dtool/src/cppparser/cppBison.yxx" +#line 3167 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('?', (yyvsp[(1) - (5)].u.expr), (yyvsp[(3) - (5)].u.expr), (yyvsp[(5) - (5)].u.expr)); + (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 7879 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 573: -/* Line 1792 of yacc.c */ -#line 3177 "dtool/src/cppparser/cppBison.yxx" +#line 3171 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('[', (yyvsp[(1) - (4)].u.expr), (yyvsp[(3) - (4)].u.expr)); + (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 7887 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 574: -/* Line 1792 of yacc.c */ -#line 3181 "dtool/src/cppparser/cppBison.yxx" +#line 3175 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[(1) - (4)].u.expr), (yyvsp[(3) - (4)].u.expr)); + (yyval.u.expr) = new CPPExpression('?', (yyvsp[-4].u.expr), (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 7895 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 575: -/* Line 1792 of yacc.c */ -#line 3185 "dtool/src/cppparser/cppBison.yxx" +#line 3179 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[(1) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } +#line 7903 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 576: -/* Line 1792 of yacc.c */ -#line 3189 "dtool/src/cppparser/cppBison.yxx" +#line 3183 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('.', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } +#line 7911 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 577: -/* Line 1792 of yacc.c */ -#line 3193 "dtool/src/cppparser/cppBison.yxx" +#line 3187 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr)); } +#line 7919 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 578: -/* Line 1792 of yacc.c */ -#line 3197 "dtool/src/cppparser/cppBison.yxx" +#line 3191 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (yyvsp[(2) - (3)].u.expr); + (yyval.u.expr) = new CPPExpression('.', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 7927 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 579: -/* Line 1792 of yacc.c */ -#line 3205 "dtool/src/cppparser/cppBison.yxx" +#line 3195 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); + (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 7935 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 580: -/* Line 1792 of yacc.c */ -#line 3209 "dtool/src/cppparser/cppBison.yxx" +#line 3199 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(2) - (4)].u.type), (yyvsp[(4) - (4)].u.expr))); + (yyval.u.expr) = (yyvsp[-1].u.expr); } +#line 7943 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 581: -/* Line 1792 of yacc.c */ -#line 3213 "dtool/src/cppparser/cppBison.yxx" +#line 3207 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_static_cast)); + (yyval.u.expr) = (yyvsp[0].u.expr); } +#line 7951 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 582: -/* Line 1792 of yacc.c */ -#line 3217 "dtool/src/cppparser/cppBison.yxx" +#line 3211 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_dynamic_cast)); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-2].u.type), (yyvsp[0].u.expr))); } +#line 7959 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 583: -/* Line 1792 of yacc.c */ -#line 3221 "dtool/src/cppparser/cppBison.yxx" +#line 3215 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_const_cast)); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_static_cast)); } +#line 7967 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 584: -/* Line 1792 of yacc.c */ -#line 3225 "dtool/src/cppparser/cppBison.yxx" +#line 3219 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_reinterpret_cast)); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_dynamic_cast)); } +#line 7975 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 585: -/* Line 1792 of yacc.c */ -#line 3229 "dtool/src/cppparser/cppBison.yxx" +#line 3223 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - // A constructor call. - CPPType *type = (yyvsp[(1) - (4)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); - if (type == NULL) { - yyerror(string("internal error resolving type ") + (yyvsp[(1) - (4)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (4)])); - } - assert(type != NULL); - (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[(3) - (4)].u.expr))); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_const_cast)); } +#line 7983 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 586: -/* Line 1792 of yacc.c */ -#line 3239 "dtool/src/cppparser/cppBison.yxx" +#line 3227 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - // Aggregate initialization. - CPPType *type = (yyvsp[(1) - (4)].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); - if (type == NULL) { - yyerror(string("internal error resolving type ") + (yyvsp[(1) - (4)].u.identifier)->get_fully_scoped_name(), (yylsp[(1) - (4)])); - } - assert(type != NULL); - (yyval.u.expr) = new CPPExpression(CPPExpression::aggregate_init_op(type, (yyvsp[(3) - (4)].u.expr))); + (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[-4].u.type), (yyvsp[-1].u.expr), CPPExpression::T_reinterpret_cast)); } +#line 7991 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 587: -/* Line 1792 of yacc.c */ -#line 3249 "dtool/src/cppparser/cppBison.yxx" +#line 3231 "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[(3) - (4)].u.expr))); + // A constructor call. + CPPType *type = (yyvsp[-3].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if (type == NULL) { + yyerror(string("internal error resolving type ") + (yyvsp[-3].u.identifier)->get_fully_scoped_name(), (yylsp[-3])); + } + assert(type != NULL); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } +#line 8005 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 588: -/* Line 1792 of yacc.c */ -#line 3255 "dtool/src/cppparser/cppBison.yxx" +#line 3241 "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[(3) - (4)].u.expr))); + // Aggregate initialization. + CPPType *type = (yyvsp[-3].u.identifier)->find_type(current_scope, global_scope, false, current_lexer); + if (type == NULL) { + yyerror(string("internal error resolving type ") + (yyvsp[-3].u.identifier)->get_fully_scoped_name(), (yylsp[-3])); + } + assert(type != NULL); + (yyval.u.expr) = new CPPExpression(CPPExpression::aggregate_init_op(type, (yyvsp[-1].u.expr))); } +#line 8019 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 589: -/* Line 1792 of yacc.c */ -#line 3261 "dtool/src/cppparser/cppBison.yxx" +#line 3251 "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[(3) - (4)].u.expr))); + CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_int)); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } +#line 8029 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 590: -/* Line 1792 of yacc.c */ -#line 3267 "dtool/src/cppparser/cppBison.yxx" +#line 3257 "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[(3) - (4)].u.expr))); + CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_char)); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } +#line 8039 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 591: -/* Line 1792 of yacc.c */ -#line 3273 "dtool/src/cppparser/cppBison.yxx" +#line 3263 "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[(3) - (4)].u.expr))); + CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_wchar_t)); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } +#line 8049 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 592: -/* Line 1792 of yacc.c */ -#line 3279 "dtool/src/cppparser/cppBison.yxx" +#line 3269 "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[(3) - (4)].u.expr))); + CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_char16_t)); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } +#line 8059 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 593: -/* Line 1792 of yacc.c */ -#line 3285 "dtool/src/cppparser/cppBison.yxx" +#line 3275 "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 8069 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 594: +#line 3281 "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 8079 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 595: +#line 3287 "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[(3) - (4)].u.expr))); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } +#line 8090 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 594: -/* Line 1792 of yacc.c */ -#line 3292 "dtool/src/cppparser/cppBison.yxx" + case 596: +#line 3294 "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[(3) - (4)].u.expr))); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } +#line 8101 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 595: -/* Line 1792 of yacc.c */ -#line 3299 "dtool/src/cppparser/cppBison.yxx" + case 597: +#line 3301 "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[(3) - (4)].u.expr))); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } +#line 8112 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 596: -/* Line 1792 of yacc.c */ -#line 3306 "dtool/src/cppparser/cppBison.yxx" + case 598: +#line 3308 "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[(3) - (4)].u.expr))); -} - break; - - case 597: -/* Line 1792 of yacc.c */ -#line 3313 "dtool/src/cppparser/cppBison.yxx" - { - CPPType *type = - CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_float)); - (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[(3) - (4)].u.expr))); -} - break; - - case 598: -/* Line 1792 of yacc.c */ -#line 3319 "dtool/src/cppparser/cppBison.yxx" - { - CPPType *type = - CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_double)); - (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[(3) - (4)].u.expr))); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } +#line 8123 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 599: -/* Line 1792 of yacc.c */ -#line 3325 "dtool/src/cppparser/cppBison.yxx" +#line 3315 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[(3) - (4)].u.type))); + CPPType *type = + CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_float)); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } +#line 8133 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 600: -/* Line 1792 of yacc.c */ -#line 3329 "dtool/src/cppparser/cppBison.yxx" +#line 3321 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPDeclaration *arg = (yyvsp[(3) - (4)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); - if (arg == (CPPDeclaration *)NULL) { - yyerror("undefined sizeof argument: " + (yyvsp[(3) - (4)].u.identifier)->get_fully_scoped_name(), (yylsp[(3) - (4)])); - } else if (arg->get_subtype() == CPPDeclaration::ST_instance) { - CPPInstance *inst = arg->as_instance(); - (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func(inst->_type)); - } else { - (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func(arg->as_type())); - } + CPPType *type = + CPPType::new_type(new CPPSimpleType(CPPSimpleType::T_double)); + (yyval.u.expr) = new CPPExpression(CPPExpression::construct_op(type, (yyvsp[-1].u.expr))); } +#line 8143 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 601: -/* Line 1792 of yacc.c */ -#line 3341 "dtool/src/cppparser/cppBison.yxx" +#line 3327 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[(4) - (5)].u.identifier))); + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[-1].u.type))); } +#line 8151 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 602: -/* Line 1792 of yacc.c */ -#line 3345 "dtool/src/cppparser/cppBison.yxx" +#line 3331 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[(3) - (4)].u.type))); -} - break; - - case 603: -/* Line 1792 of yacc.c */ -#line 3349 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[(2) - (2)].u.type))); -} - break; - - case 604: -/* Line 1792 of yacc.c */ -#line 3353 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[(2) - (5)].u.type), (yyvsp[(4) - (5)].u.expr))); -} - break; - - case 605: -/* Line 1792 of yacc.c */ -#line 3357 "dtool/src/cppparser/cppBison.yxx" - { - 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[(1) - (4)])); - } - (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[(3) - (4)].u.type), std_type_info)); -} - break; - - case 606: -/* Line 1792 of yacc.c */ -#line 3368 "dtool/src/cppparser/cppBison.yxx" - { - 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[(1) - (4)])); - } - (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[(3) - (4)].u.expr), std_type_info)); -} - break; - - case 607: -/* Line 1792 of yacc.c */ -#line 3379 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[(2) - (2)].u.expr)); -} - break; - - case 608: -/* Line 1792 of yacc.c */ -#line 3383 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[(2) - (2)].u.expr)); -} - break; - - case 609: -/* Line 1792 of yacc.c */ -#line 3387 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[(2) - (2)].u.expr)); -} - break; - - case 610: -/* Line 1792 of yacc.c */ -#line 3391 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[(2) - (2)].u.expr)); -} - break; - - case 611: -/* Line 1792 of yacc.c */ -#line 3395 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[(2) - (2)].u.expr)); -} - break; - - case 612: -/* Line 1792 of yacc.c */ -#line 3399 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[(2) - (2)].u.expr)); -} - break; - - case 613: -/* Line 1792 of yacc.c */ -#line 3403 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('*', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 614: -/* Line 1792 of yacc.c */ -#line 3407 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('/', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 615: -/* Line 1792 of yacc.c */ -#line 3411 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('%', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 616: -/* Line 1792 of yacc.c */ -#line 3415 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('+', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 617: -/* Line 1792 of yacc.c */ -#line 3419 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('-', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 618: -/* Line 1792 of yacc.c */ -#line 3423 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('|', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 619: -/* Line 1792 of yacc.c */ -#line 3427 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('^', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 620: -/* Line 1792 of yacc.c */ -#line 3431 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('&', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 621: -/* Line 1792 of yacc.c */ -#line 3435 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 622: -/* Line 1792 of yacc.c */ -#line 3439 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 623: -/* Line 1792 of yacc.c */ -#line 3443 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 624: -/* Line 1792 of yacc.c */ -#line 3447 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 625: -/* Line 1792 of yacc.c */ -#line 3451 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 626: -/* Line 1792 of yacc.c */ -#line 3455 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 627: -/* Line 1792 of yacc.c */ -#line 3459 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('<', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 628: -/* Line 1792 of yacc.c */ -#line 3463 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('>', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 629: -/* Line 1792 of yacc.c */ -#line 3467 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 630: -/* Line 1792 of yacc.c */ -#line 3471 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 631: -/* Line 1792 of yacc.c */ -#line 3475 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('?', (yyvsp[(1) - (5)].u.expr), (yyvsp[(3) - (5)].u.expr), (yyvsp[(5) - (5)].u.expr)); -} - break; - - case 632: -/* Line 1792 of yacc.c */ -#line 3479 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('[', (yyvsp[(1) - (4)].u.expr), (yyvsp[(3) - (4)].u.expr)); -} - break; - - case 633: -/* Line 1792 of yacc.c */ -#line 3483 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[(1) - (4)].u.expr), (yyvsp[(3) - (4)].u.expr)); -} - break; - - case 634: -/* Line 1792 of yacc.c */ -#line 3487 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[(1) - (3)].u.expr)); -} - break; - - case 635: -/* Line 1792 of yacc.c */ -#line 3491 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression('.', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 636: -/* Line 1792 of yacc.c */ -#line 3495 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); -} - break; - - case 637: -/* Line 1792 of yacc.c */ -#line 3499 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = (yyvsp[(2) - (3)].u.expr); -} - break; - - case 638: -/* Line 1792 of yacc.c */ -#line 3506 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.integer)); -} - break; - - case 639: -/* Line 1792 of yacc.c */ -#line 3510 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(true); -} - break; - - case 640: -/* Line 1792 of yacc.c */ -#line 3514 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(false); -} - break; - - case 641: -/* Line 1792 of yacc.c */ -#line 3518 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.integer)); -} - break; - - case 642: -/* Line 1792 of yacc.c */ -#line 3522 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.real)); -} - break; - - case 643: -/* Line 1792 of yacc.c */ -#line 3526 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); -} - break; - - case 644: -/* Line 1792 of yacc.c */ -#line 3530 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); -} - break; - - case 645: -/* Line 1792 of yacc.c */ -#line 3534 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.identifier), current_scope, global_scope, current_lexer); -} - break; - - case 646: -/* Line 1792 of yacc.c */ -#line 3538 "dtool/src/cppparser/cppBison.yxx" - { - // A variable named "final". C++11 explicitly permits this. - CPPIdentifier *ident = new CPPIdentifier("final", (yylsp[(1) - (1)])); - (yyval.u.expr) = new CPPExpression(ident, current_scope, global_scope, current_lexer); -} - break; - - case 647: -/* Line 1792 of yacc.c */ -#line 3544 "dtool/src/cppparser/cppBison.yxx" - { - // A variable named "override". C++11 explicitly permits this. - CPPIdentifier *ident = new CPPIdentifier("override", (yylsp[(1) - (1)])); - (yyval.u.expr) = new CPPExpression(ident, current_scope, global_scope, current_lexer); -} - break; - - case 648: -/* Line 1792 of yacc.c */ -#line 3550 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr()); -} - break; - - case 649: -/* Line 1792 of yacc.c */ -#line 3554 "dtool/src/cppparser/cppBison.yxx" - { - (yyvsp[(2) - (8)].u.closure_type)->_flags = (yyvsp[(4) - (8)].u.integer); - (yyvsp[(2) - (8)].u.closure_type)->_return_type = (yyvsp[(5) - (8)].u.type); - (yyval.u.expr) = new CPPExpression(CPPExpression::lambda((yyvsp[(2) - (8)].u.closure_type))); -} - break; - - case 650: -/* Line 1792 of yacc.c */ -#line 3560 "dtool/src/cppparser/cppBison.yxx" - { - (yyvsp[(2) - (11)].u.closure_type)->_parameters = (yyvsp[(5) - (11)].u.param_list); - (yyvsp[(2) - (11)].u.closure_type)->_flags = (yyvsp[(7) - (11)].u.integer); - (yyvsp[(2) - (11)].u.closure_type)->_return_type = (yyvsp[(8) - (11)].u.type); - (yyval.u.expr) = new CPPExpression(CPPExpression::lambda((yyvsp[(2) - (11)].u.closure_type))); -} - break; - - case 651: -/* Line 1792 of yacc.c */ -#line 3567 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_HAS_VIRTUAL_DESTRUCTOR, (yyvsp[(3) - (4)].u.type))); -} - break; - - case 652: -/* Line 1792 of yacc.c */ -#line 3571 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_ABSTRACT, (yyvsp[(3) - (4)].u.type))); -} - break; - - case 653: -/* Line 1792 of yacc.c */ -#line 3575 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CLASS, (yyvsp[(3) - (6)].u.type), (yyvsp[(5) - (6)].u.type))); -} - break; - - case 654: -/* Line 1792 of yacc.c */ -#line 3579 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CLASS, (yyvsp[(3) - (4)].u.type))); -} - break; - - case 655: -/* Line 1792 of yacc.c */ -#line 3583 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CONSTRUCTIBLE, (yyvsp[(3) - (4)].u.type))); -} - break; - - case 656: -/* Line 1792 of yacc.c */ -#line 3587 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CONSTRUCTIBLE, (yyvsp[(3) - (6)].u.type), (yyvsp[(5) - (6)].u.type))); -} - break; - - case 657: -/* Line 1792 of yacc.c */ -#line 3591 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CONVERTIBLE_TO, (yyvsp[(3) - (6)].u.type), (yyvsp[(5) - (6)].u.type))); -} - break; - - case 658: -/* Line 1792 of yacc.c */ -#line 3595 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_DESTRUCTIBLE, (yyvsp[(3) - (4)].u.type))); -} - break; - - case 659: -/* Line 1792 of yacc.c */ -#line 3599 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_EMPTY, (yyvsp[(3) - (4)].u.type))); -} - break; - - case 660: -/* Line 1792 of yacc.c */ -#line 3603 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_ENUM, (yyvsp[(3) - (4)].u.type))); -} - break; - - case 661: -/* Line 1792 of yacc.c */ -#line 3607 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_FINAL, (yyvsp[(3) - (4)].u.type))); -} - break; - - case 662: -/* Line 1792 of yacc.c */ -#line 3611 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_FUNDAMENTAL, (yyvsp[(3) - (4)].u.type))); -} - break; - - case 663: -/* Line 1792 of yacc.c */ -#line 3615 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_POD, (yyvsp[(3) - (4)].u.type))); -} - break; - - case 664: -/* Line 1792 of yacc.c */ -#line 3619 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_POLYMORPHIC, (yyvsp[(3) - (4)].u.type))); -} - break; - - case 665: -/* Line 1792 of yacc.c */ -#line 3623 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_STANDARD_LAYOUT, (yyvsp[(3) - (4)].u.type))); -} - break; - - case 666: -/* Line 1792 of yacc.c */ -#line 3627 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_TRIVIAL, (yyvsp[(3) - (4)].u.type))); -} - break; - - case 667: -/* Line 1792 of yacc.c */ -#line 3631 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_UNION, (yyvsp[(3) - (4)].u.type))); -} - break; - - case 668: -/* Line 1792 of yacc.c */ -#line 3645 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); -} - break; - - case 669: -/* Line 1792 of yacc.c */ -#line 3649 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(2) - (4)].u.type), (yyvsp[(4) - (4)].u.expr))); -} - break; - - case 670: -/* Line 1792 of yacc.c */ -#line 3653 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_static_cast)); -} - break; - - case 671: -/* Line 1792 of yacc.c */ -#line 3657 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_dynamic_cast)); -} - break; - - case 672: -/* Line 1792 of yacc.c */ -#line 3661 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_const_cast)); -} - break; - - case 673: -/* Line 1792 of yacc.c */ -#line 3665 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::typecast_op((yyvsp[(3) - (7)].u.type), (yyvsp[(6) - (7)].u.expr), CPPExpression::T_reinterpret_cast)); -} - break; - - case 674: -/* Line 1792 of yacc.c */ -#line 3669 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[(3) - (4)].u.type))); -} - break; - - case 675: -/* Line 1792 of yacc.c */ -#line 3673 "dtool/src/cppparser/cppBison.yxx" - { - CPPDeclaration *arg = (yyvsp[(3) - (4)].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + CPPDeclaration *arg = (yyvsp[-1].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); if (arg == (CPPDeclaration *)NULL) { - yyerror("undefined sizeof argument: " + (yyvsp[(3) - (4)].u.identifier)->get_fully_scoped_name(), (yylsp[(3) - (4)])); + yyerror("undefined sizeof argument: " + (yyvsp[-1].u.identifier)->get_fully_scoped_name(), (yylsp[-1])); } else if (arg->get_subtype() == CPPDeclaration::ST_instance) { CPPInstance *inst = arg->as_instance(); (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func(inst->_type)); @@ -9307,681 +8163,1312 @@ yyreduce: (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func(arg->as_type())); } } +#line 8167 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 676: -/* Line 1792 of yacc.c */ -#line 3685 "dtool/src/cppparser/cppBison.yxx" + case 603: +#line 3343 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[(4) - (5)].u.identifier))); + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[-1].u.identifier))); } +#line 8175 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 677: -/* Line 1792 of yacc.c */ -#line 3689 "dtool/src/cppparser/cppBison.yxx" + case 604: +#line 3347 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[(3) - (4)].u.type))); + (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[-1].u.type))); } +#line 8183 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 678: -/* Line 1792 of yacc.c */ -#line 3693 "dtool/src/cppparser/cppBison.yxx" + case 605: +#line 3351 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[(2) - (2)].u.type))); + (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[0].u.type))); } +#line 8191 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 679: -/* Line 1792 of yacc.c */ -#line 3697 "dtool/src/cppparser/cppBison.yxx" + case 606: +#line 3355 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[(2) - (5)].u.type), (yyvsp[(4) - (5)].u.expr))); + (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[-3].u.type), (yyvsp[-1].u.expr))); } +#line 8199 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 680: -/* Line 1792 of yacc.c */ -#line 3701 "dtool/src/cppparser/cppBison.yxx" + case 607: +#line 3359 "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[(1) - (4)])); + yywarning("cannot use typeid before including ", (yylsp[-3])); } - (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[(3) - (4)].u.type), std_type_info)); + (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.type), std_type_info)); } +#line 8214 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 681: -/* Line 1792 of yacc.c */ -#line 3712 "dtool/src/cppparser/cppBison.yxx" + case 608: +#line 3370 "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[(1) - (4)])); + yywarning("cannot use typeid before including ", (yylsp[-3])); } - (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[(3) - (4)].u.expr), std_type_info)); + (yyval.u.expr) = new CPPExpression(CPPExpression::typeid_op((yyvsp[-1].u.expr), std_type_info)); } +#line 8229 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 682: -/* Line 1792 of yacc.c */ -#line 3723 "dtool/src/cppparser/cppBison.yxx" + case 609: +#line 3381 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[(2) - (2)].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr)); } +#line 8237 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 683: -/* Line 1792 of yacc.c */ -#line 3727 "dtool/src/cppparser/cppBison.yxx" + case 610: +#line 3385 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[(2) - (2)].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr)); } +#line 8245 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 684: -/* Line 1792 of yacc.c */ -#line 3731 "dtool/src/cppparser/cppBison.yxx" + case 611: +#line 3389 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[(2) - (2)].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr)); } +#line 8253 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 685: -/* Line 1792 of yacc.c */ -#line 3735 "dtool/src/cppparser/cppBison.yxx" + case 612: +#line 3393 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[(2) - (2)].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr)); } +#line 8261 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 686: -/* Line 1792 of yacc.c */ -#line 3739 "dtool/src/cppparser/cppBison.yxx" + case 613: +#line 3397 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[(2) - (2)].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_STAR, (yyvsp[0].u.expr)); } +#line 8269 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 687: -/* Line 1792 of yacc.c */ -#line 3743 "dtool/src/cppparser/cppBison.yxx" + case 614: +#line 3401 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('*', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr)); } +#line 8277 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 688: -/* Line 1792 of yacc.c */ -#line 3747 "dtool/src/cppparser/cppBison.yxx" + case 615: +#line 3405 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('/', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 8285 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 689: -/* Line 1792 of yacc.c */ -#line 3751 "dtool/src/cppparser/cppBison.yxx" + case 616: +#line 3409 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('%', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 8293 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 690: -/* Line 1792 of yacc.c */ -#line 3755 "dtool/src/cppparser/cppBison.yxx" + case 617: +#line 3413 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('+', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 8301 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 691: -/* Line 1792 of yacc.c */ -#line 3759 "dtool/src/cppparser/cppBison.yxx" + case 618: +#line 3417 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('-', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 8309 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 692: -/* Line 1792 of yacc.c */ -#line 3763 "dtool/src/cppparser/cppBison.yxx" + case 619: +#line 3421 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('|', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 8317 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 693: -/* Line 1792 of yacc.c */ -#line 3767 "dtool/src/cppparser/cppBison.yxx" + case 620: +#line 3425 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('^', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 8325 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 694: -/* Line 1792 of yacc.c */ -#line 3771 "dtool/src/cppparser/cppBison.yxx" + case 621: +#line 3429 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('&', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 8333 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 695: -/* Line 1792 of yacc.c */ -#line 3775 "dtool/src/cppparser/cppBison.yxx" + case 622: +#line 3433 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 8341 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 696: -/* Line 1792 of yacc.c */ -#line 3779 "dtool/src/cppparser/cppBison.yxx" + case 623: +#line 3437 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 8349 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 697: -/* Line 1792 of yacc.c */ -#line 3783 "dtool/src/cppparser/cppBison.yxx" + case 624: +#line 3441 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 8357 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 698: -/* Line 1792 of yacc.c */ -#line 3787 "dtool/src/cppparser/cppBison.yxx" + case 625: +#line 3445 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 8365 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 699: -/* Line 1792 of yacc.c */ -#line 3791 "dtool/src/cppparser/cppBison.yxx" + case 626: +#line 3449 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 8373 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 700: -/* Line 1792 of yacc.c */ -#line 3795 "dtool/src/cppparser/cppBison.yxx" + case 627: +#line 3453 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 8381 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 701: -/* Line 1792 of yacc.c */ -#line 3799 "dtool/src/cppparser/cppBison.yxx" + case 628: +#line 3457 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('<', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 8389 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 702: -/* Line 1792 of yacc.c */ -#line 3803 "dtool/src/cppparser/cppBison.yxx" + case 629: +#line 3461 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('>', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('<', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 8397 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 703: -/* Line 1792 of yacc.c */ -#line 3807 "dtool/src/cppparser/cppBison.yxx" + case 630: +#line 3465 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('>', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 8405 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 704: -/* Line 1792 of yacc.c */ -#line 3811 "dtool/src/cppparser/cppBison.yxx" + case 631: +#line 3469 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 8413 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 705: -/* Line 1792 of yacc.c */ -#line 3815 "dtool/src/cppparser/cppBison.yxx" + case 632: +#line 3473 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('?', (yyvsp[(1) - (5)].u.expr), (yyvsp[(3) - (5)].u.expr), (yyvsp[(5) - (5)].u.expr)); + (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 8421 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 706: -/* Line 1792 of yacc.c */ -#line 3819 "dtool/src/cppparser/cppBison.yxx" + case 633: +#line 3477 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('[', (yyvsp[(1) - (4)].u.expr), (yyvsp[(3) - (4)].u.expr)); + (yyval.u.expr) = new CPPExpression('?', (yyvsp[-4].u.expr), (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 8429 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 707: -/* Line 1792 of yacc.c */ -#line 3823 "dtool/src/cppparser/cppBison.yxx" + case 634: +#line 3481 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[(1) - (4)].u.expr), (yyvsp[(3) - (4)].u.expr)); + (yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } +#line 8437 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 708: -/* Line 1792 of yacc.c */ -#line 3827 "dtool/src/cppparser/cppBison.yxx" + case 635: +#line 3485 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('f', (yyvsp[(1) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); } +#line 8445 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 709: -/* Line 1792 of yacc.c */ -#line 3831 "dtool/src/cppparser/cppBison.yxx" + case 636: +#line 3489 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression('.', (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr)); } +#line 8453 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 710: -/* Line 1792 of yacc.c */ -#line 3835 "dtool/src/cppparser/cppBison.yxx" + case 637: +#line 3493 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[(1) - (3)].u.expr), (yyvsp[(3) - (3)].u.expr)); + (yyval.u.expr) = new CPPExpression('.', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 8461 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 711: -/* Line 1792 of yacc.c */ -#line 3839 "dtool/src/cppparser/cppBison.yxx" + case 638: +#line 3497 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (yyvsp[(2) - (3)].u.expr); + (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); } +#line 8469 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 712: -/* Line 1792 of yacc.c */ -#line 3846 "dtool/src/cppparser/cppBison.yxx" + case 639: +#line 3501 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.integer)); + (yyval.u.expr) = (yyvsp[-1].u.expr); } +#line 8477 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 713: -/* Line 1792 of yacc.c */ -#line 3850 "dtool/src/cppparser/cppBison.yxx" + case 640: +#line 3508 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); +} +#line 8485 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 641: +#line 3512 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(true); } +#line 8493 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 714: -/* Line 1792 of yacc.c */ -#line 3854 "dtool/src/cppparser/cppBison.yxx" + case 642: +#line 3516 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(false); } +#line 8501 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 715: -/* Line 1792 of yacc.c */ -#line 3858 "dtool/src/cppparser/cppBison.yxx" + case 643: +#line 3520 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.integer)); + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); } +#line 8509 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 716: -/* Line 1792 of yacc.c */ -#line 3862 "dtool/src/cppparser/cppBison.yxx" + case 644: +#line 3524 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.real)); + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.real)); } +#line 8517 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 717: -/* Line 1792 of yacc.c */ -#line 3866 "dtool/src/cppparser/cppBison.yxx" + case 645: +#line 3528 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); + (yyval.u.expr) = (yyvsp[0].u.expr); } +#line 8525 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 718: -/* Line 1792 of yacc.c */ -#line 3870 "dtool/src/cppparser/cppBison.yxx" + case 646: +#line 3532 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); + (yyval.u.expr) = (yyvsp[0].u.expr); } +#line 8533 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 719: -/* Line 1792 of yacc.c */ -#line 3874 "dtool/src/cppparser/cppBison.yxx" + case 647: +#line 3536 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].u.identifier), current_scope, global_scope, current_lexer); + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.identifier), current_scope, global_scope, current_lexer); } +#line 8541 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 720: -/* Line 1792 of yacc.c */ -#line 3878 "dtool/src/cppparser/cppBison.yxx" + case 648: +#line 3540 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // A variable named "final". C++11 explicitly permits this. - CPPIdentifier *ident = new CPPIdentifier("final", (yylsp[(1) - (1)])); + CPPIdentifier *ident = new CPPIdentifier("final", (yylsp[0])); (yyval.u.expr) = new CPPExpression(ident, current_scope, global_scope, current_lexer); } +#line 8551 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 721: -/* Line 1792 of yacc.c */ -#line 3884 "dtool/src/cppparser/cppBison.yxx" + case 649: +#line 3546 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // A variable named "override". C++11 explicitly permits this. - CPPIdentifier *ident = new CPPIdentifier("override", (yylsp[(1) - (1)])); + CPPIdentifier *ident = new CPPIdentifier("override", (yylsp[0])); (yyval.u.expr) = new CPPExpression(ident, current_scope, global_scope, current_lexer); } +#line 8561 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; - case 722: -/* Line 1792 of yacc.c */ -#line 3890 "dtool/src/cppparser/cppBison.yxx" + case 650: +#line 3552 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr()); } +#line 8569 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 651: +#line 3556 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyvsp[-6].u.closure_type)->_flags = (yyvsp[-4].u.integer); + (yyvsp[-6].u.closure_type)->_return_type = (yyvsp[-3].u.type); + (yyval.u.expr) = new CPPExpression(CPPExpression::lambda((yyvsp[-6].u.closure_type))); +} +#line 8579 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 652: +#line 3562 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyvsp[-9].u.closure_type)->_parameters = (yyvsp[-6].u.param_list); + (yyvsp[-9].u.closure_type)->_flags = (yyvsp[-4].u.integer); + (yyvsp[-9].u.closure_type)->_return_type = (yyvsp[-3].u.type); + (yyval.u.expr) = new CPPExpression(CPPExpression::lambda((yyvsp[-9].u.closure_type))); +} +#line 8590 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 653: +#line 3569 "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 8598 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 654: +#line 3573 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_ABSTRACT, (yyvsp[-1].u.type))); +} +#line 8606 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 655: +#line 3577 "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 8614 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 656: +#line 3581 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CLASS, (yyvsp[-1].u.type))); +} +#line 8622 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 657: +#line 3585 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_CONSTRUCTIBLE, (yyvsp[-1].u.type))); +} +#line 8630 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 658: +#line 3589 "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 8638 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 659: +#line 3593 "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 8646 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 660: +#line 3597 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_DESTRUCTIBLE, (yyvsp[-1].u.type))); +} +#line 8654 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 661: +#line 3601 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_EMPTY, (yyvsp[-1].u.type))); +} +#line 8662 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 662: +#line 3605 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_ENUM, (yyvsp[-1].u.type))); +} +#line 8670 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 663: +#line 3609 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_FINAL, (yyvsp[-1].u.type))); +} +#line 8678 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 664: +#line 3613 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_FUNDAMENTAL, (yyvsp[-1].u.type))); +} +#line 8686 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 665: +#line 3617 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_POD, (yyvsp[-1].u.type))); +} +#line 8694 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 666: +#line 3621 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_POLYMORPHIC, (yyvsp[-1].u.type))); +} +#line 8702 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 667: +#line 3625 "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 8710 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 668: +#line 3629 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_TRIVIAL, (yyvsp[-1].u.type))); +} +#line 8718 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 669: +#line 3633 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::type_trait(KW_IS_UNION, (yyvsp[-1].u.type))); +} +#line 8726 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 670: +#line 3647 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[0].u.expr); +} +#line 8734 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 671: +#line 3651 "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 8742 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 672: +#line 3655 "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 8750 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 673: +#line 3659 "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 8758 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 674: +#line 3663 "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 8766 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 675: +#line 3667 "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 8774 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 676: +#line 3671 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func((yyvsp[-1].u.type))); +} +#line 8782 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 677: +#line 3675 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + CPPDeclaration *arg = (yyvsp[-1].u.identifier)->find_symbol(current_scope, global_scope, current_lexer); + if (arg == (CPPDeclaration *)NULL) { + yyerror("undefined sizeof argument: " + (yyvsp[-1].u.identifier)->get_fully_scoped_name(), (yylsp[-1])); + } else if (arg->get_subtype() == CPPDeclaration::ST_instance) { + CPPInstance *inst = arg->as_instance(); + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func(inst->_type)); + } else { + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_func(arg->as_type())); + } +} +#line 8798 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 678: +#line 3687 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::sizeof_ellipsis_func((yyvsp[-1].u.identifier))); +} +#line 8806 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 679: +#line 3691 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::alignof_func((yyvsp[-1].u.type))); +} +#line 8814 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 680: +#line 3695 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(CPPExpression::new_op((yyvsp[0].u.type))); +} +#line 8822 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 681: +#line 3699 "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 8830 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 682: +#line 3703 "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 8845 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 683: +#line 3714 "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 8860 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 684: +#line 3725 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(UNARY_NOT, (yyvsp[0].u.expr)); +} +#line 8868 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 685: +#line 3729 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(UNARY_NEGATE, (yyvsp[0].u.expr)); +} +#line 8876 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 686: +#line 3733 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(UNARY_MINUS, (yyvsp[0].u.expr)); +} +#line 8884 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 687: +#line 3737 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(UNARY_PLUS, (yyvsp[0].u.expr)); +} +#line 8892 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 688: +#line 3741 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(UNARY_REF, (yyvsp[0].u.expr)); +} +#line 8900 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 689: +#line 3745 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('*', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8908 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 690: +#line 3749 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('/', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8916 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 691: +#line 3753 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('%', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8924 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 692: +#line 3757 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('+', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8932 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 693: +#line 3761 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('-', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8940 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 694: +#line 3765 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('|', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8948 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 695: +#line 3769 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('^', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8956 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 696: +#line 3773 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('&', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8964 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 697: +#line 3777 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(OROR, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8972 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 698: +#line 3781 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(ANDAND, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8980 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 699: +#line 3785 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(EQCOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8988 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 700: +#line 3789 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(NECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 8996 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 701: +#line 3793 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(LECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 9004 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 702: +#line 3797 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(GECOMPARE, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 9012 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 703: +#line 3801 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('<', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 9020 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 704: +#line 3805 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('>', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 9028 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 705: +#line 3809 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(LSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 9036 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 706: +#line 3813 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(RSHIFT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 9044 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 707: +#line 3817 "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 9052 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 708: +#line 3821 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('[', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); +} +#line 9060 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 709: +#line 3825 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('f', (yyvsp[-3].u.expr), (yyvsp[-1].u.expr)); +} +#line 9068 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 710: +#line 3829 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('f', (yyvsp[-2].u.expr)); +} +#line 9076 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 711: +#line 3833 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression('.', (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 9084 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 712: +#line 3837 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(POINTSAT, (yyvsp[-2].u.expr), (yyvsp[0].u.expr)); +} +#line 9092 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 713: +#line 3841 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[-1].u.expr); +} +#line 9100 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 714: +#line 3848 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); +} +#line 9108 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 715: +#line 3852 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(true); +} +#line 9116 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 716: +#line 3856 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression(false); +} +#line 9124 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 717: +#line 3860 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.integer)); +} +#line 9132 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 718: +#line 3864 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.real)); +} +#line 9140 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 719: +#line 3868 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[0].u.expr); +} +#line 9148 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 720: +#line 3872 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[0].u.expr); +} +#line 9156 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 721: +#line 3876 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = new CPPExpression((yyvsp[0].u.identifier), current_scope, global_scope, current_lexer); +} +#line 9164 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 722: +#line 3880 "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 9174 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 723: -/* Line 1792 of yacc.c */ -#line 3898 "dtool/src/cppparser/cppBison.yxx" +#line 3886 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.closure_type) = new CPPClosureType(); + // 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 9184 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 724: -/* Line 1792 of yacc.c */ -#line 3902 "dtool/src/cppparser/cppBison.yxx" +#line 3892 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.closure_type) = new CPPClosureType(CPPClosureType::CT_by_value); + (yyval.u.expr) = new CPPExpression(CPPExpression::get_nullptr()); } +#line 9192 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 725: -/* Line 1792 of yacc.c */ -#line 3906 "dtool/src/cppparser/cppBison.yxx" +#line 3900 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.closure_type) = new CPPClosureType(CPPClosureType::CT_by_reference); + (yyval.u.closure_type) = new CPPClosureType(); } +#line 9200 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 726: -/* Line 1792 of yacc.c */ -#line 3910 "dtool/src/cppparser/cppBison.yxx" +#line 3904 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.closure_type) = new CPPClosureType(); - (yyvsp[(1) - (2)].u.capture)->_initializer = (yyvsp[(2) - (2)].u.expr); - (yyval.u.closure_type)->_captures.push_back(*(yyvsp[(1) - (2)].u.capture)); - delete (yyvsp[(1) - (2)].u.capture); + (yyval.u.closure_type) = new CPPClosureType(CPPClosureType::CT_by_value); } +#line 9208 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 727: -/* Line 1792 of yacc.c */ -#line 3917 "dtool/src/cppparser/cppBison.yxx" +#line 3908 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.closure_type) = (yyvsp[(1) - (4)].u.closure_type); - (yyvsp[(3) - (4)].u.capture)->_initializer = (yyvsp[(4) - (4)].u.expr); - (yyval.u.closure_type)->_captures.push_back(*(yyvsp[(3) - (4)].u.capture)); - delete (yyvsp[(3) - (4)].u.capture); + (yyval.u.closure_type) = new CPPClosureType(CPPClosureType::CT_by_reference); } +#line 9216 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 728: -/* Line 1792 of yacc.c */ -#line 3927 "dtool/src/cppparser/cppBison.yxx" +#line 3912 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.capture) = new CPPClosureType::Capture; - (yyval.u.capture)->_name = (yyvsp[(2) - (2)].u.identifier)->get_simple_name(); - (yyval.u.capture)->_type = CPPClosureType::CT_by_reference; + (yyval.u.closure_type) = new CPPClosureType(); + (yyvsp[-1].u.capture)->_initializer = (yyvsp[0].u.expr); + (yyval.u.closure_type)->_captures.push_back(*(yyvsp[-1].u.capture)); + delete (yyvsp[-1].u.capture); } +#line 9227 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 729: -/* Line 1792 of yacc.c */ -#line 3933 "dtool/src/cppparser/cppBison.yxx" +#line 3919 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.capture) = new CPPClosureType::Capture; - (yyval.u.capture)->_name = (yyvsp[(2) - (3)].u.identifier)->get_simple_name(); - (yyval.u.capture)->_type = CPPClosureType::CT_by_reference; + (yyval.u.closure_type) = (yyvsp[-3].u.closure_type); + (yyvsp[-1].u.capture)->_initializer = (yyvsp[0].u.expr); + (yyval.u.closure_type)->_captures.push_back(*(yyvsp[-1].u.capture)); + delete (yyvsp[-1].u.capture); } +#line 9238 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 730: -/* Line 1792 of yacc.c */ -#line 3939 "dtool/src/cppparser/cppBison.yxx" +#line 3929 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { (yyval.u.capture) = new CPPClosureType::Capture; - (yyval.u.capture)->_name = (yyvsp[(1) - (1)].u.identifier)->get_simple_name(); + (yyval.u.capture)->_name = (yyvsp[0].u.identifier)->get_simple_name(); + (yyval.u.capture)->_type = CPPClosureType::CT_by_reference; +} +#line 9248 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 731: +#line 3935 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.capture) = new CPPClosureType::Capture; + (yyval.u.capture)->_name = (yyvsp[-1].u.identifier)->get_simple_name(); + (yyval.u.capture)->_type = CPPClosureType::CT_by_reference; +} +#line 9258 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 732: +#line 3941 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.capture) = new CPPClosureType::Capture; + (yyval.u.capture)->_name = (yyvsp[0].u.identifier)->get_simple_name(); if ((yyval.u.capture)->_name == "this") { (yyval.u.capture)->_type = CPPClosureType::CT_by_reference; } else { (yyval.u.capture)->_type = CPPClosureType::CT_by_value; } } - break; - - case 731: -/* Line 1792 of yacc.c */ -#line 3949 "dtool/src/cppparser/cppBison.yxx" - { - (yyval.u.capture) = new CPPClosureType::Capture; - (yyval.u.capture)->_name = (yyvsp[(2) - (2)].u.identifier)->get_simple_name(); - (yyval.u.capture)->_type = CPPClosureType::CT_by_value; - if ((yyval.u.capture)->_name != "this") { - yywarning("only capture name 'this' may be preceded by an asterisk", (yylsp[(2) - (2)])); - } -} - break; - - case 732: -/* Line 1792 of yacc.c */ -#line 3961 "dtool/src/cppparser/cppBison.yxx" - { - CPPType *type = (yyvsp[(1) - (1)].u.identifier)->find_type(current_scope, global_scope, true); - if (type == NULL) { - type = CPPType::new_type(new CPPTBDType((yyvsp[(1) - (1)].u.identifier))); - } - (yyval.u.type) = type; -} +#line 9272 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 733: -/* Line 1792 of yacc.c */ -#line 3969 "dtool/src/cppparser/cppBison.yxx" +#line 3951 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[(2) - (2)].u.identifier))); + (yyval.u.capture) = new CPPClosureType::Capture; + (yyval.u.capture)->_name = (yyvsp[0].u.identifier)->get_simple_name(); + (yyval.u.capture)->_type = CPPClosureType::CT_by_value; + if ((yyval.u.capture)->_name != "this") { + yywarning("only capture name 'this' may be preceded by an asterisk", (yylsp[0])); + } } +#line 9285 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 734: -/* Line 1792 of yacc.c */ -#line 3973 "dtool/src/cppparser/cppBison.yxx" +#line 3963 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - CPPClassTemplateParameter *ctp = new CPPClassTemplateParameter((yyvsp[(1) - (2)].u.identifier)); - ctp->_packed = true; - (yyval.u.type) = CPPType::new_type(ctp); + CPPType *type = (yyvsp[0].u.identifier)->find_type(current_scope, global_scope, true); + if (type == NULL) { + type = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); + } + (yyval.u.type) = type; } +#line 9297 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 735: -/* Line 1792 of yacc.c */ -#line 4003 "dtool/src/cppparser/cppBison.yxx" +#line 3971 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.identifier) = (yyvsp[(1) - (1)].u.identifier); + (yyval.u.type) = CPPType::new_type(new CPPTBDType((yyvsp[0].u.identifier))); } +#line 9305 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 736: -/* Line 1792 of yacc.c */ -#line 4007 "dtool/src/cppparser/cppBison.yxx" +#line 3975 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.identifier) = (yyvsp[(1) - (1)].u.identifier); + CPPClassTemplateParameter *ctp = new CPPClassTemplateParameter((yyvsp[-1].u.identifier)); + ctp->_packed = true; + (yyval.u.type) = CPPType::new_type(ctp); } +#line 9315 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 737: -/* Line 1792 of yacc.c */ -#line 4011 "dtool/src/cppparser/cppBison.yxx" +#line 4005 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.identifier) = (yyvsp[(1) - (1)].u.identifier); + (yyval.u.identifier) = (yyvsp[0].u.identifier); } +#line 9323 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 738: -/* Line 1792 of yacc.c */ -#line 4015 "dtool/src/cppparser/cppBison.yxx" +#line 4009 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.identifier) = new CPPIdentifier("final", (yylsp[(1) - (1)])); + (yyval.u.identifier) = (yyvsp[0].u.identifier); } +#line 9331 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 739: -/* Line 1792 of yacc.c */ -#line 4019 "dtool/src/cppparser/cppBison.yxx" +#line 4013 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.identifier) = new CPPIdentifier("override", (yylsp[(1) - (1)])); + (yyval.u.identifier) = (yyvsp[0].u.identifier); } +#line 9339 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 740: -/* Line 1792 of yacc.c */ -#line 4023 "dtool/src/cppparser/cppBison.yxx" +#line 4017 "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[(1) - (1)])); + (yyval.u.identifier) = new CPPIdentifier("final", (yylsp[0])); } +#line 9347 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 741: -/* Line 1792 of yacc.c */ -#line 4029 "dtool/src/cppparser/cppBison.yxx" +#line 4021 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.identifier) = new CPPIdentifier("float", (yylsp[(1) - (1)])); + (yyval.u.identifier) = new CPPIdentifier("override", (yylsp[0])); } +#line 9355 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 742: -/* Line 1792 of yacc.c */ -#line 4033 "dtool/src/cppparser/cppBison.yxx" +#line 4025 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.identifier) = new CPPIdentifier("public", (yylsp[(1) - (1)])); + // 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 9365 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 743: -/* Line 1792 of yacc.c */ -#line 4037 "dtool/src/cppparser/cppBison.yxx" +#line 4031 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.identifier) = new CPPIdentifier("private", (yylsp[(1) - (1)])); + (yyval.u.identifier) = new CPPIdentifier("float", (yylsp[0])); } +#line 9373 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 744: -/* Line 1792 of yacc.c */ -#line 4041 "dtool/src/cppparser/cppBison.yxx" +#line 4035 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.identifier) = new CPPIdentifier("static", (yylsp[(1) - (1)])); + (yyval.u.identifier) = new CPPIdentifier("public", (yylsp[0])); } +#line 9381 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 745: -/* Line 1792 of yacc.c */ -#line 4052 "dtool/src/cppparser/cppBison.yxx" +#line 4039 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.identifier) = (yyvsp[(1) - (1)].u.identifier); + (yyval.u.identifier) = new CPPIdentifier("private", (yylsp[0])); } +#line 9389 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 746: -/* Line 1792 of yacc.c */ -#line 4056 "dtool/src/cppparser/cppBison.yxx" +#line 4043 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.identifier) = (yyvsp[(1) - (1)].u.identifier); + (yyval.u.identifier) = new CPPIdentifier("static", (yylsp[0])); } +#line 9397 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 747: -/* Line 1792 of yacc.c */ -#line 4060 "dtool/src/cppparser/cppBison.yxx" +#line 4054 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.identifier) = (yyvsp[(1) - (1)].u.identifier); + (yyval.u.identifier) = (yyvsp[0].u.identifier); } +#line 9405 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 748: -/* Line 1792 of yacc.c */ -#line 4064 "dtool/src/cppparser/cppBison.yxx" +#line 4058 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.identifier) = new CPPIdentifier("override", (yylsp[(1) - (1)])); + (yyval.u.identifier) = (yyvsp[0].u.identifier); } +#line 9413 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 749: -/* Line 1792 of yacc.c */ -#line 4072 "dtool/src/cppparser/cppBison.yxx" +#line 4062 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = new CPPExpression((yyvsp[(1) - (1)].str)); + (yyval.u.identifier) = (yyvsp[0].u.identifier); } +#line 9421 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 750: -/* Line 1792 of yacc.c */ -#line 4076 "dtool/src/cppparser/cppBison.yxx" +#line 4066 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - (yyval.u.expr) = (yyvsp[(1) - (1)].u.expr); + (yyval.u.identifier) = new CPPIdentifier("override", (yylsp[0])); } +#line 9429 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 751: -/* Line 1792 of yacc.c */ -#line 4080 "dtool/src/cppparser/cppBison.yxx" +#line 4074 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { - // The right string takes on the literal type of the left. - (yyval.u.expr) = (yyvsp[(1) - (2)].u.expr); - (yyval.u.expr)->_str += (yyvsp[(2) - (2)].str); + (yyval.u.expr) = new CPPExpression((yyvsp[0].str)); } +#line 9437 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; case 752: -/* Line 1792 of yacc.c */ -#line 4086 "dtool/src/cppparser/cppBison.yxx" +#line 4078 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ + { + (yyval.u.expr) = (yyvsp[0].u.expr); +} +#line 9445 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 753: +#line 4082 "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 9455 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ + break; + + case 754: +#line 4088 "dtool/src/cppparser/cppBison.yxx" /* yacc.c:1646 */ { // We have to check that the two literal types match up. - (yyval.u.expr) = (yyvsp[(1) - (2)].u.expr); - if ((yyvsp[(2) - (2)].u.expr)->_type != CPPExpression::T_string && (yyvsp[(2) - (2)].u.expr)->_type != (yyvsp[(1) - (2)].u.expr)->_type) { + (yyval.u.expr) = (yyvsp[-1].u.expr); + if ((yyvsp[0].u.expr)->_type != CPPExpression::T_string && (yyvsp[0].u.expr)->_type != (yyvsp[-1].u.expr)->_type) { yywarning("cannot concatenate two string literals of different types", (yyloc)); } - (yyval.u.expr)->_str += (yyvsp[(2) - (2)].u.expr)->_str; + (yyval.u.expr)->_str += (yyvsp[0].u.expr)->_str; } +#line 9468 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ break; -/* Line 1792 of yacc.c */ -#line 9985 "built_x64/tmp/cppBison.yxx.c" +#line 9472 "built/tmp/cppBison.yxx.c" /* yacc.c:1646 */ default: break; } /* User semantic actions sometimes alter yychar, and that requires @@ -10004,7 +9491,7 @@ yyreduce: *++yyvsp = yyval; *++yylsp = yyloc; - /* Now `shift' the result of the reduction. Determine what state + /* Now 'shift' the result of the reduction. Determine what state that goes to, based on the state we popped back to and the rule number reduced by. */ @@ -10019,9 +9506,9 @@ yyreduce: goto yynewstate; -/*------------------------------------. -| yyerrlab -- here on detecting error | -`------------------------------------*/ +/*--------------------------------------. +| yyerrlab -- here on detecting error. | +`--------------------------------------*/ yyerrlab: /* Make sure we have latest lookahead translation. See comments at user semantic actions for why this is necessary. */ @@ -10032,7 +9519,7 @@ yyerrlab: { ++yynerrs; #if ! YYERROR_VERBOSE - yyerror (YY_("syntax error")); + yyerror (&yylloc, YY_("syntax error")); #else # define YYSYNTAX_ERROR yysyntax_error (&yymsg_alloc, &yymsg, \ yyssp, yytoken) @@ -10059,7 +9546,7 @@ yyerrlab: yymsgp = yymsg; } } - yyerror (yymsgp); + yyerror (&yylloc, yymsgp); if (yysyntax_error_status == 2) goto yyexhaustedlab; } @@ -10072,20 +9559,20 @@ yyerrlab: if (yyerrstatus == 3) { /* If just tried and failed to reuse lookahead token after an - error, discard it. */ + error, discard it. */ if (yychar <= YYEOF) - { - /* Return failure if at end of input. */ - if (yychar == YYEOF) - YYABORT; - } + { + /* Return failure if at end of input. */ + if (yychar == YYEOF) + YYABORT; + } else - { - yydestruct ("Error: discarding", - yytoken, &yylval, &yylloc); - yychar = YYEMPTY; - } + { + yydestruct ("Error: discarding", + yytoken, &yylval, &yylloc); + yychar = YYEMPTY; + } } /* Else will try to reuse lookahead token after shifting the error @@ -10105,7 +9592,7 @@ yyerrorlab: goto yyerrorlab; yyerror_range[1] = yylsp[1-yylen]; - /* Do not reclaim the symbols of the rule which action triggered + /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ YYPOPSTACK (yylen); yylen = 0; @@ -10118,29 +9605,29 @@ yyerrorlab: | yyerrlab1 -- common code for both syntax error and YYERROR. | `-------------------------------------------------------------*/ yyerrlab1: - yyerrstatus = 3; /* Each real token shifted decrements this. */ + yyerrstatus = 3; /* Each real token shifted decrements this. */ for (;;) { yyn = yypact[yystate]; if (!yypact_value_is_default (yyn)) - { - yyn += YYTERROR; - if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) - { - yyn = yytable[yyn]; - if (0 < yyn) - break; - } - } + { + yyn += YYTERROR; + if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) + { + yyn = yytable[yyn]; + if (0 < yyn) + break; + } + } /* Pop the current state because it cannot handle the error token. */ if (yyssp == yyss) - YYABORT; + YYABORT; yyerror_range[1] = *yylsp; yydestruct ("Error: popping", - yystos[yystate], yyvsp, yylsp); + yystos[yystate], yyvsp, yylsp); YYPOPSTACK (1); yystate = *yyssp; YY_STACK_PRINT (yyss, yyssp); @@ -10182,7 +9669,7 @@ yyabortlab: | yyexhaustedlab -- memory exhaustion comes here. | `-------------------------------------------------*/ yyexhaustedlab: - yyerror (YY_("memory exhausted")); + yyerror (&yylloc, YY_("memory exhausted")); yyresult = 2; /* Fall through. */ #endif @@ -10196,14 +9683,14 @@ yyreturn: yydestruct ("Cleanup: discarding lookahead", yytoken, &yylval, &yylloc); } - /* Do not reclaim the symbols of the rule which action triggered + /* Do not reclaim the symbols of the rule whose action triggered this YYABORT or YYACCEPT. */ YYPOPSTACK (yylen); YY_STACK_PRINT (yyss, yyssp); while (yyssp != yyss) { yydestruct ("Cleanup: popping", - yystos[*yyssp], yyvsp, yylsp); + yystos[*yyssp], yyvsp, yylsp); YYPOPSTACK (1); } #ifndef yyoverflow @@ -10214,8 +9701,5 @@ yyreturn: if (yymsg != yymsgbuf) YYSTACK_FREE (yymsg); #endif - /* Make sure YYID is used. */ - return YYID (yyresult); + return yyresult; } - - diff --git a/dtool/src/cppparser/cppBison.h.prebuilt b/dtool/src/cppparser/cppBison.h.prebuilt index 57b8c1be8a..cc8062241a 100644 --- a/dtool/src/cppparser/cppBison.h.prebuilt +++ b/dtool/src/cppparser/cppBison.h.prebuilt @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 2.7. */ +/* A Bison parser, made by GNU Bison 3.0.4. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc. + Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,9 +30,9 @@ This special exception was added by the Free Software Foundation in version 2.2 of Bison. */ -#ifndef YY_CPPYY_BUILT_X64_TMP_CPPBISON_YXX_H_INCLUDED -# define YY_CPPYY_BUILT_X64_TMP_CPPBISON_YXX_H_INCLUDED -/* Enabling traces. */ +#ifndef YY_CPPYY_BUILT_TMP_CPPBISON_YXX_H_INCLUDED +# define YY_CPPYY_BUILT_TMP_CPPBISON_YXX_H_INCLUDED +/* Debug traces. */ #ifndef YYDEBUG # define YYDEBUG 0 #endif @@ -40,156 +40,155 @@ extern int cppyydebug; #endif -/* Tokens. */ +/* Token type. */ #ifndef YYTOKENTYPE # define YYTOKENTYPE - /* Put the tokens into the symbol table, so that GDB and other debuggers - know about them. */ - enum yytokentype { - REAL = 258, - INTEGER = 259, - CHAR_TOK = 260, - SIMPLE_STRING = 261, - SIMPLE_IDENTIFIER = 262, - STRING_LITERAL = 263, - CUSTOM_LITERAL = 264, - IDENTIFIER = 265, - TYPENAME_IDENTIFIER = 266, - 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, - ATTR_LEFT = 302, - ATTR_RIGHT = 303, - KW_ALIGNAS = 304, - KW_ALIGNOF = 305, - KW_AUTO = 306, - KW_BEGIN_PUBLISH = 307, - KW_BLOCKING = 308, - KW_BOOL = 309, - KW_CATCH = 310, - KW_CHAR = 311, - KW_CHAR16_T = 312, - KW_CHAR32_T = 313, - KW_CLASS = 314, - KW_CONST = 315, - KW_CONSTEXPR = 316, - KW_CONST_CAST = 317, - KW_DECLTYPE = 318, - KW_DEFAULT = 319, - KW_DELETE = 320, - KW_DOUBLE = 321, - KW_DYNAMIC_CAST = 322, - KW_ELSE = 323, - KW_END_PUBLISH = 324, - KW_ENUM = 325, - KW_EXTENSION = 326, - KW_EXTERN = 327, - KW_EXPLICIT = 328, - KW_PUBLISHED = 329, - KW_FALSE = 330, - KW_FINAL = 331, - KW_FLOAT = 332, - KW_FRIEND = 333, - KW_FOR = 334, - KW_GOTO = 335, - KW_HAS_VIRTUAL_DESTRUCTOR = 336, - KW_IF = 337, - KW_INLINE = 338, - KW_INT = 339, - KW_IS_ABSTRACT = 340, - KW_IS_BASE_OF = 341, - KW_IS_CLASS = 342, - KW_IS_CONSTRUCTIBLE = 343, - KW_IS_CONVERTIBLE_TO = 344, - KW_IS_DESTRUCTIBLE = 345, - KW_IS_EMPTY = 346, - KW_IS_ENUM = 347, - KW_IS_FINAL = 348, - KW_IS_FUNDAMENTAL = 349, - KW_IS_POD = 350, - KW_IS_POLYMORPHIC = 351, - KW_IS_STANDARD_LAYOUT = 352, - KW_IS_TRIVIAL = 353, - KW_IS_UNION = 354, - KW_LONG = 355, - KW_MAKE_MAP_PROPERTY = 356, - KW_MAKE_PROPERTY = 357, - KW_MAKE_PROPERTY2 = 358, - KW_MAKE_SEQ = 359, - KW_MAKE_SEQ_PROPERTY = 360, - KW_MUTABLE = 361, - KW_NAMESPACE = 362, - KW_NEW = 363, - KW_NOEXCEPT = 364, - KW_NULLPTR = 365, - KW_OPERATOR = 366, - KW_OVERRIDE = 367, - KW_PRIVATE = 368, - KW_PROTECTED = 369, - KW_PUBLIC = 370, - KW_REGISTER = 371, - KW_REINTERPRET_CAST = 372, - KW_RETURN = 373, - KW_SHORT = 374, - KW_SIGNED = 375, - KW_SIZEOF = 376, - KW_STATIC = 377, - KW_STATIC_ASSERT = 378, - KW_STATIC_CAST = 379, - KW_STRUCT = 380, - KW_TEMPLATE = 381, - KW_THREAD_LOCAL = 382, - KW_THROW = 383, - KW_TRUE = 384, - KW_TRY = 385, - KW_TYPEDEF = 386, - KW_TYPEID = 387, - KW_TYPENAME = 388, - KW_UNDERLYING_TYPE = 389, - KW_UNION = 390, - KW_UNSIGNED = 391, - KW_USING = 392, - KW_VIRTUAL = 393, - KW_VOID = 394, - KW_VOLATILE = 395, - KW_WCHAR_T = 396, - KW_WHILE = 397, - START_CPP = 398, - START_CONST_EXPR = 399, - START_TYPE = 400 - }; + enum yytokentype + { + REAL = 258, + INTEGER = 259, + CHAR_TOK = 260, + SIMPLE_STRING = 261, + SIMPLE_IDENTIFIER = 262, + STRING_LITERAL = 263, + CUSTOM_LITERAL = 264, + IDENTIFIER = 265, + TYPENAME_IDENTIFIER = 266, + 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, + ATTR_LEFT = 302, + ATTR_RIGHT = 303, + KW_ALIGNAS = 304, + KW_ALIGNOF = 305, + KW_AUTO = 306, + KW_BEGIN_PUBLISH = 307, + KW_BLOCKING = 308, + KW_BOOL = 309, + KW_CATCH = 310, + KW_CHAR = 311, + KW_CHAR16_T = 312, + KW_CHAR32_T = 313, + KW_CLASS = 314, + KW_CONST = 315, + KW_CONSTEXPR = 316, + KW_CONST_CAST = 317, + KW_DECLTYPE = 318, + KW_DEFAULT = 319, + KW_DELETE = 320, + KW_DOUBLE = 321, + KW_DYNAMIC_CAST = 322, + KW_ELSE = 323, + KW_END_PUBLISH = 324, + KW_ENUM = 325, + KW_EXTENSION = 326, + KW_EXTERN = 327, + KW_EXPLICIT = 328, + KW_PUBLISHED = 329, + KW_FALSE = 330, + KW_FINAL = 331, + KW_FLOAT = 332, + KW_FRIEND = 333, + KW_FOR = 334, + KW_GOTO = 335, + KW_HAS_VIRTUAL_DESTRUCTOR = 336, + KW_IF = 337, + KW_INLINE = 338, + KW_INT = 339, + KW_IS_ABSTRACT = 340, + KW_IS_BASE_OF = 341, + KW_IS_CLASS = 342, + KW_IS_CONSTRUCTIBLE = 343, + KW_IS_CONVERTIBLE_TO = 344, + KW_IS_DESTRUCTIBLE = 345, + KW_IS_EMPTY = 346, + KW_IS_ENUM = 347, + KW_IS_FINAL = 348, + KW_IS_FUNDAMENTAL = 349, + KW_IS_POD = 350, + KW_IS_POLYMORPHIC = 351, + KW_IS_STANDARD_LAYOUT = 352, + KW_IS_TRIVIAL = 353, + KW_IS_UNION = 354, + KW_LONG = 355, + KW_MAKE_MAP_PROPERTY = 356, + KW_MAKE_PROPERTY = 357, + KW_MAKE_PROPERTY2 = 358, + KW_MAKE_SEQ = 359, + KW_MAKE_SEQ_PROPERTY = 360, + KW_MUTABLE = 361, + KW_NAMESPACE = 362, + KW_NEW = 363, + KW_NOEXCEPT = 364, + KW_NULLPTR = 365, + KW_OPERATOR = 366, + KW_OVERRIDE = 367, + KW_PRIVATE = 368, + KW_PROTECTED = 369, + KW_PUBLIC = 370, + KW_REGISTER = 371, + KW_REINTERPRET_CAST = 372, + KW_RETURN = 373, + KW_SHORT = 374, + KW_SIGNED = 375, + KW_SIZEOF = 376, + KW_STATIC = 377, + KW_STATIC_ASSERT = 378, + KW_STATIC_CAST = 379, + KW_STRUCT = 380, + KW_TEMPLATE = 381, + KW_THREAD_LOCAL = 382, + KW_THROW = 383, + KW_TRUE = 384, + KW_TRY = 385, + KW_TYPEDEF = 386, + KW_TYPEID = 387, + KW_TYPENAME = 388, + KW_UNDERLYING_TYPE = 389, + KW_UNION = 390, + KW_UNSIGNED = 391, + KW_USING = 392, + KW_VIRTUAL = 393, + KW_VOID = 394, + KW_VOLATILE = 395, + KW_WCHAR_T = 396, + KW_WHILE = 397, + START_CPP = 398, + START_CONST_EXPR = 399, + START_TYPE = 400 + }; #endif /* Tokens. */ #define REAL 258 @@ -336,40 +335,24 @@ extern int cppyydebug; #define START_CONST_EXPR 399 #define START_TYPE 400 +/* Value type. */ - -#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED - -# define yystype YYSTYPE /* obsolescent; will be withdrawn */ -# define YYSTYPE_IS_DECLARED 1 -#endif - +/* Location type. */ #if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED -typedef struct YYLTYPE +typedef struct YYLTYPE YYLTYPE; +struct YYLTYPE { int first_line; int first_column; int last_line; int last_column; -} YYLTYPE; -# define yyltype YYLTYPE /* obsolescent; will be withdrawn */ +}; # define YYLTYPE_IS_DECLARED 1 # define YYLTYPE_IS_TRIVIAL 1 #endif -#ifdef YYPARSE_PARAM -#if defined __STDC__ || defined __cplusplus -int cppyyparse (void *YYPARSE_PARAM); -#else -int cppyyparse (); -#endif -#else /* ! YYPARSE_PARAM */ -#if defined __STDC__ || defined __cplusplus -int cppyyparse (void); -#else -int cppyyparse (); -#endif -#endif /* ! YYPARSE_PARAM */ -#endif /* !YY_CPPYY_BUILT_X64_TMP_CPPBISON_YXX_H_INCLUDED */ +int cppyyparse (void); + +#endif /* !YY_CPPYY_BUILT_TMP_CPPBISON_YXX_H_INCLUDED */ diff --git a/dtool/src/cppparser/cppBison.yxx b/dtool/src/cppparser/cppBison.yxx index 8c0e9bf982..752bbbfecd 100644 --- a/dtool/src/cppparser/cppBison.yxx +++ b/dtool/src/cppparser/cppBison.yxx @@ -1451,6 +1451,7 @@ function_operator: more_template_declaration: type_like_declaration | template_declaration + | friend_declaration ; template_declaration: @@ -1464,6 +1465,7 @@ template_declaration: pop_scope(); } | KW_TEMPLATE type_like_declaration + | KW_TEMPLATE friend_declaration ; template_formal_parameters: From fdffcc280b33304001a430cabefadaabddbf94c4 Mon Sep 17 00:00:00 2001 From: rdb Date: Fri, 10 Feb 2017 00:07:45 +0100 Subject: [PATCH 15/29] Fix compile error for ancient clangs --- panda/src/display/displayInformation.cxx | 4 ++-- panda/src/display/graphicsPipe.cxx | 11 ++++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/panda/src/display/displayInformation.cxx b/panda/src/display/displayInformation.cxx index ac357344a5..9bda75e0de 100644 --- a/panda/src/display/displayInformation.cxx +++ b/panda/src/display/displayInformation.cxx @@ -17,7 +17,7 @@ // For __rdtsc #ifdef _MSC_VER #include -#elif defined(__GNUC__) && !defined(__APPLE__) +#elif defined(__GNUC__) && !defined(__clang__) #include #endif @@ -529,7 +529,7 @@ get_cpu_frequency() { */ uint64_t DisplayInformation:: get_cpu_time() { -#if defined(_MSC_VER) || (defined(__GNUC__) && !defined(__APPLE__)) +#if defined(_MSC_VER) || (defined(__GNUC__) && !defined(__clang__)) return __rdtsc(); #else unsigned int lo, hi = 0; diff --git a/panda/src/display/graphicsPipe.cxx b/panda/src/display/graphicsPipe.cxx index 7bf9df67a6..5c00b204a3 100644 --- a/panda/src/display/graphicsPipe.cxx +++ b/panda/src/display/graphicsPipe.cxx @@ -141,14 +141,15 @@ GraphicsPipe() : } if (max_extended >= 0x80000004) { - string brand; + char brand[49]; get_cpuid(0x80000002, info); - brand += string(info.str, strnlen(info.str, 16)); + memcpy(brand, info.str, 16); get_cpuid(0x80000003, info); - brand += string(info.str, strnlen(info.str, 16)); + memcpy(brand + 16, info.str, 16); get_cpuid(0x80000004, info); - brand += string(info.str, strnlen(info.str, 16)); - _display_information->_cpu_brand_string = move(brand); + memcpy(brand + 32, info.str, 16); + brand[48] = 0; + _display_information->_cpu_brand_string = brand; } #if defined(IS_OSX) From 2acde88695a12b11af71d26f061e4db83a4b0565 Mon Sep 17 00:00:00 2001 From: rdb Date: Fri, 10 Feb 2017 02:57:47 +0100 Subject: [PATCH 16/29] New alignment code to hopefully fix the alignment issues --- dtool/src/dtoolbase/deletedBufferChain.cxx | 8 +- dtool/src/dtoolbase/deletedChain.T | 145 +++++++++------------ dtool/src/dtoolbase/dtoolbase.h | 6 + dtool/src/dtoolbase/dtoolbase_cc.h | 6 +- dtool/src/dtoolbase/memoryHook.I | 103 +++++---------- dtool/src/dtoolbase/memoryHook.cxx | 46 ++++--- dtool/src/dtoolbase/memoryHook.h | 21 ++- dtool/src/dtoolbase/pallocator.T | 47 ++++--- panda/src/gobj/vertexDataBuffer.I | 28 ++-- 9 files changed, 198 insertions(+), 212 deletions(-) diff --git a/dtool/src/dtoolbase/deletedBufferChain.cxx b/dtool/src/dtoolbase/deletedBufferChain.cxx index 557b6ce9d8..0451ada7d3 100644 --- a/dtool/src/dtoolbase/deletedBufferChain.cxx +++ b/dtool/src/dtoolbase/deletedBufferChain.cxx @@ -39,7 +39,7 @@ allocate(size_t size, TypeHandle type_handle) { assert(size <= _buffer_size); // Determine how much space to allocate. - const size_t alloc_size = _buffer_size + flag_reserved_bytes + MemoryHook::get_memory_alignment() - 1; + const size_t alloc_size = _buffer_size + flag_reserved_bytes + MEMORY_HOOK_ALIGNMENT - 1; ObjectNode *obj; @@ -71,8 +71,8 @@ allocate(size_t size, TypeHandle type_handle) { // Allocate memory, and make sure the object starts at the proper alignment. void *mem = NeverFreeMemory::alloc(alloc_size); - intptr_t pad = (-(intptr_t)flag_reserved_bytes - (intptr_t)mem) % MemoryHook::get_memory_alignment(); - obj = (ObjectNode *)((uintptr_t)mem + pad); + uintptr_t aligned = ((uintptr_t)mem + flag_reserved_bytes + MEMORY_HOOK_ALIGNMENT - 1) & ~(MEMORY_HOOK_ALIGNMENT - 1); + obj = (ObjectNode *)(aligned - flag_reserved_bytes); #ifdef USE_DELETEDCHAINFLAG obj->_flag = DCF_alive; @@ -81,7 +81,7 @@ allocate(size_t size, TypeHandle type_handle) { void *ptr = node_to_buffer(obj); #ifndef NDEBUG - assert(((uintptr_t)ptr % MemoryHook::get_memory_alignment()) == 0); + assert(((uintptr_t)ptr % MEMORY_HOOK_ALIGNMENT) == 0); #endif #ifdef DO_MEMORY_USAGE diff --git a/dtool/src/dtoolbase/deletedChain.T b/dtool/src/dtoolbase/deletedChain.T index 5f50c9a36e..96e800ba3b 100644 --- a/dtool/src/dtoolbase/deletedChain.T +++ b/dtool/src/dtoolbase/deletedChain.T @@ -1,25 +1,22 @@ -// Filename: deletedChain.T -// Created by: drose (01Apr06) -// -//////////////////////////////////////////////////////////////////// -// -// PANDA 3D SOFTWARE -// Copyright (c) Carnegie Mellon University. All rights reserved. -// -// All use of this software is subject to the terms of the revised BSD -// license. You should have received a copy of this license along -// with this source code in a file named "LICENSE." -// -//////////////////////////////////////////////////////////////////// +/** + * PANDA 3D SOFTWARE + * Copyright (c) Carnegie Mellon University. All rights reserved. + * + * All use of this software is subject to the terms of the revised BSD + * license. You should have received a copy of this license along + * with this source code in a file named "LICENSE." + * + * @file deletedChain.T + * @author drose + * @date 2006-04-01 + */ template DeletedChain StaticDeletedChain::_chain; -//////////////////////////////////////////////////////////////////// -// Function: DeletedChain::allocate -// Access: Public -// Description: Allocates the memory for a new object of Type. -//////////////////////////////////////////////////////////////////// +/** + * Allocates the memory for a new object of Type. + */ template INLINE Type *DeletedChain:: allocate(size_t size, TypeHandle type_handle) { @@ -31,14 +28,12 @@ allocate(size_t size, TypeHandle type_handle) { memory_hook->mark_pointer(ptr, _chain->get_buffer_size(), make_ref_ptr(ptr)); #endif // DO_MEMORY_USAGE - return (Type *)ptr; + return (Type *)ASSUME_ALIGNED(ptr, MEMORY_HOOK_ALIGNMENT); } -//////////////////////////////////////////////////////////////////// -// Function: DeletedChain::deallocate -// Access: Public -// Description: Frees the memory for an object of Type. -//////////////////////////////////////////////////////////////////// +/** + * Frees the memory for an object of Type. + */ template INLINE void DeletedChain:: deallocate(Type *ptr, TypeHandle type_handle) { @@ -57,16 +52,13 @@ deallocate(Type *ptr, TypeHandle type_handle) { _chain->deallocate(ptr, type_handle); } -//////////////////////////////////////////////////////////////////// -// Function: DeletedChain::validate -// Access: Public -// Description: Returns true if the pointer is valid, false if it has -// been deleted or if it was never a valid pointer. -// -// This is only meaningful in debug mode, where -// USE_DELETEDCHAINFLAG is defined. If not, this -// trivially returns true. -//////////////////////////////////////////////////////////////////// +/** + * Returns true if the pointer is valid, false if it has been deleted or if it + * was never a valid pointer. + * + * This is only meaningful in debug mode, where USE_DELETEDCHAINFLAG is + * defined. If not, this trivially returns true. + */ template INLINE bool DeletedChain:: validate(const Type *ptr) { @@ -80,48 +72,37 @@ validate(const Type *ptr) { #endif // USE_DELETEDCHAINFLAG } -//////////////////////////////////////////////////////////////////// -// Function: DeletedChain::make_ref_ptr -// Access: Public, Static -// Description: This method has two overloads: one that accepts a -// void *, and one that accepts a ReferenceCount *. We -// rely on the C++ compiler to select the most -// appropriate one for a given type to return the -// ReferenceCount pointer that corresponds to a -// particular type, or NULL if the type does not inherit -// from ReferenceCount. -//////////////////////////////////////////////////////////////////// +/** + * This method has two overloads: one that accepts a void *, and one that + * accepts a ReferenceCount *. We rely on the C++ compiler to select the most + * appropriate one for a given type to return the ReferenceCount pointer that + * corresponds to a particular type, or NULL if the type does not inherit from + * ReferenceCount. + */ template INLINE ReferenceCount *DeletedChain:: make_ref_ptr(void *) { return NULL; } -//////////////////////////////////////////////////////////////////// -// Function: DeletedChain::make_ref_ptr -// Access: Public, Static -// Description: This method has two overloads: one that accepts a -// void *, and one that accepts a ReferenceCount *. We -// rely on the C++ compiler to select the most -// appropriate one for a given type to return the -// ReferenceCount pointer that corresponds to a -// particular type, or NULL if the type does not inherit -// from ReferenceCount. -//////////////////////////////////////////////////////////////////// +/** + * This method has two overloads: one that accepts a void *, and one that + * accepts a ReferenceCount *. We rely on the C++ compiler to select the most + * appropriate one for a given type to return the ReferenceCount pointer that + * corresponds to a particular type, or NULL if the type does not inherit from + * ReferenceCount. + */ template INLINE ReferenceCount *DeletedChain:: make_ref_ptr(ReferenceCount *ptr) { return ptr; } -//////////////////////////////////////////////////////////////////// -// Function: DeletedChain::init_deleted_chain -// Access: Private -// Description: Assigns the _chain pointer if it is not already -// assigned. This can't be done by a constructor, since -// often the DeletedChain instance is used before its -// static construct has had a chance to be called. -//////////////////////////////////////////////////////////////////// +/** + * Assigns the _chain pointer if it is not already assigned. This can't be + * done by a constructor, since often the DeletedChain instance is used before + * its static construct has had a chance to be called. + */ template void DeletedChain:: init_deleted_chain() { @@ -131,38 +112,32 @@ init_deleted_chain() { } } -//////////////////////////////////////////////////////////////////// -// Function: StaticDeletedChain::allocate -// Access: Public, Static -// Description: Allocates the memory for a new object of Type. -//////////////////////////////////////////////////////////////////// +/** + * Allocates the memory for a new object of Type. + */ template INLINE Type *StaticDeletedChain:: allocate(size_t size, TypeHandle type_handle) { - return _chain.allocate(size, type_handle); + Type *ptr = _chain.allocate(size, type_handle); + return (Type *)ASSUME_ALIGNED(ptr, MEMORY_HOOK_ALIGNMENT); } -//////////////////////////////////////////////////////////////////// -// Function: StaticDeletedChain::deallocate -// Access: Public -// Description: Frees the memory for an object of Type. -//////////////////////////////////////////////////////////////////// +/** + * Frees the memory for an object of Type. + */ template INLINE void StaticDeletedChain:: deallocate(Type *ptr, TypeHandle type_handle) { _chain.deallocate(ptr, type_handle); } -//////////////////////////////////////////////////////////////////// -// Function: StaticDeletedChain::validate -// Access: Public -// Description: Returns true if the pointer is valid, false if it has -// been deleted or if it was never a valid pointer. -// -// This is only meaningful in debug mode, where -// USE_DELETEDCHAINFLAG is defined. If not, this -// trivially returns true. -//////////////////////////////////////////////////////////////////// +/** + * Returns true if the pointer is valid, false if it has been deleted or if it + * was never a valid pointer. + * + * This is only meaningful in debug mode, where USE_DELETEDCHAINFLAG is + * defined. If not, this trivially returns true. + */ template INLINE bool StaticDeletedChain:: validate(const Type *ptr) { diff --git a/dtool/src/dtoolbase/dtoolbase.h b/dtool/src/dtoolbase/dtoolbase.h index c6cbbd7f46..8dd2ec3cf6 100644 --- a/dtool/src/dtoolbase/dtoolbase.h +++ b/dtool/src/dtoolbase/dtoolbase.h @@ -89,6 +89,12 @@ #define NODEFAULT #endif +// Use this to hint the compiler that a memory address is aligned. +#if __has_builtin(__builtin_assume_aligned) || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 7) +#define ASSUME_ALIGNED(x, y) (__builtin_assume_aligned(x, y)) +#else +#define ASSUME_ALIGNED(x, y) (x) +#endif /* include win32 defns for everything up to WinServer2003, and assume diff --git a/dtool/src/dtoolbase/dtoolbase_cc.h b/dtool/src/dtoolbase/dtoolbase_cc.h index 3d374748b6..88d4244af6 100644 --- a/dtool/src/dtoolbase/dtoolbase_cc.h +++ b/dtool/src/dtoolbase/dtoolbase_cc.h @@ -290,10 +290,10 @@ EXPCL_DTOOL void init_memory_hook(); // Now redefine some handy macros to hook into the above MemoryHook object. #ifndef USE_MEMORY_NOWRAPPERS -#define PANDA_MALLOC_SINGLE(size) (memory_hook->heap_alloc_single(size)) +#define PANDA_MALLOC_SINGLE(size) (ASSUME_ALIGNED(memory_hook->heap_alloc_single(size), MEMORY_HOOK_ALIGNMENT)) #define PANDA_FREE_SINGLE(ptr) memory_hook->heap_free_single(ptr) -#define PANDA_MALLOC_ARRAY(size) (memory_hook->heap_alloc_array(size)) -#define PANDA_REALLOC_ARRAY(ptr, size) (memory_hook->heap_realloc_array(ptr, size)) +#define PANDA_MALLOC_ARRAY(size) (ASSUME_ALIGNED(memory_hook->heap_alloc_array(size), MEMORY_HOOK_ALIGNMENT)) +#define PANDA_REALLOC_ARRAY(ptr, size) (ASSUME_ALIGNED(memory_hook->heap_realloc_array(ptr, size), MEMORY_HOOK_ALIGNMENT)) #define PANDA_FREE_ARRAY(ptr) memory_hook->heap_free_array(ptr) #else #define PANDA_MALLOC_SINGLE(size) ::malloc(size) diff --git a/dtool/src/dtoolbase/memoryHook.I b/dtool/src/dtoolbase/memoryHook.I index 3d2be05097..c89fe1908b 100644 --- a/dtool/src/dtoolbase/memoryHook.I +++ b/dtool/src/dtoolbase/memoryHook.I @@ -38,57 +38,9 @@ dec_heap(size_t size) { * Returns the global memory alignment. This is the number of bytes at which * each allocated memory pointer will be aligned. */ -INLINE size_t MemoryHook:: +CONSTEXPR size_t MemoryHook:: get_memory_alignment() { -#ifdef LINMATH_ALIGN - // We require 16-byte alignment of certain structures, to support SSE2. We - // don't strictly have to align *everything*, but it's just easier to do so. -#ifdef __AVX__ - // Eigen requires 32-byte alignment when using AVX instructions. - const size_t alignment_size = 32; -#else - const size_t alignment_size = 16; -#endif -#else - // Otherwise, align to two words. This seems to be pretty standard to the - // point where some code may rely on this being the case. - const size_t alignment_size = sizeof(void *) * 2; -#endif - return alignment_size; -} - -/** - * Returns the number of additional bytes that are reserved at the beginning - * of every allocated block to store a size_t. - */ -INLINE size_t MemoryHook:: -get_header_reserved_bytes() { - // We need to figure out the minimum amount of additional space we need in - // order to place a single word at the start of each allocated block, to - // store the size of the block. - -#ifdef LINMATH_ALIGN - // If we're doing SSE2 alignment, we must reserve a full 16-byte block, - // since anything less than that will spoil the alignment. -#ifdef __AVX__ - // Eigen requires 32-byte alignment when using AVX instructions. - static const size_t header_reserved_bytes = 32; -#else - static const size_t header_reserved_bytes = 16; -#endif - -#elif defined(MEMORY_HOOK_DO_ALIGN) - // If we're just aligning to words, we reserve a block as big as two words, - // to allow us wiggle room to align the word precisely within that block. - static const size_t header_reserved_bytes = sizeof(size_t) + sizeof(size_t); - -#else - // Virtually all allocators align to two words, so we make sure we preserve - // that alignment for the benefit of anyone who relies upon that. - static const size_t header_reserved_bytes = sizeof(void *) * 2; -#endif - - return header_reserved_bytes; + return MEMORY_HOOK_ALIGNMENT; } /** @@ -109,6 +61,24 @@ round_up_to_page_size(size_t size) const { return ((size + _page_size - 1) / _page_size) * _page_size; } +/** + * Given a pointer that was returned by a MemoryHook allocation, returns the + * number of bytes that were allocated for it. Returns 0 if not compiling + * with DO_MEMORY_USAGE. + */ +INLINE size_t MemoryHook:: +get_ptr_size(void *ptr) { +#if defined(MEMORY_HOOK_DO_ALIGN) + uintptr_t *root = (uintptr_t *)ptr; + return (size_t)root[-2]; +#elif defined(DO_MEMORY_USAGE) + size_t *root = (size_t *)((char *)ptr - MEMORY_HOOK_ALIGNMENT); + return *root; +#else + return 0; +#endif // DO_MEMORY_USAGE +} + /** * Increments the amount of requested size as necessary to accommodate the * extra data we might piggyback on each allocated block. @@ -118,12 +88,13 @@ inflate_size(size_t size) { #if defined(MEMORY_HOOK_DO_ALIGN) // If we're aligning, we need to request the header size, plus extra bytes // to give us wiggle room to adjust the pointer. - return size + get_header_reserved_bytes() + get_memory_alignment() - 1; + return size + sizeof(uintptr_t) * 2 + MEMORY_HOOK_ALIGNMENT - 1; #elif defined(DO_MEMORY_USAGE) // If we're not aligning, but we're tracking memory allocations, we just // need the header size extra (this gives us a place to store the size of - // the allocated block). - return size + get_header_reserved_bytes(); + // the allocated block). However, we do need to make sure that any + // alignment guarantee is kept. + return size + MEMORY_HOOK_ALIGNMENT; #else // If we're not doing any of that, we can just allocate the precise // requested amount. @@ -138,17 +109,17 @@ inflate_size(size_t size) { INLINE void *MemoryHook:: alloc_to_ptr(void *alloc, size_t size) { #if defined(MEMORY_HOOK_DO_ALIGN) - size_t alignment = get_memory_alignment(); - // Move the allocated pointer up to the next even alignment. - size_t *root = (size_t *)((((size_t)alloc + alignment - 1) / alignment) * alignment); - assert(alloc <= root && (size_t)((char *)root - (char *)alloc) < alignment); - root[0] = size; - root[1] = (size_t)alloc; // Save the pointer we originally allocated. - return (void *)((char *)root + get_header_reserved_bytes()); + // Add room for two uintptr_t values. + uintptr_t *root = (uintptr_t *)((char *)alloc + sizeof(uintptr_t) * 2); + // Align this to the requested boundary. + root = (uintptr_t *)(((uintptr_t)root + MEMORY_HOOK_ALIGNMENT - 1) & ~(MEMORY_HOOK_ALIGNMENT - 1)); + root[-2] = size; + root[-1] = (uintptr_t)alloc; // Save the pointer we originally allocated. + return (void *)root; #elif defined(DO_MEMORY_USAGE) size_t *root = (size_t *)alloc; root[0] = size; - return (void *)((char *)root + get_header_reserved_bytes()); + return (void *)((char *)root + MEMORY_HOOK_ALIGNMENT); #else return alloc; #endif // DO_MEMORY_USAGE @@ -161,13 +132,11 @@ alloc_to_ptr(void *alloc, size_t size) { INLINE void *MemoryHook:: ptr_to_alloc(void *ptr, size_t &size) { #if defined(MEMORY_HOOK_DO_ALIGN) - size_t *root = (size_t *)((char *)ptr - get_header_reserved_bytes()); - size = root[0]; - void *alloc = (void *)root[1]; // Get the pointer we originally allocated. - assert(alloc <= root && (size_t)((char *)root - (char *)alloc) < get_memory_alignment()); - return alloc; + uintptr_t *root = (uintptr_t *)ptr; + size = root[-2]; + return (void *)root[-1]; // Get the pointer we originally allocated. #elif defined(DO_MEMORY_USAGE) - size_t *root = (size_t *)((char *)ptr - get_header_reserved_bytes()); + size_t *root = (size_t *)((char *)ptr - MEMORY_HOOK_ALIGNMENT); size = root[0]; return (void *)root; #else diff --git a/dtool/src/dtoolbase/memoryHook.cxx b/dtool/src/dtoolbase/memoryHook.cxx index e6131a5266..506ff51005 100644 --- a/dtool/src/dtoolbase/memoryHook.cxx +++ b/dtool/src/dtoolbase/memoryHook.cxx @@ -36,6 +36,15 @@ #endif // WIN32 +// Ensure we made the right decisions about the alignment size. +static_assert(MEMORY_HOOK_ALIGNMENT >= sizeof(size_t), + "MEMORY_HOOK_ALIGNMENT should at least be sizeof(size_t)"); +static_assert(MEMORY_HOOK_ALIGNMENT >= sizeof(void *), + "MEMORY_HOOK_ALIGNMENT should at least be sizeof(void *)"); +static_assert(MEMORY_HOOK_ALIGNMENT * 8 >= NATIVE_WORDSIZE, + "MEMORY_HOOK_ALIGNMENT * 8 should at least be NATIVE_WORDSIZE"); +static_assert((MEMORY_HOOK_ALIGNMENT & (MEMORY_HOOK_ALIGNMENT - 1)) == 0, + "MEMORY_HOOK_ALIGNMENT should be a power of two"); #if defined(USE_MEMORY_DLMALLOC) @@ -49,17 +58,8 @@ #ifdef _DEBUG #define DEBUG 1 #endif -#ifdef LINMATH_ALIGN -// drose: We require 16-byte alignment of certain structures, to -// support SSE2. We don't strictly have to align *everything*, but -// it's just easier to do so. -#ifdef __AVX__ -// Eigen requires 32-byte alignment when using AVX instructions. -#define MALLOC_ALIGNMENT ((size_t)32U) -#else -#define MALLOC_ALIGNMENT ((size_t)16U) -#endif -#endif +// dlmalloc can do the alignment we ask for. +#define MALLOC_ALIGNMENT MEMORY_HOOK_ALIGNMENT #include "dlmalloc_src.cxx" @@ -204,6 +204,7 @@ heap_alloc_single(size_t size) { #endif // DO_MEMORY_USAGE void *ptr = alloc_to_ptr(alloc, size); + assert(((uintptr_t)ptr % MEMORY_HOOK_ALIGNMENT) == 0); assert(ptr >= alloc && (char *)ptr + size <= (char *)alloc + inflated_size); return ptr; } @@ -273,6 +274,7 @@ heap_alloc_array(size_t size) { #endif // DO_MEMORY_USAGE void *ptr = alloc_to_ptr(alloc, size); + assert(((uintptr_t)ptr % MEMORY_HOOK_ALIGNMENT) == 0); assert(ptr >= alloc && (char *)ptr + size <= (char *)alloc + inflated_size); return ptr; } @@ -316,17 +318,27 @@ heap_realloc_array(void *ptr, size_t size) { #endif } - void *ptr1 = alloc_to_ptr(alloc1, size); - assert(ptr1 >= alloc1 && (char *)ptr1 + size <= (char *)alloc1 + inflated_size); -#if defined(MEMORY_HOOK_DO_ALIGN) - // We might have to shift the memory to account for the new offset due to - // the alignment. + // Align this to the requested boundary. +#ifdef MEMORY_HOOK_DO_ALIGN + // This copies the code from alloc_to_ptr, since we can't write the size and + // pointer until after we have done the memmove. + uintptr_t *root = (uintptr_t *)((char *)alloc1 + sizeof(uintptr_t) * 2); + root = (uintptr_t *)(((uintptr_t)root + MEMORY_HOOK_ALIGNMENT - 1) & ~(MEMORY_HOOK_ALIGNMENT - 1)); + void *ptr1 = (void *)root; + size_t orig_delta = (char *)ptr - (char *)alloc; size_t new_delta = (char *)ptr1 - (char *)alloc1; if (orig_delta != new_delta) { memmove((char *)alloc1 + new_delta, (char *)alloc1 + orig_delta, min(size, orig_size)); } -#endif // MEMORY_HOOK_DO_ALIGN + + root[-2] = size; + root[-1] = (uintptr_t)alloc1; // Save the pointer we originally allocated. +#else + void *ptr1 = alloc_to_ptr(alloc1, size); +#endif + assert(ptr1 >= alloc1 && (char *)ptr1 + size <= (char *)alloc1 + inflated_size); + assert(((uintptr_t)ptr1 % MEMORY_HOOK_ALIGNMENT) == 0); return ptr1; } diff --git a/dtool/src/dtoolbase/memoryHook.h b/dtool/src/dtoolbase/memoryHook.h index d53e03ba2e..b8eac26f54 100644 --- a/dtool/src/dtoolbase/memoryHook.h +++ b/dtool/src/dtoolbase/memoryHook.h @@ -20,6 +20,22 @@ #include "mutexImpl.h" #include +#ifdef LINMATH_ALIGN +// We require 16-byte alignment of certain structures, to support SSE2. We +// don't strictly have to align *everything*, but it's just easier to do so. +#ifdef __AVX__ +#define MEMORY_HOOK_ALIGNMENT 32 +#else +#define MEMORY_HOOK_ALIGNMENT 16 +#endif +// Otherwise, align to two words. This seems to be pretty standard to the +// point where some code may rely on this being the case. +#elif defined(IS_OSX) || NATIVE_WORDSIZE >= 64 +#define MEMORY_HOOK_ALIGNMENT 16 +#else +#define MEMORY_HOOK_ALIGNMENT 8 +#endif + class DeletedBufferChain; /** @@ -52,8 +68,7 @@ public: bool heap_trim(size_t pad); - INLINE static size_t get_memory_alignment(); - INLINE static size_t get_header_reserved_bytes(); + CONSTEXPR static size_t get_memory_alignment(); virtual void *mmap_alloc(size_t size, bool allow_exec); virtual void mmap_free(void *ptr, size_t size); @@ -66,6 +81,8 @@ public: virtual void alloc_fail(size_t attempted_size); + INLINE static size_t get_ptr_size(void *ptr); + private: INLINE static size_t inflate_size(size_t size); INLINE static void *alloc_to_ptr(void *alloc, size_t size); diff --git a/dtool/src/dtoolbase/pallocator.T b/dtool/src/dtoolbase/pallocator.T index ebfb8dbafd..38bc87135c 100644 --- a/dtool/src/dtoolbase/pallocator.T +++ b/dtool/src/dtoolbase/pallocator.T @@ -1,16 +1,15 @@ -// Filename: pallocator.T -// Created by: drose (05Jun01) -// -//////////////////////////////////////////////////////////////////// -// -// PANDA 3D SOFTWARE -// Copyright (c) Carnegie Mellon University. All rights reserved. -// -// All use of this software is subject to the terms of the revised BSD -// license. You should have received a copy of this license along -// with this source code in a file named "LICENSE." -// -//////////////////////////////////////////////////////////////////// +/** + * PANDA 3D SOFTWARE + * Copyright (c) Carnegie Mellon University. All rights reserved. + * + * All use of this software is subject to the terms of the revised BSD + * license. You should have received a copy of this license along + * with this source code in a file named "LICENSE." + * + * @file pallocator.T + * @author drose + * @date 2001-06-05 + */ template INLINE pallocator_single:: @@ -25,7 +24,8 @@ allocate(TYPENAME pallocator_single::size_type n, TYPENAME allocator TAU_PROFILE("pallocator_single:allocate()", " ", TAU_USER); // This doesn't support allocating arrays. assert(n == 1); - return StaticDeletedChain::allocate(sizeof(Type), _type_handle); + return (Type *)ASSUME_ALIGNED(StaticDeletedChain::allocate(sizeof(Type), _type_handle), + MEMORY_HOOK_ALIGNMENT); } template @@ -47,14 +47,13 @@ INLINE TYPENAME pallocator_array::pointer pallocator_array:: allocate(TYPENAME pallocator_array::size_type n, TYPENAME allocator::const_pointer) { TAU_PROFILE("pallocator_array:allocate()", " ", TAU_USER); #ifdef DO_MEMORY_USAGE - const size_t header_reserved_bytes = MemoryHook::get_header_reserved_bytes(); size_t alloc_size = n * sizeof(Type); - // We also need to store the total number of bytes we allocated. - alloc_size += header_reserved_bytes; - _type_handle.inc_memory_usage(TypeHandle::MC_array, alloc_size); void *ptr = (TYPENAME pallocator_array::pointer)PANDA_MALLOC_ARRAY(alloc_size); - *((size_t *)ptr) = alloc_size; - return (TYPENAME pallocator_array::pointer)(((char *)ptr) + header_reserved_bytes); +#ifdef _DEBUG + assert(alloc_size == MemoryHook::get_ptr_size(ptr)); +#endif + _type_handle.inc_memory_usage(TypeHandle::MC_array, alloc_size); + return (TYPENAME pallocator_array::pointer)ASSUME_ALIGNED(ptr, MEMORY_HOOK_ALIGNMENT); #else return (TYPENAME pallocator_array::pointer)PANDA_MALLOC_ARRAY(n * sizeof(Type)); #endif // DO_MEMORY_USAGE @@ -65,10 +64,10 @@ INLINE void pallocator_array:: deallocate(TYPENAME pallocator_array::pointer p, TYPENAME pallocator_array::size_type) { TAU_PROFILE("pallocator_array:deallocate()", " ", TAU_USER); #ifdef DO_MEMORY_USAGE - // Now we need to recover the total number of bytes. - const size_t header_reserved_bytes = MemoryHook::get_header_reserved_bytes(); - void *ptr = (void *)((char *)p - header_reserved_bytes); - size_t alloc_size = *((size_t *)ptr); + // Now we need to recover the total number of bytes. Fortunately, in the + // case of DO_MEMORY_USAGE, MemoryHook already keeps track of this. + void *ptr = (void *)p; + size_t alloc_size = MemoryHook::get_ptr_size(ptr); _type_handle.dec_memory_usage(TypeHandle::MC_array, alloc_size); PANDA_FREE_ARRAY(ptr); #else diff --git a/panda/src/gobj/vertexDataBuffer.I b/panda/src/gobj/vertexDataBuffer.I index 3652bae864..3bc1f85b80 100644 --- a/panda/src/gobj/vertexDataBuffer.I +++ b/panda/src/gobj/vertexDataBuffer.I @@ -67,17 +67,22 @@ INLINE const unsigned char *VertexDataBuffer:: get_read_pointer(bool force) const { LightMutexHolder holder(_lock); + const unsigned char *ptr; if (_resident_data != (unsigned char *)NULL || _size == 0) { - return _resident_data; + ptr = _resident_data; + } else { + nassertr(_block != (VertexDataBlock *)NULL, NULL); + nassertr(_reserved_size >= _size, NULL); + + // We don't necessarily need to page the buffer all the way into independent + // status; it's sufficient just to return the block's pointer, which will + // force its page to resident status. + ptr = _block->get_pointer(force); } - - nassertr(_block != (VertexDataBlock *)NULL, NULL); - nassertr(_reserved_size >= _size, NULL); - - // We don't necessarily need to page the buffer all the way into independent - // status; it's sufficient just to return the block's pointer, which will - // force its page to resident status. - return _block->get_pointer(force); +#ifdef _DEBUG + assert(((uintptr_t)ptr % MEMORY_HOOK_ALIGNMENT) == 0); +#endif + return (const unsigned char *)ASSUME_ALIGNED(ptr, MEMORY_HOOK_ALIGNMENT); } /** @@ -91,7 +96,10 @@ get_write_pointer() { do_page_in(); } nassertr(_reserved_size >= _size, NULL); - return _resident_data; +#ifdef _DEBUG + assert(((uintptr_t)_resident_data % MEMORY_HOOK_ALIGNMENT) == 0); +#endif + return (unsigned char *)ASSUME_ALIGNED(_resident_data, MEMORY_HOOK_ALIGNMENT); } /** From ec3c2c56813c04f369206c19d18f07bb884dba3d Mon Sep 17 00:00:00 2001 From: Sam Edwards Date: Wed, 15 Feb 2017 03:23:59 -0700 Subject: [PATCH 17/29] general: Fix missing include --- dtool/src/cppparser/cppClosureType.cxx | 1 + 1 file changed, 1 insertion(+) diff --git a/dtool/src/cppparser/cppClosureType.cxx b/dtool/src/cppparser/cppClosureType.cxx index cf8ec31143..30197057a6 100755 --- a/dtool/src/cppparser/cppClosureType.cxx +++ b/dtool/src/cppparser/cppClosureType.cxx @@ -12,6 +12,7 @@ */ #include "cppClosureType.h" +#include "cppParameterList.h" #include "cppExpression.h" /** From 29edf55069511e9158bc8c6a37fa7057b193d271 Mon Sep 17 00:00:00 2001 From: rdb Date: Sun, 12 Feb 2017 17:21:53 +0100 Subject: [PATCH 18/29] GlobPattern: support trailing slash and globstar (eg. **/*.egg) --- dtool/src/dtoolutil/globPattern.cxx | 63 ++++++++++++++++++++++++----- 1 file changed, 52 insertions(+), 11 deletions(-) diff --git a/dtool/src/dtoolutil/globPattern.cxx b/dtool/src/dtoolutil/globPattern.cxx index 2a065e9a86..57a6afdb57 100644 --- a/dtool/src/dtoolutil/globPattern.cxx +++ b/dtool/src/dtoolutil/globPattern.cxx @@ -99,7 +99,7 @@ match_files(vector_string &results, const Filename &cwd) const { pattern = source; } else { pattern = source.substr(0, slash); - suffix = source.substr(slash + 1); + suffix = source.substr(slash); } GlobPattern glob(pattern); @@ -118,11 +118,21 @@ r_match_files(const Filename &prefix, const string &suffix, size_t slash = suffix.find('/'); if (slash == string::npos) { next_pattern = suffix; + } else if (slash + 1 == suffix.size()) { + // If the slash is at the end, we need to keep it, since it indicates that + // we only want to match directories. + next_pattern = suffix.substr(0, slash); + next_suffix = "/"; } else { next_pattern = suffix.substr(0, slash); next_suffix = suffix.substr(slash + 1); } + if (_pattern == "**" && next_pattern == "**") { + // Collapse consecutive globstar patterns. + return r_match_files(prefix, next_suffix, results, cwd); + } + Filename parent_dir; if (prefix.is_local() && !cwd.empty()) { parent_dir = Filename(cwd, prefix); @@ -136,19 +146,24 @@ r_match_files(const Filename &prefix, const string &suffix, if (!has_glob_characters()) { // If there are no special characters in the pattern, it's a literal // match. + Filename fn(parent_dir, _pattern); if (suffix.empty()) { // Time to stop. - Filename single_filename(parent_dir, _pattern); - if (single_filename.exists()) { + if (fn.exists()) { results.push_back(Filename(prefix, _pattern)); return 1; } return 0; + } else if (fn.is_directory()) { + // If the pattern ends with a slash, match a directory only. + if (suffix == "/") { + results.push_back(Filename(prefix, _pattern + "/")); + return 1; + } else { + return next_glob.r_match_files(Filename(prefix, _pattern), + next_suffix, results, cwd); + } } - - return next_glob.r_match_files(Filename(prefix, _pattern), - next_suffix, results, cwd); - } // If there *are* special glob characters, we must attempt to match the @@ -164,18 +179,44 @@ r_match_files(const Filename &prefix, const string &suffix, // the pattern. int num_matched = 0; + // A globstar pattern matches zero or more directories. + if (_pattern == "**") { + // Try to match this directory (as if the globstar wasn't there) + if (suffix.empty()) { + // This is a directory. Add it. + results.push_back(Filename(prefix)); + num_matched++; + } else if (suffix == "/") { + // Keep the trailing slash, but be sure not to duplicate it. + results.push_back(Filename(prefix, "")); + num_matched++; + } else { + num_matched += next_glob.r_match_files(prefix, next_suffix, results, cwd); + } + next_suffix = suffix; + next_glob = *this; + } + vector_string::const_iterator fi; for (fi = dir_files.begin(); fi != dir_files.end(); ++fi) { const string &local_file = (*fi); if (_pattern[0] == '.' || (local_file.empty() || local_file[0] != '.')) { if (matches(local_file)) { // We have a match; continue. - if (suffix.empty()) { + if (Filename(parent_dir, local_file).is_directory()) { + if (suffix.empty() && _pattern != "**") { + results.push_back(Filename(prefix, local_file)); + num_matched++; + } else if (suffix == "/" && _pattern != "**") { + results.push_back(Filename(prefix, local_file + "/")); + num_matched++; + } else { + num_matched += next_glob.r_match_files(Filename(prefix, local_file), + next_suffix, results, cwd); + } + } else if (suffix.empty()) { results.push_back(Filename(prefix, local_file)); num_matched++; - } else { - num_matched += next_glob.r_match_files(Filename(prefix, local_file), - next_suffix, results, cwd); } } } From 8c914a285569d2cf2f00d6fe595d632873bdad88 Mon Sep 17 00:00:00 2001 From: rdb Date: Sun, 12 Feb 2017 17:24:03 +0100 Subject: [PATCH 19/29] Work towards ABI stability wrt allocation. Let MemoryHook take advantage of dlmalloc's internal bookkeeping. --- dtool/src/dtoolbase/deletedChain.h | 4 +- dtool/src/dtoolbase/dtoolbase.h | 39 +++++++ dtool/src/dtoolbase/memoryBase.h | 4 +- dtool/src/dtoolbase/memoryHook.I | 79 ++----------- dtool/src/dtoolbase/memoryHook.cxx | 110 +++++++++++++++++- dtool/src/dtoolbase/memoryHook.h | 21 ---- dtool/src/dtoolbase/pallocator.T | 30 +---- dtool/src/dtoolbase/pallocator.h | 6 +- dtool/src/dtoolbase/typeHandle.cxx | 86 +++++++++++++- dtool/src/dtoolbase/typeHandle.h | 72 ++++++++---- dtool/src/dtoolutil/pandaSystem.cxx | 13 +++ dtool/src/dtoolutil/pandaSystem.h | 2 + makepanda/makepanda.py | 2 - panda/src/gobj/geomVertexArrayData.h | 4 +- panda/src/gobj/vertexDataBuffer.cxx | 31 ++--- panda/src/gobj/vertexDataBuffer.h | 4 +- panda/src/linmath/lsimpleMatrix.h | 2 +- .../tinydisplay/tinyGraphicsStateGuardian.cxx | 6 +- panda/src/tinydisplay/tinyTextureContext.cxx | 6 +- 19 files changed, 331 insertions(+), 190 deletions(-) diff --git a/dtool/src/dtoolbase/deletedChain.h b/dtool/src/dtoolbase/deletedChain.h index 17a723a89b..a25be5d429 100644 --- a/dtool/src/dtoolbase/deletedChain.h +++ b/dtool/src/dtoolbase/deletedChain.h @@ -77,7 +77,7 @@ public: // Place this macro within a class definition to define appropriate operator // new and delete methods that take advantage of DeletedChain. #define ALLOC_DELETED_CHAIN(Type) \ - inline void *operator new(size_t size) { \ + inline void *operator new(size_t size) RETURNS_ALIGNED(MEMORY_HOOK_ALIGNMENT) { \ return (void *)StaticDeletedChain< Type >::allocate(size, get_type_handle(Type)); \ } \ inline void *operator new(size_t size, void *ptr) { \ @@ -96,7 +96,7 @@ public: // Use this variant of the above macro in cases in which the compiler fails to // unify the static template pointers properly, to prevent leaks. #define ALLOC_DELETED_CHAIN_DECL(Type) \ - inline void *operator new(size_t size) { \ + inline void *operator new(size_t size) RETURNS_ALIGNED(MEMORY_HOOK_ALIGNMENT) { \ return (void *)_deleted_chain.allocate(size, get_type_handle(Type)); \ } \ inline void *operator new(size_t size, void *ptr) { \ diff --git a/dtool/src/dtoolbase/dtoolbase.h b/dtool/src/dtoolbase/dtoolbase.h index 8dd2ec3cf6..965069614e 100644 --- a/dtool/src/dtoolbase/dtoolbase.h +++ b/dtool/src/dtoolbase/dtoolbase.h @@ -76,6 +76,10 @@ #define __has_builtin(x) 0 #endif +#ifndef __has_attribute +#define __has_attribute(x) 0 +#endif + // Use NODEFAULT to optimize a switch() stmt to tell MSVC to automatically go // to the final untested case after it has failed all the other cases (i.e. // 'assume at least one of the cases is always true') @@ -96,6 +100,12 @@ #define ASSUME_ALIGNED(x, y) (x) #endif +#if __has_attribute(assume_aligned) || __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 9) +#define RETURNS_ALIGNED(x) __attribute__((assume_aligned(x))) +#else +#define RETURNS_ALIGNED(x) +#endif + /* include win32 defns for everything up to WinServer2003, and assume I'm smart enough to use GetProcAddress for backward compat on @@ -400,6 +410,35 @@ typedef struct _object PyObject; #endif +#ifdef LINMATH_ALIGN +/* We require 16-byte alignment of certain structures, to support SSE2. We + don't strictly have to align everything, but it's just easier to do so. */ +#if defined(HAVE_EIGEN) && defined(__AVX__) && defined(STDFLOAT_DOUBLE) +/* Eigen uses AVX instructions, but let's only enable this when compiling with + double precision, so that we can keep our ABI a bit more stable. */ +#define MEMORY_HOOK_ALIGNMENT 32 +#else +#define MEMORY_HOOK_ALIGNMENT 16 +#endif +/* Otherwise, align to two words. This seems to be pretty standard to the + point where some code may rely on this being the case. */ +#elif defined(IS_OSX) || NATIVE_WORDSIZE >= 64 +#define MEMORY_HOOK_ALIGNMENT 16 +#else +#define MEMORY_HOOK_ALIGNMENT 8 +#endif + +#ifdef HAVE_EIGEN +/* Make sure that Eigen doesn't assume alignment guarantees we don't offer. */ +#define EIGEN_MAX_ALIGN_BYTES MEMORY_HOOK_ALIGNMENT +#ifndef EIGEN_MPL2_ONLY +#define EIGEN_MPL2_ONLY 1 +#endif +#if !defined(_DEBUG) && !defined(EIGEN_NO_DEBUG) +#define EIGEN_NO_DEBUG 1 +#endif +#endif + /* Determine our memory-allocation requirements. */ #if defined(USE_MEMORY_PTMALLOC2) || defined(USE_MEMORY_DLMALLOC) || defined(DO_MEMORY_USAGE) || defined(MEMORY_HOOK_DO_ALIGN) /* In this case we have some custom memory management requirements. */ diff --git a/dtool/src/dtoolbase/memoryBase.h b/dtool/src/dtoolbase/memoryBase.h index 2f361f1bb1..6d755e695b 100644 --- a/dtool/src/dtoolbase/memoryBase.h +++ b/dtool/src/dtoolbase/memoryBase.h @@ -26,7 +26,7 @@ #ifndef USE_MEMORY_NOWRAPPERS #define ALLOC_MEMORY_BASE \ - inline void *operator new(size_t size) { \ + inline void *operator new(size_t size) RETURNS_ALIGNED(MEMORY_HOOK_ALIGNMENT) { \ return PANDA_MALLOC_SINGLE(size); \ } \ inline void *operator new(size_t size, void *ptr) { \ @@ -38,7 +38,7 @@ } \ inline void operator delete(void *, void *) { \ } \ - inline void *operator new[](size_t size) { \ + inline void *operator new[](size_t size) RETURNS_ALIGNED(MEMORY_HOOK_ALIGNMENT) { \ return PANDA_MALLOC_ARRAY(size); \ } \ inline void *operator new[](size_t size, void *ptr) { \ diff --git a/dtool/src/dtoolbase/memoryHook.I b/dtool/src/dtoolbase/memoryHook.I index c89fe1908b..bd5a55af79 100644 --- a/dtool/src/dtoolbase/memoryHook.I +++ b/dtool/src/dtoolbase/memoryHook.I @@ -63,14 +63,24 @@ round_up_to_page_size(size_t size) const { /** * Given a pointer that was returned by a MemoryHook allocation, returns the - * number of bytes that were allocated for it. Returns 0 if not compiling - * with DO_MEMORY_USAGE. + * number of bytes that were allocated for it. This may be slightly larger + * than the number of bytes requested. + * The behavior of this function is undefined if the given pointer was not + * returned by the MemoryHook allocator or was already freed. + * May return 0 if not compiling with DO_MEMORY_USAGE. + * + * This is only defined publicly so TypeHandle can get at it; it really + * shouldn't be used outside of dtoolbase. */ INLINE size_t MemoryHook:: get_ptr_size(void *ptr) { #if defined(MEMORY_HOOK_DO_ALIGN) uintptr_t *root = (uintptr_t *)ptr; return (size_t)root[-2]; +#elif defined(USE_MEMORY_DLMALLOC) || defined(USE_MEMORY_PTMALLOC2) + // If we are using dlmalloc, we know how it stores the size. + size_t *root = (size_t *)ptr; + return (root[-1] & ~0x7) - sizeof(size_t); #elif defined(DO_MEMORY_USAGE) size_t *root = (size_t *)((char *)ptr - MEMORY_HOOK_ALIGNMENT); return *root; @@ -78,68 +88,3 @@ get_ptr_size(void *ptr) { return 0; #endif // DO_MEMORY_USAGE } - -/** - * Increments the amount of requested size as necessary to accommodate the - * extra data we might piggyback on each allocated block. - */ -INLINE size_t MemoryHook:: -inflate_size(size_t size) { -#if defined(MEMORY_HOOK_DO_ALIGN) - // If we're aligning, we need to request the header size, plus extra bytes - // to give us wiggle room to adjust the pointer. - return size + sizeof(uintptr_t) * 2 + MEMORY_HOOK_ALIGNMENT - 1; -#elif defined(DO_MEMORY_USAGE) - // If we're not aligning, but we're tracking memory allocations, we just - // need the header size extra (this gives us a place to store the size of - // the allocated block). However, we do need to make sure that any - // alignment guarantee is kept. - return size + MEMORY_HOOK_ALIGNMENT; -#else - // If we're not doing any of that, we can just allocate the precise - // requested amount. - return size; -#endif // DO_MEMORY_USAGE -} - -/** - * Converts an allocated pointer to a pointer returnable to the application. - * Stuffs size in the first n bytes of the allocated space. - */ -INLINE void *MemoryHook:: -alloc_to_ptr(void *alloc, size_t size) { -#if defined(MEMORY_HOOK_DO_ALIGN) - // Add room for two uintptr_t values. - uintptr_t *root = (uintptr_t *)((char *)alloc + sizeof(uintptr_t) * 2); - // Align this to the requested boundary. - root = (uintptr_t *)(((uintptr_t)root + MEMORY_HOOK_ALIGNMENT - 1) & ~(MEMORY_HOOK_ALIGNMENT - 1)); - root[-2] = size; - root[-1] = (uintptr_t)alloc; // Save the pointer we originally allocated. - return (void *)root; -#elif defined(DO_MEMORY_USAGE) - size_t *root = (size_t *)alloc; - root[0] = size; - return (void *)((char *)root + MEMORY_HOOK_ALIGNMENT); -#else - return alloc; -#endif // DO_MEMORY_USAGE -} - -/** - * Converts an application pointer back to the original allocated pointer. - * Extracts size from the first n bytes of the allocated space. - */ -INLINE void *MemoryHook:: -ptr_to_alloc(void *ptr, size_t &size) { -#if defined(MEMORY_HOOK_DO_ALIGN) - uintptr_t *root = (uintptr_t *)ptr; - size = root[-2]; - return (void *)root[-1]; // Get the pointer we originally allocated. -#elif defined(DO_MEMORY_USAGE) - size_t *root = (size_t *)((char *)ptr - MEMORY_HOOK_ALIGNMENT); - size = root[0]; - return (void *)root; -#else - return ptr; -#endif // DO_MEMORY_USAGE -} diff --git a/dtool/src/dtoolbase/memoryHook.cxx b/dtool/src/dtoolbase/memoryHook.cxx index 506ff51005..224fd3107b 100644 --- a/dtool/src/dtoolbase/memoryHook.cxx +++ b/dtool/src/dtoolbase/memoryHook.cxx @@ -14,6 +14,7 @@ #include "memoryHook.h" #include "deletedBufferChain.h" #include +#include "typeRegistry.h" #ifdef WIN32 @@ -104,6 +105,83 @@ static_assert((MEMORY_HOOK_ALIGNMENT & (MEMORY_HOOK_ALIGNMENT - 1)) == 0, #endif // USE_MEMORY_* +/** + * Increments the amount of requested size as necessary to accommodate the + * extra data we might piggyback on each allocated block. + */ +INLINE static size_t +inflate_size(size_t size) { +#if defined(MEMORY_HOOK_DO_ALIGN) + // If we're aligning, we need to request the header size, plus extra bytes + // to give us wiggle room to adjust the pointer. + return size + sizeof(uintptr_t) * 2 + MEMORY_HOOK_ALIGNMENT - 1; +#elif defined(USE_MEMORY_DLMALLOC) || defined(USE_MEMORY_PTMALLOC2) + // If we are can access the allocator's bookkeeping to figure out how many + // bytes were allocated, we don't need to add our own information. + return size; +#elif defined(DO_MEMORY_USAGE) + // If we're not aligning, but we're tracking memory allocations, we just + // need the header size extra (this gives us a place to store the size of + // the allocated block). However, we do need to make sure that any + // alignment guarantee is kept. + return size + MEMORY_HOOK_ALIGNMENT; +#else + // If we're not doing any of that, we can just allocate the precise + // requested amount. + return size; +#endif // DO_MEMORY_USAGE +} + +/** + * Converts an allocated pointer to a pointer returnable to the application. + * Stuffs size in the first n bytes of the allocated space. + */ +INLINE static void * +alloc_to_ptr(void *alloc, size_t size) { +#if defined(MEMORY_HOOK_DO_ALIGN) + // Add room for two uintptr_t values. + uintptr_t *root = (uintptr_t *)((char *)alloc + sizeof(uintptr_t) * 2); + // Align this to the requested boundary. + root = (uintptr_t *)(((uintptr_t)root + MEMORY_HOOK_ALIGNMENT - 1) & ~(MEMORY_HOOK_ALIGNMENT - 1)); + root[-2] = size; + root[-1] = (uintptr_t)alloc; // Save the pointer we originally allocated. + return (void *)root; +#elif defined(USE_MEMORY_DLMALLOC) || defined(USE_MEMORY_PTMALLOC2) + return alloc; +#elif defined(DO_MEMORY_USAGE) + size_t *root = (size_t *)alloc; + root[0] = size; + return (void *)((char *)root + MEMORY_HOOK_ALIGNMENT); +#else + return alloc; +#endif // DO_MEMORY_USAGE +} + +/** + * Converts an application pointer back to the original allocated pointer. + * Extracts size from the first n bytes of the allocated space, but only if + * DO_MEMORY_USAGE is defined. + */ +INLINE static void * +ptr_to_alloc(void *ptr, size_t &size) { +#if defined(MEMORY_HOOK_DO_ALIGN) + uintptr_t *root = (uintptr_t *)ptr; + size = root[-2]; + return (void *)root[-1]; // Get the pointer we originally allocated. +#elif defined(USE_MEMORY_DLMALLOC) || defined(USE_MEMORY_PTMALLOC2) +#ifdef DO_MEMORY_USAGE + size = MemoryHook::get_ptr_size(ptr); +#endif + return ptr; +#elif defined(DO_MEMORY_USAGE) + size_t *root = (size_t *)((char *)ptr - MEMORY_HOOK_ALIGNMENT); + size = root[0]; + return (void *)root; +#else + return ptr; +#endif // DO_MEMORY_USAGE +} + /** * */ @@ -195,6 +273,11 @@ heap_alloc_single(size_t size) { #ifdef DO_MEMORY_USAGE // In the DO_MEMORY_USAGE case, we want to track the total size of allocated // bytes on the heap. +#if defined(USE_MEMORY_DLMALLOC) || defined(USE_MEMORY_PTMALLOC2) + // dlmalloc may slightly overallocate, however. + size = get_ptr_size(alloc); + inflated_size = size; +#endif AtomicAdjust::add(_total_heap_single_size, (AtomicAdjust::Integer)size); if ((size_t)AtomicAdjust::get(_total_heap_single_size) + (size_t)AtomicAdjust::get(_total_heap_array_size) > @@ -204,8 +287,10 @@ heap_alloc_single(size_t size) { #endif // DO_MEMORY_USAGE void *ptr = alloc_to_ptr(alloc, size); +#ifdef _DEBUG assert(((uintptr_t)ptr % MEMORY_HOOK_ALIGNMENT) == 0); assert(ptr >= alloc && (char *)ptr + size <= (char *)alloc + inflated_size); +#endif return ptr; } @@ -265,6 +350,11 @@ heap_alloc_array(size_t size) { #ifdef DO_MEMORY_USAGE // In the DO_MEMORY_USAGE case, we want to track the total size of allocated // bytes on the heap. +#if defined(USE_MEMORY_DLMALLOC) || defined(USE_MEMORY_PTMALLOC2) + // dlmalloc may slightly overallocate, however. + size = get_ptr_size(alloc); + inflated_size = size; +#endif AtomicAdjust::add(_total_heap_array_size, (AtomicAdjust::Integer)size); if ((size_t)AtomicAdjust::get(_total_heap_single_size) + (size_t)AtomicAdjust::get(_total_heap_array_size) > @@ -274,8 +364,10 @@ heap_alloc_array(size_t size) { #endif // DO_MEMORY_USAGE void *ptr = alloc_to_ptr(alloc, size); +#ifdef _DEBUG assert(((uintptr_t)ptr % MEMORY_HOOK_ALIGNMENT) == 0); assert(ptr >= alloc && (char *)ptr + size <= (char *)alloc + inflated_size); +#endif return ptr; } @@ -287,11 +379,6 @@ heap_realloc_array(void *ptr, size_t size) { size_t orig_size; void *alloc = ptr_to_alloc(ptr, orig_size); -#ifdef DO_MEMORY_USAGE - assert((AtomicAdjust::Integer)orig_size <= _total_heap_array_size); - AtomicAdjust::add(_total_heap_array_size, (AtomicAdjust::Integer)size-(AtomicAdjust::Integer)orig_size); -#endif // DO_MEMORY_USAGE - size_t inflated_size = inflate_size(size); void *alloc1 = alloc; @@ -318,6 +405,16 @@ heap_realloc_array(void *ptr, size_t size) { #endif } +#ifdef DO_MEMORY_USAGE +#if defined(USE_MEMORY_DLMALLOC) || defined(USE_MEMORY_PTMALLOC2) + // dlmalloc may slightly overallocate, however. + size = get_ptr_size(alloc1); + inflated_size = size; +#endif + assert((AtomicAdjust::Integer)orig_size <= _total_heap_array_size); + AtomicAdjust::add(_total_heap_array_size, (AtomicAdjust::Integer)size-(AtomicAdjust::Integer)orig_size); +#endif // DO_MEMORY_USAGE + // Align this to the requested boundary. #ifdef MEMORY_HOOK_DO_ALIGN // This copies the code from alloc_to_ptr, since we can't write the size and @@ -337,8 +434,11 @@ heap_realloc_array(void *ptr, size_t size) { #else void *ptr1 = alloc_to_ptr(alloc1, size); #endif + +#ifdef _DEBUG assert(ptr1 >= alloc1 && (char *)ptr1 + size <= (char *)alloc1 + inflated_size); assert(((uintptr_t)ptr1 % MEMORY_HOOK_ALIGNMENT) == 0); +#endif return ptr1; } diff --git a/dtool/src/dtoolbase/memoryHook.h b/dtool/src/dtoolbase/memoryHook.h index b8eac26f54..687e348aef 100644 --- a/dtool/src/dtoolbase/memoryHook.h +++ b/dtool/src/dtoolbase/memoryHook.h @@ -20,22 +20,6 @@ #include "mutexImpl.h" #include -#ifdef LINMATH_ALIGN -// We require 16-byte alignment of certain structures, to support SSE2. We -// don't strictly have to align *everything*, but it's just easier to do so. -#ifdef __AVX__ -#define MEMORY_HOOK_ALIGNMENT 32 -#else -#define MEMORY_HOOK_ALIGNMENT 16 -#endif -// Otherwise, align to two words. This seems to be pretty standard to the -// point where some code may rely on this being the case. -#elif defined(IS_OSX) || NATIVE_WORDSIZE >= 64 -#define MEMORY_HOOK_ALIGNMENT 16 -#else -#define MEMORY_HOOK_ALIGNMENT 8 -#endif - class DeletedBufferChain; /** @@ -83,11 +67,6 @@ public: INLINE static size_t get_ptr_size(void *ptr); -private: - INLINE static size_t inflate_size(size_t size); - INLINE static void *alloc_to_ptr(void *alloc, size_t size); - INLINE static void *ptr_to_alloc(void *ptr, size_t &size); - #ifdef DO_MEMORY_USAGE protected: TVOLATILE AtomicAdjust::Integer _total_heap_single_size; diff --git a/dtool/src/dtoolbase/pallocator.T b/dtool/src/dtoolbase/pallocator.T index 38bc87135c..e9bfd3f98e 100644 --- a/dtool/src/dtoolbase/pallocator.T +++ b/dtool/src/dtoolbase/pallocator.T @@ -19,7 +19,7 @@ pallocator_single(TypeHandle type_handle) NOEXCEPT : } template -INLINE TYPENAME pallocator_single::pointer pallocator_single:: +INLINE Type *pallocator_single:: allocate(TYPENAME pallocator_single::size_type n, TYPENAME allocator::const_pointer) { TAU_PROFILE("pallocator_single:allocate()", " ", TAU_USER); // This doesn't support allocating arrays. @@ -43,34 +43,14 @@ pallocator_array(TypeHandle type_handle) NOEXCEPT : } template -INLINE TYPENAME pallocator_array::pointer pallocator_array:: +INLINE Type *pallocator_array:: allocate(TYPENAME pallocator_array::size_type n, TYPENAME allocator::const_pointer) { - TAU_PROFILE("pallocator_array:allocate()", " ", TAU_USER); -#ifdef DO_MEMORY_USAGE - size_t alloc_size = n * sizeof(Type); - void *ptr = (TYPENAME pallocator_array::pointer)PANDA_MALLOC_ARRAY(alloc_size); -#ifdef _DEBUG - assert(alloc_size == MemoryHook::get_ptr_size(ptr)); -#endif - _type_handle.inc_memory_usage(TypeHandle::MC_array, alloc_size); - return (TYPENAME pallocator_array::pointer)ASSUME_ALIGNED(ptr, MEMORY_HOOK_ALIGNMENT); -#else - return (TYPENAME pallocator_array::pointer)PANDA_MALLOC_ARRAY(n * sizeof(Type)); -#endif // DO_MEMORY_USAGE + return (TYPENAME pallocator_array::pointer) + ASSUME_ALIGNED(_type_handle.allocate_array(n * sizeof(Type)), MEMORY_HOOK_ALIGNMENT); } template INLINE void pallocator_array:: deallocate(TYPENAME pallocator_array::pointer p, TYPENAME pallocator_array::size_type) { - TAU_PROFILE("pallocator_array:deallocate()", " ", TAU_USER); -#ifdef DO_MEMORY_USAGE - // Now we need to recover the total number of bytes. Fortunately, in the - // case of DO_MEMORY_USAGE, MemoryHook already keeps track of this. - void *ptr = (void *)p; - size_t alloc_size = MemoryHook::get_ptr_size(ptr); - _type_handle.dec_memory_usage(TypeHandle::MC_array, alloc_size); - PANDA_FREE_ARRAY(ptr); -#else - PANDA_FREE_ARRAY(p); -#endif // DO_MEMORY_USAGE + _type_handle.deallocate_array((void *)p); } diff --git a/dtool/src/dtoolbase/pallocator.h b/dtool/src/dtoolbase/pallocator.h index b735bb7b3e..3c91b6cc7e 100644 --- a/dtool/src/dtoolbase/pallocator.h +++ b/dtool/src/dtoolbase/pallocator.h @@ -59,7 +59,8 @@ public: INLINE pallocator_single(const pallocator_single ©) NOEXCEPT : _type_handle(copy._type_handle) { } - INLINE pointer allocate(size_type n, allocator::const_pointer hint = 0); + INLINE Type *allocate(size_type n, allocator::const_pointer hint = 0) + RETURNS_ALIGNED(MEMORY_HOOK_ALIGNMENT); INLINE void deallocate(pointer p, size_type n); template struct rebind { @@ -87,7 +88,8 @@ public: INLINE pallocator_array(const pallocator_array ©) NOEXCEPT : _type_handle(copy._type_handle) { } - INLINE pointer allocate(size_type n, allocator::const_pointer hint = 0); + INLINE Type *allocate(size_type n, allocator::const_pointer hint = 0) + RETURNS_ALIGNED(MEMORY_HOOK_ALIGNMENT); INLINE void deallocate(pointer p, size_type n); template struct rebind { diff --git a/dtool/src/dtoolbase/typeHandle.cxx b/dtool/src/dtoolbase/typeHandle.cxx index ea3a51d6a1..6f4d7bc1d1 100644 --- a/dtool/src/dtoolbase/typeHandle.cxx +++ b/dtool/src/dtoolbase/typeHandle.cxx @@ -18,7 +18,6 @@ // This is initialized to zero by static initialization. TypeHandle TypeHandle::_none; -#ifdef DO_MEMORY_USAGE /** * Returns the total allocated memory used by objects of this type, for the * indicated memory class. This is only updated if track-memory-usage is set @@ -26,6 +25,7 @@ TypeHandle TypeHandle::_none; */ size_t TypeHandle:: get_memory_usage(MemoryClass memory_class) const { +#ifdef DO_MEMORY_USAGE assert((int)memory_class >= 0 && (int)memory_class < (int)MC_limit); if ((*this) == TypeHandle::none()) { return 0; @@ -34,16 +34,17 @@ get_memory_usage(MemoryClass memory_class) const { assert(rnode != (TypeRegistryNode *)NULL); return (size_t)AtomicAdjust::get(rnode->_memory_usage[memory_class]); } -} #endif // DO_MEMORY_USAGE + return 0; +} -#ifdef DO_MEMORY_USAGE /** * Adds the indicated amount to the record for the total allocated memory for * objects of this type. */ void TypeHandle:: inc_memory_usage(MemoryClass memory_class, size_t size) { +#ifdef DO_MEMORY_USAGE assert((int)memory_class >= 0 && (int)memory_class < (int)MC_limit); if ((*this) != TypeHandle::none()) { TypeRegistryNode *rnode = TypeRegistry::ptr()->look_up(*this, NULL); @@ -56,16 +57,16 @@ inc_memory_usage(MemoryClass memory_class, size_t size) { abort(); } } -} #endif // DO_MEMORY_USAGE +} -#ifdef DO_MEMORY_USAGE /** * Subtracts the indicated amount from the record for the total allocated * memory for objects of this type. */ void TypeHandle:: dec_memory_usage(MemoryClass memory_class, size_t size) { +#ifdef DO_MEMORY_USAGE assert((int)memory_class >= 0 && (int)memory_class < (int)MC_limit); if ((*this) != TypeHandle::none()) { TypeRegistryNode *rnode = TypeRegistry::ptr()->look_up(*this, NULL); @@ -75,8 +76,81 @@ dec_memory_usage(MemoryClass memory_class, size_t size) { // rnode->_memory_usage[memory_class] << "\n"; assert(rnode->_memory_usage[memory_class] >= 0); } -} #endif // DO_MEMORY_USAGE +} + +/** + * Allocates memory, adding it to the total amount of memory allocated for + * this type. + */ +void *TypeHandle:: +allocate_array(size_t size) { + TAU_PROFILE("TypeHandle:allocate_array()", " ", TAU_USER); + + void *ptr = PANDA_MALLOC_ARRAY(size); +#ifdef DO_MEMORY_USAGE + if ((*this) != TypeHandle::none()) { + size_t alloc_size = MemoryHook::get_ptr_size(ptr); +#ifdef _DEBUG + assert(size <= alloc_size); +#endif + TypeRegistryNode *rnode = TypeRegistry::ptr()->look_up(*this, NULL); + assert(rnode != (TypeRegistryNode *)NULL); + AtomicAdjust::add(rnode->_memory_usage[MC_array], (AtomicAdjust::Integer)alloc_size); + if (rnode->_memory_usage[MC_array] < 0) { + cerr << "Memory usage overflow for type " << *this << ".\n"; + abort(); + } + } +#endif // DO_MEMORY_USAGE + return ptr; +} + +/** + * Reallocates memory, adjusting the total amount of memory allocated for this + * type. + */ +void *TypeHandle:: +reallocate_array(void *old_ptr, size_t size) { + TAU_PROFILE("TypeHandle:reallocate_array()", " ", TAU_USER); + +#ifdef DO_MEMORY_USAGE + size_t old_size = MemoryHook::get_ptr_size(old_ptr); + void *new_ptr = PANDA_REALLOC_ARRAY(old_ptr, size); + + if ((*this) != TypeHandle::none()) { + size_t new_size = MemoryHook::get_ptr_size(new_ptr); + + TypeRegistryNode *rnode = TypeRegistry::ptr()->look_up(*this, NULL); + assert(rnode != (TypeRegistryNode *)NULL); + AtomicAdjust::add(rnode->_memory_usage[MC_array], (AtomicAdjust::Integer)new_size - (AtomicAdjust::Integer)old_size); + assert(rnode->_memory_usage[MC_array] >= 0); + } +#else + void *new_ptr = PANDA_REALLOC_ARRAY(old_ptr, size); +#endif + return new_ptr; +} + +/** + * Deallocates memory, subtracting it from the total amount of memory + * allocated for this type. + */ +void TypeHandle:: +deallocate_array(void *ptr) { + TAU_PROFILE("TypeHandle:deallocate_array()", " ", TAU_USER); + +#ifdef DO_MEMORY_USAGE + size_t alloc_size = MemoryHook::get_ptr_size(ptr); + if ((*this) != TypeHandle::none()) { + TypeRegistryNode *rnode = TypeRegistry::ptr()->look_up(*this, NULL); + assert(rnode != (TypeRegistryNode *)NULL); + AtomicAdjust::add(rnode->_memory_usage[MC_array], -(AtomicAdjust::Integer)alloc_size); + assert(rnode->_memory_usage[MC_array] >= 0); + } +#endif // DO_MEMORY_USAGE + PANDA_FREE_ARRAY(ptr); +} /** * Return the Index of the BEst fit Classs from a set diff --git a/dtool/src/dtoolbase/typeHandle.h b/dtool/src/dtoolbase/typeHandle.h index fe611c2fd1..f770b1810b 100644 --- a/dtool/src/dtoolbase/typeHandle.h +++ b/dtool/src/dtoolbase/typeHandle.h @@ -18,25 +18,49 @@ #include -// The following illustrates the convention for declaring a type that uses -// TypeHandle. In this example, ThisThingie inherits from TypedObject, which -// automatically supplies some type-differentiation functions at the cost of -// one virtual function, get_type(); however, this inheritance is optional, -// and may be omitted to avoid the virtual function pointer overhead. (If you -// do use TypedObject, be sure to consider whether your destructor should also -// be virtual.) - -/* - * class ThatThingie : public SimpleTypedObject { public: static TypeHandle - * get_class_type() { return _type_handle; } static void init_type() { - * register_type(_type_handle, "ThatThingie"); } private: static TypeHandle - * _type_handle; }; class ThisThingie : public ThatThingie, publid TypedObject - * { public: static TypeHandle get_class_type() { return _type_handle; } - * static void init_type() { ThatThingie::init_type(); - * TypedObject::init_type(); register_type(_type_handle, "ThisThingie", - * ThatThingie::get_class_type(), TypedObject::get_class_type()); } virtual - * TypeHandle get_type() const { return get_class_type(); } private: static - * TypeHandle _type_handle; }; +/** + * The following illustrates the convention for declaring a type that uses + * TypeHandle. In this example, ThisThingie inherits from TypedObject, which + * automatically supplies some type-differentiation functions at the cost of + * one virtual function, get_type(); however, this inheritance is optional, + * and may be omitted to avoid the virtual function pointer overhead. (If you + * do use TypedObject, be sure to consider whether your destructor should also + * be virtual.) + * + * @code + * class ThatThingie : public SimpleTypedObject { + * public: + * static TypeHandle get_class_type() { + * return _type_handle; + * } + * static void init_type() { + * register_type(_type_handle, "ThatThingie"); + * } + * + * private: + * static TypeHandle _type_handle; + * }; + * + * class ThisThingie : public ThatThingie, publid TypedObject { + * public: + * static TypeHandle get_class_type() { + * return _type_handle; + * } + * static void init_type() { + * ThatThingie::init_type(); + * TypedObject::init_type(); + * register_type(_type_handle, "ThisThingie", + * ThatThingie::get_class_type(), + * TypedObject::get_class_type()); + * } + * virtual TypeHandle get_type() const { + * return get_class_type(); + * } + * + * private: + * static TypeHandle _type_handle; + * }; + * @endcode */ class TypedObject; @@ -97,15 +121,9 @@ PUBLISHED: int get_best_parent_from_Set(const std::set< int > &legal_vals) const; -#ifdef DO_MEMORY_USAGE size_t get_memory_usage(MemoryClass memory_class) const; void inc_memory_usage(MemoryClass memory_class, size_t size); void dec_memory_usage(MemoryClass memory_class, size_t size); -#else - static CONSTEXPR size_t get_memory_usage(MemoryClass) { return 0; } - INLINE void inc_memory_usage(MemoryClass, size_t) { } - INLINE void dec_memory_usage(MemoryClass, size_t) { } -#endif // DO_MEMORY_USAGE INLINE int get_index() const; INLINE void output(ostream &out) const; @@ -118,6 +136,10 @@ PUBLISHED: MAKE_SEQ_PROPERTY(child_classes, get_num_child_classes, get_child_class); public: + void *allocate_array(size_t size) RETURNS_ALIGNED(MEMORY_HOOK_ALIGNMENT); + void *reallocate_array(void *ptr, size_t size) RETURNS_ALIGNED(MEMORY_HOOK_ALIGNMENT); + void deallocate_array(void *ptr); + INLINE static TypeHandle from_index(int index); private: diff --git a/dtool/src/dtoolutil/pandaSystem.cxx b/dtool/src/dtoolutil/pandaSystem.cxx index cef04eb37b..79e5aa7762 100644 --- a/dtool/src/dtoolutil/pandaSystem.cxx +++ b/dtool/src/dtoolutil/pandaSystem.cxx @@ -45,6 +45,11 @@ PandaSystem() : #else set_system_tag("eigen", "vectorize", "0"); #endif +#ifdef __AVX__ + set_system_tag("eigen", "avx", "1"); +#else + set_system_tag("eigen", "avx", "0"); +#endif #endif // HAVE_EIGEN #ifdef USE_MEMORY_DLMALLOC @@ -189,6 +194,14 @@ is_official_version() { #endif } +/** + * Returns the memory alignment that Panda's allocators are using. + */ +int PandaSystem:: +get_memory_alignment() { + return MEMORY_HOOK_ALIGNMENT; +} + /** * Returns the string defined by the distributor of this version of Panda, or * "homebuilt" if this version was built directly from the sources by the end- diff --git a/dtool/src/dtoolutil/pandaSystem.h b/dtool/src/dtoolutil/pandaSystem.h index d88e3b92a3..bed5f2c073 100644 --- a/dtool/src/dtoolutil/pandaSystem.h +++ b/dtool/src/dtoolutil/pandaSystem.h @@ -39,6 +39,8 @@ PUBLISHED: static int get_sequence_version(); static bool is_official_version(); + static int get_memory_alignment(); + static string get_distributor(); static string get_compiler(); static string get_build_date(); diff --git a/makepanda/makepanda.py b/makepanda/makepanda.py index 564ee8e4e9..e159e864d8 100755 --- a/makepanda/makepanda.py +++ b/makepanda/makepanda.py @@ -973,9 +973,7 @@ if GetTarget() == 'android': DefSymbol("ALWAYS", "ANDROID") if not PkgSkip("EIGEN"): - DefSymbol("ALWAYS", "EIGEN_MPL2_ONLY") if GetOptimize() >= 3: - DefSymbol("ALWAYS", "EIGEN_NO_DEBUG") if COMPILER == "MSVC": # Squeeze out a bit more performance on MSVC builds... # Only do this if EIGEN_NO_DEBUG is also set, otherwise it diff --git a/panda/src/gobj/geomVertexArrayData.h b/panda/src/gobj/geomVertexArrayData.h index e52876d376..9766a9cbd1 100644 --- a/panda/src/gobj/geomVertexArrayData.h +++ b/panda/src/gobj/geomVertexArrayData.h @@ -261,8 +261,8 @@ public: INLINE Thread *get_current_thread() const; - INLINE const unsigned char *get_read_pointer(bool force) const; - unsigned char *get_write_pointer(); + INLINE const unsigned char *get_read_pointer(bool force) const RETURNS_ALIGNED(MEMORY_HOOK_ALIGNMENT); + unsigned char *get_write_pointer() RETURNS_ALIGNED(MEMORY_HOOK_ALIGNMENT); PUBLISHED: INLINE const GeomVertexArrayData *get_object() const; diff --git a/panda/src/gobj/vertexDataBuffer.cxx b/panda/src/gobj/vertexDataBuffer.cxx index 1e3b884893..19f50b3013 100644 --- a/panda/src/gobj/vertexDataBuffer.cxx +++ b/panda/src/gobj/vertexDataBuffer.cxx @@ -27,15 +27,13 @@ operator = (const VertexDataBuffer ©) { if (_resident_data != (unsigned char *)NULL) { nassertv(_reserved_size != 0); - get_class_type().dec_memory_usage(TypeHandle::MC_array, (int)_reserved_size); - PANDA_FREE_ARRAY(_resident_data); + get_class_type().deallocate_array(_resident_data); _resident_data = NULL; } if (copy._resident_data != (unsigned char *)NULL && copy._size != 0) { // We only allocate _size bytes, not the full _reserved_size allocated by // the original copy. - get_class_type().inc_memory_usage(TypeHandle::MC_array, (int)copy._size); - _resident_data = (unsigned char *)PANDA_MALLOC_ARRAY(copy._size); + _resident_data = (unsigned char *)get_class_type().allocate_array(copy._size); memcpy(_resident_data, copy._resident_data, copy._size); } _size = copy._size; @@ -55,17 +53,16 @@ swap(VertexDataBuffer &other) { unsigned char *resident_data = _resident_data; size_t size = _size; size_t reserved_size = _reserved_size; - PT(VertexDataBlock) block = _block; + + _block.swap(other._block); _resident_data = other._resident_data; _size = other._size; _reserved_size = other._reserved_size; - _block = other._block; other._resident_data = resident_data; other._size = size; other._reserved_size = reserved_size; - other._block = block; nassertv(_reserved_size >= _size); } @@ -94,13 +91,12 @@ do_clean_realloc(size_t reserved_size) { do_page_in(); } - get_class_type().inc_memory_usage(TypeHandle::MC_array, (int)reserved_size - (int)_reserved_size); if (_reserved_size == 0) { nassertv(_resident_data == (unsigned char *)NULL); - _resident_data = (unsigned char *)PANDA_MALLOC_ARRAY(reserved_size); + _resident_data = (unsigned char *)get_class_type().allocate_array(reserved_size); } else { nassertv(_resident_data != (unsigned char *)NULL); - _resident_data = (unsigned char *)PANDA_REALLOC_ARRAY(_resident_data, reserved_size); + _resident_data = (unsigned char *)get_class_type().reallocate_array(_resident_data, reserved_size); } nassertv(_resident_data != (unsigned char *)NULL); _reserved_size = reserved_size; @@ -129,16 +125,14 @@ do_unclean_realloc(size_t reserved_size) { if (_resident_data != (unsigned char *)NULL) { nassertv(_reserved_size != 0); - get_class_type().dec_memory_usage(TypeHandle::MC_array, (int)_reserved_size); - PANDA_FREE_ARRAY(_resident_data); + get_class_type().deallocate_array(_resident_data); _resident_data = NULL; _reserved_size = 0; } if (reserved_size != 0) { - get_class_type().inc_memory_usage(TypeHandle::MC_array, (int)reserved_size); nassertv(_resident_data == (unsigned char *)NULL); - _resident_data = (unsigned char *)PANDA_MALLOC_ARRAY(reserved_size); + _resident_data = (unsigned char *)get_class_type().allocate_array(reserved_size); } _reserved_size = reserved_size; @@ -166,8 +160,7 @@ do_page_out(VertexDataBook &book) { if (_size == 0) { // It's an empty buffer. Just deallocate it; don't bother to create a // block. - get_class_type().dec_memory_usage(TypeHandle::MC_array, (int)_reserved_size); - PANDA_FREE_ARRAY(_resident_data); + get_class_type().deallocate_array(_resident_data); _resident_data = NULL; _reserved_size = 0; @@ -180,8 +173,7 @@ do_page_out(VertexDataBook &book) { nassertv(pointer != (unsigned char *)NULL); memcpy(pointer, _resident_data, _size); - get_class_type().dec_memory_usage(TypeHandle::MC_array, (int)_reserved_size); - PANDA_FREE_ARRAY(_resident_data); + get_class_type().deallocate_array(_resident_data); _resident_data = NULL; _reserved_size = _size; @@ -205,8 +197,7 @@ do_page_in() { nassertv(_block != (VertexDataBlock *)NULL); nassertv(_reserved_size == _size); - get_class_type().inc_memory_usage(TypeHandle::MC_array, (int)_size); - _resident_data = (unsigned char *)PANDA_MALLOC_ARRAY(_size); + _resident_data = (unsigned char *)get_class_type().allocate_array(_size); nassertv(_resident_data != (unsigned char *)NULL); memcpy(_resident_data, _block->get_pointer(true), _size); diff --git a/panda/src/gobj/vertexDataBuffer.h b/panda/src/gobj/vertexDataBuffer.h index 2a18aeda45..f698669f52 100644 --- a/panda/src/gobj/vertexDataBuffer.h +++ b/panda/src/gobj/vertexDataBuffer.h @@ -57,8 +57,8 @@ public: void operator = (const VertexDataBuffer ©); INLINE ~VertexDataBuffer(); - INLINE const unsigned char *get_read_pointer(bool force) const; - INLINE unsigned char *get_write_pointer(); + INLINE const unsigned char *get_read_pointer(bool force) const RETURNS_ALIGNED(MEMORY_HOOK_ALIGNMENT); + INLINE unsigned char *get_write_pointer() RETURNS_ALIGNED(MEMORY_HOOK_ALIGNMENT); INLINE size_t get_size() const; INLINE size_t get_reserved_size() const; diff --git a/panda/src/linmath/lsimpleMatrix.h b/panda/src/linmath/lsimpleMatrix.h index 5669e18be3..3228caf5bb 100644 --- a/panda/src/linmath/lsimpleMatrix.h +++ b/panda/src/linmath/lsimpleMatrix.h @@ -58,7 +58,7 @@ private: #endif // HAVE_EIGEN // This is as good a place as any to define this alignment macro. -#if defined(LINMATH_ALIGN) && defined(HAVE_EIGEN) && defined(__AVX__) +#if defined(LINMATH_ALIGN) && defined(HAVE_EIGEN) && defined(__AVX__) && defined(STDFLOAT_DOUBLE) #define ALIGN_LINMATH ALIGN_32BYTE #elif defined(LINMATH_ALIGN) #define ALIGN_LINMATH ALIGN_16BYTE diff --git a/panda/src/tinydisplay/tinyGraphicsStateGuardian.cxx b/panda/src/tinydisplay/tinyGraphicsStateGuardian.cxx index 6818ea65a0..db600e14de 100644 --- a/panda/src/tinydisplay/tinyGraphicsStateGuardian.cxx +++ b/panda/src/tinydisplay/tinyGraphicsStateGuardian.cxx @@ -2612,12 +2612,10 @@ setup_gltex(GLTexture *gltex, int x_size, int y_size, int num_levels) { if (gltex->total_bytecount != total_bytecount) { if (gltex->allocated_buffer != NULL) { - PANDA_FREE_ARRAY(gltex->allocated_buffer); - TinyTextureContext::get_class_type().dec_memory_usage(TypeHandle::MC_array, gltex->total_bytecount); + TinyTextureContext::get_class_type().deallocate_array(gltex->allocated_buffer); } - gltex->allocated_buffer = PANDA_MALLOC_ARRAY(total_bytecount); + gltex->allocated_buffer = TinyTextureContext::get_class_type().allocate_array(total_bytecount); gltex->total_bytecount = total_bytecount; - TinyTextureContext::get_class_type().inc_memory_usage(TypeHandle::MC_array, total_bytecount); } char *next_buffer = (char *)gltex->allocated_buffer; diff --git a/panda/src/tinydisplay/tinyTextureContext.cxx b/panda/src/tinydisplay/tinyTextureContext.cxx index 87427ac365..5a3ae3414d 100644 --- a/panda/src/tinydisplay/tinyTextureContext.cxx +++ b/panda/src/tinydisplay/tinyTextureContext.cxx @@ -24,8 +24,7 @@ TinyTextureContext:: GLTexture *gltex = &_gltex; if (gltex->allocated_buffer != NULL) { nassertv(gltex->num_levels != 0); - TinyTextureContext::get_class_type().dec_memory_usage(TypeHandle::MC_array, gltex->total_bytecount); - PANDA_FREE_ARRAY(gltex->allocated_buffer); + get_class_type().deallocate_array(gltex->allocated_buffer); gltex->allocated_buffer = NULL; gltex->total_bytecount = 0; gltex->num_levels = 0; @@ -51,8 +50,7 @@ evict_lru() { GLTexture *gltex = &_gltex; if (gltex->allocated_buffer != NULL) { nassertv(gltex->num_levels != 0); - TinyTextureContext::get_class_type().dec_memory_usage(TypeHandle::MC_array, gltex->total_bytecount); - PANDA_FREE_ARRAY(gltex->allocated_buffer); + get_class_type().deallocate_array(gltex->allocated_buffer); gltex->allocated_buffer = NULL; gltex->total_bytecount = 0; gltex->num_levels = 0; From 78e4c712023ad32f82625b182d543d5c6fae60d0 Mon Sep 17 00:00:00 2001 From: rdb Date: Fri, 17 Feb 2017 12:57:34 +0100 Subject: [PATCH 20/29] Fix issue with taking screenshots from an FBO --- panda/src/display/displayRegion.cxx | 6 ++++++ panda/src/glstuff/glGraphicsBuffer_src.cxx | 3 +++ 2 files changed, 9 insertions(+) diff --git a/panda/src/display/displayRegion.cxx b/panda/src/display/displayRegion.cxx index c8f7626468..4ffa29285c 100644 --- a/panda/src/display/displayRegion.cxx +++ b/panda/src/display/displayRegion.cxx @@ -491,6 +491,12 @@ get_screenshot() { return NULL; } + { + // Make sure that the correct viewport is active. + DisplayRegionPipelineReader dr_reader(this, current_thread); + gsg->prepare_display_region(&dr_reader); + } + PT(Texture) tex = new Texture; RenderBuffer buffer = gsg->get_render_buffer(get_screenshot_buffer_type(), diff --git a/panda/src/glstuff/glGraphicsBuffer_src.cxx b/panda/src/glstuff/glGraphicsBuffer_src.cxx index ad09596f9c..3a73d175c4 100644 --- a/panda/src/glstuff/glGraphicsBuffer_src.cxx +++ b/panda/src/glstuff/glGraphicsBuffer_src.cxx @@ -269,6 +269,9 @@ begin_frame(FrameMode mode, Thread *current_thread) { } } #endif + } else if (mode == FM_refresh) { + // Just bind the FBO. + rebuild_bitplanes(); } _gsg->set_current_properties(&get_fb_properties()); From 21a42f62dfeb62a590f957ae5d3aa0ca5b32f373 Mon Sep 17 00:00:00 2001 From: rdb Date: Fri, 17 Feb 2017 12:59:50 +0100 Subject: [PATCH 21/29] Fix FreeBSD compile error --- panda/src/display/graphicsPipe.cxx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/panda/src/display/graphicsPipe.cxx b/panda/src/display/graphicsPipe.cxx index 5c00b204a3..bb6fdae3a4 100644 --- a/panda/src/display/graphicsPipe.cxx +++ b/panda/src/display/graphicsPipe.cxx @@ -23,11 +23,8 @@ #include #endif -#ifdef IS_OSX +#if defined(IS_OSX) || defined(IS_FREEBSD) #include -#endif - -#ifdef IS_FREEBSD #include #endif From f5f51c5d5b82e19993fe002282884a08bc694a10 Mon Sep 17 00:00:00 2001 From: rdb Date: Fri, 17 Feb 2017 16:15:04 +0100 Subject: [PATCH 22/29] Remove OpenSSL includes from headers, so C++ users don't need to have OpenSSL --- dtool/src/parser-inc/openssl/evp.h | 3 +- dtool/src/parser-inc/openssl/ssl.h | 15 ++-- dtool/src/parser-inc/openssl/x509.h | 4 +- dtool/src/prc/encryptStreamBuf.cxx | 1 + dtool/src/prc/encryptStreamBuf.h | 2 +- dtool/src/prc/prcKeyRegistry.cxx | 4 + dtool/src/prc/prcKeyRegistry.h | 4 +- panda/src/downloader/bioPtr.I | 8 -- panda/src/downloader/bioPtr.cxx | 13 ++- panda/src/downloader/bioPtr.h | 10 +-- panda/src/downloader/bioStreamBuf.h | 6 -- panda/src/downloader/bioStreamPtr.h | 6 -- panda/src/downloader/httpChannel.cxx | 2 + panda/src/downloader/httpChannel.h | 8 +- panda/src/downloader/httpClient.cxx | 126 ++++++++++++++------------- panda/src/downloader/httpClient.h | 12 ++- panda/src/express/multifile.cxx | 39 +-------- panda/src/express/multifile.h | 7 +- 18 files changed, 112 insertions(+), 158 deletions(-) diff --git a/dtool/src/parser-inc/openssl/evp.h b/dtool/src/parser-inc/openssl/evp.h index a9ef1fd091..9cc780cb19 100644 --- a/dtool/src/parser-inc/openssl/evp.h +++ b/dtool/src/parser-inc/openssl/evp.h @@ -2,7 +2,6 @@ #ifndef EVP_H #define EVP_H -struct EVP_CIPHER_CTX; -struct EVP_PKEY; +#include #endif diff --git a/dtool/src/parser-inc/openssl/ssl.h b/dtool/src/parser-inc/openssl/ssl.h index d43aca6090..50fe63c4bc 100644 --- a/dtool/src/parser-inc/openssl/ssl.h +++ b/dtool/src/parser-inc/openssl/ssl.h @@ -2,13 +2,14 @@ #ifndef SSL_H #define SSL_H -struct BIO; -struct SSL_CTX; -struct EVP_CIPHER_CTX; -struct EVP_PKEY; -struct X509; -struct X509_STORE; -struct X509_NAME; +typedef struct bio_st BIO; +typedef struct ssl_ctx_st SSL_CTX; +typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX; +typedef struct evp_pkey_st EVP_PKEY; +typedef struct x509_st X509; +typedef struct x509_store_st X509_STORE; +typedef struct X509_name_st X509_NAME; +typedef struct ssl_cipher_st SSL_CIPHER; struct SSL; #define STACK_OF(type) struct stack_st_##type diff --git a/dtool/src/parser-inc/openssl/x509.h b/dtool/src/parser-inc/openssl/x509.h index bbd2598dfc..d2bfcbaa5c 100644 --- a/dtool/src/parser-inc/openssl/x509.h +++ b/dtool/src/parser-inc/openssl/x509.h @@ -2,9 +2,7 @@ #ifndef X509_H #define X509_H -struct X509; -struct X509_STORE; -struct X509_NAME; +#include #endif diff --git a/dtool/src/prc/encryptStreamBuf.cxx b/dtool/src/prc/encryptStreamBuf.cxx index 6cb0ee6b39..3d428852d2 100644 --- a/dtool/src/prc/encryptStreamBuf.cxx +++ b/dtool/src/prc/encryptStreamBuf.cxx @@ -21,6 +21,7 @@ #ifdef HAVE_OPENSSL #include "openssl/rand.h" +#include "openssl/evp.h" #ifndef HAVE_STREAMSIZE // Some compilers (notably SGI) don't define this for us diff --git a/dtool/src/prc/encryptStreamBuf.h b/dtool/src/prc/encryptStreamBuf.h index 4861a89240..b7d95424c2 100644 --- a/dtool/src/prc/encryptStreamBuf.h +++ b/dtool/src/prc/encryptStreamBuf.h @@ -19,7 +19,7 @@ // This module is not compiled if OpenSSL is not available. #ifdef HAVE_OPENSSL -#include "openssl/evp.h" +typedef struct evp_cipher_ctx_st EVP_CIPHER_CTX; /** * The streambuf object that implements IDecompressStream and OCompressStream. diff --git a/dtool/src/prc/prcKeyRegistry.cxx b/dtool/src/prc/prcKeyRegistry.cxx index 9b760ac53d..6329a8abbd 100644 --- a/dtool/src/prc/prcKeyRegistry.cxx +++ b/dtool/src/prc/prcKeyRegistry.cxx @@ -19,8 +19,12 @@ #ifdef HAVE_OPENSSL +#include "openssl/evp.h" #include "openssl/pem.h" +// Some versions of OpenSSL appear to define this as a macro. Yucky. +#undef set_key + PrcKeyRegistry *PrcKeyRegistry::_global_ptr = NULL; /** diff --git a/dtool/src/prc/prcKeyRegistry.h b/dtool/src/prc/prcKeyRegistry.h index 1b53287215..69e25d949e 100644 --- a/dtool/src/prc/prcKeyRegistry.h +++ b/dtool/src/prc/prcKeyRegistry.h @@ -22,10 +22,8 @@ #ifdef HAVE_OPENSSL #include -#include "openssl/evp.h" -// Some versions of OpenSSL appear to define this as a macro. Yucky. -#undef set_key +typedef struct evp_pkey_st EVP_PKEY; /** * This class records the set of public keys used to verify the signature on a diff --git a/panda/src/downloader/bioPtr.I b/panda/src/downloader/bioPtr.I index f09ee7bbc8..a1e1f13e1d 100644 --- a/panda/src/downloader/bioPtr.I +++ b/panda/src/downloader/bioPtr.I @@ -18,14 +18,6 @@ INLINE BioPtr:: BioPtr(BIO *bio) : _bio(bio) { } -/** - * - */ -INLINE bool BioPtr:: -should_retry() const { - return (_bio != NULL) && BIO_should_retry(_bio); -} - /** * */ diff --git a/panda/src/downloader/bioPtr.cxx b/panda/src/downloader/bioPtr.cxx index 15fe997c02..b86f37f816 100644 --- a/panda/src/downloader/bioPtr.cxx +++ b/panda/src/downloader/bioPtr.cxx @@ -18,6 +18,9 @@ #include "urlSpec.h" #include "config_downloader.h" +#include "openSSLWrapper.h" // must be included before any other openssl. +#include "openssl/ssl.h" + #ifdef _WIN32 #include #else @@ -199,7 +202,7 @@ connect() { if (result != 0 && BIO_sock_should_retry(-1)) { // It's still in progress; we should retry later. This causes - // should_reply() to return true. + // should_retry() to return true. BIO_set_flags(_bio, BIO_FLAGS_SHOULD_RETRY); _connecting = true; return false; @@ -218,6 +221,14 @@ connect() { return true; } +/** + * + */ +bool BioPtr:: +should_retry() const { + return (_bio != NULL) && BIO_should_retry(_bio); +} + /** * */ diff --git a/panda/src/downloader/bioPtr.h b/panda/src/downloader/bioPtr.h index 332a1fc715..090ae20608 100644 --- a/panda/src/downloader/bioPtr.h +++ b/panda/src/downloader/bioPtr.h @@ -19,13 +19,7 @@ // This module is not compiled if OpenSSL is not available. #ifdef HAVE_OPENSSL -#ifndef OPENSSL_NO_KRB5 -#define OPENSSL_NO_KRB5 -#endif - #include "referenceCount.h" -#include "openSSLWrapper.h" // must be included before any other openssl. -#include "openssl/ssl.h" #ifdef _WIN32 #include @@ -35,6 +29,8 @@ #include #endif +typedef struct bio_st BIO; + class URLSpec; /** @@ -52,7 +48,7 @@ public: void set_nbio(bool nbio); bool connect(); - INLINE bool should_retry() const; + bool should_retry() const; INLINE BIO &operator *() const; INLINE BIO *operator -> () const; diff --git a/panda/src/downloader/bioStreamBuf.h b/panda/src/downloader/bioStreamBuf.h index c9174b30b1..0378d9db65 100644 --- a/panda/src/downloader/bioStreamBuf.h +++ b/panda/src/downloader/bioStreamBuf.h @@ -19,14 +19,8 @@ // This module is not compiled if OpenSSL is not available. #ifdef HAVE_OPENSSL -#ifndef OPENSSL_NO_KRB5 -#define OPENSSL_NO_KRB5 -#endif - #include "bioPtr.h" #include "pointerTo.h" -#include "openSSLWrapper.h" // must be included before any other openssl. -#include "openssl/ssl.h" /** * The streambuf object that implements IBioStream. diff --git a/panda/src/downloader/bioStreamPtr.h b/panda/src/downloader/bioStreamPtr.h index aa5c8a28bf..3f23040d20 100644 --- a/panda/src/downloader/bioStreamPtr.h +++ b/panda/src/downloader/bioStreamPtr.h @@ -19,14 +19,8 @@ // This module is not compiled if OpenSSL is not available. #ifdef HAVE_OPENSSL -#ifndef OPENSSL_NO_KRB5 -#define OPENSSL_NO_KRB5 -#endif - #include "bioStream.h" #include "referenceCount.h" -#include "openSSLWrapper.h" // must be included before any other openssl. -#include "openssl/ssl.h" /** * A wrapper around an BioStream object to make a reference-counting pointer diff --git a/panda/src/downloader/httpChannel.cxx b/panda/src/downloader/httpChannel.cxx index 3c90d63c3c..a7eb5f58d3 100644 --- a/panda/src/downloader/httpChannel.cxx +++ b/panda/src/downloader/httpChannel.cxx @@ -27,6 +27,8 @@ #ifdef HAVE_OPENSSL +#include "openSSLWrapper.h" + #if defined(WIN32_VC) || defined(WIN64_VC) #include #include // for select() diff --git a/panda/src/downloader/httpChannel.h b/panda/src/downloader/httpChannel.h index 4c4ddfa312..b9131eba9a 100644 --- a/panda/src/downloader/httpChannel.h +++ b/panda/src/downloader/httpChannel.h @@ -22,10 +22,6 @@ #ifdef HAVE_OPENSSL -#ifndef OPENSSL_NO_KRB5 -#define OPENSSL_NO_KRB5 -#endif - #include "httpClient.h" #include "httpEnum.h" #include "urlSpec.h" @@ -37,10 +33,10 @@ #include "pointerTo.h" #include "config_downloader.h" #include "filename.h" -#include "openSSLWrapper.h" // must be included before any other openssl. -#include "openssl/ssl.h" #include "typedReferenceCount.h" +typedef struct bio_st BIO; + class Ramfile; class HTTPClient; diff --git a/panda/src/downloader/httpClient.cxx b/panda/src/downloader/httpClient.cxx index 129d5fb6be..4770d6916d 100644 --- a/panda/src/downloader/httpClient.cxx +++ b/panda/src/downloader/httpClient.cxx @@ -24,6 +24,8 @@ #ifdef HAVE_OPENSSL +#include "openSSLWrapper.h" + PT(HTTPClient) HTTPClient::_global_ptr; /** @@ -68,6 +70,68 @@ tokenize(const string &str, vector_string &words, const string &delimiters) { words.push_back(string()); } +#ifndef NDEBUG +/** + * This method is attached as a callback for SSL messages only when debug + * output is enabled. + */ +static void +ssl_msg_callback(int write_p, int version, int content_type, + const void *, size_t len, SSL *, void *) { + ostringstream describe; + if (write_p) { + describe << "sent "; + } else { + describe << "received "; + } + switch (version) { + case SSL2_VERSION: + describe << "SSL 2.0 "; + break; + + case SSL3_VERSION: + describe << "SSL 3.0 "; + break; + + case TLS1_VERSION: + describe << "TLS 1.0 "; + break; + + default: + describe << "unknown protocol "; + } + + describe << "message: "; + + if (version != SSL2_VERSION) { + switch (content_type) { + case 20: + describe << "change cipher spec, "; + break; + + case 21: + describe << "alert, "; + break; + + case 22: + describe << "handshake, "; + break; + + case 23: + describe << "application data, "; + break; + + default: + describe << "unknown content type, "; + } + } + + describe << len << " bytes.\n"; + + downloader_cat.debug() << describe.str(); +} +#endif // !defined(NDEBUG) + /** * */ @@ -1564,68 +1628,6 @@ split_whitespace(string &a, string &b, const string &c) { b = c.substr(p); } -#ifndef NDEBUG -/** - * This method is attached as a callback for SSL messages only when debug - * output is enabled. - */ -void HTTPClient:: -ssl_msg_callback(int write_p, int version, int content_type, - const void *, size_t len, SSL *, void *) { - ostringstream describe; - if (write_p) { - describe << "sent "; - } else { - describe << "received "; - } - switch (version) { - case SSL2_VERSION: - describe << "SSL 2.0 "; - break; - - case SSL3_VERSION: - describe << "SSL 3.0 "; - break; - - case TLS1_VERSION: - describe << "TLS 1.0 "; - break; - - default: - describe << "unknown protocol "; - } - - describe << "message: "; - - if (version != SSL2_VERSION) { - switch (content_type) { - case 20: - describe << "change cipher spec, "; - break; - - case 21: - describe << "alert, "; - break; - - case 22: - describe << "handshake, "; - break; - - case 23: - describe << "application data, "; - break; - - default: - describe << "unknown content type, "; - } - } - - describe << len << " bytes.\n"; - - downloader_cat.debug() << describe.str(); -} -#endif // !defined(NDEBUG) - /** * */ diff --git a/panda/src/downloader/httpClient.h b/panda/src/downloader/httpClient.h index d901066357..1efab58460 100644 --- a/panda/src/downloader/httpClient.h +++ b/panda/src/downloader/httpClient.h @@ -32,7 +32,11 @@ #include "pmap.h" #include "pset.h" #include "referenceCount.h" -#include "openSSLWrapper.h" + +typedef struct ssl_ctx_st SSL_CTX; +typedef struct x509_st X509; +typedef struct X509_name_st X509_NAME; +typedef struct evp_pkey_st EVP_PKEY; class Filename; class HTTPChannel; @@ -155,12 +159,6 @@ private: static void split_whitespace(string &a, string &b, const string &c); -#ifndef NDEBUG - static void ssl_msg_callback(int write_p, int version, int content_type, - const void *buf, size_t len, SSL *ssl, - void *arg); -#endif - typedef pvector Proxies; typedef pmap ProxiesByScheme; ProxiesByScheme _proxies_by_scheme; diff --git a/panda/src/express/multifile.cxx b/panda/src/express/multifile.cxx index 2f7cda439b..0d98849efe 100644 --- a/panda/src/express/multifile.cxx +++ b/panda/src/express/multifile.cxx @@ -26,6 +26,8 @@ #include #include +#include "openSSLWrapper.h" + // This sequence of bytes begins each Multifile to identify it as a Multifile. const char Multifile::_header[] = "pmf\0\n\r"; const size_t Multifile::_header_size = 6; @@ -768,43 +770,6 @@ add_signature(const Filename &composite, const string &password) { } #endif // HAVE_OPENSSL -#ifdef HAVE_OPENSSL -/** - * Adds a new signature to the Multifile. This signature associates the - * indicated certificate with the current contents of the Multifile. When the - * Multifile is read later, the signature will still be present only if the - * Multifile is unchanged; any subsequent changes to the Multifile will - * automatically invalidate and remove the signature. - * - * If chain is non-NULL, it represents the certificate chain that validates - * the certificate. - * - * The specified private key must match the certificate, and the Multifile - * must be open in read-write mode. The private key is only used for - * generating the signature; it is not written to the Multifile and cannot be - * retrieved from the Multifile later. (However, the certificate *can* be - * retrieved from the Multifile later, to identify the entity that created the - * signature.) - * - * This implicitly causes a repack() operation if one is needed. Returns true - * on success, false on failure. - */ -bool Multifile:: -add_signature(X509 *certificate, STACK_OF(X509) *chain, EVP_PKEY *pkey) { - // Convert the certificate and chain into our own CertChain structure. - CertChain cert_chain; - cert_chain.push_back(CertRecord(certificate)); - if (chain != NULL) { - int num = sk_X509_num(chain); - for (int i = 0; i < num; ++i) { - cert_chain.push_back(CertRecord((X509 *)sk_X509_value(chain, i))); - } - } - - return add_signature(cert_chain, pkey); -} -#endif // HAVE_OPENSSL - #ifdef HAVE_OPENSSL /** * Adds a new signature to the Multifile. This signature associates the diff --git a/panda/src/express/multifile.h b/panda/src/express/multifile.h index 578ac70d6d..5c6ec16feb 100644 --- a/panda/src/express/multifile.h +++ b/panda/src/express/multifile.h @@ -24,7 +24,11 @@ #include "indirectLess.h" #include "referenceCount.h" #include "pvector.h" -#include "openSSLWrapper.h" + +#ifdef HAVE_OPENSSL +typedef struct x509_st X509; +typedef struct evp_pkey_st EVP_PKEY; +#endif /** * A file that contains a set of files. @@ -148,7 +152,6 @@ public: }; typedef pvector CertChain; - bool add_signature(X509 *certificate, STACK_OF(X509) *chain, EVP_PKEY *pkey); bool add_signature(const CertChain &chain, EVP_PKEY *pkey); const CertChain &get_signature(int n) const; From 4cc2009a940781837dc1b00447a6accfae6964d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E7=BE=A4?= <517067180@qq.com> Date: Sat, 18 Feb 2017 16:24:58 +0800 Subject: [PATCH 23/29] Correct several spelling mistakes in comments --- samples/chessboard/main.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/samples/chessboard/main.py b/samples/chessboard/main.py index 7da1d97a14..5c8b68302d 100755 --- a/samples/chessboard/main.py +++ b/samples/chessboard/main.py @@ -20,7 +20,7 @@ from direct.showbase.DirectObject import DirectObject from direct.task.Task import Task import sys -# First we define some contants for the colors +# First we define some constants for the colors BLACK = (0, 0, 0, 1) WHITE = (1, 1, 1, 1) HIGHLIGHT = (0, 1, 1, 1) @@ -33,7 +33,7 @@ PIECEBLACK = (.15, .15, .15, 1) # This is how we know where to position an object in 3D space based on a 2D mouse # position. It also assumes that we are dragging in the XY plane. # -# This is derived from the mathmatical of a plane, solved for a given point +# This is derived from the mathematical of a plane, solved for a given point def PointAtZ(z, point, vec): return point + vec * ((z - point.getZ()) / vec.getZ()) @@ -41,7 +41,7 @@ def PointAtZ(z, point, vec): def SquarePos(i): return LPoint3((i % 8) - 3.5, int(i // 8) - 3.5, 0) -# Helper function for determining wheter a square should be white or black +# Helper function for determining whether a square should be white or black # The modulo operations (%) generate the every-other pattern of a chess-board def SquareColor(i): if (i + ((i // 8) % 2)) % 2: @@ -84,7 +84,7 @@ class ChessboardDemo(ShowBase): # relative to it self.pickerNP = camera.attachNewNode(self.pickerNode) # Everything to be picked will use bit 1. This way if we were doing other - # collision we could seperate it + # collision we could separate it self.pickerNode.setFromCollideMask(BitMask32.bit(1)) self.pickerRay = CollisionRay() # Make our ray # Add it to the collision node @@ -96,7 +96,7 @@ class ChessboardDemo(ShowBase): # Now we create the chess board and its pieces # We will attach all of the squares to their own root. This way we can do the - # collision pass just on the sqaures and save the time of checking the rest + # collision pass just on the squares and save the time of checking the rest # of the scene self.squareRoot = render.attachNewNode("squareRoot") @@ -240,7 +240,7 @@ class ChessboardDemo(ShowBase): render.setLight(render.attachNewNode(ambientLight)) -# Class for a piece. This just handels loading the model and setting initial +# Class for a piece. This just handles loading the model and setting initial # position and color class Piece(object): def __init__(self, square, color): From aa00138b34c8ce350e7754a8bab9028119bb02c8 Mon Sep 17 00:00:00 2001 From: Jose Luis Cercos Pita Date: Sun, 19 Feb 2017 20:13:03 +0100 Subject: [PATCH 24/29] Support core-only OpenGL contexts in the default build. This is a squashed commit of the following, as well as my own (rdb's) revisions: commit 80662759a18607743316f75ee6aa4a63c3f8d8e6 Author: Jose Luis Cercos Pita Date: Thu Dec 1 15:07:29 2016 +0100 Removed some useless fixed pipeline checks commit 563b5dbe93b451006ddbf3797aabdda7482ef3de Author: Jose Luis Cercos Pita Date: Thu Dec 1 14:19:21 2016 +0100 Improved the LUMINANCE check system commit 596036a8bb59d627f703bccfdc399dc31e1723a9 Author: Jose Luis Cercos Pita Date: Thu Dec 1 13:30:45 2016 +0100 Removed some useless fixed pipeline checks commit 0f7fa7cd33860c3cde1b4594731271170301b42d Author: Jose Luis Cercos Pita Date: Thu Dec 1 13:26:07 2016 +0100 Don't try to check if fixed pipeline is available before the context has been generated commit 56ed18e29dcb0a7cb0feccd0d50038416637427f Author: Jose Luis Cercos Pita Date: Thu Dec 1 13:14:49 2016 +0100 Assuming the fixed pipeline is available in GL 3.1 contexts commit 73075ead73be21c8ce9a468ed92eb2c8c7d548c4 Author: Jose Luis Cercos Pita Date: Fri Nov 4 12:59:45 2016 +0100 Fixed errors while quering for GL_TEXTURE_LUMINANCE_SIZE and GL_TEXTURE_INTENSITY_SIZE in GL >= 4.0 core profile contexts commit 3f799ed20be22f6f82de13445c5f9515a424ef9f Author: Jose Luis Cercos Pita Date: Fri Dec 16 10:01:03 2016 +0100 Added fixed functions pipeline support check at runtime Closes: 128 --- panda/src/display/graphicsStateGuardian.I | 8 + panda/src/display/graphicsStateGuardian.cxx | 3 + panda/src/display/graphicsStateGuardian.h | 3 + panda/src/glstuff/glCgShaderContext_src.cxx | 19 +- panda/src/glstuff/glGraphicsBuffer_src.cxx | 6 +- .../src/glstuff/glGraphicsStateGuardian_src.I | 29 +- .../glstuff/glGraphicsStateGuardian_src.cxx | 543 ++++++++++-------- .../src/glstuff/glGraphicsStateGuardian_src.h | 6 + 8 files changed, 383 insertions(+), 234 deletions(-) diff --git a/panda/src/display/graphicsStateGuardian.I b/panda/src/display/graphicsStateGuardian.I index 15f95a19f4..94188b85be 100644 --- a/panda/src/display/graphicsStateGuardian.I +++ b/panda/src/display/graphicsStateGuardian.I @@ -538,6 +538,14 @@ get_supports_depth_stencil() const { return _supports_depth_stencil; } +/** + * Returns true if this particular GSG supports luminance textures. + */ +INLINE bool GraphicsStateGuardian:: +get_supports_luminance_texture() const { + return _supports_luminance_texture; +} + /** * Returns true if this particular GSG supports the filter mode FT_shadow for * depth textures. diff --git a/panda/src/display/graphicsStateGuardian.cxx b/panda/src/display/graphicsStateGuardian.cxx index 7f87e87d8e..5b46251ba8 100644 --- a/panda/src/display/graphicsStateGuardian.cxx +++ b/panda/src/display/graphicsStateGuardian.cxx @@ -253,6 +253,9 @@ GraphicsStateGuardian(CoordinateSystem internal_coordinate_system, _supports_geometry_instancing = false; _supports_indirect_draw = false; + // We are safe assuming it has luminance support + _supports_luminance_texture = true; + // Assume a maximum of 1 render target in absence of MRT. _max_color_targets = 1; _supports_dual_source_blending = false; diff --git a/panda/src/display/graphicsStateGuardian.h b/panda/src/display/graphicsStateGuardian.h index 81643a1f11..a5dbce4a11 100644 --- a/panda/src/display/graphicsStateGuardian.h +++ b/panda/src/display/graphicsStateGuardian.h @@ -154,6 +154,7 @@ PUBLISHED: INLINE bool get_supports_generate_mipmap() const; INLINE bool get_supports_depth_texture() const; INLINE bool get_supports_depth_stencil() const; + INLINE bool get_supports_luminance_texture() const; INLINE bool get_supports_shadow_filter() const; INLINE bool get_supports_sampler_objects() const; INLINE bool get_supports_basic_shaders() const; @@ -203,6 +204,7 @@ PUBLISHED: MAKE_PROPERTY(supports_generate_mipmap, get_supports_generate_mipmap); MAKE_PROPERTY(supports_depth_texture, get_supports_depth_texture); MAKE_PROPERTY(supports_depth_stencil, get_supports_depth_stencil); + MAKE_PROPERTY(supports_luminance_texture, get_supports_luminance_texture); MAKE_PROPERTY(supports_shadow_filter, get_supports_shadow_filter); MAKE_PROPERTY(supports_sampler_objects, get_supports_sampler_objects); MAKE_PROPERTY(supports_basic_shaders, get_supports_basic_shaders); @@ -597,6 +599,7 @@ protected: bool _supports_generate_mipmap; bool _supports_depth_texture; bool _supports_depth_stencil; + bool _supports_luminance_texture; bool _supports_shadow_filter; bool _supports_sampler_objects; bool _supports_basic_shaders; diff --git a/panda/src/glstuff/glCgShaderContext_src.cxx b/panda/src/glstuff/glCgShaderContext_src.cxx index c857948b97..8497c7de71 100644 --- a/panda/src/glstuff/glCgShaderContext_src.cxx +++ b/panda/src/glstuff/glCgShaderContext_src.cxx @@ -145,7 +145,7 @@ CLP(CgShaderContext)(CLP(GraphicsStateGuardian) *glgsg, Shader *s) : ShaderConte if (cgGetParameterBaseResource(p) == CG_ATTR0) { // The Cg toolkit claims that it is bound to a generic vertex attribute. - if (_glsl_program != 0) { + if (_glgsg->has_fixed_function_pipeline() && _glsl_program != 0) { // This is where the Cg glslv compiler lies, making the stupid // assumption that we're using an NVIDIA card where generic attributes // are aliased with conventional vertex attributes. Instead, it @@ -246,7 +246,7 @@ CLP(CgShaderContext)(CLP(GraphicsStateGuardian) *glgsg, Shader *s) : ShaderConte // A conventional texture coordinate set. loc = CA_texcoord + cgGetParameterResourceIndex(p); - } else { + } else if (_glgsg->has_fixed_function_pipeline()) { // Some other conventional vertex attribute. switch (res) { case CG_POSITION0: @@ -276,6 +276,14 @@ CLP(CgShaderContext)(CLP(GraphicsStateGuardian) *glgsg, Shader *s) : ShaderConte GLCAT.error(false) << ".\n"; loc = CA_unknown; } + } else { + GLCAT.error() + << "Cg varying " << cgGetParameterName(p); + if (cgGetParameterSemantic(p)) { + GLCAT.error(false) << " : " << cgGetParameterSemantic(p); + } + GLCAT.error(false) << " is bound to a conventional vertex attribute, " + "but the compatibility profile is not enabled.\n"; } #ifndef NDEBUG @@ -916,8 +924,7 @@ update_shader_vertex_arrays(ShaderContext *prev, bool force) { } else { // There is no vertex column with this name; disable the attribute // array. -#ifdef SUPPORT_FIXED_FUNCTION - if (p == 0) { + if (_glgsg->has_fixed_function_pipeline() && p == 0) { // NOTE: if we disable attribute 0 in compatibility profile, the // object will disappear. In GLSL we fix this by forcing the vertex // column to be at 0, but we don't have control over that with Cg. @@ -930,9 +937,7 @@ update_shader_vertex_arrays(ShaderContext *prev, bool force) { _glgsg->_glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0); } - } else -#endif // SUPPORT_FIXED_FUNCTION - if (p >= 0) { + } else if (p >= 0) { _glgsg->disable_vertex_attrib_array(p); if (p == _color_attrib_index) { diff --git a/panda/src/glstuff/glGraphicsBuffer_src.cxx b/panda/src/glstuff/glGraphicsBuffer_src.cxx index 3a73d175c4..706bb03049 100644 --- a/panda/src/glstuff/glGraphicsBuffer_src.cxx +++ b/panda/src/glstuff/glGraphicsBuffer_src.cxx @@ -1165,8 +1165,10 @@ attach_tex(int layer, int view, Texture *attach, GLenum attachpoint) { glgsg->apply_texture(gtc); #if !defined(OPENGLES) && defined(SUPPORT_FIXED_FUNCTION) - GLclampf priority = 1.0f; - glPrioritizeTextures(1, >c->_index, &priority); + if (glgsg->has_fixed_function_pipeline()) { + GLclampf priority = 1.0f; + glPrioritizeTextures(1, >c->_index, &priority); + } #endif #ifndef OPENGLES diff --git a/panda/src/glstuff/glGraphicsStateGuardian_src.I b/panda/src/glstuff/glGraphicsStateGuardian_src.I index 221aff21b9..5ce7902917 100644 --- a/panda/src/glstuff/glGraphicsStateGuardian_src.I +++ b/panda/src/glstuff/glGraphicsStateGuardian_src.I @@ -130,6 +130,33 @@ get_gl_version_minor() const { return _gl_version_minor; } +/** + * Returns whether a core profile or a compatibility mode is considered. + */ +/*INLINE bool CLP(GraphicsStateGuardian):: +has_core_profile() const { + return _core_profile; +}*/ + +/** + * Returns whether the fixed function pipeline is supported. + */ +INLINE bool CLP(GraphicsStateGuardian):: +has_fixed_function_pipeline() const { +#ifndef SUPPORT_FIXED_FUNCTION + return false; +#elif defined(OPENGLES_1) + return true; +#elif defined(OPENGLES) + return false; +#else + // Otherwise, we can just check whether we are using a core profile or a + // compatibility mode. The variable _core_profile is already taking into + // account if a GL < 3.2 is considered (becoming false) + return !_core_profile; +#endif +} + /** * Calls glFinish() if the config variable gl-finish is set True. */ @@ -363,7 +390,7 @@ enable_line_smooth(bool val) { INLINE void CLP(GraphicsStateGuardian):: enable_point_smooth(bool val) { #ifdef SUPPORT_FIXED_FUNCTION - if (_point_smooth_enabled != val) { + if (has_fixed_function_pipeline() && _point_smooth_enabled != val) { _state_mask.clear_bit(TransparencyAttrib::get_class_slot()); _point_smooth_enabled = val; if (val) { diff --git a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx index 98c21610c5..c83c9e52c0 100644 --- a/panda/src/glstuff/glGraphicsStateGuardian_src.cxx +++ b/panda/src/glstuff/glGraphicsStateGuardian_src.cxx @@ -369,6 +369,12 @@ CLP(GraphicsStateGuardian)(GraphicsEngine *engine, GraphicsPipe *pipe) : _gl_shadlang_ver_major = 0; _gl_shadlang_ver_minor = 0; + // Let's say we have a core profile, to be checked later (Otherwise, if we are + // wrong the user may ask for some non-available functions) +#ifndef OPENGLES + _core_profile = true; +#endif + // Hack. Turn on the flag that we turned off at a higher level, since we // know this works properly in OpenGL, and we want the performance benefit // it gives us. @@ -547,6 +553,7 @@ reset() { GLCAT.debug() << "Using compatibility profile\n"; } } + _core_profile = core_profile; #elif defined(OPENGLES_1) static const bool core_profile = false; #else @@ -723,7 +730,7 @@ reset() { #endif #if !defined(OPENGLES) && defined(SUPPORT_FIXED_FUNCTION) - if (is_at_least_gl_version(1, 4)) { + if (has_fixed_function_pipeline() && is_at_least_gl_version(1, 4)) { _glSecondaryColorPointer = (PFNGLSECONDARYCOLORPOINTERPROC) get_extension_func("glSecondaryColorPointer"); @@ -1105,12 +1112,13 @@ reset() { _supports_rescale_normal = true; #else _supports_rescale_normal = - !core_profile && gl_support_rescale_normal && + has_fixed_function_pipeline() && gl_support_rescale_normal && (is_at_least_gl_version(1, 2) || has_extension("GL_EXT_rescale_normal")); #endif #ifndef OPENGLES - _use_separate_specular_color = gl_separate_specular_color && + _use_separate_specular_color = + has_fixed_function_pipeline() && gl_separate_specular_color && (is_at_least_gl_version(1, 2) || has_extension("GL_EXT_separate_specular_color")); #endif #endif // SUPPORT_FIXED_FUNCTION @@ -1162,8 +1170,10 @@ reset() { get_extension_func("glActiveTexture"); #ifdef SUPPORT_FIXED_FUNCTION - _glClientActiveTexture = (PFNGLACTIVETEXTUREPROC) - get_extension_func("glClientActiveTexture"); + if (has_fixed_function_pipeline()) { + _glClientActiveTexture = (PFNGLACTIVETEXTUREPROC) + get_extension_func("glClientActiveTexture"); + } #endif #ifdef SUPPORT_IMMEDIATE_MODE @@ -1192,8 +1202,10 @@ reset() { get_extension_func("glActiveTextureARB"); #ifdef SUPPORT_FIXED_FUNCTION - _glClientActiveTexture = (PFNGLACTIVETEXTUREPROC) - get_extension_func("glClientActiveTextureARB"); + if (has_fixed_function_pipeline()) { + _glClientActiveTexture = (PFNGLACTIVETEXTUREPROC) + get_extension_func("glClientActiveTextureARB"); + } #endif #ifdef SUPPORT_IMMEDIATE_MODE @@ -1221,7 +1233,7 @@ reset() { if (supports_multitexture) { if (_glActiveTexture == NULL #ifdef SUPPORT_FIXED_FUNCTION - || _glClientActiveTexture == NULL + || (has_fixed_function_pipeline() && _glClientActiveTexture == NULL) #endif #ifdef SUPPORT_IMMEDIATE_MODE || GLf(_glMultiTexCoord1) == NULL || GLf(_glMultiTexCoord2) == NULL @@ -1240,7 +1252,7 @@ reset() { } #ifdef SUPPORT_FIXED_FUNCTION - if (!supports_multitexture || core_profile) { + if (!supports_multitexture || !has_fixed_function_pipeline()) { _glClientActiveTexture = null_glActiveTexture; } #endif @@ -1251,6 +1263,7 @@ reset() { _supports_depth_stencil = has_extension("GL_OES_packed_depth_stencil"); _supports_depth24 = has_extension("GL_OES_depth24"); _supports_depth32 = has_extension("GL_OES_depth32"); + _supports_luminance_texture = true; #elif defined(OPENGLES) if (is_at_least_gles_version(3, 0)) { @@ -1271,12 +1284,16 @@ reset() { _supports_depth24 = has_extension("GL_OES_depth24"); _supports_depth32 = has_extension("GL_OES_depth32"); } + _supports_luminance_texture = true; #else _supports_depth_texture = (is_at_least_gl_version(1, 4) || has_extension("GL_ARB_depth_texture")); _supports_depth_stencil = (is_at_least_gl_version(3, 0) || has_extension("GL_ARB_framebuffer_object") || has_extension("GL_EXT_packed_depth_stencil")); + + // OpenGL 3 deprecates luminance, luminance-alpha and alpha textures. + _supports_luminance_texture = !core_profile; #endif #ifdef OPENGLES_2 @@ -1300,12 +1317,11 @@ reset() { _supports_shadow_filter = false; }*/ -#ifndef SUPPORT_FIXED_FUNCTION _supports_texture_combine = false; _supports_texture_saved_result = false; _supports_texture_dot3 = false; -#else - if (!core_profile) { +#ifdef SUPPORT_FIXED_FUNCTION + if (has_fixed_function_pipeline()) { _supports_texture_combine = is_at_least_gl_version(1, 3) || is_at_least_gles_version(1, 1) || @@ -1786,12 +1802,8 @@ reset() { // We need to have a default shader to apply in case something didn't happen // to have a shader applied, or if it failed to compile. This default // shader just outputs a red color, indicating that something went wrong. -#ifndef SUPPORT_FIXED_FUNCTION - if (_default_shader == NULL) { - _default_shader = Shader::make(Shader::SL_GLSL, default_vshader, default_fshader); - } -#elif !defined(OPENGLES) - if (_default_shader == NULL && core_profile) { +#ifndef OPENGLES_1 + if (_default_shader == NULL && !has_fixed_function_pipeline()) { _default_shader = Shader::make(Shader::SL_GLSL, default_vshader, default_fshader); } #endif @@ -2943,7 +2955,7 @@ reset() { glDisable(GL_LINE_SMOOTH); #endif #ifdef SUPPORT_FIXED_FUNCTION - if (!core_profile) { + if (has_fixed_function_pipeline()) { glDisable(GL_POINT_SMOOTH); } #endif @@ -2995,7 +3007,7 @@ reset() { // Count the max number of lights _max_lights = 0; #ifdef SUPPORT_FIXED_FUNCTION - if (!core_profile) { + if (has_fixed_function_pipeline()) { GLint max_lights = 0; glGetIntegerv(GL_MAX_LIGHTS, &max_lights); _max_lights = max_lights; @@ -3010,7 +3022,7 @@ reset() { // Count the max number of clipping planes _max_clip_planes = 0; #ifdef SUPPORT_FIXED_FUNCTION - if (!core_profile) { + if (has_fixed_function_pipeline()) { GLint max_clip_planes = 0; glGetIntegerv(GL_MAX_CLIP_PLANES, &max_clip_planes); _max_clip_planes = max_clip_planes; @@ -3024,7 +3036,7 @@ reset() { _max_texture_stages = 1; #ifdef SUPPORT_FIXED_FUNCTION - if (supports_multitexture && !core_profile) { + if (supports_multitexture && has_fixed_function_pipeline()) { GLint max_texture_stages = 0; glGetIntegerv(GL_MAX_TEXTURE_UNITS, &max_texture_stages); _max_texture_stages = max_texture_stages; @@ -3057,7 +3069,7 @@ reset() { report_my_gl_errors(); #ifdef SUPPORT_FIXED_FUNCTION - if (!core_profile) { + if (has_fixed_function_pipeline()) { if (gl_cheap_textures) { GLCAT.info() << "Setting glHint() for fastest textures.\n"; @@ -3070,7 +3082,7 @@ reset() { #endif #ifdef SUPPORT_FIXED_FUNCTION - if (!core_profile) { + if (has_fixed_function_pipeline()) { GLint num_red_bits = 0; glGetIntegerv(GL_RED_BITS, &num_red_bits); if (num_red_bits < 8) { @@ -3538,7 +3550,9 @@ prepare_display_region(DisplayRegionPipelineReader *dr) { void CLP(GraphicsStateGuardian):: clear_before_callback() { #ifdef SUPPORT_FIXED_FUNCTION - disable_standard_vertex_arrays(); + if (has_fixed_function_pipeline()) { + disable_standard_vertex_arrays(); + } #endif #ifndef OPENGLES_1 if (_vertex_array_shader_context != 0) { @@ -3620,16 +3634,18 @@ calc_projection_mat(const Lens *lens) { bool CLP(GraphicsStateGuardian):: prepare_lens() { #ifdef SUPPORT_FIXED_FUNCTION - if (GLCAT.is_spam()) { - GLCAT.spam() - << "glMatrixMode(GL_PROJECTION): " << _projection_mat->get_mat() << endl; + if (has_fixed_function_pipeline()) { + if (GLCAT.is_spam()) { + GLCAT.spam() + << "glMatrixMode(GL_PROJECTION): " << _projection_mat->get_mat() << endl; + } + + glMatrixMode(GL_PROJECTION); + call_glLoadMatrix(_projection_mat->get_mat()); + report_my_gl_errors(); + + do_point_size(); } - - glMatrixMode(GL_PROJECTION); - call_glLoadMatrix(_projection_mat->get_mat()); - report_my_gl_errors(); - - do_point_size(); #endif #ifndef OPENGLES_1 @@ -3762,7 +3778,7 @@ end_frame(Thread *current_thread) { // will just mean that we'll count everything as resident until the user // connects PStats, at which point it will then correct the assessment. No // harm done. - if (PStatClient::is_connected()) { + if (has_fixed_function_pipeline() && PStatClient::is_connected()) { check_nonresident_texture(_prepared_objects->_texture_residency.get_inactive_resident()); check_nonresident_texture(_prepared_objects->_texture_residency.get_active_resident()); @@ -3813,7 +3829,7 @@ end_frame(Thread *current_thread) { // Now is a good time to delete any pending display lists. #ifndef OPENGLES #ifdef SUPPORT_FIXED_FUNCTION - if (display_lists) { + if (has_fixed_function_pipeline() && display_lists) { LightMutexHolder holder(_lock); if (!_deleted_display_lists.empty()) { DeletedNames::iterator ddli; @@ -3922,11 +3938,13 @@ begin_draw_primitives(const GeomPipelineReader *geom_reader, } #endif // NDEBUG -#ifndef SUPPORT_FIXED_FUNCTION - // We can't draw without a shader bound in OpenGL ES 2. This shouldn't - // happen anyway unless the default shader failed to compile somehow. - if (_current_shader_context == NULL) { - return false; +#ifndef OPENGLES_1 + if (!has_fixed_function_pipeline()) { + // We can't draw without a shader bound in OpenGL ES 2. This shouldn't + // happen anyway unless the default shader failed to compile somehow. + if (_current_shader_context == NULL) { + return false; + } } #endif @@ -3967,7 +3985,7 @@ begin_draw_primitives(const GeomPipelineReader *geom_reader, } #ifdef SUPPORT_FIXED_FUNCTION - if (_data_reader->is_vertex_transformed()) { + if (has_fixed_function_pipeline() && _data_reader->is_vertex_transformed()) { // If the vertex data claims to be already transformed into clip // coordinates, wipe out the current projection and modelview matrix (so // we don't attempt to transform it again). @@ -3981,7 +3999,8 @@ begin_draw_primitives(const GeomPipelineReader *geom_reader, #endif #if !defined(OPENGLES) && defined(SUPPORT_FIXED_FUNCTION) // Display lists not supported by OpenGL ES. - if (/*geom_reader->get_usage_hint() == Geom::UH_static &&*/ + if (has_fixed_function_pipeline() && + /*geom_reader->get_usage_hint() == Geom::UH_static &&*/ _data_reader->get_usage_hint() == Geom::UH_static && display_lists) { // If the geom claims to be totally static, try to build it into a display @@ -4072,33 +4091,35 @@ begin_draw_primitives(const GeomPipelineReader *geom_reader, _vertex_array_shader_context->disable_shader_vertex_arrays(); } #ifdef SUPPORT_FIXED_FUNCTION - if (!update_standard_vertex_arrays(force)) { + if (has_fixed_function_pipeline() && !update_standard_vertex_arrays(force)) { return false; } #endif } else { #ifdef SUPPORT_FIXED_FUNCTION - // Shader. - if (_vertex_array_shader_context == 0 || - _vertex_array_shader_context->uses_standard_vertex_arrays()) { - // Previous shader used standard arrays. - if (_current_shader_context->uses_standard_vertex_arrays()) { - // So does the current, so update them. - if (!update_standard_vertex_arrays(force)) { - return false; + if (has_fixed_function_pipeline()) { + // Shader. + if (_vertex_array_shader_context == 0 || + _vertex_array_shader_context->uses_standard_vertex_arrays()) { + // Previous shader used standard arrays. + if (_current_shader_context->uses_standard_vertex_arrays()) { + // So does the current, so update them. + if (!update_standard_vertex_arrays(force)) { + return false; + } + } else { + // The current shader does not, so disable them entirely. + disable_standard_vertex_arrays(); } - } else { - // The current shader does not, so disable them entirely. - disable_standard_vertex_arrays(); } - } #ifdef HAVE_CG - else if (_vertex_array_shader_context->is_of_type(CLP(CgShaderContext)::get_class_type())) { - // The previous shader was a Cg shader, which can leave a messy - // situation. - _vertex_array_shader_context->disable_shader_vertex_arrays(); - } + else if (_vertex_array_shader_context->is_of_type(CLP(CgShaderContext)::get_class_type())) { + // The previous shader was a Cg shader, which can leave a messy + // situation. + _vertex_array_shader_context->disable_shader_vertex_arrays(); + } #endif + } #endif // SUPPORT_FIXED_FUNCTION // Now update the vertex arrays for the current shader. if (!_current_shader_context-> @@ -4334,7 +4355,9 @@ unbind_buffers() { #endif #ifdef SUPPORT_FIXED_FUNCTION - disable_standard_vertex_arrays(); + if (has_fixed_function_pipeline()) { + disable_standard_vertex_arrays(); + } #endif } @@ -5040,7 +5063,7 @@ draw_points(const GeomPrimitivePipelineReader *reader, bool force) { void CLP(GraphicsStateGuardian):: end_draw_primitives() { #if !defined(OPENGLES) && defined(SUPPORT_FIXED_FUNCTION) // Display lists not supported by OpenGL ES. - if (_geom_display_list != 0) { + if (has_fixed_function_pipeline() && _geom_display_list != 0) { // If we were building a display list, close it now. glEndList(); _load_display_list_pcollector.stop(); @@ -5054,12 +5077,12 @@ end_draw_primitives() { #endif #ifdef SUPPORT_FIXED_FUNCTION - if (_transform_stale) { + if (has_fixed_function_pipeline() && _transform_stale) { glMatrixMode(GL_MODELVIEW); call_glLoadMatrix(_internal_transform->get_mat()); } - if (_data_reader->is_vertex_transformed()) { + if (has_fixed_function_pipeline() && _data_reader->is_vertex_transformed()) { // Restore the matrices that we pushed above. glMatrixMode(GL_PROJECTION); glPopMatrix(); @@ -5436,7 +5459,9 @@ prepare_geom(Geom *geom) { void CLP(GraphicsStateGuardian):: release_geom(GeomContext *gc) { CLP(GeomContext) *ggc = DCAST(CLP(GeomContext), gc); - ggc->release_display_lists(); + if (has_fixed_function_pipeline()) { + ggc->release_display_lists(); + } report_my_gl_errors(); delete ggc; @@ -6594,17 +6619,19 @@ apply_fog(Fog *fog) { void CLP(GraphicsStateGuardian):: do_issue_transform() { #ifdef SUPPORT_FIXED_FUNCTION - // OpenGL ES 2 does not support glLoadMatrix. + if (has_fixed_function_pipeline()) { + // OpenGL ES 2 does not support glLoadMatrix. - const TransformState *transform = _internal_transform; - if (GLCAT.is_spam()) { - GLCAT.spam() - << "glLoadMatrix(GL_MODELVIEW): " << transform->get_mat() << endl; + const TransformState *transform = _internal_transform; + if (GLCAT.is_spam()) { + GLCAT.spam() + << "glLoadMatrix(GL_MODELVIEW): " << transform->get_mat() << endl; + } + + DO_PSTATS_STUFF(_transform_state_pcollector.add_level(1)); + glMatrixMode(GL_MODELVIEW); + call_glLoadMatrix(transform->get_mat()); } - - DO_PSTATS_STUFF(_transform_state_pcollector.add_level(1)); - glMatrixMode(GL_MODELVIEW); - call_glLoadMatrix(transform->get_mat()); #endif _transform_stale = false; @@ -6643,13 +6670,11 @@ do_issue_shader() { ShaderContext *context = 0; Shader *shader = (Shader *)_target_shader->get_shader(); -#ifndef SUPPORT_FIXED_FUNCTION // If we don't have a shader, apply the default shader. - if (!shader) { + if (!has_fixed_function_pipeline() && !shader) { shader = _default_shader; nassertv(shader != NULL); } -#endif if (shader) { if (_current_shader != shader) { @@ -6659,9 +6684,9 @@ do_issue_shader() { } } -#ifndef SUPPORT_FIXED_FUNCTION // If it failed, try applying the default shader. - if (shader != _default_shader && (context == 0 || !context->valid())) { + if (_default_shader != nullptr && shader != _default_shader && + (context == 0 || !context->valid())) { shader = _default_shader; nassertv(shader != NULL); if (_current_shader != shader) { @@ -6670,7 +6695,6 @@ do_issue_shader() { context = _current_shader_context; } } -#endif if (context == 0 || !context->valid()) { if (_current_shader_context != 0) { @@ -6762,7 +6786,9 @@ do_issue_render_mode() { report_my_gl_errors(); #ifdef SUPPORT_FIXED_FUNCTION - do_point_size(); + if (has_fixed_function_pipeline()) { + do_point_size(); + } #endif } @@ -7372,6 +7398,8 @@ do_issue_blending() { */ void CLP(GraphicsStateGuardian):: bind_light(PointLight *light_obj, const NodePath &light, int light_id) { + nassertv(has_fixed_function_pipeline()); + // static PStatCollector // _draw_set_state_light_bind_point_pcollector("Draw:Set // State:Light:Bind:Point"); PStatGPUTimer timer(this, @@ -7416,6 +7444,8 @@ bind_light(PointLight *light_obj, const NodePath &light, int light_id) { */ void CLP(GraphicsStateGuardian):: bind_light(DirectionalLight *light_obj, const NodePath &light, int light_id) { + nassertv(has_fixed_function_pipeline()); + // static PStatCollector // _draw_set_state_light_bind_directional_pcollector("Draw:Set // State:Light:Bind:Directional"); PStatGPUTimer timer(this, @@ -7467,6 +7497,8 @@ bind_light(DirectionalLight *light_obj, const NodePath &light, int light_id) { */ void CLP(GraphicsStateGuardian):: bind_light(Spotlight *light_obj, const NodePath &light, int light_id) { + nassertv(has_fixed_function_pipeline()); + // static PStatCollector // _draw_set_state_light_bind_spotlight_pcollector("Draw:Set // State:Light:Bind:Spotlight"); PStatGPUTimer timer(this, @@ -8701,10 +8733,10 @@ get_external_image_format(Texture *tex) const { #endif case Texture::F_alpha: -#if defined(SUPPORT_FIXED_FUNCTION) || defined(OPENGLES) +#ifdef OPENGLES return GL_ALPHA; #else - return GL_RED; + return _supports_luminance_texture ? GL_ALPHA : GL_RED; #endif #ifndef OPENGLES_1 @@ -8744,18 +8776,18 @@ get_external_image_format(Texture *tex) const { case Texture::F_luminance: case Texture::F_sluminance: -#if defined(SUPPORT_FIXED_FUNCTION) || defined(OPENGLES) +#ifdef OPENGLES return GL_LUMINANCE; #else - return GL_RED; + return _supports_luminance_texture ? GL_LUMINANCE : GL_RED; #endif case Texture::F_luminance_alphamask: case Texture::F_luminance_alpha: case Texture::F_sluminance_alpha: -#if defined(SUPPORT_FIXED_FUNCTION) || defined(OPENGLES) +#ifdef OPENGLES return GL_LUMINANCE_ALPHA; #else - return GL_RG; + return _supports_luminance_texture ? GL_LUMINANCE_ALPHA : GL_RG; #endif #ifndef OPENGLES_1 @@ -9402,42 +9434,76 @@ get_internal_image_format(Texture *tex, bool force_sized) const { #endif case Texture::F_alpha: -#if defined(SUPPORT_FIXED_FUNCTION) || defined(OPENGLES) +#ifdef OPENGLES return force_sized ? GL_ALPHA8 : GL_ALPHA; #else - return force_sized ? GL_R8 : GL_RED; + if (_supports_luminance_texture) { + return force_sized ? GL_ALPHA8 : GL_ALPHA; + } else { + return force_sized ? GL_R8 : GL_RED; + } #endif case Texture::F_luminance: -#if defined(SUPPORT_FIXED_FUNCTION) || defined(OPENGLES) -#ifndef OPENGLES - if (tex->get_component_type() == Texture::T_float) { - return GL_LUMINANCE16F_ARB; - } else if (tex->get_component_type() == Texture::T_short) { - return GL_LUMINANCE16_SNORM; - } else if (tex->get_component_type() == Texture::T_unsigned_short) { - return GL_LUMINANCE16; - } else -#endif // OPENGLES - { - return force_sized ? GL_LUMINANCE8 : GL_LUMINANCE; - } +#ifdef OPENGLES + return force_sized ? GL_LUMINANCE8 : GL_LUMINANCE; #else - return force_sized ? GL_R8 : GL_RED; + if (_supports_luminance_texture) { + switch (tex->get_component_type()) { + case Texture::T_float: + case Texture::T_half_float: + return GL_LUMINANCE16F_ARB; + case Texture::T_short: + return GL_LUMINANCE16_SNORM; + case Texture::T_unsigned_short: + return GL_LUMINANCE16; + default: + return force_sized ? GL_LUMINANCE8 : GL_LUMINANCE; + } + } else { + switch (tex->get_component_type()) { + case Texture::T_float: + case Texture::T_half_float: + return GL_R16F; + case Texture::T_short: + return GL_R16_SNORM; + case Texture::T_unsigned_short: + return GL_R16; + default: + return force_sized ? GL_R8 : GL_RED; + } + } #endif case Texture::F_luminance_alpha: case Texture::F_luminance_alphamask: -#if defined(SUPPORT_FIXED_FUNCTION) || defined(OPENGLES) -#ifndef OPENGLES - if (tex->get_component_type() == Texture::T_float || tex->get_component_type() == Texture::T_unsigned_short) { - return GL_LUMINANCE_ALPHA16F_ARB; - } else -#endif // OPENGLES - { - return force_sized ? GL_LUMINANCE8_ALPHA8 : GL_LUMINANCE_ALPHA; - } +#ifdef OPENGLES + return force_sized ? GL_LUMINANCE8_ALPHA8 : GL_LUMINANCE_ALPHA; #else - return force_sized ? GL_RG8 : GL_RG; + if (_supports_luminance_texture) { + switch (tex->get_component_type()) { + case Texture::T_float: + case Texture::T_half_float: + return GL_LUMINANCE_ALPHA16F_ARB; + case Texture::T_short: + return GL_LUMINANCE16_SNORM; + case Texture::T_unsigned_short: + return GL_LUMINANCE16_ALPHA16; + default: + return force_sized ? GL_LUMINANCE8_ALPHA8 : GL_LUMINANCE_ALPHA; + } + } else { + switch (tex->get_component_type()) { + case Texture::T_float: + case Texture::T_half_float: + return GL_RG16F; + case Texture::T_short: + return GL_RG16_SNORM; + case Texture::T_unsigned_short: + return GL_RG16; + default: + return force_sized ? GL_RG8 : GL_RG; + } + } #endif #ifndef OPENGLES_1 @@ -10019,6 +10085,8 @@ reissue_transforms() { */ void CLP(GraphicsStateGuardian):: enable_lighting(bool enable) { + nassertv(has_fixed_function_pipeline()); + // static PStatCollector // _draw_set_state_light_enable_lighting_pcollector("Draw:Set // State:Light:Enable lighting"); PStatGPUTimer timer(this, @@ -10040,6 +10108,8 @@ enable_lighting(bool enable) { */ void CLP(GraphicsStateGuardian):: set_ambient_light(const LColor &color) { + nassertv(has_fixed_function_pipeline()); + // static PStatCollector _draw_set_state_light_ambient_pcollector("Draw:Set // State:Light:Ambient"); PStatGPUTimer timer(this, // _draw_set_state_light_ambient_pcollector); @@ -10061,6 +10131,8 @@ set_ambient_light(const LColor &color) { */ void CLP(GraphicsStateGuardian):: enable_light(int light_id, bool enable) { + nassertv(has_fixed_function_pipeline()); + // static PStatCollector // _draw_set_state_light_enable_light_pcollector("Draw:Set // State:Light:Enable light"); PStatGPUTimer timer(this, @@ -10085,6 +10157,8 @@ enable_light(int light_id, bool enable) { */ void CLP(GraphicsStateGuardian):: begin_bind_lights() { + nassertv(has_fixed_function_pipeline()); + // static PStatCollector // _draw_set_state_light_begin_bind_pcollector("Draw:Set State:Light:Begin // bind"); PStatGPUTimer timer(this, @@ -10115,6 +10189,8 @@ begin_bind_lights() { */ void CLP(GraphicsStateGuardian):: end_bind_lights() { + nassertv(has_fixed_function_pipeline()); + // static PStatCollector _draw_set_state_light_end_bind_pcollector("Draw:Set // State:Light:End bind"); PStatGPUTimer timer(this, // _draw_set_state_light_end_bind_pcollector); @@ -10132,6 +10208,8 @@ end_bind_lights() { */ void CLP(GraphicsStateGuardian):: enable_clip_plane(int plane_id, bool enable) { + nassertv(has_fixed_function_pipeline()); + if (enable) { glEnable(get_clip_plane_id(plane_id)); } else { @@ -10151,6 +10229,8 @@ enable_clip_plane(int plane_id, bool enable) { */ void CLP(GraphicsStateGuardian):: begin_bind_clip_planes() { + nassertv(has_fixed_function_pipeline()); + // We need to temporarily load a new matrix so we can define the clip_plane // in a known coordinate system. We pick the transform of the root. // (Alternatively, we could leave the current transform where it is and @@ -10175,6 +10255,8 @@ begin_bind_clip_planes() { */ void CLP(GraphicsStateGuardian):: bind_clip_plane(const NodePath &plane, int plane_id) { + nassertv(has_fixed_function_pipeline()); + GLenum id = get_clip_plane_id(plane_id); CPT(TransformState) transform = plane.get_transform(_scene_setup->get_scene_root().get_parent()); @@ -10205,6 +10287,8 @@ bind_clip_plane(const NodePath &plane, int plane_id) { */ void CLP(GraphicsStateGuardian):: end_bind_clip_planes() { + nassertv(has_fixed_function_pipeline()); + glMatrixMode(GL_MODELVIEW); glPopMatrix(); } @@ -10259,12 +10343,10 @@ set_state_and_transform(const RenderState *target, _state_shader = _target_shader; _state_mask.clear_bit(TextureAttrib::get_class_slot()); } -#ifndef SUPPORT_FIXED_FUNCTION - else if (_current_shader == NULL) { // In the case of OpenGL ES 2.x, we need to glUseShader before we draw anything. + else if (!has_fixed_function_pipeline() && _current_shader == NULL) { // In the case of OpenGL ES 2.x, we need to glUseShader before we draw anything. do_issue_shader(); _state_mask.clear_bit(TextureAttrib::get_class_slot()); } -#endif // Update all of the state that is bound to the shader program. if (_current_shader_context != NULL) { @@ -10273,17 +10355,19 @@ set_state_and_transform(const RenderState *target, #endif #ifdef SUPPORT_FIXED_FUNCTION - int alpha_test_slot = AlphaTestAttrib::get_class_slot(); - if (_target_rs->get_attrib(alpha_test_slot) != _state_rs->get_attrib(alpha_test_slot) || - !_state_mask.get_bit(alpha_test_slot) + if (has_fixed_function_pipeline()) { + int alpha_test_slot = AlphaTestAttrib::get_class_slot(); + if (_target_rs->get_attrib(alpha_test_slot) != _state_rs->get_attrib(alpha_test_slot) || + !_state_mask.get_bit(alpha_test_slot) #ifndef OPENGLES_1 - || (_target_shader->get_flag(ShaderAttrib::F_subsume_alpha_test) != - _state_shader->get_flag(ShaderAttrib::F_subsume_alpha_test)) + || (_target_shader->get_flag(ShaderAttrib::F_subsume_alpha_test) != + _state_shader->get_flag(ShaderAttrib::F_subsume_alpha_test)) #endif - ) { - // PStatGPUTimer timer(this, _draw_set_state_alpha_test_pcollector); - do_issue_alpha_test(); - _state_mask.set_bit(alpha_test_slot); + ) { + // PStatGPUTimer timer(this, _draw_set_state_alpha_test_pcollector); + do_issue_alpha_test(); + _state_mask.set_bit(alpha_test_slot); + } } #endif @@ -10357,22 +10441,22 @@ set_state_and_transform(const RenderState *target, } #ifdef SUPPORT_FIXED_FUNCTION - int rescale_normal_slot = RescaleNormalAttrib::get_class_slot(); - if (_target_rs->get_attrib(rescale_normal_slot) != _state_rs->get_attrib(rescale_normal_slot) || - !_state_mask.get_bit(rescale_normal_slot)) { - // PStatGPUTimer timer(this, _draw_set_state_rescale_normal_pcollector); - do_issue_rescale_normal(); - _state_mask.set_bit(rescale_normal_slot); - } -#endif + if (has_fixed_function_pipeline()) { + int rescale_normal_slot = RescaleNormalAttrib::get_class_slot(); + if (_target_rs->get_attrib(rescale_normal_slot) != _state_rs->get_attrib(rescale_normal_slot) || + !_state_mask.get_bit(rescale_normal_slot)) { + // PStatGPUTimer timer(this, _draw_set_state_rescale_normal_pcollector); + do_issue_rescale_normal(); + _state_mask.set_bit(rescale_normal_slot); + } -#ifdef SUPPORT_FIXED_FUNCTION - int shade_model_slot = ShadeModelAttrib::get_class_slot(); - if (_target_rs->get_attrib(shade_model_slot) != _state_rs->get_attrib(shade_model_slot) || - !_state_mask.get_bit(shade_model_slot)) { - // PStatGPUTimer timer(this, _draw_set_state_shade_model_pcollector); - do_issue_shade_model(); - _state_mask.set_bit(shade_model_slot); + int shade_model_slot = ShadeModelAttrib::get_class_slot(); + if (_target_rs->get_attrib(shade_model_slot) != _state_rs->get_attrib(shade_model_slot) || + !_state_mask.get_bit(shade_model_slot)) { + // PStatGPUTimer timer(this, _draw_set_state_shade_model_pcollector); + do_issue_shade_model(); + _state_mask.set_bit(shade_model_slot); + } } #endif @@ -10444,7 +10528,9 @@ set_state_and_transform(const RenderState *target, !_state_mask.get_bit(tex_matrix_slot)) { // PStatGPUTimer timer(this, _draw_set_state_tex_matrix_pcollector); #ifdef SUPPORT_FIXED_FUNCTION - do_issue_tex_matrix(); + if (has_fixed_function_pipeline()) { + do_issue_tex_matrix(); + } #endif _state_mask.set_bit(tex_matrix_slot); #ifndef OPENGLES_1 @@ -10455,35 +10541,41 @@ set_state_and_transform(const RenderState *target, } #ifdef SUPPORT_FIXED_FUNCTION - int tex_gen_slot = TexGenAttrib::get_class_slot(); - if (_target_tex_gen != _state_tex_gen || - !_state_mask.get_bit(tex_gen_slot)) { - // PStatGPUTimer timer(this, _draw_set_state_tex_gen_pcollector); - do_issue_tex_gen(); - _state_tex_gen = _target_tex_gen; - _state_mask.set_bit(tex_gen_slot); - } -#endif + if (has_fixed_function_pipeline()) { + int tex_gen_slot = TexGenAttrib::get_class_slot(); + if (_target_tex_gen != _state_tex_gen || + !_state_mask.get_bit(tex_gen_slot)) { + // PStatGPUTimer timer(this, _draw_set_state_tex_gen_pcollector); + do_issue_tex_gen(); + _state_tex_gen = _target_tex_gen; + _state_mask.set_bit(tex_gen_slot); + } - int material_slot = MaterialAttrib::get_class_slot(); - if (_target_rs->get_attrib(material_slot) != _state_rs->get_attrib(material_slot) || - !_state_mask.get_bit(material_slot)) { - // PStatGPUTimer timer(this, _draw_set_state_material_pcollector); -#ifdef SUPPORT_FIXED_FUNCTION - do_issue_material(); -#endif - _state_mask.set_bit(material_slot); - } + int material_slot = MaterialAttrib::get_class_slot(); + if (_target_rs->get_attrib(material_slot) != _state_rs->get_attrib(material_slot) || + !_state_mask.get_bit(material_slot)) { + // PStatGPUTimer timer(this, _draw_set_state_material_pcollector); + do_issue_material(); + _state_mask.set_bit(material_slot); + } - int light_slot = LightAttrib::get_class_slot(); - if (_target_rs->get_attrib(light_slot) != _state_rs->get_attrib(light_slot) || - !_state_mask.get_bit(light_slot)) { - // PStatGPUTimer timer(this, _draw_set_state_light_pcollector); -#ifdef SUPPORT_FIXED_FUNCTION - do_issue_light(); -#endif - _state_mask.set_bit(light_slot); + int light_slot = LightAttrib::get_class_slot(); + if (_target_rs->get_attrib(light_slot) != _state_rs->get_attrib(light_slot) || + !_state_mask.get_bit(light_slot)) { + // PStatGPUTimer timer(this, _draw_set_state_light_pcollector); + do_issue_light(); + _state_mask.set_bit(light_slot); + } + + int fog_slot = FogAttrib::get_class_slot(); + if (_target_rs->get_attrib(fog_slot) != _state_rs->get_attrib(fog_slot) || + !_state_mask.get_bit(fog_slot)) { + // PStatGPUTimer timer(this, _draw_set_state_fog_pcollector); + do_issue_fog(); + _state_mask.set_bit(fog_slot); + } } +#endif int stencil_slot = StencilAttrib::get_class_slot(); if (_target_rs->get_attrib(stencil_slot) != _state_rs->get_attrib(stencil_slot) || @@ -10493,16 +10585,6 @@ set_state_and_transform(const RenderState *target, _state_mask.set_bit(stencil_slot); } - int fog_slot = FogAttrib::get_class_slot(); - if (_target_rs->get_attrib(fog_slot) != _state_rs->get_attrib(fog_slot) || - !_state_mask.get_bit(fog_slot)) { - // PStatGPUTimer timer(this, _draw_set_state_fog_pcollector); -#ifdef SUPPORT_FIXED_FUNCTION - do_issue_fog(); -#endif - _state_mask.set_bit(fog_slot); - } - int scissor_slot = ScissorAttrib::get_class_slot(); if (_target_rs->get_attrib(scissor_slot) != _state_rs->get_attrib(scissor_slot) || !_state_mask.get_bit(scissor_slot)) { @@ -10546,12 +10628,16 @@ do_issue_texture() { _texture_binding_shader_context->disable_shader_texture_bindings(); } #ifdef SUPPORT_FIXED_FUNCTION - update_standard_texture_bindings(); + if (has_fixed_function_pipeline()) { + update_standard_texture_bindings(); + } #endif } else { if (_texture_binding_shader_context == 0) { #ifdef SUPPORT_FIXED_FUNCTION - disable_standard_texture_bindings(); + if (has_fixed_function_pipeline()) { + disable_standard_texture_bindings(); + } #endif _current_shader_context->update_shader_texture_bindings(NULL); } else { @@ -10881,20 +10967,22 @@ update_show_usage_texture_bindings(int show_stage_index) { } #ifdef SUPPORT_FIXED_FUNCTION - // Disable all texture stages. - for (i = 0; i < _num_active_texture_stages; i++) { - set_active_texture_stage(i); + if (has_fixed_function_pipeline()) { + // Disable all texture stages. + for (i = 0; i < _num_active_texture_stages; i++) { + set_active_texture_stage(i); #ifndef OPENGLES - glDisable(GL_TEXTURE_1D); + glDisable(GL_TEXTURE_1D); #endif // OPENGLES - glDisable(GL_TEXTURE_2D); - if (_supports_3d_texture) { + glDisable(GL_TEXTURE_2D); + if (_supports_3d_texture) { #ifndef OPENGLES_1 - glDisable(GL_TEXTURE_3D); + glDisable(GL_TEXTURE_3D); #endif // OPENGLES_1 - } - if (_supports_cube_map) { - glDisable(GL_TEXTURE_CUBE_MAP); + } + if (_supports_cube_map) { + glDisable(GL_TEXTURE_CUBE_MAP); + } } } #endif @@ -10917,7 +11005,9 @@ update_show_usage_texture_bindings(int show_stage_index) { // Choose the corresponding usage texture and apply it. set_active_texture_stage(i); #ifdef SUPPORT_FIXED_FUNCTION - glEnable(GL_TEXTURE_2D); + if (has_fixed_function_pipeline()) { + glEnable(GL_TEXTURE_2D); + } #endif UsageTextureKey key(texture->get_x_size(), texture->get_y_size()); @@ -11445,7 +11535,9 @@ specify_texture(CLP(TextureContext) *gtc, const SamplerState &sampler) { tex->get_format() == Texture::F_depth_component24 || tex->get_format() == Texture::F_depth_component32) { #ifdef SUPPORT_FIXED_FUNCTION - glTexParameteri(target, GL_DEPTH_TEXTURE_MODE_ARB, GL_INTENSITY); + if (has_fixed_function_pipeline()) { + glTexParameteri(target, GL_DEPTH_TEXTURE_MODE_ARB, GL_INTENSITY); + } #endif if (_supports_shadow_filter) { if ((sampler.get_magfilter() == SamplerState::FT_shadow) || @@ -11893,33 +11985,35 @@ upload_texture(CLP(TextureContext) *gtc, bool force, bool uses_mipmaps) { } #endif -#if !defined(SUPPORT_FIXED_FUNCTION) && !defined(OPENGLES) - // Do we need to apply a swizzle mask to emulate these deprecated texture - // formats? - switch (tex->get_format()) { - case Texture::F_alpha: - glTexParameteri(target, GL_TEXTURE_SWIZZLE_R, GL_ZERO); - glTexParameteri(target, GL_TEXTURE_SWIZZLE_G, GL_ZERO); - glTexParameteri(target, GL_TEXTURE_SWIZZLE_B, GL_ZERO); - glTexParameteri(target, GL_TEXTURE_SWIZZLE_A, GL_RED); - break; +#ifndef OPENGLES + if (!_supports_luminance_texture) { + // Do we need to apply a swizzle mask to emulate these deprecated texture + // formats? + switch (tex->get_format()) { + case Texture::F_alpha: + glTexParameteri(target, GL_TEXTURE_SWIZZLE_R, GL_ZERO); + glTexParameteri(target, GL_TEXTURE_SWIZZLE_G, GL_ZERO); + glTexParameteri(target, GL_TEXTURE_SWIZZLE_B, GL_ZERO); + glTexParameteri(target, GL_TEXTURE_SWIZZLE_A, GL_RED); + break; - case Texture::F_luminance: - glTexParameteri(target, GL_TEXTURE_SWIZZLE_R, GL_RED); - glTexParameteri(target, GL_TEXTURE_SWIZZLE_G, GL_RED); - glTexParameteri(target, GL_TEXTURE_SWIZZLE_B, GL_RED); - glTexParameteri(target, GL_TEXTURE_SWIZZLE_A, GL_ONE); - break; + case Texture::F_luminance: + glTexParameteri(target, GL_TEXTURE_SWIZZLE_R, GL_RED); + glTexParameteri(target, GL_TEXTURE_SWIZZLE_G, GL_RED); + glTexParameteri(target, GL_TEXTURE_SWIZZLE_B, GL_RED); + glTexParameteri(target, GL_TEXTURE_SWIZZLE_A, GL_ONE); + break; - case Texture::F_luminance_alpha: - glTexParameteri(target, GL_TEXTURE_SWIZZLE_R, GL_RED); - glTexParameteri(target, GL_TEXTURE_SWIZZLE_G, GL_RED); - glTexParameteri(target, GL_TEXTURE_SWIZZLE_B, GL_RED); - glTexParameteri(target, GL_TEXTURE_SWIZZLE_A, GL_GREEN); - break; + case Texture::F_luminance_alpha: + glTexParameteri(target, GL_TEXTURE_SWIZZLE_R, GL_RED); + glTexParameteri(target, GL_TEXTURE_SWIZZLE_G, GL_RED); + glTexParameteri(target, GL_TEXTURE_SWIZZLE_B, GL_RED); + glTexParameteri(target, GL_TEXTURE_SWIZZLE_A, GL_GREEN); + break; - default: - break; + default: + break; + } } #endif @@ -12676,9 +12770,8 @@ get_texture_memory_size(CLP(TextureContext) *gtc) { } // OK, get the noncompressed size. - GLint red_size, green_size, blue_size, alpha_size, - luminance_size, intensity_size; - GLint depth_size = 0; + GLint red_size, green_size, blue_size, alpha_size; + GLint depth_size = 0, luminance_size = 0, intensity_size = 0; glGetTexLevelParameteriv(page_target, 0, GL_TEXTURE_RED_SIZE, &red_size); glGetTexLevelParameteriv(page_target, 0, @@ -12687,11 +12780,13 @@ get_texture_memory_size(CLP(TextureContext) *gtc) { GL_TEXTURE_BLUE_SIZE, &blue_size); glGetTexLevelParameteriv(page_target, 0, GL_TEXTURE_ALPHA_SIZE, &alpha_size); - glGetTexLevelParameteriv(page_target, 0, - GL_TEXTURE_LUMINANCE_SIZE, &luminance_size); - glGetTexLevelParameteriv(page_target, 0, - GL_TEXTURE_INTENSITY_SIZE, &intensity_size); - if (_supports_depth_texture) { + if (get_supports_luminance_texture()) { + glGetTexLevelParameteriv(page_target, 0, + GL_TEXTURE_LUMINANCE_SIZE, &luminance_size); + glGetTexLevelParameteriv(page_target, 0, + GL_TEXTURE_INTENSITY_SIZE, &intensity_size); + } + if (get_supports_depth_texture()) { glGetTexLevelParameteriv(page_target, 0, GL_TEXTURE_DEPTH_SIZE, &depth_size); } diff --git a/panda/src/glstuff/glGraphicsStateGuardian_src.h b/panda/src/glstuff/glGraphicsStateGuardian_src.h index 85290cd6f2..bf95facb90 100644 --- a/panda/src/glstuff/glGraphicsStateGuardian_src.h +++ b/panda/src/glstuff/glGraphicsStateGuardian_src.h @@ -399,6 +399,7 @@ public: INLINE const string &get_gl_version() const; INLINE int get_gl_version_major() const; INLINE int get_gl_version_minor() const; + INLINE bool has_fixed_function_pipeline() const; virtual void set_state_and_transform(const RenderState *state, const TransformState *transform); @@ -719,6 +720,11 @@ protected: pset _extensions; +#ifndef OPENGLES + // True for non-compatibility GL 3.2+ contexts. + bool _core_profile; +#endif + public: bool _supports_point_parameters; PFNGLPOINTPARAMETERFVPROC _glPointParameterfv; From 4a8819b0bd7517cf8ad0fe1eed0666b324cadc14 Mon Sep 17 00:00:00 2001 From: rdb Date: Sun, 19 Feb 2017 22:16:49 +0100 Subject: [PATCH 25/29] MeshDrawer fixes and improvements: * Fix random number generator on Windows (LP 1663895) * Assert instead of crash when passing in non-Camera to begin() (LP 1663900) * Prevent repeated calls to generator()/set_budget() from leaking GeomNodes (LP 1663903) * Make the generator more efficient --- panda/src/grutil/meshDrawer.cxx | 59 ++++++++++++++++++--------------- 1 file changed, 32 insertions(+), 27 deletions(-) diff --git a/panda/src/grutil/meshDrawer.cxx b/panda/src/grutil/meshDrawer.cxx index 02b63e938a..57ac0d9590 100644 --- a/panda/src/grutil/meshDrawer.cxx +++ b/panda/src/grutil/meshDrawer.cxx @@ -33,7 +33,7 @@ TypeHandle MeshDrawer::_type_handle; PN_stdfloat randFloat() { - return ((PN_stdfloat) rand() / (PN_stdfloat) 0x7fffffff); + return ((PN_stdfloat)rand() / (PN_stdfloat)RAND_MAX); } /** @@ -42,39 +42,43 @@ PN_stdfloat randFloat() { void MeshDrawer::generator(int budget) { // create enough triangles for budget: _vdata = new GeomVertexData(_root.get_name(), GeomVertexFormat::get_v3n3c4t2(), Geom::UH_static);//UH_dynamic); - GeomVertexWriter *tvertex = new GeomVertexWriter(_vdata, "vertex"); - GeomVertexWriter *tnormal = new GeomVertexWriter(_vdata, "normal"); - GeomVertexWriter *tuv = new GeomVertexWriter(_vdata, "texcoord"); - GeomVertexWriter *tcolor = new GeomVertexWriter(_vdata, "color"); - _prim = new GeomTriangles(Geom::UH_static); + _vdata->unclean_set_num_rows(budget * 3); - // iterate and fill _up a geom with random data so that it will not be - // optimized out by panda3d system - for(int i = 0; i < budget; i++) { - for( int vert = 0; vert < 3; vert++) { - LVector3 vec3 = LVector3(randFloat()+1000,randFloat(),randFloat())*.001; - LVector4 vec4 = LVector4(1,1,1,randFloat()); - LVector2 vec2 = LVector2(0,randFloat()); - tvertex->add_data3(vec3); - tcolor->add_data4(vec4); - tuv->add_data2(vec2); - tnormal->add_data3(vec3); + { + GeomVertexWriter tvertex(_vdata, "vertex"); + GeomVertexWriter tnormal(_vdata, "normal"); + GeomVertexWriter tuv(_vdata, "texcoord"); + GeomVertexWriter tcolor(_vdata, "color"); + + // iterate and fill _up a geom with random data so that it will not be + // optimized out by panda3d system + for (int i = 0; i < budget; i++) { + for (int vert = 0; vert < 3; vert++) { + LVector3 vec3 = LVector3(randFloat()+1000,randFloat(),randFloat())*.001; + LVector4 vec4 = LVector4(1,1,1,randFloat()); + LVector2 vec2 = LVector2(0,randFloat()); + tvertex.set_data3(vec3); + tcolor.set_data4(vec4); + tuv.set_data2(vec2); + tnormal.set_data3(vec3); + } } - _prim->add_vertices(i * 3, i * 3 + 1, i * 3 + 2); } + // create our node and attach it to this node path + _prim = new GeomTriangles(Geom::UH_static); + _prim->add_next_vertices(budget * 3); _prim->close_primitive(); _geom = new Geom(_vdata); _geom->add_primitive(_prim); - _geomnode = new GeomNode("__MeshDrawer_GeomNode"); + if (_geomnode == NULL) { + _geomnode = new GeomNode("__MeshDrawer_GeomNode"); + _root.attach_new_node(_geomnode); + } else { + _geomnode->remove_all_geoms(); + } _geomnode->add_geom(_geom); - _root.attach_new_node(_geomnode); _last_clear_index = budget; - - delete tvertex; - delete tnormal; - delete tuv; - delete tcolor; } /** @@ -451,8 +455,9 @@ link_segment(const LVector3 &pos, const LVector4 &frame, LVector3 cam_stop3d = _camera.get_relative_point(_render, stop); LPoint2 cam_stop2d = LVector2(); - PT(Camera) camera = DCAST(Camera, _camera.node()); - PT(Lens) lens = camera->get_lens(); + const Camera *camera; + DCAST_INTO_V(camera, _camera.node()); + const Lens *lens = camera->get_lens(); lens->project(cam_start3d, cam_start2d); lens->project(cam_stop3d, cam_stop2d); From 53258af8768325bbc54ddca825e7191169dab8ef Mon Sep 17 00:00:00 2001 From: rdb Date: Mon, 20 Feb 2017 00:23:21 +0100 Subject: [PATCH 26/29] display: reduce GraphicsEngine traversal overhead a bit --- panda/src/display/graphicsEngine.cxx | 168 +++++++++++---------------- panda/src/display/graphicsEngine.h | 9 +- 2 files changed, 75 insertions(+), 102 deletions(-) diff --git a/panda/src/display/graphicsEngine.cxx b/panda/src/display/graphicsEngine.cxx index ad3aa3caa6..045c534ebe 100644 --- a/panda/src/display/graphicsEngine.cxx +++ b/panda/src/display/graphicsEngine.cxx @@ -1328,21 +1328,24 @@ cull_and_draw_together(GraphicsOutput *win, DisplayRegion *dr, GraphicsStateGuardian *gsg = win->get_gsg(); nassertv(gsg != (GraphicsStateGuardian *)NULL); - DisplayRegionPipelineReader *dr_reader = - new DisplayRegionPipelineReader(dr, current_thread); + PT(SceneSetup) scene_setup; - win->change_scenes(dr_reader); - gsg->prepare_display_region(dr_reader); + { + DisplayRegionPipelineReader dr_reader(dr, current_thread); + win->change_scenes(&dr_reader); + gsg->prepare_display_region(&dr_reader); - if (dr_reader->is_any_clear_active()) { - gsg->clear(dr); + if (dr_reader.is_any_clear_active()) { + gsg->clear(dr); + } + + scene_setup = setup_scene(gsg, &dr_reader); } - PT(SceneSetup) scene_setup = setup_scene(gsg, dr_reader); if (scene_setup == (SceneSetup *)NULL) { // Never mind. - } else if (dr_reader->get_object()->is_stereo()) { + } else if (dr->is_stereo()) { // Don't draw stereo DisplayRegions directly. } else if (!gsg->set_scene(scene_setup)) { @@ -1353,9 +1356,6 @@ cull_and_draw_together(GraphicsOutput *win, DisplayRegion *dr, } else { DrawCullHandler cull_handler(gsg); if (gsg->begin_scene()) { - delete dr_reader; - dr_reader = NULL; - CallbackObject *cbobj = dr->get_cull_callback(); if (cbobj != (CallbackObject *)NULL) { // Issue the cull callback on this DisplayRegion. @@ -1372,10 +1372,6 @@ cull_and_draw_together(GraphicsOutput *win, DisplayRegion *dr, gsg->end_scene(); } } - - if (dr_reader != (DisplayRegionPipelineReader *)NULL) { - delete dr_reader; - } } /** @@ -1399,27 +1395,41 @@ cull_to_bins(const GraphicsEngine::Windows &wlist, Thread *current_thread) { for (size_t wi = 0; wi < wlist_size; ++wi) { GraphicsOutput *win = wlist[wi]; if (win->is_active() && win->get_gsg()->is_active()) { + GraphicsStateGuardian *gsg = win->get_gsg(); PStatTimer timer(win->get_cull_window_pcollector(), current_thread); int num_display_regions = win->get_num_active_display_regions(); for (int i = 0; i < num_display_regions; ++i) { DisplayRegion *dr = win->get_active_display_region(i); - if (dr != (DisplayRegion *)NULL) { - DisplayRegionPipelineReader *dr_reader = - new DisplayRegionPipelineReader(dr, current_thread); - + if (dr != nullptr) { + PT(SceneSetup) scene_setup; + PT(CullResult) cull_result; CullKey key; - key._gsg = win->get_gsg(); - key._camera = dr_reader->get_camera(); - key._lens_index = dr_reader->get_lens_index(); + { + PStatTimer timer(_cull_setup_pcollector, current_thread); + DisplayRegionPipelineReader dr_reader(dr, current_thread); + scene_setup = setup_scene(gsg, &dr_reader); + if (scene_setup == nullptr) { + continue; + } - AlreadyCulled::iterator aci = already_culled.insert(AlreadyCulled::value_type(key, (DisplayRegion *)NULL)).first; - if ((*aci).second == NULL) { + key._gsg = gsg; + key._camera = dr_reader.get_camera(); + key._lens_index = dr_reader.get_lens_index(); + } + + AlreadyCulled::iterator aci = already_culled.insert(AlreadyCulled::value_type(move(key), nullptr)).first; + if ((*aci).second == nullptr) { // We have not used this camera already in this thread. Perform // the cull operation. - delete dr_reader; - dr_reader = NULL; + cull_result = dr->get_cull_result(current_thread); + if (cull_result != nullptr) { + cull_result = cull_result->make_next(); + } else { + // This DisplayRegion has no cull results; draw it. + cull_result = new CullResult(gsg, dr->get_draw_region_pcollector()); + } (*aci).second = dr; - cull_to_bins(win, dr, current_thread); + cull_to_bins(win, gsg, dr, scene_setup, cull_result, current_thread); } else { // We have already culled a scene using this camera in this @@ -1429,14 +1439,11 @@ cull_to_bins(const GraphicsEngine::Windows &wlist, Thread *current_thread) { // image.) Of course, the cull result will be the same, so just // use the result from the other DisplayRegion. DisplayRegion *other_dr = (*aci).second; - dr->set_cull_result(other_dr->get_cull_result(current_thread), - setup_scene(win->get_gsg(), dr_reader), - current_thread); + cull_result = other_dr->get_cull_result(current_thread); } - if (dr_reader != (DisplayRegionPipelineReader *)NULL) { - delete dr_reader; - } + // Save the results for next frame. + dr->set_cull_result(MOVE(cull_result), MOVE(scene_setup), current_thread); } } } @@ -1447,50 +1454,26 @@ cull_to_bins(const GraphicsEngine::Windows &wlist, Thread *current_thread) { * Called only within the inner loop of cull_to_bins(), above. */ void GraphicsEngine:: -cull_to_bins(GraphicsOutput *win, DisplayRegion *dr, Thread *current_thread) { - GraphicsStateGuardian *gsg = win->get_gsg(); - if (gsg == (GraphicsStateGuardian *)NULL) { - return; +cull_to_bins(GraphicsOutput *win, GraphicsStateGuardian *gsg, + DisplayRegion *dr, SceneSetup *scene_setup, + CullResult *cull_result, Thread *current_thread) { + + BinCullHandler cull_handler(cull_result); + CallbackObject *cbobj = dr->get_cull_callback(); + if (cbobj != (CallbackObject *)NULL) { + // Issue the cull callback on this DisplayRegion. + DisplayRegionCullCallbackData cbdata(&cull_handler, scene_setup); + cbobj->do_callback(&cbdata); + + // The callback has taken care of the culling. + + } else { + // Perform the cull normally. + dr->do_cull(&cull_handler, scene_setup, gsg, current_thread); } - PT(CullResult) cull_result; - PT(SceneSetup) scene_setup; - { - PStatTimer timer(_cull_setup_pcollector, current_thread); - DisplayRegionPipelineReader dr_reader(dr, current_thread); - scene_setup = setup_scene(gsg, &dr_reader); - cull_result = dr->get_cull_result(current_thread); - - if (cull_result != (CullResult *)NULL) { - cull_result = cull_result->make_next(); - - } else { - // This DisplayRegion has no cull results; draw it. - cull_result = new CullResult(gsg, dr->get_draw_region_pcollector()); - } - } - - if (scene_setup != (SceneSetup *)NULL) { - BinCullHandler cull_handler(cull_result); - CallbackObject *cbobj = dr->get_cull_callback(); - if (cbobj != (CallbackObject *)NULL) { - // Issue the cull callback on this DisplayRegion. - DisplayRegionCullCallbackData cbdata(&cull_handler, scene_setup); - cbobj->do_callback(&cbdata); - - // The callback has taken care of the culling. - - } else { - // Perform the cull normally. - dr->do_cull(&cull_handler, scene_setup, gsg, current_thread); - } - - PStatTimer timer(_cull_sort_pcollector, current_thread); - cull_result->finish_cull(scene_setup, current_thread); - } - - // Save the results for next frame. - dr->set_cull_result(MOVE(cull_result), MOVE(scene_setup), current_thread); + PStatTimer timer(_cull_sort_pcollector, current_thread); + cull_result->finish_cull(scene_setup, current_thread); } /** @@ -1538,7 +1521,7 @@ draw_bins(const GraphicsEngine::Windows &wlist, Thread *current_thread) { for (int i = 0; i < num_display_regions; ++i) { DisplayRegion *dr = win->get_active_display_region(i); if (dr != (DisplayRegion *)NULL) { - draw_bins(win, dr, current_thread); + do_draw(win, gsg, dr, current_thread); } } } @@ -1582,22 +1565,6 @@ draw_bins(const GraphicsEngine::Windows &wlist, Thread *current_thread) { } } -/** - * This variant on draw_bins() is only called from draw_bins(), above. It - * draws the cull result for a particular DisplayRegion. - */ -void GraphicsEngine:: -draw_bins(GraphicsOutput *win, DisplayRegion *dr, Thread *current_thread) { - GraphicsStateGuardian *gsg = win->get_gsg(); - if (gsg == (GraphicsStateGuardian *)NULL) { - return; - } - - PT(CullResult) cull_result = dr->get_cull_result(current_thread); - PT(SceneSetup) scene_setup = dr->get_scene_setup(current_thread); - do_draw(cull_result, scene_setup, win, dr, current_thread); -} - /** * Called in the draw thread, this calls make_context() on each window on the * list to guarantee its gsg and graphics context both get created. @@ -1899,15 +1866,20 @@ setup_scene(GraphicsStateGuardian *gsg, DisplayRegionPipelineReader *dr) { * Draws the previously-culled scene. */ void GraphicsEngine:: -do_draw(CullResult *cull_result, SceneSetup *scene_setup, - GraphicsOutput *win, DisplayRegion *dr, Thread *current_thread) { - - CallbackObject *cbobj; - GraphicsStateGuardian *gsg = win->get_gsg(); - +do_draw(GraphicsOutput *win, GraphicsStateGuardian *gsg, DisplayRegion *dr, Thread *current_thread) { // Statistics PStatGPUTimer timer(gsg, dr->get_draw_region_pcollector(), current_thread); + PT(CullResult) cull_result; + PT(SceneSetup) scene_setup; + { + DisplayRegion::CDCullReader cdata(dr->_cycler_cull, current_thread); + cull_result = cdata->_cull_result; + scene_setup = cdata->_scene_setup; + } + + CallbackObject *cbobj; + { DisplayRegionPipelineReader dr_reader(dr, current_thread); win->change_scenes(&dr_reader); diff --git a/panda/src/display/graphicsEngine.h b/panda/src/display/graphicsEngine.h index 89cfb7c616..04f0993dfa 100644 --- a/panda/src/display/graphicsEngine.h +++ b/panda/src/display/graphicsEngine.h @@ -147,9 +147,10 @@ private: Thread *current_thread); void cull_to_bins(const Windows &wlist, Thread *current_thread); - void cull_to_bins(GraphicsOutput *win, DisplayRegion *dr, Thread *current_thread); + void cull_to_bins(GraphicsOutput *win, GraphicsStateGuardian *gsg, + DisplayRegion *dr, SceneSetup *scene_setup, + CullResult *cull_result, Thread *current_thread); void draw_bins(const Windows &wlist, Thread *current_thread); - void draw_bins(GraphicsOutput *win, DisplayRegion *dr, Thread *current_thread); void make_contexts(const Windows &wlist, Thread *current_thread); void process_events(const Windows &wlist, Thread *current_thread); @@ -162,8 +163,8 @@ private: PT(SceneSetup) setup_scene(GraphicsStateGuardian *gsg, DisplayRegionPipelineReader *dr); - void do_draw(CullResult *cull_result, SceneSetup *scene_setup, - GraphicsOutput *win, DisplayRegion *dr, Thread *current_thread); + void do_draw(GraphicsOutput *win, GraphicsStateGuardian *gsg, + DisplayRegion *dr, Thread *current_thread); void do_add_window(GraphicsOutput *window, const GraphicsThreadingModel &threading_model); From b113d9db550ab7e475081c394c28f6b85285e212 Mon Sep 17 00:00:00 2001 From: rdb Date: Mon, 20 Feb 2017 00:32:05 +0100 Subject: [PATCH 27/29] Fix incorrect type hierarchy of HermiteCurve, PandaNode, ShaderGenerator --- panda/src/parametrics/hermiteCurve.h | 4 +++- panda/src/pgraph/pandaNode.h | 6 ++---- panda/src/pgraphnodes/shaderGenerator.h | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/panda/src/parametrics/hermiteCurve.h b/panda/src/parametrics/hermiteCurve.h index 806ab47ff1..5a3d350b82 100644 --- a/panda/src/parametrics/hermiteCurve.h +++ b/panda/src/parametrics/hermiteCurve.h @@ -163,7 +163,9 @@ public: return _type_handle; } static void init_type() { - register_type(_type_handle, "HermiteCurve"); + PiecewiseCurve::init_type(); + register_type(_type_handle, "HermiteCurve", + PiecewiseCurve::get_class_type()); } virtual TypeHandle get_type() const { return get_class_type(); diff --git a/panda/src/pgraph/pandaNode.h b/panda/src/pgraph/pandaNode.h index 0bbc984117..e9f3204ccd 100644 --- a/panda/src/pgraph/pandaNode.h +++ b/panda/src/pgraph/pandaNode.h @@ -799,12 +799,10 @@ public: return _type_handle; } static void init_type() { - TypedWritable::init_type(); - ReferenceCount::init_type(); + TypedWritableReferenceCount::init_type(); Namable::init_type(); register_type(_type_handle, "PandaNode", - TypedWritable::get_class_type(), - ReferenceCount::get_class_type(), + TypedWritableReferenceCount::get_class_type(), Namable::get_class_type()); CData::init_type(); Down::init_type(); diff --git a/panda/src/pgraphnodes/shaderGenerator.h b/panda/src/pgraphnodes/shaderGenerator.h index 9564bd6120..a1d83f0919 100644 --- a/panda/src/pgraphnodes/shaderGenerator.h +++ b/panda/src/pgraphnodes/shaderGenerator.h @@ -151,9 +151,9 @@ public: return _type_handle; } static void init_type() { - TypedObject::init_type(); + TypedReferenceCount::init_type(); register_type(_type_handle, "ShaderGenerator", - TypedObject::get_class_type()); + TypedReferenceCount::get_class_type()); } virtual TypeHandle get_type() const { return get_class_type(); @@ -173,9 +173,9 @@ public: return _type_handle; } static void init_type() { - TypedObject::init_type(); + TypedReferenceCount::init_type(); register_type(_type_handle, "ShaderGenerator", - TypedObject::get_class_type()); + TypedReferenceCount::get_class_type()); } virtual TypeHandle get_type() const { return get_class_type(); From 6104e75eb0ef3602575f8c426f831718493bfecb Mon Sep 17 00:00:00 2001 From: rdb Date: Mon, 20 Feb 2017 15:09:11 +0100 Subject: [PATCH 28/29] bam2egg: generate a sphere from polygon with four vertices instead of two --- panda/src/egg2pg/eggSaver.cxx | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/panda/src/egg2pg/eggSaver.cxx b/panda/src/egg2pg/eggSaver.cxx index 3976aa0714..133bddc874 100644 --- a/panda/src/egg2pg/eggSaver.cxx +++ b/panda/src/egg2pg/eggSaver.cxx @@ -482,7 +482,7 @@ convert_collision_node(CollisionNode *node, const WorkingNodePath &node_path, } else if (child->is_of_type(CollisionSphere::get_class_type())) { CPT(CollisionSphere) sphere = DCAST(CollisionSphere, child); LPoint3 center = sphere->get_center(); - LVector3 offset(sphere->get_radius(), 0, 0); + PN_stdfloat radius = sphere->get_radius(); EggGroup *egg_sphere; if (num_solids == 1) { @@ -499,15 +499,19 @@ convert_collision_node(CollisionNode *node, const WorkingNodePath &node_path, } egg_sphere->set_collide_flags(flags); - EggVertex ev1, ev2; - ev1.set_pos(LCAST(double, (center + offset) * net_mat)); - ev2.set_pos(LCAST(double, (center - offset) * net_mat)); + EggVertex ev1, ev2, ev3, ev4; + ev1.set_pos(LCAST(double, (center + LVector3(radius, 0, 0)) * net_mat)); + ev2.set_pos(LCAST(double, (center + LVector3(0, radius, 0)) * net_mat)); + ev3.set_pos(LCAST(double, (center + LVector3(-radius, 0, 0)) * net_mat)); + ev4.set_pos(LCAST(double, (center + LVector3(0, -radius, 0)) * net_mat)); EggPolygon *egg_poly = new EggPolygon; egg_sphere->add_child(egg_poly); egg_poly->add_vertex(cvpool->create_unique_vertex(ev1)); egg_poly->add_vertex(cvpool->create_unique_vertex(ev2)); + egg_poly->add_vertex(cvpool->create_unique_vertex(ev3)); + egg_poly->add_vertex(cvpool->create_unique_vertex(ev4)); } else if (child->is_of_type(CollisionPlane::get_class_type())) { LPlane plane = DCAST(CollisionPlane, child)->get_plane(); From f6e2e2ea05c6e683c6dfab2401bd6583d07fd916 Mon Sep 17 00:00:00 2001 From: deflected Date: Mon, 20 Feb 2017 15:10:15 +0100 Subject: [PATCH 29/29] Fix compile issue on FreeBSD 11 --- dtool/src/dtoolutil/executionEnvironment.cxx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dtool/src/dtoolutil/executionEnvironment.cxx b/dtool/src/dtoolutil/executionEnvironment.cxx index bcf4584ab0..cf7ecac50e 100644 --- a/dtool/src/dtoolutil/executionEnvironment.cxx +++ b/dtool/src/dtoolutil/executionEnvironment.cxx @@ -591,8 +591,8 @@ read_args() { dlinfo(RTLD_SELF, RTLD_DI_LINKMAP, &map); while (map != NULL) { - char *tail = strrchr(map->l_name, '/'); - char *head = strchr(map->l_name, '/'); + const char *tail = strrchr(map->l_name, '/'); + const char *head = strchr(map->l_name, '/'); if (tail && head && (strcmp(tail, "/libp3dtool.so." PANDA_ABI_VERSION_STR) == 0 || strcmp(tail, "/libp3dtool.so") == 0)) { _dtool_name = head; @@ -615,8 +615,8 @@ read_args() { char buffer[PATH_MAX]; buffer[0] = 0; maps.getline(buffer, PATH_MAX); - char *tail = strrchr(buffer, '/'); - char *head = strchr(buffer, '/'); + const char *tail = strrchr(buffer, '/'); + const char *head = strchr(buffer, '/'); if (tail && head && (strcmp(tail, "/libp3dtool.so." PANDA_ABI_VERSION_STR) == 0 || strcmp(tail, "/libp3dtool.so") == 0)) { _dtool_name = head;