diff options
125 files changed, 4692 insertions, 1739 deletions
diff --git a/src/3rdparty/phonon/mmf/audioplayer.cpp b/src/3rdparty/phonon/mmf/audioplayer.cpp index 77a0964..f49e898 100644 --- a/src/3rdparty/phonon/mmf/audioplayer.cpp +++ b/src/3rdparty/phonon/mmf/audioplayer.cpp @@ -99,7 +99,7 @@ int MMF::AudioPlayer::setDeviceVolume(int mmfVolume) * stack by doing a runtime check of the SDK version. */ #if !defined(__SERIES60_31__) const int err = m_player->SetVolume(mmfVolume); - if (QSysInfo::s60Version() >= QSysInfo::SV_S60_5_0) + if (QSysInfo::s60Version() >= QSysInfo::SV_S60_3_2) return err; else return KErrNone; diff --git a/src/3rdparty/webkit/.tag b/src/3rdparty/webkit/.tag index 4813e1e..c750e67 100644 --- a/src/3rdparty/webkit/.tag +++ b/src/3rdparty/webkit/.tag @@ -1 +1 @@ -862268aeb7150d3795d05bfc05f661bb5c598a27 +8941bee5706ef2171ed5def63834deefc7440d11 diff --git a/src/3rdparty/webkit/JavaScriptCore/ChangeLog b/src/3rdparty/webkit/JavaScriptCore/ChangeLog index 53fde39..eb22ea0 100644 --- a/src/3rdparty/webkit/JavaScriptCore/ChangeLog +++ b/src/3rdparty/webkit/JavaScriptCore/ChangeLog @@ -1,3 +1,190 @@ +2010-04-28 Simon Hausmann <simon.hausmann@nokia.com>, Kent Hansen <kent.hansen@nokia.com> + + Reviewed by Darin Adler. + + JSC's currentThreadStackBase is not reentrant on some platforms + https://bugs.webkit.org/show_bug.cgi?id=37195 + + This function needs to be reentrant to avoid memory corruption on platforms where + the implementation uses global variables. + + This patch adds a mutex lock where necessary and makes the Symbian implementation + reentrant. + + * runtime/Collector.cpp: + (JSC::currentThreadStackBaseMutex): + (JSC::currentThreadStackBase): + +2010-04-21 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + Reviewed by Simon Hausmann. + + Compile fix for Visual Studio 2010 + https://bugs.webkit.org/show_bug.cgi?id=37867 + + Patch by Prasanth Ullattil <prasanth.ullattil@nokia.com> + + * runtime/Structure.cpp: + (JSC::Structure::transitionTableAdd): + * wtf/MathExtras.h: + * wtf/Platform.h: + +2010-04-27 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + Reviewed by Simon Hausmann. + + Rename COMPILER(MSVC7) to COMPILER(MSVC7_OR_LOWER) + + * config.h: + (JSC::Structure::transitionTableAdd): + * wtf/Assertions.h: + * wtf/Atomics.h: + * wtf/CurrentTime.h: + (WTF::getLocalTime): + * wtf/Platform.h: + * wtf/StaticConstructors.h: + * wtf/StringExtras.h: + * wtf/Vector.h: + (WTF::::append): + +2010-04-15 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + Reviewed by Tor Arne Vestbø. + + [Qt] Fix Mac build break. + + https://bugs.webkit.org/show_bug.cgi?id=37867 + - Make sure JavaScriptCore's debug_and_release config follows that + of WebCore. + - Use different name for JavaScriptCore target in debug and release + since they might be written in the same path at the same time on + parallel builds + - Consolidate the DESTDIR determination logic in JavaScriptCore.pri + + * JavaScriptCore.pri: + * JavaScriptCore.pro: + +2010-04-21 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Make sure WebKit is not compiled using C++0x. + https://bugs.webkit.org/show_bug.cgi?id=37867 + + As the rest of Qt compiles in the C++0x mode, people might start + compiling it in this mode. WebKit don't support this yet. + + Patch by Thiago Macieira <thiago.macieira@nokia.com> + + * JavaScriptCore.pro: + +2010-04-22 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Remove dependency of JSC to QtGui + https://bugs.webkit.org/show_bug.cgi?id=37867 + + The patch also make sure that hal.h is in the include path on Symbian. + The dependency to QtGui took care of that before. + + Patch by Thiago Macieira <thiago.macieira@nokia.com> + and Rohan McGovern <rohan.mcgovern@nokia.com> + + * JavaScriptCore.pri: + * JavaScriptCore.pro: + +2010-04-22 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + Reviewed by Tor Arne Vestbø. + + [Qt] Corrects symbols visibility for JavaScriptCore. + + https://bugs.webkit.org/show_bug.cgi?id=37867 + + * JavaScriptCore.pro: + +2010-04-27 Thomas Zander <t.zander@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] Fix the build on Symbian on Linux using the Makefile based mkspec + + * JavaScriptCore.pri: It is necessary to specify the library search path + when linking against JavaScriptCore. + +2010-04-02 Ruben Van Boxem <vanboxem.ruben@gmail.com> + + Reviewed by Eric Seidel. + + Mingw-w64 fixes for JavaScriptCore + https://bugs.webkit.org/show_bug.cgi?id=35607 + + * runtime/Collector.cpp: use the msvc code for mingw-w64 (but not mingw-w32) + (JSC::Heap::allocateBlock): + (JSC::Heap::freeBlockPtr): + (JSC::currentThreadStackBase): + (JSC::currentThreadStackBase): + * wtf/Platform.h: added COMPILER(MINGW64) check to differentiate between mingw.org and mingw-w64 functions + +2010-04-14 Kent Hansen <kent.hansen@nokia.com> + + Reviewed by Maciej Stachowiak. + + Mac OS X: Use deployment target to determine whether memory tagging should be enabled + https://bugs.webkit.org/show_bug.cgi?id=34888 + + When building on (Snow) Leopard but targeting Tiger + (TARGETING_TIGER defined, BUILDING_ON_TIGER not defined), + WebKit would crash on Tiger because the tags passed to mmap + caused those function calls to fail. + + Conversely, when building on Tiger but targeting Leopard + (BUILDING_ON_TIGER defined, TARGETING_LEOPARD defined), WebKit + would crash on Leopard because the tags passed to vm_map and + vm_allocate caused those function calls to fail. + + Solution: Use TARGETING_TIGER rather than BUILDING_ON_TIGER to + govern the tag definitions. Use the same tags for vm_map and + vm_allocate regardless of target, since they work on + both. Fall back to the mmap tags that work on Tiger (that is, + "no tags") if targeting Tiger, since those tags also work on + Leopard. + + * wtf/VMTags.h: + +2010-04-18 Simon Hausmann <simon.hausmann@nokia.com> + + Reviewed by Laszlo Gombos. + + [Qt] Fix JavaScriptCore's include path for WinCE builds + + https://bugs.webkit.org/show_bug.cgi?id=36751 + + * JavaScriptCore.pri: + +2010-04-19 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] Build fix for WinCE. + + Moved the include of the non-existing errno.h header file inside + platform guard macros. + + * jit/ExecutableAllocatorFixedVMPool.cpp: + +2010-04-12 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + Reviewed by nobody, build fix. + + [Qt] Build fix for Mac when building with build-webkit --qt + + Specifying no configuration on Mac builds WebCore both in debug + and release. JavaScriptCore has to follow this rule as well. + + * JavaScriptCore.pro: + 2010-04-09 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> Reviewed by Simon Hausmann. diff --git a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri index 8aa914f..b7f6665 100644 --- a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri +++ b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pri @@ -1,12 +1,14 @@ # JavaScriptCore - Qt4 build info VPATH += $$PWD -# Output in JavaScriptCore/<config> -CONFIG(debug, debug|release): JAVASCRIPTCORE_DESTDIR = debug -CONFIG(release, debug|release): JAVASCRIPTCORE_DESTDIR = release -# Use different targets to prevent parallel builds file clashes on Mac -CONFIG(debug, debug|release): JAVASCRIPTCORE_TARGET = jscored -CONFIG(release, debug|release): JAVASCRIPTCORE_TARGET = jscore - +CONFIG(debug, debug|release) { + # Output in JavaScriptCore/<config> + JAVASCRIPTCORE_DESTDIR = debug + # Use a config-specific target to prevent parallel builds file clashes on Mac + JAVASCRIPTCORE_TARGET = jscored +} else { + JAVASCRIPTCORE_DESTDIR = release + JAVASCRIPTCORE_TARGET = jscore +} CONFIG(standalone_package) { isEmpty(JSC_GENERATED_SOURCES_DIR):JSC_GENERATED_SOURCES_DIR = $$PWD/generated } else { @@ -74,10 +76,12 @@ defineTest(addJavaScriptCoreLib) { pathToJavaScriptCoreOutput = $$ARGS/$$JAVASCRIPTCORE_DESTDIR win32-msvc* { - QMAKE_LIBDIR += $$pathToJavaScriptCoreOutput + LIBS += -L$$pathToJavaScriptCoreOutput LIBS += -l$$JAVASCRIPTCORE_TARGET } else:symbian { LIBS += -l$${JAVASCRIPTCORE_TARGET}.lib + # The default symbian build system does not use library paths at all. However when building with + # qmake's symbian makespec that uses Makefiles QMAKE_LIBDIR += $$pathToJavaScriptCoreOutput } else { # Make sure jscore will be early in the list of libraries to workaround a bug in MinGW diff --git a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro index 280742f..8e086b3 100644 --- a/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro +++ b/src/3rdparty/webkit/JavaScriptCore/JavaScriptCore.pro @@ -16,10 +16,6 @@ CONFIG += depend_includepath contains(QT_CONFIG, embedded):CONFIG += embedded -# Add these two lines both for QTDIR_build and not because we don't include qbase.pri -contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols -unix:contains(QT_CONFIG, reduce_relocations):CONFIG += bsymbolic_functions - CONFIG(QTDIR_build) { # Make sure we compile both debug and release on mac when inside Qt. # This line was extracted from qbase.pri instead of including the whole file @@ -30,8 +26,16 @@ CONFIG(QTDIR_build) { } else { # Release OBJECTS_DIR = obj/release } + # Make sure that build_all follows the build_all config in WebCore + mac:contains(QT_CONFIG, qt_framework):!CONFIG(webkit_no_framework):!build_pass:CONFIG += build_all } +# WebCore adds these config only when in a standalone build. +# qbase.pri takes care of that when in a QTDIR_build +# Here we add the config for both cases since we don't include qbase.pri +contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols +unix:contains(QT_CONFIG, reduce_relocations):CONFIG += bsymbolic_functions + CONFIG(QTDIR_build) { # Remove the following 2 lines if you want debug information in JavaScriptCore CONFIG -= separate_debug_info @@ -223,5 +227,5 @@ SOURCES += \ SOURCES += wtf/TCSystemAlloc.cpp } -# JavaScriptCore is not going to build with C++0x any time soon +# Disable C++0x mode in JSC for those who enabled it in their Qt's mkspec *-g++*:QMAKE_CXXFLAGS -= -std=c++0x -std=gnu++0x diff --git a/src/3rdparty/webkit/JavaScriptCore/config.h b/src/3rdparty/webkit/JavaScriptCore/config.h index d5fdfe9..acc162a 100644 --- a/src/3rdparty/webkit/JavaScriptCore/config.h +++ b/src/3rdparty/webkit/JavaScriptCore/config.h @@ -44,7 +44,7 @@ #define max max #define min min -#if !COMPILER(MSVC7) && !OS(WINCE) +#if !COMPILER(MSVC7_OR_LOWER) && !OS(WINCE) // We need to define this before the first #include of stdlib.h or it won't contain rand_s. #ifndef _CRT_RAND_S #define _CRT_RAND_S diff --git a/src/3rdparty/webkit/JavaScriptCore/generated/ArrayPrototype.lut.h b/src/3rdparty/webkit/JavaScriptCore/generated/ArrayPrototype.lut.h index ffe067f..88d3717 100644 --- a/src/3rdparty/webkit/JavaScriptCore/generated/ArrayPrototype.lut.h +++ b/src/3rdparty/webkit/JavaScriptCore/generated/ArrayPrototype.lut.h @@ -1,4 +1,4 @@ -// Automatically generated from runtime\ArrayPrototype.cpp using C:/dev/webkit-2.0/JavaScriptCore/create_hash_table. DO NOT EDIT! +// Automatically generated from runtime/ArrayPrototype.cpp using /JavaScriptCore/create_hash_table. DO NOT EDIT! #include "Lookup.h" diff --git a/src/3rdparty/webkit/JavaScriptCore/generated/DatePrototype.lut.h b/src/3rdparty/webkit/JavaScriptCore/generated/DatePrototype.lut.h index 56acdba..0174298 100644 --- a/src/3rdparty/webkit/JavaScriptCore/generated/DatePrototype.lut.h +++ b/src/3rdparty/webkit/JavaScriptCore/generated/DatePrototype.lut.h @@ -1,4 +1,4 @@ -// Automatically generated from runtime\DatePrototype.cpp using C:/dev/webkit-2.0/JavaScriptCore/create_hash_table. DO NOT EDIT! +// Automatically generated from runtime/DatePrototype.cpp using /JavaScriptCore/create_hash_table. DO NOT EDIT! #include "Lookup.h" diff --git a/src/3rdparty/webkit/JavaScriptCore/generated/Grammar.cpp b/src/3rdparty/webkit/JavaScriptCore/generated/Grammar.cpp index 50ff9cd..e62a1c4 100644 --- a/src/3rdparty/webkit/JavaScriptCore/generated/Grammar.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/generated/Grammar.cpp @@ -76,7 +76,7 @@ /* Copy the first part of user declarations. */ /* Line 189 of yacc.c */ -#line 3 "parser\\Grammar.y" +#line 3 "parser/Grammar.y" /* @@ -221,7 +221,7 @@ static inline void appendToVarDeclarationList(JSGlobalData* globalData, ParserAr /* Line 189 of yacc.c */ -#line 225 "C:/dev/webkit-2.0/JavaScriptCore/generated\\Grammar.tab.c" +#line 225 "/JavaScriptCore/generated/Grammar.tab.c" /* Enabling traces. */ #ifndef YYDEBUG @@ -321,7 +321,7 @@ typedef union YYSTYPE { /* Line 214 of yacc.c */ -#line 146 "parser\\Grammar.y" +#line 146 "parser/Grammar.y" int intValue; double doubleValue; @@ -356,7 +356,7 @@ typedef union YYSTYPE /* Line 214 of yacc.c */ -#line 360 "C:/dev/webkit-2.0/JavaScriptCore/generated\\Grammar.tab.c" +#line 360 "/JavaScriptCore/generated/Grammar.tab.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -380,7 +380,7 @@ typedef struct YYLTYPE /* Copy the second part of user declarations. */ /* Line 264 of yacc.c */ -#line 178 "parser\\Grammar.y" +#line 178 "parser/Grammar.y" template <typename T> inline void setStatementLocation(StatementNode* statement, const T& start, const T& end) @@ -396,7 +396,7 @@ static inline void setExceptionLocation(ThrowableExpressionData* node, unsigned /* Line 264 of yacc.c */ -#line 400 "C:/dev/webkit-2.0/JavaScriptCore/generated\\Grammar.tab.c" +#line 400 "/JavaScriptCore/generated/Grammar.tab.c" #ifdef short # undef short @@ -2974,42 +2974,42 @@ yyreduce: case 2: /* Line 1455 of yacc.c */ -#line 293 "parser\\Grammar.y" +#line 293 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NullNode(GLOBAL_DATA), 0, 1); ;} break; case 3: /* Line 1455 of yacc.c */ -#line 294 "parser\\Grammar.y" +#line 294 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BooleanNode(GLOBAL_DATA, true), 0, 1); ;} break; case 4: /* Line 1455 of yacc.c */ -#line 295 "parser\\Grammar.y" +#line 295 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BooleanNode(GLOBAL_DATA, false), 0, 1); ;} break; case 5: /* Line 1455 of yacc.c */ -#line 296 "parser\\Grammar.y" +#line 296 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeNumberNode(GLOBAL_DATA, (yyvsp[(1) - (1)].doubleValue)), 0, 1); ;} break; case 6: /* Line 1455 of yacc.c */ -#line 297 "parser\\Grammar.y" +#line 297 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) StringNode(GLOBAL_DATA, *(yyvsp[(1) - (1)].ident)), 0, 1); ;} break; case 7: /* Line 1455 of yacc.c */ -#line 298 "parser\\Grammar.y" +#line 298 "parser/Grammar.y" { Lexer& l = *GLOBAL_DATA->lexer; const Identifier* pattern; @@ -3026,7 +3026,7 @@ yyreduce: case 8: /* Line 1455 of yacc.c */ -#line 309 "parser\\Grammar.y" +#line 309 "parser/Grammar.y" { Lexer& l = *GLOBAL_DATA->lexer; const Identifier* pattern; @@ -3043,35 +3043,35 @@ yyreduce: case 9: /* Line 1455 of yacc.c */ -#line 323 "parser\\Grammar.y" +#line 323 "parser/Grammar.y" { (yyval.propertyNode) = createNodeInfo<PropertyNode*>(new (GLOBAL_DATA) PropertyNode(GLOBAL_DATA, *(yyvsp[(1) - (3)].ident), (yyvsp[(3) - (3)].expressionNode).m_node, PropertyNode::Constant), (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 10: /* Line 1455 of yacc.c */ -#line 324 "parser\\Grammar.y" +#line 324 "parser/Grammar.y" { (yyval.propertyNode) = createNodeInfo<PropertyNode*>(new (GLOBAL_DATA) PropertyNode(GLOBAL_DATA, *(yyvsp[(1) - (3)].ident), (yyvsp[(3) - (3)].expressionNode).m_node, PropertyNode::Constant), (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 11: /* Line 1455 of yacc.c */ -#line 325 "parser\\Grammar.y" +#line 325 "parser/Grammar.y" { (yyval.propertyNode) = createNodeInfo<PropertyNode*>(new (GLOBAL_DATA) PropertyNode(GLOBAL_DATA, (yyvsp[(1) - (3)].doubleValue), (yyvsp[(3) - (3)].expressionNode).m_node, PropertyNode::Constant), (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 12: /* Line 1455 of yacc.c */ -#line 326 "parser\\Grammar.y" +#line 326 "parser/Grammar.y" { (yyval.propertyNode) = createNodeInfo<PropertyNode*>(makeGetterOrSetterPropertyNode(GLOBAL_DATA, *(yyvsp[(1) - (7)].ident), *(yyvsp[(2) - (7)].ident), 0, (yyvsp[(6) - (7)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode((yyvsp[(5) - (7)].intValue), (yyvsp[(7) - (7)].intValue), (yylsp[(5) - (7)]).first_line)), ClosureFeature, 0); setStatementLocation((yyvsp[(6) - (7)].functionBodyNode), (yylsp[(5) - (7)]), (yylsp[(7) - (7)])); if (!(yyval.propertyNode).m_node) YYABORT; ;} break; case 13: /* Line 1455 of yacc.c */ -#line 328 "parser\\Grammar.y" +#line 328 "parser/Grammar.y" { (yyval.propertyNode) = createNodeInfo<PropertyNode*>(makeGetterOrSetterPropertyNode(GLOBAL_DATA, *(yyvsp[(1) - (8)].ident), *(yyvsp[(2) - (8)].ident), (yyvsp[(4) - (8)].parameterList).m_node.head, (yyvsp[(7) - (8)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode((yyvsp[(6) - (8)].intValue), (yyvsp[(8) - (8)].intValue), (yylsp[(6) - (8)]).first_line)), (yyvsp[(4) - (8)].parameterList).m_features | ClosureFeature, 0); if ((yyvsp[(4) - (8)].parameterList).m_features & ArgumentsFeature) @@ -3085,7 +3085,7 @@ yyreduce: case 14: /* Line 1455 of yacc.c */ -#line 339 "parser\\Grammar.y" +#line 339 "parser/Grammar.y" { (yyval.propertyList).m_node.head = new (GLOBAL_DATA) PropertyListNode(GLOBAL_DATA, (yyvsp[(1) - (1)].propertyNode).m_node); (yyval.propertyList).m_node.tail = (yyval.propertyList).m_node.head; (yyval.propertyList).m_features = (yyvsp[(1) - (1)].propertyNode).m_features; @@ -3095,7 +3095,7 @@ yyreduce: case 15: /* Line 1455 of yacc.c */ -#line 343 "parser\\Grammar.y" +#line 343 "parser/Grammar.y" { (yyval.propertyList).m_node.head = (yyvsp[(1) - (3)].propertyList).m_node.head; (yyval.propertyList).m_node.tail = new (GLOBAL_DATA) PropertyListNode(GLOBAL_DATA, (yyvsp[(3) - (3)].propertyNode).m_node, (yyvsp[(1) - (3)].propertyList).m_node.tail); (yyval.propertyList).m_features = (yyvsp[(1) - (3)].propertyList).m_features | (yyvsp[(3) - (3)].propertyNode).m_features; @@ -3105,70 +3105,70 @@ yyreduce: case 17: /* Line 1455 of yacc.c */ -#line 351 "parser\\Grammar.y" +#line 351 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ObjectLiteralNode(GLOBAL_DATA), 0, 0); ;} break; case 18: /* Line 1455 of yacc.c */ -#line 352 "parser\\Grammar.y" +#line 352 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ObjectLiteralNode(GLOBAL_DATA, (yyvsp[(2) - (3)].propertyList).m_node.head), (yyvsp[(2) - (3)].propertyList).m_features, (yyvsp[(2) - (3)].propertyList).m_numConstants); ;} break; case 19: /* Line 1455 of yacc.c */ -#line 354 "parser\\Grammar.y" +#line 354 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ObjectLiteralNode(GLOBAL_DATA, (yyvsp[(2) - (4)].propertyList).m_node.head), (yyvsp[(2) - (4)].propertyList).m_features, (yyvsp[(2) - (4)].propertyList).m_numConstants); ;} break; case 20: /* Line 1455 of yacc.c */ -#line 358 "parser\\Grammar.y" +#line 358 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ThisNode(GLOBAL_DATA), ThisFeature, 0); ;} break; case 23: /* Line 1455 of yacc.c */ -#line 361 "parser\\Grammar.y" +#line 361 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ResolveNode(GLOBAL_DATA, *(yyvsp[(1) - (1)].ident), (yylsp[(1) - (1)]).first_column), (*(yyvsp[(1) - (1)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0, 0); ;} break; case 24: /* Line 1455 of yacc.c */ -#line 362 "parser\\Grammar.y" +#line 362 "parser/Grammar.y" { (yyval.expressionNode) = (yyvsp[(2) - (3)].expressionNode); ;} break; case 25: /* Line 1455 of yacc.c */ -#line 366 "parser\\Grammar.y" +#line 366 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ArrayNode(GLOBAL_DATA, (yyvsp[(2) - (3)].intValue)), 0, (yyvsp[(2) - (3)].intValue) ? 1 : 0); ;} break; case 26: /* Line 1455 of yacc.c */ -#line 367 "parser\\Grammar.y" +#line 367 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ArrayNode(GLOBAL_DATA, (yyvsp[(2) - (3)].elementList).m_node.head), (yyvsp[(2) - (3)].elementList).m_features, (yyvsp[(2) - (3)].elementList).m_numConstants); ;} break; case 27: /* Line 1455 of yacc.c */ -#line 368 "parser\\Grammar.y" +#line 368 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ArrayNode(GLOBAL_DATA, (yyvsp[(4) - (5)].intValue), (yyvsp[(2) - (5)].elementList).m_node.head), (yyvsp[(2) - (5)].elementList).m_features, (yyvsp[(4) - (5)].intValue) ? (yyvsp[(2) - (5)].elementList).m_numConstants + 1 : (yyvsp[(2) - (5)].elementList).m_numConstants); ;} break; case 28: /* Line 1455 of yacc.c */ -#line 372 "parser\\Grammar.y" +#line 372 "parser/Grammar.y" { (yyval.elementList).m_node.head = new (GLOBAL_DATA) ElementNode(GLOBAL_DATA, (yyvsp[(1) - (2)].intValue), (yyvsp[(2) - (2)].expressionNode).m_node); (yyval.elementList).m_node.tail = (yyval.elementList).m_node.head; (yyval.elementList).m_features = (yyvsp[(2) - (2)].expressionNode).m_features; @@ -3178,7 +3178,7 @@ yyreduce: case 29: /* Line 1455 of yacc.c */ -#line 377 "parser\\Grammar.y" +#line 377 "parser/Grammar.y" { (yyval.elementList).m_node.head = (yyvsp[(1) - (4)].elementList).m_node.head; (yyval.elementList).m_node.tail = new (GLOBAL_DATA) ElementNode(GLOBAL_DATA, (yyvsp[(1) - (4)].elementList).m_node.tail, (yyvsp[(3) - (4)].intValue), (yyvsp[(4) - (4)].expressionNode).m_node); (yyval.elementList).m_features = (yyvsp[(1) - (4)].elementList).m_features | (yyvsp[(4) - (4)].expressionNode).m_features; @@ -3188,35 +3188,35 @@ yyreduce: case 30: /* Line 1455 of yacc.c */ -#line 384 "parser\\Grammar.y" +#line 384 "parser/Grammar.y" { (yyval.intValue) = 0; ;} break; case 32: /* Line 1455 of yacc.c */ -#line 389 "parser\\Grammar.y" +#line 389 "parser/Grammar.y" { (yyval.intValue) = 1; ;} break; case 33: /* Line 1455 of yacc.c */ -#line 390 "parser\\Grammar.y" +#line 390 "parser/Grammar.y" { (yyval.intValue) = (yyvsp[(1) - (2)].intValue) + 1; ;} break; case 35: /* Line 1455 of yacc.c */ -#line 395 "parser\\Grammar.y" +#line 395 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>((yyvsp[(1) - (1)].funcExprNode).m_node, (yyvsp[(1) - (1)].funcExprNode).m_features, (yyvsp[(1) - (1)].funcExprNode).m_numConstants); ;} break; case 36: /* Line 1455 of yacc.c */ -#line 396 "parser\\Grammar.y" +#line 396 "parser/Grammar.y" { BracketAccessorNode* node = new (GLOBAL_DATA) BracketAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_features & AssignFeature); setExceptionLocation(node, (yylsp[(1) - (4)]).first_column, (yylsp[(1) - (4)]).last_column, (yylsp[(4) - (4)]).last_column); (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (4)].expressionNode).m_features | (yyvsp[(3) - (4)].expressionNode).m_features, (yyvsp[(1) - (4)].expressionNode).m_numConstants + (yyvsp[(3) - (4)].expressionNode).m_numConstants); @@ -3226,7 +3226,7 @@ yyreduce: case 37: /* Line 1455 of yacc.c */ -#line 400 "parser\\Grammar.y" +#line 400 "parser/Grammar.y" { DotAccessorNode* node = new (GLOBAL_DATA) DotAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, *(yyvsp[(3) - (3)].ident)); setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(1) - (3)]).last_column, (yylsp[(3) - (3)]).last_column); (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants); @@ -3236,7 +3236,7 @@ yyreduce: case 38: /* Line 1455 of yacc.c */ -#line 404 "parser\\Grammar.y" +#line 404 "parser/Grammar.y" { NewExprNode* node = new (GLOBAL_DATA) NewExprNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].argumentsNode).m_node); setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(3) - (3)]).last_column); (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(2) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].argumentsNode).m_features, (yyvsp[(2) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].argumentsNode).m_numConstants); @@ -3246,7 +3246,7 @@ yyreduce: case 40: /* Line 1455 of yacc.c */ -#line 412 "parser\\Grammar.y" +#line 412 "parser/Grammar.y" { BracketAccessorNode* node = new (GLOBAL_DATA) BracketAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_features & AssignFeature); setExceptionLocation(node, (yylsp[(1) - (4)]).first_column, (yylsp[(1) - (4)]).last_column, (yylsp[(4) - (4)]).last_column); (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (4)].expressionNode).m_features | (yyvsp[(3) - (4)].expressionNode).m_features, (yyvsp[(1) - (4)].expressionNode).m_numConstants + (yyvsp[(3) - (4)].expressionNode).m_numConstants); @@ -3256,7 +3256,7 @@ yyreduce: case 41: /* Line 1455 of yacc.c */ -#line 416 "parser\\Grammar.y" +#line 416 "parser/Grammar.y" { DotAccessorNode* node = new (GLOBAL_DATA) DotAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, *(yyvsp[(3) - (3)].ident)); setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(1) - (3)]).last_column, (yylsp[(3) - (3)]).last_column); (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants); @@ -3266,7 +3266,7 @@ yyreduce: case 42: /* Line 1455 of yacc.c */ -#line 420 "parser\\Grammar.y" +#line 420 "parser/Grammar.y" { NewExprNode* node = new (GLOBAL_DATA) NewExprNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].argumentsNode).m_node); setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(3) - (3)]).last_column); (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(2) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].argumentsNode).m_features, (yyvsp[(2) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].argumentsNode).m_numConstants); @@ -3276,7 +3276,7 @@ yyreduce: case 44: /* Line 1455 of yacc.c */ -#line 428 "parser\\Grammar.y" +#line 428 "parser/Grammar.y" { NewExprNode* node = new (GLOBAL_DATA) NewExprNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node); setExceptionLocation(node, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).last_column, (yylsp[(2) - (2)]).last_column); (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); @@ -3286,7 +3286,7 @@ yyreduce: case 46: /* Line 1455 of yacc.c */ -#line 436 "parser\\Grammar.y" +#line 436 "parser/Grammar.y" { NewExprNode* node = new (GLOBAL_DATA) NewExprNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node); setExceptionLocation(node, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).last_column, (yylsp[(2) - (2)]).last_column); (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); @@ -3296,21 +3296,21 @@ yyreduce: case 47: /* Line 1455 of yacc.c */ -#line 443 "parser\\Grammar.y" +#line 443 "parser/Grammar.y" { (yyval.expressionNode) = makeFunctionCallNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode), (yyvsp[(2) - (2)].argumentsNode), (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column); ;} break; case 48: /* Line 1455 of yacc.c */ -#line 444 "parser\\Grammar.y" +#line 444 "parser/Grammar.y" { (yyval.expressionNode) = makeFunctionCallNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode), (yyvsp[(2) - (2)].argumentsNode), (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column); ;} break; case 49: /* Line 1455 of yacc.c */ -#line 445 "parser\\Grammar.y" +#line 445 "parser/Grammar.y" { BracketAccessorNode* node = new (GLOBAL_DATA) BracketAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_features & AssignFeature); setExceptionLocation(node, (yylsp[(1) - (4)]).first_column, (yylsp[(1) - (4)]).last_column, (yylsp[(4) - (4)]).last_column); (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (4)].expressionNode).m_features | (yyvsp[(3) - (4)].expressionNode).m_features, (yyvsp[(1) - (4)].expressionNode).m_numConstants + (yyvsp[(3) - (4)].expressionNode).m_numConstants); @@ -3320,7 +3320,7 @@ yyreduce: case 50: /* Line 1455 of yacc.c */ -#line 449 "parser\\Grammar.y" +#line 449 "parser/Grammar.y" { DotAccessorNode* node = new (GLOBAL_DATA) DotAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, *(yyvsp[(3) - (3)].ident)); setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(1) - (3)]).last_column, (yylsp[(3) - (3)]).last_column); (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants); ;} @@ -3329,21 +3329,21 @@ yyreduce: case 51: /* Line 1455 of yacc.c */ -#line 455 "parser\\Grammar.y" +#line 455 "parser/Grammar.y" { (yyval.expressionNode) = makeFunctionCallNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode), (yyvsp[(2) - (2)].argumentsNode), (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column); ;} break; case 52: /* Line 1455 of yacc.c */ -#line 456 "parser\\Grammar.y" +#line 456 "parser/Grammar.y" { (yyval.expressionNode) = makeFunctionCallNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode), (yyvsp[(2) - (2)].argumentsNode), (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column); ;} break; case 53: /* Line 1455 of yacc.c */ -#line 457 "parser\\Grammar.y" +#line 457 "parser/Grammar.y" { BracketAccessorNode* node = new (GLOBAL_DATA) BracketAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_node, (yyvsp[(3) - (4)].expressionNode).m_features & AssignFeature); setExceptionLocation(node, (yylsp[(1) - (4)]).first_column, (yylsp[(1) - (4)]).last_column, (yylsp[(4) - (4)]).last_column); (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (4)].expressionNode).m_features | (yyvsp[(3) - (4)].expressionNode).m_features, (yyvsp[(1) - (4)].expressionNode).m_numConstants + (yyvsp[(3) - (4)].expressionNode).m_numConstants); @@ -3353,7 +3353,7 @@ yyreduce: case 54: /* Line 1455 of yacc.c */ -#line 461 "parser\\Grammar.y" +#line 461 "parser/Grammar.y" { DotAccessorNode* node = new (GLOBAL_DATA) DotAccessorNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, *(yyvsp[(3) - (3)].ident)); setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(1) - (3)]).last_column, (yylsp[(3) - (3)]).last_column); (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants); @@ -3363,21 +3363,21 @@ yyreduce: case 55: /* Line 1455 of yacc.c */ -#line 468 "parser\\Grammar.y" +#line 468 "parser/Grammar.y" { (yyval.argumentsNode) = createNodeInfo<ArgumentsNode*>(new (GLOBAL_DATA) ArgumentsNode(GLOBAL_DATA), 0, 0); ;} break; case 56: /* Line 1455 of yacc.c */ -#line 469 "parser\\Grammar.y" +#line 469 "parser/Grammar.y" { (yyval.argumentsNode) = createNodeInfo<ArgumentsNode*>(new (GLOBAL_DATA) ArgumentsNode(GLOBAL_DATA, (yyvsp[(2) - (3)].argumentList).m_node.head), (yyvsp[(2) - (3)].argumentList).m_features, (yyvsp[(2) - (3)].argumentList).m_numConstants); ;} break; case 57: /* Line 1455 of yacc.c */ -#line 473 "parser\\Grammar.y" +#line 473 "parser/Grammar.y" { (yyval.argumentList).m_node.head = new (GLOBAL_DATA) ArgumentListNode(GLOBAL_DATA, (yyvsp[(1) - (1)].expressionNode).m_node); (yyval.argumentList).m_node.tail = (yyval.argumentList).m_node.head; (yyval.argumentList).m_features = (yyvsp[(1) - (1)].expressionNode).m_features; @@ -3387,7 +3387,7 @@ yyreduce: case 58: /* Line 1455 of yacc.c */ -#line 477 "parser\\Grammar.y" +#line 477 "parser/Grammar.y" { (yyval.argumentList).m_node.head = (yyvsp[(1) - (3)].argumentList).m_node.head; (yyval.argumentList).m_node.tail = new (GLOBAL_DATA) ArgumentListNode(GLOBAL_DATA, (yyvsp[(1) - (3)].argumentList).m_node.tail, (yyvsp[(3) - (3)].expressionNode).m_node); (yyval.argumentList).m_features = (yyvsp[(1) - (3)].argumentList).m_features | (yyvsp[(3) - (3)].expressionNode).m_features; @@ -3397,252 +3397,252 @@ yyreduce: case 64: /* Line 1455 of yacc.c */ -#line 495 "parser\\Grammar.y" +#line 495 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePostfixNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node, OpPlusPlus, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column), (yyvsp[(1) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(1) - (2)].expressionNode).m_numConstants); ;} break; case 65: /* Line 1455 of yacc.c */ -#line 496 "parser\\Grammar.y" +#line 496 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePostfixNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node, OpMinusMinus, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column), (yyvsp[(1) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(1) - (2)].expressionNode).m_numConstants); ;} break; case 67: /* Line 1455 of yacc.c */ -#line 501 "parser\\Grammar.y" +#line 501 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePostfixNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node, OpPlusPlus, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column), (yyvsp[(1) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(1) - (2)].expressionNode).m_numConstants); ;} break; case 68: /* Line 1455 of yacc.c */ -#line 502 "parser\\Grammar.y" +#line 502 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePostfixNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node, OpMinusMinus, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(2) - (2)]).last_column), (yyvsp[(1) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(1) - (2)].expressionNode).m_numConstants); ;} break; case 69: /* Line 1455 of yacc.c */ -#line 506 "parser\\Grammar.y" +#line 506 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeDeleteNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).last_column, (yylsp[(2) - (2)]).last_column), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;} break; case 70: /* Line 1455 of yacc.c */ -#line 507 "parser\\Grammar.y" +#line 507 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) VoidNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants + 1); ;} break; case 71: /* Line 1455 of yacc.c */ -#line 508 "parser\\Grammar.y" +#line 508 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeTypeOfNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;} break; case 72: /* Line 1455 of yacc.c */ -#line 509 "parser\\Grammar.y" +#line 509 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePrefixNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node, OpPlusPlus, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).first_column + 1, (yylsp[(2) - (2)]).last_column), (yyvsp[(2) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;} break; case 73: /* Line 1455 of yacc.c */ -#line 510 "parser\\Grammar.y" +#line 510 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePrefixNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node, OpPlusPlus, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).first_column + 1, (yylsp[(2) - (2)]).last_column), (yyvsp[(2) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;} break; case 74: /* Line 1455 of yacc.c */ -#line 511 "parser\\Grammar.y" +#line 511 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePrefixNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node, OpMinusMinus, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).first_column + 1, (yylsp[(2) - (2)]).last_column), (yyvsp[(2) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;} break; case 75: /* Line 1455 of yacc.c */ -#line 512 "parser\\Grammar.y" +#line 512 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makePrefixNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node, OpMinusMinus, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).first_column + 1, (yylsp[(2) - (2)]).last_column), (yyvsp[(2) - (2)].expressionNode).m_features | AssignFeature, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;} break; case 76: /* Line 1455 of yacc.c */ -#line 513 "parser\\Grammar.y" +#line 513 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) UnaryPlusNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;} break; case 77: /* Line 1455 of yacc.c */ -#line 514 "parser\\Grammar.y" +#line 514 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeNegateNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;} break; case 78: /* Line 1455 of yacc.c */ -#line 515 "parser\\Grammar.y" +#line 515 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeBitwiseNotNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;} break; case 79: /* Line 1455 of yacc.c */ -#line 516 "parser\\Grammar.y" +#line 516 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalNotNode(GLOBAL_DATA, (yyvsp[(2) - (2)].expressionNode).m_node), (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;} break; case 85: /* Line 1455 of yacc.c */ -#line 530 "parser\\Grammar.y" +#line 530 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeMultNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 86: /* Line 1455 of yacc.c */ -#line 531 "parser\\Grammar.y" +#line 531 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeDivNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 87: /* Line 1455 of yacc.c */ -#line 532 "parser\\Grammar.y" +#line 532 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ModNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 89: /* Line 1455 of yacc.c */ -#line 538 "parser\\Grammar.y" +#line 538 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeMultNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 90: /* Line 1455 of yacc.c */ -#line 540 "parser\\Grammar.y" +#line 540 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeDivNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 91: /* Line 1455 of yacc.c */ -#line 542 "parser\\Grammar.y" +#line 542 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ModNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 93: /* Line 1455 of yacc.c */ -#line 547 "parser\\Grammar.y" +#line 547 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeAddNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 94: /* Line 1455 of yacc.c */ -#line 548 "parser\\Grammar.y" +#line 548 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeSubNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 96: /* Line 1455 of yacc.c */ -#line 554 "parser\\Grammar.y" +#line 554 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeAddNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 97: /* Line 1455 of yacc.c */ -#line 556 "parser\\Grammar.y" +#line 556 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeSubNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 99: /* Line 1455 of yacc.c */ -#line 561 "parser\\Grammar.y" +#line 561 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeLeftShiftNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 100: /* Line 1455 of yacc.c */ -#line 562 "parser\\Grammar.y" +#line 562 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeRightShiftNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 101: /* Line 1455 of yacc.c */ -#line 563 "parser\\Grammar.y" +#line 563 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) UnsignedRightShiftNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 103: /* Line 1455 of yacc.c */ -#line 568 "parser\\Grammar.y" +#line 568 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeLeftShiftNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 104: /* Line 1455 of yacc.c */ -#line 569 "parser\\Grammar.y" +#line 569 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeRightShiftNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 105: /* Line 1455 of yacc.c */ -#line 570 "parser\\Grammar.y" +#line 570 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) UnsignedRightShiftNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 107: /* Line 1455 of yacc.c */ -#line 575 "parser\\Grammar.y" +#line 575 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 108: /* Line 1455 of yacc.c */ -#line 576 "parser\\Grammar.y" +#line 576 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 109: /* Line 1455 of yacc.c */ -#line 577 "parser\\Grammar.y" +#line 577 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 110: /* Line 1455 of yacc.c */ -#line 578 "parser\\Grammar.y" +#line 578 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 111: /* Line 1455 of yacc.c */ -#line 579 "parser\\Grammar.y" +#line 579 "parser/Grammar.y" { InstanceOfNode* node = new (GLOBAL_DATA) InstanceOfNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature); setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(3) - (3)]).first_column, (yylsp[(3) - (3)]).last_column); (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} @@ -3651,7 +3651,7 @@ yyreduce: case 112: /* Line 1455 of yacc.c */ -#line 582 "parser\\Grammar.y" +#line 582 "parser/Grammar.y" { InNode* node = new (GLOBAL_DATA) InNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature); setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(3) - (3)]).first_column, (yylsp[(3) - (3)]).last_column); (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} @@ -3660,35 +3660,35 @@ yyreduce: case 114: /* Line 1455 of yacc.c */ -#line 589 "parser\\Grammar.y" +#line 589 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 115: /* Line 1455 of yacc.c */ -#line 590 "parser\\Grammar.y" +#line 590 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 116: /* Line 1455 of yacc.c */ -#line 591 "parser\\Grammar.y" +#line 591 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 117: /* Line 1455 of yacc.c */ -#line 592 "parser\\Grammar.y" +#line 592 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 118: /* Line 1455 of yacc.c */ -#line 594 "parser\\Grammar.y" +#line 594 "parser/Grammar.y" { InstanceOfNode* node = new (GLOBAL_DATA) InstanceOfNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature); setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(3) - (3)]).first_column, (yylsp[(3) - (3)]).last_column); (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} @@ -3697,35 +3697,35 @@ yyreduce: case 120: /* Line 1455 of yacc.c */ -#line 601 "parser\\Grammar.y" +#line 601 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 121: /* Line 1455 of yacc.c */ -#line 602 "parser\\Grammar.y" +#line 602 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 122: /* Line 1455 of yacc.c */ -#line 603 "parser\\Grammar.y" +#line 603 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LessEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 123: /* Line 1455 of yacc.c */ -#line 604 "parser\\Grammar.y" +#line 604 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) GreaterEqNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 124: /* Line 1455 of yacc.c */ -#line 606 "parser\\Grammar.y" +#line 606 "parser/Grammar.y" { InstanceOfNode* node = new (GLOBAL_DATA) InstanceOfNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature); setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(3) - (3)]).first_column, (yylsp[(3) - (3)]).last_column); (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} @@ -3734,7 +3734,7 @@ yyreduce: case 125: /* Line 1455 of yacc.c */ -#line 610 "parser\\Grammar.y" +#line 610 "parser/Grammar.y" { InNode* node = new (GLOBAL_DATA) InNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature); setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(3) - (3)]).first_column, (yylsp[(3) - (3)]).last_column); (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(node, (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} @@ -3743,217 +3743,217 @@ yyreduce: case 127: /* Line 1455 of yacc.c */ -#line 617 "parser\\Grammar.y" +#line 617 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) EqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 128: /* Line 1455 of yacc.c */ -#line 618 "parser\\Grammar.y" +#line 618 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 129: /* Line 1455 of yacc.c */ -#line 619 "parser\\Grammar.y" +#line 619 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) StrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 130: /* Line 1455 of yacc.c */ -#line 620 "parser\\Grammar.y" +#line 620 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotStrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 132: /* Line 1455 of yacc.c */ -#line 626 "parser\\Grammar.y" +#line 626 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) EqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 133: /* Line 1455 of yacc.c */ -#line 628 "parser\\Grammar.y" +#line 628 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 134: /* Line 1455 of yacc.c */ -#line 630 "parser\\Grammar.y" +#line 630 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) StrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 135: /* Line 1455 of yacc.c */ -#line 632 "parser\\Grammar.y" +#line 632 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotStrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 137: /* Line 1455 of yacc.c */ -#line 638 "parser\\Grammar.y" +#line 638 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) EqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 138: /* Line 1455 of yacc.c */ -#line 639 "parser\\Grammar.y" +#line 639 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 139: /* Line 1455 of yacc.c */ -#line 641 "parser\\Grammar.y" +#line 641 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) StrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 140: /* Line 1455 of yacc.c */ -#line 643 "parser\\Grammar.y" +#line 643 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) NotStrictEqualNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 142: /* Line 1455 of yacc.c */ -#line 648 "parser\\Grammar.y" +#line 648 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitAndNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 144: /* Line 1455 of yacc.c */ -#line 654 "parser\\Grammar.y" +#line 654 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitAndNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 146: /* Line 1455 of yacc.c */ -#line 659 "parser\\Grammar.y" +#line 659 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitAndNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 148: /* Line 1455 of yacc.c */ -#line 664 "parser\\Grammar.y" +#line 664 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitXOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 150: /* Line 1455 of yacc.c */ -#line 670 "parser\\Grammar.y" +#line 670 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitXOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 152: /* Line 1455 of yacc.c */ -#line 676 "parser\\Grammar.y" +#line 676 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitXOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 154: /* Line 1455 of yacc.c */ -#line 681 "parser\\Grammar.y" +#line 681 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 156: /* Line 1455 of yacc.c */ -#line 687 "parser\\Grammar.y" +#line 687 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 158: /* Line 1455 of yacc.c */ -#line 693 "parser\\Grammar.y" +#line 693 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) BitOrNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 160: /* Line 1455 of yacc.c */ -#line 698 "parser\\Grammar.y" +#line 698 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalAnd), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 162: /* Line 1455 of yacc.c */ -#line 704 "parser\\Grammar.y" +#line 704 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalAnd), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 164: /* Line 1455 of yacc.c */ -#line 710 "parser\\Grammar.y" +#line 710 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalAnd), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 166: /* Line 1455 of yacc.c */ -#line 715 "parser\\Grammar.y" +#line 715 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalOr), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 168: /* Line 1455 of yacc.c */ -#line 721 "parser\\Grammar.y" +#line 721 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalOr), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 170: /* Line 1455 of yacc.c */ -#line 726 "parser\\Grammar.y" +#line 726 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) LogicalOpNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node, OpLogicalOr), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 172: /* Line 1455 of yacc.c */ -#line 732 "parser\\Grammar.y" +#line 732 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ConditionalNode(GLOBAL_DATA, (yyvsp[(1) - (5)].expressionNode).m_node, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].expressionNode).m_node), (yyvsp[(1) - (5)].expressionNode).m_features | (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].expressionNode).m_features, (yyvsp[(1) - (5)].expressionNode).m_numConstants + (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].expressionNode).m_numConstants); ;} break; case 174: /* Line 1455 of yacc.c */ -#line 738 "parser\\Grammar.y" +#line 738 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ConditionalNode(GLOBAL_DATA, (yyvsp[(1) - (5)].expressionNode).m_node, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].expressionNode).m_node), (yyvsp[(1) - (5)].expressionNode).m_features | (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].expressionNode).m_features, (yyvsp[(1) - (5)].expressionNode).m_numConstants + (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].expressionNode).m_numConstants); ;} break; case 176: /* Line 1455 of yacc.c */ -#line 744 "parser\\Grammar.y" +#line 744 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(new (GLOBAL_DATA) ConditionalNode(GLOBAL_DATA, (yyvsp[(1) - (5)].expressionNode).m_node, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].expressionNode).m_node), (yyvsp[(1) - (5)].expressionNode).m_features | (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].expressionNode).m_features, (yyvsp[(1) - (5)].expressionNode).m_numConstants + (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].expressionNode).m_numConstants); ;} break; case 178: /* Line 1455 of yacc.c */ -#line 750 "parser\\Grammar.y" +#line 750 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeAssignNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(2) - (3)].op), (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(1) - (3)].expressionNode).m_features & AssignFeature, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).first_column + 1, (yylsp[(3) - (3)]).last_column), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features | AssignFeature, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} @@ -3962,7 +3962,7 @@ yyreduce: case 180: /* Line 1455 of yacc.c */ -#line 758 "parser\\Grammar.y" +#line 758 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeAssignNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(2) - (3)].op), (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(1) - (3)].expressionNode).m_features & AssignFeature, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).first_column + 1, (yylsp[(3) - (3)]).last_column), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features | AssignFeature, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} @@ -3971,7 +3971,7 @@ yyreduce: case 182: /* Line 1455 of yacc.c */ -#line 766 "parser\\Grammar.y" +#line 766 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(makeAssignNode(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(2) - (3)].op), (yyvsp[(3) - (3)].expressionNode).m_node, (yyvsp[(1) - (3)].expressionNode).m_features & AssignFeature, (yyvsp[(3) - (3)].expressionNode).m_features & AssignFeature, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).first_column + 1, (yylsp[(3) - (3)]).last_column), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features | AssignFeature, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} @@ -3980,112 +3980,112 @@ yyreduce: case 183: /* Line 1455 of yacc.c */ -#line 772 "parser\\Grammar.y" +#line 772 "parser/Grammar.y" { (yyval.op) = OpEqual; ;} break; case 184: /* Line 1455 of yacc.c */ -#line 773 "parser\\Grammar.y" +#line 773 "parser/Grammar.y" { (yyval.op) = OpPlusEq; ;} break; case 185: /* Line 1455 of yacc.c */ -#line 774 "parser\\Grammar.y" +#line 774 "parser/Grammar.y" { (yyval.op) = OpMinusEq; ;} break; case 186: /* Line 1455 of yacc.c */ -#line 775 "parser\\Grammar.y" +#line 775 "parser/Grammar.y" { (yyval.op) = OpMultEq; ;} break; case 187: /* Line 1455 of yacc.c */ -#line 776 "parser\\Grammar.y" +#line 776 "parser/Grammar.y" { (yyval.op) = OpDivEq; ;} break; case 188: /* Line 1455 of yacc.c */ -#line 777 "parser\\Grammar.y" +#line 777 "parser/Grammar.y" { (yyval.op) = OpLShift; ;} break; case 189: /* Line 1455 of yacc.c */ -#line 778 "parser\\Grammar.y" +#line 778 "parser/Grammar.y" { (yyval.op) = OpRShift; ;} break; case 190: /* Line 1455 of yacc.c */ -#line 779 "parser\\Grammar.y" +#line 779 "parser/Grammar.y" { (yyval.op) = OpURShift; ;} break; case 191: /* Line 1455 of yacc.c */ -#line 780 "parser\\Grammar.y" +#line 780 "parser/Grammar.y" { (yyval.op) = OpAndEq; ;} break; case 192: /* Line 1455 of yacc.c */ -#line 781 "parser\\Grammar.y" +#line 781 "parser/Grammar.y" { (yyval.op) = OpXOrEq; ;} break; case 193: /* Line 1455 of yacc.c */ -#line 782 "parser\\Grammar.y" +#line 782 "parser/Grammar.y" { (yyval.op) = OpOrEq; ;} break; case 194: /* Line 1455 of yacc.c */ -#line 783 "parser\\Grammar.y" +#line 783 "parser/Grammar.y" { (yyval.op) = OpModEq; ;} break; case 196: /* Line 1455 of yacc.c */ -#line 788 "parser\\Grammar.y" +#line 788 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(combineCommaNodes(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 198: /* Line 1455 of yacc.c */ -#line 793 "parser\\Grammar.y" +#line 793 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(combineCommaNodes(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 200: /* Line 1455 of yacc.c */ -#line 798 "parser\\Grammar.y" +#line 798 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(combineCommaNodes(GLOBAL_DATA, (yyvsp[(1) - (3)].expressionNode).m_node, (yyvsp[(3) - (3)].expressionNode).m_node), (yyvsp[(1) - (3)].expressionNode).m_features | (yyvsp[(3) - (3)].expressionNode).m_features, (yyvsp[(1) - (3)].expressionNode).m_numConstants + (yyvsp[(3) - (3)].expressionNode).m_numConstants); ;} break; case 218: /* Line 1455 of yacc.c */ -#line 822 "parser\\Grammar.y" +#line 822 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BlockNode(GLOBAL_DATA, 0), 0, 0, 0, 0); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(2) - (2)])); ;} break; @@ -4093,7 +4093,7 @@ yyreduce: case 219: /* Line 1455 of yacc.c */ -#line 824 "parser\\Grammar.y" +#line 824 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BlockNode(GLOBAL_DATA, (yyvsp[(2) - (3)].sourceElements).m_node), (yyvsp[(2) - (3)].sourceElements).m_varDeclarations, (yyvsp[(2) - (3)].sourceElements).m_funcDeclarations, (yyvsp[(2) - (3)].sourceElements).m_features, (yyvsp[(2) - (3)].sourceElements).m_numConstants); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(3) - (3)])); ;} break; @@ -4101,7 +4101,7 @@ yyreduce: case 220: /* Line 1455 of yacc.c */ -#line 829 "parser\\Grammar.y" +#line 829 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(makeVarStatementNode(GLOBAL_DATA, (yyvsp[(2) - (3)].varDeclList).m_node), (yyvsp[(2) - (3)].varDeclList).m_varDeclarations, (yyvsp[(2) - (3)].varDeclList).m_funcDeclarations, (yyvsp[(2) - (3)].varDeclList).m_features, (yyvsp[(2) - (3)].varDeclList).m_numConstants); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(3) - (3)])); ;} break; @@ -4109,7 +4109,7 @@ yyreduce: case 221: /* Line 1455 of yacc.c */ -#line 831 "parser\\Grammar.y" +#line 831 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(makeVarStatementNode(GLOBAL_DATA, (yyvsp[(2) - (3)].varDeclList).m_node), (yyvsp[(2) - (3)].varDeclList).m_varDeclarations, (yyvsp[(2) - (3)].varDeclList).m_funcDeclarations, (yyvsp[(2) - (3)].varDeclList).m_features, (yyvsp[(2) - (3)].varDeclList).m_numConstants); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(2) - (3)])); AUTO_SEMICOLON; ;} @@ -4118,7 +4118,7 @@ yyreduce: case 222: /* Line 1455 of yacc.c */ -#line 837 "parser\\Grammar.y" +#line 837 "parser/Grammar.y" { (yyval.varDeclList).m_node = 0; (yyval.varDeclList).m_varDeclarations = new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::VarStack>; appendToVarDeclarationList(GLOBAL_DATA, (yyval.varDeclList).m_varDeclarations, *(yyvsp[(1) - (1)].ident), 0); @@ -4131,7 +4131,7 @@ yyreduce: case 223: /* Line 1455 of yacc.c */ -#line 844 "parser\\Grammar.y" +#line 844 "parser/Grammar.y" { AssignResolveNode* node = new (GLOBAL_DATA) AssignResolveNode(GLOBAL_DATA, *(yyvsp[(1) - (2)].ident), (yyvsp[(2) - (2)].expressionNode).m_node, (yyvsp[(2) - (2)].expressionNode).m_features & AssignFeature); setExceptionLocation(node, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).first_column + 1, (yylsp[(2) - (2)]).last_column); (yyval.varDeclList).m_node = node; @@ -4146,7 +4146,7 @@ yyreduce: case 224: /* Line 1455 of yacc.c */ -#line 854 "parser\\Grammar.y" +#line 854 "parser/Grammar.y" { (yyval.varDeclList).m_node = (yyvsp[(1) - (3)].varDeclList).m_node; (yyval.varDeclList).m_varDeclarations = (yyvsp[(1) - (3)].varDeclList).m_varDeclarations; appendToVarDeclarationList(GLOBAL_DATA, (yyval.varDeclList).m_varDeclarations, *(yyvsp[(3) - (3)].ident), 0); @@ -4159,7 +4159,7 @@ yyreduce: case 225: /* Line 1455 of yacc.c */ -#line 862 "parser\\Grammar.y" +#line 862 "parser/Grammar.y" { AssignResolveNode* node = new (GLOBAL_DATA) AssignResolveNode(GLOBAL_DATA, *(yyvsp[(3) - (4)].ident), (yyvsp[(4) - (4)].expressionNode).m_node, (yyvsp[(4) - (4)].expressionNode).m_features & AssignFeature); setExceptionLocation(node, (yylsp[(3) - (4)]).first_column, (yylsp[(4) - (4)]).first_column + 1, (yylsp[(4) - (4)]).last_column); (yyval.varDeclList).m_node = combineCommaNodes(GLOBAL_DATA, (yyvsp[(1) - (4)].varDeclList).m_node, node); @@ -4174,7 +4174,7 @@ yyreduce: case 226: /* Line 1455 of yacc.c */ -#line 874 "parser\\Grammar.y" +#line 874 "parser/Grammar.y" { (yyval.varDeclList).m_node = 0; (yyval.varDeclList).m_varDeclarations = new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::VarStack>; appendToVarDeclarationList(GLOBAL_DATA, (yyval.varDeclList).m_varDeclarations, *(yyvsp[(1) - (1)].ident), 0); @@ -4187,7 +4187,7 @@ yyreduce: case 227: /* Line 1455 of yacc.c */ -#line 881 "parser\\Grammar.y" +#line 881 "parser/Grammar.y" { AssignResolveNode* node = new (GLOBAL_DATA) AssignResolveNode(GLOBAL_DATA, *(yyvsp[(1) - (2)].ident), (yyvsp[(2) - (2)].expressionNode).m_node, (yyvsp[(2) - (2)].expressionNode).m_features & AssignFeature); setExceptionLocation(node, (yylsp[(1) - (2)]).first_column, (yylsp[(2) - (2)]).first_column + 1, (yylsp[(2) - (2)]).last_column); (yyval.varDeclList).m_node = node; @@ -4202,7 +4202,7 @@ yyreduce: case 228: /* Line 1455 of yacc.c */ -#line 891 "parser\\Grammar.y" +#line 891 "parser/Grammar.y" { (yyval.varDeclList).m_node = (yyvsp[(1) - (3)].varDeclList).m_node; (yyval.varDeclList).m_varDeclarations = (yyvsp[(1) - (3)].varDeclList).m_varDeclarations; appendToVarDeclarationList(GLOBAL_DATA, (yyval.varDeclList).m_varDeclarations, *(yyvsp[(3) - (3)].ident), 0); @@ -4215,7 +4215,7 @@ yyreduce: case 229: /* Line 1455 of yacc.c */ -#line 899 "parser\\Grammar.y" +#line 899 "parser/Grammar.y" { AssignResolveNode* node = new (GLOBAL_DATA) AssignResolveNode(GLOBAL_DATA, *(yyvsp[(3) - (4)].ident), (yyvsp[(4) - (4)].expressionNode).m_node, (yyvsp[(4) - (4)].expressionNode).m_features & AssignFeature); setExceptionLocation(node, (yylsp[(3) - (4)]).first_column, (yylsp[(4) - (4)]).first_column + 1, (yylsp[(4) - (4)]).last_column); (yyval.varDeclList).m_node = combineCommaNodes(GLOBAL_DATA, (yyvsp[(1) - (4)].varDeclList).m_node, node); @@ -4230,7 +4230,7 @@ yyreduce: case 230: /* Line 1455 of yacc.c */ -#line 911 "parser\\Grammar.y" +#line 911 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ConstStatementNode(GLOBAL_DATA, (yyvsp[(2) - (3)].constDeclList).m_node.head), (yyvsp[(2) - (3)].constDeclList).m_varDeclarations, (yyvsp[(2) - (3)].constDeclList).m_funcDeclarations, (yyvsp[(2) - (3)].constDeclList).m_features, (yyvsp[(2) - (3)].constDeclList).m_numConstants); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(3) - (3)])); ;} break; @@ -4238,7 +4238,7 @@ yyreduce: case 231: /* Line 1455 of yacc.c */ -#line 914 "parser\\Grammar.y" +#line 914 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ConstStatementNode(GLOBAL_DATA, (yyvsp[(2) - (3)].constDeclList).m_node.head), (yyvsp[(2) - (3)].constDeclList).m_varDeclarations, (yyvsp[(2) - (3)].constDeclList).m_funcDeclarations, (yyvsp[(2) - (3)].constDeclList).m_features, (yyvsp[(2) - (3)].constDeclList).m_numConstants); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(2) - (3)])); AUTO_SEMICOLON; ;} break; @@ -4246,7 +4246,7 @@ yyreduce: case 232: /* Line 1455 of yacc.c */ -#line 919 "parser\\Grammar.y" +#line 919 "parser/Grammar.y" { (yyval.constDeclList).m_node.head = (yyvsp[(1) - (1)].constDeclNode).m_node; (yyval.constDeclList).m_node.tail = (yyval.constDeclList).m_node.head; (yyval.constDeclList).m_varDeclarations = new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::VarStack>; @@ -4260,7 +4260,7 @@ yyreduce: case 233: /* Line 1455 of yacc.c */ -#line 928 "parser\\Grammar.y" +#line 928 "parser/Grammar.y" { (yyval.constDeclList).m_node.head = (yyvsp[(1) - (3)].constDeclList).m_node.head; (yyvsp[(1) - (3)].constDeclList).m_node.tail->m_next = (yyvsp[(3) - (3)].constDeclNode).m_node; (yyval.constDeclList).m_node.tail = (yyvsp[(3) - (3)].constDeclNode).m_node; @@ -4274,42 +4274,42 @@ yyreduce: case 234: /* Line 1455 of yacc.c */ -#line 939 "parser\\Grammar.y" +#line 939 "parser/Grammar.y" { (yyval.constDeclNode) = createNodeInfo<ConstDeclNode*>(new (GLOBAL_DATA) ConstDeclNode(GLOBAL_DATA, *(yyvsp[(1) - (1)].ident), 0), (*(yyvsp[(1) - (1)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0, 0); ;} break; case 235: /* Line 1455 of yacc.c */ -#line 940 "parser\\Grammar.y" +#line 940 "parser/Grammar.y" { (yyval.constDeclNode) = createNodeInfo<ConstDeclNode*>(new (GLOBAL_DATA) ConstDeclNode(GLOBAL_DATA, *(yyvsp[(1) - (2)].ident), (yyvsp[(2) - (2)].expressionNode).m_node), ((*(yyvsp[(1) - (2)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | (yyvsp[(2) - (2)].expressionNode).m_features, (yyvsp[(2) - (2)].expressionNode).m_numConstants); ;} break; case 236: /* Line 1455 of yacc.c */ -#line 944 "parser\\Grammar.y" +#line 944 "parser/Grammar.y" { (yyval.expressionNode) = (yyvsp[(2) - (2)].expressionNode); ;} break; case 237: /* Line 1455 of yacc.c */ -#line 948 "parser\\Grammar.y" +#line 948 "parser/Grammar.y" { (yyval.expressionNode) = (yyvsp[(2) - (2)].expressionNode); ;} break; case 238: /* Line 1455 of yacc.c */ -#line 952 "parser\\Grammar.y" +#line 952 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) EmptyStatementNode(GLOBAL_DATA), 0, 0, 0, 0); ;} break; case 239: /* Line 1455 of yacc.c */ -#line 956 "parser\\Grammar.y" +#line 956 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ExprStatementNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node), 0, 0, (yyvsp[(1) - (2)].expressionNode).m_features, (yyvsp[(1) - (2)].expressionNode).m_numConstants); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(2) - (2)])); ;} break; @@ -4317,7 +4317,7 @@ yyreduce: case 240: /* Line 1455 of yacc.c */ -#line 958 "parser\\Grammar.y" +#line 958 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ExprStatementNode(GLOBAL_DATA, (yyvsp[(1) - (2)].expressionNode).m_node), 0, 0, (yyvsp[(1) - (2)].expressionNode).m_features, (yyvsp[(1) - (2)].expressionNode).m_numConstants); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(1) - (2)])); AUTO_SEMICOLON; ;} break; @@ -4325,7 +4325,7 @@ yyreduce: case 241: /* Line 1455 of yacc.c */ -#line 964 "parser\\Grammar.y" +#line 964 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) IfNode(GLOBAL_DATA, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].statementNode).m_node), (yyvsp[(5) - (5)].statementNode).m_varDeclarations, (yyvsp[(5) - (5)].statementNode).m_funcDeclarations, (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].statementNode).m_features, (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].statementNode).m_numConstants); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (5)]), (yylsp[(4) - (5)])); ;} break; @@ -4333,7 +4333,7 @@ yyreduce: case 242: /* Line 1455 of yacc.c */ -#line 967 "parser\\Grammar.y" +#line 967 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) IfElseNode(GLOBAL_DATA, (yyvsp[(3) - (7)].expressionNode).m_node, (yyvsp[(5) - (7)].statementNode).m_node, (yyvsp[(7) - (7)].statementNode).m_node), mergeDeclarationLists((yyvsp[(5) - (7)].statementNode).m_varDeclarations, (yyvsp[(7) - (7)].statementNode).m_varDeclarations), mergeDeclarationLists((yyvsp[(5) - (7)].statementNode).m_funcDeclarations, (yyvsp[(7) - (7)].statementNode).m_funcDeclarations), @@ -4345,7 +4345,7 @@ yyreduce: case 243: /* Line 1455 of yacc.c */ -#line 976 "parser\\Grammar.y" +#line 976 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) DoWhileNode(GLOBAL_DATA, (yyvsp[(2) - (7)].statementNode).m_node, (yyvsp[(5) - (7)].expressionNode).m_node), (yyvsp[(2) - (7)].statementNode).m_varDeclarations, (yyvsp[(2) - (7)].statementNode).m_funcDeclarations, (yyvsp[(2) - (7)].statementNode).m_features | (yyvsp[(5) - (7)].expressionNode).m_features, (yyvsp[(2) - (7)].statementNode).m_numConstants + (yyvsp[(5) - (7)].expressionNode).m_numConstants); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (7)]), (yylsp[(3) - (7)])); ;} break; @@ -4353,7 +4353,7 @@ yyreduce: case 244: /* Line 1455 of yacc.c */ -#line 978 "parser\\Grammar.y" +#line 978 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) DoWhileNode(GLOBAL_DATA, (yyvsp[(2) - (7)].statementNode).m_node, (yyvsp[(5) - (7)].expressionNode).m_node), (yyvsp[(2) - (7)].statementNode).m_varDeclarations, (yyvsp[(2) - (7)].statementNode).m_funcDeclarations, (yyvsp[(2) - (7)].statementNode).m_features | (yyvsp[(5) - (7)].expressionNode).m_features, (yyvsp[(2) - (7)].statementNode).m_numConstants + (yyvsp[(5) - (7)].expressionNode).m_numConstants); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (7)]), (yylsp[(3) - (7)])); ;} break; @@ -4361,7 +4361,7 @@ yyreduce: case 245: /* Line 1455 of yacc.c */ -#line 980 "parser\\Grammar.y" +#line 980 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) WhileNode(GLOBAL_DATA, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].statementNode).m_node), (yyvsp[(5) - (5)].statementNode).m_varDeclarations, (yyvsp[(5) - (5)].statementNode).m_funcDeclarations, (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].statementNode).m_features, (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].statementNode).m_numConstants); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (5)]), (yylsp[(4) - (5)])); ;} break; @@ -4369,7 +4369,7 @@ yyreduce: case 246: /* Line 1455 of yacc.c */ -#line 983 "parser\\Grammar.y" +#line 983 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ForNode(GLOBAL_DATA, (yyvsp[(3) - (9)].expressionNode).m_node, (yyvsp[(5) - (9)].expressionNode).m_node, (yyvsp[(7) - (9)].expressionNode).m_node, (yyvsp[(9) - (9)].statementNode).m_node, false), (yyvsp[(9) - (9)].statementNode).m_varDeclarations, (yyvsp[(9) - (9)].statementNode).m_funcDeclarations, (yyvsp[(3) - (9)].expressionNode).m_features | (yyvsp[(5) - (9)].expressionNode).m_features | (yyvsp[(7) - (9)].expressionNode).m_features | (yyvsp[(9) - (9)].statementNode).m_features, (yyvsp[(3) - (9)].expressionNode).m_numConstants + (yyvsp[(5) - (9)].expressionNode).m_numConstants + (yyvsp[(7) - (9)].expressionNode).m_numConstants + (yyvsp[(9) - (9)].statementNode).m_numConstants); @@ -4380,7 +4380,7 @@ yyreduce: case 247: /* Line 1455 of yacc.c */ -#line 989 "parser\\Grammar.y" +#line 989 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) ForNode(GLOBAL_DATA, (yyvsp[(4) - (10)].varDeclList).m_node, (yyvsp[(6) - (10)].expressionNode).m_node, (yyvsp[(8) - (10)].expressionNode).m_node, (yyvsp[(10) - (10)].statementNode).m_node, true), mergeDeclarationLists((yyvsp[(4) - (10)].varDeclList).m_varDeclarations, (yyvsp[(10) - (10)].statementNode).m_varDeclarations), mergeDeclarationLists((yyvsp[(4) - (10)].varDeclList).m_funcDeclarations, (yyvsp[(10) - (10)].statementNode).m_funcDeclarations), @@ -4392,7 +4392,7 @@ yyreduce: case 248: /* Line 1455 of yacc.c */ -#line 996 "parser\\Grammar.y" +#line 996 "parser/Grammar.y" { ForInNode* node = new (GLOBAL_DATA) ForInNode(GLOBAL_DATA, (yyvsp[(3) - (7)].expressionNode).m_node, (yyvsp[(5) - (7)].expressionNode).m_node, (yyvsp[(7) - (7)].statementNode).m_node); setExceptionLocation(node, (yylsp[(3) - (7)]).first_column, (yylsp[(3) - (7)]).last_column, (yylsp[(5) - (7)]).last_column); @@ -4406,7 +4406,7 @@ yyreduce: case 249: /* Line 1455 of yacc.c */ -#line 1005 "parser\\Grammar.y" +#line 1005 "parser/Grammar.y" { ForInNode *forIn = new (GLOBAL_DATA) ForInNode(GLOBAL_DATA, *(yyvsp[(4) - (8)].ident), 0, (yyvsp[(6) - (8)].expressionNode).m_node, (yyvsp[(8) - (8)].statementNode).m_node, (yylsp[(5) - (8)]).first_column, (yylsp[(5) - (8)]).first_column - (yylsp[(4) - (8)]).first_column, (yylsp[(6) - (8)]).last_column - (yylsp[(5) - (8)]).first_column); setExceptionLocation(forIn, (yylsp[(4) - (8)]).first_column, (yylsp[(5) - (8)]).first_column + 1, (yylsp[(6) - (8)]).last_column); appendToVarDeclarationList(GLOBAL_DATA, (yyvsp[(8) - (8)].statementNode).m_varDeclarations, *(yyvsp[(4) - (8)].ident), DeclarationStacks::HasInitializer); @@ -4417,7 +4417,7 @@ yyreduce: case 250: /* Line 1455 of yacc.c */ -#line 1011 "parser\\Grammar.y" +#line 1011 "parser/Grammar.y" { ForInNode *forIn = new (GLOBAL_DATA) ForInNode(GLOBAL_DATA, *(yyvsp[(4) - (9)].ident), (yyvsp[(5) - (9)].expressionNode).m_node, (yyvsp[(7) - (9)].expressionNode).m_node, (yyvsp[(9) - (9)].statementNode).m_node, (yylsp[(5) - (9)]).first_column, (yylsp[(5) - (9)]).first_column - (yylsp[(4) - (9)]).first_column, (yylsp[(5) - (9)]).last_column - (yylsp[(5) - (9)]).first_column); setExceptionLocation(forIn, (yylsp[(4) - (9)]).first_column, (yylsp[(6) - (9)]).first_column + 1, (yylsp[(7) - (9)]).last_column); appendToVarDeclarationList(GLOBAL_DATA, (yyvsp[(9) - (9)].statementNode).m_varDeclarations, *(yyvsp[(4) - (9)].ident), DeclarationStacks::HasInitializer); @@ -4430,21 +4430,21 @@ yyreduce: case 251: /* Line 1455 of yacc.c */ -#line 1021 "parser\\Grammar.y" +#line 1021 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(0, 0, 0); ;} break; case 253: /* Line 1455 of yacc.c */ -#line 1026 "parser\\Grammar.y" +#line 1026 "parser/Grammar.y" { (yyval.expressionNode) = createNodeInfo<ExpressionNode*>(0, 0, 0); ;} break; case 255: /* Line 1455 of yacc.c */ -#line 1031 "parser\\Grammar.y" +#line 1031 "parser/Grammar.y" { ContinueNode* node = new (GLOBAL_DATA) ContinueNode(GLOBAL_DATA); setExceptionLocation(node, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(1) - (2)]).last_column); (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); @@ -4454,7 +4454,7 @@ yyreduce: case 256: /* Line 1455 of yacc.c */ -#line 1035 "parser\\Grammar.y" +#line 1035 "parser/Grammar.y" { ContinueNode* node = new (GLOBAL_DATA) ContinueNode(GLOBAL_DATA); setExceptionLocation(node, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(1) - (2)]).last_column); (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); @@ -4464,7 +4464,7 @@ yyreduce: case 257: /* Line 1455 of yacc.c */ -#line 1039 "parser\\Grammar.y" +#line 1039 "parser/Grammar.y" { ContinueNode* node = new (GLOBAL_DATA) ContinueNode(GLOBAL_DATA, *(yyvsp[(2) - (3)].ident)); setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column); (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); @@ -4474,7 +4474,7 @@ yyreduce: case 258: /* Line 1455 of yacc.c */ -#line 1043 "parser\\Grammar.y" +#line 1043 "parser/Grammar.y" { ContinueNode* node = new (GLOBAL_DATA) ContinueNode(GLOBAL_DATA, *(yyvsp[(2) - (3)].ident)); setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column); (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); @@ -4484,7 +4484,7 @@ yyreduce: case 259: /* Line 1455 of yacc.c */ -#line 1050 "parser\\Grammar.y" +#line 1050 "parser/Grammar.y" { BreakNode* node = new (GLOBAL_DATA) BreakNode(GLOBAL_DATA); setExceptionLocation(node, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(1) - (2)]).last_column); (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(2) - (2)])); ;} @@ -4493,7 +4493,7 @@ yyreduce: case 260: /* Line 1455 of yacc.c */ -#line 1053 "parser\\Grammar.y" +#line 1053 "parser/Grammar.y" { BreakNode* node = new (GLOBAL_DATA) BreakNode(GLOBAL_DATA); setExceptionLocation(node, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(1) - (2)]).last_column); (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BreakNode(GLOBAL_DATA), 0, 0, 0, 0); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(1) - (2)])); AUTO_SEMICOLON; ;} @@ -4502,7 +4502,7 @@ yyreduce: case 261: /* Line 1455 of yacc.c */ -#line 1056 "parser\\Grammar.y" +#line 1056 "parser/Grammar.y" { BreakNode* node = new (GLOBAL_DATA) BreakNode(GLOBAL_DATA, *(yyvsp[(2) - (3)].ident)); setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column); (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(3) - (3)])); ;} @@ -4511,7 +4511,7 @@ yyreduce: case 262: /* Line 1455 of yacc.c */ -#line 1059 "parser\\Grammar.y" +#line 1059 "parser/Grammar.y" { BreakNode* node = new (GLOBAL_DATA) BreakNode(GLOBAL_DATA, *(yyvsp[(2) - (3)].ident)); setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column); (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) BreakNode(GLOBAL_DATA, *(yyvsp[(2) - (3)].ident)), 0, 0, 0, 0); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(2) - (3)])); AUTO_SEMICOLON; ;} @@ -4520,7 +4520,7 @@ yyreduce: case 263: /* Line 1455 of yacc.c */ -#line 1065 "parser\\Grammar.y" +#line 1065 "parser/Grammar.y" { ReturnNode* node = new (GLOBAL_DATA) ReturnNode(GLOBAL_DATA, 0); setExceptionLocation(node, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(1) - (2)]).last_column); (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(2) - (2)])); ;} @@ -4529,7 +4529,7 @@ yyreduce: case 264: /* Line 1455 of yacc.c */ -#line 1068 "parser\\Grammar.y" +#line 1068 "parser/Grammar.y" { ReturnNode* node = new (GLOBAL_DATA) ReturnNode(GLOBAL_DATA, 0); setExceptionLocation(node, (yylsp[(1) - (2)]).first_column, (yylsp[(1) - (2)]).last_column, (yylsp[(1) - (2)]).last_column); (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, 0, 0); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(1) - (2)])); AUTO_SEMICOLON; ;} @@ -4538,7 +4538,7 @@ yyreduce: case 265: /* Line 1455 of yacc.c */ -#line 1071 "parser\\Grammar.y" +#line 1071 "parser/Grammar.y" { ReturnNode* node = new (GLOBAL_DATA) ReturnNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node); setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column); (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, (yyvsp[(2) - (3)].expressionNode).m_features, (yyvsp[(2) - (3)].expressionNode).m_numConstants); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(3) - (3)])); ;} @@ -4547,7 +4547,7 @@ yyreduce: case 266: /* Line 1455 of yacc.c */ -#line 1074 "parser\\Grammar.y" +#line 1074 "parser/Grammar.y" { ReturnNode* node = new (GLOBAL_DATA) ReturnNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node); setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column); (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, (yyvsp[(2) - (3)].expressionNode).m_features, (yyvsp[(2) - (3)].expressionNode).m_numConstants); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(2) - (3)])); AUTO_SEMICOLON; ;} @@ -4556,7 +4556,7 @@ yyreduce: case 267: /* Line 1455 of yacc.c */ -#line 1080 "parser\\Grammar.y" +#line 1080 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) WithNode(GLOBAL_DATA, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].statementNode).m_node, (yylsp[(3) - (5)]).last_column, (yylsp[(3) - (5)]).last_column - (yylsp[(3) - (5)]).first_column), (yyvsp[(5) - (5)].statementNode).m_varDeclarations, (yyvsp[(5) - (5)].statementNode).m_funcDeclarations, (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].statementNode).m_features | WithFeature, (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].statementNode).m_numConstants); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (5)]), (yylsp[(4) - (5)])); ;} @@ -4565,7 +4565,7 @@ yyreduce: case 268: /* Line 1455 of yacc.c */ -#line 1086 "parser\\Grammar.y" +#line 1086 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) SwitchNode(GLOBAL_DATA, (yyvsp[(3) - (5)].expressionNode).m_node, (yyvsp[(5) - (5)].caseBlockNode).m_node), (yyvsp[(5) - (5)].caseBlockNode).m_varDeclarations, (yyvsp[(5) - (5)].caseBlockNode).m_funcDeclarations, (yyvsp[(3) - (5)].expressionNode).m_features | (yyvsp[(5) - (5)].caseBlockNode).m_features, (yyvsp[(3) - (5)].expressionNode).m_numConstants + (yyvsp[(5) - (5)].caseBlockNode).m_numConstants); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (5)]), (yylsp[(4) - (5)])); ;} @@ -4574,14 +4574,14 @@ yyreduce: case 269: /* Line 1455 of yacc.c */ -#line 1092 "parser\\Grammar.y" +#line 1092 "parser/Grammar.y" { (yyval.caseBlockNode) = createNodeDeclarationInfo<CaseBlockNode*>(new (GLOBAL_DATA) CaseBlockNode(GLOBAL_DATA, (yyvsp[(2) - (3)].clauseList).m_node.head, 0, 0), (yyvsp[(2) - (3)].clauseList).m_varDeclarations, (yyvsp[(2) - (3)].clauseList).m_funcDeclarations, (yyvsp[(2) - (3)].clauseList).m_features, (yyvsp[(2) - (3)].clauseList).m_numConstants); ;} break; case 270: /* Line 1455 of yacc.c */ -#line 1094 "parser\\Grammar.y" +#line 1094 "parser/Grammar.y" { (yyval.caseBlockNode) = createNodeDeclarationInfo<CaseBlockNode*>(new (GLOBAL_DATA) CaseBlockNode(GLOBAL_DATA, (yyvsp[(2) - (5)].clauseList).m_node.head, (yyvsp[(3) - (5)].caseClauseNode).m_node, (yyvsp[(4) - (5)].clauseList).m_node.head), mergeDeclarationLists(mergeDeclarationLists((yyvsp[(2) - (5)].clauseList).m_varDeclarations, (yyvsp[(3) - (5)].caseClauseNode).m_varDeclarations), (yyvsp[(4) - (5)].clauseList).m_varDeclarations), mergeDeclarationLists(mergeDeclarationLists((yyvsp[(2) - (5)].clauseList).m_funcDeclarations, (yyvsp[(3) - (5)].caseClauseNode).m_funcDeclarations), (yyvsp[(4) - (5)].clauseList).m_funcDeclarations), @@ -4592,14 +4592,14 @@ yyreduce: case 271: /* Line 1455 of yacc.c */ -#line 1102 "parser\\Grammar.y" +#line 1102 "parser/Grammar.y" { (yyval.clauseList).m_node.head = 0; (yyval.clauseList).m_node.tail = 0; (yyval.clauseList).m_varDeclarations = 0; (yyval.clauseList).m_funcDeclarations = 0; (yyval.clauseList).m_features = 0; (yyval.clauseList).m_numConstants = 0; ;} break; case 273: /* Line 1455 of yacc.c */ -#line 1107 "parser\\Grammar.y" +#line 1107 "parser/Grammar.y" { (yyval.clauseList).m_node.head = new (GLOBAL_DATA) ClauseListNode(GLOBAL_DATA, (yyvsp[(1) - (1)].caseClauseNode).m_node); (yyval.clauseList).m_node.tail = (yyval.clauseList).m_node.head; (yyval.clauseList).m_varDeclarations = (yyvsp[(1) - (1)].caseClauseNode).m_varDeclarations; @@ -4611,7 +4611,7 @@ yyreduce: case 274: /* Line 1455 of yacc.c */ -#line 1113 "parser\\Grammar.y" +#line 1113 "parser/Grammar.y" { (yyval.clauseList).m_node.head = (yyvsp[(1) - (2)].clauseList).m_node.head; (yyval.clauseList).m_node.tail = new (GLOBAL_DATA) ClauseListNode(GLOBAL_DATA, (yyvsp[(1) - (2)].clauseList).m_node.tail, (yyvsp[(2) - (2)].caseClauseNode).m_node); (yyval.clauseList).m_varDeclarations = mergeDeclarationLists((yyvsp[(1) - (2)].clauseList).m_varDeclarations, (yyvsp[(2) - (2)].caseClauseNode).m_varDeclarations); @@ -4624,35 +4624,35 @@ yyreduce: case 275: /* Line 1455 of yacc.c */ -#line 1123 "parser\\Grammar.y" +#line 1123 "parser/Grammar.y" { (yyval.caseClauseNode) = createNodeDeclarationInfo<CaseClauseNode*>(new (GLOBAL_DATA) CaseClauseNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node), 0, 0, (yyvsp[(2) - (3)].expressionNode).m_features, (yyvsp[(2) - (3)].expressionNode).m_numConstants); ;} break; case 276: /* Line 1455 of yacc.c */ -#line 1124 "parser\\Grammar.y" +#line 1124 "parser/Grammar.y" { (yyval.caseClauseNode) = createNodeDeclarationInfo<CaseClauseNode*>(new (GLOBAL_DATA) CaseClauseNode(GLOBAL_DATA, (yyvsp[(2) - (4)].expressionNode).m_node, (yyvsp[(4) - (4)].sourceElements).m_node), (yyvsp[(4) - (4)].sourceElements).m_varDeclarations, (yyvsp[(4) - (4)].sourceElements).m_funcDeclarations, (yyvsp[(2) - (4)].expressionNode).m_features | (yyvsp[(4) - (4)].sourceElements).m_features, (yyvsp[(2) - (4)].expressionNode).m_numConstants + (yyvsp[(4) - (4)].sourceElements).m_numConstants); ;} break; case 277: /* Line 1455 of yacc.c */ -#line 1128 "parser\\Grammar.y" +#line 1128 "parser/Grammar.y" { (yyval.caseClauseNode) = createNodeDeclarationInfo<CaseClauseNode*>(new (GLOBAL_DATA) CaseClauseNode(GLOBAL_DATA, 0), 0, 0, 0, 0); ;} break; case 278: /* Line 1455 of yacc.c */ -#line 1129 "parser\\Grammar.y" +#line 1129 "parser/Grammar.y" { (yyval.caseClauseNode) = createNodeDeclarationInfo<CaseClauseNode*>(new (GLOBAL_DATA) CaseClauseNode(GLOBAL_DATA, 0, (yyvsp[(3) - (3)].sourceElements).m_node), (yyvsp[(3) - (3)].sourceElements).m_varDeclarations, (yyvsp[(3) - (3)].sourceElements).m_funcDeclarations, (yyvsp[(3) - (3)].sourceElements).m_features, (yyvsp[(3) - (3)].sourceElements).m_numConstants); ;} break; case 279: /* Line 1455 of yacc.c */ -#line 1133 "parser\\Grammar.y" +#line 1133 "parser/Grammar.y" { LabelNode* node = new (GLOBAL_DATA) LabelNode(GLOBAL_DATA, *(yyvsp[(1) - (3)].ident), (yyvsp[(3) - (3)].statementNode).m_node); setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column); (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, (yyvsp[(3) - (3)].statementNode).m_varDeclarations, (yyvsp[(3) - (3)].statementNode).m_funcDeclarations, (yyvsp[(3) - (3)].statementNode).m_features, (yyvsp[(3) - (3)].statementNode).m_numConstants); ;} @@ -4661,7 +4661,7 @@ yyreduce: case 280: /* Line 1455 of yacc.c */ -#line 1139 "parser\\Grammar.y" +#line 1139 "parser/Grammar.y" { ThrowNode* node = new (GLOBAL_DATA) ThrowNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node); setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column); (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, (yyvsp[(2) - (3)].expressionNode).m_features, (yyvsp[(2) - (3)].expressionNode).m_numConstants); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(2) - (3)])); @@ -4671,7 +4671,7 @@ yyreduce: case 281: /* Line 1455 of yacc.c */ -#line 1143 "parser\\Grammar.y" +#line 1143 "parser/Grammar.y" { ThrowNode* node = new (GLOBAL_DATA) ThrowNode(GLOBAL_DATA, (yyvsp[(2) - (3)].expressionNode).m_node); setExceptionLocation(node, (yylsp[(1) - (3)]).first_column, (yylsp[(2) - (3)]).last_column, (yylsp[(2) - (3)]).last_column); (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(node, 0, 0, (yyvsp[(2) - (3)].expressionNode).m_features, (yyvsp[(2) - (3)].expressionNode).m_numConstants); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (3)]), (yylsp[(2) - (3)])); AUTO_SEMICOLON; @@ -4681,7 +4681,7 @@ yyreduce: case 282: /* Line 1455 of yacc.c */ -#line 1150 "parser\\Grammar.y" +#line 1150 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) TryNode(GLOBAL_DATA, (yyvsp[(2) - (4)].statementNode).m_node, GLOBAL_DATA->propertyNames->nullIdentifier, false, 0, (yyvsp[(4) - (4)].statementNode).m_node), mergeDeclarationLists((yyvsp[(2) - (4)].statementNode).m_varDeclarations, (yyvsp[(4) - (4)].statementNode).m_varDeclarations), mergeDeclarationLists((yyvsp[(2) - (4)].statementNode).m_funcDeclarations, (yyvsp[(4) - (4)].statementNode).m_funcDeclarations), @@ -4693,7 +4693,7 @@ yyreduce: case 283: /* Line 1455 of yacc.c */ -#line 1156 "parser\\Grammar.y" +#line 1156 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) TryNode(GLOBAL_DATA, (yyvsp[(2) - (7)].statementNode).m_node, *(yyvsp[(5) - (7)].ident), ((yyvsp[(7) - (7)].statementNode).m_features & EvalFeature) != 0, (yyvsp[(7) - (7)].statementNode).m_node, 0), mergeDeclarationLists((yyvsp[(2) - (7)].statementNode).m_varDeclarations, (yyvsp[(7) - (7)].statementNode).m_varDeclarations), mergeDeclarationLists((yyvsp[(2) - (7)].statementNode).m_funcDeclarations, (yyvsp[(7) - (7)].statementNode).m_funcDeclarations), @@ -4705,7 +4705,7 @@ yyreduce: case 284: /* Line 1455 of yacc.c */ -#line 1163 "parser\\Grammar.y" +#line 1163 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) TryNode(GLOBAL_DATA, (yyvsp[(2) - (9)].statementNode).m_node, *(yyvsp[(5) - (9)].ident), ((yyvsp[(7) - (9)].statementNode).m_features & EvalFeature) != 0, (yyvsp[(7) - (9)].statementNode).m_node, (yyvsp[(9) - (9)].statementNode).m_node), mergeDeclarationLists(mergeDeclarationLists((yyvsp[(2) - (9)].statementNode).m_varDeclarations, (yyvsp[(7) - (9)].statementNode).m_varDeclarations), (yyvsp[(9) - (9)].statementNode).m_varDeclarations), mergeDeclarationLists(mergeDeclarationLists((yyvsp[(2) - (9)].statementNode).m_funcDeclarations, (yyvsp[(7) - (9)].statementNode).m_funcDeclarations), (yyvsp[(9) - (9)].statementNode).m_funcDeclarations), @@ -4717,7 +4717,7 @@ yyreduce: case 285: /* Line 1455 of yacc.c */ -#line 1172 "parser\\Grammar.y" +#line 1172 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) DebuggerStatementNode(GLOBAL_DATA), 0, 0, 0, 0); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(2) - (2)])); ;} break; @@ -4725,7 +4725,7 @@ yyreduce: case 286: /* Line 1455 of yacc.c */ -#line 1174 "parser\\Grammar.y" +#line 1174 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) DebuggerStatementNode(GLOBAL_DATA), 0, 0, 0, 0); setStatementLocation((yyval.statementNode).m_node, (yylsp[(1) - (2)]), (yylsp[(1) - (2)])); AUTO_SEMICOLON; ;} break; @@ -4733,14 +4733,14 @@ yyreduce: case 287: /* Line 1455 of yacc.c */ -#line 1179 "parser\\Grammar.y" +#line 1179 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) FuncDeclNode(GLOBAL_DATA, *(yyvsp[(2) - (7)].ident), (yyvsp[(6) - (7)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode((yyvsp[(5) - (7)].intValue), (yyvsp[(7) - (7)].intValue), (yylsp[(5) - (7)]).first_line)), 0, new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::FunctionStack>, ((*(yyvsp[(2) - (7)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | ClosureFeature, 0); setStatementLocation((yyvsp[(6) - (7)].functionBodyNode), (yylsp[(5) - (7)]), (yylsp[(7) - (7)])); (yyval.statementNode).m_funcDeclarations->data.append(static_cast<FuncDeclNode*>((yyval.statementNode).m_node)->body()); ;} break; case 288: /* Line 1455 of yacc.c */ -#line 1181 "parser\\Grammar.y" +#line 1181 "parser/Grammar.y" { (yyval.statementNode) = createNodeDeclarationInfo<StatementNode*>(new (GLOBAL_DATA) FuncDeclNode(GLOBAL_DATA, *(yyvsp[(2) - (8)].ident), (yyvsp[(7) - (8)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode((yyvsp[(6) - (8)].intValue), (yyvsp[(8) - (8)].intValue), (yylsp[(6) - (8)]).first_line), (yyvsp[(4) - (8)].parameterList).m_node.head), 0, new (GLOBAL_DATA) ParserArenaData<DeclarationStacks::FunctionStack>, ((*(yyvsp[(2) - (8)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0) | (yyvsp[(4) - (8)].parameterList).m_features | ClosureFeature, 0); if ((yyvsp[(4) - (8)].parameterList).m_features & ArgumentsFeature) @@ -4753,14 +4753,14 @@ yyreduce: case 289: /* Line 1455 of yacc.c */ -#line 1191 "parser\\Grammar.y" +#line 1191 "parser/Grammar.y" { (yyval.funcExprNode) = createNodeInfo(new (GLOBAL_DATA) FuncExprNode(GLOBAL_DATA, GLOBAL_DATA->propertyNames->nullIdentifier, (yyvsp[(5) - (6)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode((yyvsp[(4) - (6)].intValue), (yyvsp[(6) - (6)].intValue), (yylsp[(4) - (6)]).first_line)), ClosureFeature, 0); setStatementLocation((yyvsp[(5) - (6)].functionBodyNode), (yylsp[(4) - (6)]), (yylsp[(6) - (6)])); ;} break; case 290: /* Line 1455 of yacc.c */ -#line 1193 "parser\\Grammar.y" +#line 1193 "parser/Grammar.y" { (yyval.funcExprNode) = createNodeInfo(new (GLOBAL_DATA) FuncExprNode(GLOBAL_DATA, GLOBAL_DATA->propertyNames->nullIdentifier, (yyvsp[(6) - (7)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode((yyvsp[(5) - (7)].intValue), (yyvsp[(7) - (7)].intValue), (yylsp[(5) - (7)]).first_line), (yyvsp[(3) - (7)].parameterList).m_node.head), (yyvsp[(3) - (7)].parameterList).m_features | ClosureFeature, 0); if ((yyvsp[(3) - (7)].parameterList).m_features & ArgumentsFeature) @@ -4772,14 +4772,14 @@ yyreduce: case 291: /* Line 1455 of yacc.c */ -#line 1199 "parser\\Grammar.y" +#line 1199 "parser/Grammar.y" { (yyval.funcExprNode) = createNodeInfo(new (GLOBAL_DATA) FuncExprNode(GLOBAL_DATA, *(yyvsp[(2) - (7)].ident), (yyvsp[(6) - (7)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode((yyvsp[(5) - (7)].intValue), (yyvsp[(7) - (7)].intValue), (yylsp[(5) - (7)]).first_line)), ClosureFeature, 0); setStatementLocation((yyvsp[(6) - (7)].functionBodyNode), (yylsp[(5) - (7)]), (yylsp[(7) - (7)])); ;} break; case 292: /* Line 1455 of yacc.c */ -#line 1201 "parser\\Grammar.y" +#line 1201 "parser/Grammar.y" { (yyval.funcExprNode) = createNodeInfo(new (GLOBAL_DATA) FuncExprNode(GLOBAL_DATA, *(yyvsp[(2) - (8)].ident), (yyvsp[(7) - (8)].functionBodyNode), GLOBAL_DATA->lexer->sourceCode((yyvsp[(6) - (8)].intValue), (yyvsp[(8) - (8)].intValue), (yylsp[(6) - (8)]).first_line), (yyvsp[(4) - (8)].parameterList).m_node.head), (yyvsp[(4) - (8)].parameterList).m_features | ClosureFeature, 0); if ((yyvsp[(4) - (8)].parameterList).m_features & ArgumentsFeature) @@ -4791,7 +4791,7 @@ yyreduce: case 293: /* Line 1455 of yacc.c */ -#line 1210 "parser\\Grammar.y" +#line 1210 "parser/Grammar.y" { (yyval.parameterList).m_node.head = new (GLOBAL_DATA) ParameterNode(GLOBAL_DATA, *(yyvsp[(1) - (1)].ident)); (yyval.parameterList).m_features = (*(yyvsp[(1) - (1)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0; (yyval.parameterList).m_node.tail = (yyval.parameterList).m_node.head; ;} @@ -4800,7 +4800,7 @@ yyreduce: case 294: /* Line 1455 of yacc.c */ -#line 1213 "parser\\Grammar.y" +#line 1213 "parser/Grammar.y" { (yyval.parameterList).m_node.head = (yyvsp[(1) - (3)].parameterList).m_node.head; (yyval.parameterList).m_features = (yyvsp[(1) - (3)].parameterList).m_features | ((*(yyvsp[(3) - (3)].ident) == GLOBAL_DATA->propertyNames->arguments) ? ArgumentsFeature : 0); (yyval.parameterList).m_node.tail = new (GLOBAL_DATA) ParameterNode(GLOBAL_DATA, (yyvsp[(1) - (3)].parameterList).m_node.tail, *(yyvsp[(3) - (3)].ident)); ;} @@ -4809,28 +4809,28 @@ yyreduce: case 295: /* Line 1455 of yacc.c */ -#line 1219 "parser\\Grammar.y" +#line 1219 "parser/Grammar.y" { (yyval.functionBodyNode) = FunctionBodyNode::create(GLOBAL_DATA); ;} break; case 296: /* Line 1455 of yacc.c */ -#line 1220 "parser\\Grammar.y" +#line 1220 "parser/Grammar.y" { (yyval.functionBodyNode) = FunctionBodyNode::create(GLOBAL_DATA); ;} break; case 297: /* Line 1455 of yacc.c */ -#line 1224 "parser\\Grammar.y" +#line 1224 "parser/Grammar.y" { GLOBAL_DATA->parser->didFinishParsing(new (GLOBAL_DATA) SourceElements(GLOBAL_DATA), 0, 0, NoFeatures, (yylsp[(0) - (0)]).last_line, 0); ;} break; case 298: /* Line 1455 of yacc.c */ -#line 1225 "parser\\Grammar.y" +#line 1225 "parser/Grammar.y" { GLOBAL_DATA->parser->didFinishParsing((yyvsp[(1) - (1)].sourceElements).m_node, (yyvsp[(1) - (1)].sourceElements).m_varDeclarations, (yyvsp[(1) - (1)].sourceElements).m_funcDeclarations, (yyvsp[(1) - (1)].sourceElements).m_features, (yylsp[(1) - (1)]).last_line, (yyvsp[(1) - (1)].sourceElements).m_numConstants); ;} break; @@ -4838,7 +4838,7 @@ yyreduce: case 299: /* Line 1455 of yacc.c */ -#line 1230 "parser\\Grammar.y" +#line 1230 "parser/Grammar.y" { (yyval.sourceElements).m_node = new (GLOBAL_DATA) SourceElements(GLOBAL_DATA); (yyval.sourceElements).m_node->append((yyvsp[(1) - (1)].statementNode).m_node); (yyval.sourceElements).m_varDeclarations = (yyvsp[(1) - (1)].statementNode).m_varDeclarations; @@ -4851,7 +4851,7 @@ yyreduce: case 300: /* Line 1455 of yacc.c */ -#line 1237 "parser\\Grammar.y" +#line 1237 "parser/Grammar.y" { (yyval.sourceElements).m_node->append((yyvsp[(2) - (2)].statementNode).m_node); (yyval.sourceElements).m_varDeclarations = mergeDeclarationLists((yyvsp[(1) - (2)].sourceElements).m_varDeclarations, (yyvsp[(2) - (2)].statementNode).m_varDeclarations); (yyval.sourceElements).m_funcDeclarations = mergeDeclarationLists((yyvsp[(1) - (2)].sourceElements).m_funcDeclarations, (yyvsp[(2) - (2)].statementNode).m_funcDeclarations); @@ -4863,259 +4863,259 @@ yyreduce: case 304: /* Line 1455 of yacc.c */ -#line 1251 "parser\\Grammar.y" +#line 1251 "parser/Grammar.y" { ;} break; case 305: /* Line 1455 of yacc.c */ -#line 1252 "parser\\Grammar.y" +#line 1252 "parser/Grammar.y" { ;} break; case 306: /* Line 1455 of yacc.c */ -#line 1253 "parser\\Grammar.y" +#line 1253 "parser/Grammar.y" { if (!GLOBAL_DATA->lexer->skipRegExp()) YYABORT; ;} break; case 307: /* Line 1455 of yacc.c */ -#line 1254 "parser\\Grammar.y" +#line 1254 "parser/Grammar.y" { if (!GLOBAL_DATA->lexer->skipRegExp()) YYABORT; ;} break; case 308: /* Line 1455 of yacc.c */ -#line 1258 "parser\\Grammar.y" +#line 1258 "parser/Grammar.y" { ;} break; case 309: /* Line 1455 of yacc.c */ -#line 1259 "parser\\Grammar.y" +#line 1259 "parser/Grammar.y" { ;} break; case 310: /* Line 1455 of yacc.c */ -#line 1260 "parser\\Grammar.y" +#line 1260 "parser/Grammar.y" { ;} break; case 311: /* Line 1455 of yacc.c */ -#line 1261 "parser\\Grammar.y" +#line 1261 "parser/Grammar.y" { if (*(yyvsp[(1) - (7)].ident) != "get" && *(yyvsp[(1) - (7)].ident) != "set") YYABORT; ;} break; case 312: /* Line 1455 of yacc.c */ -#line 1262 "parser\\Grammar.y" +#line 1262 "parser/Grammar.y" { if (*(yyvsp[(1) - (8)].ident) != "get" && *(yyvsp[(1) - (8)].ident) != "set") YYABORT; ;} break; case 316: /* Line 1455 of yacc.c */ -#line 1272 "parser\\Grammar.y" +#line 1272 "parser/Grammar.y" { ;} break; case 317: /* Line 1455 of yacc.c */ -#line 1273 "parser\\Grammar.y" +#line 1273 "parser/Grammar.y" { ;} break; case 318: /* Line 1455 of yacc.c */ -#line 1275 "parser\\Grammar.y" +#line 1275 "parser/Grammar.y" { ;} break; case 322: /* Line 1455 of yacc.c */ -#line 1282 "parser\\Grammar.y" +#line 1282 "parser/Grammar.y" { ;} break; case 517: /* Line 1455 of yacc.c */ -#line 1650 "parser\\Grammar.y" +#line 1650 "parser/Grammar.y" { ;} break; case 518: /* Line 1455 of yacc.c */ -#line 1651 "parser\\Grammar.y" +#line 1651 "parser/Grammar.y" { ;} break; case 520: /* Line 1455 of yacc.c */ -#line 1656 "parser\\Grammar.y" +#line 1656 "parser/Grammar.y" { AUTO_SEMICOLON; ;} break; case 521: /* Line 1455 of yacc.c */ -#line 1660 "parser\\Grammar.y" +#line 1660 "parser/Grammar.y" { ;} break; case 522: /* Line 1455 of yacc.c */ -#line 1661 "parser\\Grammar.y" +#line 1661 "parser/Grammar.y" { ;} break; case 525: /* Line 1455 of yacc.c */ -#line 1667 "parser\\Grammar.y" +#line 1667 "parser/Grammar.y" { ;} break; case 526: /* Line 1455 of yacc.c */ -#line 1668 "parser\\Grammar.y" +#line 1668 "parser/Grammar.y" { ;} break; case 530: /* Line 1455 of yacc.c */ -#line 1675 "parser\\Grammar.y" +#line 1675 "parser/Grammar.y" { AUTO_SEMICOLON; ;} break; case 533: /* Line 1455 of yacc.c */ -#line 1684 "parser\\Grammar.y" +#line 1684 "parser/Grammar.y" { ;} break; case 534: /* Line 1455 of yacc.c */ -#line 1685 "parser\\Grammar.y" +#line 1685 "parser/Grammar.y" { ;} break; case 539: /* Line 1455 of yacc.c */ -#line 1702 "parser\\Grammar.y" +#line 1702 "parser/Grammar.y" { AUTO_SEMICOLON; ;} break; case 555: /* Line 1455 of yacc.c */ -#line 1733 "parser\\Grammar.y" +#line 1733 "parser/Grammar.y" { AUTO_SEMICOLON; ;} break; case 557: /* Line 1455 of yacc.c */ -#line 1735 "parser\\Grammar.y" +#line 1735 "parser/Grammar.y" { AUTO_SEMICOLON; ;} break; case 559: /* Line 1455 of yacc.c */ -#line 1740 "parser\\Grammar.y" +#line 1740 "parser/Grammar.y" { AUTO_SEMICOLON; ;} break; case 561: /* Line 1455 of yacc.c */ -#line 1742 "parser\\Grammar.y" +#line 1742 "parser/Grammar.y" { AUTO_SEMICOLON; ;} break; case 563: /* Line 1455 of yacc.c */ -#line 1747 "parser\\Grammar.y" +#line 1747 "parser/Grammar.y" { AUTO_SEMICOLON; ;} break; case 565: /* Line 1455 of yacc.c */ -#line 1749 "parser\\Grammar.y" +#line 1749 "parser/Grammar.y" { AUTO_SEMICOLON; ;} break; case 568: /* Line 1455 of yacc.c */ -#line 1761 "parser\\Grammar.y" +#line 1761 "parser/Grammar.y" { ;} break; case 569: /* Line 1455 of yacc.c */ -#line 1762 "parser\\Grammar.y" +#line 1762 "parser/Grammar.y" { ;} break; case 578: /* Line 1455 of yacc.c */ -#line 1786 "parser\\Grammar.y" +#line 1786 "parser/Grammar.y" { ;} break; case 580: /* Line 1455 of yacc.c */ -#line 1791 "parser\\Grammar.y" +#line 1791 "parser/Grammar.y" { AUTO_SEMICOLON; ;} break; case 585: /* Line 1455 of yacc.c */ -#line 1802 "parser\\Grammar.y" +#line 1802 "parser/Grammar.y" { AUTO_SEMICOLON; ;} break; case 592: /* Line 1455 of yacc.c */ -#line 1818 "parser\\Grammar.y" +#line 1818 "parser/Grammar.y" { ;} break; /* Line 1455 of yacc.c */ -#line 5119 "C:/dev/webkit-2.0/JavaScriptCore/generated\\Grammar.tab.c" +#line 5119 "/JavaScriptCore/generated/Grammar.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -5334,7 +5334,7 @@ yyreturn: /* Line 1675 of yacc.c */ -#line 1834 "parser\\Grammar.y" +#line 1834 "parser/Grammar.y" #undef GLOBAL_DATA diff --git a/src/3rdparty/webkit/JavaScriptCore/generated/Grammar.h b/src/3rdparty/webkit/JavaScriptCore/generated/Grammar.h index 69942f7..04dfeb1 100644 --- a/src/3rdparty/webkit/JavaScriptCore/generated/Grammar.h +++ b/src/3rdparty/webkit/JavaScriptCore/generated/Grammar.h @@ -112,7 +112,7 @@ typedef union YYSTYPE { /* Line 1676 of yacc.c */ -#line 146 "parser\\Grammar.y" +#line 146 "parser/Grammar.y" int intValue; double doubleValue; @@ -147,7 +147,7 @@ typedef union YYSTYPE /* Line 1676 of yacc.c */ -#line 151 "C:/dev/webkit-2.0/JavaScriptCore/generated\\Grammar.tab.h" +#line 151 "/JavaScriptCore/generated/Grammar.tab.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ diff --git a/src/3rdparty/webkit/JavaScriptCore/generated/JSONObject.lut.h b/src/3rdparty/webkit/JavaScriptCore/generated/JSONObject.lut.h index acfe7d2..4ec868e 100644 --- a/src/3rdparty/webkit/JavaScriptCore/generated/JSONObject.lut.h +++ b/src/3rdparty/webkit/JavaScriptCore/generated/JSONObject.lut.h @@ -1,4 +1,4 @@ -// Automatically generated from runtime\JSONObject.cpp using C:/dev/webkit-2.0/JavaScriptCore/create_hash_table. DO NOT EDIT! +// Automatically generated from runtime/JSONObject.cpp using /JavaScriptCore/create_hash_table. DO NOT EDIT! #include "Lookup.h" diff --git a/src/3rdparty/webkit/JavaScriptCore/generated/Lexer.lut.h b/src/3rdparty/webkit/JavaScriptCore/generated/Lexer.lut.h index 556a6f4..c17f34d 100644 --- a/src/3rdparty/webkit/JavaScriptCore/generated/Lexer.lut.h +++ b/src/3rdparty/webkit/JavaScriptCore/generated/Lexer.lut.h @@ -1,4 +1,4 @@ -// Automatically generated from parser\Keywords.table using C:/dev/webkit-2.0/JavaScriptCore/create_hash_table. DO NOT EDIT! +// Automatically generated from parser/Keywords.table using /JavaScriptCore/create_hash_table. DO NOT EDIT! #include "Lookup.h" diff --git a/src/3rdparty/webkit/JavaScriptCore/generated/MathObject.lut.h b/src/3rdparty/webkit/JavaScriptCore/generated/MathObject.lut.h index 85a1bb6..6222ef9 100644 --- a/src/3rdparty/webkit/JavaScriptCore/generated/MathObject.lut.h +++ b/src/3rdparty/webkit/JavaScriptCore/generated/MathObject.lut.h @@ -1,4 +1,4 @@ -// Automatically generated from runtime\MathObject.cpp using C:/dev/webkit-2.0/JavaScriptCore/create_hash_table. DO NOT EDIT! +// Automatically generated from runtime/MathObject.cpp using /JavaScriptCore/create_hash_table. DO NOT EDIT! #include "Lookup.h" diff --git a/src/3rdparty/webkit/JavaScriptCore/generated/NumberConstructor.lut.h b/src/3rdparty/webkit/JavaScriptCore/generated/NumberConstructor.lut.h index 1cd4117..bfa6341 100644 --- a/src/3rdparty/webkit/JavaScriptCore/generated/NumberConstructor.lut.h +++ b/src/3rdparty/webkit/JavaScriptCore/generated/NumberConstructor.lut.h @@ -1,4 +1,4 @@ -// Automatically generated from runtime\NumberConstructor.cpp using C:/dev/webkit-2.0/JavaScriptCore/create_hash_table. DO NOT EDIT! +// Automatically generated from runtime/NumberConstructor.cpp using /JavaScriptCore/create_hash_table. DO NOT EDIT! #include "Lookup.h" diff --git a/src/3rdparty/webkit/JavaScriptCore/generated/RegExpConstructor.lut.h b/src/3rdparty/webkit/JavaScriptCore/generated/RegExpConstructor.lut.h index 938d368..d45db01 100644 --- a/src/3rdparty/webkit/JavaScriptCore/generated/RegExpConstructor.lut.h +++ b/src/3rdparty/webkit/JavaScriptCore/generated/RegExpConstructor.lut.h @@ -1,4 +1,4 @@ -// Automatically generated from runtime\RegExpConstructor.cpp using C:/dev/webkit-2.0/JavaScriptCore/create_hash_table. DO NOT EDIT! +// Automatically generated from runtime/RegExpConstructor.cpp using /JavaScriptCore/create_hash_table. DO NOT EDIT! #include "Lookup.h" diff --git a/src/3rdparty/webkit/JavaScriptCore/generated/RegExpObject.lut.h b/src/3rdparty/webkit/JavaScriptCore/generated/RegExpObject.lut.h index aadd236..8dcb7c9 100644 --- a/src/3rdparty/webkit/JavaScriptCore/generated/RegExpObject.lut.h +++ b/src/3rdparty/webkit/JavaScriptCore/generated/RegExpObject.lut.h @@ -1,4 +1,4 @@ -// Automatically generated from runtime\RegExpObject.cpp using C:/dev/webkit-2.0/JavaScriptCore/create_hash_table. DO NOT EDIT! +// Automatically generated from runtime/RegExpObject.cpp using /JavaScriptCore/create_hash_table. DO NOT EDIT! #include "Lookup.h" diff --git a/src/3rdparty/webkit/JavaScriptCore/generated/StringPrototype.lut.h b/src/3rdparty/webkit/JavaScriptCore/generated/StringPrototype.lut.h index 2d08eac..6ea0803 100644 --- a/src/3rdparty/webkit/JavaScriptCore/generated/StringPrototype.lut.h +++ b/src/3rdparty/webkit/JavaScriptCore/generated/StringPrototype.lut.h @@ -1,4 +1,4 @@ -// Automatically generated from runtime\StringPrototype.cpp using C:/dev/webkit-2.0/JavaScriptCore/create_hash_table. DO NOT EDIT! +// Automatically generated from runtime/StringPrototype.cpp using /JavaScriptCore/create_hash_table. DO NOT EDIT! #include "Lookup.h" diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp index 2859290..0eca610 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Collector.cpp @@ -201,7 +201,7 @@ NEVER_INLINE CollectorBlock* Heap::allocateBlock() #elif OS(WINCE) void* address = VirtualAlloc(NULL, BLOCK_SIZE, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); #elif OS(WINDOWS) -#if COMPILER(MINGW) && !defined(__MINGW64_VERSION_MAJOR) +#if COMPILER(MINGW) && !COMPILER(MINGW64) void* address = __mingw_aligned_malloc(BLOCK_SIZE, BLOCK_SIZE); #else void* address = _aligned_malloc(BLOCK_SIZE, BLOCK_SIZE); @@ -292,7 +292,7 @@ NEVER_INLINE void Heap::freeBlockPtr(CollectorBlock* block) #elif OS(WINCE) VirtualFree(block, 0, MEM_RELEASE); #elif OS(WINDOWS) -#if COMPILER(MINGW) && !defined(__MINGW64_VERSION_MAJOR) +#if COMPILER(MINGW) && !COMPILER(MINGW64) __mingw_aligned_free(block); #else _aligned_free(block); @@ -558,6 +558,8 @@ static inline void* currentThreadStackBase() PNT_TIB64 pTib = reinterpret_cast<PNT_TIB64>(NtCurrentTeb()); return reinterpret_cast<void*>(pTib->StackBase); #elif OS(QNX) + AtomicallyInitializedStatic(Mutex&, mutex = *new Mutex); + MutexLocker locker(mutex); return currentThreadStackBaseQNX(); #elif OS(SOLARIS) stack_t s; @@ -569,19 +571,17 @@ static inline void* currentThreadStackBase() pthread_stackseg_np(thread, &stack); return stack.ss_sp; #elif OS(SYMBIAN) - static void* stackBase = 0; - if (stackBase == 0) { - TThreadStackInfo info; - RThread thread; - thread.StackInfo(info); - stackBase = (void*)info.iBase; - } - return (void*)stackBase; + TThreadStackInfo info; + RThread thread; + thread.StackInfo(info); + return (void*)info.iBase; #elif OS(HAIKU) thread_info threadInfo; get_thread_info(find_thread(NULL), &threadInfo); return threadInfo.stack_end; #elif OS(UNIX) + AtomicallyInitializedStatic(Mutex&, mutex = *new Mutex); + MutexLocker locker(mutex); static void* stackBase = 0; static size_t stackSize = 0; static pthread_t stackThread; @@ -604,6 +604,8 @@ static inline void* currentThreadStackBase() } return static_cast<char*>(stackBase) + stackSize; #elif OS(WINCE) + AtomicallyInitializedStatic(Mutex&, mutex = *new Mutex); + MutexLocker locker(mutex); if (g_stackBase) return g_stackBase; else { diff --git a/src/3rdparty/webkit/JavaScriptCore/runtime/Structure.cpp b/src/3rdparty/webkit/JavaScriptCore/runtime/Structure.cpp index dab7f51..6d13f4b 100644 --- a/src/3rdparty/webkit/JavaScriptCore/runtime/Structure.cpp +++ b/src/3rdparty/webkit/JavaScriptCore/runtime/Structure.cpp @@ -168,14 +168,14 @@ inline void Structure::transitionTableAdd(const StructureTransitionTableHash::Ke if (!specificValue) { TransitionTable::iterator find = transitionTable()->find(key); if (find == transitionTable()->end()) - transitionTable()->add(key, Transition(structure, (Structure*)0)); + transitionTable()->add(key, Transition(structure, static_cast<Structure*>(0))); else find->second.first = structure; } else { // If we're adding a transition to a specific value, then there cannot be // an existing transition ASSERT(!transitionTable()->contains(key)); - transitionTable()->add(key, Transition((Structure*)0, structure)); + transitionTable()->add(key, Transition(static_cast<Structure*>(0), structure)); } } diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/Assertions.h b/src/3rdparty/webkit/JavaScriptCore/wtf/Assertions.h index 0e02af5..8b6d09a 100644 --- a/src/3rdparty/webkit/JavaScriptCore/wtf/Assertions.h +++ b/src/3rdparty/webkit/JavaScriptCore/wtf/Assertions.h @@ -61,7 +61,7 @@ #define ASSERTIONS_DISABLED_DEFAULT 0 #endif -#if COMPILER(MSVC7) || COMPILER(WINSCW) +#if COMPILER(MSVC7_OR_LOWER) || COMPILER(WINSCW) #define HAVE_VARIADIC_MACRO 0 #else #define HAVE_VARIADIC_MACRO 1 @@ -213,7 +213,7 @@ while (0) /* ASSERT_WITH_MESSAGE */ -#if COMPILER(MSVC7) +#if COMPILER(MSVC7_OR_LOWER) #define ASSERT_WITH_MESSAGE(assertion) ((void)0) #elif COMPILER(WINSCW) #define ASSERT_WITH_MESSAGE(assertion, arg...) ((void)0) @@ -253,7 +253,7 @@ while (0) /* FATAL */ -#if COMPILER(MSVC7) +#if COMPILER(MSVC7_OR_LOWER) #define FATAL() ((void)0) #elif COMPILER(WINSCW) #define FATAL(arg...) ((void)0) @@ -268,7 +268,7 @@ while (0) /* LOG_ERROR */ -#if COMPILER(MSVC7) +#if COMPILER(MSVC7_OR_LOWER) #define LOG_ERROR() ((void)0) #elif COMPILER(WINSCW) #define LOG_ERROR(arg...) ((void)0) @@ -280,7 +280,7 @@ while (0) /* LOG */ -#if COMPILER(MSVC7) +#if COMPILER(MSVC7_OR_LOWER) #define LOG() ((void)0) #elif COMPILER(WINSCW) #define LOG(arg...) ((void)0) @@ -294,7 +294,7 @@ while (0) /* LOG_VERBOSE */ -#if COMPILER(MSVC7) +#if COMPILER(MSVC7_OR_LOWER) #define LOG_VERBOSE(channel) ((void)0) #elif COMPILER(WINSCW) #define LOG_VERBOSE(channel, arg...) ((void)0) diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/CurrentTime.h b/src/3rdparty/webkit/JavaScriptCore/wtf/CurrentTime.h index 033448f..dcb1f6c 100644 --- a/src/3rdparty/webkit/JavaScriptCore/wtf/CurrentTime.h +++ b/src/3rdparty/webkit/JavaScriptCore/wtf/CurrentTime.h @@ -49,7 +49,7 @@ namespace WTF { inline void getLocalTime(const time_t* localTime, struct tm* localTM) { - #if COMPILER(MSVC7) || COMPILER(MINGW) || OS(WINCE) + #if COMPILER(MSVC7_OR_LOWER) || COMPILER(MINGW) || OS(WINCE) *localTM = *localtime(localTime); #elif COMPILER(MSVC) localtime_s(localTM, localTime); diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/MathExtras.h b/src/3rdparty/webkit/JavaScriptCore/wtf/MathExtras.h index 49d6ec3..f8bace4 100644 --- a/src/3rdparty/webkit/JavaScriptCore/wtf/MathExtras.h +++ b/src/3rdparty/webkit/JavaScriptCore/wtf/MathExtras.h @@ -123,7 +123,7 @@ inline double trunc(double num) { return num > 0 ? floor(num) : ceil(num); } #if COMPILER(MSVC) // The 64bit version of abs() is already defined in stdlib.h which comes with VC10 -#if COMPILER(MSVC9) +#if COMPILER(MSVC9_OR_LOWER) inline long long abs(long long num) { return _abs64(num); } #endif diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h b/src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h index 2a5a48f..96ed9bd 100644 --- a/src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h +++ b/src/3rdparty/webkit/JavaScriptCore/wtf/Platform.h @@ -58,13 +58,14 @@ /* ==== COMPILER() - the compiler being used to build the project ==== */ /* COMPILER(MSVC) Microsoft Visual C++ */ -/* COMPILER(MSVC7) Microsoft Visual C++ v7 or lower*/ +/* COMPILER(MSVC7_OR_LOWER) Microsoft Visual C++ 2003 or lower*/ +/* COMPILER(MSVC9_OR_LOWER) Microsoft Visual C++ 2008 or lower*/ #if defined(_MSC_VER) #define WTF_COMPILER_MSVC 1 #if _MSC_VER < 1400 -#define WTF_COMPILER_MSVC7 1 +#define WTF_COMPILER_MSVC7_OR_LOWER 1 #elif _MSC_VER < 1600 -#define WTF_COMPILER_MSVC9 1 +#define WTF_COMPILER_MSVC9_OR_LOWER 1 #endif #endif @@ -81,9 +82,14 @@ #endif /* COMPILER(MINGW) - MinGW GCC */ -#if defined(MINGW) || defined(__MINGW32__) +/* COMPILER(MINGW64) - mingw-w64 GCC - only used as additional check to exclude mingw.org specific functions */ +#if defined(__MINGW32__) #define WTF_COMPILER_MINGW 1 -#endif +#include <_mingw.h> /* private MinGW header */ + #if defined(__MINGW64_VERSION_MAJOR) /* best way to check for mingw-w64 vs mingw.org */ + #define WTF_COMPILER_MINGW64 1 + #endif /* __MINGW64_VERSION_MAJOR */ +#endif /* __MINGW32__ */ /* COMPILER(WINSCW) - CodeWarrior for Symbian emulator */ #if defined(__WINSCW__) @@ -921,6 +927,8 @@ on MinGW. See https://bugs.webkit.org/show_bug.cgi?id=29268 */ #elif CPU(X86) && OS(WINDOWS) && COMPILER(MINGW) && GCC_VERSION >= 40100 #define ENABLE_JIT 1 #define WTF_USE_JIT_STUB_ARGUMENT_VA_LIST 1 +#elif CPU(X86_64) && OS(WINDOWS) && COMPILER(MINGW64) && GCC_VERSION >= 40100 + #define ENABLE_JIT 1 #elif CPU(X86) && OS(WINDOWS) && COMPILER(MSVC) #define ENABLE_JIT 1 #define WTF_USE_JIT_STUB_ARGUMENT_REGISTER 1 @@ -995,6 +1003,7 @@ on MinGW. See https://bugs.webkit.org/show_bug.cgi?id=29268 */ #if PLATFORM(QT) #if (CPU(X86) && OS(WINDOWS) && COMPILER(MINGW) && GCC_VERSION >= 40100) \ + || (CPU(X86_64) && OS(WINDOWS) && COMPILER(MINGW64) && GCC_VERSION >= 40100) \ || (CPU(X86) && OS(WINDOWS) && COMPILER(MSVC)) \ || (CPU(X86) && OS(LINUX) && GCC_VERSION >= 40100) \ || (CPU(X86_64) && OS(LINUX) && GCC_VERSION >= 40100) \ diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/StringExtras.h b/src/3rdparty/webkit/JavaScriptCore/wtf/StringExtras.h index b1ec09f..28e80b8 100644 --- a/src/3rdparty/webkit/JavaScriptCore/wtf/StringExtras.h +++ b/src/3rdparty/webkit/JavaScriptCore/wtf/StringExtras.h @@ -46,7 +46,7 @@ inline int snprintf(char* buffer, size_t count, const char* format, ...) return result; } -#if COMPILER(MSVC7) || OS(WINCE) +#if COMPILER(MSVC7_OR_LOWER) || OS(WINCE) inline int vsnprintf(char* buffer, size_t count, const char* format, va_list args) { diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/Threading.h b/src/3rdparty/webkit/JavaScriptCore/wtf/Threading.h index 768aecf..50e08bd 100644 --- a/src/3rdparty/webkit/JavaScriptCore/wtf/Threading.h +++ b/src/3rdparty/webkit/JavaScriptCore/wtf/Threading.h @@ -220,7 +220,7 @@ private: #if OS(WINDOWS) #define WTF_USE_LOCKFREE_THREADSAFESHARED 1 -#if COMPILER(MINGW) || COMPILER(MSVC7) || OS(WINCE) +#if COMPILER(MINGW) || COMPILER(MSVC7_OR_LOWER) || OS(WINCE) inline int atomicIncrement(int* addend) { return InterlockedIncrement(reinterpret_cast<long*>(addend)); } inline int atomicDecrement(int* addend) { return InterlockedDecrement(reinterpret_cast<long*>(addend)); } #else diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/VMTags.h b/src/3rdparty/webkit/JavaScriptCore/wtf/VMTags.h index 7ac02da..6600050 100644 --- a/src/3rdparty/webkit/JavaScriptCore/wtf/VMTags.h +++ b/src/3rdparty/webkit/JavaScriptCore/wtf/VMTags.h @@ -28,25 +28,48 @@ // On Mac OS X, the VM subsystem allows tagging memory requested from mmap and vm_map // in order to aid tools that inspect system memory use. -#if OS(DARWIN) && !defined(BUILDING_ON_TIGER) +#if OS(DARWIN) #include <mach/vm_statistics.h> +#if !defined(TARGETING_TIGER) + #if defined(VM_MEMORY_TCMALLOC) #define VM_TAG_FOR_TCMALLOC_MEMORY VM_MAKE_TAG(VM_MEMORY_TCMALLOC) #else #define VM_TAG_FOR_TCMALLOC_MEMORY VM_MAKE_TAG(53) #endif // defined(VM_MEMORY_TCMALLOC) -#if defined(VM_MEMORY_JAVASCRIPT_CORE) && defined(VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE) && defined(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR) && defined(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR) -#define VM_TAG_FOR_COLLECTOR_MEMORY VM_MAKE_TAG(VM_MEMORY_JAVASCRIPT_CORE) -#define VM_TAG_FOR_REGISTERFILE_MEMORY VM_MAKE_TAG(VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE) +#if defined(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR) #define VM_TAG_FOR_EXECUTABLEALLOCATOR_MEMORY VM_MAKE_TAG(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR) #else -#define VM_TAG_FOR_COLLECTOR_MEMORY VM_MAKE_TAG(63) #define VM_TAG_FOR_EXECUTABLEALLOCATOR_MEMORY VM_MAKE_TAG(64) +#endif // defined(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR) + +#if defined(VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE) +#define VM_TAG_FOR_REGISTERFILE_MEMORY VM_MAKE_TAG(VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE) +#else #define VM_TAG_FOR_REGISTERFILE_MEMORY VM_MAKE_TAG(65) -#endif // defined(VM_MEMORY_JAVASCRIPT_CORE) && defined(VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE) && defined(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR) && defined(VM_MEMORY_JAVASCRIPT_JIT_EXECUTABLE_ALLOCATOR) +#endif // defined(VM_MEMORY_JAVASCRIPT_JIT_REGISTER_FILE) + +#else // !defined(TARGETING_TIGER) + +// mmap on Tiger fails with tags that work on Leopard, so fall +// back to Tiger-compatible tags (that also work on Leopard) +// when targeting Tiger. +#define VM_TAG_FOR_TCMALLOC_MEMORY -1 +#define VM_TAG_FOR_EXECUTABLEALLOCATOR_MEMORY -1 +#define VM_TAG_FOR_REGISTERFILE_MEMORY -1 + +#endif // !defined(TARGETING_TIGER) + +// Tags for vm_map and vm_allocate work on both Tiger and Leopard. + +#if defined(VM_MEMORY_JAVASCRIPT_CORE) +#define VM_TAG_FOR_COLLECTOR_MEMORY VM_MAKE_TAG(VM_MEMORY_JAVASCRIPT_CORE) +#else +#define VM_TAG_FOR_COLLECTOR_MEMORY VM_MAKE_TAG(63) +#endif // defined(VM_MEMORY_JAVASCRIPT_CORE) #if defined(VM_MEMORY_WEBCORE_PURGEABLE_BUFFERS) #define VM_TAG_FOR_WEBCORE_PURGEABLE_MEMORY VM_MAKE_TAG(VM_MEMORY_WEBCORE_PURGEABLE_BUFFERS) @@ -54,7 +77,7 @@ #define VM_TAG_FOR_WEBCORE_PURGEABLE_MEMORY VM_MAKE_TAG(69) #endif // defined(VM_MEMORY_WEBCORE_PURGEABLE_BUFFERS) -#else // OS(DARWIN) && !defined(BUILDING_ON_TIGER) +#else // OS(DARWIN) #define VM_TAG_FOR_TCMALLOC_MEMORY -1 #define VM_TAG_FOR_COLLECTOR_MEMORY -1 @@ -62,6 +85,6 @@ #define VM_TAG_FOR_REGISTERFILE_MEMORY -1 #define VM_TAG_FOR_WEBCORE_PURGEABLE_MEMORY -1 -#endif // OS(DARWIN) && !defined(BUILDING_ON_TIGER) +#endif // OS(DARWIN) #endif // VMTags_h diff --git a/src/3rdparty/webkit/JavaScriptCore/wtf/Vector.h b/src/3rdparty/webkit/JavaScriptCore/wtf/Vector.h index 6f55e53..e495067 100644 --- a/src/3rdparty/webkit/JavaScriptCore/wtf/Vector.h +++ b/src/3rdparty/webkit/JavaScriptCore/wtf/Vector.h @@ -939,7 +939,7 @@ namespace WTF { return; } -#if COMPILER(MSVC7) +#if COMPILER(MSVC7_OR_LOWER) // FIXME: MSVC7 generates compilation errors when trying to assign // a pointer to a Vector of its base class (i.e. can't downcast). So far // I've been unable to determine any logical reason for this, so I can diff --git a/src/3rdparty/webkit/VERSION b/src/3rdparty/webkit/VERSION new file mode 100644 index 0000000..23cae67 --- /dev/null +++ b/src/3rdparty/webkit/VERSION @@ -0,0 +1,7 @@ +This is a snapshot of the Qt port of WebKit from + + git://gitorious.org/qtwebkit/qtwebkit.git + +and has the sha1 checksum + + 540ae4ccd25609e1bfe1673195ce126255e36774 diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog index f52872c..b8825bd 100644 --- a/src/3rdparty/webkit/WebCore/ChangeLog +++ b/src/3rdparty/webkit/WebCore/ChangeLog @@ -1,3 +1,810 @@ +2010-03-27 Robert Hogan <robert@webkit.org> + + Reviewed by nobody, fix typo in previous commit. + + Allow plugins implemented by the application, such as mimetype 'x-qt-plugin', + when pluginsEnabled is false + + Fix parentheses typo in r56661. This happened while rebasing and was not present + in the reviewed patch, so committing unreviewed. + + https://bugs.webkit.org/attachment.cgi?id=49515 + + * loader/FrameLoader.cpp: + (WebCore::FrameLoader::requestObject): + +2010-03-26 Robert Hogan <robert@roberthogan.net> + + Reviewed by Simon Hausmann. + + Allow plugins implemented by the application, such as mimetype 'x-qt-plugin', + when pluginsEnabled is false. + + The purpose of disabling plugins is to prevent the execution of third-party code + that may be untrustworthy. Qt plugins are implemented by the client rather than + loaded from an external source, so the client should have the opportunity to + consider them separately from other plugins. + + Add a function MimeTypeRegistry::isApplicationPluginMIMEType() that WebKit + uses in conjunction with arePluginsEnabled() to determine if it should attempt + to load a plugin. If isApplicationPluginMIMEType() returns true, WebKit will load + the plugin even if arePluginsEnabled() is false. + + Currently, only Qt has application-implemented plugins: these use the mimetype + 'x-qt-plugin' and 'x-qt-styled-widget'. This patch permits Qt clients' + reimplementation of QWebPage::createPlugin() to decide whether or not + to create a Qt plugin, even when arePluginsEnabled is false. + + For all platforms apart from Qt, isApplicationPluginMIMEType() returns false. + + https://bugs.webkit.org/show_bug.cgi?id=32196 + + Test: plugins/application-plugin-plugins-disabled.html + + * loader/FrameLoader.cpp: + (WebCore::FrameLoader::requestObject): + * platform/MIMETypeRegistry.h: + * platform/brew/MIMETypeRegistryBrew.cpp: + (WebCore::MIMETypeRegistry::isApplicationPluginMIMEType): + * platform/chromium/MIMETypeRegistryChromium.cpp: + (WebCore::MIMETypeRegistry::isApplicationPluginMIMEType): + * platform/gtk/MIMETypeRegistryGtk.cpp: + (WebCore::MIMETypeRegistry::isApplicationPluginMIMEType): + * platform/haiku/MIMETypeRegistryHaiku.cpp: + (WebCore::MIMETypeRegistry::isApplicationPluginMIMEType): + * platform/mac/MIMETypeRegistryMac.mm: + (WebCore::MIMETypeRegistry::isApplicationPluginMIMEType): + * platform/qt/MIMETypeRegistryQt.cpp: + (WebCore::MIMETypeRegistry::isApplicationPluginMIMEType): + * platform/win/MIMETypeRegistryWin.cpp: + (WebCore::MIMETypeRegistry::isApplicationPluginMIMEType): + * platform/wince/MIMETypeRegistryWince.cpp: + (WebCore::MIMETypeRegistry::isApplicationPluginMIMEType): + * platform/wx/MimeTypeRegistryWx.cpp: + (WebCore::MIMETypeRegistry::isApplicationPluginMIMEType): + +2010-04-29 Noam Rosenthal <noam.rosenthal@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] GraphicsLayer: flicker when starting an animation before the previous one ended. + https://bugs.webkit.org/show_bug.cgi?id=38076 + + This was due to the cude in the removeAnimations functions, which called deleteLater() without stopping the + animation synchronously. The delay between the call to that function and the actual call to the animation's destructor + is when the flicker occured. We fix this by calling stop() synchronously, and making sure that the value is reverted + upon stop (updateState) and not upon the object's destruction. + + http://staff.washington.edu/fmf/2009/03/25/iphone-3d-css-transformations/ now doesn't flicker when + the animation is toggled frequently. + + * platform/graphics/qt/GraphicsLayerQt.cpp: + (WebCore::TransformAnimationQt::~TransformAnimationQt): + (WebCore::TransformAnimationQt::applyFrame): + (WebCore::TransformAnimationQt::updateState): + (WebCore::OpacityAnimationQt::~OpacityAnimationQt): + (WebCore::OpacityAnimationQt::updateState): + (WebCore::GraphicsLayerQt::removeAnimationsForProperty): + (WebCore::GraphicsLayerQt::removeAnimationsForKeyframes): + +2010-04-29 Noam Rosenthal <noam.rosenthal@nokia.com> + + Reviewed by Simon Hausmann. + + Reverse animations don't work in some use cases + https://bugs.webkit.org/show_bug.cgi?id=38075 + + This was due to a code path special-casing reverse animations, that became obselete when we aligned our animation code + with the CA implementation. That special case code path is now a bug - and this patch removes it. + + http://staff.washington.edu/fmf/2009/03/25/iphone-3d-css-transformations/ now runs the reverse + animation correctly. + + * platform/graphics/qt/GraphicsLayerQt.cpp: + (WebCore::TransformAnimationQt::applyFrame): + +2010-04-29 Simon Hausmann <simon.hausmann@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Speed up text layouting + https://bugs.webkit.org/show_bug.cgi?id=31719 + + Use QFontMetrics::width() for the text width calculation instead + of QTextLayout. This avoids expensive bearing calculations and the + line breaking code. + + * platform/graphics/qt/FontQt.cpp: + (WebCore::Font::floatWidthForComplexText): + +2010-04-29 Simon Hausmann <simon.hausmann@nokia.com> + + Reviewed by Tor Arne Vestbø. + + [Qt] REGRESSION(r57638): tst_qwebframe::objectDeleted() fails + https://bugs.webkit.org/show_bug.cgi?id=38316 + + Accessing properties of a deleted objects doesn't throw an exception + anymore. + + Continue to expose the QObject class wrapper for objects that + previously existed but don't exist anymore. QtClass is safe to + use with a deleted QObject. + + * bridge/qt/qt_instance.cpp: + (JSC::Bindings::QtInstance::getClass): Return null only if m_class + doesn't exist yet and there's no m_object. + +2010-04-28 Noam Rosenthal <noam.rosenthal@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] GraphicsLayer: preserves-3d and backface visibility + https://bugs.webkit.org/show_bug.cgi?id=35312 + + Implement preserves-3d by maintaining the 3D transformation heirarchy inside GraphicsLayerQt, and extrapolating + the relative QTransform. When the extrapolation fails (un-invertible matrix) we ignore the transformation change. + + WebKitSite/blog-files/3d-transforms test now work with Qt. + + * platform/graphics/qt/GraphicsLayerQt.cpp: + (WebCore::GraphicsLayerQtImpl::updateTransform): + (WebCore::GraphicsLayerQtImpl::opaqueArea): + (WebCore::GraphicsLayerQtImpl::boundingRect): + (WebCore::GraphicsLayerQtImpl::paint): + (WebCore::GraphicsLayerQtImpl::flushChanges): + +2010-04-28 Justin McPherson <justin.mcpherson@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] Fix detection of Qt 4.7's multimedia libraries + + QtMultimedia has been split into an additional media services library, which + we're using. mediaservices depends on multimedia. + + * WebCore.pro: + +2010-04-26 Andreas Kling <andreas.kling@nokia.com> + + Reviewed by Tor Arne Vestbø. + + [Qt] Fix compilation against Qt 4.7 + + Some QtMultimedia things have been moved into QtMediaServices + https://bugs.webkit.org/show_bug.cgi?id=38111 + + * WebCore.pro: + * platform/graphics/qt/MediaPlayerPrivateQt.cpp: + (WebCore::MediaPlayerPrivate::supportsType): + (WebCore::MediaPlayerPrivate::totalBytes): + +2010-04-21 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Make sure WebKit is not compiled using C++0x. + https://bugs.webkit.org/show_bug.cgi?id=37867 + + As the rest of Qt compiles in the C++0x mode, people might start + compiling it in this mode. WebKit don't support this yet. + + Patch by Thiago Macieira <thiago.macieira@nokia.com> + + * WebCore.pro: + +2010-04-22 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] Hide the OpenGL and QtMultimedia dependencies from syncqt. + + This prevents the dependent headers from being included by + qt/include/QtWebKit/QtWebKit + + * WebCore.pro: + +2010-04-27 Thomas Zander <t.zander@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] Fix linking on Symbian on Linux using the Makefile based mkspec. + + Disable thumb mode due to library size limitations, just like it's done + for the sbs/sbsv2 based build system. + + * WebCore.pro: + +2010-04-26 Ruben Van Boxem <vanboxem.ruben@gmail.com> + + Reviewed by Adam Roben. + + Fixes for Win64 compilation under gcc (mingw-w64) + + * WebCore/bridge/npapi.h: for win64 compatibility, mirroring mozilla-central, see Mozilla bug 560298 + * WebCore/platform/Arena.h: uword is used to cast from pointers here. unsigned long is 32-bit on Windows (but 64-bit on mac), and too small to hold a pointer. uintptr_t is 32-bit on 32-bit systems (mac, linux and windows) and 64-bit on all 64-bit systems + * WebCore/platform/graphics/transforms/TransformationMatrix.h: let mingw-w64/w32 use MSVC codepath + * WebCore/platform/text/TextStream.cpp: let mingw-w64 use MSVC codepath + * WebCore/platform/text/TextStream.h: let mingw-w64 use MSVC codepath + * WebCore/plugins/PluginView.cpp: fix pointer casts on WIN64 and let mingw-w64 use MSVC codepath + * WebCore/plugins/win/PluginViewWin.cpp: fix pointer casts on WIN64 + +2010-01-07 Laszlo Gombos <laszlo.1.gombos@nokia.com> + + Reviewed by NOBODY (OOPS!). + + [RVCT] ACID3 test crash + https://bugs.webkit.org/show_bug.cgi?id=33280 + + Workaround developed by Yongjun Zhang. + + * dom/Element.cpp: + (WebCore::Element::setAttribute): + +2010-04-26 Markus Goetz <Markus.Goetz@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] HTTP pipelining efficiency increase + https://bugs.webkit.org/show_bug.cgi?id=38062 + + Increase number of network requests that are fed into + QNetworkAccessManager. + + * platform/network/qt/ResourceRequestQt.cpp: + (WebCore::initializeMaximumHTTPConnectionCountPerHost): + +2010-04-26 Simon Hausmann <simon.hausmann@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Fix compilation with RVCT 4 + https://bugs.webkit.org/show_bug.cgi?id=37727 + + Swap extern and declspec to fix visibility of symbol imported from QtGui. + + * page/qt/EventHandlerQt.cpp: + +2010-04-26 Bruno Schmidt <bruno.schmidt@gmail.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Exposing an QVariantMap containing QObjectStar to Javascript + causes Segmentation Fault + https://bugs.webkit.org/show_bug.cgi?id=34729 + + If an QVariantMap containing QObjectStar is added to the to QtWebkit + Javascript, it's use causes Segmentation Fault. + It happens because, in the case QMetaType::QVariantMap, the "root" + object that is inside of a PassRefPtr is passed recursively inside a + loop to recover the content of the map, but the PassRefPtr semantics + prohibit its use inside a loop, so the "root" object mus be passed + using the method "PassRefPtr::get" in order to keep the current + reference. + + * bridge/qt/qt_runtime.cpp: + (JSC::Bindings::convertValueToQVariant): + (JSC::Bindings::convertQVariantToValue): change to root.get() + +2010-04-22 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + Reviewed by Darin Adler. + + Fix the MSVC 64bit build. + https://bugs.webkit.org/show_bug.cgi?id=37980 + + * platform/text/TextStream.cpp: + * platform/text/TextStream.h: + * plugins/win/PluginViewWin.cpp: + (WebCore::PluginView::platformStart): + +2010-04-22 Ray Rischpater <Raymond.Rischpater@Nokia.com> + + Reviewed by Darin Adler. + + In HTMLInputElement.cpp, shouldUseInputMethod does not return true for + some text input types (TELEPHONE, NUMBER, URL, and EMAIL). Addressed + this by changing shouldUseInputMethod to use internal methods to + check that the field is a text field that isn't a password field. + + No new tests. + + Fixes <https://bugs.webkit.org/show_bug.cgi?id=37719> + + * html/HTMLInputElement.cpp: + (WebCore::HTMLInputElement::shouldUseInputMethod): + +2010-04-22 Gustavo Sverzut Barbieri <barbieri@profusion.mobi> + + Reviewed by Eric Seidel. + + Fix build if NPAPI support is disabled + https://bugs.webkit.org/show_bug.cgi?id=36621 + + No new tests, this is a build fix. + Re-submit r58043 with fix for EFL. + + * plugins/PluginViewNone.cpp: + +2010-03-25 Laszlo Gombos <laszlo.1.gombos@nokia.com> + + Reviewed by Darin Adler. + + Fix build if NPAPI support is disabled + https://bugs.webkit.org/show_bug.cgi?id=36621 + + No new tests, this is a build fix. + + * plugins/PluginView.cpp: Guard getValueStatic() with + NETSCAPE_PLUGIN_API + (WebCore::PluginView::getValue): + * plugins/PluginView.h: Guard getValue() with NETSCAPE_PLUGIN_API + * plugins/PluginViewNone.cpp: Guard platformGetValue() and + platformGetValueStatic with NETSCAPE_PLUGIN_API; + Guard privateBrowsingStateChanged() and setJavaScriptPaused() with + PLATFORM(MAC) + +2010-04-14 Simon Fraser <simon.fraser@apple.com> + + Reviewed by Dan Bernstein. + + Repaint of fixed, transformed element is broken + https://bugs.webkit.org/show_bug.cgi?id=37637 + + RenderBox::computeRectForRepaint() failed to set the 'fixed' flag correctly + for elements that had both fixed position and a transform. If the element has + a transform, 'fixed' should only remain true if the element itself is fixed + position. + + Also cache style()->position() in a local variable for performance. + + Test: fast/repaint/fixed-tranformed.html + + * rendering/RenderBox.cpp: + (WebCore::RenderBox::computeRectForRepaint): + +2010-04-19 Antonio Gomes <tonikitoo@webkit.org> + + Reviewed by Simon Fraser. + + Spatial Navigation: at @updateFocusCandidateIfCloser make an assignment shortcut when FocusCandidate is null + https://bugs.webkit.org/show_bug.cgi?id=37802 + + In updateFocusCandidateIfCloser method, we do all bail out checks in the begining of + the method body. If after those bail out checks, no "best FocusCandidate" has been taken + yet (i.e. focusCandidate.isNull() == true), we can safely take the current candidate, + and exit earlier. + + No behavior change, it is just a safe assignment shortcut. + + * page/FocusController.cpp: + (WebCore::updateFocusCandidateIfCloser): + +2010-04-21 No'am Rosenthal <noam.rosenthal@nokia.com> + + Reviewed by Simon Fraser. + + [Qt] Fix or remove the runtime flag for accelerated compositing. + + This adds a way for a chrome client to disallow layers from becoming composited, + even if the settings enable accelerated compositing. This is necessary for platforms + where different views can be applied with the same settings to the same page. + + We enable an API through ChromeClient to ask the chrome-client whether or not + it can render composited layers, which is taken into account when the compositor + decides whether or not to start compositing. + + https://bugs.webkit.org/show_bug.cgi?id=37313 + + Pages under LayoutTests/compositing now work under QWebView, even when + QWebSettings::AcceleratedCompositingEnabled is on. + + * page/ChromeClient.h: + (WebCore::ChromeClient::allowsAcceleratedCompositing): + * platform/qt/QWebPageClient.h: + (QWebPageClient::allowsAcceleratedCompositing): + * rendering/RenderLayerCompositor.cpp: + (WebCore::RenderLayerCompositor::canBeComposited): + +2010-04-23 No'am Rosenthal <noam.rosenthal@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] [Performance] GraphicsLayer: constructing the layers takes too long + https://bugs.webkit.org/show_bug.cgi?id=36365 + + The issue came from using QGraphicsView's cache as is. The problem is that + several code-paths require re-rendering of the item, but not re-rendering + of the web content into the cache. + + The way to solve it is by having GraphicsLayerQt manage the cache directly + via QPixmapCache, instead of using QGraphicsItem cache modes. + + FPS measurement shows significant improvement (20FPS before, 40FPS after) + on several use-cases, including blog-files/leaves on a desktop environment. + + * platform/graphics/qt/GraphicsLayerQt.cpp: + (WebCore::GraphicsLayerQtImpl::GraphicsLayerQtImpl): + (WebCore::GraphicsLayerQtImpl::recache): + (WebCore::GraphicsLayerQtImpl::paint): + (WebCore::GraphicsLayerQtImpl::flushChanges): + +2010-04-21 Benjamin Poulain <ikipou@gmail.com> + + Reviewed by Simon Fraser. + + Update of fixed elements is not made correctly when the page has been scrolled + https://bugs.webkit.org/show_bug.cgi?id=36783 + + When a fixed element was updated, the old geometry was not repainted correctly + because the repaint rect was cached during the layout and not updated when + scrolling. + + The rect is now updated while scrolling so the region updated correspond to the + region of the element on the screen. + + The method RenderLayer::updateRepaintRectsAfterScroll() updates + the repaint rect of all fixed tree after scroll. + + Tests: fast/repaint/fixed-child-move-after-scroll.html + fast/repaint/fixed-child-of-fixed-move-after-scroll.html + fast/repaint/fixed-child-of-transformed-move-after-scroll.html + fast/repaint/fixed-move-after-scroll.html + + * page/FrameView.cpp: + (WebCore::FrameView::scrollPositionChanged): + * rendering/RenderLayer.cpp: + (WebCore::RenderLayer::updateRepaintRectsAfterScroll): + * rendering/RenderLayer.h: + +2010-04-21 David Leong <david.leong@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] Symbian apps crash on exit due to a bad qObject_cast. + + https://bugs.webkit.org/show_bug.cgi?id=37303 + + Added check for NULL to avoid the crash. Reworked to fix memory leak + + * plugins/symbian/PluginViewSymbian.cpp: + (WebCore::PluginView::platformDestroy): + +2010-04-14 Antonio Gomes <tonikitoo@webkit.org> + + Reviewed by Simon Fraser. + + Spatial Navigation: make hasOffscreenRect() to earlier return 'true' if absoluteClippedOverflowRect() gives an empty rect + https://bugs.webkit.org/show_bug.cgi?id=37635 + + absoluteClippedOverflowRect method of RenderObject does return an empty IntRect for offscreen nodes. + So hasOffscreenRect method (SpatialNavigation.cpp) can safily bail out earlier in such cases. + + * page/SpatialNavigation.cpp: + (WebCore::hasOffscreenRect): + +2010-04-12 Antonio Gomes <tonikitoo@webkit.org> + + Reviewed by Simon Fraser. + + Spatial Navigation: make renderRectRelativeToRootDocument method to fallback to getRect() of Element when needed + https://bugs.webkit.org/show_bug.cgi?id=37461 + + getRect() of Element can be used instead of absoluteClippedOverflowRect of RenderObject when + the node is currently offscreen in an scroll overflowed content. + + Test: fast/events/spatial-navigation/snav-simple-content-overflow.html + + * page/SpatialNavigation.cpp: + (WebCore::renderRectRelativeToRootDocument): + +2010-03-29 Antonio Gomes <tonikitoo@webkit.org> + + Reviewed by Simon Fraser. + + Spatial Navigation: proper handle negative x or y coordinates + https://bugs.webkit.org/show_bug.cgi?id=36773 + + In Spatial Navigation logic, during rect acquisition in renderRectRelativeToRootDocument, + sometimes negative x() or y() values are got, and the current algorithm bails out in + any of such cases. + + However, when a node is in a scrollable content (content overflow <div>) and + this scrollable container scrolled up, element gets offscreen, and gets negative values + for y(), for example. In such cases, they are still valid to be used in Spatial Navigation + logic. + + Test: fast/events/spatial-navigation/snav-offscreen-content.html + + * page/SpatialNavigation.cpp: + (WebCore::distanceDataForNode): + (WebCore::checkNegativeCoordsForNode): + +2010-04-05 Antonio Gomes <tonikitoo@webkit.org> + + Reviewed by Kenneth Christiansen. + + Spatial Navigation: bail out as soon as algorithm finds a focus candidate is not applicable + https://bugs.webkit.org/show_bug.cgi?id=37135 + + It happens, for example, when distanceDataForNode assigns numeric_limits<long long> to + current focus candidate's. It means that current candidate is not in direction, or not + a valid target node. + + * page/FocusController.cpp: + (WebCore::FocusController::findFocusableNodeInDirection): + +2010-03-29 Antonio Gomes <tonikitoo@webkit.org> + + Reviewed by Simon Fraser. + Patch by Antonio Gomes <tonikitoo@webkit.org> + + Spatial Navigation: Initial code simplification in FocusController.cpp and SpatialNavigation.cpp + + WebCore::distanceInDirection method was handling much of the logic not + strictly only related to the distance between nodes acquisition. This + method was simplified and renamed to 'WebCore::distanceDataForNode'. + The latter is now responsible for only getting the distance and alignment + data, while all assignement logic previously in distanceInDirection method + was moved place to updateFocusCandidateIfCloser. + + Parent document distance and alignment acquisitions, in turn, have also + changed location: they are both got from deepFindFocusableNodeInDirection, + and passed in a recursive call to findFocusableNodeInDirection via the + candidateParent variable (optional parameter). In addition, the need for + the 'focusCandidateCopy' variable in deepFindFocusableNodeInDirection method + was removed, making the code much cleaner. + + No behaviour change at this point. Mostly moving code around to the place + where it should live in. + + * page/FocusController.cpp: + (WebCore::FocusController::advanceFocusDirectionally): + (WebCore::updateFocusCandidateIfCloser): + (WebCore::FocusController::findFocusableNodeInDirection): + (WebCore::FocusController::deepFindFocusableNodeInDirection): + * page/FocusController.h: + * page/SpatialNavigation.cpp: + (WebCore::distanceDataForNode): + (WebCore::renderRectRelativeToRootDocument): + * page/SpatialNavigation.h: + +2010-04-20 No'am Rosenthal <noam.rosenthal@nokia.com> + + Reviewed by Antti Koivisto. + + [Qt] GraphicsLayer: support fill-modes + https://bugs.webkit.org/show_bug.cgi?id=36216 + Implement the CSS-animation "fill mode" concept in GraphicsLayerQt. The concept + enables a key-frame animation to go to the animation's starting point before the delay, + and/or to stay at the animation's ending point after its ended, without reverting to the default + value. + We do that by manually setting the value to keyframe-0 before the delay if fill-mode is backwards/both, + and manually modifying the default value to the animated value as we animate, with fill-mode forwards/both. + + * platform/graphics/qt/GraphicsLayerQt.cpp: + (WebCore::AnimationQtBase::AnimationQtBase): + (WebCore::TransformAnimationQt::~TransformAnimationQt): + (WebCore::TransformAnimationQt::applyFrame): + (WebCore::GraphicsLayerQt::addAnimation): + +2010-04-13 Eskil Blomfeldt <eblomfel@trolltech.com>, Jesus Sanchez-Palencia <jesus.palencia@openbossa.org> + + Reviewed by Simon Hausmann. + + [Qt] Use integer pixel metric QFont API to fix rounding errors in text rendering on the Mac + https://bugs.webkit.org/show_bug.cgi?id=36532 + + * platform/graphics/qt/FontQt.cpp: + (WebCore::Font::floatWidthForComplexText): + (WebCore::Font::font): + +2010-04-16 Daniel Bates <dbates@rim.com> + + Reviewed by Adam Treat. + + https://bugs.webkit.org/show_bug.cgi?id=36312 + + Adds support for the viewport meta tag. The code is largely derived in whole + or in part from the WebCore-528.15 source published as part of the iPhone 3.1.3 + source code <http://www.opensource.apple.com/source/WebCore/WebCore-528.15/>. + + * Android.mk: Added file ViewportArguments.cpp. + * GNUmakefile.am: Added files ViewportArguments.cpp and ViewportArguments.h. + * WebCore.gypi: Ditto. + * WebCore.pro: Ditto. + * WebCore.vcproj/WebCore.vcproj: Ditto. + * WebCore.xcodeproj/project.pbxproj: Ditto. + * dom/Document.cpp: + (WebCore::isSeparator): Added. + (WebCore::Document::processArguments): Added. + (WebCore::Document::processViewport): Added. + * dom/Document.h: + * dom/ViewportArguments.cpp: Added. + (WebCore::setViewportFeature): + (WebCore::viewportErrorMessageTemplate): + (WebCore::viewportErrorMessageLevel): + (WebCore::reportViewportWarning): + * dom/ViewportArguments.h: Added. + (WebCore::): + (WebCore::ViewportArguments::): + (WebCore::ViewportArguments::ViewportArguments): + (WebCore::ViewportArguments::hasCustomArgument): + * html/HTMLMetaElement.cpp: + (WebCore::HTMLMetaElement::process): Modified to call Document::processViewport. + * page/ChromeClient.h: + (WebCore::ChromeClient::didReceiveViewportArguments): Added. + +2010-04-15 Luiz Agostini <luiz.agostini@openbossa.org> + + Reviewed by Antti Koivisto. + + No default selection for <select multiple> menu lists. + https://bugs.webkit.org/show_bug.cgi?id=37530 + + Manual test: manual-tests/no-listbox-rendering.html + + For menu lists, if the selection is not indicated by the html file, the first <option> will be + selected after loading the page or reseting the form. On the other hand listboxes may have no + element selected after loading the page or reseting the form. + + When NO_LISTBOX_RENDERING is enabled listboxes becomes menu lists. Those <select multiple> + that did not have selected elements, now being menu lists, will have the first <option> + selected. That is the behavior difference that this patch corrects. + + When NO_LISTBOX_RENDERING is enabled usesMenuList() always returns true then usesMenuList() cannot + be used to decide about initial selection of the elements. This patch replaces (usesMenuLists()) + by (!multiple && size <= 1) where initial selection is considered. + + * dom/SelectElement.cpp: + (WebCore::SelectElement::recalcListItems): + (WebCore::SelectElement::reset): + * manual-tests/no-listbox-rendering.html: Added. + +2010-04-19 Balazs Kelemen <kb@inf.u-szeged.hu> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Destroy SharedTimerQt before destruction of QCoreApplication. + + To avoid unsafe situations caused by running WebCore code (through firing timers) when destruction of QCoreApplication + has been started, we should explicitly destroy the SharedTimerQt instance on application exit. + We can achieve that through installing a self-destroying slot for the QCoreApplication::aboutToQuit() signal + into the SharedTimerQt instance. + + https://bugs.webkit.org/show_bug.cgi?id=36832 + + No functional change so no new tests. + + * platform/qt/SharedTimerQt.cpp: + (WebCore::SharedTimerQt::SharedTimerQt): + (WebCore::SharedTimerQt::destroy): + (WebCore::SharedTimerQt::inst): + +2010-04-16 Noam Rosenthal <noam.rosenthal@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + Make GraphicsLayerQt always use ItemCoordinateCache, and remove ItemUsesExtendedStyleOption. + This aligns our implementation with the Safari implementation - layers are always uploaded + to textures in item units, and WebCore is responsible for the heuristics. + + [Qt] GraphicsLayer: performance optimizations + https://bugs.webkit.org/show_bug.cgi?id=35393 + + No new tests. Still no FPS benchmarks available (on any platform) + but animations are noticably better. + + * platform/graphics/qt/GraphicsLayerQt.cpp: + (WebCore::GraphicsLayerQtImpl::GraphicsLayerQtImpl): + (WebCore::GraphicsLayerQtImpl::paint): + (WebCore::GraphicsLayerQtImpl::flushChanges): + (WebCore::TransformAnimationQt::updateState): + +2010-04-16 Antonio Gomes <tonikitoo@webkit.org> + + Unreviewed QtWebKit (with Qt 4.7) build fix. + + Bug 37683 moved code from FontQt.cpp to FontPlatformDataQt.cpp but did not + renamed the variable used. + + * platform/graphics/qt/FontPlatformDataQt.cpp: + (WebCore::FontPlatformData::FontPlatformData): + +2010-04-16 Simon Hausmann <simon.hausmann@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] WebCore::Font::font() causes a QFont detach + https://bugs.webkit.org/show_bug.cgi?id=37683 + + Moved the setStyleStrategy call to FontPlatformData + to avoid the detach. + + Thanks to Holger for spotting this. + + * platform/graphics/qt/FontPlatformDataQt.cpp: + (WebCore::FontPlatformData::FontPlatformData): + * platform/graphics/qt/FontQt.cpp: + (WebCore::Font::font): + +2010-04-16 No'am Rosenthal <noam.rosenthal@nokia.com> + + Reviewed by Antti Koivisto. + + [Qt]QtLauncher crash on page with CSS 3D transform + https://bugs.webkit.org/show_bug.cgi?id=36859 + + Added a neccessary null-pointer check, lack of which created the crash circumstances. + + Tested by http://css-vfx.googlecode.com/svn/trunk/snowstack/snowstack.html + + * platform/graphics/qt/GraphicsLayerQt.cpp: + (WebCore::GraphicsLayerQtImpl::flushChanges): + +2010-04-18 Simon Hausmann <simon.hausmann@nokia.com> + + Reviewed by Laszlo Gombos. + + [Qt] Fix JavaScriptCore's include path for WinCE builds + + https://bugs.webkit.org/show_bug.cgi?id=36751 + + * WebCore.pro: + +2010-04-19 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] Fix compilation against namespaced Qt. + + * platform/graphics/GraphicsLayer.h: + * platform/graphics/Tile.h: + * platform/graphics/qt/MediaPlayerPrivateQt.h: + * platform/network/qt/NetworkStateNotifierPrivate.h: + +2010-04-14 Luiz Agostini <luiz.agostini@openbossa.org> + + Reviewed by Kenneth Rohde Christiansen. + + Changing view mode names due to specification changes + https://bugs.webkit.org/show_bug.cgi?id=37615 + + test: fast/media/media-feature-wgt-view-mode.html + + specification: http://dev.w3.org/2006/waf/widgets-vmmf/ + + * css/MediaQueryEvaluator.cpp: + (WebCore::view_modeMediaFeatureEval): + * page/ChromeClient.h: + (WebCore::ChromeClient::isWindowed): + (WebCore::ChromeClient::isMaximized): + (WebCore::ChromeClient::isMinimized): + +2010-04-15 Bruno Schmidt <bruno.schmidt@gmail.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Null QObjects properties cause Segmentation Fault + https://bugs.webkit.org/show_bug.cgi?id=34730 + + QObjects exported to the QWebkit javascript with properties that are + a null "QObject*" cause Segmentation Fault. + + If an QObject is added to the javascript context and it contains + properties of the type QObject* with NULL value, calling the property + causes Segmentation Fault. + So now the code below properly checks for null pointers: + + * bridge/qt/qt_instance.cpp: + (JSC::Bindings::QtInstance::getClass): may return NULL + (JSC::Bindings::QtInstance::getMethod): may return jsNull() + (JSC::Bindings::QtInstance::stringValue): may return jsNull() + (JSC::Bindings::QtInstance::booleanValue): may return false + * bridge/qt/qt_runtime.cpp: + (JSC::Bindings::convertValueToQVariant): + (JSC::Bindings::convertQVariantToValue): May return jsNull on QObjectStar + 2010-04-09 Kenneth Rohde Christiansen <kenneth@webkit.org> Reviewed by Simon Fraser. diff --git a/src/3rdparty/webkit/WebCore/WebCore.gypi b/src/3rdparty/webkit/WebCore/WebCore.gypi index 9746b46..caa79f2 100644 --- a/src/3rdparty/webkit/WebCore/WebCore.gypi +++ b/src/3rdparty/webkit/WebCore/WebCore.gypi @@ -1226,6 +1226,8 @@ 'dom/UIEvent.h', 'dom/UIEventWithKeyState.cpp', 'dom/UIEventWithKeyState.h', + 'dom/ViewportArguments.cpp', + 'dom/ViewportArguments.h', 'dom/WebKitAnimationEvent.cpp', 'dom/WebKitAnimationEvent.h', 'dom/WebKitTransitionEvent.cpp', diff --git a/src/3rdparty/webkit/WebCore/WebCore.pro b/src/3rdparty/webkit/WebCore/WebCore.pro index 3dfe803..2a64982 100644 --- a/src/3rdparty/webkit/WebCore/WebCore.pro +++ b/src/3rdparty/webkit/WebCore/WebCore.pro @@ -35,13 +35,13 @@ symbian: { # Move RW-section base address to start from 0xE00000 instead of the toolchain default 0x400000. QMAKE_LFLAGS.ARMCC += --rw-base 0xE00000 MMP_RULES += ALWAYS_BUILD_AS_ARM - } else { + } else { QMAKE_CFLAGS -= --thumb QMAKE_CXXFLAGS -= --thumb } + CONFIG(release, debug|release): QMAKE_CXXFLAGS.ARMCC += -OTime -O3 } - isEmpty(OUTPUT_DIR): OUTPUT_DIR = .. include($$PWD/../WebKit.pri) @@ -530,6 +530,7 @@ SOURCES += \ dom/TreeWalker.cpp \ dom/UIEvent.cpp \ dom/UIEventWithKeyState.cpp \ + dom/ViewportArguments.cpp \ dom/WebKitAnimationEvent.cpp \ dom/WebKitTransitionEvent.cpp \ dom/WheelEvent.cpp \ @@ -1241,6 +1242,7 @@ HEADERS += \ dom/TreeWalker.h \ dom/UIEvent.h \ dom/UIEventWithKeyState.h \ + dom/ViewportArguments.h \ dom/WebKitAnimationEvent.h \ dom/WebKitTransitionEvent.h \ dom/WheelEvent.h \ @@ -2949,5 +2951,5 @@ symbian { } } -# WebKit doesn't compile in C++0x mode +# Disable C++0x mode in WebCore for those who enabled it in their Qt's mkspec *-g++*:QMAKE_CXXFLAGS -= -std=c++0x -std=gnu++0x diff --git a/src/3rdparty/webkit/WebCore/bridge/npapi.h b/src/3rdparty/webkit/WebCore/bridge/npapi.h index 4a8492e..533fcba 100644 --- a/src/3rdparty/webkit/WebCore/bridge/npapi.h +++ b/src/3rdparty/webkit/WebCore/bridge/npapi.h @@ -590,8 +590,8 @@ typedef QEvent NPEvent; typedef struct _NPEvent { uint16 event; - uint32 wParam; - uint32 lParam; + uintptr_t wParam; + uintptr_t lParam; } NPEvent; #elif defined (XP_UNIX) typedef XEvent NPEvent; diff --git a/src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.cpp b/src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.cpp index dc6df14..f6f368b 100644 --- a/src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.cpp +++ b/src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.cpp @@ -171,8 +171,11 @@ QtInstance* QtInstance::getInstance(JSObject* object) Class* QtInstance::getClass() const { - if (!m_class) + if (!m_class) { + if (!m_object) + return 0; m_class = QtClass::classForObject(m_object); + } return m_class; } @@ -238,7 +241,9 @@ void QtInstance::getPropertyNames(ExecState* exec, PropertyNameArray& array) JSValue QtInstance::getMethod(ExecState* exec, const Identifier& propertyName) { - MethodList methodList = getClass()->methodsNamed(propertyName, this); + if (!getClass()) + return jsNull(); + MethodList methodList = m_class->methodsNamed(propertyName, this); return new (exec) RuntimeMethod(exec, propertyName, methodList); } @@ -259,12 +264,15 @@ JSValue QtInstance::defaultValue(ExecState* exec, PreferredPrimitiveType hint) c JSValue QtInstance::stringValue(ExecState* exec) const { + QObject* obj = getObject(); + if (!obj) + return jsNull(); + // Hmm.. see if there is a toString defined QByteArray buf; bool useDefault = true; getClass(); - QObject* obj = getObject(); - if (m_class && obj) { + if (m_class) { // Cheat and don't use the full name resolution int index = obj->metaObject()->indexOfMethod("toString()"); if (index >= 0) { @@ -309,7 +317,7 @@ JSValue QtInstance::numberValue(ExecState* exec) const JSValue QtInstance::booleanValue() const { // ECMA 9.2 - return jsBoolean(true); + return jsBoolean(getObject()); } JSValue QtInstance::valueOf(ExecState* exec) const diff --git a/src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.cpp b/src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.cpp index 3bd5190..1775815 100644 --- a/src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.cpp +++ b/src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.cpp @@ -332,7 +332,7 @@ QVariant convertValueToQVariant(ExecState* exec, JSValue value, QMetaType::Type break; } - case QMetaType::QVariantMap: + case QMetaType::QVariantMap: if (type == Object || type == Array || type == RTArray) { // Enumerate the contents of the object PropertyNameArray properties(exec); @@ -871,6 +871,8 @@ JSValue convertQVariantToValue(ExecState* exec, PassRefPtr<RootObject> root, con if (type == QMetaType::QObjectStar || type == QMetaType::QWidgetStar) { QObject* obj = variant.value<QObject*>(); + if (!obj) + return jsNull(); return QtInstance::getQtInstance(obj, root, QScriptEngine::QtOwnership)->createRuntimeObject(exec); } @@ -895,7 +897,7 @@ JSValue convertQVariantToValue(ExecState* exec, PassRefPtr<RootObject> root, con QVariantMap::const_iterator i = map.constBegin(); while (i != map.constEnd()) { QString s = i.key(); - JSValue val = convertQVariantToValue(exec, root, i.value()); + JSValue val = convertQVariantToValue(exec, root.get(), i.value()); if (val) { PutPropertySlot slot; ret->put(exec, Identifier(exec, (const UChar *)s.constData(), s.length()), val, slot); diff --git a/src/3rdparty/webkit/WebCore/css/MediaQueryEvaluator.cpp b/src/3rdparty/webkit/WebCore/css/MediaQueryEvaluator.cpp index 4fda075..ded40b5 100644 --- a/src/3rdparty/webkit/WebCore/css/MediaQueryEvaluator.cpp +++ b/src/3rdparty/webkit/WebCore/css/MediaQueryEvaluator.cpp @@ -501,14 +501,16 @@ static bool view_modeMediaFeatureEval(CSSValue* value, RenderStyle*, Frame* fram if (value) { String mode = static_cast<CSSPrimitiveValue*>(value)->getStringValue(); if (ChromeClient* client = frame->page()->chrome()->client()) { - if (mode == "mini" && client->isDocked()) + if (mode == "windowed" && client->isWindowed()) return true; if (mode == "floating" && client->isFloating()) return true; - if (mode == "application" && client->isApplication()) - return true; if (mode == "fullscreen" && client->isFullscreen()) return true; + if (mode == "maximized" && client->isMaximized()) + return true; + if (mode == "minimized" && client->isMinimized()) + return true; return false; } } diff --git a/src/3rdparty/webkit/WebCore/dom/Document.cpp b/src/3rdparty/webkit/WebCore/dom/Document.cpp index aedba0d..545819d 100644 --- a/src/3rdparty/webkit/WebCore/dom/Document.cpp +++ b/src/3rdparty/webkit/WebCore/dom/Document.cpp @@ -127,6 +127,7 @@ #include "TreeWalker.h" #include "UIEvent.h" #include "UserContentURLPattern.h" +#include "ViewportArguments.h" #include "WebKitAnimationEvent.h" #include "WebKitTransitionEvent.h" #include "WheelEvent.h" @@ -2282,6 +2283,78 @@ void Document::processHttpEquiv(const String& equiv, const String& content) } } +// Though isspace() considers \t and \v to be whitespace, Win IE doesn't. +static bool isSeparator(UChar c) +{ + return c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '=' || c == ',' || c == '\0'; +} + +void Document::processArguments(const String& features, void* data, ArgumentsCallback callback) +{ + // Tread lightly in this code -- it was specifically designed to mimic Win IE's parsing behavior. + int keyBegin, keyEnd; + int valueBegin, valueEnd; + + int i = 0; + int length = features.length(); + String buffer = features.lower(); + while (i < length) { + // skip to first non-separator, but don't skip past the end of the string + while (isSeparator(buffer[i])) { + if (i >= length) + break; + i++; + } + keyBegin = i; + + // skip to first separator + while (!isSeparator(buffer[i])) + i++; + keyEnd = i; + + // skip to first '=', but don't skip past a ',' or the end of the string + while (buffer[i] != '=') { + if (buffer[i] == ',' || i >= length) + break; + i++; + } + + // skip to first non-separator, but don't skip past a ',' or the end of the string + while (isSeparator(buffer[i])) { + if (buffer[i] == ',' || i >= length) + break; + i++; + } + valueBegin = i; + + // skip to first separator + while (!isSeparator(buffer[i])) + i++; + valueEnd = i; + + ASSERT(i <= length); + + String keyString = buffer.substring(keyBegin, keyEnd - keyBegin); + String valueString = buffer.substring(valueBegin, valueEnd - valueBegin); + callback(keyString, valueString, this, data); + } +} + +void Document::processViewport(const String& features) +{ + ASSERT(!features.isNull()); + + Frame* frame = this->frame(); + if (!frame) + return; + + ViewportArguments arguments; + processArguments(features, (void*)&arguments, &setViewportFeature); + + if (frame->page()) + frame->page()->chrome()->client()->didReceiveViewportArguments(frame, arguments); +} + MouseEventWithHitTestResults Document::prepareMouseEvent(const HitTestRequest& request, const IntPoint& documentPoint, const PlatformMouseEvent& event) { ASSERT(!renderer() || renderer()->isRenderView()); diff --git a/src/3rdparty/webkit/WebCore/dom/Document.h b/src/3rdparty/webkit/WebCore/dom/Document.h index cc3e559..44cdf0d 100644 --- a/src/3rdparty/webkit/WebCore/dom/Document.h +++ b/src/3rdparty/webkit/WebCore/dom/Document.h @@ -698,7 +698,8 @@ public: * @param content The header value (value of the meta tag's "content" attribute) */ void processHttpEquiv(const String& equiv, const String& content); - + void processViewport(const String& features); + // Returns the owning element in the parent document. // Returns 0 if this is the top level document. Element* ownerElement() const; @@ -972,6 +973,10 @@ protected: void clearXMLVersion() { m_xmlVersion = String(); } private: + + typedef void (*ArgumentsCallback)(const String& keyString, const String& valueString, Document*, void* data); + void processArguments(const String& features, void* data, ArgumentsCallback); + virtual bool isDocument() const { return true; } virtual void removedLastRef(); virtual void determineParseMode() { } diff --git a/src/3rdparty/webkit/WebCore/dom/Element.cpp b/src/3rdparty/webkit/WebCore/dom/Element.cpp index 8711110..6bd512d 100644 --- a/src/3rdparty/webkit/WebCore/dom/Element.cpp +++ b/src/3rdparty/webkit/WebCore/dom/Element.cpp @@ -561,7 +561,11 @@ void Element::setAttribute(const AtomicString& name, const AtomicString& value, return; } +#if COMPILER(RVCT) + const AtomicString localName = shouldIgnoreAttributeCase(this) ? name.lower() : name; +#else const AtomicString& localName = shouldIgnoreAttributeCase(this) ? name.lower() : name; +#endif // allocate attributemap if necessary Attribute* old = attributes(false)->getAttributeItem(localName, false); diff --git a/src/3rdparty/webkit/WebCore/dom/SelectElement.cpp b/src/3rdparty/webkit/WebCore/dom/SelectElement.cpp index e900245..4af90c9 100644 --- a/src/3rdparty/webkit/WebCore/dom/SelectElement.cpp +++ b/src/3rdparty/webkit/WebCore/dom/SelectElement.cpp @@ -270,11 +270,11 @@ void SelectElement::recalcListItems(SelectElementData& data, const Element* elem if (OptionElement* optionElement = toOptionElement(current)) { listItems.append(current); - if (updateSelectedStates) { - if (!foundSelected && (data.usesMenuList() || (!data.multiple() && optionElement->selected()))) { + if (updateSelectedStates && !data.multiple()) { + if (!foundSelected && (data.size() <= 1 || optionElement->selected())) { foundSelected = optionElement; foundSelected->setSelectedState(true); - } else if (foundSelected && !data.multiple() && optionElement->selected()) { + } else if (foundSelected && optionElement->selected()) { foundSelected->setSelectedState(false); foundSelected = optionElement; } @@ -499,7 +499,7 @@ void SelectElement::reset(SelectElementData& data, Element* element) firstOption = optionElement; } - if (!selectedOption && firstOption && data.usesMenuList()) + if (!selectedOption && firstOption && !data.multiple() && data.size() <= 1) firstOption->setSelectedState(true); setOptionsChangedOnRenderer(data, element); diff --git a/src/3rdparty/webkit/WebCore/dom/ViewportArguments.cpp b/src/3rdparty/webkit/WebCore/dom/ViewportArguments.cpp new file mode 100644 index 0000000..d585896 --- /dev/null +++ b/src/3rdparty/webkit/WebCore/dom/ViewportArguments.cpp @@ -0,0 +1,120 @@ +/* + * Copyright (C) 1999 Lars Knoll (knoll@kde.org) + * (C) 1999 Antti Koivisto (koivisto@kde.org) + * (C) 2001 Dirk Mueller (mueller@kde.org) + * (C) 2006 Alexey Proskuryakov (ap@webkit.org) + * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. + * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + +#include "config.h" +#include "ViewportArguments.h" + +#include "Chrome.h" +#include "Console.h" +#include "DOMWindow.h" +#include "Document.h" +#include "Frame.h" +#include "Page.h" +#include "PlatformString.h" +#include "Tokenizer.h" + +namespace WebCore { + +void setViewportFeature(const String& keyString, const String& valueString, Document* document, void* data) +{ + ViewportArguments* arguments = static_cast<ViewportArguments*>(data); + float value = ViewportArguments::ValueUndefined; + bool didUseConstants = false; + + if (equalIgnoringCase(valueString, "yes")) + value = 1; + else if (equalIgnoringCase(valueString, "device-width")) { + didUseConstants = true; + if (document->page()) + value = document->page()->chrome()->windowRect().width(); + } else if (equalIgnoringCase(valueString, "device-height")) { + didUseConstants = true; + if (document->page()) + value = document->page()->chrome()->windowRect().height(); + } else if (equalIgnoringCase(valueString, "default")) // This allows us to distinguish the omission of a key from asking for the default value. + value = -2; + else if (valueString.length()) // listing a key with no value is shorthand for key=default + value = valueString.toFloat(); + + if (keyString == "initial-scale") + arguments->initialScale = value; + else if (keyString == "minimum-scale") + arguments->minimumScale = value; + else if (keyString == "maximum-scale") { + arguments->maximumScale = value; + if (value > 10.0) + reportViewportWarning(document, MaximumScaleTooLargeError, keyString); + } else if (keyString == "user-scalable") + arguments->userScalable = value; + else if (keyString == "width") { + if (document->page() && value == document->page()->chrome()->windowRect().width() && !didUseConstants) + reportViewportWarning(document, DeviceWidthShouldBeUsedWarning, keyString); + else if (document->page() && value == document->page()->chrome()->windowRect().height() && !didUseConstants) + reportViewportWarning(document, DeviceHeightShouldBeUsedWarning, keyString); + + arguments->width = value; + } else if (keyString == "height") { + if (document->page() && value == document->page()->chrome()->windowRect().width() && !didUseConstants) + reportViewportWarning(document, DeviceWidthShouldBeUsedWarning, keyString); + else if (document->page() && value == document->page()->chrome()->windowRect().height() && !didUseConstants) + reportViewportWarning(document, DeviceHeightShouldBeUsedWarning, keyString); + + arguments->height = value; + } else + reportViewportWarning(document, UnrecognizedViewportArgumentError, keyString); +} + +static const char* viewportErrorMessageTemplate(ViewportErrorCode errorCode) +{ + static const char* const errors[] = { + "Viewport width or height set to physical device width, try using \"device-width\" constant instead for future compatibility.", + "Viewport height or height set to physical device height, try using \"device-height\" constant instead for future compatibility.", + "Viewport argument \"%replacement\" not recognized. Content ignored.", + "Viewport maximum-scale cannot be larger than 10.0. The maximum-scale will be set to 10.0." + }; + + return errors[errorCode]; +} + +static MessageLevel viewportErrorMessageLevel(ViewportErrorCode errorCode) +{ + return errorCode == UnrecognizedViewportArgumentError || errorCode == MaximumScaleTooLargeError ? ErrorMessageLevel : TipMessageLevel; +} + +void reportViewportWarning(Document* document, ViewportErrorCode errorCode, const String& replacement) +{ + Tokenizer* tokenizer = document->tokenizer(); + + Frame* frame = document->frame(); + if (!frame) + return; + + String message = viewportErrorMessageTemplate(errorCode); + message.replace("%replacement", replacement); + + frame->domWindow()->console()->addMessage(HTMLMessageSource, LogMessageType, viewportErrorMessageLevel(errorCode), message, tokenizer ? tokenizer->lineNumber() + 1 : 0, document->url().string()); +} + +} // namespace WebCore diff --git a/src/3rdparty/webkit/WebCore/dom/ViewportArguments.h b/src/3rdparty/webkit/WebCore/dom/ViewportArguments.h new file mode 100644 index 0000000..29eec8e --- /dev/null +++ b/src/3rdparty/webkit/WebCore/dom/ViewportArguments.h @@ -0,0 +1,74 @@ +/* + * Copyright (C) 1999 Lars Knoll (knoll@kde.org) + * (C) 1999 Antti Koivisto (koivisto@kde.org) + * (C) 2001 Dirk Mueller (mueller@kde.org) + * (C) 2006 Alexey Proskuryakov (ap@webkit.org) + * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. + * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + +#ifndef ViewportArguments_h +#define ViewportArguments_h + +namespace WebCore { + +class Document; +class String; + +enum ViewportErrorCode { + DeviceWidthShouldBeUsedWarning, + DeviceHeightShouldBeUsedWarning, + UnrecognizedViewportArgumentError, + MaximumScaleTooLargeError +}; + +struct ViewportArguments { + + enum { ValueUndefined = -1 }; + + ViewportArguments() + : initialScale(ValueUndefined) + , minimumScale(ValueUndefined) + , maximumScale(ValueUndefined) + , width(ValueUndefined) + , height(ValueUndefined) + , userScalable(ValueUndefined) + { + } + + float initialScale; + float minimumScale; + float maximumScale; + float width; + float height; + + float userScalable; + + bool hasCustomArgument() const + { + return initialScale != ValueUndefined || minimumScale != ValueUndefined || maximumScale != ValueUndefined || width != ValueUndefined || height != ValueUndefined || userScalable != ValueUndefined; + } +}; + +void setViewportFeature(const String& keyString, const String& valueString, Document*, void* data); +void reportViewportWarning(Document*, ViewportErrorCode, const String& replacement); + +} // namespace WebCore + +#endif // ViewportArguments_h diff --git a/src/3rdparty/webkit/WebCore/generated/CSSGrammar.cpp b/src/3rdparty/webkit/WebCore/generated/CSSGrammar.cpp index de39328..9f3db9d 100644 --- a/src/3rdparty/webkit/WebCore/generated/CSSGrammar.cpp +++ b/src/3rdparty/webkit/WebCore/generated/CSSGrammar.cpp @@ -76,7 +76,7 @@ /* Copy the first part of user declarations. */ /* Line 189 of yacc.c */ -#line 1 "css\\CSSGrammar.y" +#line 1 "css/CSSGrammar.y" /* @@ -137,7 +137,7 @@ using namespace HTMLNames; /* Line 189 of yacc.c */ -#line 141 "C:/dev/webkit-2.0/WebCore/generated/CSSGrammar.tab.c" +#line 141 "/WebCore/generated/CSSGrammar.tab.c" /* Enabling traces. */ #ifndef YYDEBUG @@ -238,7 +238,7 @@ typedef union YYSTYPE { /* Line 214 of yacc.c */ -#line 62 "css\\CSSGrammar.y" +#line 62 "css/CSSGrammar.y" bool boolean; char character; @@ -265,7 +265,7 @@ typedef union YYSTYPE /* Line 214 of yacc.c */ -#line 269 "C:/dev/webkit-2.0/WebCore/generated/CSSGrammar.tab.c" +#line 269 "/WebCore/generated/CSSGrammar.tab.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -276,7 +276,7 @@ typedef union YYSTYPE /* Copy the second part of user declarations. */ /* Line 264 of yacc.c */ -#line 86 "css\\CSSGrammar.y" +#line 86 "css/CSSGrammar.y" static inline int cssyyerror(const char*) @@ -292,7 +292,7 @@ static int cssyylex(YYSTYPE* yylval, void* parser) /* Line 264 of yacc.c */ -#line 296 "C:/dev/webkit-2.0/WebCore/generated/CSSGrammar.tab.c" +#line 296 "/WebCore/generated/CSSGrammar.tab.c" #ifdef short # undef short @@ -2170,7 +2170,7 @@ yyreduce: case 10: /* Line 1455 of yacc.c */ -#line 280 "css\\CSSGrammar.y" +#line 280 "css/CSSGrammar.y" { static_cast<CSSParser*>(parser)->m_rule = (yyvsp[(4) - (6)].rule); ;} @@ -2179,7 +2179,7 @@ yyreduce: case 11: /* Line 1455 of yacc.c */ -#line 286 "css\\CSSGrammar.y" +#line 286 "css/CSSGrammar.y" { static_cast<CSSParser*>(parser)->m_keyframe = (yyvsp[(4) - (6)].keyframeRule); ;} @@ -2188,7 +2188,7 @@ yyreduce: case 12: /* Line 1455 of yacc.c */ -#line 292 "css\\CSSGrammar.y" +#line 292 "css/CSSGrammar.y" { /* can be empty */ ;} @@ -2197,7 +2197,7 @@ yyreduce: case 13: /* Line 1455 of yacc.c */ -#line 298 "css\\CSSGrammar.y" +#line 298 "css/CSSGrammar.y" { /* can be empty */ ;} @@ -2206,7 +2206,7 @@ yyreduce: case 14: /* Line 1455 of yacc.c */ -#line 304 "css\\CSSGrammar.y" +#line 304 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); if ((yyvsp[(4) - (5)].valueList)) { @@ -2223,7 +2223,7 @@ yyreduce: case 15: /* Line 1455 of yacc.c */ -#line 318 "css\\CSSGrammar.y" +#line 318 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); p->m_mediaQuery = p->sinkFloatingMediaQuery((yyvsp[(4) - (5)].mediaQuery)); @@ -2233,7 +2233,7 @@ yyreduce: case 16: /* Line 1455 of yacc.c */ -#line 325 "css\\CSSGrammar.y" +#line 325 "css/CSSGrammar.y" { if ((yyvsp[(4) - (5)].selectorList)) { CSSParser* p = static_cast<CSSParser*>(parser); @@ -2246,7 +2246,7 @@ yyreduce: case 23: /* Line 1455 of yacc.c */ -#line 347 "css\\CSSGrammar.y" +#line 347 "css/CSSGrammar.y" { ;} break; @@ -2254,7 +2254,7 @@ yyreduce: case 26: /* Line 1455 of yacc.c */ -#line 357 "css\\CSSGrammar.y" +#line 357 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.rule) = static_cast<CSSParser*>(parser)->createCharsetRule((yyvsp[(3) - (5)].string)); @@ -2266,7 +2266,7 @@ yyreduce: case 27: /* Line 1455 of yacc.c */ -#line 363 "css\\CSSGrammar.y" +#line 363 "css/CSSGrammar.y" { ;} break; @@ -2274,7 +2274,7 @@ yyreduce: case 28: /* Line 1455 of yacc.c */ -#line 365 "css\\CSSGrammar.y" +#line 365 "css/CSSGrammar.y" { ;} break; @@ -2282,7 +2282,7 @@ yyreduce: case 30: /* Line 1455 of yacc.c */ -#line 371 "css\\CSSGrammar.y" +#line 371 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); if ((yyvsp[(2) - (3)].rule) && p->m_styleSheet) @@ -2293,7 +2293,7 @@ yyreduce: case 39: /* Line 1455 of yacc.c */ -#line 390 "css\\CSSGrammar.y" +#line 390 "css/CSSGrammar.y" { static_cast<CSSParser*>(parser)->m_hadSyntacticallyValidCSSRule = true; ;} @@ -2302,14 +2302,14 @@ yyreduce: case 42: /* Line 1455 of yacc.c */ -#line 398 "css\\CSSGrammar.y" +#line 398 "css/CSSGrammar.y" { (yyval.ruleList) = 0; ;} break; case 43: /* Line 1455 of yacc.c */ -#line 399 "css\\CSSGrammar.y" +#line 399 "css/CSSGrammar.y" { (yyval.ruleList) = (yyvsp[(1) - (3)].ruleList); if ((yyvsp[(2) - (3)].rule)) { @@ -2323,7 +2323,7 @@ yyreduce: case 55: /* Line 1455 of yacc.c */ -#line 428 "css\\CSSGrammar.y" +#line 428 "css/CSSGrammar.y" { (yyval.rule) = static_cast<CSSParser*>(parser)->createImportRule((yyvsp[(3) - (6)].string), (yyvsp[(5) - (6)].mediaList)); ;} @@ -2332,7 +2332,7 @@ yyreduce: case 56: /* Line 1455 of yacc.c */ -#line 431 "css\\CSSGrammar.y" +#line 431 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -2341,7 +2341,7 @@ yyreduce: case 57: /* Line 1455 of yacc.c */ -#line 434 "css\\CSSGrammar.y" +#line 434 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -2350,7 +2350,7 @@ yyreduce: case 58: /* Line 1455 of yacc.c */ -#line 437 "css\\CSSGrammar.y" +#line 437 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -2359,7 +2359,7 @@ yyreduce: case 59: /* Line 1455 of yacc.c */ -#line 443 "css\\CSSGrammar.y" +#line 443 "css/CSSGrammar.y" { (yyval.rule) = static_cast<CSSParser*>(parser)->createVariablesRule((yyvsp[(3) - (7)].mediaList), true); ;} @@ -2368,7 +2368,7 @@ yyreduce: case 60: /* Line 1455 of yacc.c */ -#line 447 "css\\CSSGrammar.y" +#line 447 "css/CSSGrammar.y" { (yyval.rule) = static_cast<CSSParser*>(parser)->createVariablesRule((yyvsp[(3) - (7)].mediaList), false); ;} @@ -2377,7 +2377,7 @@ yyreduce: case 61: /* Line 1455 of yacc.c */ -#line 453 "css\\CSSGrammar.y" +#line 453 "css/CSSGrammar.y" { (yyval.mediaList) = static_cast<CSSParser*>(parser)->createMediaList(); ;} @@ -2386,7 +2386,7 @@ yyreduce: case 62: /* Line 1455 of yacc.c */ -#line 457 "css\\CSSGrammar.y" +#line 457 "css/CSSGrammar.y" { (yyval.mediaList) = (yyvsp[(3) - (3)].mediaList); ;} @@ -2395,7 +2395,7 @@ yyreduce: case 63: /* Line 1455 of yacc.c */ -#line 463 "css\\CSSGrammar.y" +#line 463 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (1)].boolean); ;} @@ -2404,7 +2404,7 @@ yyreduce: case 64: /* Line 1455 of yacc.c */ -#line 466 "css\\CSSGrammar.y" +#line 466 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (2)].boolean); if ((yyvsp[(2) - (2)].boolean)) @@ -2415,7 +2415,7 @@ yyreduce: case 65: /* Line 1455 of yacc.c */ -#line 471 "css\\CSSGrammar.y" +#line 471 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (1)].boolean); ;} @@ -2424,7 +2424,7 @@ yyreduce: case 66: /* Line 1455 of yacc.c */ -#line 474 "css\\CSSGrammar.y" +#line 474 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -2433,7 +2433,7 @@ yyreduce: case 67: /* Line 1455 of yacc.c */ -#line 477 "css\\CSSGrammar.y" +#line 477 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -2442,7 +2442,7 @@ yyreduce: case 68: /* Line 1455 of yacc.c */ -#line 480 "css\\CSSGrammar.y" +#line 480 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (2)].boolean); ;} @@ -2451,7 +2451,7 @@ yyreduce: case 69: /* Line 1455 of yacc.c */ -#line 486 "css\\CSSGrammar.y" +#line 486 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (3)].boolean); ;} @@ -2460,7 +2460,7 @@ yyreduce: case 70: /* Line 1455 of yacc.c */ -#line 489 "css\\CSSGrammar.y" +#line 489 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -2469,7 +2469,7 @@ yyreduce: case 71: /* Line 1455 of yacc.c */ -#line 492 "css\\CSSGrammar.y" +#line 492 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -2478,7 +2478,7 @@ yyreduce: case 72: /* Line 1455 of yacc.c */ -#line 495 "css\\CSSGrammar.y" +#line 495 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -2487,7 +2487,7 @@ yyreduce: case 73: /* Line 1455 of yacc.c */ -#line 498 "css\\CSSGrammar.y" +#line 498 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (4)].boolean); if ((yyvsp[(2) - (4)].boolean)) @@ -2498,7 +2498,7 @@ yyreduce: case 74: /* Line 1455 of yacc.c */ -#line 503 "css\\CSSGrammar.y" +#line 503 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (4)].boolean); ;} @@ -2507,7 +2507,7 @@ yyreduce: case 75: /* Line 1455 of yacc.c */ -#line 506 "css\\CSSGrammar.y" +#line 506 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (6)].boolean); ;} @@ -2516,7 +2516,7 @@ yyreduce: case 76: /* Line 1455 of yacc.c */ -#line 512 "css\\CSSGrammar.y" +#line 512 "css/CSSGrammar.y" { (yyval.boolean) = static_cast<CSSParser*>(parser)->addVariable((yyvsp[(1) - (4)].string), (yyvsp[(4) - (4)].valueList)); ;} @@ -2525,7 +2525,7 @@ yyreduce: case 77: /* Line 1455 of yacc.c */ -#line 516 "css\\CSSGrammar.y" +#line 516 "css/CSSGrammar.y" { (yyval.boolean) = static_cast<CSSParser*>(parser)->addVariableDeclarationBlock((yyvsp[(1) - (7)].string)); ;} @@ -2534,7 +2534,7 @@ yyreduce: case 78: /* Line 1455 of yacc.c */ -#line 520 "css\\CSSGrammar.y" +#line 520 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -2543,7 +2543,7 @@ yyreduce: case 79: /* Line 1455 of yacc.c */ -#line 524 "css\\CSSGrammar.y" +#line 524 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -2552,7 +2552,7 @@ yyreduce: case 80: /* Line 1455 of yacc.c */ -#line 528 "css\\CSSGrammar.y" +#line 528 "css/CSSGrammar.y" { /* @variables { varname: } Just reduce away this variable with no value. */ (yyval.boolean) = false; @@ -2562,7 +2562,7 @@ yyreduce: case 81: /* Line 1455 of yacc.c */ -#line 533 "css\\CSSGrammar.y" +#line 533 "css/CSSGrammar.y" { /* if we come across rules with invalid values like this case: @variables { varname: *; }, just discard the property/value pair */ (yyval.boolean) = false; @@ -2572,7 +2572,7 @@ yyreduce: case 82: /* Line 1455 of yacc.c */ -#line 540 "css\\CSSGrammar.y" +#line 540 "css/CSSGrammar.y" { (yyval.string) = (yyvsp[(1) - (2)].string); ;} @@ -2581,7 +2581,7 @@ yyreduce: case 83: /* Line 1455 of yacc.c */ -#line 546 "css\\CSSGrammar.y" +#line 546 "css/CSSGrammar.y" { static_cast<CSSParser*>(parser)->addNamespace((yyvsp[(3) - (6)].string), (yyvsp[(4) - (6)].string)); (yyval.rule) = 0; @@ -2591,7 +2591,7 @@ yyreduce: case 84: /* Line 1455 of yacc.c */ -#line 550 "css\\CSSGrammar.y" +#line 550 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -2600,7 +2600,7 @@ yyreduce: case 85: /* Line 1455 of yacc.c */ -#line 553 "css\\CSSGrammar.y" +#line 553 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -2609,7 +2609,7 @@ yyreduce: case 86: /* Line 1455 of yacc.c */ -#line 556 "css\\CSSGrammar.y" +#line 556 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -2618,21 +2618,21 @@ yyreduce: case 87: /* Line 1455 of yacc.c */ -#line 562 "css\\CSSGrammar.y" +#line 562 "css/CSSGrammar.y" { (yyval.string).characters = 0; ;} break; case 88: /* Line 1455 of yacc.c */ -#line 563 "css\\CSSGrammar.y" +#line 563 "css/CSSGrammar.y" { (yyval.string) = (yyvsp[(1) - (2)].string); ;} break; case 91: /* Line 1455 of yacc.c */ -#line 572 "css\\CSSGrammar.y" +#line 572 "css/CSSGrammar.y" { (yyval.string) = (yyvsp[(1) - (2)].string); ;} @@ -2641,7 +2641,7 @@ yyreduce: case 92: /* Line 1455 of yacc.c */ -#line 578 "css\\CSSGrammar.y" +#line 578 "css/CSSGrammar.y" { (yyval.valueList) = 0; ;} @@ -2650,7 +2650,7 @@ yyreduce: case 93: /* Line 1455 of yacc.c */ -#line 581 "css\\CSSGrammar.y" +#line 581 "css/CSSGrammar.y" { (yyval.valueList) = (yyvsp[(3) - (4)].valueList); ;} @@ -2659,7 +2659,7 @@ yyreduce: case 94: /* Line 1455 of yacc.c */ -#line 587 "css\\CSSGrammar.y" +#line 587 "css/CSSGrammar.y" { (yyvsp[(3) - (7)].string).lower(); (yyval.mediaQueryExp) = static_cast<CSSParser*>(parser)->createFloatingMediaQueryExp((yyvsp[(3) - (7)].string), (yyvsp[(5) - (7)].valueList)); @@ -2669,7 +2669,7 @@ yyreduce: case 95: /* Line 1455 of yacc.c */ -#line 594 "css\\CSSGrammar.y" +#line 594 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.mediaQueryExpList) = p->createFloatingMediaQueryExpList(); @@ -2680,7 +2680,7 @@ yyreduce: case 96: /* Line 1455 of yacc.c */ -#line 599 "css\\CSSGrammar.y" +#line 599 "css/CSSGrammar.y" { (yyval.mediaQueryExpList) = (yyvsp[(1) - (5)].mediaQueryExpList); (yyval.mediaQueryExpList)->append(static_cast<CSSParser*>(parser)->sinkFloatingMediaQueryExp((yyvsp[(5) - (5)].mediaQueryExp))); @@ -2690,7 +2690,7 @@ yyreduce: case 97: /* Line 1455 of yacc.c */ -#line 606 "css\\CSSGrammar.y" +#line 606 "css/CSSGrammar.y" { (yyval.mediaQueryExpList) = static_cast<CSSParser*>(parser)->createFloatingMediaQueryExpList(); ;} @@ -2699,7 +2699,7 @@ yyreduce: case 98: /* Line 1455 of yacc.c */ -#line 609 "css\\CSSGrammar.y" +#line 609 "css/CSSGrammar.y" { (yyval.mediaQueryExpList) = (yyvsp[(3) - (3)].mediaQueryExpList); ;} @@ -2708,7 +2708,7 @@ yyreduce: case 99: /* Line 1455 of yacc.c */ -#line 615 "css\\CSSGrammar.y" +#line 615 "css/CSSGrammar.y" { (yyval.mediaQueryRestrictor) = MediaQuery::None; ;} @@ -2717,7 +2717,7 @@ yyreduce: case 100: /* Line 1455 of yacc.c */ -#line 618 "css\\CSSGrammar.y" +#line 618 "css/CSSGrammar.y" { (yyval.mediaQueryRestrictor) = MediaQuery::Only; ;} @@ -2726,7 +2726,7 @@ yyreduce: case 101: /* Line 1455 of yacc.c */ -#line 621 "css\\CSSGrammar.y" +#line 621 "css/CSSGrammar.y" { (yyval.mediaQueryRestrictor) = MediaQuery::Not; ;} @@ -2735,7 +2735,7 @@ yyreduce: case 102: /* Line 1455 of yacc.c */ -#line 627 "css\\CSSGrammar.y" +#line 627 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.mediaQuery) = p->createFloatingMediaQuery(p->sinkFloatingMediaQueryExpList((yyvsp[(1) - (1)].mediaQueryExpList))); @@ -2745,7 +2745,7 @@ yyreduce: case 103: /* Line 1455 of yacc.c */ -#line 632 "css\\CSSGrammar.y" +#line 632 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyvsp[(3) - (4)].string).lower(); @@ -2756,7 +2756,7 @@ yyreduce: case 104: /* Line 1455 of yacc.c */ -#line 640 "css\\CSSGrammar.y" +#line 640 "css/CSSGrammar.y" { (yyval.mediaList) = static_cast<CSSParser*>(parser)->createMediaList(); ;} @@ -2765,7 +2765,7 @@ yyreduce: case 106: /* Line 1455 of yacc.c */ -#line 647 "css\\CSSGrammar.y" +#line 647 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.mediaList) = p->createMediaList(); @@ -2776,7 +2776,7 @@ yyreduce: case 107: /* Line 1455 of yacc.c */ -#line 652 "css\\CSSGrammar.y" +#line 652 "css/CSSGrammar.y" { (yyval.mediaList) = (yyvsp[(1) - (4)].mediaList); if ((yyval.mediaList)) @@ -2787,7 +2787,7 @@ yyreduce: case 108: /* Line 1455 of yacc.c */ -#line 657 "css\\CSSGrammar.y" +#line 657 "css/CSSGrammar.y" { (yyval.mediaList) = 0; ;} @@ -2796,7 +2796,7 @@ yyreduce: case 109: /* Line 1455 of yacc.c */ -#line 663 "css\\CSSGrammar.y" +#line 663 "css/CSSGrammar.y" { (yyval.rule) = static_cast<CSSParser*>(parser)->createMediaRule((yyvsp[(3) - (7)].mediaList), (yyvsp[(6) - (7)].ruleList)); ;} @@ -2805,7 +2805,7 @@ yyreduce: case 110: /* Line 1455 of yacc.c */ -#line 666 "css\\CSSGrammar.y" +#line 666 "css/CSSGrammar.y" { (yyval.rule) = static_cast<CSSParser*>(parser)->createMediaRule(0, (yyvsp[(5) - (6)].ruleList)); ;} @@ -2814,7 +2814,7 @@ yyreduce: case 111: /* Line 1455 of yacc.c */ -#line 672 "css\\CSSGrammar.y" +#line 672 "css/CSSGrammar.y" { (yyval.string) = (yyvsp[(1) - (2)].string); ;} @@ -2823,7 +2823,7 @@ yyreduce: case 112: /* Line 1455 of yacc.c */ -#line 678 "css\\CSSGrammar.y" +#line 678 "css/CSSGrammar.y" { (yyval.rule) = (yyvsp[(7) - (8)].keyframesRule); (yyvsp[(7) - (8)].keyframesRule)->setNameInternal((yyvsp[(3) - (8)].string)); @@ -2833,14 +2833,14 @@ yyreduce: case 115: /* Line 1455 of yacc.c */ -#line 690 "css\\CSSGrammar.y" +#line 690 "css/CSSGrammar.y" { (yyval.keyframesRule) = static_cast<CSSParser*>(parser)->createKeyframesRule(); ;} break; case 116: /* Line 1455 of yacc.c */ -#line 691 "css\\CSSGrammar.y" +#line 691 "css/CSSGrammar.y" { (yyval.keyframesRule) = (yyvsp[(1) - (3)].keyframesRule); if ((yyvsp[(2) - (3)].keyframeRule)) @@ -2851,7 +2851,7 @@ yyreduce: case 117: /* Line 1455 of yacc.c */ -#line 699 "css\\CSSGrammar.y" +#line 699 "css/CSSGrammar.y" { (yyval.keyframeRule) = static_cast<CSSParser*>(parser)->createKeyframeRule((yyvsp[(1) - (6)].valueList)); ;} @@ -2860,7 +2860,7 @@ yyreduce: case 118: /* Line 1455 of yacc.c */ -#line 705 "css\\CSSGrammar.y" +#line 705 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.valueList) = p->createFloatingValueList(); @@ -2871,7 +2871,7 @@ yyreduce: case 119: /* Line 1455 of yacc.c */ -#line 710 "css\\CSSGrammar.y" +#line 710 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.valueList) = (yyvsp[(1) - (5)].valueList); @@ -2883,14 +2883,14 @@ yyreduce: case 120: /* Line 1455 of yacc.c */ -#line 719 "css\\CSSGrammar.y" +#line 719 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).isInt = false; (yyval.value).fValue = (yyvsp[(1) - (1)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_NUMBER; ;} break; case 121: /* Line 1455 of yacc.c */ -#line 720 "css\\CSSGrammar.y" +#line 720 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).isInt = false; (yyval.value).unit = CSSPrimitiveValue::CSS_NUMBER; CSSParserString& str = (yyvsp[(1) - (1)].string); @@ -2906,7 +2906,7 @@ yyreduce: case 122: /* Line 1455 of yacc.c */ -#line 744 "css\\CSSGrammar.y" +#line 744 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -2915,7 +2915,7 @@ yyreduce: case 123: /* Line 1455 of yacc.c */ -#line 747 "css\\CSSGrammar.y" +#line 747 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -2924,7 +2924,7 @@ yyreduce: case 124: /* Line 1455 of yacc.c */ -#line 754 "css\\CSSGrammar.y" +#line 754 "css/CSSGrammar.y" { (yyval.rule) = static_cast<CSSParser*>(parser)->createFontFaceRule(); ;} @@ -2933,7 +2933,7 @@ yyreduce: case 125: /* Line 1455 of yacc.c */ -#line 757 "css\\CSSGrammar.y" +#line 757 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -2942,7 +2942,7 @@ yyreduce: case 126: /* Line 1455 of yacc.c */ -#line 760 "css\\CSSGrammar.y" +#line 760 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -2951,56 +2951,56 @@ yyreduce: case 127: /* Line 1455 of yacc.c */ -#line 766 "css\\CSSGrammar.y" +#line 766 "css/CSSGrammar.y" { (yyval.relation) = CSSSelector::DirectAdjacent; ;} break; case 128: /* Line 1455 of yacc.c */ -#line 767 "css\\CSSGrammar.y" +#line 767 "css/CSSGrammar.y" { (yyval.relation) = CSSSelector::IndirectAdjacent; ;} break; case 129: /* Line 1455 of yacc.c */ -#line 768 "css\\CSSGrammar.y" +#line 768 "css/CSSGrammar.y" { (yyval.relation) = CSSSelector::Child; ;} break; case 130: /* Line 1455 of yacc.c */ -#line 772 "css\\CSSGrammar.y" +#line 772 "css/CSSGrammar.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; case 131: /* Line 1455 of yacc.c */ -#line 773 "css\\CSSGrammar.y" +#line 773 "css/CSSGrammar.y" { (yyval.integer) = 1; ;} break; case 132: /* Line 1455 of yacc.c */ -#line 777 "css\\CSSGrammar.y" +#line 777 "css/CSSGrammar.y" { (yyval.integer) = -1; ;} break; case 133: /* Line 1455 of yacc.c */ -#line 778 "css\\CSSGrammar.y" +#line 778 "css/CSSGrammar.y" { (yyval.integer) = 1; ;} break; case 134: /* Line 1455 of yacc.c */ -#line 782 "css\\CSSGrammar.y" +#line 782 "css/CSSGrammar.y" { (yyval.rule) = static_cast<CSSParser*>(parser)->createStyleRule((yyvsp[(1) - (5)].selectorList)); ;} @@ -3009,7 +3009,7 @@ yyreduce: case 135: /* Line 1455 of yacc.c */ -#line 788 "css\\CSSGrammar.y" +#line 788 "css/CSSGrammar.y" { if ((yyvsp[(1) - (1)].selector)) { CSSParser* p = static_cast<CSSParser*>(parser); @@ -3025,7 +3025,7 @@ yyreduce: case 136: /* Line 1455 of yacc.c */ -#line 798 "css\\CSSGrammar.y" +#line 798 "css/CSSGrammar.y" { if ((yyvsp[(1) - (4)].selectorList) && (yyvsp[(4) - (4)].selector)) { CSSParser* p = static_cast<CSSParser*>(parser); @@ -3040,7 +3040,7 @@ yyreduce: case 137: /* Line 1455 of yacc.c */ -#line 807 "css\\CSSGrammar.y" +#line 807 "css/CSSGrammar.y" { (yyval.selectorList) = 0; ;} @@ -3049,7 +3049,7 @@ yyreduce: case 138: /* Line 1455 of yacc.c */ -#line 813 "css\\CSSGrammar.y" +#line 813 "css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(1) - (2)].selector); ;} @@ -3058,7 +3058,7 @@ yyreduce: case 139: /* Line 1455 of yacc.c */ -#line 819 "css\\CSSGrammar.y" +#line 819 "css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(1) - (1)].selector); ;} @@ -3067,7 +3067,7 @@ yyreduce: case 140: /* Line 1455 of yacc.c */ -#line 823 "css\\CSSGrammar.y" +#line 823 "css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(1) - (1)].selector); ;} @@ -3076,7 +3076,7 @@ yyreduce: case 141: /* Line 1455 of yacc.c */ -#line 827 "css\\CSSGrammar.y" +#line 827 "css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(2) - (2)].selector); if (!(yyvsp[(1) - (2)].selector)) @@ -3097,7 +3097,7 @@ yyreduce: case 142: /* Line 1455 of yacc.c */ -#line 842 "css\\CSSGrammar.y" +#line 842 "css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(3) - (3)].selector); if (!(yyvsp[(1) - (3)].selector)) @@ -3123,7 +3123,7 @@ yyreduce: case 143: /* Line 1455 of yacc.c */ -#line 862 "css\\CSSGrammar.y" +#line 862 "css/CSSGrammar.y" { (yyval.selector) = 0; ;} @@ -3132,28 +3132,28 @@ yyreduce: case 144: /* Line 1455 of yacc.c */ -#line 868 "css\\CSSGrammar.y" +#line 868 "css/CSSGrammar.y" { (yyval.string).characters = 0; (yyval.string).length = 0; ;} break; case 145: /* Line 1455 of yacc.c */ -#line 869 "css\\CSSGrammar.y" +#line 869 "css/CSSGrammar.y" { static UChar star = '*'; (yyval.string).characters = ☆ (yyval.string).length = 1; ;} break; case 146: /* Line 1455 of yacc.c */ -#line 870 "css\\CSSGrammar.y" +#line 870 "css/CSSGrammar.y" { (yyval.string) = (yyvsp[(1) - (2)].string); ;} break; case 147: /* Line 1455 of yacc.c */ -#line 874 "css\\CSSGrammar.y" +#line 874 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.selector) = p->createFloatingSelector(); @@ -3164,7 +3164,7 @@ yyreduce: case 148: /* Line 1455 of yacc.c */ -#line 879 "css\\CSSGrammar.y" +#line 879 "css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(2) - (2)].selector); if ((yyval.selector)) { @@ -3177,7 +3177,7 @@ yyreduce: case 149: /* Line 1455 of yacc.c */ -#line 886 "css\\CSSGrammar.y" +#line 886 "css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(1) - (1)].selector); CSSParser* p = static_cast<CSSParser*>(parser); @@ -3189,7 +3189,7 @@ yyreduce: case 150: /* Line 1455 of yacc.c */ -#line 892 "css\\CSSGrammar.y" +#line 892 "css/CSSGrammar.y" { AtomicString namespacePrefix = (yyvsp[(1) - (2)].string); CSSParser* p = static_cast<CSSParser*>(parser); @@ -3205,7 +3205,7 @@ yyreduce: case 151: /* Line 1455 of yacc.c */ -#line 902 "css\\CSSGrammar.y" +#line 902 "css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(3) - (3)].selector); if ((yyval.selector)) { @@ -3223,7 +3223,7 @@ yyreduce: case 152: /* Line 1455 of yacc.c */ -#line 914 "css\\CSSGrammar.y" +#line 914 "css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(2) - (2)].selector); if ((yyval.selector)) { @@ -3239,7 +3239,7 @@ yyreduce: case 153: /* Line 1455 of yacc.c */ -#line 927 "css\\CSSGrammar.y" +#line 927 "css/CSSGrammar.y" { CSSParserString& str = (yyvsp[(1) - (1)].string); CSSParser* p = static_cast<CSSParser*>(parser); @@ -3253,7 +3253,7 @@ yyreduce: case 154: /* Line 1455 of yacc.c */ -#line 935 "css\\CSSGrammar.y" +#line 935 "css/CSSGrammar.y" { static UChar star = '*'; (yyval.string).characters = ☆ @@ -3264,7 +3264,7 @@ yyreduce: case 155: /* Line 1455 of yacc.c */ -#line 943 "css\\CSSGrammar.y" +#line 943 "css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(1) - (1)].selector); ;} @@ -3273,7 +3273,7 @@ yyreduce: case 156: /* Line 1455 of yacc.c */ -#line 946 "css\\CSSGrammar.y" +#line 946 "css/CSSGrammar.y" { if (!(yyvsp[(2) - (2)].selector)) (yyval.selector) = 0; @@ -3292,7 +3292,7 @@ yyreduce: case 157: /* Line 1455 of yacc.c */ -#line 959 "css\\CSSGrammar.y" +#line 959 "css/CSSGrammar.y" { (yyval.selector) = 0; ;} @@ -3301,7 +3301,7 @@ yyreduce: case 158: /* Line 1455 of yacc.c */ -#line 965 "css\\CSSGrammar.y" +#line 965 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.selector) = p->createFloatingSelector(); @@ -3315,7 +3315,7 @@ yyreduce: case 159: /* Line 1455 of yacc.c */ -#line 973 "css\\CSSGrammar.y" +#line 973 "css/CSSGrammar.y" { if ((yyvsp[(1) - (1)].string).characters[0] >= '0' && (yyvsp[(1) - (1)].string).characters[0] <= '9') { (yyval.selector) = 0; @@ -3333,7 +3333,7 @@ yyreduce: case 163: /* Line 1455 of yacc.c */ -#line 991 "css\\CSSGrammar.y" +#line 991 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.selector) = p->createFloatingSelector(); @@ -3347,7 +3347,7 @@ yyreduce: case 164: /* Line 1455 of yacc.c */ -#line 1002 "css\\CSSGrammar.y" +#line 1002 "css/CSSGrammar.y" { CSSParserString& str = (yyvsp[(1) - (2)].string); CSSParser* p = static_cast<CSSParser*>(parser); @@ -3361,7 +3361,7 @@ yyreduce: case 165: /* Line 1455 of yacc.c */ -#line 1013 "css\\CSSGrammar.y" +#line 1013 "css/CSSGrammar.y" { (yyval.selector) = static_cast<CSSParser*>(parser)->createFloatingSelector(); (yyval.selector)->setAttribute(QualifiedName(nullAtom, (yyvsp[(3) - (4)].string), nullAtom)); @@ -3372,7 +3372,7 @@ yyreduce: case 166: /* Line 1455 of yacc.c */ -#line 1018 "css\\CSSGrammar.y" +#line 1018 "css/CSSGrammar.y" { (yyval.selector) = static_cast<CSSParser*>(parser)->createFloatingSelector(); (yyval.selector)->setAttribute(QualifiedName(nullAtom, (yyvsp[(3) - (8)].string), nullAtom)); @@ -3384,7 +3384,7 @@ yyreduce: case 167: /* Line 1455 of yacc.c */ -#line 1024 "css\\CSSGrammar.y" +#line 1024 "css/CSSGrammar.y" { AtomicString namespacePrefix = (yyvsp[(3) - (5)].string); CSSParser* p = static_cast<CSSParser*>(parser); @@ -3398,7 +3398,7 @@ yyreduce: case 168: /* Line 1455 of yacc.c */ -#line 1032 "css\\CSSGrammar.y" +#line 1032 "css/CSSGrammar.y" { AtomicString namespacePrefix = (yyvsp[(3) - (9)].string); CSSParser* p = static_cast<CSSParser*>(parser); @@ -3413,7 +3413,7 @@ yyreduce: case 169: /* Line 1455 of yacc.c */ -#line 1044 "css\\CSSGrammar.y" +#line 1044 "css/CSSGrammar.y" { (yyval.integer) = CSSSelector::Exact; ;} @@ -3422,7 +3422,7 @@ yyreduce: case 170: /* Line 1455 of yacc.c */ -#line 1047 "css\\CSSGrammar.y" +#line 1047 "css/CSSGrammar.y" { (yyval.integer) = CSSSelector::List; ;} @@ -3431,7 +3431,7 @@ yyreduce: case 171: /* Line 1455 of yacc.c */ -#line 1050 "css\\CSSGrammar.y" +#line 1050 "css/CSSGrammar.y" { (yyval.integer) = CSSSelector::Hyphen; ;} @@ -3440,7 +3440,7 @@ yyreduce: case 172: /* Line 1455 of yacc.c */ -#line 1053 "css\\CSSGrammar.y" +#line 1053 "css/CSSGrammar.y" { (yyval.integer) = CSSSelector::Begin; ;} @@ -3449,7 +3449,7 @@ yyreduce: case 173: /* Line 1455 of yacc.c */ -#line 1056 "css\\CSSGrammar.y" +#line 1056 "css/CSSGrammar.y" { (yyval.integer) = CSSSelector::End; ;} @@ -3458,7 +3458,7 @@ yyreduce: case 174: /* Line 1455 of yacc.c */ -#line 1059 "css\\CSSGrammar.y" +#line 1059 "css/CSSGrammar.y" { (yyval.integer) = CSSSelector::Contain; ;} @@ -3467,7 +3467,7 @@ yyreduce: case 177: /* Line 1455 of yacc.c */ -#line 1070 "css\\CSSGrammar.y" +#line 1070 "css/CSSGrammar.y" { (yyval.selector) = static_cast<CSSParser*>(parser)->createFloatingSelector(); (yyval.selector)->m_match = CSSSelector::PseudoClass; @@ -3503,7 +3503,7 @@ yyreduce: case 178: /* Line 1455 of yacc.c */ -#line 1100 "css\\CSSGrammar.y" +#line 1100 "css/CSSGrammar.y" { (yyval.selector) = static_cast<CSSParser*>(parser)->createFloatingSelector(); (yyval.selector)->m_match = CSSSelector::PseudoElement; @@ -3528,7 +3528,7 @@ yyreduce: case 179: /* Line 1455 of yacc.c */ -#line 1120 "css\\CSSGrammar.y" +#line 1120 "css/CSSGrammar.y" { CSSParser *p = static_cast<CSSParser*>(parser); (yyval.selector) = p->createFloatingSelector(); @@ -3551,7 +3551,7 @@ yyreduce: case 180: /* Line 1455 of yacc.c */ -#line 1138 "css\\CSSGrammar.y" +#line 1138 "css/CSSGrammar.y" { CSSParser *p = static_cast<CSSParser*>(parser); (yyval.selector) = p->createFloatingSelector(); @@ -3574,7 +3574,7 @@ yyreduce: case 181: /* Line 1455 of yacc.c */ -#line 1156 "css\\CSSGrammar.y" +#line 1156 "css/CSSGrammar.y" { CSSParser *p = static_cast<CSSParser*>(parser); (yyval.selector) = p->createFloatingSelector(); @@ -3598,7 +3598,7 @@ yyreduce: case 182: /* Line 1455 of yacc.c */ -#line 1175 "css\\CSSGrammar.y" +#line 1175 "css/CSSGrammar.y" { if (!(yyvsp[(4) - (6)].selector) || (yyvsp[(4) - (6)].selector)->simpleSelector() || (yyvsp[(4) - (6)].selector)->tagHistory() || (yyvsp[(4) - (6)].selector)->matchesPseudoElement()) (yyval.selector) = 0; @@ -3616,7 +3616,7 @@ yyreduce: case 183: /* Line 1455 of yacc.c */ -#line 1190 "css\\CSSGrammar.y" +#line 1190 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (1)].boolean); ;} @@ -3625,7 +3625,7 @@ yyreduce: case 184: /* Line 1455 of yacc.c */ -#line 1193 "css\\CSSGrammar.y" +#line 1193 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (2)].boolean); if ( (yyvsp[(2) - (2)].boolean) ) @@ -3636,7 +3636,7 @@ yyreduce: case 185: /* Line 1455 of yacc.c */ -#line 1198 "css\\CSSGrammar.y" +#line 1198 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (1)].boolean); ;} @@ -3645,7 +3645,7 @@ yyreduce: case 186: /* Line 1455 of yacc.c */ -#line 1201 "css\\CSSGrammar.y" +#line 1201 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -3654,7 +3654,7 @@ yyreduce: case 187: /* Line 1455 of yacc.c */ -#line 1204 "css\\CSSGrammar.y" +#line 1204 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -3663,7 +3663,7 @@ yyreduce: case 188: /* Line 1455 of yacc.c */ -#line 1207 "css\\CSSGrammar.y" +#line 1207 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (2)].boolean); ;} @@ -3672,7 +3672,7 @@ yyreduce: case 189: /* Line 1455 of yacc.c */ -#line 1210 "css\\CSSGrammar.y" +#line 1210 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (2)].boolean); ;} @@ -3681,7 +3681,7 @@ yyreduce: case 190: /* Line 1455 of yacc.c */ -#line 1216 "css\\CSSGrammar.y" +#line 1216 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (3)].boolean); ;} @@ -3690,7 +3690,7 @@ yyreduce: case 191: /* Line 1455 of yacc.c */ -#line 1219 "css\\CSSGrammar.y" +#line 1219 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -3699,7 +3699,7 @@ yyreduce: case 192: /* Line 1455 of yacc.c */ -#line 1222 "css\\CSSGrammar.y" +#line 1222 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -3708,7 +3708,7 @@ yyreduce: case 193: /* Line 1455 of yacc.c */ -#line 1225 "css\\CSSGrammar.y" +#line 1225 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -3717,7 +3717,7 @@ yyreduce: case 194: /* Line 1455 of yacc.c */ -#line 1228 "css\\CSSGrammar.y" +#line 1228 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -3726,7 +3726,7 @@ yyreduce: case 195: /* Line 1455 of yacc.c */ -#line 1231 "css\\CSSGrammar.y" +#line 1231 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (4)].boolean); if ((yyvsp[(2) - (4)].boolean)) @@ -3737,7 +3737,7 @@ yyreduce: case 196: /* Line 1455 of yacc.c */ -#line 1236 "css\\CSSGrammar.y" +#line 1236 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (4)].boolean); ;} @@ -3746,7 +3746,7 @@ yyreduce: case 197: /* Line 1455 of yacc.c */ -#line 1239 "css\\CSSGrammar.y" +#line 1239 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (6)].boolean); ;} @@ -3755,7 +3755,7 @@ yyreduce: case 198: /* Line 1455 of yacc.c */ -#line 1245 "css\\CSSGrammar.y" +#line 1245 "css/CSSGrammar.y" { (yyval.boolean) = false; CSSParser* p = static_cast<CSSParser*>(parser); @@ -3774,7 +3774,7 @@ yyreduce: case 199: /* Line 1455 of yacc.c */ -#line 1259 "css\\CSSGrammar.y" +#line 1259 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); p->m_valueList = new CSSParserValueList; @@ -3791,7 +3791,7 @@ yyreduce: case 200: /* Line 1455 of yacc.c */ -#line 1271 "css\\CSSGrammar.y" +#line 1271 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -3800,7 +3800,7 @@ yyreduce: case 201: /* Line 1455 of yacc.c */ -#line 1275 "css\\CSSGrammar.y" +#line 1275 "css/CSSGrammar.y" { /* The default movable type template has letter-spacing: .none; Handle this by looking for error tokens at the start of an expr, recover the expr and then treat as an error, cleaning @@ -3812,7 +3812,7 @@ yyreduce: case 202: /* Line 1455 of yacc.c */ -#line 1282 "css\\CSSGrammar.y" +#line 1282 "css/CSSGrammar.y" { /* When we encounter something like p {color: red !important fail;} we should drop the declaration */ (yyval.boolean) = false; @@ -3822,7 +3822,7 @@ yyreduce: case 203: /* Line 1455 of yacc.c */ -#line 1287 "css\\CSSGrammar.y" +#line 1287 "css/CSSGrammar.y" { /* Handle this case: div { text-align: center; !important } Just reduce away the stray !important. */ (yyval.boolean) = false; @@ -3832,7 +3832,7 @@ yyreduce: case 204: /* Line 1455 of yacc.c */ -#line 1292 "css\\CSSGrammar.y" +#line 1292 "css/CSSGrammar.y" { /* div { font-family: } Just reduce away this property with no value. */ (yyval.boolean) = false; @@ -3842,7 +3842,7 @@ yyreduce: case 205: /* Line 1455 of yacc.c */ -#line 1297 "css\\CSSGrammar.y" +#line 1297 "css/CSSGrammar.y" { /* if we come across rules with invalid values like this case: p { weight: *; }, just discard the rule */ (yyval.boolean) = false; @@ -3852,7 +3852,7 @@ yyreduce: case 206: /* Line 1455 of yacc.c */ -#line 1302 "css\\CSSGrammar.y" +#line 1302 "css/CSSGrammar.y" { /* if we come across: div { color{;color:maroon} }, ignore everything within curly brackets */ (yyval.boolean) = false; @@ -3862,7 +3862,7 @@ yyreduce: case 207: /* Line 1455 of yacc.c */ -#line 1309 "css\\CSSGrammar.y" +#line 1309 "css/CSSGrammar.y" { (yyval.integer) = cssPropertyID((yyvsp[(1) - (2)].string)); ;} @@ -3871,21 +3871,21 @@ yyreduce: case 208: /* Line 1455 of yacc.c */ -#line 1315 "css\\CSSGrammar.y" +#line 1315 "css/CSSGrammar.y" { (yyval.boolean) = true; ;} break; case 209: /* Line 1455 of yacc.c */ -#line 1316 "css\\CSSGrammar.y" +#line 1316 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} break; case 210: /* Line 1455 of yacc.c */ -#line 1320 "css\\CSSGrammar.y" +#line 1320 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.valueList) = p->createFloatingValueList(); @@ -3896,7 +3896,7 @@ yyreduce: case 211: /* Line 1455 of yacc.c */ -#line 1325 "css\\CSSGrammar.y" +#line 1325 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.valueList) = (yyvsp[(1) - (3)].valueList); @@ -3916,7 +3916,7 @@ yyreduce: case 212: /* Line 1455 of yacc.c */ -#line 1339 "css\\CSSGrammar.y" +#line 1339 "css/CSSGrammar.y" { (yyval.valueList) = 0; ;} @@ -3925,7 +3925,7 @@ yyreduce: case 213: /* Line 1455 of yacc.c */ -#line 1342 "css\\CSSGrammar.y" +#line 1342 "css/CSSGrammar.y" { (yyval.valueList) = 0; ;} @@ -3934,7 +3934,7 @@ yyreduce: case 214: /* Line 1455 of yacc.c */ -#line 1345 "css\\CSSGrammar.y" +#line 1345 "css/CSSGrammar.y" { (yyval.valueList) = 0; ;} @@ -3943,7 +3943,7 @@ yyreduce: case 215: /* Line 1455 of yacc.c */ -#line 1351 "css\\CSSGrammar.y" +#line 1351 "css/CSSGrammar.y" { (yyval.character) = '/'; ;} @@ -3952,7 +3952,7 @@ yyreduce: case 216: /* Line 1455 of yacc.c */ -#line 1354 "css\\CSSGrammar.y" +#line 1354 "css/CSSGrammar.y" { (yyval.character) = ','; ;} @@ -3961,7 +3961,7 @@ yyreduce: case 217: /* Line 1455 of yacc.c */ -#line 1357 "css\\CSSGrammar.y" +#line 1357 "css/CSSGrammar.y" { (yyval.character) = 0; ;} @@ -3970,28 +3970,28 @@ yyreduce: case 218: /* Line 1455 of yacc.c */ -#line 1363 "css\\CSSGrammar.y" +#line 1363 "css/CSSGrammar.y" { (yyval.value) = (yyvsp[(1) - (1)].value); ;} break; case 219: /* Line 1455 of yacc.c */ -#line 1364 "css\\CSSGrammar.y" +#line 1364 "css/CSSGrammar.y" { (yyval.value) = (yyvsp[(2) - (2)].value); (yyval.value).fValue *= (yyvsp[(1) - (2)].integer); ;} break; case 220: /* Line 1455 of yacc.c */ -#line 1365 "css\\CSSGrammar.y" +#line 1365 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_STRING; ;} break; case 221: /* Line 1455 of yacc.c */ -#line 1366 "css\\CSSGrammar.y" +#line 1366 "css/CSSGrammar.y" { (yyval.value).id = cssValueKeywordID((yyvsp[(1) - (2)].string)); (yyval.value).unit = CSSPrimitiveValue::CSS_IDENT; @@ -4002,49 +4002,49 @@ yyreduce: case 222: /* Line 1455 of yacc.c */ -#line 1372 "css\\CSSGrammar.y" +#line 1372 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_DIMENSION; ;} break; case 223: /* Line 1455 of yacc.c */ -#line 1373 "css\\CSSGrammar.y" +#line 1373 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(2) - (3)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_DIMENSION; ;} break; case 224: /* Line 1455 of yacc.c */ -#line 1374 "css\\CSSGrammar.y" +#line 1374 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_URI; ;} break; case 225: /* Line 1455 of yacc.c */ -#line 1375 "css\\CSSGrammar.y" +#line 1375 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_UNICODE_RANGE; ;} break; case 226: /* Line 1455 of yacc.c */ -#line 1376 "css\\CSSGrammar.y" +#line 1376 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (1)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_PARSER_HEXCOLOR; ;} break; case 227: /* Line 1455 of yacc.c */ -#line 1377 "css\\CSSGrammar.y" +#line 1377 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).string = CSSParserString(); (yyval.value).unit = CSSPrimitiveValue::CSS_PARSER_HEXCOLOR; ;} break; case 228: /* Line 1455 of yacc.c */ -#line 1379 "css\\CSSGrammar.y" +#line 1379 "css/CSSGrammar.y" { (yyval.value) = (yyvsp[(1) - (1)].value); ;} @@ -4053,7 +4053,7 @@ yyreduce: case 229: /* Line 1455 of yacc.c */ -#line 1382 "css\\CSSGrammar.y" +#line 1382 "css/CSSGrammar.y" { (yyval.value) = (yyvsp[(1) - (2)].value); ;} @@ -4062,7 +4062,7 @@ yyreduce: case 230: /* Line 1455 of yacc.c */ -#line 1385 "css\\CSSGrammar.y" +#line 1385 "css/CSSGrammar.y" { /* Handle width: %; */ (yyval.value).id = 0; (yyval.value).unit = 0; ;} @@ -4071,147 +4071,147 @@ yyreduce: case 231: /* Line 1455 of yacc.c */ -#line 1391 "css\\CSSGrammar.y" +#line 1391 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).isInt = true; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_NUMBER; ;} break; case 232: /* Line 1455 of yacc.c */ -#line 1392 "css\\CSSGrammar.y" +#line 1392 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).isInt = false; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_NUMBER; ;} break; case 233: /* Line 1455 of yacc.c */ -#line 1393 "css\\CSSGrammar.y" +#line 1393 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PERCENTAGE; ;} break; case 234: /* Line 1455 of yacc.c */ -#line 1394 "css\\CSSGrammar.y" +#line 1394 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PX; ;} break; case 235: /* Line 1455 of yacc.c */ -#line 1395 "css\\CSSGrammar.y" +#line 1395 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_CM; ;} break; case 236: /* Line 1455 of yacc.c */ -#line 1396 "css\\CSSGrammar.y" +#line 1396 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_MM; ;} break; case 237: /* Line 1455 of yacc.c */ -#line 1397 "css\\CSSGrammar.y" +#line 1397 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_IN; ;} break; case 238: /* Line 1455 of yacc.c */ -#line 1398 "css\\CSSGrammar.y" +#line 1398 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PT; ;} break; case 239: /* Line 1455 of yacc.c */ -#line 1399 "css\\CSSGrammar.y" +#line 1399 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PC; ;} break; case 240: /* Line 1455 of yacc.c */ -#line 1400 "css\\CSSGrammar.y" +#line 1400 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_DEG; ;} break; case 241: /* Line 1455 of yacc.c */ -#line 1401 "css\\CSSGrammar.y" +#line 1401 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_RAD; ;} break; case 242: /* Line 1455 of yacc.c */ -#line 1402 "css\\CSSGrammar.y" +#line 1402 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_GRAD; ;} break; case 243: /* Line 1455 of yacc.c */ -#line 1403 "css\\CSSGrammar.y" +#line 1403 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_TURN; ;} break; case 244: /* Line 1455 of yacc.c */ -#line 1404 "css\\CSSGrammar.y" +#line 1404 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_MS; ;} break; case 245: /* Line 1455 of yacc.c */ -#line 1405 "css\\CSSGrammar.y" +#line 1405 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_S; ;} break; case 246: /* Line 1455 of yacc.c */ -#line 1406 "css\\CSSGrammar.y" +#line 1406 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_HZ; ;} break; case 247: /* Line 1455 of yacc.c */ -#line 1407 "css\\CSSGrammar.y" +#line 1407 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_KHZ; ;} break; case 248: /* Line 1455 of yacc.c */ -#line 1408 "css\\CSSGrammar.y" +#line 1408 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_EMS; ;} break; case 249: /* Line 1455 of yacc.c */ -#line 1409 "css\\CSSGrammar.y" +#line 1409 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSParserValue::Q_EMS; ;} break; case 250: /* Line 1455 of yacc.c */ -#line 1410 "css\\CSSGrammar.y" +#line 1410 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_EXS; ;} break; case 251: /* Line 1455 of yacc.c */ -#line 1411 "css\\CSSGrammar.y" +#line 1411 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); @@ -4225,7 +4225,7 @@ yyreduce: case 252: /* Line 1455 of yacc.c */ -#line 1422 "css\\CSSGrammar.y" +#line 1422 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (1)].string); @@ -4236,7 +4236,7 @@ yyreduce: case 253: /* Line 1455 of yacc.c */ -#line 1430 "css\\CSSGrammar.y" +#line 1430 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); CSSParserFunction* f = p->createFloatingFunction(); @@ -4251,7 +4251,7 @@ yyreduce: case 254: /* Line 1455 of yacc.c */ -#line 1439 "css\\CSSGrammar.y" +#line 1439 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); CSSParserFunction* f = p->createFloatingFunction(); @@ -4266,21 +4266,21 @@ yyreduce: case 255: /* Line 1455 of yacc.c */ -#line 1455 "css\\CSSGrammar.y" +#line 1455 "css/CSSGrammar.y" { (yyval.string) = (yyvsp[(1) - (2)].string); ;} break; case 256: /* Line 1455 of yacc.c */ -#line 1456 "css\\CSSGrammar.y" +#line 1456 "css/CSSGrammar.y" { (yyval.string) = (yyvsp[(1) - (2)].string); ;} break; case 257: /* Line 1455 of yacc.c */ -#line 1463 "css\\CSSGrammar.y" +#line 1463 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -4289,7 +4289,7 @@ yyreduce: case 258: /* Line 1455 of yacc.c */ -#line 1466 "css\\CSSGrammar.y" +#line 1466 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -4298,7 +4298,7 @@ yyreduce: case 259: /* Line 1455 of yacc.c */ -#line 1472 "css\\CSSGrammar.y" +#line 1472 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -4307,7 +4307,7 @@ yyreduce: case 260: /* Line 1455 of yacc.c */ -#line 1475 "css\\CSSGrammar.y" +#line 1475 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -4316,7 +4316,7 @@ yyreduce: case 261: /* Line 1455 of yacc.c */ -#line 1481 "css\\CSSGrammar.y" +#line 1481 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -4325,7 +4325,7 @@ yyreduce: case 262: /* Line 1455 of yacc.c */ -#line 1499 "css\\CSSGrammar.y" +#line 1499 "css/CSSGrammar.y" { static_cast<CSSParser*>(parser)->invalidBlockHit(); ;} @@ -4334,7 +4334,7 @@ yyreduce: case 263: /* Line 1455 of yacc.c */ -#line 1502 "css\\CSSGrammar.y" +#line 1502 "css/CSSGrammar.y" { static_cast<CSSParser*>(parser)->invalidBlockHit(); ;} @@ -4343,7 +4343,7 @@ yyreduce: /* Line 1455 of yacc.c */ -#line 4347 "C:/dev/webkit-2.0/WebCore/generated/CSSGrammar.tab.c" +#line 4347 "/WebCore/generated/CSSGrammar.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -4555,6 +4555,6 @@ yyreturn: /* Line 1675 of yacc.c */ -#line 1512 "css\\CSSGrammar.y" +#line 1512 "css/CSSGrammar.y" diff --git a/src/3rdparty/webkit/WebCore/generated/CSSGrammar.h b/src/3rdparty/webkit/WebCore/generated/CSSGrammar.h index 31d6cce..8e0f4bb 100644 --- a/src/3rdparty/webkit/WebCore/generated/CSSGrammar.h +++ b/src/3rdparty/webkit/WebCore/generated/CSSGrammar.h @@ -115,7 +115,7 @@ typedef union YYSTYPE { /* Line 1676 of yacc.c */ -#line 62 "css\\CSSGrammar.y" +#line 62 "css/CSSGrammar.y" bool boolean; char character; @@ -142,7 +142,7 @@ typedef union YYSTYPE /* Line 1676 of yacc.c */ -#line 144 "C:/dev/webkit-2.0/WebCore/generated/CSSGrammar.tab.h" +#line 144 "/WebCore/generated/CSSGrammar.tab.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ diff --git a/src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp b/src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp index e6ed010..87fb55b 100644 --- a/src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp +++ b/src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp @@ -1,4 +1,4 @@ -/* ANSI-C code produced by gperf version 3.0.1 */ +/* ANSI-C code produced by gperf version 3.0.3 */ /* Command-line: gperf -a -L ANSI-C -E -C -c -o -t --key-positions='*' -NfindProp -Hhash_prop -Wwordlist_prop -D -s 2 CSSPropertyNames.gperf */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -217,6 +217,9 @@ hash_prop (register const char *str, register unsigned int len) #ifdef __GNUC__ __inline +#ifdef __GNUC_STDC_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif #endif const struct props * findProp (register const char *str, register unsigned int len) diff --git a/src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c b/src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c index 89b1c4a..6a2581e 100644 --- a/src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c +++ b/src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c @@ -1,4 +1,4 @@ -/* ANSI-C code produced by gperf version 3.0.1 */ +/* ANSI-C code produced by gperf version 3.0.3 */ /* Command-line: gperf -L ANSI-C -E -C -n -o -t --key-positions='*' -NfindValue -Hhash_val -Wwordlist_value -D CSSValueKeywords.gperf */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -194,6 +194,9 @@ hash_val (register const char *str, register unsigned int len) #ifdef __GNUC__ __inline +#ifdef __GNUC_STDC_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif #endif const struct css_value * findValue (register const char *str, register unsigned int len) diff --git a/src/3rdparty/webkit/WebCore/generated/ColorData.c b/src/3rdparty/webkit/WebCore/generated/ColorData.c index 4fb1bea..5d64dda 100644 --- a/src/3rdparty/webkit/WebCore/generated/ColorData.c +++ b/src/3rdparty/webkit/WebCore/generated/ColorData.c @@ -1,4 +1,4 @@ -/* ANSI-C code produced by gperf version 3.0.1 */ +/* ANSI-C code produced by gperf version 3.0.3 */ /* Command-line: gperf -CDEot -L ANSI-C --includes --key-positions='*' -N findColor -D -s 2 */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -141,6 +141,9 @@ hash (register const char *str, register unsigned int len) #ifdef __GNUC__ __inline +#ifdef __GNUC_STDC_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif #endif const struct NamedColor * findColor (register const char *str, register unsigned int len) diff --git a/src/3rdparty/webkit/WebCore/generated/DocTypeStrings.cpp b/src/3rdparty/webkit/WebCore/generated/DocTypeStrings.cpp index 2aab9b9..d69b1b6 100644 --- a/src/3rdparty/webkit/WebCore/generated/DocTypeStrings.cpp +++ b/src/3rdparty/webkit/WebCore/generated/DocTypeStrings.cpp @@ -1,4 +1,4 @@ -/* ANSI-C code produced by gperf version 3.0.1 */ +/* ANSI-C code produced by gperf version 3.0.3 */ /* Command-line: gperf -CEot -L ANSI-C --includes --key-positions='*' -N findDoctypeEntry -F ,PubIDInfo::eAlmostStandards,PubIDInfo::eAlmostStandards */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -331,6 +331,9 @@ hash (register const char *str, register unsigned int len) #ifdef __GNUC__ __inline +#ifdef __GNUC_STDC_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif #endif const struct PubIDInfo * findDoctypeEntry (register const char *str, register unsigned int len) diff --git a/src/3rdparty/webkit/WebCore/generated/HTMLEntityNames.c b/src/3rdparty/webkit/WebCore/generated/HTMLEntityNames.c index 8bd9d97..761f29d 100644 --- a/src/3rdparty/webkit/WebCore/generated/HTMLEntityNames.c +++ b/src/3rdparty/webkit/WebCore/generated/HTMLEntityNames.c @@ -1,4 +1,4 @@ -/* ANSI-C code produced by gperf version 3.0.1 */ +/* ANSI-C code produced by gperf version 3.0.3 */ /* Command-line: gperf -a -L ANSI-C -C -G -c -o -t --includes --key-positions='*' -N findEntity -D -s 2 */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -521,6 +521,9 @@ static const short lookup[] = #ifdef __GNUC__ __inline +#ifdef __GNUC_STDC_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif #endif const struct Entity * findEntity (register const char *str, register unsigned int len) diff --git a/src/3rdparty/webkit/WebCore/generated/XPathGrammar.cpp b/src/3rdparty/webkit/WebCore/generated/XPathGrammar.cpp index 7a54748..0859634 100644 --- a/src/3rdparty/webkit/WebCore/generated/XPathGrammar.cpp +++ b/src/3rdparty/webkit/WebCore/generated/XPathGrammar.cpp @@ -76,7 +76,7 @@ /* Copy the first part of user declarations. */ /* Line 189 of yacc.c */ -#line 28 "xml\\XPathGrammar.y" +#line 28 "xml/XPathGrammar.y" #include "config.h" @@ -107,7 +107,7 @@ using namespace XPath; /* Line 189 of yacc.c */ -#line 111 "C:/dev/webkit-2.0/WebCore/generated/XPathGrammar.tab.c" +#line 111 "/WebCore/generated/XPathGrammar.tab.c" /* Enabling traces. */ #ifndef YYDEBUG @@ -162,7 +162,7 @@ typedef union YYSTYPE { /* Line 214 of yacc.c */ -#line 60 "xml\\XPathGrammar.y" +#line 60 "xml/XPathGrammar.y" Step::Axis axis; Step::NodeTest* nodeTest; @@ -178,7 +178,7 @@ typedef union YYSTYPE /* Line 214 of yacc.c */ -#line 182 "C:/dev/webkit-2.0/WebCore/generated/XPathGrammar.tab.c" +#line 182 "/WebCore/generated/XPathGrammar.tab.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -189,7 +189,7 @@ typedef union YYSTYPE /* Copy the second part of user declarations. */ /* Line 264 of yacc.c */ -#line 73 "xml\\XPathGrammar.y" +#line 73 "xml/XPathGrammar.y" static int xpathyylex(YYSTYPE* yylval) { return Parser::current()->lex(yylval); } @@ -198,7 +198,7 @@ static void xpathyyerror(const char*) { } /* Line 264 of yacc.c */ -#line 202 "C:/dev/webkit-2.0/WebCore/generated/XPathGrammar.tab.c" +#line 202 "/WebCore/generated/XPathGrammar.tab.c" #ifdef short # undef short @@ -1483,7 +1483,7 @@ yyreduce: case 2: /* Line 1455 of yacc.c */ -#line 122 "xml\\XPathGrammar.y" +#line 122 "xml/XPathGrammar.y" { PARSER->m_topExpr = (yyvsp[(1) - (1)].expr); ;} @@ -1492,7 +1492,7 @@ yyreduce: case 3: /* Line 1455 of yacc.c */ -#line 129 "xml\\XPathGrammar.y" +#line 129 "xml/XPathGrammar.y" { (yyval.locationPath)->setAbsolute(false); ;} @@ -1501,7 +1501,7 @@ yyreduce: case 4: /* Line 1455 of yacc.c */ -#line 134 "xml\\XPathGrammar.y" +#line 134 "xml/XPathGrammar.y" { (yyval.locationPath)->setAbsolute(true); ;} @@ -1510,7 +1510,7 @@ yyreduce: case 5: /* Line 1455 of yacc.c */ -#line 141 "xml\\XPathGrammar.y" +#line 141 "xml/XPathGrammar.y" { (yyval.locationPath) = new LocationPath; PARSER->registerParseNode((yyval.locationPath)); @@ -1520,7 +1520,7 @@ yyreduce: case 6: /* Line 1455 of yacc.c */ -#line 147 "xml\\XPathGrammar.y" +#line 147 "xml/XPathGrammar.y" { (yyval.locationPath) = (yyvsp[(2) - (2)].locationPath); ;} @@ -1529,7 +1529,7 @@ yyreduce: case 7: /* Line 1455 of yacc.c */ -#line 152 "xml\\XPathGrammar.y" +#line 152 "xml/XPathGrammar.y" { (yyval.locationPath) = (yyvsp[(2) - (2)].locationPath); (yyval.locationPath)->insertFirstStep((yyvsp[(1) - (2)].step)); @@ -1540,7 +1540,7 @@ yyreduce: case 8: /* Line 1455 of yacc.c */ -#line 161 "xml\\XPathGrammar.y" +#line 161 "xml/XPathGrammar.y" { (yyval.locationPath) = new LocationPath; (yyval.locationPath)->appendStep((yyvsp[(1) - (1)].step)); @@ -1552,7 +1552,7 @@ yyreduce: case 9: /* Line 1455 of yacc.c */ -#line 169 "xml\\XPathGrammar.y" +#line 169 "xml/XPathGrammar.y" { (yyval.locationPath)->appendStep((yyvsp[(3) - (3)].step)); PARSER->unregisterParseNode((yyvsp[(3) - (3)].step)); @@ -1562,7 +1562,7 @@ yyreduce: case 10: /* Line 1455 of yacc.c */ -#line 175 "xml\\XPathGrammar.y" +#line 175 "xml/XPathGrammar.y" { (yyval.locationPath)->appendStep((yyvsp[(2) - (3)].step)); (yyval.locationPath)->appendStep((yyvsp[(3) - (3)].step)); @@ -1574,7 +1574,7 @@ yyreduce: case 11: /* Line 1455 of yacc.c */ -#line 185 "xml\\XPathGrammar.y" +#line 185 "xml/XPathGrammar.y" { if ((yyvsp[(2) - (2)].predList)) { (yyval.step) = new Step(Step::ChildAxis, *(yyvsp[(1) - (2)].nodeTest), *(yyvsp[(2) - (2)].predList)); @@ -1589,7 +1589,7 @@ yyreduce: case 12: /* Line 1455 of yacc.c */ -#line 196 "xml\\XPathGrammar.y" +#line 196 "xml/XPathGrammar.y" { String localName; String namespaceURI; @@ -1611,7 +1611,7 @@ yyreduce: case 13: /* Line 1455 of yacc.c */ -#line 214 "xml\\XPathGrammar.y" +#line 214 "xml/XPathGrammar.y" { if ((yyvsp[(3) - (3)].predList)) { (yyval.step) = new Step((yyvsp[(1) - (3)].axis), *(yyvsp[(2) - (3)].nodeTest), *(yyvsp[(3) - (3)].predList)); @@ -1626,7 +1626,7 @@ yyreduce: case 14: /* Line 1455 of yacc.c */ -#line 225 "xml\\XPathGrammar.y" +#line 225 "xml/XPathGrammar.y" { String localName; String namespaceURI; @@ -1648,7 +1648,7 @@ yyreduce: case 17: /* Line 1455 of yacc.c */ -#line 249 "xml\\XPathGrammar.y" +#line 249 "xml/XPathGrammar.y" { (yyval.axis) = Step::AttributeAxis; ;} @@ -1657,7 +1657,7 @@ yyreduce: case 18: /* Line 1455 of yacc.c */ -#line 256 "xml\\XPathGrammar.y" +#line 256 "xml/XPathGrammar.y" { if (*(yyvsp[(1) - (3)].str) == "node") (yyval.nodeTest) = new Step::NodeTest(Step::NodeTest::AnyNodeTest); @@ -1674,7 +1674,7 @@ yyreduce: case 19: /* Line 1455 of yacc.c */ -#line 269 "xml\\XPathGrammar.y" +#line 269 "xml/XPathGrammar.y" { (yyval.nodeTest) = new Step::NodeTest(Step::NodeTest::ProcessingInstructionNodeTest); PARSER->deleteString((yyvsp[(1) - (3)].str)); @@ -1685,7 +1685,7 @@ yyreduce: case 20: /* Line 1455 of yacc.c */ -#line 276 "xml\\XPathGrammar.y" +#line 276 "xml/XPathGrammar.y" { (yyval.nodeTest) = new Step::NodeTest(Step::NodeTest::ProcessingInstructionNodeTest, (yyvsp[(3) - (4)].str)->stripWhiteSpace()); PARSER->deleteString((yyvsp[(1) - (4)].str)); @@ -1697,7 +1697,7 @@ yyreduce: case 21: /* Line 1455 of yacc.c */ -#line 286 "xml\\XPathGrammar.y" +#line 286 "xml/XPathGrammar.y" { (yyval.predList) = 0; ;} @@ -1706,7 +1706,7 @@ yyreduce: case 23: /* Line 1455 of yacc.c */ -#line 295 "xml\\XPathGrammar.y" +#line 295 "xml/XPathGrammar.y" { (yyval.predList) = new Vector<Predicate*>; (yyval.predList)->append(new Predicate((yyvsp[(1) - (1)].expr))); @@ -1718,7 +1718,7 @@ yyreduce: case 24: /* Line 1455 of yacc.c */ -#line 303 "xml\\XPathGrammar.y" +#line 303 "xml/XPathGrammar.y" { (yyval.predList)->append(new Predicate((yyvsp[(2) - (2)].expr))); PARSER->unregisterParseNode((yyvsp[(2) - (2)].expr)); @@ -1728,7 +1728,7 @@ yyreduce: case 25: /* Line 1455 of yacc.c */ -#line 311 "xml\\XPathGrammar.y" +#line 311 "xml/XPathGrammar.y" { (yyval.expr) = (yyvsp[(2) - (3)].expr); ;} @@ -1737,7 +1737,7 @@ yyreduce: case 26: /* Line 1455 of yacc.c */ -#line 318 "xml\\XPathGrammar.y" +#line 318 "xml/XPathGrammar.y" { (yyval.step) = new Step(Step::DescendantOrSelfAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest)); PARSER->registerParseNode((yyval.step)); @@ -1747,7 +1747,7 @@ yyreduce: case 27: /* Line 1455 of yacc.c */ -#line 326 "xml\\XPathGrammar.y" +#line 326 "xml/XPathGrammar.y" { (yyval.step) = new Step(Step::SelfAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest)); PARSER->registerParseNode((yyval.step)); @@ -1757,7 +1757,7 @@ yyreduce: case 28: /* Line 1455 of yacc.c */ -#line 332 "xml\\XPathGrammar.y" +#line 332 "xml/XPathGrammar.y" { (yyval.step) = new Step(Step::ParentAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest)); PARSER->registerParseNode((yyval.step)); @@ -1767,7 +1767,7 @@ yyreduce: case 29: /* Line 1455 of yacc.c */ -#line 340 "xml\\XPathGrammar.y" +#line 340 "xml/XPathGrammar.y" { (yyval.expr) = new VariableReference(*(yyvsp[(1) - (1)].str)); PARSER->deleteString((yyvsp[(1) - (1)].str)); @@ -1778,7 +1778,7 @@ yyreduce: case 30: /* Line 1455 of yacc.c */ -#line 347 "xml\\XPathGrammar.y" +#line 347 "xml/XPathGrammar.y" { (yyval.expr) = (yyvsp[(2) - (3)].expr); ;} @@ -1787,7 +1787,7 @@ yyreduce: case 31: /* Line 1455 of yacc.c */ -#line 352 "xml\\XPathGrammar.y" +#line 352 "xml/XPathGrammar.y" { (yyval.expr) = new StringExpression(*(yyvsp[(1) - (1)].str)); PARSER->deleteString((yyvsp[(1) - (1)].str)); @@ -1798,7 +1798,7 @@ yyreduce: case 32: /* Line 1455 of yacc.c */ -#line 359 "xml\\XPathGrammar.y" +#line 359 "xml/XPathGrammar.y" { (yyval.expr) = new Number((yyvsp[(1) - (1)].str)->toDouble()); PARSER->deleteString((yyvsp[(1) - (1)].str)); @@ -1809,7 +1809,7 @@ yyreduce: case 34: /* Line 1455 of yacc.c */ -#line 370 "xml\\XPathGrammar.y" +#line 370 "xml/XPathGrammar.y" { (yyval.expr) = createFunction(*(yyvsp[(1) - (3)].str)); if (!(yyval.expr)) @@ -1822,7 +1822,7 @@ yyreduce: case 35: /* Line 1455 of yacc.c */ -#line 379 "xml\\XPathGrammar.y" +#line 379 "xml/XPathGrammar.y" { (yyval.expr) = createFunction(*(yyvsp[(1) - (4)].str), *(yyvsp[(3) - (4)].argList)); if (!(yyval.expr)) @@ -1836,7 +1836,7 @@ yyreduce: case 36: /* Line 1455 of yacc.c */ -#line 391 "xml\\XPathGrammar.y" +#line 391 "xml/XPathGrammar.y" { (yyval.argList) = new Vector<Expression*>; (yyval.argList)->append((yyvsp[(1) - (1)].expr)); @@ -1848,7 +1848,7 @@ yyreduce: case 37: /* Line 1455 of yacc.c */ -#line 399 "xml\\XPathGrammar.y" +#line 399 "xml/XPathGrammar.y" { (yyval.argList)->append((yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(3) - (3)].expr)); @@ -1858,7 +1858,7 @@ yyreduce: case 40: /* Line 1455 of yacc.c */ -#line 413 "xml\\XPathGrammar.y" +#line 413 "xml/XPathGrammar.y" { (yyval.expr) = new Union; (yyval.expr)->addSubExpression((yyvsp[(1) - (3)].expr)); @@ -1872,7 +1872,7 @@ yyreduce: case 41: /* Line 1455 of yacc.c */ -#line 425 "xml\\XPathGrammar.y" +#line 425 "xml/XPathGrammar.y" { (yyval.expr) = (yyvsp[(1) - (1)].locationPath); ;} @@ -1881,7 +1881,7 @@ yyreduce: case 43: /* Line 1455 of yacc.c */ -#line 432 "xml\\XPathGrammar.y" +#line 432 "xml/XPathGrammar.y" { (yyvsp[(3) - (3)].locationPath)->setAbsolute(true); (yyval.expr) = new Path(static_cast<Filter*>((yyvsp[(1) - (3)].expr)), (yyvsp[(3) - (3)].locationPath)); @@ -1894,7 +1894,7 @@ yyreduce: case 44: /* Line 1455 of yacc.c */ -#line 441 "xml\\XPathGrammar.y" +#line 441 "xml/XPathGrammar.y" { (yyvsp[(3) - (3)].locationPath)->insertFirstStep((yyvsp[(2) - (3)].step)); (yyvsp[(3) - (3)].locationPath)->setAbsolute(true); @@ -1909,7 +1909,7 @@ yyreduce: case 46: /* Line 1455 of yacc.c */ -#line 456 "xml\\XPathGrammar.y" +#line 456 "xml/XPathGrammar.y" { (yyval.expr) = new Filter((yyvsp[(1) - (2)].expr), *(yyvsp[(2) - (2)].predList)); PARSER->unregisterParseNode((yyvsp[(1) - (2)].expr)); @@ -1921,7 +1921,7 @@ yyreduce: case 48: /* Line 1455 of yacc.c */ -#line 468 "xml\\XPathGrammar.y" +#line 468 "xml/XPathGrammar.y" { (yyval.expr) = new LogicalOp(LogicalOp::OP_Or, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr)); @@ -1933,7 +1933,7 @@ yyreduce: case 50: /* Line 1455 of yacc.c */ -#line 480 "xml\\XPathGrammar.y" +#line 480 "xml/XPathGrammar.y" { (yyval.expr) = new LogicalOp(LogicalOp::OP_And, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr)); @@ -1945,7 +1945,7 @@ yyreduce: case 52: /* Line 1455 of yacc.c */ -#line 492 "xml\\XPathGrammar.y" +#line 492 "xml/XPathGrammar.y" { (yyval.expr) = new EqTestOp((yyvsp[(2) - (3)].eqop), (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr)); @@ -1957,7 +1957,7 @@ yyreduce: case 54: /* Line 1455 of yacc.c */ -#line 504 "xml\\XPathGrammar.y" +#line 504 "xml/XPathGrammar.y" { (yyval.expr) = new EqTestOp((yyvsp[(2) - (3)].eqop), (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr)); @@ -1969,7 +1969,7 @@ yyreduce: case 56: /* Line 1455 of yacc.c */ -#line 516 "xml\\XPathGrammar.y" +#line 516 "xml/XPathGrammar.y" { (yyval.expr) = new NumericOp(NumericOp::OP_Add, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr)); @@ -1981,7 +1981,7 @@ yyreduce: case 57: /* Line 1455 of yacc.c */ -#line 524 "xml\\XPathGrammar.y" +#line 524 "xml/XPathGrammar.y" { (yyval.expr) = new NumericOp(NumericOp::OP_Sub, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr)); @@ -1993,7 +1993,7 @@ yyreduce: case 59: /* Line 1455 of yacc.c */ -#line 536 "xml\\XPathGrammar.y" +#line 536 "xml/XPathGrammar.y" { (yyval.expr) = new NumericOp((yyvsp[(2) - (3)].numop), (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr)); @@ -2005,7 +2005,7 @@ yyreduce: case 61: /* Line 1455 of yacc.c */ -#line 548 "xml\\XPathGrammar.y" +#line 548 "xml/XPathGrammar.y" { (yyval.expr) = new Negative; (yyval.expr)->addSubExpression((yyvsp[(2) - (2)].expr)); @@ -2017,7 +2017,7 @@ yyreduce: /* Line 1455 of yacc.c */ -#line 2021 "C:/dev/webkit-2.0/WebCore/generated/XPathGrammar.tab.c" +#line 2021 "/WebCore/generated/XPathGrammar.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -2229,7 +2229,7 @@ yyreturn: /* Line 1675 of yacc.c */ -#line 556 "xml\\XPathGrammar.y" +#line 556 "xml/XPathGrammar.y" #endif diff --git a/src/3rdparty/webkit/WebCore/generated/XPathGrammar.h b/src/3rdparty/webkit/WebCore/generated/XPathGrammar.h index c3dbd2b..7264598 100644 --- a/src/3rdparty/webkit/WebCore/generated/XPathGrammar.h +++ b/src/3rdparty/webkit/WebCore/generated/XPathGrammar.h @@ -67,7 +67,7 @@ typedef union YYSTYPE { /* Line 1676 of yacc.c */ -#line 60 "xml\\XPathGrammar.y" +#line 60 "xml/XPathGrammar.y" Step::Axis axis; Step::NodeTest* nodeTest; @@ -83,7 +83,7 @@ typedef union YYSTYPE /* Line 1676 of yacc.c */ -#line 87 "C:/dev/webkit-2.0/WebCore/generated/XPathGrammar.tab.h" +#line 87 "/WebCore/generated/XPathGrammar.tab.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ diff --git a/src/3rdparty/webkit/WebCore/generated/tokenizer.cpp b/src/3rdparty/webkit/WebCore/generated/tokenizer.cpp index d9a94f5..9a19e9e 100644 --- a/src/3rdparty/webkit/WebCore/generated/tokenizer.cpp +++ b/src/3rdparty/webkit/WebCore/generated/tokenizer.cpp @@ -65,46 +65,53 @@ typedef unsigned int flex_uint32_t; #endif /* ! C99 */ #define YY_NUM_RULES 69 #define YY_END_OF_BUFFER 70 -static yyconst short int yy_accept[482] = +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static yyconst flex_int16_t yy_accept[482] = { 0, 0, 0, 0, 0, 0, 0, 70, 68, 2, 2, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 57, 68, 68, 68, 68, 15, 15, 15, 68, 68, + 57, 68, 68, 15, 15, 15, 68, 68, 68, 68, 67, 15, 15, 15, 66, 15, 2, 0, 0, 0, - 14, 0, 0, 0, 0, 18, 18, 8, 0, 0, - 9, 0, 16, 0, 0, 15, 15, 15, 58, 0, - 56, 0, 0, 57, 0, 55, 55, 55, 55, 55, - 55, 55, 55, 55, 55, 16, 55, 55, 52, 55, - 0, 0, 0, 35, 35, 35, 35, 35, 35, 35, - 15, 15, 7, 63, 15, 0, 0, 15, 15, 0, - - 15, 6, 5, 15, 15, 15, 15, 0, 0, 0, - 14, 0, 0, 0, 18, 18, 18, 0, 18, 0, - 0, 14, 0, 0, 4, 15, 0, 0, 55, 55, - 55, 0, 55, 42, 55, 37, 40, 55, 53, 44, - 55, 43, 51, 55, 46, 45, 41, 55, 55, 55, - 0, 35, 35, 35, 35, 0, 35, 35, 35, 35, - 35, 35, 15, 15, 15, 16, 15, 15, 64, 64, - 15, 12, 10, 15, 13, 0, 0, 0, 17, 18, - 18, 18, 17, 0, 0, 15, 0, 1, 55, 55, - 55, 55, 47, 55, 54, 16, 48, 38, 55, 3, + 14, 0, 0, 0, 18, 18, 0, 8, 0, 0, + 9, 0, 16, 0, 15, 15, 15, 0, 58, 0, + 56, 0, 0, 57, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 16, 55, 55, 52, 55, 0, 55, + 0, 0, 35, 35, 35, 35, 35, 35, 35, 0, + 63, 15, 0, 0, 15, 15, 0, 15, 15, 15, + + 7, 6, 5, 15, 15, 15, 15, 0, 0, 0, + 14, 0, 0, 0, 18, 18, 0, 18, 18, 0, + 0, 14, 0, 0, 4, 15, 0, 0, 55, 0, + 42, 55, 37, 40, 55, 53, 44, 55, 43, 51, + 55, 46, 45, 41, 55, 55, 55, 55, 55, 55, + 0, 35, 35, 0, 35, 35, 35, 35, 35, 35, + 35, 35, 15, 15, 16, 15, 15, 64, 64, 15, + 15, 12, 10, 15, 13, 0, 0, 0, 17, 17, + 18, 18, 18, 0, 0, 15, 0, 1, 55, 55, + 47, 55, 54, 16, 48, 38, 55, 55, 55, 3, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 15, 15, 59, 0, 64, 64, 64, 63, 11, 0, + 15, 59, 0, 64, 64, 64, 63, 15, 11, 0, 0, 0, 18, 18, 18, 0, 15, 0, 0, 55, - 55, 55, 49, 50, 35, 35, 35, 35, 35, 35, - 35, 35, 20, 15, 15, 65, 64, 64, 64, 64, - 0, 0, 0, 0, 61, 0, 0, 0, 0, 18, + 49, 50, 55, 55, 35, 35, 35, 35, 35, 35, + 35, 20, 35, 15, 65, 64, 64, 64, 64, 0, + 0, 0, 0, 61, 0, 15, 0, 0, 0, 18, 18, 18, 0, 15, 55, 55, 39, 35, 35, 35, - 35, 35, 35, 21, 35, 15, 15, 65, 64, 64, - 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 61, 0, 0, 0, 0, 17, 18, 18, - - 17, 0, 15, 55, 55, 35, 35, 35, 35, 35, - 19, 35, 15, 15, 65, 64, 64, 64, 64, 64, - 64, 0, 60, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 18, 0, 15, - 55, 55, 35, 35, 35, 23, 35, 35, 15, 65, + 35, 35, 21, 35, 35, 15, 65, 64, 64, 64, + 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 61, 0, 0, 15, 0, 0, 17, 17, 18, + + 18, 0, 15, 55, 55, 35, 35, 35, 35, 19, + 35, 35, 15, 65, 64, 64, 64, 64, 64, 64, + 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 15, 0, 0, 18, 18, 0, 15, + 55, 55, 35, 35, 23, 35, 35, 35, 15, 65, 64, 64, 64, 64, 64, 64, 64, 0, 60, 0, 0, 0, 60, 0, 0, 0, 0, 18, 15, 55, 35, 35, 35, 35, 65, 0, 0, 0, 36, 15, @@ -113,7 +120,7 @@ static yyconst short int yy_accept[482] = 0, 0, 63, 35, 35, 35, 35, 35, 35, 35, 35, 0, 0, 0, 0, 0, 0, 35, 35, 35, - 35, 25, 35, 35, 35, 0, 0, 0, 62, 0, + 35, 25, 35, 35, 35, 0, 62, 0, 0, 0, 0, 26, 35, 35, 35, 35, 27, 35, 0, 0, 0, 0, 31, 35, 35, 35, 35, 0, 0, 0, 35, 35, 35, 35, 0, 0, 35, 35, 29, 35, @@ -122,7 +129,7 @@ static yyconst short int yy_accept[482] = 0 } ; -static yyconst int yy_ec[256] = +static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 4, 5, 1, 1, 1, 1, 1, 1, 1, @@ -130,438 +137,911 @@ static yyconst int yy_ec[256] = 1, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 12, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 12, 22, 23, - 24, 25, 26, 27, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 12, 28, 12, 29, 30, 12, 31, 32, 33, 34, - - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 12, 59, 1, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60 + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 12, 54, 12, 55, 56, 12, 57, 58, 59, 60, + + 61, 62, 63, 64, 65, 37, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 12, 84, 1, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85 } ; -static yyconst int yy_meta[61] = +static yyconst flex_int32_t yy_meta[86] = { 0, - 1, 2, 3, 3, 3, 4, 5, 5, 5, 5, - 5, 5, 5, 6, 7, 5, 5, 8, 5, 5, - 9, 5, 5, 5, 5, 10, 5, 11, 5, 11, - 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 5, 5, 5, 11 + 1, 2, 3, 4, 4, 5, 6, 7, 6, 6, + 6, 6, 7, 8, 9, 6, 6, 10, 6, 6, + 11, 6, 6, 6, 6, 12, 6, 13, 13, 13, + 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 6, 14, 13, 13, 13, 13, + 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 6, 6, 6, 14 } ; -static yyconst short int yy_base[520] = +static yyconst flex_int16_t yy_base[553] = { 0, - 0, 0, 39, 41, 1591, 1590, 1625, 2401, 62, 71, - 76, 61, 69, 1588, 78, 1587, 50, 89, 1583, 1580, - 132, 1579, 91, 123, 1561, 85, 94, 104, 1560, 1559, - 2401, 117, 176, 175, 2401, 177, 193, 204, 1539, 108, - 2401, 242, 120, 180, 196, 1553, 205, 2401, 101, 277, - 2401, 102, 75, 1555, 221, 112, 206, 234, 181, 1561, - 1565, 1547, 1553, 0, 268, 119, 1545, 221, 60, 240, - 223, 230, 244, 257, 278, 279, 286, 256, 1533, 264, - 1542, 298, 297, 1523, 296, 190, 292, 231, 97, 294, - 309, 350, 2401, 2401, 329, 327, 1524, 351, 352, 372, - - 359, 2401, 2401, 360, 361, 381, 362, 1496, 339, 341, - 342, 422, 457, 400, 1513, 492, 1512, 448, 483, 409, - 364, 386, 527, 562, 2401, 435, 1523, 245, 1498, 597, - 1497, 518, 368, 1483, 363, 1481, 1479, 310, 1478, 1477, - 289, 1474, 1463, 239, 1440, 1432, 1428, 385, 401, 369, - 1436, 311, 1425, 632, 1422, 553, 410, 420, 424, 411, - 423, 440, 588, 458, 667, 1420, 626, 459, 481, 1403, - 492, 494, 507, 627, 528, 1382, 412, 658, 674, 683, - 1398, 718, 709, 544, 725, 563, 1368, 2401, 734, 1348, - 769, 474, 1324, 477, 1314, 482, 1313, 1305, 548, 2401, - - 414, 760, 1289, 804, 578, 484, 582, 508, 509, 510, - 795, 811, 2401, 820, 552, 1290, 1272, 855, 554, 1197, - 841, 857, 863, 879, 885, 901, 647, 1228, 455, 907, - 923, 614, 1191, 1123, 611, 929, 945, 628, 551, 630, - 515, 631, 1115, 951, 967, 973, 555, 1109, 1101, 1093, - 1008, 1022, 668, 684, 2401, 1049, 1061, 1008, 1040, 1057, - 1065, 1073, 1081, 634, 1089, 1097, 1067, 577, 1105, 1113, - 579, 615, 683, 1041, 685, 1121, 1129, 1137, 708, 1041, - 991, 965, 947, 774, 719, 782, 1172, 735, 1207, 1186, - 1219, 1246, 1260, 1287, 1322, 876, 1246, 2401, 1278, 1313, - - 854, 1330, 805, 1338, 1346, 770, 1354, 1362, 771, 580, - 822, 584, 1397, 1383, 1399, 710, 792, 712, 711, 661, - 659, 809, 2401, 877, 754, 1434, 1461, 1496, 1019, 821, - 1442, 1531, 1566, 1440, 639, 1487, 921, 1522, 1557, 851, - 965, 1574, 707, 1301, 1582, 618, 616, 617, 1617, 1603, - 562, 2401, 2401, 2401, 2401, 2401, 2401, 1475, 858, 859, - 1619, 1654, 917, 918, 1640, 1656, 521, 1482, 961, 1510, - 1652, 1544, 646, 836, 1675, 1681, 1697, 1703, 2401, 1017, - 873, 874, 962, 853, 1021, 701, 513, 473, 2401, 1719, - 1725, 1741, 1005, 1150, 419, 919, 992, 1018, 1139, 1747, - - 1763, 1769, 1804, 1154, 1020, 1030, 1040, 1131, 1167, 901, - 1187, 1792, 1808, 1831, 1403, 1829, 1851, 820, 1059, 967, - 920, 472, 789, 1201, 1185, 1865, 1892, 1281, 2401, 1871, - 1869, 448, 1202, 1225, 736, 946, 390, 585, 1906, 1908, - 1943, 1970, 388, 1190, 1218, 1227, 1156, 1929, 1951, 1949, - 1266, 1303, 990, 1304, 1976, 1992, 1394, 1169, 340, 1248, - 1998, 2014, 1312, 316, 1203, 1242, 2020, 2036, 1340, 265, - 1151, 2042, 1229, 1423, 1424, 1395, 92, 1382, 1364, 34, - 2401, 2077, 2082, 2093, 2098, 2103, 2112, 2119, 2130, 2139, - 2144, 2155, 2167, 2169, 2178, 2183, 2192, 2197, 2206, 2215, - - 2227, 2236, 2245, 2250, 2262, 2267, 2278, 2283, 2294, 2305, - 2316, 2321, 2332, 2343, 2348, 2359, 2368, 2379, 2388 + 0, 0, 64, 66, 54, 56, 1486, 6578, 93, 98, + 107, 83, 155, 1460, 77, 1459, 98, 99, 1446, 1449, + 207, 1454, 275, 100, 108, 146, 326, 1402, 1384, 1380, + 6578, 101, 110, 151, 6578, 127, 227, 295, 89, 136, + 6578, 387, 140, 0, 429, 1346, 471, 6578, 117, 532, + 6578, 138, 157, 1371, 142, 295, 307, 574, 283, 1379, + 1371, 1325, 1324, 0, 1290, 249, 150, 274, 93, 241, + 152, 256, 325, 309, 347, 313, 1289, 147, 616, 154, + 1322, 346, 1285, 284, 281, 357, 348, 170, 279, 658, + 6578, 208, 700, 1317, 389, 358, 1310, 399, 276, 761, + + 6578, 6578, 6578, 409, 367, 413, 420, 307, 427, 374, + 421, 822, 883, 0, 1254, 925, 967, 1249, 1028, 319, + 451, 465, 1089, 1150, 6578, 456, 1282, 183, 1233, 1192, + 1224, 443, 1184, 1165, 454, 1161, 1149, 441, 1141, 1131, + 383, 1082, 1060, 1047, 453, 458, 470, 1029, 1253, 494, + 1044, 464, 999, 1295, 492, 486, 496, 516, 504, 517, + 998, 1356, 417, 1417, 1019, 418, 422, 491, 997, 502, + 1459, 527, 528, 545, 554, 409, 515, 1520, 0, 1562, + 965, 1623, 1684, 570, 1745, 560, 994, 6578, 948, 1806, + 935, 556, 923, 500, 897, 896, 559, 1848, 569, 6578, + + 598, 882, 1909, 566, 565, 587, 606, 589, 631, 1951, + 2012, 6578, 0, 559, 907, 902, 691, 2054, 561, 593, + 2115, 0, 2157, 2218, 2279, 2340, 644, 878, 346, 2401, + 839, 836, 2443, 613, 616, 2504, 668, 534, 610, 656, + 680, 820, 2546, 2607, 0, 591, 847, 844, 803, 733, + 793, 614, 605, 6578, 2668, 2710, 625, 2771, 0, 2813, + 2874, 2935, 2996, 3057, 3131, 3173, 3234, 714, 3295, 695, + 690, 727, 762, 729, 3337, 3398, 0, 643, 777, 744, + 699, 698, 829, 654, 834, 3459, 689, 3520, 854, 894, + 915, 920, 3581, 3642, 3684, 683, 3745, 6578, 597, 3806, + + 3867, 3928, 3989, 4050, 4111, 730, 4172, 814, 719, 542, + 750, 4214, 4275, 0, 762, 558, 553, 552, 531, 447, + 860, 6578, 697, 838, 957, 4336, 4397, 699, 926, 988, + 4458, 4519, 4580, 1002, 744, 1010, 4622, 4664, 1042, 737, + 4706, 4767, 647, 4828, 402, 818, 848, 1069, 1033, 0, + 437, 6578, 6578, 6578, 6578, 6578, 6578, 1122, 898, 924, + 4870, 1162, 963, 968, 4912, 4973, 770, 1063, 877, 1074, + 5005, 1102, 989, 1009, 0, 5062, 5104, 5146, 6578, 1036, + 1079, 1080, 1081, 1084, 1130, 910, 353, 315, 6578, 5188, + 5230, 5272, 689, 1139, 895, 1085, 1090, 1119, 1160, 5314, + + 5356, 1226, 1242, 1120, 1152, 1164, 1207, 1208, 1210, 1219, + 1234, 1327, 1287, 1316, 1345, 1388, 5398, 1263, 1225, 1116, + 1211, 252, 1247, 1243, 1248, 1363, 6578, 1428, 5440, 1449, + 5501, 242, 1310, 1318, 1329, 856, 180, 813, 1454, 5562, + 1491, 5604, 148, 1357, 1326, 1061, 1370, 1531, 5646, 5688, + 1344, 1374, 1427, 1375, 5730, 5772, 1453, 1456, 135, 1458, + 5814, 5856, 1457, 97, 1183, 955, 5898, 1552, 1490, 91, + 1408, 1557, 1373, 1409, 1412, 1455, 78, 1530, 1522, 39, + 6578, 5959, 5964, 5977, 5982, 5987, 5994, 6004, 6017, 758, + 6022, 6032, 6045, 6059, 362, 6064, 6074, 6079, 6089, 6099, + + 6103, 798, 6112, 6125, 6138, 6152, 6166, 6176, 6186, 6191, + 6203, 799, 6217, 957, 6222, 6234, 6247, 1071, 6261, 1086, + 6266, 6278, 6291, 6304, 6317, 6330, 1087, 6335, 6348, 1179, + 6353, 6365, 6378, 6391, 6404, 6417, 6430, 6435, 6448, 1183, + 6453, 6465, 6478, 6491, 6504, 6517, 1189, 1223, 6530, 6543, + 6553, 6563 } ; -static yyconst short int yy_def[520] = +static yyconst flex_int16_t yy_def[553] = { 0, 481, 1, 1, 1, 1, 1, 481, 481, 481, 481, 481, 482, 483, 481, 484, 481, 481, 485, 481, 481, - 481, 481, 486, 487, 481, 488, 488, 488, 481, 481, - 481, 488, 488, 488, 481, 488, 481, 481, 481, 482, - 481, 489, 483, 481, 490, 491, 491, 481, 484, 492, - 481, 481, 481, 481, 487, 488, 488, 488, 21, 493, - 481, 494, 481, 21, 495, 496, 496, 496, 496, 496, + 481, 481, 486, 487, 487, 487, 488, 481, 481, 481, + 481, 487, 487, 487, 481, 487, 481, 481, 481, 482, + 481, 489, 483, 490, 491, 491, 492, 481, 484, 493, + 481, 481, 481, 481, 487, 487, 487, 488, 21, 494, + 481, 495, 481, 21, 496, 496, 496, 496, 496, 496, + 496, 496, 496, 496, 496, 496, 496, 496, 497, 496, + 481, 486, 498, 498, 498, 498, 498, 498, 498, 499, + 481, 487, 500, 481, 487, 487, 501, 487, 487, 487, + + 481, 481, 481, 487, 487, 487, 487, 481, 482, 482, + 482, 482, 489, 502, 491, 491, 503, 491, 116, 504, + 504, 504, 504, 505, 481, 487, 506, 507, 496, 508, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, - 481, 486, 497, 498, 498, 498, 498, 498, 498, 498, - 488, 488, 481, 481, 488, 499, 481, 488, 488, 481, - - 488, 481, 481, 488, 488, 488, 488, 481, 482, 482, - 482, 482, 489, 481, 491, 47, 491, 500, 47, 484, - 484, 484, 484, 492, 481, 488, 493, 501, 496, 496, - 496, 502, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, - 481, 498, 498, 498, 498, 503, 498, 498, 498, 498, - 498, 498, 92, 488, 92, 481, 488, 488, 504, 481, - 488, 488, 488, 488, 488, 481, 482, 112, 481, 116, - 491, 116, 47, 484, 123, 488, 505, 481, 130, 496, - 130, 496, 496, 496, 496, 496, 496, 496, 496, 481, - - 498, 154, 498, 154, 498, 498, 498, 498, 498, 498, - 92, 165, 481, 481, 506, 481, 481, 507, 488, 481, - 112, 481, 116, 182, 47, 123, 488, 505, 501, 130, - 191, 496, 496, 496, 498, 154, 204, 498, 498, 498, - 498, 498, 498, 92, 165, 481, 508, 481, 481, 481, - 507, 507, 509, 510, 481, 511, 481, 112, 481, 116, - 182, 47, 123, 488, 130, 191, 496, 498, 154, 204, - 498, 498, 498, 498, 498, 92, 165, 481, 512, 481, - 481, 481, 481, 481, 509, 481, 513, 510, 514, 507, - 507, 507, 507, 507, 511, 481, 112, 481, 116, 182, - - 491, 123, 488, 130, 191, 498, 154, 204, 498, 498, - 498, 498, 488, 165, 481, 515, 481, 481, 481, 481, - 481, 481, 481, 509, 509, 509, 509, 513, 510, 510, - 510, 510, 514, 294, 481, 112, 491, 182, 123, 488, - 496, 191, 498, 498, 204, 498, 498, 498, 488, 481, - 481, 481, 481, 481, 481, 481, 481, 509, 509, 509, - 327, 510, 510, 510, 332, 294, 481, 491, 488, 496, - 498, 498, 498, 498, 481, 327, 332, 294, 481, 488, - 498, 498, 498, 498, 498, 498, 498, 498, 481, 327, - 332, 294, 488, 498, 498, 498, 498, 498, 498, 327, - - 332, 294, 516, 498, 498, 498, 498, 498, 498, 498, - 498, 327, 332, 516, 414, 517, 518, 498, 498, 498, - 498, 498, 498, 498, 498, 518, 518, 481, 481, 518, - 519, 498, 498, 498, 498, 498, 498, 498, 518, 427, - 518, 427, 498, 498, 498, 498, 498, 427, 518, 442, - 498, 498, 498, 498, 427, 442, 498, 498, 498, 498, - 427, 442, 498, 498, 498, 498, 427, 442, 498, 498, - 498, 442, 498, 498, 498, 498, 498, 498, 498, 498, + 481, 498, 498, 509, 498, 498, 498, 498, 498, 498, + 498, 498, 487, 100, 481, 487, 487, 510, 481, 487, + 100, 487, 487, 487, 487, 481, 511, 511, 512, 116, + 491, 116, 116, 504, 504, 487, 513, 481, 496, 149, + 496, 496, 496, 496, 496, 496, 496, 149, 496, 481, + + 498, 498, 162, 498, 498, 498, 498, 498, 498, 162, + 100, 481, 514, 515, 481, 481, 516, 100, 487, 481, + 517, 518, 116, 116, 116, 504, 487, 513, 519, 149, + 496, 496, 149, 496, 498, 162, 498, 498, 498, 498, + 498, 498, 162, 100, 520, 521, 481, 481, 481, 522, + 522, 523, 524, 481, 525, 100, 481, 526, 527, 528, + 528, 261, 529, 100, 149, 149, 149, 498, 162, 498, + 498, 498, 498, 498, 162, 100, 530, 531, 481, 481, + 481, 481, 481, 523, 481, 532, 533, 534, 535, 535, + 535, 535, 535, 536, 100, 481, 537, 481, 538, 538, + + 300, 539, 100, 149, 304, 498, 162, 498, 498, 498, + 498, 162, 100, 540, 541, 481, 481, 481, 481, 481, + 481, 481, 542, 542, 542, 542, 543, 544, 544, 544, + 544, 545, 546, 303, 481, 537, 300, 301, 539, 303, + 304, 304, 498, 162, 498, 498, 498, 498, 303, 547, + 481, 481, 481, 481, 481, 481, 481, 542, 542, 542, + 326, 544, 544, 544, 331, 546, 481, 338, 303, 342, + 498, 498, 498, 498, 548, 326, 331, 366, 481, 303, + 498, 498, 498, 498, 498, 498, 498, 498, 481, 326, + 331, 366, 303, 498, 498, 498, 498, 498, 498, 326, + + 331, 546, 549, 498, 498, 498, 498, 498, 498, 498, + 498, 542, 544, 549, 549, 550, 551, 498, 498, 498, + 498, 498, 498, 498, 498, 481, 481, 550, 552, 550, + 550, 498, 498, 498, 498, 498, 498, 498, 550, 431, + 550, 431, 498, 498, 498, 498, 498, 550, 440, 431, + 498, 498, 498, 498, 440, 431, 498, 498, 498, 498, + 440, 431, 498, 498, 498, 498, 440, 550, 498, 498, + 498, 550, 498, 498, 498, 498, 498, 498, 498, 498, 0, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481 + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481 } ; -static yyconst short int yy_nxt[2462] = +static yyconst flex_int16_t yy_nxt[6664] = { 0, 8, 9, 10, 9, 9, 9, 11, 12, 13, 14, 8, 8, 15, 8, 8, 16, 17, 18, 19, 20, - 21, 8, 22, 8, 8, 8, 23, 24, 25, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 27, 26, 26, 26, 26, 26, 26, - 28, 26, 26, 26, 26, 26, 8, 29, 30, 26, - 31, 156, 31, 37, 37, 37, 37, 37, 41, 32, - 52, 32, 37, 37, 37, 37, 37, 38, 38, 38, - 38, 38, 33, 34, 33, 34, 43, 132, 42, 44, - 41, 97, 97, 53, 135, 35, 45, 35, 94, 47, - - 47, 47, 47, 47, 47, 50, 54, 94, 82, 52, - 97, 98, 96, 41, 39, 41, 55, 94, 83, 156, - 100, 96, 52, 85, 156, 94, 86, 161, 50, 87, - 94, 96, 57, 88, 89, 42, 90, 481, 99, 96, - 481, 58, 61, 92, 96, 53, 132, 45, 133, 62, - 63, 101, 64, 92, 92, 92, 92, 92, 92, 65, - 104, 66, 67, 67, 68, 69, 70, 67, 71, 72, - 73, 67, 74, 67, 75, 76, 67, 77, 67, 78, - 79, 80, 67, 67, 67, 67, 67, 67, 94, 94, - 94, 67, 97, 98, 37, 37, 37, 37, 37, 481, - - 114, 59, 96, 96, 96, 38, 38, 38, 38, 38, - 114, 114, 114, 114, 114, 114, 116, 156, 106, 94, - 105, 107, 97, 98, 67, 119, 116, 116, 116, 116, - 116, 116, 118, 96, 158, 119, 119, 119, 119, 119, - 119, 92, 39, 40, 40, 40, 109, 94, 132, 111, - 132, 92, 92, 92, 92, 92, 92, 132, 156, 196, - 128, 96, 112, 134, 188, 160, 132, 132, 126, 113, - 138, 132, 112, 112, 112, 112, 112, 112, 49, 49, - 49, 120, 136, 132, 132, 139, 148, 140, 130, 122, - 149, 132, 156, 137, 141, 97, 144, 123, 130, 130, - - 130, 130, 130, 130, 124, 132, 132, 123, 123, 123, - 123, 123, 123, 132, 150, 481, 132, 154, 145, 156, - 142, 156, 94, 156, 162, 83, 143, 154, 154, 154, - 154, 154, 154, 157, 159, 146, 96, 132, 156, 147, - 194, 40, 94, 156, 195, 201, 41, 165, 41, 41, - 152, 91, 91, 91, 91, 91, 96, 165, 165, 165, - 165, 165, 165, 94, 94, 94, 42, 156, 42, 42, - 163, 167, 94, 94, 94, 94, 41, 96, 96, 96, - 163, 163, 163, 163, 163, 163, 96, 96, 96, 96, - 132, 50, 169, 172, 94, 132, 132, 170, 41, 193, - - 171, 168, 169, 169, 169, 169, 169, 169, 96, 175, - 173, 49, 132, 50, 192, 156, 199, 156, 197, 41, - 179, 41, 174, 110, 177, 177, 177, 110, 132, 41, - 179, 179, 179, 179, 179, 179, 50, 156, 156, 42, - 205, 156, 178, 198, 208, 235, 156, 156, 94, 42, - 156, 156, 178, 178, 178, 178, 178, 178, 40, 40, - 40, 109, 96, 206, 111, 209, 186, 156, 182, 207, - 229, 94, 213, 406, 188, 156, 210, 112, 182, 182, - 182, 182, 182, 182, 113, 96, 96, 112, 112, 112, - 112, 112, 112, 115, 115, 115, 115, 115, 214, 156, - - 156, 132, 196, 183, 132, 218, 216, 94, 232, 132, - 233, 156, 180, 183, 183, 183, 183, 183, 183, 96, - 213, 96, 180, 180, 180, 180, 180, 180, 121, 184, - 184, 184, 121, 239, 96, 156, 156, 156, 191, 41, - 156, 94, 156, 242, 243, 274, 241, 185, 191, 191, - 191, 191, 191, 191, 50, 96, 41, 185, 185, 185, - 185, 185, 185, 49, 49, 49, 120, 94, 272, 214, - 379, 50, 214, 204, 122, 132, 94, 248, 156, 214, - 280, 96, 123, 204, 204, 204, 204, 204, 204, 124, - 96, 234, 123, 123, 123, 123, 123, 123, 129, 129, - - 129, 129, 129, 227, 156, 156, 156, 156, 211, 156, - 347, 156, 156, 309, 348, 306, 447, 189, 211, 211, - 211, 211, 211, 211, 132, 238, 240, 189, 189, 189, - 189, 189, 189, 153, 153, 153, 153, 153, 156, 94, - 94, 132, 156, 156, 156, 156, 167, 94, 373, 374, - 310, 268, 202, 96, 96, 156, 267, 156, 156, 156, - 94, 96, 202, 202, 202, 202, 202, 202, 164, 164, - 164, 164, 164, 156, 96, 286, 271, 273, 221, 275, - 387, 219, 367, 303, 357, 264, 356, 212, 221, 221, - 221, 221, 221, 221, 222, 287, 286, 212, 212, 212, - - 212, 212, 212, 223, 222, 222, 222, 222, 222, 222, - 156, 289, 156, 223, 223, 223, 223, 223, 223, 181, - 181, 181, 181, 181, 371, 214, 286, 214, 156, 225, - 312, 399, 311, 317, 156, 352, 355, 354, 224, 225, - 225, 225, 225, 225, 225, 226, 287, 286, 224, 224, - 224, 224, 224, 224, 230, 226, 226, 226, 226, 226, - 226, 286, 289, 156, 230, 230, 230, 230, 230, 230, - 190, 190, 190, 190, 190, 284, 284, 284, 284, 284, - 236, 287, 445, 322, 322, 322, 322, 322, 255, 231, - 236, 236, 236, 236, 236, 236, 323, 156, 156, 231, - - 231, 231, 231, 231, 231, 203, 203, 203, 203, 203, - 322, 322, 322, 322, 322, 244, 156, 353, 94, 343, - 346, 436, 340, 323, 237, 244, 244, 244, 244, 244, - 244, 245, 96, 286, 237, 237, 237, 237, 237, 237, - 246, 245, 245, 245, 245, 245, 245, 156, 289, 156, - 246, 246, 246, 246, 246, 246, 251, 251, 251, 251, - 251, 258, 253, 156, 94, 286, 286, 254, 432, 255, - 388, 258, 258, 258, 258, 258, 258, 259, 96, 285, - 156, 118, 256, 260, 286, 287, 287, 259, 259, 259, - 259, 259, 259, 260, 260, 260, 260, 260, 260, 261, - - 156, 156, 369, 397, 287, 262, 335, 394, 395, 261, - 261, 261, 261, 261, 261, 262, 262, 262, 262, 262, - 262, 263, 115, 115, 115, 115, 115, 265, 156, 286, - 286, 263, 263, 263, 263, 263, 263, 265, 265, 265, - 265, 265, 265, 266, 289, 289, 156, 156, 118, 269, - 435, 424, 407, 266, 266, 266, 266, 266, 266, 269, - 269, 269, 269, 269, 269, 270, 129, 129, 129, 129, - 129, 276, 321, 156, 94, 270, 270, 270, 270, 270, - 270, 276, 276, 276, 276, 276, 276, 277, 96, 156, - 320, 380, 132, 278, 156, 446, 396, 277, 277, 277, - - 277, 277, 277, 278, 278, 278, 278, 278, 278, 251, - 251, 251, 251, 251, 434, 253, 319, 156, 403, 156, - 254, 288, 255, 284, 284, 284, 284, 284, 297, 481, - 94, 286, 96, 408, 481, 256, 255, 459, 297, 297, - 297, 297, 297, 297, 96, 156, 289, 156, 156, 256, - 284, 284, 284, 284, 290, 398, 292, 156, 419, 409, - 298, 292, 292, 293, 393, 420, 318, 156, 156, 294, - 298, 298, 298, 298, 298, 298, 295, 299, 421, 294, - 294, 294, 294, 294, 294, 300, 156, 299, 299, 299, - 299, 299, 299, 301, 132, 300, 300, 300, 300, 300, - - 300, 302, 433, 301, 301, 301, 301, 301, 301, 304, - 296, 302, 302, 302, 302, 302, 302, 305, 283, 304, - 304, 304, 304, 304, 304, 307, 282, 305, 305, 305, - 305, 305, 305, 308, 281, 307, 307, 307, 307, 307, - 307, 313, 156, 308, 308, 308, 308, 308, 308, 314, - 132, 313, 313, 313, 313, 313, 313, 315, 156, 314, - 314, 314, 314, 314, 314, 422, 156, 315, 315, 315, - 315, 315, 315, 285, 285, 285, 324, 156, 156, 326, - 410, 156, 404, 156, 474, 405, 411, 284, 284, 284, - 284, 284, 327, 481, 156, 418, 156, 454, 481, 328, - - 255, 423, 327, 327, 327, 327, 327, 327, 288, 288, - 288, 329, 156, 256, 156, 438, 465, 156, 132, 331, - 284, 284, 284, 284, 284, 425, 481, 332, 156, 156, - 156, 481, 451, 255, 333, 437, 443, 332, 332, 332, - 332, 332, 332, 229, 257, 156, 256, 284, 284, 284, - 284, 284, 156, 481, 156, 444, 156, 470, 481, 471, - 255, 284, 284, 284, 284, 284, 336, 481, 452, 156, - 475, 453, 481, 256, 255, 156, 336, 336, 336, 336, - 336, 336, 428, 428, 428, 428, 428, 256, 290, 290, - 290, 290, 290, 156, 481, 429, 466, 250, 337, 481, - - 457, 255, 153, 153, 153, 153, 153, 334, 337, 337, - 337, 337, 337, 337, 256, 249, 156, 334, 334, 334, - 334, 334, 334, 284, 284, 284, 284, 290, 156, 292, - 156, 156, 132, 338, 292, 292, 293, 458, 460, 156, - 132, 132, 294, 338, 338, 338, 338, 338, 338, 295, - 339, 132, 294, 294, 294, 294, 294, 294, 341, 469, - 339, 339, 339, 339, 339, 339, 342, 156, 341, 341, - 341, 341, 341, 341, 344, 132, 342, 342, 342, 342, - 342, 342, 345, 229, 344, 344, 344, 344, 344, 344, - 473, 156, 345, 345, 345, 345, 345, 345, 91, 91, - - 91, 91, 91, 349, 481, 481, 481, 481, 481, 156, - 94, 463, 480, 349, 349, 349, 349, 349, 349, 350, - 481, 156, 156, 479, 96, 118, 220, 478, 217, 350, - 350, 350, 350, 350, 350, 358, 322, 322, 322, 358, - 166, 286, 464, 362, 322, 322, 322, 362, 359, 156, - 156, 156, 156, 200, 286, 132, 363, 476, 477, 132, - 366, 287, 325, 360, 360, 360, 325, 132, 286, 289, - 366, 366, 366, 366, 366, 366, 358, 322, 322, 322, - 358, 361, 286, 181, 181, 181, 181, 181, 287, 359, - 132, 361, 361, 361, 361, 361, 361, 285, 285, 285, - - 324, 132, 287, 326, 132, 132, 132, 40, 132, 118, - 132, 190, 190, 190, 190, 190, 327, 40, 40, 40, - 40, 40, 40, 328, 132, 132, 327, 327, 327, 327, - 327, 327, 330, 364, 364, 364, 330, 132, 128, 118, - 118, 176, 368, 286, 166, 203, 203, 203, 203, 203, - 156, 365, 368, 368, 368, 368, 368, 368, 289, 151, - 132, 365, 365, 365, 365, 365, 365, 288, 288, 288, - 329, 156, 132, 59, 65, 61, 128, 49, 331, 125, - 118, 108, 103, 102, 93, 81, 332, 49, 49, 49, - 49, 49, 49, 333, 370, 60, 332, 332, 332, 332, - - 332, 332, 372, 59, 370, 370, 370, 370, 370, 370, - 51, 48, 372, 372, 372, 372, 372, 372, 164, 164, - 164, 164, 164, 375, 481, 36, 36, 481, 481, 481, - 94, 481, 481, 375, 375, 375, 375, 375, 375, 376, - 481, 481, 481, 481, 96, 481, 481, 481, 481, 376, - 376, 376, 376, 376, 376, 362, 322, 322, 322, 362, - 377, 481, 481, 481, 481, 481, 286, 481, 363, 481, - 377, 377, 377, 377, 377, 377, 378, 481, 481, 156, - 481, 289, 481, 481, 481, 381, 378, 378, 378, 378, - 378, 378, 382, 481, 383, 389, 481, 481, 481, 384, - - 385, 390, 481, 386, 481, 389, 389, 389, 389, 389, - 389, 390, 390, 390, 390, 390, 390, 391, 481, 481, - 481, 481, 481, 392, 481, 481, 481, 391, 391, 391, - 391, 391, 391, 392, 392, 392, 392, 392, 392, 400, - 481, 481, 481, 481, 481, 401, 481, 481, 481, 400, - 400, 400, 400, 400, 400, 401, 401, 401, 401, 401, - 401, 402, 481, 481, 481, 481, 481, 412, 481, 481, - 481, 402, 402, 402, 402, 402, 402, 412, 412, 412, - 412, 412, 412, 413, 481, 481, 481, 481, 481, 252, - 481, 481, 481, 413, 413, 413, 413, 413, 413, 252, - - 252, 252, 252, 252, 252, 414, 414, 414, 414, 414, - 481, 481, 285, 481, 481, 481, 481, 481, 481, 481, - 481, 415, 285, 285, 285, 285, 285, 285, 288, 481, - 481, 416, 414, 414, 414, 414, 414, 481, 288, 288, - 288, 288, 288, 288, 481, 481, 481, 481, 415, 427, - 481, 481, 428, 428, 428, 428, 428, 481, 416, 427, - 427, 427, 427, 427, 427, 429, 428, 428, 428, 428, - 428, 481, 428, 428, 428, 428, 428, 481, 431, 429, - 481, 481, 481, 481, 481, 429, 481, 481, 481, 442, - 481, 481, 431, 439, 439, 439, 439, 439, 431, 442, - - 442, 442, 442, 442, 442, 481, 429, 428, 428, 428, - 428, 428, 440, 481, 481, 481, 481, 481, 481, 431, - 429, 481, 440, 440, 440, 440, 440, 440, 448, 481, - 481, 481, 481, 431, 481, 481, 481, 481, 448, 448, - 448, 448, 448, 448, 428, 428, 428, 428, 428, 455, - 481, 481, 428, 428, 428, 428, 428, 429, 481, 455, - 455, 455, 455, 455, 455, 429, 481, 481, 481, 456, - 431, 449, 449, 449, 449, 449, 481, 481, 431, 456, - 456, 456, 456, 456, 456, 481, 481, 481, 481, 481, - 450, 481, 481, 481, 481, 481, 461, 481, 481, 481, - - 450, 450, 450, 450, 450, 450, 461, 461, 461, 461, - 461, 461, 462, 481, 481, 481, 481, 481, 467, 481, - 481, 481, 462, 462, 462, 462, 462, 462, 467, 467, - 467, 467, 467, 467, 468, 481, 481, 481, 481, 481, - 430, 481, 481, 481, 468, 468, 468, 468, 468, 468, - 430, 430, 430, 430, 430, 430, 472, 481, 481, 481, - 481, 481, 430, 481, 481, 481, 472, 472, 472, 472, - 472, 472, 430, 430, 430, 430, 430, 430, 40, 481, - 40, 40, 40, 40, 40, 40, 40, 40, 40, 46, - 46, 481, 46, 46, 49, 481, 49, 49, 49, 49, - - 49, 49, 49, 49, 49, 56, 56, 481, 56, 56, - 84, 481, 481, 84, 84, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 95, 481, 95, 95, 481, 95, - 95, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 110, 110, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 117, 117, 481, 117, 117, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 67, - 67, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 131, 131, 481, 131, 131, 153, 153, 153, 153, 153, - - 153, 153, 153, 153, 155, 155, 481, 155, 155, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 215, 215, 215, - 481, 215, 228, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 247, 247, 247, 481, 247, 252, - 252, 252, 252, 481, 252, 252, 252, 252, 252, 252, - 279, 279, 279, 481, 279, 285, 481, 285, 285, 285, - - 285, 285, 285, 285, 285, 285, 288, 481, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 316, 316, - 316, 481, 316, 325, 325, 325, 325, 325, 325, 325, - 325, 325, 325, 325, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 351, 351, 351, 481, 351, - 417, 417, 417, 481, 481, 481, 417, 481, 481, 417, - 417, 426, 426, 426, 426, 426, 426, 426, 426, 426, - 430, 430, 430, 481, 481, 430, 430, 430, 481, 430, - 430, 441, 441, 441, 441, 441, 441, 441, 441, 441, - - 7, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481 + 21, 8, 22, 8, 8, 8, 23, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 25, 24, 24, 24, 24, 24, 24, 26, 24, 24, + 24, 24, 24, 27, 28, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 25, 24, + 24, 24, 24, 24, 24, 26, 24, 24, 24, 24, + 24, 8, 29, 30, 24, 31, 36, 31, 36, 41, + 41, 32, 154, 32, 37, 37, 37, 37, 37, 37, + + 37, 37, 37, 37, 33, 34, 33, 34, 38, 38, + 38, 38, 38, 91, 91, 36, 54, 36, 52, 52, + 32, 91, 32, 91, 94, 95, 94, 95, 108, 41, + 50, 154, 33, 34, 33, 34, 42, 135, 53, 56, + 91, 104, 39, 41, 154, 35, 130, 35, 57, 96, + 154, 105, 58, 93, 93, 91, 108, 481, 52, 91, + 481, 93, 97, 93, 91, 135, 53, 56, 107, 104, + 50, 39, 43, 94, 94, 44, 57, 96, 53, 105, + 93, 132, 45, 45, 45, 45, 45, 45, 154, 42, + 98, 106, 137, 47, 147, 93, 107, 159, 128, 93, + + 130, 154, 188, 130, 93, 130, 53, 130, 47, 150, + 132, 45, 45, 45, 45, 45, 45, 61, 98, 106, + 137, 91, 147, 154, 62, 63, 159, 64, 37, 37, + 37, 37, 37, 154, 65, 65, 66, 67, 68, 65, + 69, 70, 71, 65, 72, 65, 73, 74, 65, 75, + 65, 76, 77, 78, 65, 65, 65, 65, 65, 65, + 79, 93, 80, 65, 65, 66, 67, 68, 65, 69, + 70, 71, 72, 65, 73, 74, 65, 75, 65, 76, + 77, 78, 65, 65, 65, 65, 65, 65, 131, 91, + 138, 65, 82, 136, 130, 154, 38, 38, 38, 38, + + 38, 481, 130, 59, 84, 154, 160, 85, 91, 130, + 86, 94, 95, 133, 87, 88, 131, 89, 155, 138, + 91, 136, 156, 65, 134, 94, 141, 130, 90, 93, + 39, 41, 154, 84, 154, 160, 85, 154, 126, 86, + 145, 133, 87, 88, 146, 89, 100, 155, 93, 176, + 156, 65, 134, 100, 100, 100, 100, 100, 100, 39, + 93, 229, 130, 481, 139, 188, 130, 126, 154, 145, + 140, 91, 50, 146, 65, 65, 142, 176, 130, 158, + 91, 41, 100, 100, 100, 100, 100, 100, 40, 40, + 40, 109, 139, 143, 111, 152, 157, 144, 140, 90, + + 130, 154, 91, 194, 167, 142, 154, 112, 158, 166, + 154, 93, 91, 173, 112, 112, 112, 112, 112, 112, + 93, 143, 91, 152, 157, 144, 91, 42, 41, 40, + 91, 91, 167, 91, 41, 212, 130, 170, 166, 172, + 113, 173, 93, 112, 112, 112, 112, 112, 112, 116, + 220, 174, 93, 481, 213, 154, 116, 116, 116, 116, + 116, 116, 93, 41, 175, 170, 93, 481, 172, 91, + 93, 93, 357, 93, 42, 93, 191, 41, 220, 174, + 42, 192, 117, 195, 186, 116, 116, 116, 116, 116, + 116, 119, 175, 193, 130, 201, 130, 196, 119, 119, + + 119, 119, 119, 119, 50, 191, 130, 130, 213, 93, + 192, 130, 195, 186, 197, 217, 215, 154, 50, 204, + 194, 193, 41, 130, 201, 196, 205, 119, 119, 119, + 119, 119, 119, 49, 49, 49, 120, 199, 206, 154, + 91, 212, 197, 208, 122, 154, 207, 130, 204, 154, + 209, 271, 123, 130, 205, 93, 356, 154, 91, 123, + 123, 123, 123, 123, 123, 199, 206, 91, 42, 154, + 154, 208, 481, 91, 91, 207, 213, 355, 354, 209, + 93, 93, 41, 353, 247, 124, 231, 154, 123, 123, + 123, 123, 123, 123, 100, 154, 219, 227, 93, 232, + + 234, 100, 100, 100, 100, 100, 100, 93, 213, 130, + 237, 238, 130, 93, 93, 231, 279, 285, 154, 154, + 241, 285, 130, 50, 219, 227, 235, 232, 239, 234, + 100, 100, 100, 100, 100, 100, 149, 257, 237, 238, + 154, 240, 154, 149, 149, 149, 149, 149, 149, 241, + 117, 154, 267, 268, 272, 235, 239, 91, 288, 154, + 213, 285, 242, 154, 371, 257, 130, 286, 316, 154, + 240, 296, 149, 149, 149, 149, 149, 149, 162, 264, + 267, 268, 272, 273, 154, 162, 162, 162, 162, 162, + 162, 242, 250, 250, 250, 250, 250, 93, 252, 296, + + 154, 285, 403, 253, 285, 254, 92, 286, 264, 154, + 335, 285, 273, 270, 162, 162, 162, 162, 162, 162, + 164, 154, 309, 320, 319, 274, 308, 164, 164, 164, + 164, 164, 164, 154, 250, 250, 250, 250, 250, 335, + 252, 270, 288, 154, 255, 253, 346, 254, 154, 306, + 286, 309, 288, 274, 92, 308, 164, 164, 164, 164, + 164, 164, 99, 99, 99, 99, 99, 154, 114, 318, + 114, 311, 154, 310, 91, 346, 343, 347, 306, 213, + 154, 171, 154, 154, 367, 369, 255, 352, 171, 171, + 171, 171, 171, 171, 283, 283, 283, 283, 283, 311, + + 481, 310, 317, 154, 343, 481, 347, 254, 179, 222, + 179, 222, 367, 369, 93, 154, 379, 171, 171, 171, + 171, 171, 171, 110, 177, 177, 177, 110, 282, 41, + 283, 283, 283, 283, 283, 321, 321, 321, 321, 321, + 481, 447, 178, 254, 379, 285, 255, 373, 322, 178, + 178, 178, 178, 178, 178, 283, 283, 283, 283, 283, + 345, 321, 321, 321, 321, 321, 154, 154, 254, 281, + 447, 154, 280, 154, 322, 42, 373, 374, 178, 178, + 178, 178, 178, 178, 40, 40, 40, 109, 345, 130, + 111, 286, 130, 229, 92, 283, 283, 283, 283, 283, + + 481, 154, 446, 112, 380, 285, 374, 255, 254, 154, + 112, 112, 112, 112, 112, 112, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 481, 249, 481, 254, + 446, 285, 248, 380, 254, 154, 113, 399, 285, 112, + 112, 112, 112, 112, 112, 180, 406, 255, 154, 130, + 130, 286, 180, 180, 180, 180, 180, 180, 358, 321, + 321, 321, 358, 154, 285, 481, 399, 245, 255, 245, + 481, 359, 471, 255, 406, 285, 130, 286, 117, 288, + 285, 180, 180, 180, 180, 180, 180, 182, 130, 362, + 321, 321, 321, 362, 182, 182, 182, 182, 182, 182, + + 285, 130, 363, 99, 99, 99, 99, 99, 154, 229, + 286, 110, 177, 177, 177, 110, 288, 41, 117, 92, + 387, 288, 216, 182, 182, 182, 182, 182, 182, 118, + 118, 118, 118, 118, 163, 163, 163, 163, 163, 165, + 388, 288, 154, 121, 184, 184, 184, 121, 183, 387, + 92, 154, 154, 92, 41, 183, 183, 183, 183, 183, + 183, 200, 154, 42, 181, 181, 181, 181, 181, 388, + 161, 161, 161, 161, 161, 189, 189, 189, 189, 189, + 393, 259, 130, 259, 183, 183, 183, 183, 183, 183, + 121, 184, 184, 184, 121, 50, 277, 298, 277, 298, + + 130, 41, 453, 202, 202, 202, 202, 202, 393, 185, + 394, 395, 396, 130, 154, 407, 185, 185, 185, 185, + 185, 185, 154, 358, 321, 321, 321, 358, 408, 285, + 453, 397, 154, 154, 154, 130, 359, 154, 154, 394, + 395, 396, 50, 154, 407, 185, 185, 185, 185, 185, + 185, 49, 49, 49, 120, 154, 408, 409, 418, 397, + 434, 398, 122, 362, 321, 321, 321, 362, 404, 154, + 123, 405, 154, 154, 285, 286, 363, 123, 123, 123, + 123, 123, 123, 154, 130, 409, 418, 419, 434, 314, + 398, 314, 154, 350, 130, 350, 420, 404, 410, 375, + + 405, 375, 130, 124, 411, 154, 123, 123, 123, 123, + 123, 123, 190, 154, 130, 288, 419, 154, 130, 190, + 190, 190, 190, 190, 190, 420, 410, 289, 289, 289, + 289, 289, 411, 389, 470, 389, 154, 130, 435, 422, + 254, 423, 421, 414, 414, 414, 414, 414, 190, 190, + 190, 190, 190, 190, 148, 148, 148, 148, 148, 415, + 154, 154, 470, 154, 154, 433, 424, 435, 422, 425, + 423, 421, 154, 198, 437, 438, 436, 130, 154, 255, + 198, 198, 198, 198, 198, 198, 130, 154, 329, 364, + 364, 364, 329, 433, 424, 417, 154, 128, 425, 285, + + 154, 154, 117, 437, 438, 436, 130, 117, 432, 198, + 198, 198, 198, 198, 198, 203, 154, 414, 414, 414, + 414, 414, 203, 203, 203, 203, 203, 203, 324, 360, + 360, 360, 324, 415, 285, 169, 432, 165, 154, 151, + 288, 443, 130, 130, 59, 444, 481, 481, 481, 481, + 481, 203, 203, 203, 203, 203, 203, 161, 161, 161, + 161, 161, 481, 154, 426, 426, 426, 426, 426, 417, + 443, 154, 445, 452, 444, 457, 210, 427, 79, 154, + 286, 61, 154, 210, 210, 210, 210, 210, 210, 426, + 426, 426, 426, 426, 128, 125, 451, 154, 417, 117, + + 445, 452, 427, 103, 457, 458, 460, 102, 454, 154, + 154, 475, 210, 210, 210, 210, 210, 210, 163, 163, + 163, 163, 163, 154, 451, 101, 154, 154, 154, 426, + 426, 426, 426, 426, 458, 460, 454, 211, 474, 475, + 476, 429, 427, 477, 211, 211, 211, 211, 211, 211, + 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, + 81, 154, 154, 427, 60, 154, 59, 474, 427, 476, + 463, 459, 477, 211, 211, 211, 211, 211, 211, 218, + 154, 429, 51, 48, 478, 481, 218, 218, 218, 218, + 218, 218, 426, 426, 426, 426, 426, 481, 464, 459, + + 465, 469, 429, 466, 481, 427, 154, 429, 154, 154, + 154, 154, 481, 478, 481, 218, 218, 218, 218, 218, + 218, 110, 177, 177, 177, 110, 464, 41, 465, 469, + 481, 466, 426, 426, 426, 426, 426, 473, 481, 481, + 221, 481, 481, 154, 429, 427, 481, 221, 221, 221, + 221, 221, 221, 441, 441, 441, 441, 441, 448, 448, + 448, 448, 448, 481, 481, 473, 427, 480, 479, 481, + 481, 427, 481, 42, 481, 154, 221, 221, 221, 221, + 221, 221, 223, 154, 429, 481, 481, 481, 481, 223, + 223, 223, 223, 223, 223, 480, 479, 481, 481, 481, + + 481, 481, 481, 481, 481, 429, 481, 481, 481, 481, + 429, 481, 481, 481, 481, 481, 481, 481, 223, 223, + 223, 223, 223, 223, 181, 181, 181, 181, 181, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 224, 481, 481, 481, 481, 481, 481, + 224, 224, 224, 224, 224, 224, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 224, + 224, 224, 224, 224, 224, 118, 118, 118, 118, 118, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 225, 481, 481, 481, 481, 481, + 481, 225, 225, 225, 225, 225, 225, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 225, 225, 225, 225, 225, 225, 121, 184, 184, 184, + 121, 481, 481, 481, 481, 481, 481, 41, 481, 481, + 481, 481, 481, 481, 481, 226, 481, 481, 481, 481, + 481, 481, 226, 226, 226, 226, 226, 226, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 50, 481, + + 481, 226, 226, 226, 226, 226, 226, 189, 189, 189, + 189, 189, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 230, 481, 481, 481, + 481, 481, 481, 230, 230, 230, 230, 230, 230, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 230, 230, 230, 230, 230, 230, 233, 481, + 481, 481, 481, 481, 481, 233, 233, 233, 233, 233, + 233, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 233, 233, 233, 233, 233, 233, + 202, 202, 202, 202, 202, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 236, + 481, 481, 481, 481, 481, 481, 236, 236, 236, 236, + 236, 236, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 236, 236, 236, 236, 236, + 236, 243, 481, 481, 481, 481, 481, 481, 243, 243, + 243, 243, 243, 243, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 243, 243, 243, + 243, 243, 243, 163, 163, 163, 163, 163, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 244, 481, 481, 481, 481, 481, 481, 244, + 244, 244, 244, 244, 244, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 244, 244, + 244, 244, 244, 244, 256, 481, 481, 481, 481, 481, + 481, 256, 256, 256, 256, 256, 256, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 256, 256, 256, 256, 256, 256, 110, 177, 177, 177, + 110, 481, 41, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 258, 481, 481, 481, 481, + 481, 481, 258, 258, 258, 258, 258, 258, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 42, 481, + 481, 258, 258, 258, 258, 258, 258, 260, 481, 481, + 481, 481, 481, 481, 260, 260, 260, 260, 260, 260, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 260, 260, 260, 260, 260, 260, 181, + 181, 181, 181, 181, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 261, 481, + 481, 481, 481, 481, 481, 261, 261, 261, 261, 261, + 261, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 261, 261, 261, 261, 261, 261, + 118, 118, 118, 118, 118, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 262, + + 481, 481, 481, 481, 481, 481, 262, 262, 262, 262, + 262, 262, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 262, 262, 262, 262, 262, + 262, 121, 184, 184, 184, 121, 481, 481, 481, 481, + 481, 481, 41, 481, 481, 481, 481, 481, 481, 481, + 263, 481, 481, 481, 481, 481, 481, 263, 263, 263, + 263, 263, 263, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 50, 481, 481, 263, 263, 263, 263, + + 263, 263, 189, 189, 189, 189, 189, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 265, 481, 481, 481, 481, 481, 481, 265, 265, + 265, 265, 265, 265, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 265, 265, 265, + 265, 265, 265, 266, 481, 481, 481, 481, 481, 481, + 266, 266, 266, 266, 266, 266, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 266, + + 266, 266, 266, 266, 266, 202, 202, 202, 202, 202, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 269, 481, 481, 481, 481, 481, + 481, 269, 269, 269, 269, 269, 269, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 269, 269, 269, 269, 269, 269, 275, 481, 481, 481, + 481, 481, 481, 275, 275, 275, 275, 275, 275, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 275, 275, 275, 275, 275, 275, 163, 163, + 163, 163, 163, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 276, 481, 481, + 481, 481, 481, 481, 276, 276, 276, 276, 276, 276, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 276, 276, 276, 276, 276, 276, 283, + 283, 283, 283, 289, 481, 291, 481, 481, 481, 481, + 291, 291, 292, 481, 481, 481, 481, 481, 293, 481, + 481, 481, 481, 481, 481, 293, 293, 293, 293, 293, + + 293, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 294, 481, 481, 293, 293, 293, 293, 293, 293, + 295, 481, 481, 481, 481, 481, 481, 295, 295, 295, + 295, 295, 295, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 295, 295, 295, 295, + 295, 295, 110, 177, 177, 177, 110, 481, 41, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 297, 481, 481, 481, 481, 481, 481, 297, 297, + + 297, 297, 297, 297, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 42, 481, 481, 297, 297, 297, + 297, 297, 297, 299, 481, 481, 481, 481, 481, 481, + 299, 299, 299, 299, 299, 299, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 117, 481, 481, 299, + 299, 299, 299, 299, 299, 181, 181, 181, 181, 181, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 300, 481, 481, 481, 481, 481, + + 481, 300, 300, 300, 300, 300, 300, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 117, 481, 481, + 300, 300, 300, 300, 300, 300, 118, 118, 118, 118, + 118, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 301, 481, 481, 481, 481, + 481, 481, 301, 301, 301, 301, 301, 301, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 301, 301, 301, 301, 301, 301, 121, 184, 184, + + 184, 121, 481, 481, 481, 481, 481, 481, 41, 481, + 481, 481, 481, 481, 481, 481, 302, 481, 481, 481, + 481, 481, 481, 302, 302, 302, 302, 302, 302, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 50, + 481, 481, 302, 302, 302, 302, 302, 302, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 92, 481, 481, + 481, 481, 481, 481, 92, 92, 92, 92, 92, 92, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 303, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 92, 92, 92, 92, 92, 92, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 303, 189, 189, 189, 189, 189, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 304, 481, 481, 481, 481, 481, 481, 304, 304, + 304, 304, 304, 304, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 304, 304, 304, + 304, 304, 304, 305, 481, 481, 481, 481, 481, 481, + + 305, 305, 305, 305, 305, 305, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 305, + 305, 305, 305, 305, 305, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 129, 481, 481, 481, 481, 481, + 481, 129, 129, 129, 129, 129, 129, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 129, 129, 129, 129, 129, 129, 202, 202, 202, 202, + + 202, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 307, 481, 481, 481, 481, + 481, 481, 307, 307, 307, 307, 307, 307, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 307, 307, 307, 307, 307, 307, 312, 481, 481, + 481, 481, 481, 481, 312, 312, 312, 312, 312, 312, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 312, 312, 312, 312, 312, 312, 163, + + 163, 163, 163, 163, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 313, 481, + 481, 481, 481, 481, 481, 313, 313, 313, 313, 313, + 313, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 313, 313, 313, 313, 313, 313, + 284, 284, 284, 323, 481, 481, 325, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 326, + 481, 481, 481, 481, 481, 481, 326, 326, 326, 326, + 326, 326, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 327, 481, 481, 326, 326, 326, 326, 326, + 326, 287, 287, 287, 328, 481, 481, 481, 481, 481, + 481, 481, 330, 481, 481, 481, 481, 481, 481, 481, + 331, 481, 481, 481, 481, 481, 481, 331, 331, 331, + 331, 331, 331, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 332, 481, 481, 331, 331, 331, 331, + 331, 331, 289, 289, 289, 289, 289, 481, 481, 481, + 481, 481, 481, 481, 481, 254, 481, 481, 481, 481, + + 481, 333, 481, 481, 481, 481, 481, 481, 333, 333, + 333, 333, 333, 333, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 255, 481, 481, 333, 333, 333, + 333, 333, 333, 283, 283, 283, 283, 289, 481, 291, + 481, 481, 481, 481, 291, 291, 292, 481, 481, 481, + 481, 481, 293, 481, 481, 481, 481, 481, 481, 293, + 293, 293, 293, 293, 293, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 294, 481, 481, 293, 293, + + 293, 293, 293, 293, 334, 481, 481, 481, 481, 481, + 481, 334, 334, 334, 334, 334, 334, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 334, 334, 334, 334, 334, 334, 110, 177, 177, 177, + 110, 481, 41, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 336, 481, 481, 481, 481, + 481, 481, 336, 336, 336, 336, 336, 336, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 42, 481, + + 481, 336, 336, 336, 336, 336, 336, 181, 181, 181, + 181, 181, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 337, 481, 481, 481, + 481, 481, 481, 337, 337, 337, 337, 337, 337, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 117, + 481, 481, 337, 337, 337, 337, 337, 337, 118, 118, + 118, 118, 118, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 338, 481, 481, + 481, 481, 481, 481, 338, 338, 338, 338, 338, 338, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 338, 338, 338, 338, 338, 338, 121, + 184, 184, 184, 121, 481, 481, 481, 481, 481, 481, + 41, 481, 481, 481, 481, 481, 481, 481, 339, 481, + 481, 481, 481, 481, 481, 339, 339, 339, 339, 339, + 339, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 50, 481, 481, 339, 339, 339, 339, 339, 339, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 340, 481, 481, 92, + 481, 481, 481, 481, 481, 481, 92, 92, 92, 92, + 92, 92, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 92, 92, 92, 92, 92, + 92, 189, 189, 189, 189, 189, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 341, 481, 481, 481, 481, 481, 481, 341, 341, 341, + 341, 341, 341, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 341, 341, 341, 341, + 341, 341, 148, 148, 148, 148, 148, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 342, 481, 481, 481, 481, 481, 481, 342, 342, + 342, 342, 342, 342, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 342, 342, 342, + 342, 342, 342, 202, 202, 202, 202, 202, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 344, 481, 481, 481, 481, 481, 481, 344, + + 344, 344, 344, 344, 344, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 344, 344, + 344, 344, 344, 344, 348, 481, 481, 481, 481, 481, + 481, 348, 348, 348, 348, 348, 348, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 348, 348, 348, 348, 348, 348, 163, 163, 163, 163, + 163, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 349, 481, 481, 481, 481, + + 481, 481, 349, 349, 349, 349, 349, 349, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 349, 349, 349, 349, 349, 349, 324, 360, 360, + 360, 324, 481, 285, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 361, 481, 481, 481, + 481, 481, 481, 361, 361, 361, 361, 361, 361, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 286, + 481, 481, 361, 361, 361, 361, 361, 361, 284, 284, + + 284, 323, 481, 481, 325, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 326, 481, 481, + 481, 481, 481, 481, 326, 326, 326, 326, 326, 326, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 327, 481, 481, 326, 326, 326, 326, 326, 326, 329, + 364, 364, 364, 329, 481, 481, 481, 481, 481, 481, + 285, 481, 481, 481, 481, 481, 481, 481, 365, 481, + 481, 481, 481, 481, 481, 365, 365, 365, 365, 365, + 365, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 288, 481, 481, 365, 365, 365, 365, 365, 365, + 287, 287, 287, 328, 481, 481, 481, 481, 481, 481, + 481, 330, 481, 481, 481, 481, 481, 481, 481, 331, + 481, 481, 481, 481, 481, 481, 331, 331, 331, 331, + 331, 331, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 332, 481, 481, 331, 331, 331, 331, 331, + 331, 289, 289, 289, 289, 289, 481, 481, 481, 481, + 481, 481, 481, 481, 254, 481, 481, 481, 481, 481, + + 366, 481, 481, 481, 481, 481, 481, 366, 366, 366, + 366, 366, 366, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 255, 481, 481, 366, 366, 366, 366, + 366, 366, 368, 481, 481, 481, 481, 481, 481, 368, + 368, 368, 368, 368, 368, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 368, 368, + 368, 368, 368, 368, 115, 481, 481, 481, 481, 481, + 481, 115, 115, 115, 115, 115, 115, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 115, 115, 115, 115, 115, 115, 370, 481, 481, 481, + 481, 481, 481, 370, 370, 370, 370, 370, 370, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 370, 370, 370, 370, 370, 370, 148, 148, + 148, 148, 148, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 129, 481, 481, + 481, 481, 481, 481, 129, 129, 129, 129, 129, 129, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 129, 129, 129, 129, 129, 129, 202, + 202, 202, 202, 202, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 372, 481, + 481, 481, 481, 481, 481, 372, 372, 372, 372, 372, + 372, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 372, 372, 372, 372, 372, 372, + 376, 481, 481, 481, 481, 481, 481, 376, 376, 376, + + 376, 376, 376, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 376, 376, 376, 376, + 376, 376, 377, 481, 481, 481, 481, 481, 481, 377, + 377, 377, 377, 377, 377, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 377, 377, + 377, 377, 377, 377, 289, 289, 289, 289, 289, 481, + 481, 481, 481, 481, 481, 481, 481, 254, 481, 481, + 481, 481, 481, 378, 481, 481, 481, 481, 481, 481, + + 378, 378, 378, 378, 378, 378, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 255, 481, 481, 378, + 378, 378, 378, 378, 378, 381, 481, 481, 481, 481, + 481, 481, 382, 481, 383, 481, 481, 481, 481, 384, + 385, 481, 481, 386, 481, 481, 481, 481, 154, 481, + 481, 481, 481, 481, 381, 481, 481, 481, 481, 481, + 382, 481, 383, 481, 481, 481, 481, 384, 385, 481, + 481, 386, 390, 481, 481, 481, 481, 481, 481, 390, + 390, 390, 390, 390, 390, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 390, 390, + 390, 390, 390, 390, 391, 481, 481, 481, 481, 481, + 481, 391, 391, 391, 391, 391, 391, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 391, 391, 391, 391, 391, 391, 392, 481, 481, 481, + 481, 481, 481, 392, 392, 392, 392, 392, 392, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 392, 392, 392, 392, 392, 392, 400, 481, + 481, 481, 481, 481, 481, 400, 400, 400, 400, 400, + 400, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 400, 400, 400, 400, 400, 400, + 401, 481, 481, 481, 481, 481, 481, 401, 401, 401, + 401, 401, 401, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 401, 401, 401, 401, + 401, 401, 402, 481, 481, 481, 481, 481, 481, 402, + + 402, 402, 402, 402, 402, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 402, 402, + 402, 402, 402, 402, 412, 481, 481, 481, 481, 481, + 481, 412, 412, 412, 412, 412, 412, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 412, 412, 412, 412, 412, 412, 413, 481, 481, 481, + 481, 481, 481, 413, 413, 413, 413, 413, 413, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 413, 413, 413, 413, 413, 413, 431, 481, + 481, 481, 481, 481, 481, 431, 431, 431, 431, 431, + 431, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 431, 431, 431, 431, 431, 431, + 440, 481, 481, 481, 481, 481, 481, 440, 440, 440, + 440, 440, 440, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 440, 440, 440, 440, + + 440, 440, 441, 441, 441, 441, 441, 481, 481, 481, + 481, 481, 481, 481, 481, 427, 481, 481, 481, 481, + 481, 442, 481, 481, 481, 481, 481, 481, 442, 442, + 442, 442, 442, 442, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 429, 481, 481, 442, 442, 442, + 442, 442, 442, 448, 448, 448, 448, 448, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 449, 481, 481, 481, 481, 481, 481, 449, + 449, 449, 449, 449, 449, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 449, 449, + 449, 449, 449, 449, 450, 481, 481, 481, 481, 481, + 481, 450, 450, 450, 450, 450, 450, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 450, 450, 450, 450, 450, 450, 455, 481, 481, 481, + 481, 481, 481, 455, 455, 455, 455, 455, 455, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 455, 455, 455, 455, 455, 455, 456, 481, + 481, 481, 481, 481, 481, 456, 456, 456, 456, 456, + 456, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 456, 456, 456, 456, 456, 456, + 461, 481, 481, 481, 481, 481, 481, 461, 461, 461, + 461, 461, 461, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 461, 461, 461, 461, + 461, 461, 462, 481, 481, 481, 481, 481, 481, 462, + + 462, 462, 462, 462, 462, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 462, 462, + 462, 462, 462, 462, 467, 481, 481, 481, 481, 481, + 481, 467, 467, 467, 467, 467, 467, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 467, 467, 467, 467, 467, 467, 468, 481, 481, 481, + 481, 481, 481, 468, 468, 468, 468, 468, 468, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 468, 468, 468, 468, 468, 468, 472, 481, + 481, 481, 481, 481, 481, 472, 472, 472, 472, 472, + 472, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 472, 472, 472, 472, 472, 472, + 40, 481, 481, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 46, 46, 481, 46, 46, 49, 481, + 481, 49, 49, 49, 49, 49, 49, 49, 49, 49, + 49, 55, 55, 481, 55, 55, 83, 481, 481, 83, + + 83, 92, 481, 92, 92, 481, 92, 92, 99, 99, + 99, 99, 99, 99, 99, 99, 99, 99, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 115, 115, 481, 115, 115, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 129, 129, 481, 129, 129, 148, 148, + 148, 148, 148, 148, 148, 148, 148, 148, 153, 153, + 481, 153, 153, 161, 161, 161, 161, 161, 161, 161, + + 161, 161, 161, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 168, 168, 168, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 49, 49, 481, 49, + 49, 49, 49, 49, 49, 49, 49, 49, 49, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + + 214, 214, 214, 214, 40, 481, 481, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 246, 246, 246, 246, 251, 251, 251, 251, 251, + 251, 481, 251, 251, 251, 251, 251, 251, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 278, 278, 278, 278, 251, + 251, 251, 251, 251, 251, 481, 251, 251, 251, 251, + 251, 251, 284, 481, 481, 284, 284, 284, 284, 284, + + 284, 284, 284, 284, 284, 287, 481, 481, 287, 287, + 287, 287, 287, 287, 287, 287, 287, 287, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 115, 115, 481, 115, 115, 49, + 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 315, 315, 315, 315, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 287, + 481, 481, 287, 287, 287, 287, 287, 287, 287, 287, + 287, 287, 329, 329, 329, 329, 329, 329, 329, 329, + + 329, 329, 329, 329, 329, 251, 251, 251, 251, 251, + 481, 481, 251, 251, 251, 251, 251, 251, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 115, 115, 481, 115, 115, 49, + 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 351, 351, 351, 351, 284, 284, 481, 284, + 284, 284, 284, 284, 284, 284, 284, 284, 284, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 287, 287, 481, 287, 287, 287, 287, 287, + + 287, 287, 287, 287, 287, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 251, 251, + 251, 251, 251, 481, 481, 251, 251, 251, 251, 251, + 251, 416, 416, 416, 416, 481, 481, 481, 481, 416, + 481, 481, 416, 416, 428, 428, 428, 428, 481, 481, + 481, 428, 428, 428, 481, 428, 428, 430, 430, 430, + 430, 430, 430, 430, 430, 430, 430, 439, 439, 439, + 439, 439, 439, 439, 439, 439, 439, 7, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481 } ; -static yyconst short int yy_chk[2462] = +static yyconst flex_int16_t yy_chk[6664] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -569,263 +1049,725 @@ static yyconst short int yy_chk[2462] = 1, 1, 1, 1, 1, 1, 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, 480, 4, 9, 9, 9, 9, 9, 12, 3, - 17, 4, 10, 10, 10, 10, 10, 11, 11, 11, - 11, 11, 3, 3, 4, 4, 13, 69, 12, 13, - 15, 53, 53, 17, 69, 3, 13, 4, 26, 13, - - 13, 13, 13, 13, 13, 15, 18, 27, 23, 18, - 27, 27, 26, 49, 11, 40, 18, 28, 23, 477, - 28, 27, 52, 23, 89, 56, 23, 89, 49, 23, - 32, 28, 18, 23, 23, 40, 23, 43, 27, 56, - 43, 18, 21, 24, 32, 52, 66, 43, 66, 21, - 21, 28, 21, 24, 24, 24, 24, 24, 24, 21, - 32, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 1, 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, 5, 4, 6, 15, + 12, 3, 480, 4, 9, 9, 9, 9, 9, 10, + + 10, 10, 10, 10, 3, 3, 4, 4, 11, 11, + 11, 11, 11, 24, 32, 5, 18, 6, 17, 18, + 3, 25, 4, 33, 25, 25, 33, 33, 39, 49, + 15, 477, 3, 3, 4, 4, 12, 69, 17, 18, + 36, 32, 11, 40, 470, 3, 69, 4, 18, 25, + 464, 33, 18, 24, 32, 55, 39, 43, 52, 26, + 43, 25, 26, 33, 34, 69, 17, 18, 36, 32, + 49, 11, 13, 53, 53, 13, 18, 25, 52, 33, + 36, 67, 13, 13, 13, 13, 13, 13, 459, 40, + 26, 34, 71, 43, 78, 55, 36, 88, 128, 26, + + 78, 443, 128, 67, 34, 71, 52, 80, 13, 80, + 67, 13, 13, 13, 13, 13, 13, 21, 26, 34, + 71, 92, 78, 88, 21, 21, 88, 21, 37, 37, + 37, 37, 37, 437, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 92, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 34, 33, - 36, 21, 33, 33, 37, 37, 37, 37, 37, 59, - - 44, 59, 34, 33, 36, 38, 38, 38, 38, 38, - 44, 44, 44, 44, 44, 44, 45, 86, 34, 57, - 33, 36, 57, 57, 59, 47, 45, 45, 45, 45, - 45, 45, 47, 57, 86, 47, 47, 47, 47, 47, - 47, 55, 38, 42, 42, 42, 42, 58, 68, 42, - 71, 55, 55, 55, 55, 55, 55, 72, 88, 144, - 128, 58, 42, 68, 128, 88, 144, 70, 58, 42, - 71, 73, 42, 42, 42, 42, 42, 42, 50, 50, - 50, 50, 70, 78, 74, 72, 78, 73, 65, 50, - 78, 80, 470, 70, 74, 76, 76, 50, 65, 65, - - 65, 65, 65, 65, 50, 75, 76, 50, 50, 50, - 50, 50, 50, 77, 80, 82, 141, 83, 77, 87, - 75, 90, 91, 85, 90, 82, 75, 83, 83, 83, - 83, 83, 83, 85, 87, 77, 91, 138, 152, 77, - 138, 109, 95, 464, 141, 152, 109, 96, 110, 111, - 82, 92, 92, 92, 92, 92, 95, 96, 96, 96, - 96, 96, 96, 92, 98, 99, 109, 459, 110, 111, - 92, 98, 101, 104, 105, 107, 121, 92, 98, 99, - 92, 92, 92, 92, 92, 92, 101, 104, 105, 107, - 135, 121, 100, 104, 106, 133, 150, 100, 122, 135, - - 101, 99, 100, 100, 100, 100, 100, 100, 106, 107, - 105, 120, 148, 122, 133, 443, 150, 437, 148, 177, - 114, 120, 106, 112, 112, 112, 112, 112, 149, 112, - 114, 114, 114, 114, 114, 114, 120, 157, 160, 177, - 157, 201, 112, 149, 160, 201, 395, 158, 126, 112, - 161, 159, 112, 112, 112, 112, 112, 112, 113, 113, - 113, 113, 126, 158, 113, 161, 126, 162, 118, 159, - 229, 164, 168, 395, 229, 432, 162, 113, 118, 118, - 118, 118, 118, 118, 113, 164, 168, 113, 113, 113, - 113, 113, 113, 116, 116, 116, 116, 116, 169, 422, - - 388, 192, 196, 119, 194, 171, 169, 172, 192, 196, - 194, 206, 116, 119, 119, 119, 119, 119, 119, 171, - 173, 172, 116, 116, 116, 116, 116, 116, 123, 123, - 123, 123, 123, 206, 173, 208, 209, 210, 132, 123, - 387, 175, 241, 209, 210, 241, 208, 123, 132, 132, - 132, 132, 132, 132, 123, 175, 184, 123, 123, 123, - 123, 123, 123, 124, 124, 124, 124, 219, 239, 215, - 367, 184, 247, 156, 124, 199, 186, 215, 239, 351, - 247, 219, 124, 156, 156, 156, 156, 156, 156, 124, - 186, 199, 124, 124, 124, 124, 124, 124, 130, 130, - - 130, 130, 130, 186, 268, 205, 271, 310, 163, 207, - 310, 312, 438, 271, 312, 268, 438, 130, 163, 163, - 163, 163, 163, 163, 130, 205, 207, 130, 130, 130, - 130, 130, 130, 154, 154, 154, 154, 154, 235, 167, - 174, 232, 272, 347, 348, 346, 167, 264, 347, 348, - 272, 235, 154, 167, 174, 238, 232, 240, 242, 154, - 227, 264, 154, 154, 154, 154, 154, 154, 165, 165, - 165, 165, 165, 373, 227, 253, 238, 240, 178, 242, - 373, 174, 335, 264, 321, 227, 320, 165, 178, 178, - 178, 178, 178, 178, 179, 253, 254, 165, 165, 165, - - 165, 165, 165, 180, 179, 179, 179, 179, 179, 179, - 273, 254, 275, 180, 180, 180, 180, 180, 180, 182, - 182, 182, 182, 182, 343, 279, 285, 316, 386, 183, - 275, 386, 273, 279, 343, 316, 319, 318, 182, 183, - 183, 183, 183, 183, 183, 185, 285, 288, 182, 182, - 182, 182, 182, 182, 189, 185, 185, 185, 185, 185, - 185, 325, 288, 435, 189, 189, 189, 189, 189, 189, - 191, 191, 191, 191, 191, 284, 284, 284, 284, 284, - 202, 325, 435, 286, 286, 286, 286, 286, 284, 191, - 202, 202, 202, 202, 202, 202, 286, 306, 309, 191, - - 191, 191, 191, 191, 191, 204, 204, 204, 204, 204, - 322, 322, 322, 322, 322, 211, 423, 317, 303, 306, - 309, 423, 303, 322, 204, 211, 211, 211, 211, 211, - 211, 212, 303, 330, 204, 204, 204, 204, 204, 204, - 214, 212, 212, 212, 212, 212, 212, 418, 330, 311, - 214, 214, 214, 214, 214, 214, 218, 218, 218, 218, - 218, 221, 218, 374, 340, 359, 360, 218, 418, 218, - 374, 221, 221, 221, 221, 221, 221, 222, 340, 324, - 384, 301, 218, 223, 324, 359, 360, 222, 222, 222, - 222, 222, 222, 223, 223, 223, 223, 223, 223, 224, - - 381, 382, 340, 384, 324, 225, 296, 381, 382, 224, - 224, 224, 224, 224, 224, 225, 225, 225, 225, 225, - 225, 226, 337, 337, 337, 337, 337, 230, 410, 363, - 364, 226, 226, 226, 226, 226, 226, 230, 230, 230, - 230, 230, 230, 231, 363, 364, 396, 421, 337, 236, - 421, 410, 396, 231, 231, 231, 231, 231, 231, 236, - 236, 236, 236, 236, 236, 237, 341, 341, 341, 341, - 341, 244, 283, 436, 369, 237, 237, 237, 237, 237, - 237, 244, 244, 244, 244, 244, 244, 245, 369, 383, - 282, 369, 341, 246, 420, 436, 383, 245, 245, 245, - - 245, 245, 245, 246, 246, 246, 246, 246, 246, 251, - 251, 251, 251, 251, 420, 251, 281, 453, 393, 397, - 251, 329, 251, 252, 252, 252, 252, 252, 258, 252, - 380, 329, 393, 397, 252, 251, 252, 453, 258, 258, - 258, 258, 258, 258, 380, 398, 329, 405, 385, 252, - 256, 256, 256, 256, 256, 385, 256, 406, 405, 398, - 259, 256, 256, 256, 380, 406, 280, 407, 274, 256, - 259, 259, 259, 259, 259, 259, 256, 260, 407, 256, - 256, 256, 256, 256, 256, 261, 419, 260, 260, 260, - 260, 260, 260, 262, 267, 261, 261, 261, 261, 261, - - 261, 263, 419, 262, 262, 262, 262, 262, 262, 265, - 257, 263, 263, 263, 263, 263, 263, 266, 250, 265, - 265, 265, 265, 265, 265, 269, 249, 266, 266, 266, - 266, 266, 266, 270, 248, 269, 269, 269, 269, 269, - 269, 276, 243, 270, 270, 270, 270, 270, 270, 277, - 234, 276, 276, 276, 276, 276, 276, 278, 408, 277, - 277, 277, 277, 277, 277, 408, 399, 278, 278, 278, - 278, 278, 278, 287, 287, 287, 287, 394, 471, 287, - 399, 404, 394, 447, 471, 394, 399, 290, 290, 290, - 290, 290, 287, 290, 409, 404, 458, 447, 290, 287, - - 290, 409, 287, 287, 287, 287, 287, 287, 289, 289, - 289, 289, 425, 290, 411, 425, 458, 444, 233, 289, - 291, 291, 291, 291, 291, 411, 291, 289, 424, 433, - 465, 291, 444, 291, 289, 424, 433, 289, 289, 289, - 289, 289, 289, 228, 220, 445, 291, 292, 292, 292, - 292, 292, 434, 292, 446, 434, 473, 465, 292, 466, - 292, 293, 293, 293, 293, 293, 297, 293, 445, 466, - 473, 446, 293, 292, 293, 460, 297, 297, 297, 297, - 297, 297, 428, 428, 428, 428, 428, 293, 294, 294, - 294, 294, 294, 451, 294, 428, 460, 217, 299, 294, - - 451, 294, 344, 344, 344, 344, 344, 294, 299, 299, - 299, 299, 299, 299, 294, 216, 203, 294, 294, 294, - 294, 294, 294, 295, 295, 295, 295, 295, 344, 295, - 452, 454, 198, 300, 295, 295, 295, 452, 454, 463, - 197, 195, 295, 300, 300, 300, 300, 300, 300, 295, - 302, 193, 295, 295, 295, 295, 295, 295, 304, 463, - 302, 302, 302, 302, 302, 302, 305, 469, 304, 304, - 304, 304, 304, 304, 307, 190, 305, 305, 305, 305, - 305, 305, 308, 187, 307, 307, 307, 307, 307, 307, - 469, 479, 308, 308, 308, 308, 308, 308, 313, 313, - - 313, 313, 313, 314, 415, 415, 415, 415, 415, 478, - 313, 457, 479, 314, 314, 314, 314, 314, 314, 315, - 415, 457, 476, 478, 313, 181, 176, 476, 170, 315, - 315, 315, 315, 315, 315, 326, 326, 326, 326, 326, - 166, 326, 457, 331, 331, 331, 331, 331, 326, 155, - 474, 475, 153, 151, 331, 147, 331, 474, 475, 146, - 334, 326, 327, 327, 327, 327, 327, 145, 327, 331, - 334, 334, 334, 334, 334, 334, 358, 358, 358, 358, - 358, 327, 358, 368, 368, 368, 368, 368, 327, 358, - 143, 327, 327, 327, 327, 327, 327, 328, 328, 328, - - 328, 142, 358, 328, 140, 139, 137, 336, 136, 368, - 134, 370, 370, 370, 370, 370, 328, 336, 336, 336, - 336, 336, 336, 328, 131, 129, 328, 328, 328, 328, - 328, 328, 332, 332, 332, 332, 332, 370, 127, 117, - 115, 108, 338, 332, 97, 372, 372, 372, 372, 372, - 84, 332, 338, 338, 338, 338, 338, 338, 332, 81, - 79, 332, 332, 332, 332, 332, 332, 333, 333, 333, - 333, 372, 67, 63, 62, 61, 60, 339, 333, 54, - 46, 39, 30, 29, 25, 22, 333, 339, 339, 339, - 339, 339, 339, 333, 342, 20, 333, 333, 333, 333, - - 333, 333, 345, 19, 342, 342, 342, 342, 342, 342, - 16, 14, 345, 345, 345, 345, 345, 345, 349, 349, - 349, 349, 349, 350, 7, 6, 5, 0, 0, 0, - 349, 0, 0, 350, 350, 350, 350, 350, 350, 361, - 0, 0, 0, 0, 349, 0, 0, 0, 0, 361, - 361, 361, 361, 361, 361, 362, 362, 362, 362, 362, - 365, 0, 0, 0, 0, 0, 362, 0, 362, 0, - 365, 365, 365, 365, 365, 365, 366, 0, 0, 371, - 0, 362, 0, 0, 0, 371, 366, 366, 366, 366, - 366, 366, 371, 0, 371, 375, 0, 0, 0, 371, - - 371, 376, 0, 371, 0, 375, 375, 375, 375, 375, - 375, 376, 376, 376, 376, 376, 376, 377, 0, 0, - 0, 0, 0, 378, 0, 0, 0, 377, 377, 377, - 377, 377, 377, 378, 378, 378, 378, 378, 378, 390, - 0, 0, 0, 0, 0, 391, 0, 0, 0, 390, - 390, 390, 390, 390, 390, 391, 391, 391, 391, 391, - 391, 392, 0, 0, 0, 0, 0, 400, 0, 0, - 0, 392, 392, 392, 392, 392, 392, 400, 400, 400, - 400, 400, 400, 401, 0, 0, 0, 0, 0, 402, - 0, 0, 0, 401, 401, 401, 401, 401, 401, 402, - - 402, 402, 402, 402, 402, 403, 403, 403, 403, 403, - 0, 0, 412, 0, 0, 0, 0, 0, 0, 0, - 0, 403, 412, 412, 412, 412, 412, 412, 413, 0, - 0, 403, 414, 414, 414, 414, 414, 0, 413, 413, - 413, 413, 413, 413, 0, 0, 0, 0, 414, 416, - 0, 0, 417, 417, 417, 417, 417, 0, 414, 416, - 416, 416, 416, 416, 416, 417, 426, 426, 426, 426, - 426, 0, 430, 430, 430, 430, 430, 0, 417, 426, - 0, 0, 0, 0, 0, 430, 0, 0, 0, 431, - 0, 0, 426, 427, 427, 427, 427, 427, 430, 431, - - 431, 431, 431, 431, 431, 0, 427, 439, 439, 439, - 439, 439, 427, 0, 0, 0, 0, 0, 0, 427, - 439, 0, 427, 427, 427, 427, 427, 427, 440, 0, - 0, 0, 0, 439, 0, 0, 0, 0, 440, 440, - 440, 440, 440, 440, 441, 441, 441, 441, 441, 448, - 0, 0, 449, 449, 449, 449, 449, 441, 0, 448, - 448, 448, 448, 448, 448, 449, 0, 0, 0, 450, - 441, 442, 442, 442, 442, 442, 0, 0, 449, 450, - 450, 450, 450, 450, 450, 0, 0, 0, 0, 0, - 442, 0, 0, 0, 0, 0, 455, 0, 0, 0, - - 442, 442, 442, 442, 442, 442, 455, 455, 455, 455, - 455, 455, 456, 0, 0, 0, 0, 0, 461, 0, - 0, 0, 456, 456, 456, 456, 456, 456, 461, 461, - 461, 461, 461, 461, 462, 0, 0, 0, 0, 0, - 467, 0, 0, 0, 462, 462, 462, 462, 462, 462, - 467, 467, 467, 467, 467, 467, 468, 0, 0, 0, - 0, 0, 472, 0, 0, 0, 468, 468, 468, 468, - 468, 468, 472, 472, 472, 472, 472, 472, 482, 0, - 482, 482, 482, 482, 482, 482, 482, 482, 482, 483, - 483, 0, 483, 483, 484, 0, 484, 484, 484, 484, - - 484, 484, 484, 484, 484, 485, 485, 0, 485, 485, - 486, 0, 0, 486, 486, 487, 487, 487, 487, 487, - 487, 487, 487, 487, 488, 0, 488, 488, 0, 488, - 488, 489, 489, 489, 489, 489, 489, 489, 489, 489, - 489, 489, 490, 490, 490, 490, 490, 490, 490, 490, - 490, 491, 491, 0, 491, 491, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 493, 493, 493, + 21, 21, 21, 21, 21, 21, 21, 21, 66, 99, + 72, 21, 23, 70, 70, 432, 38, 38, 38, 38, + + 38, 59, 66, 59, 23, 422, 89, 23, 56, 72, + 23, 56, 56, 68, 23, 23, 66, 23, 84, 72, + 57, 70, 85, 59, 68, 74, 74, 68, 23, 99, + 38, 120, 89, 23, 85, 89, 23, 84, 57, 23, + 76, 68, 23, 23, 76, 23, 27, 84, 56, 108, + 85, 59, 68, 27, 27, 27, 27, 27, 27, 38, + 57, 229, 74, 82, 73, 229, 76, 57, 388, 76, + 73, 96, 120, 76, 495, 495, 75, 108, 73, 87, + 105, 110, 27, 27, 27, 27, 27, 27, 42, 42, + 42, 42, 73, 75, 42, 82, 86, 75, 73, 82, + + 75, 87, 95, 141, 96, 75, 387, 42, 87, 95, + 86, 96, 98, 105, 42, 42, 42, 42, 42, 42, + 105, 75, 104, 82, 86, 75, 106, 110, 111, 109, + 163, 166, 96, 107, 109, 167, 141, 98, 166, 104, + 42, 105, 95, 42, 42, 42, 42, 42, 42, 45, + 176, 106, 98, 121, 351, 345, 45, 45, 45, 45, + 45, 45, 104, 121, 107, 98, 106, 122, 104, 126, + 163, 166, 320, 107, 111, 167, 132, 122, 176, 106, + 109, 135, 45, 145, 126, 45, 45, 45, 45, 45, + 45, 47, 107, 138, 138, 152, 132, 146, 47, 47, + + 47, 47, 47, 47, 121, 132, 145, 135, 168, 126, + 135, 146, 145, 126, 147, 170, 168, 152, 122, 155, + 194, 138, 177, 147, 152, 146, 156, 47, 47, 47, + 47, 47, 47, 50, 50, 50, 50, 150, 157, 156, + 172, 173, 147, 159, 50, 155, 158, 150, 155, 157, + 160, 238, 50, 194, 156, 170, 319, 159, 174, 50, + 50, 50, 50, 50, 50, 150, 157, 175, 177, 158, + 160, 159, 184, 186, 219, 158, 214, 318, 317, 160, + 172, 173, 184, 316, 214, 50, 192, 238, 50, 50, + 50, 50, 50, 50, 58, 310, 174, 186, 174, 197, + + 199, 58, 58, 58, 58, 58, 58, 175, 246, 192, + 204, 205, 197, 186, 219, 192, 246, 253, 205, 204, + 208, 252, 199, 184, 174, 186, 201, 197, 206, 199, + 58, 58, 58, 58, 58, 58, 79, 220, 204, 205, + 206, 207, 208, 79, 79, 79, 79, 79, 79, 208, + 299, 201, 234, 235, 239, 201, 206, 227, 253, 207, + 278, 284, 209, 239, 343, 220, 234, 252, 278, 235, + 207, 257, 79, 79, 79, 79, 79, 79, 90, 227, + 234, 235, 239, 240, 209, 90, 90, 90, 90, 90, + 90, 209, 217, 217, 217, 217, 217, 227, 217, 257, + + 343, 287, 393, 217, 323, 217, 393, 284, 227, 240, + 296, 328, 240, 237, 90, 90, 90, 90, 90, 90, + 93, 237, 271, 282, 281, 241, 270, 93, 93, 93, + 93, 93, 93, 241, 250, 250, 250, 250, 250, 296, + 250, 237, 287, 271, 217, 250, 309, 250, 270, 268, + 323, 271, 328, 241, 340, 270, 93, 93, 93, 93, + 93, 93, 100, 100, 100, 100, 100, 268, 490, 280, + 490, 274, 309, 272, 100, 309, 306, 311, 268, 315, + 272, 100, 274, 306, 335, 340, 250, 315, 100, 100, + 100, 100, 100, 100, 251, 251, 251, 251, 251, 274, + + 251, 272, 279, 311, 306, 251, 311, 251, 502, 512, + 502, 512, 335, 340, 100, 273, 367, 100, 100, 100, + 100, 100, 100, 112, 112, 112, 112, 112, 249, 112, + 283, 283, 283, 283, 283, 285, 285, 285, 285, 285, + 324, 438, 112, 283, 367, 324, 251, 346, 285, 112, + 112, 112, 112, 112, 112, 289, 289, 289, 289, 289, + 308, 321, 321, 321, 321, 321, 438, 308, 289, 248, + 438, 346, 247, 242, 321, 112, 346, 347, 112, 112, + 112, 112, 112, 112, 113, 113, 113, 113, 308, 232, + 113, 324, 231, 228, 369, 290, 290, 290, 290, 290, + + 359, 347, 436, 113, 369, 359, 347, 289, 290, 436, + 113, 113, 113, 113, 113, 113, 291, 291, 291, 291, + 291, 292, 292, 292, 292, 292, 360, 216, 329, 291, + 436, 360, 215, 369, 292, 202, 113, 386, 329, 113, + 113, 113, 113, 113, 113, 116, 395, 290, 395, 196, + 195, 359, 116, 116, 116, 116, 116, 116, 325, 325, + 325, 325, 325, 386, 325, 363, 386, 514, 291, 514, + 364, 325, 466, 292, 395, 363, 193, 360, 116, 329, + 364, 116, 116, 116, 116, 116, 116, 117, 191, 330, + 330, 330, 330, 330, 117, 117, 117, 117, 117, 117, + + 330, 189, 330, 334, 334, 334, 334, 334, 466, 187, + 325, 336, 336, 336, 336, 336, 363, 336, 181, 334, + 373, 364, 169, 117, 117, 117, 117, 117, 117, 119, + 119, 119, 119, 119, 349, 349, 349, 349, 349, 165, + 374, 330, 373, 339, 339, 339, 339, 339, 119, 373, + 349, 161, 153, 380, 339, 119, 119, 119, 119, 119, + 119, 151, 374, 336, 368, 368, 368, 368, 368, 374, + 348, 348, 348, 348, 348, 370, 370, 370, 370, 370, + 380, 518, 148, 518, 119, 119, 119, 119, 119, 119, + 123, 123, 123, 123, 123, 339, 520, 527, 520, 527, + + 144, 123, 446, 372, 372, 372, 372, 372, 380, 123, + 381, 382, 383, 143, 446, 396, 123, 123, 123, 123, + 123, 123, 348, 358, 358, 358, 358, 358, 397, 358, + 446, 384, 381, 382, 383, 142, 358, 384, 396, 381, + 382, 383, 123, 397, 396, 123, 123, 123, 123, 123, + 123, 124, 124, 124, 124, 372, 397, 398, 404, 384, + 420, 385, 124, 362, 362, 362, 362, 362, 394, 420, + 124, 394, 398, 404, 362, 358, 362, 124, 124, 124, + 124, 124, 124, 385, 140, 398, 404, 405, 420, 530, + 385, 530, 394, 540, 139, 540, 406, 394, 399, 547, + + 394, 547, 137, 124, 399, 405, 124, 124, 124, 124, + 124, 124, 130, 399, 136, 362, 405, 406, 134, 130, + 130, 130, 130, 130, 130, 406, 399, 402, 402, 402, + 402, 402, 399, 548, 465, 548, 465, 133, 421, 408, + 402, 409, 407, 403, 403, 403, 403, 403, 130, 130, + 130, 130, 130, 130, 149, 149, 149, 149, 149, 403, + 407, 408, 465, 409, 421, 419, 410, 421, 408, 411, + 409, 407, 410, 149, 424, 425, 423, 131, 419, 402, + 149, 149, 149, 149, 149, 149, 129, 411, 413, 413, + 413, 413, 413, 419, 410, 403, 424, 127, 411, 413, + + 423, 425, 118, 424, 425, 423, 149, 115, 418, 149, + 149, 149, 149, 149, 149, 154, 418, 414, 414, 414, + 414, 414, 154, 154, 154, 154, 154, 154, 412, 412, + 412, 412, 412, 414, 412, 97, 418, 94, 83, 81, + 413, 433, 77, 65, 63, 434, 415, 415, 415, 415, + 415, 154, 154, 154, 154, 154, 154, 162, 162, 162, + 162, 162, 415, 433, 426, 426, 426, 426, 426, 414, + 433, 434, 435, 445, 434, 451, 162, 426, 62, 445, + 412, 61, 435, 162, 162, 162, 162, 162, 162, 416, + 416, 416, 416, 416, 60, 54, 444, 451, 415, 46, + + 435, 445, 416, 30, 451, 452, 454, 29, 447, 162, + 444, 473, 162, 162, 162, 162, 162, 162, 164, 164, + 164, 164, 164, 447, 444, 28, 473, 452, 454, 428, + 428, 428, 428, 428, 452, 454, 447, 164, 471, 473, + 474, 416, 428, 475, 164, 164, 164, 164, 164, 164, + 430, 430, 430, 430, 430, 439, 439, 439, 439, 439, + 22, 471, 474, 430, 20, 475, 19, 471, 439, 474, + 457, 453, 475, 164, 164, 164, 164, 164, 164, 171, + 453, 428, 16, 14, 476, 7, 171, 171, 171, 171, + 171, 171, 441, 441, 441, 441, 441, 0, 457, 453, + + 458, 463, 430, 460, 0, 441, 457, 439, 476, 458, + 463, 460, 0, 476, 0, 171, 171, 171, 171, 171, + 171, 178, 178, 178, 178, 178, 457, 178, 458, 463, + 0, 460, 448, 448, 448, 448, 448, 469, 0, 0, + 178, 0, 0, 469, 441, 448, 0, 178, 178, 178, + 178, 178, 178, 468, 468, 468, 468, 468, 472, 472, + 472, 472, 472, 0, 0, 469, 468, 479, 478, 0, + 0, 472, 0, 178, 0, 479, 178, 178, 178, 178, + 178, 178, 180, 478, 448, 0, 0, 0, 0, 180, + 180, 180, 180, 180, 180, 479, 478, 0, 0, 0, + + 0, 0, 0, 0, 0, 468, 0, 0, 0, 0, + 472, 0, 0, 0, 0, 0, 0, 0, 180, 180, + 180, 180, 180, 180, 182, 182, 182, 182, 182, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 182, 0, 0, 0, 0, 0, 0, + 182, 182, 182, 182, 182, 182, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 182, + 182, 182, 182, 182, 182, 183, 183, 183, 183, 183, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 183, 0, 0, 0, 0, 0, + 0, 183, 183, 183, 183, 183, 183, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 183, 183, 183, 183, 183, 183, 185, 185, 185, 185, + 185, 0, 0, 0, 0, 0, 0, 185, 0, 0, + 0, 0, 0, 0, 0, 185, 0, 0, 0, 0, + 0, 0, 185, 185, 185, 185, 185, 185, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 185, 0, + + 0, 185, 185, 185, 185, 185, 185, 190, 190, 190, + 190, 190, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 190, 0, 0, 0, + 0, 0, 0, 190, 190, 190, 190, 190, 190, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 190, 190, 190, 190, 190, 190, 198, 0, + 0, 0, 0, 0, 0, 198, 198, 198, 198, 198, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 198, 198, 198, 198, 198, 198, + 203, 203, 203, 203, 203, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 203, + 0, 0, 0, 0, 0, 0, 203, 203, 203, 203, + 203, 203, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 203, 203, 203, 203, 203, + 203, 210, 0, 0, 0, 0, 0, 0, 210, 210, + 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, + 210, 210, 210, 211, 211, 211, 211, 211, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 211, 0, 0, 0, 0, 0, 0, 211, + 211, 211, 211, 211, 211, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 211, 211, + 211, 211, 211, 211, 218, 0, 0, 0, 0, 0, + 0, 218, 218, 218, 218, 218, 218, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 218, 218, 218, 218, 218, 218, 221, 221, 221, 221, + 221, 0, 221, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 221, 0, 0, 0, 0, + 0, 0, 221, 221, 221, 221, 221, 221, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 221, 0, + 0, 221, 221, 221, 221, 221, 221, 223, 0, 0, + 0, 0, 0, 0, 223, 223, 223, 223, 223, 223, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 223, 223, 223, 223, 223, 223, 224, + 224, 224, 224, 224, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 224, 0, + 0, 0, 0, 0, 0, 224, 224, 224, 224, 224, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 224, 224, 224, 224, 224, 224, + 225, 225, 225, 225, 225, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + + 0, 0, 0, 0, 0, 0, 225, 225, 225, 225, + 225, 225, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 225, 225, 225, 225, + 225, 226, 226, 226, 226, 226, 0, 0, 0, 0, + 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, + 226, 0, 0, 0, 0, 0, 0, 226, 226, 226, + 226, 226, 226, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 226, 0, 0, 226, 226, 226, 226, + + 226, 226, 230, 230, 230, 230, 230, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 230, 0, 0, 0, 0, 0, 0, 230, 230, + 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, + 230, 230, 230, 233, 0, 0, 0, 0, 0, 0, + 233, 233, 233, 233, 233, 233, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 233, + + 233, 233, 233, 233, 233, 236, 236, 236, 236, 236, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 236, 0, 0, 0, 0, 0, + 0, 236, 236, 236, 236, 236, 236, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 236, 236, 236, 236, 236, 236, 243, 0, 0, 0, + 0, 0, 0, 243, 243, 243, 243, 243, 243, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 243, 243, 243, 243, 243, 243, 244, 244, + 244, 244, 244, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 244, 0, 0, + 0, 0, 0, 0, 244, 244, 244, 244, 244, 244, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 244, 244, 244, 244, 244, 244, 255, + 255, 255, 255, 255, 0, 255, 0, 0, 0, 0, + 255, 255, 255, 0, 0, 0, 0, 0, 255, 0, + 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, + + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 0, 0, 255, 255, 255, 255, 255, 255, + 256, 0, 0, 0, 0, 0, 0, 256, 256, 256, + 256, 256, 256, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 256, 256, 256, 256, + 256, 256, 258, 258, 258, 258, 258, 0, 258, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 258, 0, 0, 0, 0, 0, 0, 258, 258, + + 258, 258, 258, 258, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 258, 0, 0, 258, 258, 258, + 258, 258, 258, 260, 0, 0, 0, 0, 0, 0, + 260, 260, 260, 260, 260, 260, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 260, 0, 0, 260, + 260, 260, 260, 260, 260, 261, 261, 261, 261, 261, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 261, 0, 0, 0, 0, 0, + + 0, 261, 261, 261, 261, 261, 261, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 261, 0, 0, + 261, 261, 261, 261, 261, 261, 262, 262, 262, 262, + 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, + 0, 0, 262, 262, 262, 262, 262, 262, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 262, 262, 262, 262, 262, 262, 263, 263, 263, + + 263, 263, 0, 0, 0, 0, 0, 0, 263, 0, + 0, 0, 0, 0, 0, 0, 263, 0, 0, 0, + 0, 0, 0, 263, 263, 263, 263, 263, 263, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, + 0, 0, 263, 263, 263, 263, 263, 263, 264, 264, + 264, 264, 264, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 264, 0, 0, + 0, 0, 0, 0, 264, 264, 264, 264, 264, 264, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 264, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 264, 264, 264, 264, 264, 264, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 264, 265, 265, 265, 265, 265, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 265, 0, 0, 0, 0, 0, 0, 265, 265, + 265, 265, 265, 265, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 265, 265, 265, + 265, 265, 265, 266, 0, 0, 0, 0, 0, 0, + + 266, 266, 266, 266, 266, 266, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 266, + 266, 266, 266, 266, 266, 267, 267, 267, 267, 267, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 267, 0, 0, 0, 0, 0, + 0, 267, 267, 267, 267, 267, 267, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 267, 267, 267, 267, 267, 267, 269, 269, 269, 269, + + 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 269, 0, 0, 0, 0, + 0, 0, 269, 269, 269, 269, 269, 269, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 269, 269, 269, 269, 269, 269, 275, 0, 0, + 0, 0, 0, 0, 275, 275, 275, 275, 275, 275, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 275, 275, 275, 275, 275, 275, 276, + + 276, 276, 276, 276, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 276, 0, + 0, 0, 0, 0, 0, 276, 276, 276, 276, 276, + 276, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 276, 276, 276, 276, 276, 276, + 286, 286, 286, 286, 0, 0, 286, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 286, + 0, 0, 0, 0, 0, 0, 286, 286, 286, 286, + 286, 286, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 286, 0, 0, 286, 286, 286, 286, 286, + 286, 288, 288, 288, 288, 0, 0, 0, 0, 0, + 0, 0, 288, 0, 0, 0, 0, 0, 0, 0, + 288, 0, 0, 0, 0, 0, 0, 288, 288, 288, + 288, 288, 288, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 288, 0, 0, 288, 288, 288, 288, + 288, 288, 293, 293, 293, 293, 293, 0, 0, 0, + 0, 0, 0, 0, 0, 293, 0, 0, 0, 0, + + 0, 293, 0, 0, 0, 0, 0, 0, 293, 293, + 293, 293, 293, 293, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 293, 0, 0, 293, 293, 293, + 293, 293, 293, 294, 294, 294, 294, 294, 0, 294, + 0, 0, 0, 0, 294, 294, 294, 0, 0, 0, + 0, 0, 294, 0, 0, 0, 0, 0, 0, 294, + 294, 294, 294, 294, 294, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 294, 0, 0, 294, 294, + + 294, 294, 294, 294, 295, 0, 0, 0, 0, 0, + 0, 295, 295, 295, 295, 295, 295, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 295, 295, 295, 295, 295, 295, 297, 297, 297, 297, + 297, 0, 297, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 297, 0, 0, 0, 0, + 0, 0, 297, 297, 297, 297, 297, 297, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 297, 0, + + 0, 297, 297, 297, 297, 297, 297, 300, 300, 300, + 300, 300, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 300, 0, 0, 0, + 0, 0, 0, 300, 300, 300, 300, 300, 300, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 300, + 0, 0, 300, 300, 300, 300, 300, 300, 301, 301, + 301, 301, 301, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 301, 0, 0, + 0, 0, 0, 0, 301, 301, 301, 301, 301, 301, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 301, 301, 301, 301, 301, 301, 302, + 302, 302, 302, 302, 0, 0, 0, 0, 0, 0, + 302, 0, 0, 0, 0, 0, 0, 0, 302, 0, + 0, 0, 0, 0, 0, 302, 302, 302, 302, 302, + 302, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 302, 0, 0, 302, 302, 302, 302, 302, 302, + 303, 303, 303, 303, 303, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 303, 0, 0, 303, + 0, 0, 0, 0, 0, 0, 303, 303, 303, 303, + 303, 303, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 303, 303, 303, 303, 303, + 303, 304, 304, 304, 304, 304, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 304, 0, 0, 0, 0, 0, 0, 304, 304, 304, + 304, 304, 304, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 304, 304, 304, 304, + 304, 304, 305, 305, 305, 305, 305, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 305, 0, 0, 0, 0, 0, 0, 305, 305, + 305, 305, 305, 305, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 305, 305, 305, + 305, 305, 305, 307, 307, 307, 307, 307, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 307, 0, 0, 0, 0, 0, 0, 307, + + 307, 307, 307, 307, 307, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 307, 307, + 307, 307, 307, 307, 312, 0, 0, 0, 0, 0, + 0, 312, 312, 312, 312, 312, 312, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 312, 312, 312, 312, 312, 312, 313, 313, 313, 313, + 313, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 313, 0, 0, 0, 0, + + 0, 0, 313, 313, 313, 313, 313, 313, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 313, 313, 313, 313, 313, 313, 326, 326, 326, + 326, 326, 0, 326, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, + 0, 0, 0, 326, 326, 326, 326, 326, 326, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 326, + 0, 0, 326, 326, 326, 326, 326, 326, 327, 327, + + 327, 327, 0, 0, 327, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 327, 0, 0, + 0, 0, 0, 0, 327, 327, 327, 327, 327, 327, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 327, 0, 0, 327, 327, 327, 327, 327, 327, 331, + 331, 331, 331, 331, 0, 0, 0, 0, 0, 0, + 331, 0, 0, 0, 0, 0, 0, 0, 331, 0, + 0, 0, 0, 0, 0, 331, 331, 331, 331, 331, + 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 331, 0, 0, 331, 331, 331, 331, 331, 331, + 332, 332, 332, 332, 0, 0, 0, 0, 0, 0, + 0, 332, 0, 0, 0, 0, 0, 0, 0, 332, + 0, 0, 0, 0, 0, 0, 332, 332, 332, 332, + 332, 332, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 332, 0, 0, 332, 332, 332, 332, 332, + 332, 333, 333, 333, 333, 333, 0, 0, 0, 0, + 0, 0, 0, 0, 333, 0, 0, 0, 0, 0, + + 333, 0, 0, 0, 0, 0, 0, 333, 333, 333, + 333, 333, 333, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 333, 0, 0, 333, 333, 333, 333, + 333, 333, 337, 0, 0, 0, 0, 0, 0, 337, + 337, 337, 337, 337, 337, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 337, 337, + 337, 337, 337, 337, 338, 0, 0, 0, 0, 0, + 0, 338, 338, 338, 338, 338, 338, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 338, 338, 338, 338, 338, 338, 341, 0, 0, 0, + 0, 0, 0, 341, 341, 341, 341, 341, 341, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 341, 341, 341, 341, 341, 341, 342, 342, + 342, 342, 342, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 342, 0, 0, + 0, 0, 0, 0, 342, 342, 342, 342, 342, 342, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 342, 342, 342, 342, 342, 342, 344, + 344, 344, 344, 344, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 344, 0, + 0, 0, 0, 0, 0, 344, 344, 344, 344, 344, + 344, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 344, 344, 344, 344, 344, 344, + 361, 0, 0, 0, 0, 0, 0, 361, 361, 361, + + 361, 361, 361, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 361, 361, 361, 361, + 361, 361, 365, 0, 0, 0, 0, 0, 0, 365, + 365, 365, 365, 365, 365, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 365, 365, + 365, 365, 365, 365, 366, 366, 366, 366, 366, 0, + 0, 0, 0, 0, 0, 0, 0, 366, 0, 0, + 0, 0, 0, 366, 0, 0, 0, 0, 0, 0, + + 366, 366, 366, 366, 366, 366, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 366, 0, 0, 366, + 366, 366, 366, 366, 366, 371, 0, 0, 0, 0, + 0, 0, 371, 0, 371, 0, 0, 0, 0, 371, + 371, 0, 0, 371, 0, 0, 0, 0, 371, 0, + 0, 0, 0, 0, 371, 0, 0, 0, 0, 0, + 371, 0, 371, 0, 0, 0, 0, 371, 371, 0, + 0, 371, 376, 0, 0, 0, 0, 0, 0, 376, + 376, 376, 376, 376, 376, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 376, 376, + 376, 376, 376, 376, 377, 0, 0, 0, 0, 0, + 0, 377, 377, 377, 377, 377, 377, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 377, 377, 377, 377, 377, 377, 378, 0, 0, 0, + 0, 0, 0, 378, 378, 378, 378, 378, 378, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 378, 378, 378, 378, 378, 378, 390, 0, + 0, 0, 0, 0, 0, 390, 390, 390, 390, 390, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 390, 390, 390, 390, 390, 390, + 391, 0, 0, 0, 0, 0, 0, 391, 391, 391, + 391, 391, 391, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 391, 391, 391, 391, + 391, 391, 392, 0, 0, 0, 0, 0, 0, 392, + + 392, 392, 392, 392, 392, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 392, 392, + 392, 392, 392, 392, 400, 0, 0, 0, 0, 0, + 0, 400, 400, 400, 400, 400, 400, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 400, 400, 400, 400, 400, 400, 401, 0, 0, 0, + 0, 0, 0, 401, 401, 401, 401, 401, 401, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 401, 401, 401, 401, 401, 401, 417, 0, + 0, 0, 0, 0, 0, 417, 417, 417, 417, 417, + 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 417, 417, 417, 417, 417, 417, + 429, 0, 0, 0, 0, 0, 0, 429, 429, 429, + 429, 429, 429, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 429, 429, 429, 429, + + 429, 429, 431, 431, 431, 431, 431, 0, 0, 0, + 0, 0, 0, 0, 0, 431, 0, 0, 0, 0, + 0, 431, 0, 0, 0, 0, 0, 0, 431, 431, + 431, 431, 431, 431, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 431, 0, 0, 431, 431, 431, + 431, 431, 431, 440, 440, 440, 440, 440, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 440, 0, 0, 0, 0, 0, 0, 440, + 440, 440, 440, 440, 440, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 440, 440, + 440, 440, 440, 440, 442, 0, 0, 0, 0, 0, + 0, 442, 442, 442, 442, 442, 442, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 442, 442, 442, 442, 442, 442, 449, 0, 0, 0, + 0, 0, 0, 449, 449, 449, 449, 449, 449, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 449, 449, 449, 449, 449, 449, 450, 0, + 0, 0, 0, 0, 0, 450, 450, 450, 450, 450, + 450, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 450, 450, 450, 450, 450, 450, + 455, 0, 0, 0, 0, 0, 0, 455, 455, 455, + 455, 455, 455, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 455, 455, 455, 455, + 455, 455, 456, 0, 0, 0, 0, 0, 0, 456, + + 456, 456, 456, 456, 456, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 456, 456, + 456, 456, 456, 456, 461, 0, 0, 0, 0, 0, + 0, 461, 461, 461, 461, 461, 461, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 461, 461, 461, 461, 461, 461, 462, 0, 0, 0, + 0, 0, 0, 462, 462, 462, 462, 462, 462, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 462, 462, 462, 462, 462, 462, 467, 0, + 0, 0, 0, 0, 0, 467, 467, 467, 467, 467, + 467, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 467, 467, 467, 467, 467, 467, + 482, 0, 0, 482, 482, 482, 482, 482, 482, 482, + 482, 482, 482, 483, 483, 0, 483, 483, 484, 0, + 0, 484, 484, 484, 484, 484, 484, 484, 484, 484, + 484, 485, 485, 0, 485, 485, 486, 0, 0, 486, + + 486, 487, 0, 487, 487, 0, 487, 487, 488, 488, + 488, 488, 488, 488, 488, 488, 488, 488, 489, 489, + 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, + 489, 491, 491, 0, 491, 491, 492, 492, 492, 492, + 492, 492, 492, 492, 492, 492, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 494, - 494, 495, 495, 495, 495, 495, 495, 495, 495, 495, - 496, 496, 0, 496, 496, 497, 497, 497, 497, 497, - - 497, 497, 497, 497, 498, 498, 0, 498, 498, 499, - 499, 499, 499, 499, 499, 499, 499, 499, 500, 500, - 500, 500, 500, 500, 500, 500, 500, 501, 501, 501, - 501, 501, 501, 501, 501, 501, 501, 501, 501, 502, - 502, 502, 502, 502, 502, 502, 502, 502, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 504, 504, 504, - 0, 504, 505, 505, 505, 505, 505, 505, 505, 505, - 505, 505, 505, 505, 506, 506, 506, 0, 506, 507, - 507, 507, 507, 0, 507, 507, 507, 507, 507, 507, - 508, 508, 508, 0, 508, 509, 0, 509, 509, 509, - - 509, 509, 509, 509, 509, 509, 510, 0, 510, 510, - 510, 510, 510, 510, 510, 510, 510, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 512, 512, - 512, 0, 512, 513, 513, 513, 513, 513, 513, 513, - 513, 513, 513, 513, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 515, 515, 515, 0, 515, - 516, 516, 516, 0, 0, 0, 516, 0, 0, 516, - 516, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 518, 518, 518, 0, 0, 518, 518, 518, 0, 518, - 518, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, + 494, 494, 494, 496, 496, 0, 496, 496, 497, 497, + 497, 497, 497, 497, 497, 497, 497, 497, 498, 498, + 0, 498, 498, 499, 499, 499, 499, 499, 499, 499, + + 499, 499, 499, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 501, 501, 501, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 504, 504, 0, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 505, + 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, + 505, 505, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 507, 507, 507, 507, + 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, + 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, + 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, + + 510, 510, 510, 510, 511, 0, 0, 511, 511, 511, + 511, 511, 511, 511, 511, 511, 511, 513, 513, 513, + 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, + 513, 515, 515, 515, 515, 516, 516, 516, 516, 516, + 516, 0, 516, 516, 516, 516, 516, 516, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 521, 521, 521, 521, 522, + 522, 522, 522, 522, 522, 0, 522, 522, 522, 522, + 522, 522, 523, 0, 0, 523, 523, 523, 523, 523, + + 523, 523, 523, 523, 523, 524, 0, 0, 524, 524, + 524, 524, 524, 524, 524, 524, 524, 524, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 528, 528, 0, 528, 528, 529, + 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, + 529, 529, 531, 531, 531, 531, 532, 532, 532, 532, + 532, 532, 532, 532, 532, 532, 532, 532, 532, 533, + 0, 0, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 534, 534, 534, 534, 534, 534, 534, 534, + + 534, 534, 534, 534, 534, 535, 535, 535, 535, 535, + 0, 0, 535, 535, 535, 535, 535, 535, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 538, 538, 0, 538, 538, 539, + 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, + 539, 539, 541, 541, 541, 541, 542, 542, 0, 542, + 542, 542, 542, 542, 542, 542, 542, 542, 542, 543, + 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, + 543, 543, 544, 544, 0, 544, 544, 544, 544, 544, + + 544, 544, 544, 544, 544, 545, 545, 545, 545, 545, + 545, 545, 545, 545, 545, 545, 545, 545, 546, 546, + 546, 546, 546, 0, 0, 546, 546, 546, 546, 546, + 546, 549, 549, 549, 549, 0, 0, 0, 0, 549, + 0, 0, 549, 549, 550, 550, 550, 550, 0, 0, + 0, 550, 550, 550, 0, 550, 550, 551, 551, 551, + 551, 551, 551, 551, 551, 551, 551, 552, 552, 552, + 552, 552, 552, 552, 552, 552, 552, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, @@ -833,38 +1775,35 @@ static yyconst short int yy_chk[2462] = 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481 + 481, 481, 481 } ; #line 1 "<stdin>" -#define INITIAL 0 -#define YY_STACK_USED 1 -#define mediaquery 1 YY_DECL - { +{ register yy_state_type yy_current_state; register UChar *yy_cp, *yy_bp; register int yy_act; while ( 1 ) /* loops until end-of-file is reached */ { - yy_cp = yy_c_buf_p; + yy_cp = (yy_c_buf_p); /* Support of yytext. */ - *yy_cp = yy_hold_char; + *yy_cp = (yy_hold_char); /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; - yy_current_state = yy_start; + yy_current_state = (yy_start); do { register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; if ( yy_accept[yy_current_state] ) { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { @@ -875,37 +1814,37 @@ YY_DECL yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 2401 ); + while ( yy_base[yy_current_state] != 6578 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) { /* have to back up */ - yy_cp = yy_last_accepting_cpos; - yy_current_state = yy_last_accepting_state; + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); yy_act = yy_accept[yy_current_state]; } YY_DO_BEFORE_ACTION; - - switch ( yy_act ) { /* beginning of action switch */ case 0: /* must back up */ /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = yy_hold_char; - yy_cp = yy_last_accepting_cpos; - yy_current_state = yy_last_accepting_state; + *yy_cp = (yy_hold_char); + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); goto yy_find_action; case 1: +/* rule 1 can match eol */ YY_RULE_SETUP #line 31 "<stdin>" {countLines(); /* ignore comments */ } YY_BREAK case 2: +/* rule 2 can match eol */ YY_RULE_SETUP #line 33 "<stdin>" {countLines(); yyTok = WHITESPACE; return yyTok;} @@ -966,11 +1905,13 @@ YY_RULE_SETUP {BEGIN(mediaquery); yyTok = VARIABLES_FOR; return yyTok; } YY_BREAK case 14: +/* rule 14 can match eol */ YY_RULE_SETUP #line 47 "<stdin>" {yyTok = STRING; return yyTok;} YY_BREAK case 15: +/* rule 15 can match eol */ YY_RULE_SETUP #line 48 "<stdin>" {yyTok = IDENT; return yyTok;} @@ -986,6 +1927,7 @@ YY_RULE_SETUP {yyTok = HEX; return yyTok;} YY_BREAK case 18: +/* rule 18 can match eol */ YY_RULE_SETUP #line 52 "<stdin>" {yyTok = IDSEL; return yyTok;} @@ -1071,11 +2013,13 @@ YY_RULE_SETUP {yyTok = WEBKIT_KEYFRAME_RULE_SYM; return yyTok; } YY_BREAK case 35: +/* rule 35 can match eol */ YY_RULE_SETUP #line 71 "<stdin>" {yyTok = ATKEYWORD; return yyTok; } YY_BREAK case 36: +/* rule 36 can match eol */ YY_RULE_SETUP #line 73 "<stdin>" {yyTok = IMPORTANT_SYM; return yyTok;} @@ -1171,6 +2115,7 @@ YY_RULE_SETUP {yyTok = KHERZ; return yyTok;} YY_BREAK case 55: +/* rule 55 can match eol */ YY_RULE_SETUP #line 93 "<stdin>" {yyTok = DIMEN; return yyTok;} @@ -1196,21 +2141,25 @@ YY_RULE_SETUP {yyTok = NOTFUNCTION; return yyTok;} YY_BREAK case 60: +/* rule 60 can match eol */ YY_RULE_SETUP #line 99 "<stdin>" {yyTok = URI; return yyTok;} YY_BREAK case 61: +/* rule 61 can match eol */ YY_RULE_SETUP #line 100 "<stdin>" {yyTok = URI; return yyTok;} YY_BREAK case 62: +/* rule 62 can match eol */ YY_RULE_SETUP #line 101 "<stdin>" { yyTok = VARCALL; return yyTok; } YY_BREAK case 63: +/* rule 63 can match eol */ YY_RULE_SETUP #line 102 "<stdin>" {yyTok = FUNCTION; return yyTok;} @@ -1242,6 +2191,7 @@ YY_RULE_SETUP #line 111 "<stdin>" ECHO; YY_BREAK +#line 2746 "<stdout>" case YY_END_OF_BUFFER: yy_c_buf_p = yy_cp - 1; yy_cp = yy_c_buf_p; @@ -1255,4 +2205,4 @@ case YY_STATE_EOF(forkeyword): "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ - } /* end of yylex */ +} /* end of yylex */ diff --git a/src/3rdparty/webkit/WebCore/history/qt/HistoryItemQt.cpp b/src/3rdparty/webkit/WebCore/history/qt/HistoryItemQt.cpp index 8bbd233..c5fb069 100644 --- a/src/3rdparty/webkit/WebCore/history/qt/HistoryItemQt.cpp +++ b/src/3rdparty/webkit/WebCore/history/qt/HistoryItemQt.cpp @@ -25,8 +25,9 @@ bool WebCore::HistoryItem::restoreState(QDataStream& in, int version) { - // we support up to version 2 - if (version > 2) + // we only support version 1 for now + + if (version != 1) return false; WebCore::String url; @@ -47,7 +48,6 @@ bool WebCore::HistoryItem::restoreState(QDataStream& in, int version) WebCore::IntPoint scrollPoint; WTF::Vector<int> weeklyVisitCounts; WTF::Vector<int> dailyVisitCounts; - long long documentSequenceNumber; // bool loadFormdata; // WebCore::String formContentType; // WTF::Vector<char> formData; @@ -79,12 +79,6 @@ bool WebCore::HistoryItem::restoreState(QDataStream& in, int version) setTitle(title); setAlternateTitle(altTitle); - if (version > 1) - { - in >> documentSequenceNumber; - setDocumentSequenceNumber(documentSequenceNumber); - } - // at the end load userData in >> validUserData; if (validUserData) { @@ -98,16 +92,15 @@ bool WebCore::HistoryItem::restoreState(QDataStream& in, int version) QDataStream& WebCore::HistoryItem::saveState(QDataStream& out, int version) const { + // we only support version 1 for now. + if (version != 1) + return out; + out << urlString() << title() << alternateTitle() << lastVisitedTime(); out << originalURLString() << referrer() << target() << parent(); out << lastVisitWasHTTPNonGet() << lastVisitWasFailure() << isTargetItem(); out << visitCount() << documentState() << scrollPoint(); out << dailyVisitCounts() << weeklyVisitCounts(); - - // Since version 2 - Q_ASSERT_X(version > 1, "HistoryItem::saveState()", "Stream version should be greater than 1"); - out << documentSequenceNumber(); - /*if (m_formData) { out << true; out << formContentType(); diff --git a/src/3rdparty/webkit/WebCore/html/HTMLInputElement.cpp b/src/3rdparty/webkit/WebCore/html/HTMLInputElement.cpp index 6a214ab..4c5a93e 100644 --- a/src/3rdparty/webkit/WebCore/html/HTMLInputElement.cpp +++ b/src/3rdparty/webkit/WebCore/html/HTMLInputElement.cpp @@ -740,7 +740,11 @@ void HTMLInputElement::aboutToUnload() bool HTMLInputElement::shouldUseInputMethod() const { - return m_type == TEXT || m_type == SEARCH || m_type == ISINDEX; + // The reason IME's are disabled for the password field is because IMEs + // can access the underlying password and display it in clear text -- + // e.g. you can use it to access the stored password for any site + // with only trivial effort. + return isTextField() && inputType() != PASSWORD; } void HTMLInputElement::handleFocusEvent() diff --git a/src/3rdparty/webkit/WebCore/html/HTMLMetaElement.cpp b/src/3rdparty/webkit/WebCore/html/HTMLMetaElement.cpp index cf667ca..6c49323 100644 --- a/src/3rdparty/webkit/WebCore/html/HTMLMetaElement.cpp +++ b/src/3rdparty/webkit/WebCore/html/HTMLMetaElement.cpp @@ -63,9 +63,15 @@ void HTMLMetaElement::insertedIntoDocument() void HTMLMetaElement::process() { + if (!inDocument() || m_content.isNull()) + return; + + if (equalIgnoringCase(name(), "viewport")) + document()->processViewport(m_content); + // Get the document to process the tag, but only if we're actually part of DOM tree (changing a meta tag while // it's not in the tree shouldn't have any effect on the document) - if (inDocument() && !m_equiv.isNull() && !m_content.isNull()) + if (!m_equiv.isNull()) document()->processHttpEquiv(m_equiv, m_content); } diff --git a/src/3rdparty/webkit/WebCore/loader/FrameLoader.cpp b/src/3rdparty/webkit/WebCore/loader/FrameLoader.cpp index 0323e97..316caab 100644 --- a/src/3rdparty/webkit/WebCore/loader/FrameLoader.cpp +++ b/src/3rdparty/webkit/WebCore/loader/FrameLoader.cpp @@ -1274,7 +1274,11 @@ bool FrameLoader::requestObject(RenderEmbeddedObject* renderer, const String& ur bool useFallback; if (shouldUsePlugin(completedURL, mimeType, renderer->hasFallbackContent(), useFallback)) { Settings* settings = m_frame->settings(); - if (!allowPlugins(AboutToInstantiatePlugin) + if ((!allowPlugins(AboutToInstantiatePlugin) + // Application plugins are plugins implemented by the user agent, for example Qt plugins, + // as opposed to third-party code such as flash. The user agent decides whether or not they are + // permitted, rather than WebKit. + && !MIMETypeRegistry::isApplicationPluginMIMEType(mimeType)) || (!settings->isJavaEnabled() && MIMETypeRegistry::isJavaAppletMIMEType(mimeType))) return false; if (isDocumentSandboxed(SandboxPlugins)) diff --git a/src/3rdparty/webkit/WebCore/page/ChromeClient.h b/src/3rdparty/webkit/WebCore/page/ChromeClient.h index 34e2893..0bfdbaf 100644 --- a/src/3rdparty/webkit/WebCore/page/ChromeClient.h +++ b/src/3rdparty/webkit/WebCore/page/ChromeClient.h @@ -56,6 +56,7 @@ namespace WebCore { class Widget; struct FrameLoadRequest; + struct ViewportArguments; struct WindowFeatures; #if USE(ACCELERATED_COMPOSITING) @@ -145,6 +146,8 @@ namespace WebCore { virtual void setToolTip(const String&, TextDirection) = 0; + virtual void didReceiveViewportArguments(Frame*, const ViewportArguments&) const { } + virtual void print(Frame*) = 0; #if ENABLE(DATABASE) @@ -211,6 +214,9 @@ namespace WebCore { // Sets a flag to specify that the view needs to be updated, so we need // to do an eager layout before the drawing. virtual void scheduleCompositingLayerSync() = 0; + // Returns whether or not the client can render the composited layer, + // regardless of the settings. + virtual bool allowsAcceleratedCompositing() const { return true; } #endif virtual bool supportsFullscreenForNode(const Node*) { return false; } @@ -231,10 +237,11 @@ namespace WebCore { #endif #if ENABLE(WIDGETS_10_SUPPORT) - virtual bool isDocked() { return false; } + virtual bool isWindowed() { return false; } virtual bool isFloating() { return false; } - virtual bool isApplication() { return false; } virtual bool isFullscreen() { return false; } + virtual bool isMaximized() { return false; } + virtual bool isMinimized() { return false; } #endif protected: diff --git a/src/3rdparty/webkit/WebCore/page/FocusController.cpp b/src/3rdparty/webkit/WebCore/page/FocusController.cpp index 089fb8f..fdd117b 100644 --- a/src/3rdparty/webkit/WebCore/page/FocusController.cpp +++ b/src/3rdparty/webkit/WebCore/page/FocusController.cpp @@ -341,51 +341,96 @@ bool FocusController::advanceFocusDirectionally(FocusDirection direction, Keyboa return true; } -static void updateFocusCandidateIfCloser(Node* focusedNode, Node* candidate, long long distance, FocusCandidate& closestFocusCandidate) +// FIXME: Make this method more modular, and simpler to understand and maintain. +static void updateFocusCandidateIfCloser(Node* focusedNode, const FocusCandidate& candidate, FocusCandidate& closest) { - // Bail out if |distance| is bigger than the current closest candidate. - if (distance >= closestFocusCandidate.distance) + bool sameDocument = candidate.document() == closest.document(); + if (sameDocument) { + if (closest.alignment > candidate.alignment + || (closest.parentAlignment && candidate.alignment > closest.parentAlignment)) + return; + } else if (closest.alignment > candidate.alignment + && (closest.parentAlignment && candidate.alignment > closest.parentAlignment)) return; - // If |focusedNode| and |candidate| are in the same document AND - // current |closestFocusCandidadte| is not in an {i}frame that is - // preferable to get focused. - if (focusedNode->document() == candidate->document() - && distance < closestFocusCandidate.parentDistance) { - closestFocusCandidate.node = candidate; - closestFocusCandidate.distance = distance; - closestFocusCandidate.parentDistance = maxDistance(); - } else if (focusedNode->document() != candidate->document()) { - // If the |focusedNode| is in an inner document and the |candidate| is - // in a different document, we only consider to change focus if there is - // not another already good focusable candidate in the same document as - // |focusedNode|. - if (!((isInRootDocument(candidate) && !isInRootDocument(focusedNode)) - && focusedNode->document() == closestFocusCandidate.document())) { - closestFocusCandidate.node = candidate; - closestFocusCandidate.distance = distance; - } + if (candidate.alignment != None + || (closest.parentAlignment >= candidate.alignment + && closest.document() == candidate.document())) { + + // If we are now in an higher precedent case, lets reset the current closest's + // distance so we force it to be bigger than any result we will get from + // spatialDistance(). + if (closest.alignment < candidate.alignment + && closest.parentAlignment < candidate.alignment) + closest.distance = maxDistance(); + + closest.alignment = candidate.alignment; + } + + // Bail out if candidate's distance is larger than that of the closest candidate. + if (candidate.distance >= closest.distance) + return; + + if (closest.isNull()) { + closest = candidate; + return; + } + + // If the focused node and the candadate are in the same document and current + // closest candidate is not in an {i}frame that is preferable to get focused ... + if (focusedNode->document() == candidate.document() + && candidate.distance < closest.parentDistance) + closest = candidate; + else if (focusedNode->document() != candidate.document()) { + // If the focusedNode is in an inner document and candidate is in a + // different document, we only consider to change focus if there is not + // another already good focusable candidate in the same document as focusedNode. + if (!((isInRootDocument(candidate.node) && !isInRootDocument(focusedNode)) + && focusedNode->document() == closest.document())) + closest = candidate; } } -void FocusController::findFocusableNodeInDirection(Document* document, Node* focusedNode, FocusDirection direction, KeyboardEvent* event, FocusCandidate& closestFocusCandidate) +void FocusController::findFocusableNodeInDirection(Document* document, Node* focusedNode, + FocusDirection direction, KeyboardEvent* event, + FocusCandidate& closestFocusCandidate, + const FocusCandidate& candidateParent) { ASSERT(document); + ASSERT(candidateParent.isNull() || static_cast<HTMLFrameOwnerElement*>(candidateParent.node)); - // Walk all the child nodes and update focusCandidate if we find a nearer node. + // Walk all the child nodes and update closestFocusCandidate if we find a nearer node. for (Node* candidate = document->firstChild(); candidate; candidate = candidate->traverseNextNode()) { // Inner documents case. + if (candidate->isFrameOwnerElement()) deepFindFocusableNodeInDirection(focusedNode, candidate, direction, event, closestFocusCandidate); else if (candidate != focusedNode && candidate->isKeyboardFocusable(event)) { - long long distance = distanceInDirection(focusedNode, candidate, - direction, closestFocusCandidate); - updateFocusCandidateIfCloser(focusedNode, candidate, distance, closestFocusCandidate); + FocusCandidate currentFocusCandidate(candidate); + + // Get distance and alignment from current candidate. + distanceDataForNode(direction, focusedNode, currentFocusCandidate); + + // Bail out if distance is maximum. + if (currentFocusCandidate.distance == maxDistance()) + continue; + + // If candidateParent is not null, it means that we are in a recursive call + // from deepFineFocusableNodeInDirection (i.e. processing an element in an iframe), + // and holds the distance and alignment data of the iframe element itself. + if (!candidateParent.isNull()) { + currentFocusCandidate.parentAlignment = candidateParent.alignment; + currentFocusCandidate.parentDistance = candidateParent.distance; + } + + updateFocusCandidateIfCloser(focusedNode, currentFocusCandidate, closestFocusCandidate); } } } -void FocusController::deepFindFocusableNodeInDirection(Node* focusedNode, Node* candidate, FocusDirection direction, KeyboardEvent* event, FocusCandidate& closestFocusCandidate) +void FocusController::deepFindFocusableNodeInDirection(Node* focusedNode, Node* candidate, + FocusDirection direction, KeyboardEvent* event, + FocusCandidate& closestFocusCandidate) { HTMLFrameOwnerElement* owner = static_cast<HTMLFrameOwnerElement*>(candidate); if (!owner->contentFrame()) @@ -400,20 +445,12 @@ void FocusController::deepFindFocusableNodeInDirection(Node* focusedNode, Node* else { // Check if the current {i}frame element itself is a good candidate // to move focus to. If it is, then we traverse its inner nodes. - // Lets pass a copy of the best candidate, to not get fooled by a - // frame without focusable elements. - FocusCandidate focusCandidateCopy = closestFocusCandidate; - long long distance = distanceInDirection(focusedNode, candidate, direction, focusCandidateCopy); - if (distance < focusCandidateCopy.distance) { - focusCandidateCopy.parentAlignment = focusCandidateCopy.alignment; - focusCandidateCopy.parentDistance = distance; - - findFocusableNodeInDirection(innerDocument, focusedNode, direction, event, focusCandidateCopy); - - // If we really have an inner closer focus candidate node, take it. - if (closestFocusCandidate.node != focusCandidateCopy.node) - closestFocusCandidate = focusCandidateCopy; - } + FocusCandidate candidateParent = FocusCandidate(candidate); + distanceDataForNode(direction, focusedNode, candidateParent); + + // FIXME: Consider alignment? + if (candidateParent.distance < closestFocusCandidate.distance) + findFocusableNodeInDirection(innerDocument, focusedNode, direction, event, closestFocusCandidate, candidateParent); } } diff --git a/src/3rdparty/webkit/WebCore/page/FocusController.h b/src/3rdparty/webkit/WebCore/page/FocusController.h index 75591c7..dfa3780 100644 --- a/src/3rdparty/webkit/WebCore/page/FocusController.h +++ b/src/3rdparty/webkit/WebCore/page/FocusController.h @@ -27,6 +27,7 @@ #define FocusController_h #include "FocusDirection.h" +#include "SpatialNavigation.h" #include <wtf/Forward.h> #include <wtf/Noncopyable.h> #include <wtf/RefPtr.h> @@ -38,7 +39,6 @@ class Frame; class KeyboardEvent; class Node; class Page; -struct FocusCandidate; class FocusController : public Noncopyable { public: @@ -63,7 +63,8 @@ private: bool advanceFocusDirectionally(FocusDirection, KeyboardEvent*); bool advanceFocusInDocumentOrder(FocusDirection, KeyboardEvent*, bool initialFocus); - void findFocusableNodeInDirection(Document*, Node*, FocusDirection, KeyboardEvent*, FocusCandidate&); + void findFocusableNodeInDirection(Document*, Node*, FocusDirection, KeyboardEvent*, FocusCandidate& closestFocusCandidate, + const FocusCandidate& parentCandidate = FocusCandidate()); void deepFindFocusableNodeInDirection(Node*, Node*, FocusDirection, KeyboardEvent*, FocusCandidate&); Page* m_page; diff --git a/src/3rdparty/webkit/WebCore/page/FrameView.cpp b/src/3rdparty/webkit/WebCore/page/FrameView.cpp index 45764de..39c92de 100644 --- a/src/3rdparty/webkit/WebCore/page/FrameView.cpp +++ b/src/3rdparty/webkit/WebCore/page/FrameView.cpp @@ -1067,6 +1067,7 @@ void FrameView::scrollPositionChanged() if (!m_nestedLayoutCount) { if (RenderView* root = m_frame->contentRenderer()) { root->updateWidgetPositions(); + root->layer()->updateRepaintRectsAfterScroll(); #if USE(ACCELERATED_COMPOSITING) if (root->usesCompositing()) root->compositor()->updateCompositingLayers(CompositingUpdateOnScroll); diff --git a/src/3rdparty/webkit/WebCore/page/SpatialNavigation.cpp b/src/3rdparty/webkit/WebCore/page/SpatialNavigation.cpp index 86c9c5d..890eacd 100644 --- a/src/3rdparty/webkit/WebCore/page/SpatialNavigation.cpp +++ b/src/3rdparty/webkit/WebCore/page/SpatialNavigation.cpp @@ -46,16 +46,21 @@ static bool areRectsFullyAligned(FocusDirection, const IntRect&, const IntRect&) static bool areRectsPartiallyAligned(FocusDirection, const IntRect&, const IntRect&); static bool isRectInDirection(FocusDirection, const IntRect&, const IntRect&); static void deflateIfOverlapped(IntRect&, IntRect&); +static bool checkNegativeCoordsForNode(Node*, const IntRect&); -long long distanceInDirection(Node* start, Node* dest, FocusDirection direction, FocusCandidate& candidate) +void distanceDataForNode(FocusDirection direction, Node* start, FocusCandidate& candidate) { RenderObject* startRender = start->renderer(); - if (!startRender) - return maxDistance(); + if (!startRender) { + candidate.distance = maxDistance(); + return; + } - RenderObject* destRender = dest->renderer(); - if (!destRender) - return maxDistance(); + RenderObject* destRender = candidate.node->renderer(); + if (!destRender) { + candidate.distance = maxDistance(); + return; + } IntRect curRect = renderRectRelativeToRootDocument(startRender); IntRect targetRect = renderRectRelativeToRootDocument(destRender); @@ -64,40 +69,34 @@ long long distanceInDirection(Node* start, Node* dest, FocusDirection direction, // deflate both. deflateIfOverlapped(curRect, targetRect); + // If empty rects or negative width or height, bail out. if (curRect.isEmpty() || targetRect.isEmpty() - || targetRect.x() < 0 || targetRect.y() < 0) - return maxDistance(); + || targetRect.width() <= 0 || targetRect.height() <= 0) { + candidate.distance = maxDistance(); + return; + } - if (!isRectInDirection(direction, curRect, targetRect)) - return maxDistance(); + // Negative coordinates can be used if node is scrolled up offscreen. + if (!checkNegativeCoordsForNode(start, curRect)) { + candidate.distance = maxDistance(); + return; + } + + if (!checkNegativeCoordsForNode(candidate.node, targetRect)) { + candidate.distance = maxDistance(); + return; + } + + if (!isRectInDirection(direction, curRect, targetRect)) { + candidate.distance = maxDistance(); + return; + } // The distance between two nodes is not to be considered alone when evaluating/looking // for the best focus candidate node. Alignment of rects can be also a good point to be // considered in order to make the algorithm to behavior in a more intuitive way. - RectsAlignment alignment = alignmentForRects(direction, curRect, targetRect); - - bool sameDocument = dest->document() == candidate.document(); - if (sameDocument) { - if (candidate.alignment > alignment || (candidate.parentAlignment && alignment > candidate.parentAlignment)) - return maxDistance(); - } else if (candidate.alignment > alignment && (candidate.parentAlignment && alignment > candidate.parentAlignment)) - return maxDistance(); - - // FIXME_tonikitoo: simplify the logic here ! - if (alignment != None - || (!candidate.isNull() && candidate.parentAlignment >= alignment - && candidate.document() == dest->document())) { - - // If we are now in an higher precedent case, lets reset the current |candidate|'s - // |distance| so we force it to be bigger than the result we will get from - // |spatialDistance| (see below). - if (candidate.alignment < alignment && candidate.parentAlignment < alignment) - candidate.distance = maxDistance(); - - candidate.alignment = alignment; - } - - return spatialDistance(direction, curRect, targetRect); + candidate.alignment = alignmentForRects(direction, curRect, targetRect); + candidate.distance = spatialDistance(direction, curRect, targetRect); } // FIXME: This function does not behave correctly with transformed frames. @@ -107,6 +106,11 @@ static IntRect renderRectRelativeToRootDocument(RenderObject* render) IntRect rect(render->absoluteClippedOverflowRect()); + if (rect.isEmpty()) { + Element* e = static_cast<Element*>(render->node()); + rect = e->getRect(); + } + // In cases when the |render|'s associated node is in a scrollable inner // document, we only consider its scrollOffset if it is not offscreen. Node* node = render->node(); @@ -432,6 +436,9 @@ bool hasOffscreenRect(Node* node) return true; IntRect rect(render->absoluteClippedOverflowRect()); + if (rect.isEmpty()) + return true; + return !containerViewportRect.intersects(rect); } @@ -500,4 +507,24 @@ static void deflateIfOverlapped(IntRect& a, IntRect& b) b.inflate(fudgeFactor); } +static bool checkNegativeCoordsForNode(Node* node, const IntRect& curRect) +{ + ASSERT(node || node->renderer()); + + if (curRect.x() > 0 && curRect.y() > 0) + return true; + + bool canBeScrolled = false; + + RenderObject* renderer = node->renderer(); + for (; renderer; renderer = renderer->parent()) { + if (renderer->isBox() && toRenderBox(renderer)->canBeScrolledAndHasScrollableArea()) { + canBeScrolled = true; + break; + } + } + + return canBeScrolled; +} + } // namespace WebCore diff --git a/src/3rdparty/webkit/WebCore/page/SpatialNavigation.h b/src/3rdparty/webkit/WebCore/page/SpatialNavigation.h index 7c183df..90ff1cf 100644 --- a/src/3rdparty/webkit/WebCore/page/SpatialNavigation.h +++ b/src/3rdparty/webkit/WebCore/page/SpatialNavigation.h @@ -118,7 +118,7 @@ struct FocusCandidate { RectsAlignment parentAlignment; }; -long long distanceInDirection(Node*, Node*, FocusDirection, FocusCandidate&); +void distanceDataForNode(FocusDirection direction, Node* start, FocusCandidate& candidate); bool scrollInDirection(Frame*, FocusDirection); void scrollIntoView(Element*); bool hasOffscreenRect(Node*); diff --git a/src/3rdparty/webkit/WebCore/page/qt/EventHandlerQt.cpp b/src/3rdparty/webkit/WebCore/page/qt/EventHandlerQt.cpp index 2fcce5b..5b24eae 100644 --- a/src/3rdparty/webkit/WebCore/page/qt/EventHandlerQt.cpp +++ b/src/3rdparty/webkit/WebCore/page/qt/EventHandlerQt.cpp @@ -51,7 +51,7 @@ #include "NotImplemented.h" QT_BEGIN_NAMESPACE -Q_DECL_IMPORT extern bool qt_tab_all_widgets; // from qapplication.cpp +Q_GUI_EXPORT extern bool qt_tab_all_widgets; // from qapplication.cpp QT_END_NAMESPACE namespace WebCore { diff --git a/src/3rdparty/webkit/WebCore/platform/Arena.h b/src/3rdparty/webkit/WebCore/platform/Arena.h index b6f6931..bc49307 100644 --- a/src/3rdparty/webkit/WebCore/platform/Arena.h +++ b/src/3rdparty/webkit/WebCore/platform/Arena.h @@ -44,7 +44,7 @@ namespace WebCore { -typedef unsigned long uword; +typedef uintptr_t uword; struct Arena { Arena* next; // next arena diff --git a/src/3rdparty/webkit/WebCore/platform/MIMETypeRegistry.h b/src/3rdparty/webkit/WebCore/platform/MIMETypeRegistry.h index 8801ac1..27c2c3a 100644 --- a/src/3rdparty/webkit/WebCore/platform/MIMETypeRegistry.h +++ b/src/3rdparty/webkit/WebCore/platform/MIMETypeRegistry.h @@ -67,6 +67,10 @@ public: // Check to see if a mime type is a valid Java applet mime type static bool isJavaAppletMIMEType(const String& mimeType); + // Check to see if a mime type is a plugin implemented by the + // browser (e.g. a Qt Plugin). + static bool isApplicationPluginMIMEType(const String& mimeType); + static HashSet<String>& getSupportedImageMIMETypes(); static HashSet<String>& getSupportedImageResourceMIMETypes(); static HashSet<String>& getSupportedImageMIMETypesForEncoding(); diff --git a/src/3rdparty/webkit/WebCore/platform/StaticConstructors.h b/src/3rdparty/webkit/WebCore/platform/StaticConstructors.h index c0a9a53..0d817a4df 100644 --- a/src/3rdparty/webkit/WebCore/platform/StaticConstructors.h +++ b/src/3rdparty/webkit/WebCore/platform/StaticConstructors.h @@ -51,7 +51,7 @@ #ifndef SKIP_STATIC_CONSTRUCTORS_ON_GCC // Define an global in the normal way. -#if COMPILER(MSVC7) +#if COMPILER(MSVC7_OR_LOWER) #define DEFINE_GLOBAL(type, name) \ const type name; #elif COMPILER(WINSCW) @@ -65,7 +65,7 @@ #else // Define an correctly-sized array of pointers to avoid static initialization. // Use an array of pointers instead of an array of char in case there is some alignment issue. -#if COMPILER(MSVC7) +#if COMPILER(MSVC7_OR_LOWER) #define DEFINE_GLOBAL(type, name) \ void * name[(sizeof(type) + sizeof(void *) - 1) / sizeof(void *)]; #elif COMPILER(WINSCW) diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontPlatformDataQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontPlatformDataQt.cpp index 0a1075f..0565deb 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontPlatformDataQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontPlatformDataQt.cpp @@ -58,6 +58,9 @@ FontPlatformData::FontPlatformData(const FontDescription& description, const Ato font.setLetterSpacing(QFont::AbsoluteSpacing, letterSpacing); const bool smallCaps = description.smallCaps(); font.setCapitalization(smallCaps ? QFont::SmallCaps : QFont::MixedCase); +#if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0) + font.setStyleStrategy(QFont::ForceIntegerMetrics); +#endif m_data->bold = font.bold(); m_data->size = font.pointSizeF(); diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp index fd75e34..1e92dcc 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp @@ -180,9 +180,7 @@ float Font::floatWidthForComplexText(const TextRun& run, HashSet<const SimpleFon String sanitized = Font::normalizeSpaces(String(run.characters(), run.length())); QString string = fromRawDataWithoutRef(sanitized); - QTextLayout layout(string, font()); - QTextLine line = setupLayout(&layout, run); - int w = int(line.naturalTextWidth()); + int w = QFontMetrics(font()).width(string); // WebKit expects us to ignore word spacing on the first character (as opposed to what Qt does) if (treatAsSpace(run[0])) w -= m_wordSpacing; diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp index 2913eef..1c4c275 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp @@ -32,15 +32,13 @@ #include <QtCore/qmetaobject.h> #include <QtCore/qset.h> #include <QtCore/qtimer.h> -#include <QtGui/qbitmap.h> #include <QtGui/qcolor.h> #include <QtGui/qgraphicseffect.h> #include <QtGui/qgraphicsitem.h> #include <QtGui/qgraphicsscene.h> -#include <QtGui/qmatrix4x4.h> #include <QtGui/qpainter.h> -#include <QtGui/qpalette.h> #include <QtGui/qpixmap.h> +#include <QtGui/qpixmapcache.h> #include <QtGui/qstyleoption.h> namespace WebCore { @@ -134,6 +132,8 @@ public: // the compositor lets us special-case images and colors, so we try to do so enum StaticContentType { HTMLContentType, PixmapContentType, ColorContentType, MediaContentType}; + const GraphicsLayerQtImpl* rootLayer() const; + GraphicsLayerQtImpl(GraphicsLayerQt* newLayer); virtual ~GraphicsLayerQtImpl(); @@ -142,28 +142,25 @@ public: virtual QRectF boundingRect() const; virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*); - // we manage transforms ourselves because transform-origin acts differently in webkit and in Qt + // We manage transforms ourselves because transform-origin acts differently in webkit and in Qt, and we need it as a fallback in case we encounter an un-invertible matrix void setBaseTransform(const TransformationMatrix&); - QTransform computeTransform(const TransformationMatrix& baseTransform) const; void updateTransform(); // let the compositor-API tell us which properties were changed void notifyChange(ChangeMask); + // actual rendering of the web-content into a QPixmap + // We prefer to use our own caching because it gives us a higher level of granularity than QGraphicsItem cache modes - + // sometimes we need to cache the contents even `though the item needs to be updated, e.g. when the background-color is changed. + // TODO: investigate if QGraphicsItem caching can be improved to support that out of the box. + QPixmap recache(const QRegion&); + // called when the compositor is ready for us to show the changes on screen // this is called indirectly from ChromeClientQt::setNeedsOneShotDrawingSynchronization // (meaning the sync would happen together with the next draw) // or ChromeClientQt::scheduleCompositingLayerSync (meaning the sync will happen ASAP) void flushChanges(bool recursive = true, bool forceTransformUpdate = false); - // optimization: when we have an animation running on an element with no contents, that has child-elements with contents, - // ALL of them have to have ItemCoordinateCache and not DeviceCoordinateCache - void adjustCachingRecursively(bool animationIsRunning); - - // optimization: returns true if this or an ancestor has a transform animation running. - // this enables us to use ItemCoordinatesCache while the animation is running, otherwise we have to recache for every frame - bool isTransformAnimationRunning() const; - public slots: // we need to notify the client (aka the layer compositor) when the animation actually starts void notifyAnimationStarted(); @@ -179,6 +176,7 @@ public: GraphicsLayerQt* m_layer; TransformationMatrix m_baseTransform; + TransformationMatrix m_transformRelativeToRootLayer; bool m_transformAnimationRunning; bool m_opacityAnimationRunning; QWeakPointer<MaskEffectQt> m_maskEffect; @@ -207,6 +205,7 @@ public: int m_changeMask; QSizeF m_size; + QPixmapCache::Key m_backingStoreKey; #ifndef QT_NO_ANIMATION QList<QWeakPointer<QAbstractAnimation> > m_animations; #endif @@ -259,9 +258,6 @@ GraphicsLayerQtImpl::GraphicsLayerQtImpl(GraphicsLayerQt* newLayer) // they are ignored and passed to the item below. setEnabled(true); - // we'll set the cache when we know what's going on - setCacheMode(NoCache); - connect(this, SIGNAL(notifyAnimationStartedAsync()), this, SLOT(notifyAnimationStarted()), Qt::QueuedConnection); } @@ -287,80 +283,138 @@ GraphicsLayerQtImpl::~GraphicsLayerQtImpl() #endif } -void GraphicsLayerQtImpl::adjustCachingRecursively(bool animationIsRunning) +const GraphicsLayerQtImpl* GraphicsLayerQtImpl::rootLayer() const { - // optimization: we make sure all our children have ItemCoordinateCache - - // otherwise we end up re-rendering them during the animation - const QList<QGraphicsItem*> children = childItems(); - - for (QList<QGraphicsItem*>::const_iterator it = children.begin(); it != children.end(); ++it) { - if (QGraphicsItem* item = *it) - if (GraphicsLayerQtImpl* layer = qobject_cast<GraphicsLayerQtImpl*>(item->toGraphicsObject())) { - if (layer->m_layer->drawsContent() && layer->m_currentContent.contentType == HTMLContentType) - layer->setCacheMode(animationIsRunning ? QGraphicsItem::ItemCoordinateCache : QGraphicsItem::DeviceCoordinateCache); - } - } + if (const GraphicsLayerQtImpl* parent = qobject_cast<const GraphicsLayerQtImpl*>(parentObject())) + return parent->rootLayer(); + return this; } -void GraphicsLayerQtImpl::updateTransform() -{ - setBaseTransform(isTransformAnimationRunning() ? m_baseTransform : m_layer->transform()); -} -void GraphicsLayerQtImpl::setBaseTransform(const TransformationMatrix& baseTransform) -{ - m_baseTransform = baseTransform; - setTransform(computeTransform(baseTransform)); -} -QTransform GraphicsLayerQtImpl::computeTransform(const TransformationMatrix& baseTransform) const +QPixmap GraphicsLayerQtImpl::recache(const QRegion& regionToUpdate) { - if (!m_layer) - return baseTransform; + if (!m_layer->drawsContent()) + return QPixmap(); - TransformationMatrix computedTransform; + QRegion region = regionToUpdate; + QPixmap pixmap; - // The origin for childrenTransform is always the center of the ancestor which contains the childrenTransform. - // this has to do with how WebCore implements -webkit-perspective and -webkit-perspective-origin, which are the CSS - // attribute that call setChildrenTransform - QPointF offset = -pos() - boundingRect().bottomRight() / 2; + // We might be drawing into an existing cache. + if (!QPixmapCache::find(m_backingStoreKey, &pixmap)) + region = QRegion(QRect(0, 0, m_size.width(), m_size.height())); - for (const GraphicsLayerQtImpl* ancestor = this; (ancestor = qobject_cast<GraphicsLayerQtImpl*>(ancestor->parentObject())); ) { - if (!ancestor->m_state.childrenTransform.isIdentity()) { - const QPointF offset = mapFromItem(ancestor, QPointF(ancestor->m_size.width() / 2, ancestor->m_size.height() / 2)); - computedTransform - .translate(offset.x(), offset.y()) - .multLeft(ancestor->m_state.childrenTransform) - .translate(-offset.x(), -offset.y()); - break; - } + if (m_size != pixmap.size()) { + pixmap = QPixmap(m_size.toSize()); + if (!m_layer->contentsOpaque()) + pixmap.fill(Qt::transparent); + m_pendingContent.regionToUpdate = QRegion(QRect(QPoint(0, 0), m_size.toSize())); } + QPainter painter(&pixmap); + GraphicsContext gc(&painter); + + // Clear the area in cache that we're drawing into + painter.setCompositionMode(QPainter::CompositionMode_Clear); + painter.fillRect(region.boundingRect(), Qt::transparent); + + // Render the actual contents into the cache + painter.setCompositionMode(QPainter::CompositionMode_SourceOver); + m_layer->paintGraphicsLayerContents(gc, region.boundingRect()); + + m_backingStoreKey = QPixmapCache::insert(pixmap); + return pixmap; +} + +void GraphicsLayerQtImpl::updateTransform() +{ + if (!m_transformAnimationRunning) + m_baseTransform = m_layer->transform(); + + TransformationMatrix localTransform; + + GraphicsLayerQtImpl* parent = qobject_cast<GraphicsLayerQtImpl*>(parentObject()); + // webkit has relative-to-size originPoint, graphics-view has a pixel originPoint, here we convert // we have to manage this ourselves because QGraphicsView's transformOrigin is incompatible const qreal originX = m_state.anchorPoint.x() * m_size.width(); const qreal originY = m_state.anchorPoint.y() * m_size.height(); - computedTransform - .translate3d(originX, originY, m_state.anchorPoint.z()) - .multLeft(baseTransform) + + // We ignore QGraphicsItem::pos completely, and use only transforms - because we have to maintain that ourselves for 3D. + localTransform + .translate3d(originX + m_state.pos.x(), originY + m_state.pos.y(), m_state.anchorPoint.z()) + .multLeft(m_baseTransform) .translate3d(-originX, -originY, -m_state.anchorPoint.z()); - // now we project to 2D - return QTransform(computedTransform); + // This is the actual 3D transform of this item, with the ancestors' transform baked in. + m_transformRelativeToRootLayer = TransformationMatrix(parent ? parent->m_transformRelativeToRootLayer : TransformationMatrix()) + .multLeft(localTransform); + + // Now we have enough information to determine if the layer is facing backwards. + if (!m_state.backfaceVisibility && m_transformRelativeToRootLayer.inverse().m33() < 0) { + setVisible(false); + // No point in making extra calculations for invisible elements. + return; + } + + // Simplistic depth test - we stack the item behind its parent if its computed z is lower than the parent's computed z at the item's center point. + if (parent) { + const QPointF centerPointMappedToRoot = rootLayer()->mapFromItem(this, m_size.width() / 2, m_size.height() / 2); + setFlag(ItemStacksBehindParent, + m_transformRelativeToRootLayer.mapPoint(FloatPoint3D(centerPointMappedToRoot.x(), centerPointMappedToRoot.y(), 0)).z() < + parent->m_transformRelativeToRootLayer.mapPoint(FloatPoint3D(centerPointMappedToRoot.x(), centerPointMappedToRoot.y(), 0)).z()); + } + + // The item is front-facing or backface-visibility is on. + setVisible(true); + + // Flatten to 2D-space of this item if it doesn't preserve 3D. + if (!m_state.preserves3D) { + m_transformRelativeToRootLayer.setM13(0); + m_transformRelativeToRootLayer.setM23(0); + m_transformRelativeToRootLayer.setM31(0); + m_transformRelativeToRootLayer.setM32(0); + m_transformRelativeToRootLayer.setM33(1); + m_transformRelativeToRootLayer.setM34(0); + m_transformRelativeToRootLayer.setM43(0); + } + + // Apply perspective for the use of this item's children. Perspective is always applied from the item's center. + if (!m_state.childrenTransform.isIdentity()) + m_transformRelativeToRootLayer + .translate(m_size.width() / 2, m_size.height() /2) + .multLeft(m_state.childrenTransform) + .translate(-m_size.width() / 2, -m_size.height() /2); + + bool inverseOk = true; + // Use QTransform::inverse to extrapolate the relative transform of this item, based on the parent's transform relative to + // the root layer and the desired transform for this item relative to the root layer. + const QTransform parentTransform = parent ? parent->itemTransform(rootLayer()) : QTransform(); + const QTransform transform2D = QTransform(m_transformRelativeToRootLayer) * parentTransform.inverted(&inverseOk); + + // In rare cases the transformation cannot be inversed - in that case we don't apply the transformation at all, otherwise we'd flicker. + // FIXME: This should be amended when Qt moves to a real 3D scene-graph. + if (!inverseOk) + return; + + setTransform(transform2D); + + const QList<QGraphicsItem*> children = childItems(); + for (QList<QGraphicsItem*>::const_iterator it = children.begin(); it != children.end(); ++it) + if (GraphicsLayerQtImpl* layer= qobject_cast<GraphicsLayerQtImpl*>((*it)->toGraphicsObject())) + layer->updateTransform(); } -bool GraphicsLayerQtImpl::isTransformAnimationRunning() const +void GraphicsLayerQtImpl::setBaseTransform(const TransformationMatrix& baseTransform) { - if (m_transformAnimationRunning) - return true; - if (GraphicsLayerQtImpl* parent = qobject_cast<GraphicsLayerQtImpl*>(parentObject())) - return parent->isTransformAnimationRunning(); - return false; + m_baseTransform = baseTransform; + updateTransform(); } QPainterPath GraphicsLayerQtImpl::opaqueArea() const { QPainterPath painterPath; + // we try out best to return the opaque area, maybe it will help graphics-view render less items if (m_currentContent.backgroundColor.isValid() && m_currentContent.backgroundColor.alpha() == 0xff) painterPath.addRect(boundingRect()); @@ -384,14 +438,16 @@ QRectF GraphicsLayerQtImpl::boundingRect() const void GraphicsLayerQtImpl::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) { if (m_currentContent.backgroundColor.isValid()) - painter->fillRect(option->exposedRect, QColor(m_currentContent.backgroundColor)); + painter->fillRect(option->rect, QColor(m_currentContent.backgroundColor)); switch (m_currentContent.contentType) { case HTMLContentType: if (m_state.drawsContent) { - // this is the expensive bit. we try to minimize calls to this area by proper caching - GraphicsContext gc(painter); - m_layer->paintGraphicsLayerContents(gc, option->exposedRect.toAlignedRect()); + QPixmap backingStore; + // We might need to recache, in case we try to paint and the cache was purged (e.g. if it was full). + if (!QPixmapCache::find(m_backingStoreKey, &backingStore) || backingStore.size() != m_size.toSize()) + backingStore = recache(QRegion(m_state.contentsRect)); + painter->drawPixmap(0, 0, backingStore); } break; case PixmapContentType: @@ -471,15 +527,11 @@ void GraphicsLayerQtImpl::flushChanges(bool recursive, bool forceUpdateTransform if (m_layer->maskLayer()) { if (GraphicsLayerQtImpl* mask = qobject_cast<GraphicsLayerQtImpl*>(m_layer->maskLayer()->platformLayer()->toGraphicsObject())) { mask->m_maskEffect = new MaskEffectQt(this, mask); - mask->setCacheMode(NoCache); setGraphicsEffect(mask->m_maskEffect.data()); } } } - if ((m_changeMask & PositionChange) && (m_layer->position() != m_state.pos)) - setPos(m_layer->position().x(), m_layer->position().y()); - if (m_changeMask & SizeChange) { if (m_layer->size() != m_state.size) { prepareGeometryChange(); @@ -489,9 +541,10 @@ void GraphicsLayerQtImpl::flushChanges(bool recursive, bool forceUpdateTransform // FIXME: this is a hack, due to a probable QGraphicsScene bug when rapidly modifying the perspective // but without this line we get graphic artifacts if ((m_changeMask & ChildrenTransformChange) && m_state.childrenTransform != m_layer->childrenTransform()) - scene()->update(); + if (scene()) + scene()->update(); - if (m_changeMask & (ChildrenTransformChange | Preserves3DChange | TransformChange | AnchorPointChange | SizeChange)) { + if (m_changeMask & (ChildrenTransformChange | Preserves3DChange | TransformChange | AnchorPointChange | SizeChange | BackfaceVisibilityChange | PositionChange)) { // due to the differences between the way WebCore handles transforms and the way Qt handles transforms, // all these elements affect the transforms of all the descendants. forceUpdateTransform = true; @@ -510,8 +563,6 @@ void GraphicsLayerQtImpl::flushChanges(bool recursive, bool forceUpdateTransform break; case ColorContentType: - // no point in caching a solid-color rectangle - setCacheMode(m_layer->maskLayer() ? QGraphicsItem::DeviceCoordinateCache : QGraphicsItem::NoCache); if (m_pendingContent.contentType != m_currentContent.contentType || m_pendingContent.contentsBackgroundColor != m_currentContent.contentsBackgroundColor) update(); m_state.drawsContent = false; @@ -526,14 +577,6 @@ void GraphicsLayerQtImpl::flushChanges(bool recursive, bool forceUpdateTransform update(); if (!m_state.drawsContent && m_layer->drawsContent()) update(); - if (m_layer->drawsContent() && !m_maskEffect) { - setCacheMode(isTransformAnimationRunning() ? ItemCoordinateCache : DeviceCoordinateCache); - - // HTML content: we want to use exposedRect so we don't use WebCore rendering if we don't have to - setFlag(QGraphicsItem::ItemUsesExtendedStyleOption, true); - } - else - setCacheMode(NoCache); setFlag(ItemHasNoContents, !m_layer->drawsContent()); break; @@ -563,15 +606,16 @@ void GraphicsLayerQtImpl::flushChanges(bool recursive, bool forceUpdateTransform if (m_maskEffect) m_maskEffect.data()->update(); - else if (m_changeMask & DisplayChange) + else if (m_changeMask & DisplayChange) { + // Recache now: all the content is ready and we don't want to wait until the paint event. + recache(m_pendingContent.regionToUpdate); update(m_pendingContent.regionToUpdate.boundingRect()); + m_pendingContent.regionToUpdate = QRegion(); + } if ((m_changeMask & BackgroundColorChange) && (m_pendingContent.backgroundColor != m_currentContent.backgroundColor)) update(); - // FIXME: the following flags are currently not handled, as they don't have a clear test or are in low priority - // GeometryOrientationChange, ContentsOrientationChange, BackfaceVisibilityChange, ChildrenTransformChange, Preserves3DChange - m_state.maskLayer = m_layer->maskLayer(); m_state.pos = m_layer->position(); m_state.anchorPoint = m_layer->anchorPoint(); @@ -591,7 +635,6 @@ void GraphicsLayerQtImpl::flushChanges(bool recursive, bool forceUpdateTransform m_currentContent.contentType = m_pendingContent.contentType; m_currentContent.mediaLayer = m_pendingContent.mediaLayer; m_currentContent.backgroundColor = m_pendingContent.backgroundColor; - m_currentContent.regionToUpdate |= m_pendingContent.regionToUpdate; m_currentContent.contentsBackgroundColor = m_pendingContent.contentsBackgroundColor; m_pendingContent.regionToUpdate = QRegion(); m_changeMask = NoChanges; @@ -1014,6 +1057,7 @@ public: , m_webkitPropertyID(values.property()) , m_webkitAnimation(anim) , m_keyframesName(name) + , m_fillsForwards(false) { } @@ -1037,6 +1081,7 @@ public: // we might need this in case the same animation is added again (i.e. resumed by WebCore) const Animation* m_webkitAnimation; QString m_keyframesName; + bool m_fillsForwards; }; // we'd rather have a templatized QAbstractAnimation than QPropertyAnimation / QVariantAnimation; @@ -1121,10 +1166,8 @@ public: ~TransformAnimationQt() { - // this came up during the compositing/animation LayoutTests - // when the animation dies, the transform has to go back to default - if (m_layer) - m_layer.data()->updateTransform(); + if (m_fillsForwards) + setCurrentTime(1); } // the idea is that we let WebCore manage the transform-operations @@ -1135,34 +1178,28 @@ public: { TransformationMatrix transformMatrix; - // sometimes the animation values from WebCore are misleading and we have to use the actual matrix as source - // The Mac implementation simply doesn't try to accelerate those (e.g. 360deg rotation), but we do. - if (progress == 1 || !targetOperations.size() || sourceOperations == targetOperations) { - TransformationMatrix sourceMatrix; - sourceOperations.apply(m_boxSize, sourceMatrix); - transformMatrix = m_sourceMatrix; - transformMatrix.blend(sourceMatrix, 1 - progress); - } else { - bool validTransformLists = true; - const int sourceOperationCount = sourceOperations.size(); - if (sourceOperationCount) { - if (targetOperations.size() != sourceOperationCount) - validTransformLists = false; - else - for (size_t j = 0; j < sourceOperationCount && validTransformLists; ++j) - if (!sourceOperations.operations()[j]->isSameType(*targetOperations.operations()[j])) - validTransformLists = false; - } + bool validTransformLists = true; + const int sourceOperationCount = sourceOperations.size(); + if (sourceOperationCount) { + if (targetOperations.size() != sourceOperationCount) + validTransformLists = false; + else + for (size_t j = 0; j < sourceOperationCount && validTransformLists; ++j) + if (!sourceOperations.operations()[j]->isSameType(*targetOperations.operations()[j])) + validTransformLists = false; + } - if (validTransformLists) { - for (size_t i = 0; i < targetOperations.size(); ++i) - targetOperations.operations()[i]->blend(sourceOperations.at(i), progress)->apply(transformMatrix, m_boxSize); - } else { - targetOperations.apply(m_boxSize, transformMatrix); - transformMatrix.blend(m_sourceMatrix, progress); - } + if (validTransformLists) { + for (size_t i = 0; i < targetOperations.size(); ++i) + targetOperations.operations()[i]->blend(sourceOperations.at(i), progress)->apply(transformMatrix, m_boxSize); + } else { + targetOperations.apply(m_boxSize, transformMatrix); + transformMatrix.blend(m_sourceMatrix, progress); } + m_layer.data()->setBaseTransform(transformMatrix); + if (m_fillsForwards) + m_layer.data()->m_layer->setTransform(m_layer.data()->m_baseTransform); } virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) @@ -1177,10 +1214,11 @@ public: if (newState == QAbstractAnimation::Running) { m_sourceMatrix = m_layer.data()->m_layer->transform(); m_layer.data()->m_transformAnimationRunning = true; - m_layer.data()->adjustCachingRecursively(true); } else if (newState == QAbstractAnimation::Stopped) { + // We update the transform back to the default. This already takes fill-modes into account. m_layer.data()->m_transformAnimationRunning = false; - m_layer.data()->adjustCachingRecursively(false); + if (m_layer && m_layer.data()->m_layer) + m_layer.data()->setBaseTransform(m_layer.data()->m_layer->transform()); } } @@ -1194,6 +1232,11 @@ public: { } + ~OpacityAnimationQt() + { + if (m_fillsForwards) + setCurrentTime(1); + } virtual void applyFrame(const qreal& fromValue, const qreal& toValue, qreal progress) { qreal opacity = qBound(qreal(0), fromValue + (toValue-fromValue)*progress, qreal(1)); @@ -1204,6 +1247,8 @@ public: m_layer.data()->scene()->update(); m_layer.data()->setOpacity(opacity); + if (m_fillsForwards) + m_layer.data()->m_layer->setOpacity(opacity); } virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) @@ -1212,6 +1257,12 @@ public: if (m_layer) m_layer.data()->m_opacityAnimationRunning = (newState == QAbstractAnimation::Running); + + // If stopped, we update the opacity back to the default. This already takes fill-modes into account. + if (newState == Stopped) + if (m_layer && m_layer.data()->m_layer) + m_layer.data()->setOpacity(m_layer.data()->m_layer->opacity()); + } }; @@ -1220,7 +1271,7 @@ bool GraphicsLayerQt::addAnimation(const KeyframeValueList& values, const IntSiz if (!anim->duration() || !anim->iterationCount()) return false; - QAbstractAnimation* newAnim = 0; + AnimationQtBase* newAnim = 0; // fixed: we might already have the Qt animation object associated with this WebCore::Animation object for (QList<QWeakPointer<QAbstractAnimation> >::iterator it = m_impl->m_animations.begin(); it != m_impl->m_animations.end(); ++it) { @@ -1245,6 +1296,7 @@ bool GraphicsLayerQt::addAnimation(const KeyframeValueList& values, const IntSiz // we make sure WebCore::Animation and QAnimation are on the same terms newAnim->setLoopCount(anim->iterationCount()); + newAnim->m_fillsForwards = anim->fillsForwards(); m_impl->m_animations.append(QWeakPointer<QAbstractAnimation>(newAnim)); QObject::connect(&m_impl->m_suspendTimer, SIGNAL(timeout()), newAnim, SLOT(resume())); } @@ -1252,6 +1304,10 @@ bool GraphicsLayerQt::addAnimation(const KeyframeValueList& values, const IntSiz // flush now or flicker... m_impl->flushChanges(false); + // when fill-mode is backwards/both, we set the value to 0 before the delay takes place + if (anim->fillsBackwards()) + newAnim->setCurrentTime(0); + if (anim->delay()) QTimer::singleShot(anim->delay() * 1000, newAnim, SLOT(start())); else @@ -1272,6 +1328,8 @@ void GraphicsLayerQt::removeAnimationsForProperty(AnimatedPropertyID id) if (*it) { AnimationQtBase* anim = static_cast<AnimationQtBase*>(it->data()); if (anim && anim->m_webkitPropertyID == id) { + // We need to stop the animation right away, or it might flicker before it's deleted. + anim->stop(); anim->deleteLater(); it = m_impl->m_animations.erase(it); --it; @@ -1286,7 +1344,9 @@ void GraphicsLayerQt::removeAnimationsForKeyframes(const String& name) if (*it) { AnimationQtBase* anim = static_cast<AnimationQtBase*>((*it).data()); if (anim && anim->m_keyframesName == QString(name)) { - (*it).data()->deleteLater(); + // We need to stop the animation right away, or it might flicker before it's deleted. + anim->stop(); + anim->deleteLater(); it = m_impl->m_animations.erase(it); --it; } diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/transforms/TransformationMatrix.h b/src/3rdparty/webkit/WebCore/platform/graphics/transforms/TransformationMatrix.h index cdf101d..96b4baa 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/transforms/TransformationMatrix.h +++ b/src/3rdparty/webkit/WebCore/platform/graphics/transforms/TransformationMatrix.h @@ -47,7 +47,7 @@ #endif #if PLATFORM(WIN) || (PLATFORM(QT) && OS(WINDOWS)) || (PLATFORM(WX) && OS(WINDOWS)) -#if COMPILER(MINGW) +#if COMPILER(MINGW) && !COMPILER(MINGW64) typedef struct _XFORM XFORM; #else typedef struct tagXFORM XFORM; diff --git a/src/3rdparty/webkit/WebCore/platform/mac/MIMETypeRegistryMac.mm b/src/3rdparty/webkit/WebCore/platform/mac/MIMETypeRegistryMac.mm index 7d43505..82348e0 100644 --- a/src/3rdparty/webkit/WebCore/platform/mac/MIMETypeRegistryMac.mm +++ b/src/3rdparty/webkit/WebCore/platform/mac/MIMETypeRegistryMac.mm @@ -56,4 +56,9 @@ String MIMETypeRegistry::getPreferredExtensionForMIMEType(const String& type) return wkGetPreferredExtensionForMIMEType(type); } +bool MIMETypeRegistry::isApplicationPluginMIMEType(const String&) +{ + return false; +} + } diff --git a/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp b/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp index 341e6ae..fea64a0 100644 --- a/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp @@ -32,12 +32,14 @@ namespace WebCore { // To achieve the best result we want WebKit to schedule the jobs so we // are using the limit as found in Qt. To allow Qt to fill its queue // and prepare jobs we will schedule two more downloads. +// Per TCP connection there is 1 current processed, 3 possibly pipelined +// and 2 ready to re-fill the pipeline. unsigned initializeMaximumHTTPConnectionCountPerHost() { #ifdef Q_OS_SYMBIAN - return 3 + 2; + return 3 * (1 + 3 + 2); #else - return 6 + 2; + return 6 * (1 + 3 + 2); #endif } diff --git a/src/3rdparty/webkit/WebCore/platform/qt/MIMETypeRegistryQt.cpp b/src/3rdparty/webkit/WebCore/platform/qt/MIMETypeRegistryQt.cpp index 22cee6f..4161f81 100644 --- a/src/3rdparty/webkit/WebCore/platform/qt/MIMETypeRegistryQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/qt/MIMETypeRegistryQt.cpp @@ -82,4 +82,10 @@ String MIMETypeRegistry::getMIMETypeForExtension(const String &ext) return "application/octet-stream"; } +bool MIMETypeRegistry::isApplicationPluginMIMEType(const String& mimeType) +{ + return mimeType.startsWith("application/x-qt-plugin", false) + || mimeType.startsWith("application/x-qt-styled-widget", false); +} + } diff --git a/src/3rdparty/webkit/WebCore/platform/qt/QWebPageClient.h b/src/3rdparty/webkit/WebCore/platform/qt/QWebPageClient.h index f03ff08..467941f 100644 --- a/src/3rdparty/webkit/WebCore/platform/qt/QWebPageClient.h +++ b/src/3rdparty/webkit/WebCore/platform/qt/QWebPageClient.h @@ -55,6 +55,7 @@ public: // if scheduleSync is true, we schedule a sync ourselves. otherwise, // we wait for the next update and sync the layers then. virtual void markForSync(bool scheduleSync = false) {} + virtual bool allowsAcceleratedCompositing() const { return false; } #endif #if QT_VERSION >= 0x040600 diff --git a/src/3rdparty/webkit/WebCore/platform/qt/SharedTimerQt.cpp b/src/3rdparty/webkit/WebCore/platform/qt/SharedTimerQt.cpp index e9bcaee..7c0fd05 100644 --- a/src/3rdparty/webkit/WebCore/platform/qt/SharedTimerQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/qt/SharedTimerQt.cpp @@ -40,6 +40,8 @@ namespace WebCore { class SharedTimerQt : public QObject { + Q_OBJECT + friend void setSharedTimerFiredFunction(void (*f)()); public: static SharedTimerQt* inst(); @@ -50,15 +52,18 @@ public: protected: void timerEvent(QTimerEvent* ev); +private slots: + void destroy(); + private: - SharedTimerQt(QObject* parent); + SharedTimerQt(); ~SharedTimerQt(); QBasicTimer m_timer; void (*m_timerFunction)(); }; -SharedTimerQt::SharedTimerQt(QObject* parent) - : QObject(parent) +SharedTimerQt::SharedTimerQt() + : QObject() , m_timerFunction(0) {} @@ -68,11 +73,18 @@ SharedTimerQt::~SharedTimerQt() (m_timerFunction)(); } +void SharedTimerQt::destroy() +{ + delete this; +} + SharedTimerQt* SharedTimerQt::inst() { static QPointer<SharedTimerQt> timer; - if (!timer) - timer = new SharedTimerQt(QCoreApplication::instance()); + if (!timer) { + timer = new SharedTimerQt(); + timer->connect(QCoreApplication::instance(), SIGNAL(aboutToQuit()), SLOT(destroy())); + } return timer; } @@ -129,6 +141,8 @@ void stopSharedTimer() SharedTimerQt::inst()->stop(); } +#include "SharedTimerQt.moc" + } // vim: ts=4 sw=4 et diff --git a/src/3rdparty/webkit/WebCore/platform/text/TextStream.cpp b/src/3rdparty/webkit/WebCore/platform/text/TextStream.cpp index ab73891..eed17a5 100644 --- a/src/3rdparty/webkit/WebCore/platform/text/TextStream.cpp +++ b/src/3rdparty/webkit/WebCore/platform/text/TextStream.cpp @@ -108,7 +108,7 @@ String TextStream::release() return String::adopt(m_text); } -#if OS(WINDOWS) && CPU(X86_64) && COMPILER(MSVC) +#if OS(WINDOWS) && CPU(X86_64) TextStream& TextStream::operator<<(__int64 i) { char buffer[printBufferSize]; diff --git a/src/3rdparty/webkit/WebCore/platform/text/TextStream.h b/src/3rdparty/webkit/WebCore/platform/text/TextStream.h index 1225505..522da53 100644 --- a/src/3rdparty/webkit/WebCore/platform/text/TextStream.h +++ b/src/3rdparty/webkit/WebCore/platform/text/TextStream.h @@ -45,7 +45,7 @@ public: TextStream& operator<<(const char*); TextStream& operator<<(void*); TextStream& operator<<(const String&); -#if OS(WINDOWS) && CPU(X86_64) && COMPILER(MSVC) +#if OS(WINDOWS) && CPU(X86_64) TextStream& operator<<(unsigned __int64); TextStream& operator<<(__int64); #endif diff --git a/src/3rdparty/webkit/WebCore/plugins/PluginView.cpp b/src/3rdparty/webkit/WebCore/plugins/PluginView.cpp index 38acdd9..df9a29b 100644 --- a/src/3rdparty/webkit/WebCore/plugins/PluginView.cpp +++ b/src/3rdparty/webkit/WebCore/plugins/PluginView.cpp @@ -345,7 +345,7 @@ void PluginView::stop() WNDPROC currentWndProc = (WNDPROC)GetWindowLongPtr(platformPluginWidget(), GWLP_WNDPROC); if (currentWndProc == PluginViewWndProc) - SetWindowLongPtr(platformPluginWidget(), GWLP_WNDPROC, (LONG)m_pluginWndProc); + SetWindowLongPtr(platformPluginWidget(), GWLP_WNDPROC, (LONG_PTR)m_pluginWndProc); #endif } #endif // XP_WIN @@ -1296,9 +1296,7 @@ void PluginView::keepAlive(NPP instance) view->keepAlive(); } -#endif -#if ENABLE(NETSCAPE_PLUGIN_API) NPError PluginView::getValueStatic(NPNVariable variable, void* value) { LOG(Plugins, "PluginView::getValueStatic(%s)", prettyNameForNPNVariable(variable).data()); @@ -1309,7 +1307,6 @@ NPError PluginView::getValueStatic(NPNVariable variable, void* value) return NPERR_GENERIC_ERROR; } -#endif NPError PluginView::getValue(NPNVariable variable, void* value) { @@ -1319,13 +1316,10 @@ NPError PluginView::getValue(NPNVariable variable, void* value) if (platformGetValue(variable, value, &result)) return result; -#if ENABLE(NETSCAPE_PLUGIN_API) if (platformGetValueStatic(variable, value, &result)) return result; -#endif switch (variable) { -#if ENABLE(NETSCAPE_PLUGIN_API) case NPNVWindowNPObject: { if (m_isJavaScriptPaused) return NPERR_GENERIC_ERROR; @@ -1360,7 +1354,6 @@ NPError PluginView::getValue(NPNVariable variable, void* value) return NPERR_NO_ERROR; } -#endif case NPNVprivateModeBool: { Page* page = m_parentFrame->page(); @@ -1374,6 +1367,7 @@ NPError PluginView::getValue(NPNVariable variable, void* value) return NPERR_GENERIC_ERROR; } } +#endif void PluginView::privateBrowsingStateChanged(bool privateBrowsingEnabled) { diff --git a/src/3rdparty/webkit/WebCore/plugins/PluginView.h b/src/3rdparty/webkit/WebCore/plugins/PluginView.h index 21a25f6..51b2127 100644 --- a/src/3rdparty/webkit/WebCore/plugins/PluginView.h +++ b/src/3rdparty/webkit/WebCore/plugins/PluginView.h @@ -139,8 +139,9 @@ namespace WebCore { static const char* userAgentStatic(); #endif void status(const char* message); - NPError getValue(NPNVariable variable, void* value); + #if ENABLE(NETSCAPE_PLUGIN_API) + NPError getValue(NPNVariable variable, void* value); static NPError getValueStatic(NPNVariable variable, void* value); #endif NPError setValue(NPPVariable variable, void* value); diff --git a/src/3rdparty/webkit/WebCore/plugins/PluginViewNone.cpp b/src/3rdparty/webkit/WebCore/plugins/PluginViewNone.cpp index ed5ad1b..bd51a98 100644 --- a/src/3rdparty/webkit/WebCore/plugins/PluginViewNone.cpp +++ b/src/3rdparty/webkit/WebCore/plugins/PluginViewNone.cpp @@ -67,12 +67,12 @@ NPError PluginView::handlePostReadFile(Vector<char>&, uint32, const char*) return 0; } +#if ENABLE(NETSCAPE_PLUGIN_API) bool PluginView::platformGetValue(NPNVariable, void*, NPError*) { return false; } -#if ENABLE(NETSCAPE_PLUGIN_API) bool PluginView::platformGetValueStatic(NPNVariable, void*, NPError*) { return false; @@ -126,4 +126,14 @@ void PluginView::keepAlive(NPP) } #endif +#if PLATFORM(MAC) || PLATFORM(CHROMIUM) || PLATFORM(EFL) +void PluginView::privateBrowsingStateChanged(bool) +{ +} + +void PluginView::setJavaScriptPaused(bool) +{ +} +#endif + } // namespace WebCore diff --git a/src/3rdparty/webkit/WebCore/plugins/symbian/PluginViewSymbian.cpp b/src/3rdparty/webkit/WebCore/plugins/symbian/PluginViewSymbian.cpp index bae3b7f..108fcca 100644 --- a/src/3rdparty/webkit/WebCore/plugins/symbian/PluginViewSymbian.cpp +++ b/src/3rdparty/webkit/WebCore/plugins/symbian/PluginViewSymbian.cpp @@ -414,11 +414,11 @@ bool PluginView::platformStart() void PluginView::platformDestroy() { - QWebPageClient* client = m_parentFrame->view()->hostWindow()->platformPageClient(); - if (client && qobject_cast<QGraphicsWebView*>(client->pluginParent())) - delete static_cast<PluginContainerSymbian*>(platformPluginWidget())->proxy(); - else - delete platformPluginWidget(); + if (platformPluginWidget()) { + PluginContainerSymbian* container = static_cast<PluginContainerSymbian*>(platformPluginWidget()); + delete container->proxy(); + delete container; + } } void PluginView::halt() diff --git a/src/3rdparty/webkit/WebCore/plugins/win/PluginViewWin.cpp b/src/3rdparty/webkit/WebCore/plugins/win/PluginViewWin.cpp index 9d869ab..e37714a 100644 --- a/src/3rdparty/webkit/WebCore/plugins/win/PluginViewWin.cpp +++ b/src/3rdparty/webkit/WebCore/plugins/win/PluginViewWin.cpp @@ -544,7 +544,7 @@ void PluginView::paintIntoTransformedContext(HDC hdc) NPEvent npEvent; npEvent.event = WM_WINDOWPOSCHANGED; - npEvent.lParam = reinterpret_cast<uint32>(&windowpos); + npEvent.lParam = reinterpret_cast<uintptr_t>(&windowpos); npEvent.wParam = 0; dispatchNPEvent(npEvent); @@ -552,7 +552,7 @@ void PluginView::paintIntoTransformedContext(HDC hdc) setNPWindowRect(frameRect()); npEvent.event = WM_PAINT; - npEvent.wParam = reinterpret_cast<uint32>(hdc); + npEvent.wParam = reinterpret_cast<uintptr_t>(hdc); // This is supposed to be a pointer to the dirty rect, but it seems that the Flash plugin // ignores it so we just pass null. @@ -829,7 +829,7 @@ void PluginView::setNPWindowRect(const IntRect& rect) #else WNDPROC currentWndProc = (WNDPROC)GetWindowLongPtr(platformPluginWidget(), GWLP_WNDPROC); if (currentWndProc != PluginViewWndProc) - m_pluginWndProc = (WNDPROC)SetWindowLongPtr(platformPluginWidget(), GWLP_WNDPROC, (LONG)PluginViewWndProc); + m_pluginWndProc = (WNDPROC)SetWindowLongPtr(platformPluginWidget(), GWLP_WNDPROC, (LONG_PTR)PluginViewWndProc); #endif } } @@ -978,7 +978,7 @@ bool PluginView::platformStart() // Calling SetWindowLongPtrA here makes the window proc ASCII, which is required by at least // the Shockwave Director plug-in. -#if OS(WINDOWS) && CPU(X86_64) && COMPILER(MSVC) +#if OS(WINDOWS) && CPU(X86_64) ::SetWindowLongPtrA(platformPluginWidget(), GWLP_WNDPROC, (LONG_PTR)DefWindowProcA); #elif OS(WINCE) ::SetWindowLong(platformPluginWidget(), GWL_WNDPROC, (LONG)DefWindowProc); diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderBox.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderBox.cpp index 1c0e837..c6818f8 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderBox.cpp +++ b/src/3rdparty/webkit/WebCore/rendering/RenderBox.cpp @@ -1179,10 +1179,9 @@ void RenderBox::computeRectForRepaint(RenderBoxModelObject* repaintContainer, In IntPoint topLeft = rect.location(); topLeft.move(x(), y()); - if (style()->position() == FixedPosition) - fixed = true; + EPosition position = style()->position(); - if (o->isBlockFlow() && style()->position() != AbsolutePosition && style()->position() != FixedPosition) { + if (o->isBlockFlow() && position != AbsolutePosition && position != FixedPosition) { RenderBlock* cb = toRenderBlock(o); if (cb->hasColumns()) { IntRect repaintRect(topLeft, rect.size()); @@ -1195,16 +1194,17 @@ void RenderBox::computeRectForRepaint(RenderBoxModelObject* repaintContainer, In // We are now in our parent container's coordinate space. Apply our transform to obtain a bounding box // in the parent's coordinate space that encloses us. if (layer() && layer()->transform()) { - fixed = false; + fixed = position == FixedPosition; rect = layer()->transform()->mapRect(rect); // FIXME: this clobbers topLeft adjustment done for multicol above topLeft = rect.location(); topLeft.move(x(), y()); - } + } else if (position == FixedPosition) + fixed = true; - if (style()->position() == AbsolutePosition && o->isRelPositioned() && o->isRenderInline()) + if (position == AbsolutePosition && o->isRelPositioned() && o->isRenderInline()) topLeft += toRenderInline(o)->relativePositionedInlineOffset(this); - else if (style()->position() == RelativePosition && layer()) { + else if (position == RelativePosition && layer()) { // Apply the relative position offset when invalidating a rectangle. The layer // is translated, but the render box isn't, so we need to do this to get the // right dirty rect. Since this is called from RenderObject::setStyle, the relative position diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderLayer.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderLayer.cpp index 15ffb64..3314772 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderLayer.cpp +++ b/src/3rdparty/webkit/WebCore/rendering/RenderLayer.cpp @@ -332,6 +332,22 @@ void RenderLayer::computeRepaintRects() m_outlineBox = renderer()->outlineBoundsForRepaint(repaintContainer); } +void RenderLayer::updateRepaintRectsAfterScroll(bool fixed) +{ + if (fixed || renderer()->style()->position() == FixedPosition) { + computeRepaintRects(); + fixed = true; + } else if (renderer()->hasTransform()) { + // Transforms act as fixed position containers, so nothing inside a + // transformed element can be fixed relative to the viewport if the + // transformed element is not fixed itself or child of a fixed element. + return; + } + + for (RenderLayer* child = firstChild(); child; child = child->nextSibling()) + child->updateRepaintRectsAfterScroll(fixed); +} + void RenderLayer::updateTransform() { // hasTransform() on the renderer is also true when there is transform-style: preserve-3d or perspective set, diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderLayer.h b/src/3rdparty/webkit/WebCore/rendering/RenderLayer.h index 9210e95..81a66e1 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderLayer.h +++ b/src/3rdparty/webkit/WebCore/rendering/RenderLayer.h @@ -395,6 +395,7 @@ public: // Return a cached repaint rect, computed relative to the layer renderer's containerForRepaint. IntRect repaintRect() const { return m_repaintRect; } void computeRepaintRects(); + void updateRepaintRectsAfterScroll(bool fixed = false); void setNeedsFullRepaint(bool f = true) { m_needsFullRepaint = f; } int staticX() const { return m_staticX; } diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderLayerCompositor.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderLayerCompositor.cpp index 93af664..c295a2c 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderLayerCompositor.cpp +++ b/src/3rdparty/webkit/WebCore/rendering/RenderLayerCompositor.cpp @@ -128,6 +128,15 @@ void RenderLayerCompositor::cacheAcceleratedCompositingFlags() showRepaintCounter = settings->showRepaintCounter(); } + // We allow the chrome to override the settings, in case the page is rendered + // on a chrome that doesn't allow accelerated compositing. + if (hasAcceleratedCompositing) { + Frame* frame = m_renderView->frameView()->frame(); + Page* page = frame ? frame->page() : 0; + if (page) + hasAcceleratedCompositing = page->chrome()->client()->allowsAcceleratedCompositing(); + } + if (hasAcceleratedCompositing != m_hasAcceleratedCompositing || showDebugBorders != m_showDebugBorders || showRepaintCounter != m_showRepaintCounter) setCompositingLayersNeedRebuild(); diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp index ad66750..3c86770 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qgraphicswebview.cpp @@ -122,6 +122,9 @@ public: virtual void setRootGraphicsLayer(QGraphicsItem* layer); virtual void markForSync(bool scheduleSync); void updateCompositingScrollPosition(); + + // QGraphicsWebView can render composited layers + virtual bool allowsAcceleratedCompositing() const { return true; } #endif void updateResizesToContentsForPage(); diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebhistory.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebhistory.cpp index 61ec9d2..d852012 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebhistory.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebhistory.cpp @@ -33,7 +33,7 @@ enum { InitialHistoryVersion = 1, - DefaultHistoryVersion = 2 + DefaultHistoryVersion = InitialHistoryVersion }; /*! @@ -524,7 +524,7 @@ QDataStream& operator>>(QDataStream& source, QWebHistory& history) source >> version; - if (version <= 2) { + if (version == 1) { int count; int currentIndex; source >> count >> currentIndex; diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp index 007aeac..f28524a 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebpage.cpp @@ -1492,7 +1492,7 @@ QVariant QWebPage::inputMethodQuery(Qt::InputMethodQuery property) const // We can't access absoluteCaretBounds() while the view needs to layout. return QVariant(); } - return QVariant(frame->selection()->absoluteCaretBounds()); + return QVariant(view->contentsToWindow(frame->selection()->absoluteCaretBounds())); } case Qt::ImFont: { if (renderTextControl) { @@ -2048,9 +2048,9 @@ QWebPage *QWebPage::createWindow(WebWindowType type) } /*! - This function is called whenever WebKit encounters a HTML object element with type "application/x-qt-plugin". - The \a classid, \a url, \a paramNames and \a paramValues correspond to the HTML object element attributes and - child elements to configure the embeddable object. + This function is called whenever WebKit encounters a HTML object element with type "application/x-qt-plugin". It is + called regardless of the value of QWebSettings::PluginsEnabled. The \a classid, \a url, \a paramNames and \a paramValues + correspond to the HTML object element attributes and child elements to configure the embeddable object. */ QObject *QWebPage::createPlugin(const QString &classid, const QUrl &url, const QStringList ¶mNames, const QStringList ¶mValues) { @@ -2208,7 +2208,6 @@ void QWebPage::setViewportSize(const QSize &size) const if (frame->d->frame && frame->d->frame->view()) { WebCore::FrameView* view = frame->d->frame->view(); view->setFrameRect(QRect(QPoint(0, 0), size)); - view->forceLayout(); view->adjustViewSize(); } } diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp index c759445..2305c7f 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebsettings.cpp @@ -298,7 +298,9 @@ QWebSettings* QWebSettings::globalSettings() Support for browser plugins can enabled by setting the \l{QWebSettings::PluginsEnabled}{PluginsEnabled} attribute. For many applications, this attribute is enabled for all pages by setting it on the - \l{globalSettings()}{global settings object}. + \l{globalSettings()}{global settings object}. QtWebKit will always ignore this setting + \when processing Qt plugins. The decision to allow a Qt plugin is made by the client + \in its reimplementation of QWebPage::createPlugin. \section1 Web Application Support @@ -366,7 +368,8 @@ QWebSettings* QWebSettings::globalSettings() programs. \value JavaEnabled Enables or disables Java applets. Currently Java applets are not supported. - \value PluginsEnabled Enables or disables plugins in Web pages. + \value PluginsEnabled Enables or disables plugins in Web pages. Qt plugins + with a mimetype such as "application/x-qt-plugin" are not affected by this setting. \value PrivateBrowsingEnabled Private browsing prevents WebKit from recording visited pages in the history and storing web page icons. \value JavascriptCanOpenWindows Specifies whether JavaScript programs diff --git a/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp b/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp index fcd1f4b..3ba1678 100644 --- a/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp +++ b/src/3rdparty/webkit/WebKit/qt/Api/qwebview.cpp @@ -415,9 +415,6 @@ void QWebView::setPage(QWebPage* page) this, SLOT(updateMicroFocus())); connect(d->page, SIGNAL(destroyed()), this, SLOT(_q_pageDestroyed())); -#if USE(ACCELERATED_COMPOSITING) - d->page->d->page->settings()->setAcceleratedCompositingEnabled(false); -#endif } setAttribute(Qt::WA_OpaquePaintEvent, d->page); update(); diff --git a/src/3rdparty/webkit/WebKit/qt/ChangeLog b/src/3rdparty/webkit/WebKit/qt/ChangeLog index 5e550f9..8594f09 100644 --- a/src/3rdparty/webkit/WebKit/qt/ChangeLog +++ b/src/3rdparty/webkit/WebKit/qt/ChangeLog @@ -1,3 +1,230 @@ +2010-04-29 Andreas Kling <andreas.kling@nokia.com> + + Reviewed by Simon Hausmann. + + Remove unnecessary call to FrameView::forceLayout() in setViewportSize() + This prevents a double relayout on resize. + + https://bugs.webkit.org/show_bug.cgi?id=38179 + + Thanks to Nate Whetsell <nathan.whetsell@gmail.com> for spotting this. + + * Api/qwebpage.cpp: + (QWebPage::setViewportSize): + +2010-04-29 Simon Hausmann <simon.hausmann@nokia.com> + + Reviewed by Tor Arne Vestbø. + + [Qt] REGRESSION(r57982): tst_qwebpage::showModalDialog() crashes + https://bugs.webkit.org/show_bug.cgi?id=38314 + + Make sure that there's always a main frame when returning from createWindow() + to the caller in WebCore. + + * WebCoreSupport/ChromeClientQt.cpp: + (WebCore::ChromeClientQt::createWindow): + +2010-04-28 Janne Koskinen <janne.p.koskinen@digia.com> + + Reviewed by Simon Hausmann <simon.hausmann@nokia.com> + + [Qt] WINS DEF file freeze + + Updated WINSCW def file with added and removed symbols. + + * symbian/bwins/QtWebKitu.def: + +2010-04-22 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Remove translatable strings from the hybridPixmap test. + https://bugs.webkit.org/show_bug.cgi?id=37867 + + * tests/hybridPixmap/widget.ui: + +2010-04-22 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Fix autotests .qrc file paths when built in Qt. + + Compiling auto-tests from qt/tests/auto/qweb* produced + failing tests since these .pro files include the + ones in WebKit/qt/tests and the .qrc file was + not added to RESOURCES + + * tests/benchmarks/loading/loading.pro: + * tests/benchmarks/painting/painting.pro: + * tests/qgraphicswebview/qgraphicswebview.pro: + * tests/qwebelement/qwebelement.pro: + * tests/qwebframe/qwebframe.pro: + * tests/qwebhistory/qwebhistory.pro: + * tests/qwebhistoryinterface/qwebhistoryinterface.pro: + * tests/qwebinspector/qwebinspector.pro: + * tests/qwebpage/qwebpage.pro: + * tests/qwebplugindatabase/qwebplugindatabase.pro: + * tests/qwebview/qwebview.pro: + * tests/tests.pri: + +2010-04-26 Bruno Schmidt <bruno.schmidt@gmail.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Exposing an QVariantMap containing QObjectStar to Javascript + causes Segmentation Fault + https://bugs.webkit.org/show_bug.cgi?id=34729 + + If an QVariantMap containing QObjectStar is added to the to QtWebkit + Javascript, it's use causes Segmentation Fault. + It happens because, in the case QMetaType::QVariantMap, the "root" + object that is inside of a PassRefPtr is passed recursively inside a + loop to recover the content of the map, but the PassRefPtr semantics + prohibit its use inside a loop, so the "root" object mus be passed + using the method "PassRefPtr::get" in order to keep the current + reference. + + * tests/qwebframe/tst_qwebframe.cpp: + (MyQObject::MyQObject): new property variantMapProperty + (MyQObject::variantMapProperty): read variantMapProperty + (MyQObject::setVariantMapProperty): write variantMapProperty + +2010-04-26 Thiago Macieira <thiago.macieira@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] Fix the include header <qstring.h> -> <QtCore/qstring.h> + + The module/header.h style inclusion removes the need to have -I$QTDIR/include/depending-module + in the include search path for the application. + + * Api/qwebkitversion.h: + +2010-04-21 Yi Shen <yi.4.shen@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] Check the request empty or not in ChromeClientQt::createWindow() + https://bugs.webkit.org/show_bug.cgi?id=37821 + + * WebCoreSupport/ChromeClientQt.cpp: + (WebCore::ChromeClientQt::createWindow): + +2010-04-22 John Pavan <john.pavan@nokia.com> + + Reviewed by Laszlo Gombos. + + [Qt] inputMethodQuery returns coordinates in web page coordinates rather than in item coordinates. + https://bugs.webkit.org/show_bug.cgi?id=37163 + + + QWebPage::inputMethodQuery is modified so that it + returns coordinates in the widget's coordinate system. + Tests are added for QGraphicsWebView and QWebView + to verify that this behavior is correct after the webpage + has been scrolled. + + * Api/qwebpage.cpp: + (QWebPage::inputMethodQuery): + * tests/qgraphicswebview/tst_qgraphicswebview.cpp: + (tst_QGraphicsWebView::microFocusCoordinates): + * tests/qwebview/tst_qwebview.cpp: + (tst_QWebView::microFocusCoordinates): + +2010-04-21 No'am Rosenthal <noam.rosenthal@nokia.com> + + Reviewed by Simon Fraser. + + [Qt] Fix or remove the runtime flag for accelerated compositing. + https://bugs.webkit.org/show_bug.cgi?id=37313 + + This lets the QWebPageClient "veto" the settings value for accelerated compositing. + In this case we allow accelerated compositing only on QGraphicsWebView. + + * Api/qgraphicswebview.cpp: + (QGraphicsWebViewPrivate::allowsAcceleratedCompositing): + * WebCoreSupport/ChromeClientQt.cpp: + (WebCore::ChromeClientQt::allowsAcceleratedCompositing): + * WebCoreSupport/ChromeClientQt.h: + +2010-04-22 Robert Hogan <robert@webkit.org> + + Reviewed by Simon Hausmann. + + [Qt] Fix createPlugin() tests in tst_qwebpage to match behaviour of Qt plugins + when PluginsEnabled is false. + + tst_qwebpage should have been updated as part of r56662. + (See https://bugs.webkit.org/show_bug.cgi?id=32196) + + Updated documentation of QWebPage::createPlugin and QWebSetting::pluginsEnabled + to match the new behaviour. + + * Api/qwebpage.cpp: Update docs. + * Api/qwebsettings.cpp: Update docs. + * tests/qwebpage/tst_qwebpage.cpp: + (createPlugin): + (tst_QWebPage::createPluginWithPluginsEnabled): + (tst_QWebPage::createPluginWithPluginsDisabled): + +2010-04-09 Antonio Gomes <tonikitoo@webkit.org> + + Reviewed by Kenneth Christiansen and Tor Arne Vestbø. + + REGRESSION(r56552): Broken scrollbars size + https://bugs.webkit.org/show_bug.cgi?id=36853 + + The regression was caused by r56552, which introduced a fix to bug + webkit.org/b/21300. The bug solved an issue with the resize handle on mac, + but did it in a way that affected all Qt platforms and thus broke the behavior + on non-mac platforms. + + This patch makes the mac specific change ifdef'ed and only applied for the mac + platform. + + * WebCoreSupport/ChromeClientQt.cpp: + (WebCore::ChromeClientQt::windowResizerRect): + +2010-04-19 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] Fix compilation against namespaced Qt. + + * WebCoreSupport/ChromeClientQt.h: + * WebCoreSupport/QtFallbackWebPopup.h: + +2010-04-14 Luiz Agostini <luiz.agostini@openbossa.org> + + Reviewed by Kenneth Rohde Christiansen. + + Changing view mode names due to specification changes + https://bugs.webkit.org/show_bug.cgi?id=37615 + + test: fast/media/media-feature-wgt-view-mode.html + + specification: http://dev.w3.org/2006/waf/widgets-vmmf/ + + * WebCoreSupport/ChromeClientQt.cpp: + (WebCore::ChromeClientQt::isWindowed): + (WebCore::ChromeClientQt::isFullscreen): + (WebCore::ChromeClientQt::isMaximized): + (WebCore::ChromeClientQt::isMinimized): + * WebCoreSupport/ChromeClientQt.h: + +2010-04-14 Andreas Kling <andreas.kling@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Rendering artifacts on Qt plugins when scrolling the page + https://bugs.webkit.org/show_bug.cgi?id=37152 + + Because we no longer repaint the entire viewport on scroll, + we must trigger a repaint of QtPluginWidgets when their geometry changes. + + * WebCoreSupport/FrameLoaderClientQt.cpp: + 2010-04-09 Yi Shen <yi.4.shen@nokia.com> Reviewed by Kenneth Rohde Christiansen. @@ -10,6 +237,38 @@ * tests/qwebframe/tst_qwebframe.cpp: +2010-04-15 Bruno Schmidt <bruno.schmidt@gmail.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Null QObjects properties cause Segmentation Fault + https://bugs.webkit.org/show_bug.cgi?id=34730 + + QObjects exported to the QWebkit javascript with properties that are + a null "QObject*" cause Segmentation Fault. + + If an QObject is added to the javascript context and it contains + properties of the type QObject* with NULL value, calling the property + causes Segmentation Fault. + + Follow the tests for the corrections done over WebCore. + + * tests/qwebframe/tst_qwebframe.cpp: + (MyQObject::MyQObject): init the field m_objectStar + (MyQObject::objectStarProperty): read the Object* prop + (MyQObject::setObjectStarProperty): write the Object* prop + (tst_QWebFrame::getSetStaticProperty): new tests for the new prop + +2010-04-15 Kent Hansen <kent.hansen@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Mark QWebFrame::overloadedSlots autotest as expected failure + + https://bugs.webkit.org/show_bug.cgi?id=37319 + + * tests/qwebframe/tst_qwebframe.cpp: + 2010-04-09 Tasuku Suzuki <tasuku.suzuki@nokia.com> Reviewed by Simon Hausmann. diff --git a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp index 45986b3..9eb10d6 100644 --- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp +++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.cpp @@ -165,7 +165,13 @@ Page* ChromeClientQt::createWindow(Frame*, const FrameLoadRequest& request, cons QWebPage *newPage = m_webPage->createWindow(features.dialog ? QWebPage::WebModalDialog : QWebPage::WebBrowserWindow); if (!newPage) return 0; - newPage->mainFrame()->load(request.resourceRequest().url()); + + // A call to QWebPage::mainFrame() implicitly creates the main frame. + // Make sure it exists, as WebCore expects it when returning from this call. + QWebFrame* mainFrame = newPage->mainFrame(); + + if (!request.isEmpty()) + mainFrame->load(request.resourceRequest().url()); return newPage->d->page; } @@ -330,6 +336,7 @@ bool ChromeClientQt::tabsToLinks() const IntRect ChromeClientQt::windowResizerRect() const { +#if defined(Q_WS_MAC) if (!m_webPage) return IntRect(); @@ -359,6 +366,9 @@ IntRect ChromeClientQt::windowResizerRect() const QRect resizeCornerRect = QRect(resizeCornerTopLeft, QSize(scollbarThickness, scollbarThickness)); return resizeCornerRect.intersected(pageClient->geometryRelativeToOwnerWidget()); +#else + return IntRect(); +#endif } void ChromeClientQt::invalidateWindow(const IntRect&, bool) @@ -542,6 +552,12 @@ void ChromeClientQt::scheduleCompositingLayerSync() if (platformPageClient()) platformPageClient()->markForSync(true); } + +bool ChromeClientQt::allowsAcceleratedCompositing() const +{ + return (platformPageClient() && platformPageClient()->allowsAcceleratedCompositing()); +} + #endif QtAbstractWebPopup* ChromeClientQt::createSelectPopup() @@ -554,9 +570,9 @@ QtAbstractWebPopup* ChromeClientQt::createSelectPopup() } #if ENABLE(WIDGETS_10_SUPPORT) -bool ChromeClientQt::isDocked() +bool ChromeClientQt::isWindowed() { - return m_webPage->d->viewMode == "mini"; + return m_webPage->d->viewMode == "windowed"; } bool ChromeClientQt::isFloating() @@ -564,14 +580,19 @@ bool ChromeClientQt::isFloating() return m_webPage->d->viewMode == "floating"; } -bool ChromeClientQt::isApplication() +bool ChromeClientQt::isFullscreen() { - return m_webPage->d->viewMode == "application"; + return m_webPage->d->viewMode == "fullscreen"; } -bool ChromeClientQt::isFullscreen() +bool ChromeClientQt::isMaximized() { - return m_webPage->d->viewMode == "fullscreen"; + return m_webPage->d->viewMode == "maximized"; +} + +bool ChromeClientQt::isMinimized() +{ + return m_webPage->d->viewMode == "minimized"; } #endif diff --git a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.h b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.h index f8f217b..f0a7c8c 100644 --- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.h +++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/ChromeClientQt.h @@ -137,6 +137,7 @@ namespace WebCore { virtual void attachRootGraphicsLayer(Frame*, GraphicsLayer*); virtual void setNeedsOneShotDrawingSynchronization(); virtual void scheduleCompositingLayerSync(); + virtual bool allowsAcceleratedCompositing() const; #endif #if ENABLE(TOUCH_EVENTS) @@ -158,10 +159,11 @@ namespace WebCore { virtual void cancelGeolocationPermissionRequestForFrame(Frame*) { } #if ENABLE(WIDGETS_10_SUPPORT) - virtual bool isDocked(); + virtual bool isWindowed(); virtual bool isFloating(); - virtual bool isApplication(); virtual bool isFullscreen(); + virtual bool isMaximized(); + virtual bool isMinimized(); #endif QtAbstractWebPopup* createSelectPopup(); diff --git a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp index 5b1dd30..4ad008b 100644 --- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp +++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp @@ -1176,6 +1176,8 @@ public: platformWidget()->setMask(clipRegion); handleVisibility(); + + platformWidget()->update(); } virtual void show() diff --git a/src/3rdparty/webkit/WebKit/qt/tests/benchmarks/loading/loading.pro b/src/3rdparty/webkit/WebKit/qt/tests/benchmarks/loading/loading.pro index 258930c..99c64a5 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/benchmarks/loading/loading.pro +++ b/src/3rdparty/webkit/WebKit/qt/tests/benchmarks/loading/loading.pro @@ -1,3 +1,3 @@ isEmpty(OUTPUT_DIR): OUTPUT_DIR = ../../../../.. -exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc include(../../tests.pri) +exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc diff --git a/src/3rdparty/webkit/WebKit/qt/tests/benchmarks/painting/painting.pro b/src/3rdparty/webkit/WebKit/qt/tests/benchmarks/painting/painting.pro index 258930c..99c64a5 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/benchmarks/painting/painting.pro +++ b/src/3rdparty/webkit/WebKit/qt/tests/benchmarks/painting/painting.pro @@ -1,3 +1,3 @@ isEmpty(OUTPUT_DIR): OUTPUT_DIR = ../../../../.. -exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc include(../../tests.pri) +exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc diff --git a/src/3rdparty/webkit/WebKit/qt/tests/hybridPixmap/widget.ui b/src/3rdparty/webkit/WebKit/qt/tests/hybridPixmap/widget.ui index ae5e0b5..272d6a7 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/hybridPixmap/widget.ui +++ b/src/3rdparty/webkit/WebKit/qt/tests/hybridPixmap/widget.ui @@ -18,7 +18,7 @@ <widget class="WebView" name="webView" native="true"> <property name="url" stdset="0"> <url> - <string>about:blank</string> + <string notr="true">about:blank</string> </url> </property> </widget> diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/qgraphicswebview.pro b/src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/qgraphicswebview.pro index 6777615..e915d60 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/qgraphicswebview.pro +++ b/src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/qgraphicswebview.pro @@ -1,3 +1,3 @@ isEmpty(OUTPUT_DIR): OUTPUT_DIR = ../../../.. -exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc include(../tests.pri) +exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp index 657e09f..14f5820 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp +++ b/src/3rdparty/webkit/WebKit/qt/tests/qgraphicswebview/tst_qgraphicswebview.cpp @@ -31,6 +31,7 @@ class tst_QGraphicsWebView : public QObject private slots: void qgraphicswebview(); void crashOnViewlessWebPages(); + void microFocusCoordinates(); }; void tst_QGraphicsWebView::qgraphicswebview() @@ -102,6 +103,40 @@ void tst_QGraphicsWebView::crashOnViewlessWebPages() QVERIFY(waitForSignal(page, SIGNAL(loadFinished(bool)))); } +void tst_QGraphicsWebView::microFocusCoordinates() +{ + QWebPage* page = new QWebPage; + QGraphicsWebView* webView = new QGraphicsWebView; + webView->setPage( page ); + QGraphicsView* view = new QGraphicsView; + QGraphicsScene* scene = new QGraphicsScene(view); + view->setScene(scene); + scene->addItem(webView); + view->setGeometry(QRect(0,0,500,500)); + + page->mainFrame()->setHtml("<html><body>" \ + "<input type='text' id='input1' style='font--family: serif' value='' maxlength='20'/><br>" \ + "<canvas id='canvas1' width='500' height='500'/>" \ + "<input type='password'/><br>" \ + "<canvas id='canvas2' width='500' height='500'/>" \ + "</body></html>"); + + page->mainFrame()->setFocus(); + + QVariant initialMicroFocus = page->inputMethodQuery(Qt::ImMicroFocus); + QVERIFY(initialMicroFocus.isValid()); + + page->mainFrame()->scroll(0,300); + + QVariant currentMicroFocus = page->inputMethodQuery(Qt::ImMicroFocus); + QVERIFY(currentMicroFocus.isValid()); + + QCOMPARE(initialMicroFocus.toRect().translated(QPoint(0,-300)), currentMicroFocus.toRect()); + + delete view; +} + + QTEST_MAIN(tst_QGraphicsWebView) #include "tst_qgraphicswebview.moc" diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebelement/qwebelement.pro b/src/3rdparty/webkit/WebKit/qt/tests/qwebelement/qwebelement.pro index 6777615..e915d60 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/qwebelement/qwebelement.pro +++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebelement/qwebelement.pro @@ -1,3 +1,3 @@ isEmpty(OUTPUT_DIR): OUTPUT_DIR = ../../../.. -exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc include(../tests.pri) +exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/qwebframe.pro b/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/qwebframe.pro index 6777615..e915d60 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/qwebframe.pro +++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/qwebframe.pro @@ -1,3 +1,3 @@ isEmpty(OUTPUT_DIR): OUTPUT_DIR = ../../../.. -exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc include(../tests.pri) +exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp index ca14f6c..bea7a67 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp +++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebframe/tst_qwebframe.cpp @@ -57,6 +57,7 @@ class MyQObject : public QObject Q_PROPERTY(int intProperty READ intProperty WRITE setIntProperty) Q_PROPERTY(QVariant variantProperty READ variantProperty WRITE setVariantProperty) Q_PROPERTY(QVariantList variantListProperty READ variantListProperty WRITE setVariantListProperty) + Q_PROPERTY(QVariantMap variantMapProperty READ variantMapProperty WRITE setVariantMapProperty) Q_PROPERTY(QString stringProperty READ stringProperty WRITE setStringProperty) Q_PROPERTY(QStringList stringListProperty READ stringListProperty WRITE setStringListProperty) Q_PROPERTY(QByteArray byteArrayProperty READ byteArrayProperty WRITE setByteArrayProperty) @@ -67,6 +68,7 @@ class MyQObject : public QObject Q_PROPERTY(QKeySequence shortcut READ shortcut WRITE setShortcut) Q_PROPERTY(CustomType propWithCustomType READ propWithCustomType WRITE setPropWithCustomType) Q_PROPERTY(QWebElement webElementProperty READ webElementProperty WRITE setWebElementProperty) + Q_PROPERTY(QObject* objectStarProperty READ objectStarProperty WRITE setObjectStarProperty) Q_ENUMS(Policy Strategy) Q_FLAGS(Ability) @@ -104,7 +106,13 @@ public: m_hiddenValue(456.0), m_writeOnlyValue(789), m_readOnlyValue(987), - m_qtFunctionInvoked(-1) { } + m_objectStar(0), + m_qtFunctionInvoked(-1) + { + m_variantMapValue.insert("a", QVariant(123)); + m_variantMapValue.insert("b", QVariant(QLatin1String("foo"))); + m_variantMapValue.insert("c", QVariant::fromValue<QObject*>(this)); + } ~MyQObject() { } @@ -129,6 +137,13 @@ public: m_variantListValue = value; } + QVariantMap variantMapProperty() const { + return m_variantMapValue; + } + void setVariantMapProperty(const QVariantMap &value) { + m_variantMapValue = value; + } + QString stringProperty() const { return m_stringValue; } @@ -197,6 +212,15 @@ public: m_customType = c; } + QObject* objectStarProperty() const { + return m_objectStar; + } + + void setObjectStarProperty(QObject* object) { + m_objectStar = object; + } + + int qtFunctionInvoked() const { return m_qtFunctionInvoked; } @@ -472,6 +496,7 @@ private: int m_intValue; QVariant m_variantValue; QVariantList m_variantListValue; + QVariantMap m_variantMapValue; QString m_stringValue; QStringList m_stringListValue; QByteArray m_byteArrayValue; @@ -482,6 +507,7 @@ private: QKeySequence m_shortcut; QWebElement m_webElement; CustomType m_customType; + QObject* m_objectStar; int m_qtFunctionInvoked; QVariantList m_actuals; }; @@ -747,6 +773,21 @@ void tst_QWebFrame::getSetStaticProperty() { QString type; + QVariant ret = evalJSV("myObject.variantMapProperty", type); + QCOMPARE(type, sObject); + QCOMPARE(ret.type(), QVariant::Map); + QVariantMap vm = ret.value<QVariantMap>(); + QCOMPARE(vm.size(), 3); + QCOMPARE(vm.value("a").toInt(), 123); + QCOMPARE(vm.value("b").toString(), QLatin1String("foo")); + QCOMPARE(vm.value("c").value<QObject*>(), m_myObject); + } + QCOMPARE(evalJS("myObject.variantMapProperty.a === 123"), sTrue); + QCOMPARE(evalJS("myObject.variantMapProperty.b === 'foo'"), sTrue); + QCOMPARE(evalJS("myObject.variantMapProperty.c.variantMapProperty.b === 'foo'"), sTrue); + + { + QString type; QVariant ret = evalJSV("myObject.stringListProperty", type); QCOMPARE(type, sArray); QCOMPARE(ret.type(), QVariant::List); @@ -878,6 +919,21 @@ void tst_QWebFrame::getSetStaticProperty() QCOMPARE(evalJS("myObject.readOnlyProperty = 654;" "myObject.readOnlyProperty == 987"), sTrue); QCOMPARE(m_myObject->readOnlyProperty(), 987); + + // QObject* property + m_myObject->setObjectStarProperty(0); + QCOMPARE(m_myObject->objectStarProperty(), (QObject*)0); + QCOMPARE(evalJS("myObject.objectStarProperty == null"), sTrue); + QCOMPARE(evalJS("typeof myObject.objectStarProperty"), sObject); + QCOMPARE(evalJS("Boolean(myObject.objectStarProperty)"), sFalse); + QCOMPARE(evalJS("String(myObject.objectStarProperty) == 'null'"), sTrue); + QCOMPARE(evalJS("myObject.objectStarProperty.objectStarProperty"), + sUndefined); + m_myObject->setObjectStarProperty(this); + QCOMPARE(evalJS("myObject.objectStarProperty != null"), sTrue); + QCOMPARE(evalJS("typeof myObject.objectStarProperty"), sObject); + QCOMPARE(evalJS("Boolean(myObject.objectStarProperty)"), sTrue); + QCOMPARE(evalJS("String(myObject.objectStarProperty) != 'null'"), sTrue); } void tst_QWebFrame::getSetDynamicProperty() @@ -2841,7 +2897,7 @@ void tst_QWebFrame::evaluateWillCauseRepaint() #if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0) QTest::qWaitForWindowShown(&view); #else - QTest::qWait(2000); + QTest::qWait(2000); #endif view.page()->mainFrame()->evaluateJavaScript( diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebhistory/qwebhistory.pro b/src/3rdparty/webkit/WebKit/qt/tests/qwebhistory/qwebhistory.pro index 6777615..e915d60 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/qwebhistory/qwebhistory.pro +++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebhistory/qwebhistory.pro @@ -1,3 +1,3 @@ isEmpty(OUTPUT_DIR): OUTPUT_DIR = ../../../.. -exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc include(../tests.pri) +exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebhistoryinterface/qwebhistoryinterface.pro b/src/3rdparty/webkit/WebKit/qt/tests/qwebhistoryinterface/qwebhistoryinterface.pro index 6777615..e915d60 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/qwebhistoryinterface/qwebhistoryinterface.pro +++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebhistoryinterface/qwebhistoryinterface.pro @@ -1,3 +1,3 @@ isEmpty(OUTPUT_DIR): OUTPUT_DIR = ../../../.. -exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc include(../tests.pri) +exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebinspector/qwebinspector.pro b/src/3rdparty/webkit/WebKit/qt/tests/qwebinspector/qwebinspector.pro index 6777615..e915d60 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/qwebinspector/qwebinspector.pro +++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebinspector/qwebinspector.pro @@ -1,3 +1,3 @@ isEmpty(OUTPUT_DIR): OUTPUT_DIR = ../../../.. -exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc include(../tests.pri) +exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/qwebpage.pro b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/qwebpage.pro index 6777615..e915d60 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/qwebpage.pro +++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/qwebpage.pro @@ -1,3 +1,3 @@ isEmpty(OUTPUT_DIR): OUTPUT_DIR = ../../../.. -exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc include(../tests.pri) +exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp index 1f97e69..85d4b60 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp +++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebpage/tst_qwebpage.cpp @@ -80,7 +80,8 @@ private slots: void modified(); void contextMenuCrash(); void database(); - void createPlugin(); + void createPluginWithPluginsEnabled(); + void createPluginWithPluginsDisabled(); void destroyPlugin_data(); void destroyPlugin(); void createViewlessPlugin_data(); @@ -518,27 +519,20 @@ protected: } }; -void tst_QWebPage::createPlugin() +static void createPlugin(QWebView *view) { - QSignalSpy loadSpy(m_view, SIGNAL(loadFinished(bool))); + QSignalSpy loadSpy(view, SIGNAL(loadFinished(bool))); - PluginPage* newPage = new PluginPage(m_view); - m_view->setPage(newPage); + PluginPage* newPage = new PluginPage(view); + view->setPage(newPage); - // plugins not enabled by default, so the plugin shouldn't be loaded - m_view->setHtml(QString("<html><body><object type='application/x-qt-plugin' classid='pushbutton' id='mybutton'/></body></html>")); + // type has to be application/x-qt-plugin + view->setHtml(QString("<html><body><object type='application/x-foobarbaz' classid='pushbutton' id='mybutton'/></body></html>")); QTRY_COMPARE(loadSpy.count(), 1); QCOMPARE(newPage->calls.count(), 0); - m_view->settings()->setAttribute(QWebSettings::PluginsEnabled, true); - - // type has to be application/x-qt-plugin - m_view->setHtml(QString("<html><body><object type='application/x-foobarbaz' classid='pushbutton' id='mybutton'/></body></html>")); + view->setHtml(QString("<html><body><object type='application/x-qt-plugin' classid='pushbutton' id='mybutton'/></body></html>")); QTRY_COMPARE(loadSpy.count(), 2); - QCOMPARE(newPage->calls.count(), 0); - - m_view->setHtml(QString("<html><body><object type='application/x-qt-plugin' classid='pushbutton' id='mybutton'/></body></html>")); - QTRY_COMPARE(loadSpy.count(), 3); QCOMPARE(newPage->calls.count(), 1); { PluginPage::CallInfo ci = newPage->calls.takeFirst(); @@ -569,11 +563,11 @@ void tst_QWebPage::createPlugin() QCOMPARE(newPage->mainFrame()->evaluateJavaScript("mybutton.clicked.toString()").toString(), QString::fromLatin1("function clicked() {\n [native code]\n}")); - m_view->setHtml(QString("<html><body><table>" + view->setHtml(QString("<html><body><table>" "<tr><object type='application/x-qt-plugin' classid='lineedit' id='myedit'/></tr>" "<tr><object type='application/x-qt-plugin' classid='pushbutton' id='mybutton'/></tr>" "</table></body></html>"), QUrl("http://foo.bar.baz")); - QTRY_COMPARE(loadSpy.count(), 4); + QTRY_COMPARE(loadSpy.count(), 3); QCOMPARE(newPage->calls.count(), 2); { PluginPage::CallInfo ci = newPage->calls.takeFirst(); @@ -605,14 +599,22 @@ void tst_QWebPage::createPlugin() QVERIFY(ci.returnValue != 0); QVERIFY(ci.returnValue->inherits("QPushButton")); } +} - m_view->settings()->setAttribute(QWebSettings::PluginsEnabled, false); - - m_view->setHtml(QString("<html><body><object type='application/x-qt-plugin' classid='pushbutton' id='mybutton'/></body></html>")); - QTRY_COMPARE(loadSpy.count(), 5); - QCOMPARE(newPage->calls.count(), 0); +void tst_QWebPage::createPluginWithPluginsEnabled() +{ + m_view->settings()->setAttribute(QWebSettings::PluginsEnabled, true); + createPlugin(m_view); } +void tst_QWebPage::createPluginWithPluginsDisabled() +{ + // Qt Plugins should be loaded by QtWebKit even when PluginsEnabled is + // false. The client decides whether a Qt plugin is enabled or not when + // it decides whether or not to instantiate it. + m_view->settings()->setAttribute(QWebSettings::PluginsEnabled, false); + createPlugin(m_view); +} // Standard base class for template PluginTracerPage. In tests it is used as interface. class PluginCounterPage : public QWebPage { diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebplugindatabase/qwebplugindatabase.pro b/src/3rdparty/webkit/WebKit/qt/tests/qwebplugindatabase/qwebplugindatabase.pro index 6777615..e915d60 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/qwebplugindatabase/qwebplugindatabase.pro +++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebplugindatabase/qwebplugindatabase.pro @@ -1,3 +1,3 @@ isEmpty(OUTPUT_DIR): OUTPUT_DIR = ../../../.. -exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc include(../tests.pri) +exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebview/qwebview.pro b/src/3rdparty/webkit/WebKit/qt/tests/qwebview/qwebview.pro index 6777615..e915d60 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/qwebview/qwebview.pro +++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebview/qwebview.pro @@ -1,3 +1,3 @@ isEmpty(OUTPUT_DIR): OUTPUT_DIR = ../../../.. -exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc include(../tests.pri) +exists($${TARGET}.qrc):RESOURCES += $${TARGET}.qrc diff --git a/src/3rdparty/webkit/WebKit/qt/tests/qwebview/tst_qwebview.cpp b/src/3rdparty/webkit/WebKit/qt/tests/qwebview/tst_qwebview.cpp index ebcf4bb..100399e 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/qwebview/tst_qwebview.cpp +++ b/src/3rdparty/webkit/WebKit/qt/tests/qwebview/tst_qwebview.cpp @@ -48,6 +48,7 @@ private slots: void reusePage_data(); void reusePage(); + void microFocusCoordinates(); void crashTests(); }; @@ -203,6 +204,31 @@ void tst_QWebView::crashTests() QTRY_VERIFY(tester.m_executed); // If fail it means that the test wasn't executed. } +void tst_QWebView::microFocusCoordinates() +{ + QWebPage* page = new QWebPage; + QWebView* webView = new QWebView; + webView->setPage( page ); + + page->mainFrame()->setHtml("<html><body>" \ + "<input type='text' id='input1' style='font--family: serif' value='' maxlength='20'/><br>" \ + "<canvas id='canvas1' width='500' height='500'/>" \ + "<input type='password'/><br>" \ + "<canvas id='canvas2' width='500' height='500'/>" \ + "</body></html>"); + + page->mainFrame()->setFocus(); + + QVariant initialMicroFocus = page->inputMethodQuery(Qt::ImMicroFocus); + QVERIFY(initialMicroFocus.isValid()); + + page->mainFrame()->scroll(0,50); + + QVariant currentMicroFocus = page->inputMethodQuery(Qt::ImMicroFocus); + QVERIFY(currentMicroFocus.isValid()); + + QCOMPARE(initialMicroFocus.toRect().translated(QPoint(0,-50)), currentMicroFocus.toRect()); +} QTEST_MAIN(tst_QWebView) #include "tst_qwebview.moc" diff --git a/src/3rdparty/webkit/WebKit/qt/tests/tests.pri b/src/3rdparty/webkit/WebKit/qt/tests/tests.pri index 0a8f98c..525e662 100644 --- a/src/3rdparty/webkit/WebKit/qt/tests/tests.pri +++ b/src/3rdparty/webkit/WebKit/qt/tests/tests.pri @@ -2,6 +2,7 @@ TEMPLATE = app CONFIG -= app_bundle VPATH += $$_PRO_FILE_PWD_ +# Add the tst_ prefix, In QTDIR_build it's done by qttest_p4.prf !CONFIG(QTDIR_build):TARGET = tst_$$TARGET SOURCES += $${TARGET}.cpp INCLUDEPATH += \ diff --git a/src/corelib/kernel/qeventdispatcher_symbian.cpp b/src/corelib/kernel/qeventdispatcher_symbian.cpp index 4566ec0..a6d486e 100644 --- a/src/corelib/kernel/qeventdispatcher_symbian.cpp +++ b/src/corelib/kernel/qeventdispatcher_symbian.cpp @@ -642,8 +642,8 @@ public: QIdleDetectorThread() : m_state(STATE_RUN), m_stop(false) { - qt_symbian_throwIfError(m_lock.CreateLocal()); - TInt err = m_idleDetectorThread.Create(KNullDesC(), &idleDetectorThreadFunc, 1024, &User::Allocator(), this); + qt_symbian_throwIfError(m_lock.CreateLocal(0)); + TInt err = m_idleDetectorThread.Create(KNullDesC(), &idleDetectorThreadFunc, 1024, NULL, this); if (err != KErrNone) m_lock.Close(); qt_symbian_throwIfError(err); @@ -694,7 +694,7 @@ private: enum IdleStates {STATE_KICKED, STATE_RUN} m_state; bool m_stop; RThread m_idleDetectorThread; - RFastLock m_lock; + RSemaphore m_lock; }; Q_GLOBAL_STATIC(QIdleDetectorThread, idleDetectorThread); diff --git a/src/corelib/tools/qscopedpointer.cpp b/src/corelib/tools/qscopedpointer.cpp index e7dd769..b06112d 100644 --- a/src/corelib/tools/qscopedpointer.cpp +++ b/src/corelib/tools/qscopedpointer.cpp @@ -57,7 +57,7 @@ QT_BEGIN_NAMESPACE called resource acquisition is initialization(RAII). QScopedPointer guarantees that the object pointed to will get deleted when - the current scope dissapears. + the current scope disappears. Consider this function which does heap allocations, and have various exit points: @@ -227,7 +227,7 @@ QT_BEGIN_NAMESPACE /*! \class QScopedArrayPointer - + \brief The QScopedArrayPointer class stores a pointer to a dynamically allocated array of objects, and deletes it upon destruction. diff --git a/src/dbus/qdbusinterface.cpp b/src/dbus/qdbusinterface.cpp index 7cc43ed..b989cab 100644 --- a/src/dbus/qdbusinterface.cpp +++ b/src/dbus/qdbusinterface.cpp @@ -260,7 +260,7 @@ void *QDBusInterface::qt_metacast(const char *_clname) int QDBusInterface::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = QDBusAbstractInterface::qt_metacall(_c, _id, _a); - if (_id < 0 || !d_func()->isValid) + if (_id < 0 || !d_func()->isValid || !d_func()->metaObject) return _id; return d_func()->metacall(_c, _id, _a); } diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp index bd0f0d8..8cee021 100644 --- a/src/gui/graphicsview/qgraphicsscene.cpp +++ b/src/gui/graphicsview/qgraphicsscene.cpp @@ -820,13 +820,13 @@ void QGraphicsScenePrivate::setFocusItemHelper(QGraphicsItem *item, #endif //QT_NO_IM } - if (item) { + if (item) focusItem = item; + updateInputMethodSensitivityInViews(); + if (item) { QFocusEvent event(QEvent::FocusIn, focusReason); sendEvent(item, &event); } - - updateInputMethodSensitivityInViews(); } /*! diff --git a/src/gui/inputmethod/qcoefepinputcontext_s60.cpp b/src/gui/inputmethod/qcoefepinputcontext_s60.cpp index b42e0ab..610ac3c 100644 --- a/src/gui/inputmethod/qcoefepinputcontext_s60.cpp +++ b/src/gui/inputmethod/qcoefepinputcontext_s60.cpp @@ -87,7 +87,7 @@ QCoeFepInputContext::QCoeFepInputContext(QObject *parent) m_fepState->SetDefaultInputMode( EAknEditorTextInputMode ); m_fepState->SetPermittedInputModes( EAknEditorAllInputModes ); m_fepState->SetDefaultCase( EAknEditorLowerCase ); - m_fepState->SetPermittedCases( EAknEditorLowerCase|EAknEditorUpperCase ); + m_fepState->SetPermittedCases( EAknEditorAllCaseModes ); m_fepState->SetSpecialCharacterTableResourceId(R_AVKON_SPECIAL_CHARACTER_TABLE_DIALOG); m_fepState->SetNumericKeymap( EAknEditorStandardNumberModeKeymap ); } diff --git a/src/gui/kernel/qapplication_s60.cpp b/src/gui/kernel/qapplication_s60.cpp index 5f7813b..f4c7304 100644 --- a/src/gui/kernel/qapplication_s60.cpp +++ b/src/gui/kernel/qapplication_s60.cpp @@ -440,7 +440,7 @@ void QSymbianControl::translateAdvancedPointerEvent(const TAdvancedPointerEvent state |= Qt::TouchPointPrimary; touchPoint.setState(state); - QPointF screenPos = QPointF(event->iPosition.iX, event->iPosition.iY); + QPointF screenPos = qwidget->mapToGlobal(QPoint(event->iPosition.iX, event->iPosition.iY)); touchPoint.setScreenPos(screenPos); touchPoint.setNormalizedPos(QPointF(screenPos.x() / screenGeometry.width(), screenPos.y() / screenGeometry.height())); diff --git a/src/gui/text/qfontdatabase_s60.cpp b/src/gui/text/qfontdatabase_s60.cpp index 3ad0806..95774f9 100644 --- a/src/gui/text/qfontdatabase_s60.cpp +++ b/src/gui/text/qfontdatabase_s60.cpp @@ -98,18 +98,26 @@ public: QSymbianFontDatabaseExtrasImplementation(); ~QSymbianFontDatabaseExtrasImplementation(); - const QSymbianTypeFaceExtras *extras(const QString &typeface) const; + const QSymbianTypeFaceExtras *extras(const QString &typeface, bool bold, bool italic) const; private: RHeap* m_heap; CFontStore *m_store; COpenFontRasterizer *m_rasterizer; - mutable QHash<QString, const QSymbianTypeFaceExtras *> m_extras; + mutable QList<const QSymbianTypeFaceExtras *> m_extras; + mutable QHash<QString, const QSymbianTypeFaceExtras *> m_extrasHash; }; QSymbianFontDatabaseExtrasImplementation::QSymbianFontDatabaseExtrasImplementation() { - m_heap = User::ChunkHeap(NULL, 0x1000, 0x100000); + QStringList filters; + filters.append(QLatin1String("*.ttf")); + filters.append(QLatin1String("*.ccc")); + const QFileInfoList fontFiles = alternativeFilePaths(QLatin1String("resource\\Fonts"), filters); + + const TInt heapMinLength = 0x1000; + const TInt heapMaxLength = qMax(0x20000 * fontFiles.count(), heapMinLength); + m_heap = User::ChunkHeap(NULL, heapMinLength, heapMaxLength); QT_TRAP_THROWING( m_store = CFontStore::NewL(m_heap); m_rasterizer = COpenFontRasterizer::NewL(TUid::Uid(0x101F7F5E)); @@ -117,19 +125,16 @@ QSymbianFontDatabaseExtrasImplementation::QSymbianFontDatabaseExtrasImplementati m_store->InstallRasterizerL(m_rasterizer); CleanupStack::Pop(m_rasterizer);); - QStringList filters; - filters.append(QString::fromLatin1("*.ttf")); - filters.append(QString::fromLatin1("*.ccc")); - const QFileInfoList fontFiles = alternativeFilePaths(QString::fromLatin1("resource\\Fonts"), filters); foreach (const QFileInfo &fontFileInfo, fontFiles) { const QString fontFile = QDir::toNativeSeparators(fontFileInfo.absoluteFilePath()); TPtrC fontFilePtr(qt_QString2TPtrC(fontFile)); QT_TRAP_THROWING(m_store->AddFileL(fontFilePtr)); } } + QSymbianFontDatabaseExtrasImplementation::~QSymbianFontDatabaseExtrasImplementation() { - typedef QHash<QString, const QSymbianTypeFaceExtras *>::iterator iterator; + typedef QList<const QSymbianTypeFaceExtras *>::iterator iterator; for (iterator p = m_extras.begin(); p != m_extras.end(); ++p) { m_store->ReleaseFont((*p)->fontOwner()); delete *p; @@ -156,13 +161,18 @@ COpenFont* OpenFontFromBitmapFont(const CBitmapFont* aBitmapFont) } #endif // FNTSTORE_H_INLINES_SUPPORT_FMM -const QSymbianTypeFaceExtras *QSymbianFontDatabaseExtrasImplementation::extras(const QString &typeface) const +const QSymbianTypeFaceExtras *QSymbianFontDatabaseExtrasImplementation::extras(const QString &typeface, + bool bold, bool italic) const { - if (!m_extras.contains(typeface)) { + const QString searchKey = typeface + QString::number(int(bold)) + QString::number(int(italic)); + if (!m_extrasHash.contains(searchKey)) { CFont* font = NULL; - TFontSpec spec(qt_QString2TPtrC(typeface), 1); - spec.iHeight = 1; - const TInt err = m_store->GetNearestFontToDesignHeightInPixels(font, spec); + TFontSpec searchSpec(qt_QString2TPtrC(typeface), 1); + if (bold) + searchSpec.iFontStyle.SetStrokeWeight(EStrokeWeightBold); + if (italic) + searchSpec.iFontStyle.SetPosture(EPostureItalic); + const TInt err = m_store->GetNearestFontToDesignHeightInPixels(font, searchSpec); Q_ASSERT(err == KErrNone && font); const CBitmapFont *bitmapFont = static_cast<CBitmapFont*>(font); COpenFont *openFont = @@ -171,9 +181,20 @@ const QSymbianTypeFaceExtras *QSymbianFontDatabaseExtrasImplementation::extras(c #else OpenFontFromBitmapFont(bitmapFont); #endif // FNTSTORE_H_INLINES_SUPPORT_FMM - m_extras.insert(typeface, new QSymbianTypeFaceExtras(font, openFont)); + const TOpenFontFaceAttrib* const attrib = openFont->FaceAttrib(); + const QString foundKey = + QString((const QChar*)attrib->FullName().Ptr(), attrib->FullName().Length()); + if (!m_extrasHash.contains(foundKey)) { + QSymbianTypeFaceExtras *extras = new QSymbianTypeFaceExtras(font, openFont); + m_extras.append(extras); + m_extrasHash.insert(searchKey, extras); + m_extrasHash.insert(foundKey, extras); + } else { + m_store->ReleaseFont(font); + m_extrasHash.insert(searchKey, m_extrasHash.value(foundKey)); + } } - return m_extras.value(typeface); + return m_extrasHash.value(searchKey); } #else class QFontEngineFTS60 : public QFontEngineFT @@ -273,7 +294,8 @@ static void initializeDb() style->smoothScalable = typefaceSupport.iIsScalable; style->pixelSize(0, true); - const QSymbianTypeFaceExtras *typeFaceExtras = dbExtras->extras(familyName); + const QSymbianTypeFaceExtras *typeFaceExtras = + dbExtras->extras(familyName, faceAttrib.IsBold(), faceAttrib.IsItalic()); const QByteArray os2Table = typeFaceExtras->getSfntTable(MAKE_TAG('O', 'S', '/', '2')); const unsigned char* data = reinterpret_cast<const unsigned char*>(os2Table.constData()); const unsigned char* ulUnicodeRange = data + 42; @@ -396,7 +418,8 @@ QFontEngine *QFontDatabase::findFont(int script, const QFontPrivate *, const QFo #if defined(QT_NO_FREETYPE) const QSymbianFontDatabaseExtrasImplementation *dbExtras = static_cast<const QSymbianFontDatabaseExtrasImplementation*>(db->symbianExtras); - const QSymbianTypeFaceExtras *typeFaceExtras = dbExtras->extras(fontFamily); + const QSymbianTypeFaceExtras *typeFaceExtras = + dbExtras->extras(fontFamily, request.weight > QFont::Normal, request.style != QFont::StyleNormal); fe = new QFontEngineS60(request, typeFaceExtras); #else QFontEngine::FaceId faceId; diff --git a/src/gui/text/qfontengine_s60.cpp b/src/gui/text/qfontengine_s60.cpp index a9960e4..93f02ff 100644 --- a/src/gui/text/qfontengine_s60.cpp +++ b/src/gui/text/qfontengine_s60.cpp @@ -59,13 +59,10 @@ QSymbianTypeFaceExtras::QSymbianTypeFaceExtras(CFont* fontOwner, COpenFont *font , m_symbolCMap(false) , m_fontOwner(fontOwner) { - TAny *shapingExtension = NULL; - m_font->ExtendedInterface(KUidOpenFontShapingExtension, shapingExtension); - m_shapingExtension = static_cast<MOpenFontShapingExtension*>(shapingExtension); TAny *trueTypeExtension = NULL; m_font->ExtendedInterface(KUidOpenFontTrueTypeExtension, trueTypeExtension); m_trueTypeExtension = static_cast<MOpenFontTrueTypeExtension*>(trueTypeExtension); - Q_ASSERT(m_shapingExtension && m_trueTypeExtension); + Q_ASSERT(m_trueTypeExtension); } QByteArray QSymbianTypeFaceExtras::getSfntTable(uint tag) const @@ -114,26 +111,6 @@ const unsigned char *QSymbianTypeFaceExtras::cmap() const return m_cmap; } -QPainterPath QSymbianTypeFaceExtras::glyphOutline(glyph_t glyph) const -{ - QPainterPath result; - QPolygonF polygon; - TInt glyphIndex = glyph; - TInt pointNumber = 0; - TInt x, y; - while (m_shapingExtension->GlyphPointInFontUnits(glyphIndex, pointNumber++, x, y)) { - const QPointF point(qreal(x) / 0xffff, qreal(y) / 0xffff); - if (polygon.contains(point)) { - result.addPolygon(polygon); - result.closeSubpath(); - polygon.clear(); - } else { - polygon.append(point); - } - } - return result; -} - CFont *QSymbianTypeFaceExtras::fontOwner() const { return m_fontOwner; diff --git a/src/gui/text/qfontengine_s60_p.h b/src/gui/text/qfontengine_s60_p.h index b6b117f..6883730 100644 --- a/src/gui/text/qfontengine_s60_p.h +++ b/src/gui/text/qfontengine_s60_p.h @@ -62,7 +62,7 @@ class CFont; QT_BEGIN_NAMESPACE -// ..gives us access to truetype tables, UTF-16<->GlyphID mapping, and glyph outlines +// ..gives us access to truetype tables class QSymbianTypeFaceExtras { public: @@ -71,12 +71,10 @@ public: QByteArray getSfntTable(uint tag) const; bool getSfntTableData(uint tag, uchar *buffer, uint *length) const; const unsigned char *cmap() const; - QPainterPath glyphOutline(glyph_t glyph) const; CFont *fontOwner() const; private: COpenFont *m_font; - const MOpenFontShapingExtension *m_shapingExtension; mutable MOpenFontTrueTypeExtension *m_trueTypeExtension; mutable const unsigned char *m_cmap; mutable bool m_symbolCMap; diff --git a/src/gui/text/qtextdocument.cpp b/src/gui/text/qtextdocument.cpp index 3e556a7..afba678 100644 --- a/src/gui/text/qtextdocument.cpp +++ b/src/gui/text/qtextdocument.cpp @@ -1704,7 +1704,7 @@ void QTextDocument::print(QPrinter *printer) const return; const QTextDocument *doc = this; - QTextDocument *clonedDoc = 0; + QScopedPointer<QTextDocument> clonedDoc; (void)doc->documentLayout(); // make sure that there is a layout QRectF body = QRectF(QPointF(0, 0), d->pageSize); @@ -1737,7 +1737,7 @@ void QTextDocument::print(QPrinter *printer) const printerPageSize.height() / scaledPageSize.height()); } else { doc = clone(const_cast<QTextDocument *>(this)); - clonedDoc = const_cast<QTextDocument *>(doc); + clonedDoc.reset(const_cast<QTextDocument *>(doc)); for (QTextBlock srcBlock = firstBlock(), dstBlock = clonedDoc->firstBlock(); srcBlock.isValid() && dstBlock.isValid(); @@ -1812,7 +1812,7 @@ void QTextDocument::print(QPrinter *printer) const for (int j = 0; j < pageCopies; ++j) { if (printer->printerState() == QPrinter::Aborted || printer->printerState() == QPrinter::Error) - goto UserCanceled; + return; printPage(page, &p, doc, body, pageNumberPos); if (j < pageCopies - 1) printer->newPage(); @@ -1832,9 +1832,6 @@ void QTextDocument::print(QPrinter *printer) const if ( i < docCopies - 1) printer->newPage(); } - -UserCanceled: - delete clonedDoc; } #endif diff --git a/src/gui/widgets/qmenu_symbian.cpp b/src/gui/widgets/qmenu_symbian.cpp index 4a9cfed..ab2bdea 100644 --- a/src/gui/widgets/qmenu_symbian.cpp +++ b/src/gui/widgets/qmenu_symbian.cpp @@ -149,8 +149,12 @@ static void qt_symbian_insert_action(QSymbianMenuAction* action, QList<SymbianMe "Too many menu actions"); const int underlineShortCut = QApplication::style()->styleHint(QStyle::SH_UnderlineShortcut); - QString iconText = action->action->iconText(); - TPtrC menuItemText = qt_QString2TPtrC( underlineShortCut ? action->action->text() : iconText); + QString actionText; + if (underlineShortCut) + actionText = action->action->text().left(CEikMenuPaneItem::SData::ENominalTextLength); + else + actionText = action->action->iconText().left(CEikMenuPaneItem::SData::ENominalTextLength); + TPtrC menuItemText = qt_QString2TPtrC(actionText); if (action->action->menu()) { SymbianMenuItem* menuItem = new SymbianMenuItem(); menuItem->menuItemData.iCascadeId = action->command; diff --git a/tests/auto/qdbusinterface/tst_qdbusinterface.cpp b/tests/auto/qdbusinterface/tst_qdbusinterface.cpp index 826bd70..d8ff2d3 100644 --- a/tests/auto/qdbusinterface/tst_qdbusinterface.cpp +++ b/tests/auto/qdbusinterface/tst_qdbusinterface.cpp @@ -157,6 +157,18 @@ public slots: } }; +class DerivedFromQDBusInterface: public QDBusInterface +{ + Q_OBJECT +public: + DerivedFromQDBusInterface() + : QDBusInterface("com.example.Test", "/") + {} + +public slots: + void method() {} +}; + // helper function void emitSignal(const QString &interface, const QString &name, const QString &arg) { @@ -183,6 +195,7 @@ private slots: void notConnected(); void notValid(); + void notValidDerived(); void invalidAfterServiceOwnerChanged(); void introspect(); void callMethod(); @@ -219,6 +232,7 @@ void tst_QDBusInterface::notConnected() connection); QVERIFY(!interface.isValid()); + QVERIFY(!QMetaObject::invokeMethod(&interface, "ListNames", Qt::DirectConnection)); } void tst_QDBusInterface::notValid() @@ -230,6 +244,14 @@ void tst_QDBusInterface::notValid() connection); QVERIFY(!interface.isValid()); + QVERIFY(!QMetaObject::invokeMethod(&interface, "ListNames", Qt::DirectConnection)); +} + +void tst_QDBusInterface::notValidDerived() +{ + DerivedFromQDBusInterface c; + QVERIFY(!c.isValid()); + QMetaObject::invokeMethod(&c, "method", Qt::DirectConnection); } void tst_QDBusInterface::invalidAfterServiceOwnerChanged() diff --git a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp index 5e889f4..d0752af 100644 --- a/tests/auto/qgraphicsview/tst_qgraphicsview.cpp +++ b/tests/auto/qgraphicsview/tst_qgraphicsview.cpp @@ -3665,6 +3665,22 @@ void tst_QGraphicsView::update() #endif } +class FocusItem : public QGraphicsRectItem +{ +public: + FocusItem() : QGraphicsRectItem(0, 0, 20, 20) { + m_viewHasIMEnabledInFocusInEvent = false; + } + + void focusInEvent(QFocusEvent *event) + { + QGraphicsView *view = scene()->views().first(); + m_viewHasIMEnabledInFocusInEvent = view->testAttribute(Qt::WA_InputMethodEnabled); + } + + bool m_viewHasIMEnabledInFocusInEvent; +}; + void tst_QGraphicsView::inputMethodSensitivity() { QGraphicsScene scene; @@ -3674,7 +3690,7 @@ void tst_QGraphicsView::inputMethodSensitivity() QApplication::setActiveWindow(&view); QTRY_COMPARE(QApplication::activeWindow(), static_cast<QWidget *>(&view)); - QGraphicsRectItem *item = new QGraphicsRectItem; + FocusItem *item = new FocusItem; view.setAttribute(Qt::WA_InputMethodEnabled, true); @@ -3703,6 +3719,7 @@ void tst_QGraphicsView::inputMethodSensitivity() scene.setFocusItem(item); QCOMPARE(scene.focusItem(), static_cast<QGraphicsItem *>(item)); QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), true); + QCOMPARE(item->m_viewHasIMEnabledInFocusInEvent, true); item->setFlag(QGraphicsItem::ItemAcceptsInputMethod, false); QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), false); @@ -3711,15 +3728,17 @@ void tst_QGraphicsView::inputMethodSensitivity() QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), true); // introduce another item that is focusable but does not accept input methods - QGraphicsRectItem *item2 = new QGraphicsRectItem; + FocusItem *item2 = new FocusItem; item2->setFlag(QGraphicsItem::ItemIsFocusable); scene.addItem(item2); scene.setFocusItem(item2); QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), false); + QCOMPARE(item2->m_viewHasIMEnabledInFocusInEvent, false); QCOMPARE(scene.focusItem(), static_cast<QGraphicsItem *>(item2)); scene.setFocusItem(item); QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), true); + QCOMPARE(item->m_viewHasIMEnabledInFocusInEvent, true); QCOMPARE(scene.focusItem(), static_cast<QGraphicsItem *>(item)); view.setScene(0); @@ -3728,10 +3747,12 @@ void tst_QGraphicsView::inputMethodSensitivity() view.setScene(&scene); QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), true); + QCOMPARE(item->m_viewHasIMEnabledInFocusInEvent, true); QCOMPARE(scene.focusItem(), static_cast<QGraphicsItem *>(item)); scene.setFocusItem(item2); QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), false); + QCOMPARE(item2->m_viewHasIMEnabledInFocusInEvent, false); QCOMPARE(scene.focusItem(), static_cast<QGraphicsItem *>(item2)); view.setScene(0); @@ -3744,6 +3765,7 @@ void tst_QGraphicsView::inputMethodSensitivity() view.setScene(&scene); QCOMPARE(view.testAttribute(Qt::WA_InputMethodEnabled), true); + QCOMPARE(item->m_viewHasIMEnabledInFocusInEvent, true); QCOMPARE(scene.focusItem(), static_cast<QGraphicsItem *>(item)); } diff --git a/tests/auto/selftests/tst_selftests.cpp b/tests/auto/selftests/tst_selftests.cpp index 0cff2fd..0818b4c 100644 --- a/tests/auto/selftests/tst_selftests.cpp +++ b/tests/auto/selftests/tst_selftests.cpp @@ -131,11 +131,11 @@ static QList<QByteArray> splitLines(QByteArray ba) if (index == -1) { continue; } - int end = line.indexOf('"', index + strlen(markers[j][0]) + 1); + int end = line.indexOf('"', index + strlen(markers[j][0])); if (end == -1) { continue; } - line.replace(index, end-index, markers[j][1]); + line.replace(index, end-index + 1, markers[j][1]); } } |