summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config.tests/x11/xvideo/xvideo.cpp52
-rw-r--r--config.tests/x11/xvideo/xvideo.pro4
-rwxr-xr-xconfigure91
-rw-r--r--doc/src/legal/3rdparty.qdoc44
-rw-r--r--doc/src/qt4-intro.qdoc14
-rw-r--r--src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp6
-rw-r--r--src/3rdparty/libpng/png.h2
-rw-r--r--src/3rdparty/libpng/pngpriv.h4
-rw-r--r--src/3rdparty/webkit/WebCore/dom/XMLTokenizerQt.cpp2
-rw-r--r--src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp4
-rw-r--r--src/activeqt/container/qaxbase.cpp4
-rw-r--r--src/activeqt/container/qaxwidget.cpp34
-rw-r--r--src/activeqt/control/qaxserverbase.cpp10
-rw-r--r--src/corelib/corelib.pro22
-rw-r--r--src/corelib/global/qlibraryinfo.cpp2
-rw-r--r--src/corelib/io/qurl.cpp2
-rw-r--r--src/corelib/kernel/qcoreapplication_win.cpp12
-rw-r--r--src/corelib/thread/qmutex.cpp7
-rw-r--r--src/corelib/tools/qlocale.cpp10
-rw-r--r--src/corelib/tools/qlocale_symbian.cpp6
-rw-r--r--src/corelib/tools/qregexp.cpp11
-rw-r--r--src/corelib/tools/qsharedpointer_impl.h1
-rw-r--r--src/corelib/tools/qsimd.cpp246
-rw-r--r--src/corelib/tools/qsimd_p.h126
-rw-r--r--src/corelib/tools/qstring.cpp112
-rw-r--r--src/corelib/tools/qstring.h10
-rw-r--r--src/corelib/tools/qstringbuilder.h40
-rw-r--r--src/corelib/tools/tools.pri2
-rw-r--r--src/declarative/graphicsitems/qmlgraphicsparticles.cpp12
-rw-r--r--src/gui/graphicsview/qgraphicsitem_p.h11
-rw-r--r--src/gui/graphicsview/qgraphicsscene.cpp452
-rw-r--r--src/gui/graphicsview/qgraphicsscene_p.h15
-rw-r--r--src/gui/image/qpaintengine_pic.cpp5
-rw-r--r--src/gui/itemviews/qheaderview.cpp9
-rw-r--r--src/gui/itemviews/qsortfilterproxymodel.cpp8
-rw-r--r--src/gui/itemviews/qtreeview.cpp13
-rw-r--r--src/gui/kernel/qapplication_x11.cpp76
-rw-r--r--src/gui/kernel/qcocoaview_mac.mm57
-rw-r--r--src/gui/kernel/qcocoaview_mac_p.h1
-rw-r--r--src/gui/kernel/qgesture_p.h2
-rw-r--r--src/gui/kernel/qgesturerecognizer.cpp1
-rw-r--r--src/gui/kernel/qkeymapper_win.cpp2
-rw-r--r--src/gui/kernel/qt_cocoa_helpers_mac.mm10
-rw-r--r--src/gui/kernel/qwidget.cpp9
-rw-r--r--src/gui/painting/qdrawhelper.cpp233
-rw-r--r--src/gui/painting/qdrawhelper_p.h11
-rw-r--r--src/gui/painting/qdrawutil.cpp210
-rw-r--r--src/gui/painting/qdrawutil.h25
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp3
-rw-r--r--src/gui/painting/qpaintengineex.cpp21
-rw-r--r--src/gui/painting/qpaintengineex_p.h2
-rw-r--r--src/gui/painting/qpainter.cpp209
-rw-r--r--src/gui/painting/qpainter.h26
-rw-r--r--src/gui/painting/qpainter_p.h8
-rw-r--r--src/gui/painting/qprintengine_win.cpp3
-rw-r--r--src/gui/styles/qmacstyle_mac.mm2
-rw-r--r--src/gui/text/qfont.h1
-rw-r--r--src/gui/text/qfontengine.cpp10
-rw-r--r--src/gui/text/qfontengine_win.cpp6
-rw-r--r--src/gui/text/qstatictext.cpp4
-rw-r--r--src/multimedia/base/qgraphicsvideoitem.cpp3
-rw-r--r--src/multimedia/base/qmediacontent.cpp1
-rw-r--r--src/multimedia/base/qmediacontrol.cpp1
-rw-r--r--src/multimedia/base/qmediaobject.cpp1
-rw-r--r--src/multimedia/base/qmediaplaylist.cpp1
-rw-r--r--src/multimedia/base/qmediaplaylistcontrol.cpp1
-rw-r--r--src/multimedia/base/qmediaplaylistioplugin.cpp3
-rw-r--r--src/multimedia/base/qmediaplaylistnavigator.cpp1
-rw-r--r--src/multimedia/base/qmediaplaylistprovider.cpp1
-rw-r--r--src/multimedia/base/qmediaresource.cpp1
-rw-r--r--src/multimedia/base/qmediaservice.cpp1
-rw-r--r--src/multimedia/base/qmediaserviceprovider.cpp6
-rw-r--r--src/multimedia/base/qmediatimerange.cpp2
-rw-r--r--src/multimedia/base/qmetadatacontrol.cpp2
-rw-r--r--src/multimedia/base/qvideodevicecontrol.cpp1
-rw-r--r--src/multimedia/base/qvideooutputcontrol.cpp2
-rw-r--r--src/multimedia/base/qvideorenderercontrol.cpp2
-rw-r--r--src/multimedia/base/qvideowidget.cpp2
-rw-r--r--src/multimedia/base/qvideowidgetcontrol.cpp2
-rw-r--r--src/multimedia/base/qvideowindowcontrol.cpp1
-rw-r--r--src/multimedia/playback/qmediaplayer.cpp2
-rw-r--r--src/multimedia/playback/qmediaplayercontrol.cpp2
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp51
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h4
-rw-r--r--src/openvg/qpaintengine_vg.cpp26
-rw-r--r--src/openvg/qpaintengine_vg_p.h2
-rw-r--r--src/plugins/bearer/generic/qgenericengine.cpp1
-rw-r--r--src/plugins/mediaservices/gstreamer/gstreamer.pro12
-rw-r--r--src/plugins/mediaservices/gstreamer/qgstreamermessage.cpp2
-rw-r--r--src/plugins/mediaservices/mediaservices.pro13
-rw-r--r--src/qbase.pri1
-rw-r--r--src/qt3support/text/q3richtext.cpp2
-rw-r--r--src/qt3support/text/q3textedit.cpp2
-rw-r--r--src/qt3support/text/q3textstream.cpp2
-rw-r--r--src/qt3support/tools/q3gcache.cpp10
-rw-r--r--src/qt3support/tools/q3gdict.cpp4
-rw-r--r--src/script/api/qscriptengine_p.h2
-rw-r--r--src/sql/drivers/oci/qsql_oci.cpp6
-rw-r--r--src/sql/drivers/odbc/qsql_odbc.cpp2
-rw-r--r--tests/auto/gestures/tst_gestures.cpp141
-rw-r--r--tests/auto/headers/headers.pro2
-rw-r--r--tests/auto/headers/headersclean.cpp86
-rw-r--r--tests/auto/qchar/qchar.pro1
-rw-r--r--tests/auto/qchar/tst_qchar.cpp5
-rw-r--r--tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp57
-rw-r--r--tests/auto/qgl/tst_qgl.cpp103
-rw-r--r--tests/auto/qpainter/tst_qpainter.cpp48
-rw-r--r--tests/auto/qregexp/tst_qregexp.cpp93
-rw-r--r--tests/auto/qscriptvalue/testgen/data.txt43
-rwxr-xr-xtests/auto/qscriptvalue/testgen/gen.py3
-rw-r--r--tests/auto/qscriptvalue/testgen/testgenerator.cpp8
-rw-r--r--tests/auto/qscriptvalue/tst_qscriptvalue.h12
-rw-r--r--tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp3725
-rw-r--r--tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp38
-rw-r--r--tests/auto/qstatictext/qstatictext.pro2
-rw-r--r--tests/auto/qstatictext/tst_qstatictext.cpp37
-rw-r--r--tests/auto/qstring/tst_qstring.cpp107
-rw-r--r--tests/auto/qstringbuilder1/stringbuilder.cpp14
-rw-r--r--tests/auto/qtreeview/tst_qtreeview.cpp14
-rw-r--r--tools/assistant/lib/qhelp_global.cpp2
-rw-r--r--tools/assistant/lib/qhelpdbreader.cpp2
-rw-r--r--tools/qdoc3/codemarker.cpp2
-rw-r--r--tools/qdoc3/cppcodemarker.cpp2
-rw-r--r--tools/qdoc3/cppcodeparser.cpp2
-rw-r--r--tools/qdoc3/generator.cpp26
-rw-r--r--tools/qdoc3/generator.h7
-rw-r--r--tools/qdoc3/htmlgenerator.cpp56
-rw-r--r--tools/qdoc3/htmlgenerator.h2
-rw-r--r--tools/qdoc3/node.cpp8
-rw-r--r--tools/qdoc3/node.h6
-rw-r--r--tools/qdoc3/test/qt_zh_CN.qdocconf86
-rw-r--r--tools/qtconfig/mainwindow.cpp6
-rw-r--r--tools/qtconfig/qtconfig.pro5
-rw-r--r--util/unicode/data/DerivedNormalizationProps.txt2650
-rwxr-xr-xutil/webkit/mkdist-webkit36
135 files changed, 8905 insertions, 1050 deletions
diff --git a/config.tests/x11/xvideo/xvideo.cpp b/config.tests/x11/xvideo/xvideo.cpp
new file mode 100644
index 0000000..515dc00
--- /dev/null
+++ b/config.tests/x11/xvideo/xvideo.cpp
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the FOO module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <X11/Xlib.h>
+#include <X11/extensions/Xv.h>
+#include <X11/extensions/Xvlib.h>
+
+int main(int argc, char** argv)
+{
+ unsigned int count = 0;
+ XvAdaptorInfo *adaptors = 0;
+ XvQueryAdaptors(0, 0, &count, &adaptors);
+ return 0;
+}
diff --git a/config.tests/x11/xvideo/xvideo.pro b/config.tests/x11/xvideo/xvideo.pro
new file mode 100644
index 0000000..d4c63a0
--- /dev/null
+++ b/config.tests/x11/xvideo/xvideo.pro
@@ -0,0 +1,4 @@
+CONFIG += x11
+CONFIG -= qt
+SOURCES = xvideo.cpp
+LIBS += -lXv
diff --git a/configure b/configure
index 0179a82..87551fa 100755
--- a/configure
+++ b/configure
@@ -640,6 +640,7 @@ CFG_SHARED=yes
CFG_SM=auto
CFG_XSHAPE=auto
CFG_XSYNC=auto
+CFG_XVIDEO=auto
CFG_XINERAMA=runtime
CFG_XFIXES=runtime
CFG_ZLIB=auto
@@ -924,7 +925,8 @@ while [ "$#" -gt 0 ]; do
VAL=no
;;
#Qt style yes options
- -incremental|-qvfb|-profile|-shared|-static|-sm|-xinerama|-xshape|-xsync|-xinput|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-nis|-qdbus|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-qt3support|-debug-and-release|-exceptions|-cocoa|-carbon|-universal|-prefix-install|-silent|-armfpa|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-ptmalloc|-xmlpatterns|-phonon|-phonon-backend|-multimedia|-mediaservice|-audio-backend|-svg|-declarative|-webkit|-javascript-jit|-script|-scripttools|-rpath|-force-pkg-config)
+
+ -incremental|-qvfb|-profile|-shared|-static|-sm|-xinerama|-xshape|-xvideo|-xsync|-xinput|-reduce-exports|-pch|-separate-debug-info|-stl|-freetype|-xcursor|-xfixes|-xrandr|-xrender|-mitshm|-fontconfig|-xkb|-nis|-qdbus|-dbus|-dbus-linked|-glib|-gstreamer|-gtkstyle|-cups|-iconv|-largefile|-h|-help|-v|-verbose|-debug|-release|-fast|-accessibility|-confirm-license|-gnumake|-framework|-qt3support|-debug-and-release|-exceptions|-cocoa|-carbon|-universal|-prefix-install|-silent|-armfpa|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-ptmalloc|-xmlpatterns|-phonon|-phonon-backend|-multimedia|-mediaservice|-audio-backend|-svg|-declarative|-webkit|-javascript-jit|-script|-scripttools|-rpath|-force-pkg-config)
VAR=`echo $1 | sed "s,^-\(.*\),\1,"`
VAL=yes
;;
@@ -1536,6 +1538,13 @@ while [ "$#" -gt 0 ]; do
UNKNOWN_OPT=yes
fi
;;
+ xvideo)
+ if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
+ CFG_XVIDEO="$VAL"
+ else
+ UNKNOWN_OPT=yes
+ fi
+ ;;
xsync)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_XSYNC="$VAL"
@@ -3638,6 +3647,13 @@ if [ "$PLATFORM_X11" = "yes" ]; then
SHY="*"
SHN=" "
fi
+ if [ "$CFG_XVIDEO" = "no" ]; then
+ XVY=" "
+ XVN="*"
+ else
+ XVY="*"
+ XVN=" "
+ fi
if [ "$CFG_XINERAMA" = "no" ]; then
XAY=" "
XAN="*"
@@ -3741,6 +3757,10 @@ Qt/X11 only:
$SHY -xshape ............ Compile XShape support.
Requires X11/extensions/shape.h.
+ $XVN -no-xvideo ......... Do not compile XVideo support.
+ $XVY -xvideo ............ Compile XVideo support.
+ Requires X11/extensions/Xv.h & Xvlib.h.
+
$SHN -no-xsync .......... Do not compile XSync support.
$SHY -xsync ............. Compile XSync support.
Requires X11/extensions/sync.h.
@@ -5019,32 +5039,33 @@ if [ "$PLATFORM_X11" = "yes" -o "$PLATFORM_QWS" = "yes" ]; then
fi
fi
- if [ "$CFG_PHONON" != "no" ]; then
- if [ "$CFG_PHONON_BACKEND" != "no" ]; then
- if [ "$CFG_GLIB" = "yes" -a "$CFG_GSTREAMER" != "no" ]; then
- if [ -n "$PKG_CONFIG" ]; then
- QT_CFLAGS_GSTREAMER=`$PKG_CONFIG --cflags gstreamer-0.10 gstreamer-plugins-base-0.10 2>/dev/null`
- QT_LIBS_GSTREAMER=`$PKG_CONFIG --libs gstreamer-0.10 gstreamer-plugins-base-0.10 2>/dev/null`
- fi
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/gstreamer "GStreamer" $L_FLAGS $I_FLAGS $l_FLAGS $QT_CFLAGS_GSTREAMER $QT_LIBS_GSTREAMER $X11TESTS_FLAGS; then
- CFG_GSTREAMER=yes
- QMakeVar set QT_CFLAGS_GSTREAMER "$QT_CFLAGS_GSTREAMER"
- QMakeVar set QT_LIBS_GSTREAMER "$QT_LIBS_GSTREAMER"
- else
- if [ "$CFG_GSTREAMER" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
- echo "Gstreamer support cannot be enabled due to functionality tests!"
- echo " Turn on verbose messaging (-v) to $0 to see the final report."
- echo " If you believe this message is in error you may use the continue"
- echo " switch (-continue) to $0 to continue."
- exit 101
- else
- CFG_GSTREAMER=no
- fi
- fi
- elif [ "$CFG_GLIB" = "no" ]; then
+ # Auto-detect GStreamer support (needed for both Phonon & QtMultimedia)
+ if [ "$CFG_GLIB" = "yes" -a "$CFG_GSTREAMER" != "no" ]; then
+ if [ -n "$PKG_CONFIG" ]; then
+ QT_CFLAGS_GSTREAMER=`$PKG_CONFIG --cflags gstreamer-0.10 gstreamer-plugins-base-0.10 2>/dev/null`
+ QT_LIBS_GSTREAMER=`$PKG_CONFIG --libs gstreamer-0.10 gstreamer-plugins-base-0.10 2>/dev/null`
+ fi
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/gstreamer "GStreamer" $L_FLAGS $I_FLAGS $l_FLAGS $QT_CFLAGS_GSTREAMER $QT_LIBS_GSTREAMER $X11TESTS_FLAGS; then
+ CFG_GSTREAMER=yes
+ QMakeVar set QT_CFLAGS_GSTREAMER "$QT_CFLAGS_GSTREAMER"
+ QMakeVar set QT_LIBS_GSTREAMER "$QT_LIBS_GSTREAMER"
+ else
+ if [ "$CFG_GSTREAMER" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
+ echo "Gstreamer support cannot be enabled due to functionality tests!"
+ echo " Turn on verbose messaging (-v) to $0 to see the final report."
+ echo " If you believe this message is in error you may use the continue"
+ echo " switch (-continue) to $0 to continue."
+ exit 101
+ else
CFG_GSTREAMER=no
fi
+ fi
+ elif [ "$CFG_GLIB" = "no" ]; then
+ CFG_GSTREAMER=no
+ fi
+ if [ "$CFG_PHONON" != "no" ]; then
+ if [ "$CFG_PHONON_BACKEND" != "no" ]; then
if [ "$CFG_GSTREAMER" = "yes" ]; then
CFG_PHONON=yes
else
@@ -5318,6 +5339,23 @@ if [ "$PLATFORM_X11" = "yes" ]; then
fi
fi
+ # auto-detect XVideo support
+ if [ "$CFG_XVIDEO" != "no" ]; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/xvideo "XVideo" $L_FLAGS $I_FLAGS $l_FLAGS $X11TESTS_FLAGS; then
+ CFG_XVIDEO=yes
+ else
+ if [ "$CFG_XVIDEO" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
+ echo "XVideo support cannot be enabled due to functionality tests!"
+ echo " Turn on verbose messaging (-v) to $0 to see the final report."
+ echo " If you believe this message is in error you may use the continue"
+ echo " switch (-continue) to $0 to continue."
+ exit 101
+ else
+ CFG_XVIDEO=no
+ fi
+ fi
+ fi
+
# auto-detect XSync support
if [ "$CFG_XSYNC" != "no" ]; then
if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/xsync "XSync" $L_FLAGS $I_FLAGS $l_FLAGS $X11TESTS_FLAGS; then
@@ -6275,6 +6313,9 @@ if [ "$PLATFORM_X11" = "yes" ]; then
if [ "$CFG_XSHAPE" = "yes" ]; then
QT_CONFIG="$QT_CONFIG xshape"
fi
+ if [ "$CFG_XVIDEO" = "yes" ]; then
+ QT_CONFIG="$QT_CONFIG xvideo"
+ fi
if [ "$CFG_XSYNC" = "yes" ]; then
QT_CONFIG="$QT_CONFIG xsync"
fi
@@ -7079,6 +7120,7 @@ fi
[ "$CFG_XRENDER" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XRENDER"
[ "$CFG_MITSHM" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_MITSHM"
[ "$CFG_XSHAPE" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_SHAPE"
+[ "$CFG_XVIDEO" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XVIDEO"
[ "$CFG_XSYNC" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XSYNC"
[ "$CFG_XINPUT" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XINPUT QT_NO_TABLET"
@@ -7559,6 +7601,7 @@ fi
if [ "$PLATFORM_X11" = "yes" ]; then
echo "NAS sound support ...... $CFG_NAS"
echo "XShape support ......... $CFG_XSHAPE"
+ echo "XVideo support ......... $CFG_XVIDEO"
echo "XSync support .......... $CFG_XSYNC"
echo "Xinerama support ....... $CFG_XINERAMA"
echo "Xcursor support ........ $CFG_XCURSOR"
diff --git a/doc/src/legal/3rdparty.qdoc b/doc/src/legal/3rdparty.qdoc
index af3fc93..d608038 100644
--- a/doc/src/legal/3rdparty.qdoc
+++ b/doc/src/legal/3rdparty.qdoc
@@ -305,17 +305,17 @@
\hr
- Copyright (c) 1987, 1993, 1994
+ Copyright (c) 1987, 1993, 1994\br
The Regents of the University of California. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
- are met:
+ are met:\br
1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
+ notice, this list of conditions and the following disclaimer.\br
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
+ documentation and/or other materials provided with the distribution.\br
3. Neither the name of the University nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
@@ -334,22 +334,22 @@
\hr
- Copyright (C) 1988-1997 Sam Leffler
- Copyright (C) 1991-1997 Silicon Graphics, Inc.
- Copyright (c) Joris Van Damme <info@awaresystems.be>
- Copyright (c) AWare Systems <http://www.awaresystems.be/>
- Portions Copyright (C) 1985-1987, 1990 Regents of the University of California
- Portions Copyright (C) 1990, 1991 Digital Equipment Corporation
- Portions Copyright (C) 1990 Sun Microsystems, Inc.
- Portions Copyright (C) 1990, 1995 Frank D. Cringle
- Portions Copyright (C) 1996 BancTec AB
- Portions Copyright (C) 1996 Mike Johnson
- Portions Copyright (C) 1996 Pixar
- Portions Copyright (C) 1997 Greg Ward Larson
- Portions Copyright (C) 2000 Frank Warmerdam
- Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu>
- Copyright (c( 1996 USAF Phillips Laboratory
- Additions (c) Richard Nolde 2006-2009
+ Copyright (C) 1988-1997 Sam Leffler\br
+ Copyright (C) 1991-1997 Silicon Graphics, Inc.\br
+ Copyright (c) Joris Van Damme <info@awaresystems.be>\br
+ Copyright (c) AWare Systems <http://www.awaresystems.be/>\br
+ Portions Copyright (C) 1985-1987, 1990 Regents of the University of California\br
+ Portions Copyright (C) 1990, 1991 Digital Equipment Corporation\br
+ Portions Copyright (C) 1990 Sun Microsystems, Inc.\br
+ Portions Copyright (C) 1990, 1995 Frank D. Cringle\br
+ Portions Copyright (C) 1996 BancTec AB\br
+ Portions Copyright (C) 1996 Mike Johnson\br
+ Portions Copyright (C) 1996 Pixar\br
+ Portions Copyright (C) 1997 Greg Ward Larson\br
+ Portions Copyright (C) 2000 Frank Warmerdam\br
+ Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu>\br
+ Copyright (c( 1996 USAF Phillips Laboratory\br
+ Additions (c) Richard Nolde 2006-2009
Permission to use, copy, modify, distribute, and sell this software and
its documentation for any purpose is hereby granted without fee, provided
@@ -372,7 +372,7 @@
\hr
- Copyright (c) 1985, 1986 The Regents of the University of California.
+ Copyright (c) 1985, 1986 The Regents of the University of California.\br
All rights reserved.
This code is derived from software contributed to Berkeley by
@@ -393,7 +393,7 @@
\hr
- Copyright (c) 1996-1997 Sam Leffler
+ Copyright (c) 1996-1997 Sam Leffler\br
Copyright (c) 1996 Pixar
Permission to use, copy, modify, distribute, and sell this software and
diff --git a/doc/src/qt4-intro.qdoc b/doc/src/qt4-intro.qdoc
index 91593d3..a18bc13 100644
--- a/doc/src/qt4-intro.qdoc
+++ b/doc/src/qt4-intro.qdoc
@@ -471,6 +471,20 @@
\tableofcontents
+ \section1 Declarative UI development with Qt Quick
+
+ \section1 Network Bearer Management
+
+ Bearer Management controls the connectivity state of the system.
+ The new Bearer Management API in the QtNetwork module allows the
+ application to identify whether the system is online and how many
+ interfaces there are, as well as start and stop interfaces, or
+ roam transparently between access points.
+
+ QNetworkAccessManager uses this API for HTTP level roaming.
+
+ \section1 Multimedia - playback and playlist management
+
\section1 New Classes, Functions, Macros, etc.
Links to new classes, functions, macros, and other items
diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp b/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp
index 1e717cb..abe15c8 100644
--- a/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp
+++ b/src/3rdparty/javascriptcore/JavaScriptCore/runtime/Collector.cpp
@@ -241,7 +241,7 @@ NEVER_INLINE CollectorBlock* Heap::allocateBlock()
#elif PLATFORM(WINCE)
void* address = VirtualAlloc(NULL, BLOCK_SIZE, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
#elif PLATFORM(WIN_OS)
-#if COMPILER(MINGW)
+#if COMPILER(MINGW) && !PLATFORM(X86_64)
void* address = __mingw_aligned_malloc(BLOCK_SIZE, BLOCK_SIZE);
#else
void* address = _aligned_malloc(BLOCK_SIZE, BLOCK_SIZE);
@@ -327,7 +327,7 @@ NEVER_INLINE void Heap::freeBlock(CollectorBlock* block)
#elif PLATFORM(WINCE)
VirtualFree(block, 0, MEM_RELEASE);
#elif PLATFORM(WIN_OS)
-#if COMPILER(MINGW)
+#if COMPILER(MINGW) && !PLATFORM(X86_64)
__mingw_aligned_free(block);
#else
_aligned_free(block);
@@ -617,7 +617,7 @@ static inline void* currentThreadStackBase()
MOV pTib, EAX
}
return static_cast<void*>(pTib->StackBase);
-#elif PLATFORM(WIN_OS) && PLATFORM(X86_64) && COMPILER(MSVC)
+#elif PLATFORM(WIN_OS) && PLATFORM(X86_64) && (COMPILER(MSVC) ||COMPILER(GCC))
PNT_TIB64 pTib = reinterpret_cast<PNT_TIB64>(NtCurrentTeb());
return reinterpret_cast<void*>(pTib->StackBase);
#elif PLATFORM(WIN_OS) && PLATFORM(X86) && COMPILER(GCC)
diff --git a/src/3rdparty/libpng/png.h b/src/3rdparty/libpng/png.h
index 14e3416..5ea2b0d 100644
--- a/src/3rdparty/libpng/png.h
+++ b/src/3rdparty/libpng/png.h
@@ -386,7 +386,7 @@
#include "zlib.h"
#endif
-#ifdef AIX
+#ifdef _AIX
#define jmpbuf __jmpbuf
#endif
diff --git a/src/3rdparty/libpng/pngpriv.h b/src/3rdparty/libpng/pngpriv.h
index 13c2b3f..87a4ba6 100644
--- a/src/3rdparty/libpng/pngpriv.h
+++ b/src/3rdparty/libpng/pngpriv.h
@@ -74,7 +74,9 @@
#if defined(WIN32) || defined(_Windows) || defined(_WINDOWS) || \
defined(_WIN32) || defined(__WIN32__)
-# include <windows.h> /* defines _WINDOWS_ macro */
+# if !defined(__SYMBIAN32__)
+# include <windows.h> /* defines _WINDOWS_ macro */
+# endif
/* I have no idea why is this necessary... */
# ifdef _MSC_VER
# include <malloc.h>
diff --git a/src/3rdparty/webkit/WebCore/dom/XMLTokenizerQt.cpp b/src/3rdparty/webkit/WebCore/dom/XMLTokenizerQt.cpp
index 79fc51e..5c87fe6 100644
--- a/src/3rdparty/webkit/WebCore/dom/XMLTokenizerQt.cpp
+++ b/src/3rdparty/webkit/WebCore/dom/XMLTokenizerQt.cpp
@@ -368,7 +368,7 @@ static inline void handleElementNamespaces(Element* newElement, const QXmlStream
for (int i = 0; i < ns.count(); ++i) {
const QXmlStreamNamespaceDeclaration &decl = ns[i];
String namespaceURI = decl.namespaceUri();
- String namespaceQName = decl.prefix().isEmpty() ? String("xmlns") : String("xmlns:") + decl.prefix();
+ String namespaceQName = decl.prefix().isEmpty() ? String("xmlns") : String("xmlns:") + String(decl.prefix());
newElement->setAttributeNS("http://www.w3.org/2000/xmlns/", namespaceQName, namespaceURI, ec);
if (ec) // exception setting attributes
return;
diff --git a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp
index 7a1bfd5..5fbc876 100644
--- a/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp
+++ b/src/3rdparty/webkit/WebKit/qt/WebCoreSupport/InspectorClientQt.cpp
@@ -179,7 +179,7 @@ void InspectorClientQt::populateSetting(const String& key, InspectorController::
return;
}
- QString settingKey(settingStoragePrefix + key);
+ QString settingKey(settingStoragePrefix + QString(key));
QString storedValueType = qsettings.value(settingKey + settingStorageTypeSuffix).toString();
QVariant storedValue = qsettings.value(settingKey);
storedValue.convert(QVariant::nameToType(storedValueType.toAscii().data()));
@@ -196,7 +196,7 @@ void InspectorClientQt::storeSetting(const String& key, const InspectorControlle
}
QVariant valueToStore = settingToVariant(setting);
- QString settingKey(settingStoragePrefix + key);
+ QString settingKey(settingStoragePrefix + QString(key));
qsettings.setValue(settingKey, valueToStore);
qsettings.setValue(settingKey + settingStorageTypeSuffix, QVariant::typeToName(valueToStore.type()));
}
diff --git a/src/activeqt/container/qaxbase.cpp b/src/activeqt/container/qaxbase.cpp
index 02a29d9..7692749 100644
--- a/src/activeqt/container/qaxbase.cpp
+++ b/src/activeqt/container/qaxbase.cpp
@@ -1353,11 +1353,9 @@ bool QAxBase::initializeFromFile(IUnknown** ptr)
// There seams to be a naming problem in mingw headers
-#ifdef Q_CC_GNU
-#ifndef COAUTHIDENTITY
+#if defined(Q_CC_GNU) && !defined(COAUTHIDENTITY) && !defined(__MINGW64_VERSION_MAJOR)
#define COAUTHIDENTITY AUTH_IDENTITY
#endif
-#endif
/*!
diff --git a/src/activeqt/container/qaxwidget.cpp b/src/activeqt/container/qaxwidget.cpp
index 9149320..7d2dde7 100644
--- a/src/activeqt/container/qaxwidget.cpp
+++ b/src/activeqt/container/qaxwidget.cpp
@@ -77,25 +77,21 @@
// #define QAX_SUPPORT_BORDERSPACE
// missing interface from win32api
-#if defined(Q_CC_GNU)
-# if !defined(IOleInPlaceObjectWindowless)
-# undef INTERFACE
-# define INTERFACE IOleInPlaceObjectWindowless
- DECLARE_INTERFACE_(IOleInPlaceObjectWindowless,IOleInPlaceObject)
- {
- STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
- STDMETHOD_(ULONG,AddRef)(THIS) PURE;
- STDMETHOD_(ULONG,Release)(THIS) PURE;
- STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
- STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
- STDMETHOD(InPlaceDeactivate)(THIS) PURE;
- STDMETHOD(UIDeactivate)(THIS) PURE;
- STDMETHOD(SetObjectRects)(THIS_ LPCRECT,LPCRECT) PURE;
- STDMETHOD(ReactivateAndUndo)(THIS) PURE;
- STDMETHOD(OnWindowMessage)(THIS_ UINT, WPARAM, LPARAM, LRESULT*) PURE;
- STDMETHOD(GetDropTarget)(THIS_ IDropTarget**) PURE;
- };
-# endif
+#if defined(Q_CC_GNU) && !defined(__MINGW64_VERSION_MAJOR)
+ DECLARE_INTERFACE_(IOleInPlaceObjectWindowless,IOleInPlaceObject)
+ {
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(GetWindow)(THIS_ HWND*) PURE;
+ STDMETHOD(ContextSensitiveHelp)(THIS_ BOOL) PURE;
+ STDMETHOD(InPlaceDeactivate)(THIS) PURE;
+ STDMETHOD(UIDeactivate)(THIS) PURE;
+ STDMETHOD(SetObjectRects)(THIS_ LPCRECT,LPCRECT) PURE;
+ STDMETHOD(ReactivateAndUndo)(THIS) PURE;
+ STDMETHOD(OnWindowMessage)(THIS_ UINT, WPARAM, LPARAM, LRESULT*) PURE;
+ STDMETHOD(GetDropTarget)(THIS_ IDropTarget**) PURE;
+ };
#endif
#include "../shared/qaxtypes.h"
diff --git a/src/activeqt/control/qaxserverbase.cpp b/src/activeqt/control/qaxserverbase.cpp
index 5fa0aad..ce71490 100644
--- a/src/activeqt/control/qaxserverbase.cpp
+++ b/src/activeqt/control/qaxserverbase.cpp
@@ -1536,7 +1536,7 @@ HWND QAxServerBase::create(HWND hWndParent, RECT& rcPos)
HINSTANCE hInst = (HINSTANCE)qAxInstance;
EnterCriticalSection(&createWindowSection);
QString cn(QLatin1String("QAxControl"));
- cn += QString::number((int)ActiveXProc);
+ cn += QString::number((quintptr)ActiveXProc);
if (!atom) {
WNDCLASS wcTemp;
wcTemp.style = CS_DBLCLKS;
@@ -1599,10 +1599,10 @@ HMENU QAxServerBase::createPopup(QMenu *popup, HMENU oldMenu)
ushort itemId;
if (flags & MF_POPUP) {
itemId = static_cast<ushort>(
- reinterpret_cast<ulong>(createPopup(action->menu()))
+ reinterpret_cast<quintptr>(createPopup(action->menu()))
);
} else {
- itemId = static_cast<ushort>(reinterpret_cast<ulong>(action));
+ itemId = static_cast<ushort>(reinterpret_cast<quintptr>(action));
actionMap.remove(itemId);
actionMap.insert(itemId, action);
}
@@ -1646,10 +1646,10 @@ void QAxServerBase::createMenu(QMenuBar *menuBar)
ushort itemId;
if (flags & MF_POPUP) {
itemId = static_cast<ushort>(
- reinterpret_cast<ulong>(createPopup(action->menu()))
+ reinterpret_cast<quintptr>(createPopup(action->menu()))
);
} else {
- itemId = static_cast<ushort>(reinterpret_cast<ulong>(action));
+ itemId = static_cast<ushort>(reinterpret_cast<quintptr>(action));
actionMap.insert(itemId, action);
}
AppendMenu(hmenuShared, flags, itemId, (const wchar_t *)action->text().utf16());
diff --git a/src/corelib/corelib.pro b/src/corelib/corelib.pro
index efee610..df9a463 100644
--- a/src/corelib/corelib.pro
+++ b/src/corelib/corelib.pro
@@ -52,3 +52,25 @@ symbian: {
partial_upgrade.path = c:/sys/bin
DEPLOYMENT = partial_upgrade $$DEPLOYMENT
}
+
+mmx {
+ DEFINES += QT_HAVE_MMX
+}
+3dnow {
+ DEFINES += QT_HAVE_3DNOW
+}
+sse {
+ DEFINES += QT_HAVE_SSE
+ DEFINES += QT_HAVE_MMXEXT
+}
+sse2 {
+ DEFINES += QT_HAVE_SSE2
+}
+iwmmxt {
+ DEFINES += QT_HAVE_IWMMXT
+}
+neon {
+ DEFINES += QT_HAVE_NEON
+ QMAKE_CXXFLAGS *= -mfpu=neon
+}
+
diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp
index a9ea44a..d5041c9 100644
--- a/src/corelib/global/qlibraryinfo.cpp
+++ b/src/corelib/global/qlibraryinfo.cpp
@@ -439,7 +439,7 @@ QLibraryInfo::location(LibraryLocation loc)
QCFType<CFURLRef> urlRef = CFBundleCopyBundleURL(bundleRef);
if (urlRef) {
QCFString path = CFURLCopyFileSystemPath(urlRef, kCFURLPOSIXPathStyle);
- return QDir::cleanPath(path + QLatin1String("/Contents/") + ret);
+ return QDir::cleanPath(QString(path) + QLatin1String("/Contents/") + ret);
}
}
#endif
diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp
index 076cc33..0290fb8 100644
--- a/src/corelib/io/qurl.cpp
+++ b/src/corelib/io/qurl.cpp
@@ -6348,7 +6348,7 @@ QUrl QUrl::fromUserInput(const QString &userInput)
return QUrl::fromLocalFile(trimmedString);
QUrl url = QUrl::fromEncoded(trimmedString.toUtf8(), QUrl::TolerantMode);
- QUrl urlPrepended = QUrl::fromEncoded((QLatin1String("http://") + trimmedString).toUtf8(), QUrl::TolerantMode);
+ QUrl urlPrepended = QUrl::fromEncoded("http://" + trimmedString.toUtf8(), QUrl::TolerantMode);
// Check the most common case of a valid url with scheme and host
// We check if the port would be valid by adding the scheme to handle the case host:port
diff --git a/src/corelib/kernel/qcoreapplication_win.cpp b/src/corelib/kernel/qcoreapplication_win.cpp
index 5990f86..566626d 100644
--- a/src/corelib/kernel/qcoreapplication_win.cpp
+++ b/src/corelib/kernel/qcoreapplication_win.cpp
@@ -1021,14 +1021,14 @@ QString decodeMSG(const MSG& msg)
LPWINDOWPOS winPos = (LPWINDOWPOS)lParam;
if (!winPos)
break;
- QString hwndAfter = valueCheck((uint)winPos->hwndInsertAfter,
- FLAG_STRING((uint)HWND_BOTTOM, "HWND_BOTTOM"),
- FLAG_STRING((int)HWND_NOTOPMOST, "HWND_NOTOPMOST"),
- FLAG_STRING((uint)HWND_TOP, "HWND_TOP"),
- FLAG_STRING((int)HWND_TOPMOST, "HWND_TOPMOST"),
+ QString hwndAfter = valueCheck(quint64(winPos->hwndInsertAfter),
+ FLAG_STRING((quintptr)HWND_BOTTOM, "HWND_BOTTOM"),
+ FLAG_STRING((quintptr)HWND_NOTOPMOST, "HWND_NOTOPMOST"),
+ FLAG_STRING((quintptr)HWND_TOP, "HWND_TOP"),
+ FLAG_STRING((quintptr)HWND_TOPMOST, "HWND_TOPMOST"),
FLAG_STRING());
if (hwndAfter.size() == 0)
- hwndAfter = QString::number((uint)winPos->hwndInsertAfter, 16);
+ hwndAfter = QString::number((quintptr)winPos->hwndInsertAfter, 16);
QString flags = flagCheck(winPos->flags,
FLGSTR(SWP_DRAWFRAME),
FLGSTR(SWP_FRAMECHANGED),
diff --git a/src/corelib/thread/qmutex.cpp b/src/corelib/thread/qmutex.cpp
index ec50ac8..43df13a 100644
--- a/src/corelib/thread/qmutex.cpp
+++ b/src/corelib/thread/qmutex.cpp
@@ -41,6 +41,7 @@
#include "qplatformdefs.h"
#include "qmutex.h"
+#include <qdebug.h>
#ifndef QT_NO_THREAD
#include "qatomic.h"
@@ -159,8 +160,7 @@ void QMutex::lock()
if (!isLocked) {
#ifndef QT_NO_DEBUG
if (d->owner == self)
- qWarning("QMutex::lock: Deadlock detected in thread %ld",
- long(d->owner));
+ qWarning() << "QMutex::lock: Deadlock detected in thread" << d->owner;
#endif
// didn't get the lock, wait for it
@@ -197,8 +197,7 @@ void QMutex::lock()
if (!isLocked) {
#ifndef QT_NO_DEBUG
if (d->owner == self)
- qWarning("QMutex::lock: Deadlock detected in thread %ld",
- long(d->owner));
+ qWarning() << "QMutex::lock: Deadlock detected in thread" << d->owner;
#endif
// didn't get the lock, wait for it
diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp
index b4bfcaf..84bc154 100644
--- a/src/corelib/tools/qlocale.cpp
+++ b/src/corelib/tools/qlocale.cpp
@@ -465,7 +465,7 @@ static QString winToQtFormat(const QString &sys_fmt)
if (text == QLatin1String("'"))
result += QLatin1String("''");
else
- result += QLatin1Char('\'') + text + QLatin1Char('\'');
+ result += QString(QLatin1Char('\'') + text + QLatin1Char('\''));
continue;
}
@@ -681,8 +681,8 @@ QVariant QSystemLocale::query(QueryType type, QVariant in = QVariant()) const
case DateTimeFormatLong:
case DateTimeFormatShort:
- return query(type == DateTimeFormatLong ? DateFormatLong : DateFormatShort).toString()
- + QLatin1Char(' ') + query(type == DateTimeFormatLong ? TimeFormatLong : TimeFormatShort).toString();
+ return QString(query(type == DateTimeFormatLong ? DateFormatLong : DateFormatShort).toString()
+ + QLatin1Char(' ') + query(type == DateTimeFormatLong ? TimeFormatLong : TimeFormatShort).toString());
case DayNameLong:
case DayNameShort:
return winDayName(in.toInt(), (type == DayNameShort));
@@ -698,8 +698,8 @@ QVariant QSystemLocale::query(QueryType type, QVariant in = QVariant()) const
case DateTimeToStringShort:
case DateTimeToStringLong: {
const QDateTime dt = in.toDateTime();
- return winDateToString(dt.date(), type == DateTimeToStringShort ? DATE_SHORTDATE : DATE_LONGDATE)
- + QLatin1Char(' ') + winTimeToString(dt.time()); }
+ return QString(winDateToString(dt.date(), type == DateTimeToStringShort ? DATE_SHORTDATE : DATE_LONGDATE)
+ + QLatin1Char(' ') + winTimeToString(dt.time())); }
case ZeroDigit:
locale_info = LOCALE_SNATIVEDIGITS;
diff --git a/src/corelib/tools/qlocale_symbian.cpp b/src/corelib/tools/qlocale_symbian.cpp
index b1a7caa..58e3ba8 100644
--- a/src/corelib/tools/qlocale_symbian.cpp
+++ b/src/corelib/tools/qlocale_symbian.cpp
@@ -841,7 +841,7 @@ QVariant QSystemLocale::query(QueryType type, QVariant in = QVariant()) const
return symbianTimeFormat();
case DateTimeFormatLong:
case DateTimeFormatShort:
- return symbianDateFormat( (type == DateTimeFormatShort) ) + QLatin1Char(' ') + symbianTimeFormat();
+ return QString(symbianDateFormat( (type == DateTimeFormatShort) ) + QLatin1Char(' ') + symbianTimeFormat());
case DateToStringShort:
case DateToStringLong:
return symbianDateToString(in.toDate(), (type == DateToStringShort) );
@@ -851,8 +851,8 @@ QVariant QSystemLocale::query(QueryType type, QVariant in = QVariant()) const
case DateTimeToStringShort:
case DateTimeToStringLong: {
const QDateTime dt = in.toDateTime();
- return symbianDateToString(dt.date(), (type == DateTimeToStringShort) )
- + QLatin1Char(' ') + symbianTimeToString(dt.time());
+ return QString(symbianDateToString(dt.date(), (type == DateTimeToStringShort) )
+ + QLatin1Char(' ') + symbianTimeToString(dt.time()));
}
case MeasurementSystem:
return static_cast<int>(symbianMeasurementSystem());
diff --git a/src/corelib/tools/qregexp.cpp b/src/corelib/tools/qregexp.cpp
index 25255f9..20ad444 100644
--- a/src/corelib/tools/qregexp.cpp
+++ b/src/corelib/tools/qregexp.cpp
@@ -1466,9 +1466,14 @@ void QRegExpMatchState::match(const QChar *str0, int len0, int pos0,
#ifndef QT_NO_REGEXP_CAPTURE
for (int i = 0; i < numCaptures; ++i) {
int j = eng->captureForOfficialCapture.at(i);
- int len = capEnd[j] - capBegin[j];
- *c++ = (len > 0) ? pos + capBegin[j] : 0;
- *c++ = len;
+ if (capBegin[j] != EmptyCapture) {
+ int len = capEnd[j] - capBegin[j];
+ *c++ = (len > 0) ? pos + capBegin[j] : 0;
+ *c++ = len;
+ } else {
+ *c++ = -1;
+ *c++ = -1;
+ }
}
#endif
} else {
diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h
index d85c248..bfc65bc 100644
--- a/src/corelib/tools/qsharedpointer_impl.h
+++ b/src/corelib/tools/qsharedpointer_impl.h
@@ -209,6 +209,7 @@ namespace QtSharedPointer {
inline bool destroy() { destroyer(this); return true; }
inline void operator delete(void *ptr) { ::operator delete(ptr); }
+ inline void operator delete(void *, void *) { }
};
// sizeof(ExternalRefCountWithDestroyFn) = 16 (32-bit) / 24 (64-bit)
diff --git a/src/corelib/tools/qsimd.cpp b/src/corelib/tools/qsimd.cpp
new file mode 100644
index 0000000..52d2cea
--- /dev/null
+++ b/src/corelib/tools/qsimd.cpp
@@ -0,0 +1,246 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qsimd_p.h"
+#include <QByteArray>
+
+QT_BEGIN_NAMESPACE
+
+uint qDetectCPUFeatures()
+{
+ static uint features = 0xffffffff;
+ if (features != 0xffffffff)
+ return features;
+
+#if defined (Q_OS_WINCE)
+#if defined (ARM)
+ if (IsProcessorFeaturePresent(PF_ARM_INTEL_WMMX)) {
+ features = IWMMXT;
+ return features;
+ }
+#elif defined(_X86_)
+ features = 0;
+#if defined QT_HAVE_MMX
+ if (IsProcessorFeaturePresent(PF_MMX_INSTRUCTIONS_AVAILABLE))
+ features |= MMX;
+#endif
+#if defined QT_HAVE_3DNOW
+ if (IsProcessorFeaturePresent(PF_3DNOW_INSTRUCTIONS_AVAILABLE))
+ features |= MMX3DNOW;
+#endif
+ return features;
+#endif
+ features = 0;
+ return features;
+#elif defined(QT_HAVE_IWMMXT)
+ // runtime detection only available when running as a previlegied process
+ static const bool doIWMMXT = !qgetenv("QT_NO_IWMMXT").toInt();
+ features = doIWMMXT ? IWMMXT : 0;
+ return features;
+#elif defined(QT_HAVE_NEON)
+ static const bool doNEON = !qgetenv("QT_NO_NEON").toInt();
+ features = doNEON ? NEON : 0;
+ return features;
+#else
+ features = 0;
+#if defined(__x86_64__) || defined(Q_OS_WIN64)
+ features = MMX|SSE|SSE2|CMOV;
+#elif defined(__ia64__)
+ features = MMX|SSE|SSE2;
+#elif defined(__i386__) || defined(_M_IX86)
+ unsigned int extended_result = 0;
+ uint result = 0;
+ /* see p. 118 of amd64 instruction set manual Vol3 */
+#if defined(Q_CC_GNU)
+ asm ("push %%ebx\n"
+ "pushf\n"
+ "pop %%eax\n"
+ "mov %%eax, %%ebx\n"
+ "xor $0x00200000, %%eax\n"
+ "push %%eax\n"
+ "popf\n"
+ "pushf\n"
+ "pop %%eax\n"
+ "xor %%edx, %%edx\n"
+ "xor %%ebx, %%eax\n"
+ "jz 1f\n"
+
+ "mov $0x00000001, %%eax\n"
+ "cpuid\n"
+ "1:\n"
+ "pop %%ebx\n"
+ "mov %%edx, %0\n"
+ : "=r" (result)
+ :
+ : "%eax", "%ecx", "%edx"
+ );
+
+ asm ("push %%ebx\n"
+ "pushf\n"
+ "pop %%eax\n"
+ "mov %%eax, %%ebx\n"
+ "xor $0x00200000, %%eax\n"
+ "push %%eax\n"
+ "popf\n"
+ "pushf\n"
+ "pop %%eax\n"
+ "xor %%edx, %%edx\n"
+ "xor %%ebx, %%eax\n"
+ "jz 2f\n"
+
+ "mov $0x80000000, %%eax\n"
+ "cpuid\n"
+ "cmp $0x80000000, %%eax\n"
+ "jbe 2f\n"
+ "mov $0x80000001, %%eax\n"
+ "cpuid\n"
+ "2:\n"
+ "pop %%ebx\n"
+ "mov %%edx, %0\n"
+ : "=r" (extended_result)
+ :
+ : "%eax", "%ecx", "%edx"
+ );
+#elif defined (Q_OS_WIN)
+ _asm {
+ push eax
+ push ebx
+ push ecx
+ push edx
+ pushfd
+ pop eax
+ mov ebx, eax
+ xor eax, 00200000h
+ push eax
+ popfd
+ pushfd
+ pop eax
+ mov edx, 0
+ xor eax, ebx
+ jz skip
+
+ mov eax, 1
+ cpuid
+ mov result, edx
+ skip:
+ pop edx
+ pop ecx
+ pop ebx
+ pop eax
+ }
+
+ _asm {
+ push eax
+ push ebx
+ push ecx
+ push edx
+ pushfd
+ pop eax
+ mov ebx, eax
+ xor eax, 00200000h
+ push eax
+ popfd
+ pushfd
+ pop eax
+ mov edx, 0
+ xor eax, ebx
+ jz skip2
+
+ mov eax, 80000000h
+ cpuid
+ cmp eax, 80000000h
+ jbe skip2
+ mov eax, 80000001h
+ cpuid
+ mov extended_result, edx
+ skip2:
+ pop edx
+ pop ecx
+ pop ebx
+ pop eax
+ }
+#endif
+
+ // result now contains the standard feature bits
+ if (result & (1u << 15))
+ features |= CMOV;
+ if (result & (1u << 23))
+ features |= MMX;
+ if (extended_result & (1u << 22))
+ features |= MMXEXT;
+ if (extended_result & (1u << 31))
+ features |= MMX3DNOW;
+ if (extended_result & (1u << 30))
+ features |= MMX3DNOWEXT;
+ if (result & (1u << 25))
+ features |= SSE;
+ if (result & (1u << 26))
+ features |= SSE2;
+#endif // i386
+
+#if defined(QT_HAVE_MMX)
+ if (qgetenv("QT_NO_MMX").toInt())
+ features ^= MMX;
+#endif
+ if (qgetenv("QT_NO_MMXEXT").toInt())
+ features ^= MMXEXT;
+
+#if defined(QT_HAVE_3DNOW)
+ if (qgetenv("QT_NO_3DNOW").toInt())
+ features ^= MMX3DNOW;
+#endif
+ if (qgetenv("QT_NO_3DNOWEXT").toInt())
+ features ^= MMX3DNOWEXT;
+
+#if defined(QT_HAVE_SSE)
+ if (qgetenv("QT_NO_SSE").toInt())
+ features ^= SSE;
+#endif
+#if defined(QT_HAVE_SSE2)
+ if (qgetenv("QT_NO_SSE2").toInt())
+ features ^= SSE2;
+#endif
+
+ return features;
+#endif
+}
+
+QT_END_NAMESPACE
diff --git a/src/corelib/tools/qsimd_p.h b/src/corelib/tools/qsimd_p.h
new file mode 100644
index 0000000..556db14
--- /dev/null
+++ b/src/corelib/tools/qsimd_p.h
@@ -0,0 +1,126 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the QtCore module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#ifndef QSIMD_P_H
+#define QSIMD_P_H
+
+#include <qglobal.h>
+
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Core)
+
+#if defined(QT_NO_MAC_XARCH) || (defined(Q_OS_DARWIN) && (defined(__ppc__) || defined(__ppc64__)))
+// Disable MMX and SSE on Mac/PPC builds, or if the compiler
+// does not support -Xarch argument passing
+#undef QT_HAVE_SSE2
+#undef QT_HAVE_SSE
+#undef QT_HAVE_3DNOW
+#undef QT_HAVE_MMX
+#endif
+
+// SSE intrinsics
+#if defined(__SSE2__)
+#if defined(QT_LINUXBASE)
+/// this is an evil hack - the posix_memalign declaration in LSB
+/// is wrong - see http://bugs.linuxbase.org/show_bug.cgi?id=2431
+# define posix_memalign _lsb_hack_posix_memalign
+# include <emmintrin.h>
+# undef posix_memalign
+#else
+# include <emmintrin.h>
+#endif
+
+#define QT_ALWAYS_HAVE_SSE2
+#endif
+
+// NEON intrinsics
+#if defined(QT_HAVE_NEON)
+#include <arm_neon.h>
+#endif
+
+
+// IWMMXT intrinsics
+#if defined(QT_HAVE_IWMMXT)
+#include <mmintrin.h>
+#if defined(Q_OS_WINCE)
+# include "qplatformdefs.h"
+#endif
+#endif
+
+#if defined(QT_HAVE_IWMMXT)
+#if !defined(__IWMMXT__) && !defined(Q_OS_WINCE)
+# include <xmmintrin.h>
+#elif defined(Q_OS_WINCE_STD) && defined(_X86_)
+# pragma warning(disable: 4391)
+# include <xmmintrin.h>
+#endif
+#endif
+
+// 3D now intrinsics
+#if defined(QT_HAVE_3DNOW)
+#include <mm3dnow.h>
+#endif
+
+enum CPUFeatures {
+ None = 0,
+ MMX = 0x1,
+ MMXEXT = 0x2,
+ MMX3DNOW = 0x4,
+ MMX3DNOWEXT = 0x8,
+ SSE = 0x10,
+ SSE2 = 0x20,
+ CMOV = 0x40,
+ IWMMXT = 0x80,
+ NEON = 0x100
+};
+
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+Q_CORE_EXPORT uint qDetectCPUFeatures();
+
+#endif // QSIMD_P_H
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index ac1bee7..e9b7b9a 100644
--- a/src/corelib/tools/qstring.cpp
+++ b/src/corelib/tools/qstring.cpp
@@ -46,6 +46,7 @@
#include <qtextcodec.h>
#endif
#include <private/qutfcodec_p.h>
+#include "qsimd_p.h"
#include <qdatastream.h>
#include <qlist.h>
#include "qlocale.h"
@@ -3479,12 +3480,82 @@ static QByteArray toLatin1_helper(const QChar *data, int length)
QByteArray ba;
if (length) {
ba.resize(length);
- const ushort *i = reinterpret_cast<const ushort *>(data);
- const ushort *e = i + length;
- uchar *s = (uchar*) ba.data();
- while (i != e) {
- *s++ = (*i>0xff) ? '?' : (uchar) *i;
- ++i;
+ const ushort *src = reinterpret_cast<const ushort *>(data);
+ uchar *dst = (uchar*) ba.data();
+#if defined(QT_ALWAYS_HAVE_SSE2)
+ if (length >= 16) {
+ const int chunkCount = length >> 4; // divided by 16
+ const __m128i questionMark = _mm_set1_epi16('?');
+ // SSE has no compare instruction for unsigned comparison.
+ // The variables must be shiffted + 0x8000 to be compared
+ const __m128i signedBitOffset = _mm_set1_epi16(0x8000);
+ const __m128i thresholdMask = _mm_set1_epi16(0xff + 0x8000);
+ for (int i = 0; i < chunkCount; ++i) {
+ __m128i chunk1 = _mm_loadu_si128((__m128i*)src); // load
+ src += 8;
+ {
+ // each 16 bit is equal to 0xFF if the source is outside latin 1 (>0xff)
+ const __m128i signedChunk = _mm_add_epi16(chunk1, signedBitOffset);
+ const __m128i offLimitMask = _mm_cmpgt_epi16(signedChunk, thresholdMask);
+
+ // offLimitQuestionMark contains '?' for each 16 bits that was off-limit
+ // the 16 bits that were correct contains zeros
+ const __m128i offLimitQuestionMark = _mm_and_si128(offLimitMask, questionMark);
+
+ // correctBytes contains the bytes that were in limit
+ // the 16 bits that were off limits contains zeros
+ const __m128i correctBytes = _mm_andnot_si128(offLimitMask, chunk1);
+
+ // merge offLimitQuestionMark and correctBytes to have the result
+ chunk1 = _mm_or_si128(correctBytes, offLimitQuestionMark);
+ }
+
+ __m128i chunk2 = _mm_loadu_si128((__m128i*)src); // load
+ src += 8;
+ {
+ // exactly the same operations as for the previous chunk of data
+ const __m128i signedChunk = _mm_add_epi16(chunk2, signedBitOffset);
+ const __m128i offLimitMask = _mm_cmpgt_epi16(signedChunk, thresholdMask);
+ const __m128i offLimitQuestionMark = _mm_and_si128(offLimitMask, questionMark);
+ const __m128i correctBytes = _mm_andnot_si128(offLimitMask, chunk2);
+ chunk2 = _mm_or_si128(correctBytes, offLimitQuestionMark);
+ }
+
+ // pack the two vector to 16 x 8bits elements
+ const __m128i result = _mm_packus_epi16(chunk1, chunk2);
+
+ _mm_storeu_si128((__m128i*)dst, result); // store
+ dst += 16;
+ }
+ length = length % 16;
+ }
+#elif QT_HAVE_NEON
+ // Refer to the documentation of the SSE2 implementation
+ // this use eactly the same method as for SSE except:
+ // 1) neon has unsigned comparison
+ // 2) packing is done to 64 bits (8 x 8bits component).
+ if (length >= 16) {
+ const int chunkCount = length >> 3; // divided by 8
+ const uint16x8_t questionMark = vdupq_n_u16('?'); // set
+ const uint16x8_t thresholdMask = vdupq_n_u16(0xff); // set
+ for (int i = 0; i < chunkCount; ++i) {
+ uint16x8_t chunk = vld1q_u16((uint16_t *)src); // load
+ src += 8;
+
+ const uint16x8_t offLimitMask = vcgtq_u16(chunk, thresholdMask); // chunk > thresholdMask
+ const uint16x8_t offLimitQuestionMark = vandq_u16(offLimitMask, questionMark); // offLimitMask & questionMark
+ const uint16x8_t correctBytes = vbicq_u16(chunk, offLimitMask); // !offLimitMask & chunk
+ chunk = vorrq_u16(correctBytes, offLimitQuestionMark); // correctBytes | offLimitQuestionMark
+ const uint8x8_t result = vmovn_u16(chunk); // narrowing move->packing
+ vst1_u8(dst, result); // store
+ dst += 8;
+ }
+ length = length % 8;
+ }
+#endif
+ while (length--) {
+ *dst++ = (*src>0xff) ? '?' : (uchar) *src;
+ ++src;
}
}
return ba;
@@ -3647,10 +3718,35 @@ QString::Data *QString::fromLatin1_helper(const char *str, int size)
d->alloc = d->size = size;
d->clean = d->asciiCache = d->simpletext = d->righttoleft = d->capacity = 0;
d->data = d->array;
- ushort *i = d->data;
d->array[size] = '\0';
+ ushort *dst = d->data;
+ /* SIMD:
+ * Unpacking with SSE has been shown to improve performance on recent CPUs
+ * The same method gives no improvement with NEON.
+ */
+#if defined(QT_ALWAYS_HAVE_SSE2)
+ if (size >= 16) {
+ int chunkCount = size >> 4; // divided by 16
+ const __m128i nullMask = _mm_set1_epi32(0);
+ for (int i = 0; i < chunkCount; ++i) {
+ const __m128i chunk = _mm_loadu_si128((__m128i*)str); // load
+ str += 16;
+
+ // unpack the first 8 bytes, padding with zeros
+ const __m128i firstHalf = _mm_unpacklo_epi8(chunk, nullMask);
+ _mm_storeu_si128((__m128i*)dst, firstHalf); // store
+ dst += 8;
+
+ // unpack the last 8 bytes, padding with zeros
+ const __m128i secondHalf = _mm_unpackhi_epi8 (chunk, nullMask);
+ _mm_storeu_si128((__m128i*)dst, secondHalf); // store
+ dst += 8;
+ }
+ size = size % 16;
+ }
+#endif
while (size--)
- *i++ = (uchar)*str++;
+ *dst++ = (uchar)*str++;
}
return d;
}
diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h
index 8de3c7d..a59c0bd 100644
--- a/src/corelib/tools/qstring.h
+++ b/src/corelib/tools/qstring.h
@@ -73,6 +73,16 @@ typedef std::basic_string<wchar_t> QStdWString;
#error qstring.h must be included before any header file that defines truncate
#endif
+#if defined(Q_CC_GNU) && (__GNUC__ == 4 && __GNUC_MINOR__ == 0)
+//There is a bug in GCC 4.0 that tries to instantiate template of annonymous enum
+# ifdef QT_USE_FAST_OPERATOR_PLUS
+# undef QT_USE_FAST_OPERATOR_PLUS
+# endif
+# ifdef QT_USE_FAST_CONCATENATION
+# undef QT_USE_FAST_CONCATENATION
+# endif
+#endif
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
diff --git a/src/corelib/tools/qstringbuilder.h b/src/corelib/tools/qstringbuilder.h
index 74661c2..0c3ba06 100644
--- a/src/corelib/tools/qstringbuilder.h
+++ b/src/corelib/tools/qstringbuilder.h
@@ -100,14 +100,18 @@ public:
operator QString() const
{
- QString s(QConcatenable< QStringBuilder<A, B> >::size(*this),
- Qt::Uninitialized);
+ const uint size = QConcatenable< QStringBuilder<A, B> >::size(*this);
+ QString s(size, Qt::Uninitialized);
QChar *d = s.data();
+ const QChar * const start = d;
QConcatenable< QStringBuilder<A, B> >::appendTo(*this, d);
- // this resize is necessary since we allocate a bit too much
- // when dealing with variable sized 8-bit encodings
- s.resize(d - s.data());
+
+ if (!QConcatenable< QStringBuilder<A, B> >::ExactSize && int(size) != d - start) {
+ // this resize is necessary since we allocate a bit too much
+ // when dealing with variable sized 8-bit encodings
+ s.resize(d - start);
+ }
return s;
}
QByteArray toLatin1() const { return QString(*this).toLatin1(); }
@@ -116,10 +120,24 @@ public:
const B &b;
};
+template <>
+class QStringBuilder <QString, QString>
+{
+ public:
+ QStringBuilder(const QString &a_, const QString &b_) : a(a_), b(b_) {}
+
+ operator QString() const
+ { QString r(a); r += b; return r; }
+ QByteArray toLatin1() const { return QString(*this).toLatin1(); }
+
+ const QString &a;
+ const QString &b;
+};
template <> struct QConcatenable<char> : private QAbstractConcatenable
{
typedef char type;
+ enum { ExactSize = true };
static int size(const char) { return 1; }
static inline void appendTo(const char c, QChar *&out)
{
@@ -130,6 +148,7 @@ template <> struct QConcatenable<char> : private QAbstractConcatenable
template <> struct QConcatenable<QLatin1Char>
{
typedef QLatin1Char type;
+ enum { ExactSize = true };
static int size(const QLatin1Char) { return 1; }
static inline void appendTo(const QLatin1Char c, QChar *&out)
{
@@ -140,6 +159,7 @@ template <> struct QConcatenable<QLatin1Char>
template <> struct QConcatenable<QChar>
{
typedef QChar type;
+ enum { ExactSize = true };
static int size(const QChar) { return 1; }
static inline void appendTo(const QChar c, QChar *&out)
{
@@ -150,6 +170,7 @@ template <> struct QConcatenable<QChar>
template <> struct QConcatenable<QCharRef>
{
typedef QCharRef type;
+ enum { ExactSize = true };
static int size(const QCharRef &) { return 1; }
static inline void appendTo(const QCharRef &c, QChar *&out)
{
@@ -160,6 +181,7 @@ template <> struct QConcatenable<QCharRef>
template <> struct QConcatenable<QLatin1String>
{
typedef QLatin1String type;
+ enum { ExactSize = true };
static int size(const QLatin1String &a) { return qstrlen(a.latin1()); }
static inline void appendTo(const QLatin1String &a, QChar *&out)
{
@@ -172,6 +194,7 @@ template <> struct QConcatenable<QLatin1String>
template <> struct QConcatenable<QLatin1Literal>
{
typedef QLatin1Literal type;
+ enum { ExactSize = true };
static int size(const QLatin1Literal &a) { return a.size(); }
static inline void appendTo(const QLatin1Literal &a, QChar *&out)
{
@@ -183,6 +206,7 @@ template <> struct QConcatenable<QLatin1Literal>
template <> struct QConcatenable<QString>
{
typedef QString type;
+ enum { ExactSize = true };
static int size(const QString &a) { return a.size(); }
static inline void appendTo(const QString &a, QChar *&out)
{
@@ -195,6 +219,7 @@ template <> struct QConcatenable<QString>
template <> struct QConcatenable<QStringRef>
{
typedef QStringRef type;
+ enum { ExactSize = true };
static int size(const QStringRef &a) { return a.size(); }
static inline void appendTo(QStringRef a, QChar *&out)
{
@@ -208,6 +233,7 @@ template <> struct QConcatenable<QStringRef>
template <int N> struct QConcatenable<char[N]> : private QAbstractConcatenable
{
typedef char type[N];
+ enum { ExactSize = false };
static int size(const char[N])
{
return N - 1;
@@ -221,6 +247,7 @@ template <int N> struct QConcatenable<char[N]> : private QAbstractConcatenable
template <int N> struct QConcatenable<const char[N]> : private QAbstractConcatenable
{
typedef const char type[N];
+ enum { ExactSize = false };
static int size(const char[N]) { return N - 1; }
static inline void appendTo(const char a[N], QChar *&out)
{
@@ -231,6 +258,7 @@ template <int N> struct QConcatenable<const char[N]> : private QAbstractConcaten
template <> struct QConcatenable<const char *> : private QAbstractConcatenable
{
typedef char const *type;
+ enum { ExactSize = false };
static int size(const char *a) { return qstrlen(a); }
static inline void appendTo(const char *a, QChar *&out)
{
@@ -241,6 +269,7 @@ template <> struct QConcatenable<const char *> : private QAbstractConcatenable
template <> struct QConcatenable<QByteArray> : private QAbstractConcatenable
{
typedef QByteArray type;
+ enum { ExactSize = false };
static int size(const QByteArray &ba) { return qstrnlen(ba.constData(), ba.size()); }
static inline void appendTo(const QByteArray &ba, QChar *&out)
{
@@ -253,6 +282,7 @@ template <typename A, typename B>
struct QConcatenable< QStringBuilder<A, B> >
{
typedef QStringBuilder<A, B> type;
+ enum { ExactSize = QConcatenable<A>::ExactSize && QConcatenable<B>::ExactSize };
static int size(const type &p)
{
return QConcatenable<A>::size(p.a) + QConcatenable<B>::size(p.b);
diff --git a/src/corelib/tools/tools.pri b/src/corelib/tools/tools.pri
index 3406e41..6d64915 100644
--- a/src/corelib/tools/tools.pri
+++ b/src/corelib/tools/tools.pri
@@ -33,6 +33,7 @@ HEADERS += \
tools/qsharedpointer.h \
tools/qsharedpointer_impl.h \
tools/qset.h \
+ tools/qsimd_p.h \
tools/qsize.h \
tools/qstack.h \
tools/qstring.h \
@@ -68,6 +69,7 @@ SOURCES += \
tools/qregexp.cpp \
tools/qshareddata.cpp \
tools/qsharedpointer.cpp \
+ tools/qsimd.cpp \
tools/qsize.cpp \
tools/qstring.cpp \
tools/qstringbuilder.cpp \
diff --git a/src/declarative/graphicsitems/qmlgraphicsparticles.cpp b/src/declarative/graphicsitems/qmlgraphicsparticles.cpp
index 14c7c71..3f4521e 100644
--- a/src/declarative/graphicsitems/qmlgraphicsparticles.cpp
+++ b/src/declarative/graphicsitems/qmlgraphicsparticles.cpp
@@ -1205,7 +1205,7 @@ void QmlGraphicsParticlesPainter::paint(QPainter *p, const QStyleOptionGraphicsI
const int myX = x() + parentItem()->x();
const int myY = y() + parentItem()->y();
- QVarLengthArray<QDrawPixmaps::Data, 256> pixmapData;
+ QVarLengthArray<QPainter::Fragment, 256> pixmapData;
pixmapData.resize(d->particles.count());
const QRectF sourceRect = d->image.rect();
@@ -1213,16 +1213,20 @@ void QmlGraphicsParticlesPainter::paint(QPainter *p, const QStyleOptionGraphicsI
qreal halfPHeight = sourceRect.height()/2.;
for (int i = 0; i < d->particles.count(); ++i) {
const QmlGraphicsParticle &particle = d->particles.at(i);
- pixmapData[i].point = QPointF(particle.x - myX + halfPWidth, particle.y - myY + halfPHeight);
+ pixmapData[i].x = particle.x - myX + halfPWidth;
+ pixmapData[i].y = particle.y - myY + halfPHeight;
pixmapData[i].opacity = particle.opacity;
//these never change
pixmapData[i].rotation = 0;
pixmapData[i].scaleX = 1;
pixmapData[i].scaleY = 1;
- pixmapData[i].source = sourceRect;
+ pixmapData[i].sourceLeft = sourceRect.left();
+ pixmapData[i].sourceTop = sourceRect.top();
+ pixmapData[i].width = sourceRect.width();
+ pixmapData[i].height = sourceRect.height();
}
- qDrawPixmaps(p, pixmapData.data(), d->particles.count(), d->image);
+ p->drawPixmapFragments(pixmapData.data(), d->particles.count(), d->image);
}
void QmlGraphicsParticles::componentComplete()
diff --git a/src/gui/graphicsview/qgraphicsitem_p.h b/src/gui/graphicsview/qgraphicsitem_p.h
index b3ca3b5..2c92364 100644
--- a/src/gui/graphicsview/qgraphicsitem_p.h
+++ b/src/gui/graphicsview/qgraphicsitem_p.h
@@ -156,8 +156,8 @@ public:
needSortChildren(0),
allChildrenDirty(0),
fullUpdatePending(0),
- flags(0),
dirtyChildrenBoundingRect(1),
+ flags(0),
paintedViewBoundingRectsNeedRepaint(0),
dirtySceneTransform(1),
geometryChanged(1),
@@ -474,11 +474,11 @@ public:
quint32 inSetPosHelper : 1;
quint32 needSortChildren : 1;
quint32 allChildrenDirty : 1;
+ quint32 fullUpdatePending : 1;
+ quint32 dirtyChildrenBoundingRect : 1;
// Packed 32 bits
- quint32 fullUpdatePending : 1;
quint32 flags : 17;
- quint32 dirtyChildrenBoundingRect : 1;
quint32 paintedViewBoundingRectsNeedRepaint : 1;
quint32 dirtySceneTransform : 1;
quint32 geometryChanged : 1;
@@ -492,10 +492,10 @@ public:
quint32 sceneTransformTranslateOnly : 1;
quint32 notifyBoundingRectChanged : 1;
quint32 notifyInvalidated : 1;
-
- // New 32 bits
quint32 mouseSetsFocus : 1;
quint32 explicitActivate : 1;
+
+ // New 32 bits
quint32 wantsActive : 1;
quint32 holesInSiblingIndex : 1;
quint32 sequentialOrdering : 1;
@@ -503,6 +503,7 @@ public:
quint32 scenePosDescendants : 1;
quint32 pendingPolish : 1;
quint32 mayHaveChildWithGraphicsEffect : 1;
+ quint32 padding : 25;
// Optional stacking order
int globalStackingOrder;
diff --git a/src/gui/graphicsview/qgraphicsscene.cpp b/src/gui/graphicsview/qgraphicsscene.cpp
index aaae88e..40e1d2c 100644
--- a/src/gui/graphicsview/qgraphicsscene.cpp
+++ b/src/gui/graphicsview/qgraphicsscene.cpp
@@ -693,6 +693,18 @@ void QGraphicsScenePrivate::removeItemHelper(QGraphicsItem *item)
--selectionChanging;
if (!selectionChanging && selectedItems.size() != oldSelectedItemsSize)
emit q->selectionChanged();
+
+ QHash<QGesture *, QGraphicsObject *>::iterator it;
+ for (it = gestureTargets.begin(); it != gestureTargets.end();) {
+ if (it.value() == item)
+ it = gestureTargets.erase(it);
+ else
+ ++it;
+ }
+ QGraphicsObject *dummy = static_cast<QGraphicsObject *>(item);
+ cachedTargetItems.removeOne(dummy);
+ cachedItemGestures.remove(dummy);
+ cachedAlreadyDeliveredGestures.remove(dummy);
}
/*!
@@ -5900,45 +5912,51 @@ void QGraphicsScenePrivate::leaveModal(QGraphicsItem *panel)
dispatchHoverEvent(&hoverEvent);
}
-void QGraphicsScenePrivate::getGestureTargets(const QSet<QGesture *> &gestures,
- QWidget *viewport,
- QMap<Qt::GestureType, QGesture *> *conflictedGestures,
- QList<QList<QGraphicsObject *> > *conflictedItems,
- QHash<QGesture *, QGraphicsObject *> *normalGestures)
+void QGraphicsScenePrivate::gestureTargetsAtHotSpots(const QSet<QGesture *> &gestures,
+ Qt::GestureFlag flag,
+ QHash<QGraphicsObject *, QSet<QGesture *> > *targets,
+ QSet<QGraphicsObject *> *itemsSet,
+ QSet<QGesture *> *normal,
+ QSet<QGesture *> *conflicts)
{
+ QSet<QGesture *> normalGestures; // that are not in conflicted state.
foreach (QGesture *gesture, gestures) {
- Qt::GestureType gestureType = gesture->gestureType();
- if (gesture->hasHotSpot()) {
- QPoint screenPos = gesture->hotSpot().toPoint();
- QList<QGraphicsItem *> items = itemsAtPosition(screenPos, QPointF(), viewport);
- QList<QGraphicsObject *> result;
- for (int j = 0; j < items.size(); ++j) {
- QGraphicsItem *item = items.at(j);
+ if (!gesture->hasHotSpot())
+ continue;
+ const Qt::GestureType gestureType = gesture->gestureType();
+ QList<QGraphicsItem *> items = itemsAtPosition(QPoint(), gesture->d_func()->sceneHotSpot, 0);
+ for (int j = 0; j < items.size(); ++j) {
+ QGraphicsItem *item = items.at(j);
- // Check if the item is blocked by a modal panel and use it as
- // a target instead of this item.
- (void) item->isBlockedByModalPanel(&item);
+ // Check if the item is blocked by a modal panel and use it as
+ // a target instead of this item.
+ (void) item->isBlockedByModalPanel(&item);
- if (QGraphicsObject *itemobj = item->toGraphicsObject()) {
- QGraphicsItemPrivate *d = item->d_func();
- if (d->gestureContext.contains(gestureType)) {
- result.append(itemobj);
+ if (QGraphicsObject *itemobj = item->toGraphicsObject()) {
+ QGraphicsItemPrivate *d = item->QGraphicsItem::d_func();
+ QMap<Qt::GestureType, Qt::GestureFlags>::const_iterator it =
+ d->gestureContext.find(gestureType);
+ if (it != d->gestureContext.end() && (!flag || (it.value() & flag))) {
+ if (normalGestures.contains(gesture)) {
+ normalGestures.remove(gesture);
+ if (conflicts)
+ conflicts->insert(gesture);
+ } else {
+ normalGestures.insert(gesture);
}
+ if (targets)
+ (*targets)[itemobj].insert(gesture);
+ if (itemsSet)
+ (*itemsSet).insert(itemobj);
}
- // Don't propagate through panels.
- if (item->isPanel())
- break;
- }
- DEBUG() << "QGraphicsScenePrivate::getGestureTargets:"
- << gesture << result;
- if (result.size() == 1) {
- normalGestures->insert(gesture, result.first());
- } else if (!result.isEmpty()) {
- conflictedGestures->insert(gestureType, gesture);
- conflictedItems->append(result);
}
+ // Don't propagate through panels.
+ if (item->isPanel())
+ break;
}
}
+ if (normal)
+ *normal = normalGestures;
}
void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event)
@@ -5946,266 +5964,215 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event)
QWidget *viewport = event->widget();
if (!viewport)
return;
+ QGraphicsView *graphicsView = qobject_cast<QGraphicsView *>(viewport->parent());
+ if (!graphicsView)
+ return;
+
QList<QGesture *> allGestures = event->gestures();
DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
<< "Delivering gestures:" << allGestures;
- typedef QHash<QGraphicsObject *, QList<QGesture *> > GesturesPerItem;
- GesturesPerItem gesturesPerItem;
-
- // gestures that are only supposed to propagate to parent items.
- QSet<QGesture *> parentPropagatedGestures;
-
QSet<QGesture *> startedGestures;
+ QPoint delta = graphicsView->mapFromGlobal(QPoint());
+ QTransform toScene = QTransform::fromTranslate(delta.x(), delta.y())
+ * graphicsView->viewportTransform().inverted();
foreach (QGesture *gesture, allGestures) {
+ // cache scene coordinates of the hot spot
+ if (gesture->hasHotSpot()) {
+ gesture->d_func()->sceneHotSpot = toScene.map(gesture->hotSpot());
+ } else {
+ gesture->d_func()->sceneHotSpot = QPointF();
+ }
+
QGraphicsObject *target = gestureTargets.value(gesture, 0);
if (!target) {
// when we are not in started mode but don't have a target
// then the only one interested in gesture is the view/scene
if (gesture->state() == Qt::GestureStarted)
startedGestures.insert(gesture);
- } else {
- gesturesPerItem[target].append(gesture);
- Qt::GestureFlags flags =
- target->QGraphicsItem::d_func()->gestureContext.value(gesture->gestureType());
- if (flags & Qt::IgnoredGesturesPropagateToParent)
- parentPropagatedGestures.insert(gesture);
}
}
- QMap<Qt::GestureType, QGesture *> conflictedGestures;
- QList<QList<QGraphicsObject *> > conflictedItems;
- QHash<QGesture *, QGraphicsObject *> normalGestures;
- getGestureTargets(startedGestures, viewport, &conflictedGestures, &conflictedItems,
- &normalGestures);
- DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
- << "Conflicting gestures:" << conflictedGestures.values() << conflictedItems;
- Q_ASSERT((conflictedGestures.isEmpty() && conflictedItems.isEmpty()) ||
- (!conflictedGestures.isEmpty() && !conflictedItems.isEmpty()));
-
- // gestures that were sent as override events, but no one accepted them
- QHash<QGesture *, QGraphicsObject *> ignoredConflictedGestures;
-
- // deliver conflicted gestures as override events first
- while (!conflictedGestures.isEmpty() && !conflictedItems.isEmpty()) {
- // get the topmost item to deliver the override event
- Q_ASSERT(!conflictedItems.isEmpty());
- Q_ASSERT(!conflictedItems.first().isEmpty());
- QGraphicsObject *topmost = conflictedItems.first().first();
- for (int i = 1; i < conflictedItems.size(); ++i) {
- QGraphicsObject *item = conflictedItems.at(i).first();
- if (qt_closestItemFirst(item, topmost)) {
- topmost = item;
- }
- }
- // get a list of gestures to send to the item
- QList<Qt::GestureType> grabbedGestures =
- topmost->QGraphicsItem::d_func()->gestureContext.keys();
- QList<QGesture *> gestures;
- for (int i = 0; i < grabbedGestures.size(); ++i) {
- if (QGesture *g = conflictedGestures.value(grabbedGestures.at(i), 0)) {
- gestures.append(g);
- if (!ignoredConflictedGestures.contains(g))
- ignoredConflictedGestures.insert(g, topmost);
- }
- }
-
- // send gesture override to the topmost item
- QGestureEvent ev(gestures);
- ev.t = QEvent::GestureOverride;
- ev.setWidget(event->widget());
- // mark event and individual gestures as ignored
- ev.ignore();
- foreach(QGesture *g, gestures)
- ev.setAccepted(g, false);
+ if (!startedGestures.isEmpty()) {
+ QSet<QGesture *> normalGestures; // that have just one target
+ QSet<QGesture *> conflictedGestures; // that have multiple possible targets
+ gestureTargetsAtHotSpots(startedGestures, Qt::GestureFlag(0), &cachedItemGestures, 0,
+ &normalGestures, &conflictedGestures);
+ cachedTargetItems = cachedItemGestures.keys();
+ qSort(cachedTargetItems.begin(), cachedTargetItems.end(), qt_closestItemFirst);
DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
- << "delivering override to"
- << topmost << gestures;
- sendEvent(topmost, &ev);
- // mark all accepted gestures to deliver them as normal gesture events
- foreach (QGesture *g, gestures) {
- if (ev.isAccepted() || ev.isAccepted(g)) {
- conflictedGestures.remove(g->gestureType());
- gestureTargets.remove(g);
- // add the gesture to the list of normal delivered gestures
- normalGestures.insert(g, topmost);
+ << "Conflicting gestures:" << conflictedGestures;
+
+ // deliver conflicted gestures as override events AND remember
+ // initial gesture targets
+ if (!conflictedGestures.isEmpty()) {
+ for (int i = 0; i < cachedTargetItems.size(); ++i) {
+ QWeakPointer<QGraphicsObject> item = cachedTargetItems.at(i);
+
+ // get gestures to deliver to the current item
+ QSet<QGesture *> gestures = conflictedGestures & cachedItemGestures.value(item.data());
+ if (gestures.isEmpty())
+ continue;
+
DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
- << "override was accepted:"
- << g << topmost;
- ignoredConflictedGestures.remove(g);
+ << "delivering override to"
+ << item.data() << gestures;
+ // send gesture override
+ QGestureEvent ev(gestures.toList());
+ ev.t = QEvent::GestureOverride;
+ ev.setWidget(event->widget());
+ // mark event and individual gestures as ignored
+ ev.ignore();
+ foreach(QGesture *g, gestures)
+ ev.setAccepted(g, false);
+ sendEvent(item.data(), &ev);
+ // mark all accepted gestures to deliver them as normal gesture events
+ foreach (QGesture *g, gestures) {
+ if (ev.isAccepted() || ev.isAccepted(g)) {
+ conflictedGestures.remove(g);
+ // mark the item as a gesture target
+ if (item)
+ gestureTargets.insert(g, item.data());
+ DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
+ << "override was accepted:"
+ << g << item.data();
+ }
+ // remember the first item that received the override event
+ // as it most likely become a target if noone else accepts
+ // the override event
+ if (!gestureTargets.contains(g) && item)
+ gestureTargets.insert(g, item.data());
+
+ }
+ if (conflictedGestures.isEmpty())
+ break;
}
}
- // remove the item that we've already delivered from the list
- for (int i = 0; i < conflictedItems.size(); ) {
- QList<QGraphicsObject *> &items = conflictedItems[i];
- if (items.first() == topmost) {
- items.removeFirst();
- if (items.isEmpty()) {
- conflictedItems.removeAt(i);
- continue;
+ // remember the initial target item for each gesture that was not in
+ // the conflicted state.
+ if (!normalGestures.isEmpty()) {
+ for (int i = 0; i < cachedTargetItems.size() && !normalGestures.isEmpty(); ++i) {
+ QGraphicsObject *item = cachedTargetItems.at(i);
+
+ // get gestures to deliver to the current item
+ foreach (QGesture *g, cachedItemGestures.value(item)) {
+ if (!gestureTargets.contains(g)) {
+ gestureTargets.insert(g, item);
+ normalGestures.remove(g);
+ }
}
}
- ++i;
}
}
- // put back those started gestures that are not in the conflicted state
- // and remember their targets
- QHash<QGesture *, QGraphicsObject *>::const_iterator it = normalGestures.begin(),
- e = normalGestures.end();
- for (; it != e; ++it) {
- QGesture *g = it.key();
- QGraphicsObject *receiver = it.value();
- Q_ASSERT(!gestureTargets.contains(g));
- gestureTargets.insert(g, receiver);
- gesturesPerItem[receiver].append(g);
- Qt::GestureFlags flags =
- receiver->QGraphicsItem::d_func()->gestureContext.value(g->gestureType());
- if (flags & Qt::IgnoredGesturesPropagateToParent)
- parentPropagatedGestures.insert(g);
- }
- it = ignoredConflictedGestures.begin();
- e = ignoredConflictedGestures.end();
- for (; it != e; ++it) {
- QGesture *g = it.key();
- QGraphicsObject *receiver = it.value();
- Q_ASSERT(!gestureTargets.contains(g));
- gestureTargets.insert(g, receiver);
- gesturesPerItem[receiver].append(g);
- Qt::GestureFlags flags =
- receiver->QGraphicsItem::d_func()->gestureContext.value(g->gestureType());
- if (flags & Qt::IgnoredGesturesPropagateToParent)
- parentPropagatedGestures.insert(g);
- }
-
- DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
- << "Started gestures:" << normalGestures.keys()
- << "All gestures:" << gesturesPerItem.values();
// deliver all gesture events
- QList<QGesture *> alreadyIgnoredGestures;
- QHash<QGraphicsObject *, QSet<QGesture *> > itemIgnoredGestures;
- QList<QGraphicsObject *> targetItems = gesturesPerItem.keys();
- qSort(targetItems.begin(), targetItems.end(), qt_closestItemFirst);
- for (int i = 0; i < targetItems.size(); ++i) {
- QGraphicsObject *item = targetItems.at(i);
- QList<QGesture *> gestures = gesturesPerItem.value(item);
- // remove gestures that were already delivered once and were ignored
- DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
- << "already ignored gestures for item"
- << item << ":" << itemIgnoredGestures.value(item);
-
- if (itemIgnoredGestures.contains(item)) // don't deliver twice to the same item
- continue;
-
- QGraphicsItemPrivate *gid = item->QGraphicsItem::d_func();
- foreach(QGesture *g, alreadyIgnoredGestures) {
- QMap<Qt::GestureType, Qt::GestureFlags>::iterator contextit =
- gid->gestureContext.find(g->gestureType());
- bool deliver = false;
- if (contextit != gid->gestureContext.end()) {
- if (g->state() == Qt::GestureStarted) {
- deliver = true;
- } else {
- const Qt::GestureFlags flags = contextit.value();
- if (flags & Qt::ReceivePartialGestures) {
- QGraphicsObject *originalTarget = gestureTargets.value(g);
- Q_ASSERT(originalTarget);
- QGraphicsItemPrivate *otd = originalTarget->QGraphicsItem::d_func();
- const Qt::GestureFlags originalTargetFlags = otd->gestureContext.value(g->gestureType());
- if (originalTargetFlags & Qt::IgnoredGesturesPropagateToParent) {
- // only deliver to parents of the original target item
- deliver = item->isAncestorOf(originalTarget);
- } else {
- deliver = true;
- }
- }
- }
- }
- if (deliver)
- gestures += g;
+ QSet<QGesture *> undeliveredGestures;
+ QSet<QGesture *> parentPropagatedGestures;
+ foreach (QGesture *gesture, allGestures) {
+ if (QGraphicsObject *target = gestureTargets.value(gesture, 0)) {
+ cachedItemGestures[target].insert(gesture);
+ cachedTargetItems.append(target);
+ undeliveredGestures.insert(gesture);
+ QGraphicsItemPrivate *d = target->QGraphicsItem::d_func();
+ const Qt::GestureFlags flags = d->gestureContext.value(gesture->gestureType());
+ if (flags & Qt::IgnoredGesturesPropagateToParent)
+ parentPropagatedGestures.insert(gesture);
}
+ }
+ qSort(cachedTargetItems.begin(), cachedTargetItems.end(), qt_closestItemFirst);
+ for (int i = 0; i < cachedTargetItems.size(); ++i) {
+ QWeakPointer<QGraphicsObject> receiver = cachedTargetItems.at(i);
+ QSet<QGesture *> gestures =
+ undeliveredGestures & cachedItemGestures.value(receiver.data());
+ gestures -= cachedAlreadyDeliveredGestures.value(receiver.data());
+
if (gestures.isEmpty())
continue;
+
+ cachedAlreadyDeliveredGestures[receiver.data()] += gestures;
+ const bool isPanel = receiver.data()->isPanel();
+
DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
<< "delivering to"
- << item << gestures;
- QGestureEvent ev(gestures);
+ << receiver.data() << gestures;
+ QGestureEvent ev(gestures.toList());
ev.setWidget(event->widget());
- sendEvent(item, &ev);
+ sendEvent(receiver.data(), &ev);
QSet<QGesture *> ignoredGestures;
foreach (QGesture *g, gestures) {
if (!ev.isAccepted() && !ev.isAccepted(g)) {
- ignoredGestures.insert(g);
+ // if the gesture was ignored by its target, we will update the
+ // targetItems list with a possible target items (items that
+ // want to receive partial gestures).
+ // ### wont' work if the target was destroyed in the event
+ // we will just stop delivering it.
+ if (receiver && receiver.data() == gestureTargets.value(g, 0))
+ ignoredGestures.insert(g);
} else {
- if (g->state() == Qt::GestureStarted)
- gestureTargets[g] = item;
- }
- }
- if (!ignoredGestures.isEmpty()) {
- // get a list of items under the (current) hotspot of each ignored
- // gesture and start delivery again from the beginning
- DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
- << "item has ignored the event, will propagate."
- << item << ignoredGestures;
- itemIgnoredGestures[item] += ignoredGestures;
- alreadyIgnoredGestures = ignoredGestures.toList();
-
- // remove gestures that are supposed to be propagated to
- // parent items only.
- QSet<QGesture *> parentGestures;
- for (QSet<QGesture *>::iterator it = ignoredGestures.begin();
- it != ignoredGestures.end();) {
- if (parentPropagatedGestures.contains(*it)) {
- parentGestures.insert(*it);
- it = ignoredGestures.erase(it);
- } else {
- ++it;
+ if (receiver && g->state() == Qt::GestureStarted) {
+ // someone accepted the propagated initial GestureStarted
+ // event, let it be the new target for all following events.
+ gestureTargets[g] = receiver.data();
}
+ undeliveredGestures.remove(g);
}
+ }
+ if (undeliveredGestures.isEmpty())
+ break;
- QSet<QGraphicsObject *> itemsSet = targetItems.toSet();
-
- foreach(QGesture *g, parentGestures) {
- // get the original target for the gesture
- QGraphicsItem *item = gestureTargets.value(g, 0);
- Q_ASSERT(item);
- const Qt::GestureType gestureType = g->gestureType();
- // iterate through parent items of the original gesture
- // target item and collect potential receivers
- do {
- if (QGraphicsObject *obj = item->toGraphicsObject()) {
- if (item->d_func()->gestureContext.contains(gestureType))
- itemsSet.insert(obj);
+ // ignoredGestures list is only filled when delivering to the gesture
+ // target item, so it is safe to assume item == target.
+ if (!ignoredGestures.isEmpty() && !isPanel) {
+ // look for new potential targets for gestures that were ignored
+ // and should be propagated.
+
+ QSet<QGraphicsObject *> targetsSet = cachedTargetItems.toSet();
+
+ if (receiver) {
+ // first if the gesture should be propagated to parents only
+ for (QSet<QGesture *>::iterator it = ignoredGestures.begin();
+ it != ignoredGestures.end();) {
+ if (parentPropagatedGestures.contains(*it)) {
+ QGesture *gesture = *it;
+ const Qt::GestureType gestureType = gesture->gestureType();
+ QGraphicsItem *item = receiver.data();
+ while (item) {
+ if (QGraphicsObject *obj = item->toGraphicsObject()) {
+ if (item->d_func()->gestureContext.contains(gestureType)) {
+ targetsSet.insert(obj);
+ cachedItemGestures[obj].insert(gesture);
+ }
+ }
+ if (item->isPanel())
+ break;
+ item = item->parentItem();
+ }
+
+ it = ignoredGestures.erase(it);
+ continue;
}
- if (item->isPanel())
- break;
- } while ((item = item->parentItem()));
+ ++it;
+ }
}
- QMap<Qt::GestureType, QGesture *> conflictedGestures;
- QList<QList<QGraphicsObject *> > itemsForConflictedGestures;
- QHash<QGesture *, QGraphicsObject *> normalGestures;
- getGestureTargets(ignoredGestures, viewport,
- &conflictedGestures, &itemsForConflictedGestures,
- &normalGestures);
- for (int k = 0; k < itemsForConflictedGestures.size(); ++k)
- itemsSet += itemsForConflictedGestures.at(k).toSet();
-
- targetItems = itemsSet.toList();
+ gestureTargetsAtHotSpots(ignoredGestures, Qt::ReceivePartialGestures,
+ &cachedItemGestures, &targetsSet, 0, 0);
- qSort(targetItems.begin(), targetItems.end(), qt_closestItemFirst);
+ cachedTargetItems = targetsSet.toList();
+ qSort(cachedTargetItems.begin(), cachedTargetItems.end(), qt_closestItemFirst);
DEBUG() << "QGraphicsScenePrivate::gestureEventHandler:"
- << "new targets:" << targetItems;
+ << "new targets:" << cachedTargetItems;
i = -1; // start delivery again
continue;
}
}
+
foreach (QGesture *g, startedGestures) {
if (g->gestureCancelPolicy() == QGesture::CancelAllInContext) {
DEBUG() << "lets try to cancel some";
// find gestures in context in Qt::GestureStarted or Qt::GestureUpdated state and cancel them
- cancelGesturesForChildren(g, event->widget());
+ cancelGesturesForChildren(g);
}
}
@@ -6220,9 +6187,13 @@ void QGraphicsScenePrivate::gestureEventHandler(QGestureEvent *event)
break;
}
}
+
+ cachedTargetItems.clear();
+ cachedItemGestures.clear();
+ cachedAlreadyDeliveredGestures.clear();
}
-void QGraphicsScenePrivate::cancelGesturesForChildren(QGesture *original, QWidget *viewport)
+void QGraphicsScenePrivate::cancelGesturesForChildren(QGesture *original)
{
Q_ASSERT(original);
QGraphicsItem *originalItem = gestureTargets.value(original);
@@ -6278,8 +6249,7 @@ void QGraphicsScenePrivate::cancelGesturesForChildren(QGesture *original, QWidge
if (!g->hasHotSpot())
continue;
- QPoint screenPos = g->hotSpot().toPoint();
- QList<QGraphicsItem *> items = itemsAtPosition(screenPos, QPointF(), viewport);
+ QList<QGraphicsItem *> items = itemsAtPosition(QPoint(), g->d_func()->sceneHotSpot, 0);
for (int j = 0; j < items.size(); ++j) {
QGraphicsObject *item = items.at(j)->toGraphicsObject();
if (!item)
diff --git a/src/gui/graphicsview/qgraphicsscene_p.h b/src/gui/graphicsview/qgraphicsscene_p.h
index 04ffe0f..ca8b829 100644
--- a/src/gui/graphicsview/qgraphicsscene_p.h
+++ b/src/gui/graphicsview/qgraphicsscene_p.h
@@ -294,13 +294,18 @@ public:
bool allItemsIgnoreTouchEvents;
void enableTouchEventsOnViews();
+ QList<QGraphicsObject *> cachedTargetItems;
+ QHash<QGraphicsObject *, QSet<QGesture *> > cachedItemGestures;
+ QHash<QGraphicsObject *, QSet<QGesture *> > cachedAlreadyDeliveredGestures;
QHash<QGesture *, QGraphicsObject *> gestureTargets;
void gestureEventHandler(QGestureEvent *event);
- void getGestureTargets(const QSet<QGesture *> &gestures, QWidget *viewport,
- QMap<Qt::GestureType, QGesture *> *conflictedGestures,
- QList<QList<QGraphicsObject *> > *conflictedItems,
- QHash<QGesture *, QGraphicsObject *> *normalGestures);
- void cancelGesturesForChildren(QGesture *original, QWidget *viewport);
+ void gestureTargetsAtHotSpots(const QSet<QGesture *> &gestures,
+ Qt::GestureFlag flag,
+ QHash<QGraphicsObject *, QSet<QGesture *> > *targets,
+ QSet<QGraphicsObject *> *itemsSet = 0,
+ QSet<QGesture *> *normal = 0,
+ QSet<QGesture *> *conflicts = 0);
+ void cancelGesturesForChildren(QGesture *original);
void updateInputMethodSensitivityInViews();
diff --git a/src/gui/image/qpaintengine_pic.cpp b/src/gui/image/qpaintengine_pic.cpp
index 1aeb524..029154b 100644
--- a/src/gui/image/qpaintengine_pic.cpp
+++ b/src/gui/image/qpaintengine_pic.cpp
@@ -486,8 +486,11 @@ void QPicturePaintEngine::drawTextItem(const QPointF &p , const QTextItem &ti)
qDebug() << " -> drawTextItem():" << p << ti.text();
#endif
+ const QTextItemInt &si = static_cast<const QTextItemInt &>(ti);
+ if (si.chars == 0)
+ QPaintEngine::drawTextItem(p, ti); // Draw as path
+
if (d->pic_d->formatMajor >= 9) {
- const QTextItemInt &si = static_cast<const QTextItemInt &>(ti);
int pos;
SERIALIZE_CMD(QPicturePrivate::PdcDrawTextItem);
QFont fnt = ti.font();
diff --git a/src/gui/itemviews/qheaderview.cpp b/src/gui/itemviews/qheaderview.cpp
index 1c26e51..5128b64 100644
--- a/src/gui/itemviews/qheaderview.cpp
+++ b/src/gui/itemviews/qheaderview.cpp
@@ -2221,7 +2221,8 @@ void QHeaderView::mouseMoveEvent(QMouseEvent *e)
return;
}
case QHeaderViewPrivate::MoveSection: {
- if (qAbs(pos - d->firstPos) >= QApplication::startDragDistance()) {
+ if (qAbs(pos - d->firstPos) >= QApplication::startDragDistance()
+ || !d->sectionIndicator->isHidden()) {
int indicatorCenter = (d->orientation == Qt::Horizontal
? d->sectionIndicator->width()
: d->sectionIndicator->height()) / 2;
@@ -2233,12 +2234,6 @@ void QHeaderView::mouseMoveEvent(QMouseEvent *e)
return;
d->target = d->logicalIndex(visual);
d->updateSectionIndicator(d->section, pos);
- } else {
- int visual = visualIndexAt(d->firstPos);
- if (visual == -1)
- return;
- d->target = d->logicalIndex(visual);
- d->updateSectionIndicator(d->section, d->firstPos);
}
return;
}
diff --git a/src/gui/itemviews/qsortfilterproxymodel.cpp b/src/gui/itemviews/qsortfilterproxymodel.cpp
index e73013c..c63a07b 100644
--- a/src/gui/itemviews/qsortfilterproxymodel.cpp
+++ b/src/gui/itemviews/qsortfilterproxymodel.cpp
@@ -563,7 +563,7 @@ QVector<QPair<int, QVector<int > > > QSortFilterProxyModelPrivate::proxy_interva
int proxy_item = 0;
int source_items_index = 0;
QVector<int> source_items_in_interval;
- bool compare = (orient == Qt::Vertical && source_sort_column >= 0);
+ bool compare = (orient == Qt::Vertical && source_sort_column >= 0 && dynamic_sortfilter);
while (source_items_index < source_items.size()) {
source_items_in_interval.clear();
int first_new_source_item = source_items.at(source_items_index);
@@ -1244,7 +1244,7 @@ void QSortFilterProxyModelPrivate::_q_sourceRowsInserted(
const QModelIndex &source_parent, int start, int end)
{
source_items_inserted(source_parent, start, end, Qt::Vertical);
- if (update_source_sort_column()) //previous call to update_source_sort_column may fail if the model has no column.
+ if (update_source_sort_column() && dynamic_sortfilter) //previous call to update_source_sort_column may fail if the model has no column.
sort(); // now it should succeed so we need to make sure to sort again
}
@@ -1281,8 +1281,8 @@ void QSortFilterProxyModelPrivate::_q_sourceColumnsInserted(
if (source_parent.isValid())
return; //we sort according to the root column only
if (source_sort_column == -1) {
- //we update the source_sort_column depending on the prox_sort_column
- if (update_source_sort_column())
+ //we update the source_sort_column depending on the proxy_sort_column
+ if (update_source_sort_column() && dynamic_sortfilter)
sort();
} else {
if (start <= source_sort_column)
diff --git a/src/gui/itemviews/qtreeview.cpp b/src/gui/itemviews/qtreeview.cpp
index 706d2a8..37168eb 100644
--- a/src/gui/itemviews/qtreeview.cpp
+++ b/src/gui/itemviews/qtreeview.cpp
@@ -3770,10 +3770,15 @@ void QTreeViewPrivate::rowsRemoved(const QModelIndex &parent,
if (previousSibiling != -1 && after && model->rowCount(parent) == start)
viewItems[previousSibiling].hasMoreSiblings = false;
-
- updateChildCount(parentItem, -removedCount);
- if (parentItem != -1 && viewItems.at(parentItem).total == 0)
- viewItems[parentItem].hasChildren = false; //every children have been removed;
+ if (parentItem != -1) {
+ if (viewItems.at(parentItem).expanded) {
+ updateChildCount(parentItem, -removedCount);
+ if (viewItems.at(parentItem).total == 0)
+ viewItems[parentItem].hasChildren = false; //every children have been removed;
+ } else if (viewItems[parentItem].hasChildren && !hasVisibleChildren(parent)) {
+ viewItems[parentItem].hasChildren = false;
+ }
+ }
if (after) {
q->updateGeometries();
viewport->update();
diff --git a/src/gui/kernel/qapplication_x11.cpp b/src/gui/kernel/qapplication_x11.cpp
index c6e192b..3c2c743 100644
--- a/src/gui/kernel/qapplication_x11.cpp
+++ b/src/gui/kernel/qapplication_x11.cpp
@@ -2221,30 +2221,60 @@ void qt_init(QApplicationPrivate *priv, int,
int format;
unsigned long length, after;
uchar *data = 0;
+ int rc;
+
+ do {
+ if (!qgetenv("KDE_FULL_SESSION").isEmpty()) {
+ X11->desktopEnvironment = DE_KDE;
+ X11->desktopVersion = qgetenv("KDE_SESSION_VERSION").toInt();
+ break;
+ }
+
+ if (qgetenv("DESKTOP_SESSION") == "gnome") {
+ X11->desktopEnvironment = DE_GNOME;
+ break;
+ }
+
+ // GNOME_DESKTOP_SESSION_ID is deprecated for some reason, but still check it
+ if (!qgetenv("GNOME_DESKTOP_SESSION_ID").isEmpty()) {
+ X11->desktopEnvironment = DE_GNOME;
+ break;
+ }
+
+ rc = XGetWindowProperty(X11->display, QX11Info::appRootWindow(), ATOM(_DT_SAVE_MODE),
+ 0, 2, False, XA_STRING, &type, &format, &length,
+ &after, &data);
+ if (rc == Success && length) {
+ if (!strcmp(reinterpret_cast<char *>(data), "xfce4")) {
+ // Pretend that xfce4 is gnome, as it uses the same libraries.
+ // The detection above is stolen from xdg-open.
+ X11->desktopEnvironment = DE_GNOME;
+ break;
+ }
+
+ // We got the property but it wasn't xfce4. Free data before it gets overwritten.
+ XFree(data);
+ data = 0;
+ }
+
+ rc = XGetWindowProperty(X11->display, QX11Info::appRootWindow(), ATOM(DTWM_IS_RUNNING),
+ 0, 1, False, AnyPropertyType, &type, &format, &length,
+ &after, &data);
+ if (rc == Success && length) {
+ // DTWM is running, meaning most likely CDE is running...
+ X11->desktopEnvironment = DE_CDE;
+ break;
+ }
+
+ rc = XGetWindowProperty(X11->display, QX11Info::appRootWindow(),
+ ATOM(_SGI_DESKS_MANAGER), 0, 1, False, XA_WINDOW,
+ &type, &format, &length, &after, &data);
+ if (rc == Success && length) {
+ X11->desktopEnvironment = DE_4DWM;
+ break;
+ }
+ } while(0);
- if (!qgetenv("KDE_FULL_SESSION").isEmpty()) {
- X11->desktopEnvironment = DE_KDE;
- X11->desktopVersion = qgetenv("KDE_SESSION_VERSION").toInt();
- } else if (!qgetenv("GNOME_DESKTOP_SESSION_ID").isEmpty() // Deprecated for some reason.
- || qgetenv("DESKTOP_SESSION") == "gnome") { // De-facto-standardized by GNOME.
- X11->desktopEnvironment = DE_GNOME;
- } else if (XGetWindowProperty(X11->display, QX11Info::appRootWindow(), ATOM(_DT_SAVE_MODE),
- 0, 2, False, XA_STRING, &type, &format, &length,
- &after, &data) == Success
- && !strcmp(reinterpret_cast<char *>(data), "xfce4")) {
- // Pretend that xfce4 is gnome, as it uses the same libraries.
- // The detection above is stolen from xdg-open.
- X11->desktopEnvironment = DE_GNOME;
- } else if (XGetWindowProperty(X11->display, QX11Info::appRootWindow(), ATOM(DTWM_IS_RUNNING),
- 0, 1, False, AnyPropertyType, &type, &format, &length,
- &after, &data) == Success && length) {
- // DTWM is running, meaning most likely CDE is running...
- X11->desktopEnvironment = DE_CDE;
- } else if (XGetWindowProperty(X11->display, QX11Info::appRootWindow(), ATOM(_SGI_DESKS_MANAGER),
- 0, 1, False, XA_WINDOW, &type, &format, &length, &after, &data) == Success
- && length) {
- X11->desktopEnvironment = DE_4DWM;
- }
if (data)
XFree((char *)data);
diff --git a/src/gui/kernel/qcocoaview_mac.mm b/src/gui/kernel/qcocoaview_mac.mm
index 455176e..6a16403 100644
--- a/src/gui/kernel/qcocoaview_mac.mm
+++ b/src/gui/kernel/qcocoaview_mac.mm
@@ -419,6 +419,8 @@ extern "C" {
- (BOOL)isOpaque;
{
+ if (!qwidgetprivate)
+ return [super isOpaque];
return qwidgetprivate->isOpaque;
}
@@ -450,7 +452,7 @@ extern "C" {
}
// Make sure the opengl context is updated on resize.
- if (qwidgetprivate->isGLWidget) {
+ if (qwidgetprivate && qwidgetprivate->isGLWidget) {
qwidgetprivate->needWindowChange = true;
QEvent event(QEvent::MacGLWindowChange);
qApp->sendEvent(qwidget, &event);
@@ -459,11 +461,15 @@ extern "C" {
- (void)drawRect:(NSRect)aRect
{
+ if (!qwidget)
+ return;
+
if (QApplicationPrivate::graphicsSystem() != 0) {
if (QWidgetBackingStore *bs = qwidgetprivate->maybeBackingStore()) {
// Drawing is handled on the window level
- // See qcocoasharedwindowmethods_mac_p.
- return;
+ // See qcocoasharedwindowmethods_mac_p.h
+ if (!qwidget->testAttribute(Qt::WA_PaintOnScreen))
+ return;
}
}
CGContextRef cg = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
@@ -551,12 +557,18 @@ extern "C" {
- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent
{
+ if (!qwidget)
+ return NO;
+
Q_UNUSED(theEvent);
return !qwidget->testAttribute(Qt::WA_MacNoClickThrough);
}
- (NSView *)hitTest:(NSPoint)aPoint
{
+ if (!qwidget)
+ return [super hitTest:aPoint];
+
if (qwidget->testAttribute(Qt::WA_TransparentForMouseEvents))
return nil; // You cannot hit a transparent for mouse event widget.
return [super hitTest:aPoint];
@@ -564,6 +576,9 @@ extern "C" {
- (void)updateTrackingAreas
{
+ if (!qwidget)
+ return;
+
// [NSView addTrackingArea] is slow, so bail out early if we can:
if (NSIsEmptyRect([self visibleRect]))
return;
@@ -597,6 +612,9 @@ extern "C" {
- (void)mouseEntered:(NSEvent *)event
{
+ if (!qwidget)
+ return;
+
if (qwidgetprivate->data.in_destructor)
return;
QEvent enterEvent(QEvent::Enter);
@@ -619,6 +637,9 @@ extern "C" {
- (void)mouseExited:(NSEvent *)event
{
+ if (!qwidget)
+ return;
+
QEvent leaveEvent(QEvent::Leave);
NSPoint globalPoint = [[event window] convertBaseToScreen:[event locationInWindow]];
if (!qAppInstance()->activeModalWidget() || QApplicationPrivate::tryModalHelper(qwidget, 0)) {
@@ -637,6 +658,9 @@ extern "C" {
- (void)flagsChanged:(NSEvent *)theEvent
{
+ if (!qwidget)
+ return;
+
QWidget *widgetToGetKey = qwidget;
QWidget *popup = qAppInstance()->activePopupWidget();
@@ -648,6 +672,9 @@ extern "C" {
- (void)mouseMoved:(NSEvent *)theEvent
{
+ if (!qwidget)
+ return;
+
// We always enable mouse tracking for all QCocoaView-s. In cases where we have
// child views, we will receive mouseMoved for both parent & the child (if
// mouse is over the child). We need to ignore the parent mouseMoved in such
@@ -938,6 +965,8 @@ extern "C" {
- (void)frameDidChange:(NSNotification *)note
{
Q_UNUSED(note);
+ if (!qwidget)
+ return;
if (qwidget->isWindow())
return;
NSRect newFrame = [self frame];
@@ -961,7 +990,7 @@ extern "C" {
{
QMacCocoaAutoReleasePool pool;
[super setEnabled:flag];
- if (qwidget->isEnabled() != flag)
+ if (qwidget && qwidget->isEnabled() != flag)
qwidget->setEnabled(flag);
}
@@ -972,6 +1001,8 @@ extern "C" {
- (BOOL)acceptsFirstResponder
{
+ if (!qwidget)
+ return NO;
if (qwidget->isWindow())
return YES; // Always do it, so that windows can accept key press events.
return qwidget->focusPolicy() != Qt::NoFocus;
@@ -979,6 +1010,8 @@ extern "C" {
- (BOOL)resignFirstResponder
{
+ if (!qwidget)
+ return NO;
// Seems like the following test only triggers if this
// view is inside a QMacNativeWidget:
if (qwidget == QApplication::focusWidget())
@@ -1014,6 +1047,12 @@ extern "C" {
return qwidget;
}
+- (void) qt_clearQWidget
+{
+ qwidget = 0;
+ qwidgetprivate = 0;
+}
+
- (BOOL)qt_leftButtonIsRightButton
{
return leftButtonIsRightButton;
@@ -1067,9 +1106,11 @@ extern "C" {
- (void)viewWillMoveToWindow:(NSWindow *)window
{
+ if (qwidget == 0)
+ return;
+
if (qwidget->windowFlags() & Qt::MSWindowsOwnDC
&& (window != [self window])) { // OpenGL Widget
- // Create a stupid ClearDrawable Event
QEvent event(QEvent::MacGLClearDrawable);
qApp->sendEvent(qwidget, &event);
}
@@ -1077,6 +1118,9 @@ extern "C" {
- (void)viewDidMoveToWindow
{
+ if (qwidget == 0)
+ return;
+
if (qwidget->windowFlags() & Qt::MSWindowsOwnDC && [self window]) {
// call update paint event
qwidgetprivate->needWindowChange = true;
@@ -1272,6 +1316,9 @@ extern "C" {
- (NSArray*) validAttributesForMarkedText
{
+ if (qwidget == 0)
+ return nil;
+
if (!qwidget->testAttribute(Qt::WA_InputMethodEnabled))
return nil; // Not sure if that's correct, but it's saves a malloc.
diff --git a/src/gui/kernel/qcocoaview_mac_p.h b/src/gui/kernel/qcocoaview_mac_p.h
index 4bb10c5..33aaa24 100644
--- a/src/gui/kernel/qcocoaview_mac_p.h
+++ b/src/gui/kernel/qcocoaview_mac_p.h
@@ -103,6 +103,7 @@ Q_GUI_EXPORT
- (void)draggedImage:(NSImage *)anImage endedAt:(NSPoint)aPoint operation:(NSDragOperation)operation;
- (BOOL)isComposing;
- (QWidget *)qt_qwidget;
+- (void) qt_clearQWidget;
- (BOOL)qt_leftButtonIsRightButton;
- (void)qt_setLeftButtonIsRightButton:(BOOL)isSwapped;
+ (DnDParams*)currentMouseEvent;
diff --git a/src/gui/kernel/qgesture_p.h b/src/gui/kernel/qgesture_p.h
index dee5592..649a310 100644
--- a/src/gui/kernel/qgesture_p.h
+++ b/src/gui/kernel/qgesture_p.h
@@ -69,13 +69,13 @@ public:
QGesturePrivate()
: gestureType(Qt::CustomGesture), state(Qt::NoGesture),
isHotSpotSet(false), gestureCancelPolicy(0)
-
{
}
Qt::GestureType gestureType;
Qt::GestureState state;
QPointF hotSpot;
+ QPointF sceneHotSpot;
uint isHotSpotSet : 1;
uint gestureCancelPolicy : 2;
};
diff --git a/src/gui/kernel/qgesturerecognizer.cpp b/src/gui/kernel/qgesturerecognizer.cpp
index 8735d27..c88a9a7 100644
--- a/src/gui/kernel/qgesturerecognizer.cpp
+++ b/src/gui/kernel/qgesturerecognizer.cpp
@@ -181,6 +181,7 @@ void QGestureRecognizer::reset(QGesture *gesture)
QGesturePrivate *d = gesture->d_func();
d->state = Qt::NoGesture;
d->hotSpot = QPointF();
+ d->sceneHotSpot = QPointF();
d->isHotSpotSet = false;
}
}
diff --git a/src/gui/kernel/qkeymapper_win.cpp b/src/gui/kernel/qkeymapper_win.cpp
index 578f32a..e555c5c 100644
--- a/src/gui/kernel/qkeymapper_win.cpp
+++ b/src/gui/kernel/qkeymapper_win.cpp
@@ -619,7 +619,7 @@ void QKeyMapperPrivate::clearMappings()
/* MAKELCID()'s first argument is a WORD, and GetKeyboardLayout()
* returns a DWORD. */
- LCID newLCID = MAKELCID((DWORD)GetKeyboardLayout(0), SORT_DEFAULT);
+ LCID newLCID = MAKELCID((quintptr)GetKeyboardLayout(0), SORT_DEFAULT);
// keyboardInputLocale = qt_localeFromLCID(newLCID);
bool bidi = false;
diff --git a/src/gui/kernel/qt_cocoa_helpers_mac.mm b/src/gui/kernel/qt_cocoa_helpers_mac.mm
index e9fdbda..9560952 100644
--- a/src/gui/kernel/qt_cocoa_helpers_mac.mm
+++ b/src/gui/kernel/qt_cocoa_helpers_mac.mm
@@ -369,6 +369,16 @@ QMacTabletHash *qt_mac_tablet_hash()
}
#ifdef QT_MAC_USE_COCOA
+
+// Clears the QWidget pointer that each QCocoaView holds.
+void qt_mac_clearCocoaViewQWidgetPointers(QWidget *widget)
+{
+ QCocoaView *cocoaView = reinterpret_cast<QCocoaView *>(qt_mac_nativeview_for(widget));
+ if (cocoaView && [cocoaView respondsToSelector:@selector(qt_qwidget)]) {
+ [cocoaView qt_clearQWidget];
+ }
+}
+
void qt_dispatchTabletProximityEvent(void * /*NSEvent * */ tabletEvent)
{
NSEvent *proximityEvent = static_cast<NSEvent *>(tabletEvent);
diff --git a/src/gui/kernel/qwidget.cpp b/src/gui/kernel/qwidget.cpp
index d433048..1e9b1d9 100644
--- a/src/gui/kernel/qwidget.cpp
+++ b/src/gui/kernel/qwidget.cpp
@@ -1468,6 +1468,15 @@ QWidget::~QWidget()
d->declarativeData = 0; // don't activate again in ~QObject
}
+#ifdef QT_MAC_USE_COCOA
+ // QCocoaView holds a pointer back to this widget. Clear it now
+ // to make sure it's not followed later on. The lifetime of the
+ // QCocoaView might exceed the lifetime of this widget in cases
+ // where Cocoa itself holds references to it.
+ extern void qt_mac_clearCocoaViewQWidgetPointers(QWidget *);
+ qt_mac_clearCocoaViewQWidgetPointers(this);
+#endif
+
if (!d->children.isEmpty())
d->deleteChildren();
diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp
index 070491d..891f4c2 100644
--- a/src/gui/painting/qdrawhelper.cpp
+++ b/src/gui/painting/qdrawhelper.cpp
@@ -46,6 +46,7 @@
#include <private/qdrawhelper_armv6_p.h>
#include <private/qdrawhelper_neon_p.h>
#include <private/qmath_p.h>
+#include <private/qsimd_p.h>
#include <qmath.h>
QT_BEGIN_NAMESPACE
@@ -3700,7 +3701,7 @@ template <>
Q_STATIC_TEMPLATE_SPECIALIZATION
inline quint32 alpha_4(const qargb8555 *src)
{
- Q_ASSERT((long(src) & 0x3) == 0);
+ Q_ASSERT((quintptr(src) & 0x3) == 0);
const quint8 *src8 = reinterpret_cast<const quint8*>(src);
return src8[0] << 24 | src8[3] << 16 | src8[6] << 8 | src8[9];
}
@@ -4026,8 +4027,8 @@ template <>
inline void interpolate_pixel_4(qargb8565 *dest, const qargb8565 *src,
quint32 alpha)
{
- Q_ASSERT((long(dest) & 0x3) == 0);
- Q_ASSERT((long(src) & 0x3) == 0);
+ Q_ASSERT((quintptr(dest) & 0x3) == 0);
+ Q_ASSERT((quintptr(src) & 0x3) == 0);
const quint32 a = eff_alpha_4(alpha, dest);
const quint32 ia = eff_ialpha_4(alpha, dest);
@@ -4122,8 +4123,8 @@ template <>
inline void interpolate_pixel_4(qargb8555 *dest, const qargb8555 *src,
quint32 alpha)
{
- Q_ASSERT((long(dest) & 0x3) == 0);
- Q_ASSERT((long(src) & 0x3) == 0);
+ Q_ASSERT((quintptr(dest) & 0x3) == 0);
+ Q_ASSERT((quintptr(src) & 0x3) == 0);
const quint32 a = eff_alpha_4(alpha, dest);
@@ -4218,8 +4219,8 @@ template <>
inline void interpolate_pixel_4(qrgb888 *dest, const qrgb888 *src,
quint32 alpha)
{
- Q_ASSERT((long(dest) & 0x3) == 0);
- Q_ASSERT((long(src) & 0x3) == 0);
+ Q_ASSERT((quintptr(dest) & 0x3) == 0);
+ Q_ASSERT((quintptr(src) & 0x3) == 0);
const quint32 a = eff_alpha_4(alpha, dest);
const quint32 ia = eff_ialpha_4(alpha, dest);
@@ -4291,8 +4292,8 @@ template <class DST, class SRC>
inline void interpolate_pixel_4(DST *dest, quint8 a,
const SRC *src, quint8 b)
{
- Q_ASSERT((long(dest) & 0x3) == 0);
- Q_ASSERT((long(src) & 0x3) == 0);
+ Q_ASSERT((quintptr(dest) & 0x3) == 0);
+ Q_ASSERT((quintptr(src) & 0x3) == 0);
dest[0] = dest[0].byte_mul(a) + DST(src[0]).byte_mul(b);
dest[1] = dest[1].byte_mul(a) + DST(src[1]).byte_mul(b);
@@ -4303,8 +4304,8 @@ inline void interpolate_pixel_4(DST *dest, quint8 a,
template <class DST, class SRC>
inline void blend_sourceOver_4(DST *dest, const SRC *src)
{
- Q_ASSERT((long(dest) & 0x3) == 0);
- Q_ASSERT((long(src) & 0x3) == 0);
+ Q_ASSERT((quintptr(dest) & 0x3) == 0);
+ Q_ASSERT((quintptr(src) & 0x3) == 0);
const quint32 a = alpha_4(src);
if (a == 0xffffffff) {
@@ -4319,8 +4320,8 @@ inline void blend_sourceOver_4(DST *dest, const SRC *src)
template <>
inline void blend_sourceOver_4(qargb8565 *dest, const qargb8565 *src)
{
- Q_ASSERT((long(dest) & 0x3) == 0);
- Q_ASSERT((long(src) & 0x3) == 0);
+ Q_ASSERT((quintptr(dest) & 0x3) == 0);
+ Q_ASSERT((quintptr(src) & 0x3) == 0);
const quint32 a = alpha_4(src);
if (a == 0xffffffff) {
@@ -4333,8 +4334,8 @@ inline void blend_sourceOver_4(qargb8565 *dest, const qargb8565 *src)
template <>
inline void blend_sourceOver_4(qargb8555 *dest, const qargb8555 *src)
{
- Q_ASSERT((long(dest) & 0x3) == 0);
- Q_ASSERT((long(src) & 0x3) == 0);
+ Q_ASSERT((quintptr(dest) & 0x3) == 0);
+ Q_ASSERT((quintptr(src) & 0x3) == 0);
const quint32 a = alpha_4(src);
if (a == 0xffffffff) {
@@ -4347,8 +4348,8 @@ inline void blend_sourceOver_4(qargb8555 *dest, const qargb8555 *src)
template <>
inline void blend_sourceOver_4(qargb6666 *dest, const qargb6666 *src)
{
- Q_ASSERT((long(dest) & 0x3) == 0);
- Q_ASSERT((long(src) & 0x3) == 0);
+ Q_ASSERT((quintptr(dest) & 0x3) == 0);
+ Q_ASSERT((quintptr(src) & 0x3) == 0);
const quint32 a = alpha_4(src);
if (a == 0xffffffff) {
@@ -7720,199 +7721,6 @@ static void qt_memfill16_setup(quint16 *dest, quint16 value, int count);
qt_memfill32_func qt_memfill32 = qt_memfill32_setup;
qt_memfill16_func qt_memfill16 = qt_memfill16_setup;
-enum CPUFeatures {
- None = 0,
- MMX = 0x1,
- MMXEXT = 0x2,
- MMX3DNOW = 0x4,
- MMX3DNOWEXT = 0x8,
- SSE = 0x10,
- SSE2 = 0x20,
- CMOV = 0x40,
- IWMMXT = 0x80,
- NEON = 0x100
-};
-
-static uint detectCPUFeatures()
-{
-#if defined (Q_OS_WINCE)
-#if defined (ARM)
- if (IsProcessorFeaturePresent(PF_ARM_INTEL_WMMX))
- return IWMMXT;
-#elif defined(_X86_)
- uint features = 0;
-#if defined QT_HAVE_MMX
- if (IsProcessorFeaturePresent(PF_MMX_INSTRUCTIONS_AVAILABLE))
- features |= MMX;
-#endif
-#if defined QT_HAVE_3DNOW
- if (IsProcessorFeaturePresent(PF_3DNOW_INSTRUCTIONS_AVAILABLE))
- features |= MMX3DNOW;
-#endif
- return features;
-#endif
- return 0;
-#elif defined(QT_HAVE_IWMMXT)
- // runtime detection only available when running as a previlegied process
- static const bool doIWMMXT = !qgetenv("QT_NO_IWMMXT").toInt();
- return doIWMMXT ? IWMMXT : 0;
-#elif defined(QT_HAVE_NEON)
- static const bool doNEON = !qgetenv("QT_NO_NEON").toInt();
- return doNEON ? NEON : 0;
-#else
- uint features = 0;
-#if defined(__x86_64__) || defined(Q_OS_WIN64)
- features = MMX|SSE|SSE2|CMOV;
-#elif defined(__ia64__)
- features = MMX|SSE|SSE2;
-#elif defined(__i386__) || defined(_M_IX86)
- unsigned int extended_result = 0;
- uint result = 0;
- /* see p. 118 of amd64 instruction set manual Vol3 */
-#if defined(Q_CC_GNU)
- asm ("push %%ebx\n"
- "pushf\n"
- "pop %%eax\n"
- "mov %%eax, %%ebx\n"
- "xor $0x00200000, %%eax\n"
- "push %%eax\n"
- "popf\n"
- "pushf\n"
- "pop %%eax\n"
- "xor %%edx, %%edx\n"
- "xor %%ebx, %%eax\n"
- "jz 1f\n"
-
- "mov $0x00000001, %%eax\n"
- "cpuid\n"
- "1:\n"
- "pop %%ebx\n"
- "mov %%edx, %0\n"
- : "=r" (result)
- :
- : "%eax", "%ecx", "%edx"
- );
-
- asm ("push %%ebx\n"
- "pushf\n"
- "pop %%eax\n"
- "mov %%eax, %%ebx\n"
- "xor $0x00200000, %%eax\n"
- "push %%eax\n"
- "popf\n"
- "pushf\n"
- "pop %%eax\n"
- "xor %%edx, %%edx\n"
- "xor %%ebx, %%eax\n"
- "jz 2f\n"
-
- "mov $0x80000000, %%eax\n"
- "cpuid\n"
- "cmp $0x80000000, %%eax\n"
- "jbe 2f\n"
- "mov $0x80000001, %%eax\n"
- "cpuid\n"
- "2:\n"
- "pop %%ebx\n"
- "mov %%edx, %0\n"
- : "=r" (extended_result)
- :
- : "%eax", "%ecx", "%edx"
- );
-#elif defined (Q_OS_WIN)
- _asm {
- push eax
- push ebx
- push ecx
- push edx
- pushfd
- pop eax
- mov ebx, eax
- xor eax, 00200000h
- push eax
- popfd
- pushfd
- pop eax
- mov edx, 0
- xor eax, ebx
- jz skip
-
- mov eax, 1
- cpuid
- mov result, edx
- skip:
- pop edx
- pop ecx
- pop ebx
- pop eax
- }
-
- _asm {
- push eax
- push ebx
- push ecx
- push edx
- pushfd
- pop eax
- mov ebx, eax
- xor eax, 00200000h
- push eax
- popfd
- pushfd
- pop eax
- mov edx, 0
- xor eax, ebx
- jz skip2
-
- mov eax, 80000000h
- cpuid
- cmp eax, 80000000h
- jbe skip2
- mov eax, 80000001h
- cpuid
- mov extended_result, edx
- skip2:
- pop edx
- pop ecx
- pop ebx
- pop eax
- }
-#endif
-
- // result now contains the standard feature bits
- if (result & (1u << 15))
- features |= CMOV;
- if (result & (1u << 23))
- features |= MMX;
- if (extended_result & (1u << 22))
- features |= MMXEXT;
- if (extended_result & (1u << 31))
- features |= MMX3DNOW;
- if (extended_result & (1u << 30))
- features |= MMX3DNOWEXT;
- if (result & (1u << 25))
- features |= SSE;
- if (result & (1u << 26))
- features |= SSE2;
-#endif // i386
-
- if (qgetenv("QT_NO_MMX").toInt())
- features ^= MMX;
- if (qgetenv("QT_NO_MMXEXT").toInt())
- features ^= MMXEXT;
- if (qgetenv("QT_NO_3DNOW").toInt())
- features ^= MMX3DNOW;
- if (qgetenv("QT_NO_3DNOWEXT").toInt())
- features ^= MMX3DNOWEXT;
- if (qgetenv("QT_NO_SSE").toInt())
- features ^= SSE;
- if (qgetenv("QT_NO_SSE2").toInt())
- features ^= SSE2;
-
- return features;
-#endif
-}
-
#if defined(Q_CC_RVCT) && defined(QT_HAVE_ARMV6)
// Move these to qdrawhelper_arm.c when all
// functions are implemented using arm assembly.
@@ -8005,10 +7813,7 @@ static void qt_blend_color_argb_armv6(int count, const QSpan *spans, void *userD
void qInitDrawhelperAsm()
{
- static uint features = 0xffffffff;
- if (features != 0xffffffff)
- return;
- features = detectCPUFeatures();
+ const uint features = qDetectCPUFeatures();
qt_memfill32 = qt_memfill_template<quint32, quint32>;
qt_memfill16 = qt_memfill_quint16; //qt_memfill_template<quint16, quint16>;
diff --git a/src/gui/painting/qdrawhelper_p.h b/src/gui/painting/qdrawhelper_p.h
index cb0db4f..f5b17ea 100644
--- a/src/gui/painting/qdrawhelper_p.h
+++ b/src/gui/painting/qdrawhelper_p.h
@@ -67,15 +67,6 @@
#include "QtGui/qscreen_qws.h"
#endif
-// Disable MMX and SSE on Mac/PPC builds, or if the compiler
-// does not support -Xarch argument passing
-#if defined(QT_NO_MAC_XARCH) || (defined(Q_OS_DARWIN) && (defined(__ppc__) || defined(__ppc64__)))
-#undef QT_HAVE_SSE2
-#undef QT_HAVE_SSE
-#undef QT_HAVE_3DNOW
-#undef QT_HAVE_MMX
-#endif
-
QT_BEGIN_NAMESPACE
#if defined(Q_CC_MSVC) && _MSCVER <= 1300 && !defined(Q_CC_INTEL)
@@ -1649,7 +1640,7 @@ inline void qt_memconvert(qrgb666 *dest, const quint32 *src, int count)
return;
}
- const int align = (long(dest) & 3);
+ const int align = (quintptr(dest) & 3);
switch (align) {
case 1: *dest++ = qrgb666(*src++); --count;
case 2: *dest++ = qrgb666(*src++); --count;
diff --git a/src/gui/painting/qdrawutil.cpp b/src/gui/painting/qdrawutil.cpp
index 5619a2e..d76c709 100644
--- a/src/gui/painting/qdrawutil.cpp
+++ b/src/gui/painting/qdrawutil.cpp
@@ -1081,7 +1081,7 @@ void qDrawItem(QPainter *p, Qt::GUIStyle gs,
according to the \a margins structure.
*/
-typedef QVarLengthArray<QDrawPixmaps::Data, 16> QDrawPixmapsDataArray;
+typedef QVarLengthArray<QPainter::Fragment, 16> QPixmapFragmentsArray;
/*!
\since 4.6
@@ -1102,12 +1102,12 @@ void qDrawBorderPixmap(QPainter *painter, const QRect &targetRect, const QMargin
const QPixmap &pixmap, const QRect &sourceRect,const QMargins &sourceMargins,
const QTileRules &rules, QDrawBorderPixmap::DrawingHints hints)
{
- QDrawPixmaps::Data d;
+ QPainter::Fragment d;
d.opacity = 1.0;
d.rotation = 0.0;
- QDrawPixmapsDataArray opaqueData;
- QDrawPixmapsDataArray translucentData;
+ QPixmapFragmentsArray opaqueData;
+ QPixmapFragmentsArray translucentData;
// source center
const int sourceCenterTop = sourceRect.top() + sourceMargins.top();
@@ -1182,44 +1182,56 @@ void qDrawBorderPixmap(QPainter *painter, const QRect &targetRect, const QMargin
// corners
if (targetMargins.top() > 0 && targetMargins.left() > 0 && sourceMargins.top() > 0 && sourceMargins.left() > 0) { // top left
- d.point.setX(0.5 * (xTarget[1] + xTarget[0]));
- d.point.setY(0.5 * (yTarget[1] + yTarget[0]));
- d.source = QRectF(sourceRect.left(), sourceRect.top(), sourceMargins.left(), sourceMargins.top());
- d.scaleX = qreal(xTarget[1] - xTarget[0]) / d.source.width();
- d.scaleY = qreal(yTarget[1] - yTarget[0]) / d.source.height();
+ d.x = (0.5 * (xTarget[1] + xTarget[0]));
+ d.y = (0.5 * (yTarget[1] + yTarget[0]));
+ d.sourceLeft = sourceRect.left();
+ d.sourceTop = sourceRect.top();
+ d.width = sourceMargins.left();
+ d.height = sourceMargins.top();
+ d.scaleX = qreal(xTarget[1] - xTarget[0]) / d.width;
+ d.scaleY = qreal(yTarget[1] - yTarget[0]) / d.height;
if (hints & QDrawBorderPixmap::OpaqueTopLeft)
opaqueData.append(d);
else
translucentData.append(d);
}
if (targetMargins.top() > 0 && targetMargins.right() > 0 && sourceMargins.top() > 0 && sourceMargins.right() > 0) { // top right
- d.point.setX(0.5 * (xTarget[columns] + xTarget[columns - 1]));
- d.point.setY(0.5 * (yTarget[1] + yTarget[0]));
- d.source = QRectF(sourceCenterRight, sourceRect.top(), sourceMargins.right(), sourceMargins.top());
- d.scaleX = qreal(xTarget[columns] - xTarget[columns - 1]) / d.source.width();
- d.scaleY = qreal(yTarget[1] - yTarget[0]) / d.source.height();
+ d.x = (0.5 * (xTarget[columns] + xTarget[columns - 1]));
+ d.y = (0.5 * (yTarget[1] + yTarget[0]));
+ d.sourceLeft = sourceCenterRight;
+ d.sourceTop = sourceRect.top();
+ d.width = sourceMargins.right();
+ d.height = sourceMargins.top();
+ d.scaleX = qreal(xTarget[columns] - xTarget[columns - 1]) / d.width;
+ d.scaleY = qreal(yTarget[1] - yTarget[0]) / d.height;
if (hints & QDrawBorderPixmap::OpaqueTopRight)
opaqueData.append(d);
else
translucentData.append(d);
}
if (targetMargins.bottom() > 0 && targetMargins.left() > 0 && sourceMargins.bottom() > 0 && sourceMargins.left() > 0) { // bottom left
- d.point.setX(0.5 * (xTarget[1] + xTarget[0]));
- d.point.setY(0.5 * (yTarget[rows] + yTarget[rows - 1]));
- d.source = QRectF(sourceRect.left(), sourceCenterBottom, sourceMargins.left(), sourceMargins.bottom());
- d.scaleX = qreal(xTarget[1] - xTarget[0]) / d.source.width();
- d.scaleY = qreal(yTarget[rows] - yTarget[rows - 1]) / d.source.height();
+ d.x = (0.5 * (xTarget[1] + xTarget[0]));
+ d.y =(0.5 * (yTarget[rows] + yTarget[rows - 1]));
+ d.sourceLeft = sourceRect.left();
+ d.sourceTop = sourceCenterBottom;
+ d.width = sourceMargins.left();
+ d.height = sourceMargins.bottom();
+ d.scaleX = qreal(xTarget[1] - xTarget[0]) / d.width;
+ d.scaleY = qreal(yTarget[rows] - yTarget[rows - 1]) / d.height;
if (hints & QDrawBorderPixmap::OpaqueBottomLeft)
opaqueData.append(d);
else
translucentData.append(d);
}
if (targetMargins.bottom() > 0 && targetMargins.right() > 0 && sourceMargins.bottom() > 0 && sourceMargins.right() > 0) { // bottom right
- d.point.setX(0.5 * (xTarget[columns] + xTarget[columns - 1]));
- d.point.setY(0.5 * (yTarget[rows] + yTarget[rows - 1]));
- d.source = QRectF(sourceCenterRight, sourceCenterBottom, sourceMargins.right(), sourceMargins.bottom());
- d.scaleX = qreal(xTarget[columns] - xTarget[columns - 1]) / d.source.width();
- d.scaleY = qreal(yTarget[rows] - yTarget[rows - 1]) / d.source.height();
+ d.x = (0.5 * (xTarget[columns] + xTarget[columns - 1]));
+ d.y = (0.5 * (yTarget[rows] + yTarget[rows - 1]));
+ d.sourceLeft = sourceCenterRight;
+ d.sourceTop = sourceCenterBottom;
+ d.width = sourceMargins.right();
+ d.height = sourceMargins.bottom();
+ d.scaleX = qreal(xTarget[columns] - xTarget[columns - 1]) / d.width;
+ d.scaleY = qreal(yTarget[rows] - yTarget[rows - 1]) / d.height;
if (hints & QDrawBorderPixmap::OpaqueBottomRight)
opaqueData.append(d);
else
@@ -1229,151 +1241,107 @@ void qDrawBorderPixmap(QPainter *painter, const QRect &targetRect, const QMargin
// horizontal edges
if (targetCenterWidth > 0 && sourceCenterWidth > 0) {
if (targetMargins.top() > 0 && sourceMargins.top() > 0) { // top
- QDrawPixmapsDataArray &data = hints & QDrawBorderPixmap::OpaqueTop ? opaqueData : translucentData;
- d.source = QRectF(sourceCenterLeft, sourceRect.top(), sourceCenterWidth, sourceMargins.top());
- d.point.setY(0.5 * (yTarget[1] + yTarget[0]));
- d.scaleX = dx / d.source.width();
- d.scaleY = qreal(yTarget[1] - yTarget[0]) / d.source.height();
+ QPixmapFragmentsArray &data = hints & QDrawBorderPixmap::OpaqueTop ? opaqueData : translucentData;
+ d.sourceLeft = sourceCenterLeft;
+ d.sourceTop = sourceRect.top();
+ d.width = sourceCenterWidth;
+ d.height = sourceMargins.top();
+ d.y = (0.5 * (yTarget[1] + yTarget[0]));
+ d.scaleX = dx / d.width;
+ d.scaleY = qreal(yTarget[1] - yTarget[0]) / d.height;
for (int i = 1; i < columns - 1; ++i) {
- d.point.setX(0.5 * (xTarget[i + 1] + xTarget[i]));
+ d.x = (0.5 * (xTarget[i + 1] + xTarget[i]));
data.append(d);
}
if (rules.horizontal == Qt::RepeatTile)
- data[data.size() - 1].source.setWidth((xTarget[columns - 1] - xTarget[columns - 2]) / d.scaleX);
+ data[data.size() - 1].width = ((xTarget[columns - 1] - xTarget[columns - 2]) / d.scaleX);
}
if (targetMargins.bottom() > 0 && sourceMargins.bottom() > 0) { // bottom
- QDrawPixmapsDataArray &data = hints & QDrawBorderPixmap::OpaqueBottom ? opaqueData : translucentData;
- d.source = QRectF(sourceCenterLeft, sourceCenterBottom, sourceCenterWidth, sourceMargins.bottom());;
- d.point.setY(0.5 * (yTarget[rows] + yTarget[rows - 1]));
- d.scaleX = dx / d.source.width();
- d.scaleY = qreal(yTarget[rows] - yTarget[rows - 1]) / d.source.height();
+ QPixmapFragmentsArray &data = hints & QDrawBorderPixmap::OpaqueBottom ? opaqueData : translucentData;
+ d.sourceLeft = sourceCenterLeft;
+ d.sourceTop = sourceCenterBottom;
+ d.width = sourceCenterWidth;
+ d.height = sourceMargins.bottom();
+ d.y = (0.5 * (yTarget[rows] + yTarget[rows - 1]));
+ d.scaleX = dx / d.width;
+ d.scaleY = qreal(yTarget[rows] - yTarget[rows - 1]) / d.height;
for (int i = 1; i < columns - 1; ++i) {
- d.point.setX(0.5 * (xTarget[i + 1] + xTarget[i]));
+ d.x = (0.5 * (xTarget[i + 1] + xTarget[i]));
data.append(d);
}
if (rules.horizontal == Qt::RepeatTile)
- data[data.size() - 1].source.setWidth((xTarget[columns - 1] - xTarget[columns - 2]) / d.scaleX);
+ data[data.size() - 1].width = ((xTarget[columns - 1] - xTarget[columns - 2]) / d.scaleX);
}
}
// vertical edges
if (targetCenterHeight > 0 && sourceCenterHeight > 0) {
if (targetMargins.left() > 0 && sourceMargins.left() > 0) { // left
- QDrawPixmapsDataArray &data = hints & QDrawBorderPixmap::OpaqueLeft ? opaqueData : translucentData;
- d.source = QRectF(sourceRect.left(), sourceCenterTop, sourceMargins.left(), sourceCenterHeight);
- d.point.setX(0.5 * (xTarget[1] + xTarget[0]));
- d.scaleX = qreal(xTarget[1] - xTarget[0]) / d.source.width();
- d.scaleY = dy / d.source.height();
+ QPixmapFragmentsArray &data = hints & QDrawBorderPixmap::OpaqueLeft ? opaqueData : translucentData;
+ d.sourceLeft = sourceRect.left();
+ d.sourceTop = sourceCenterTop;
+ d.width = sourceMargins.left();
+ d.height = sourceCenterHeight;
+ d.x = (0.5 * (xTarget[1] + xTarget[0]));
+ d.scaleX = qreal(xTarget[1] - xTarget[0]) / d.width;
+ d.scaleY = dy / d.height;
for (int i = 1; i < rows - 1; ++i) {
- d.point.setY(0.5 * (yTarget[i + 1] + yTarget[i]));
+ d.y = (0.5 * (yTarget[i + 1] + yTarget[i]));
data.append(d);
}
if (rules.vertical == Qt::RepeatTile)
- data[data.size() - 1].source.setHeight((yTarget[rows - 1] - yTarget[rows - 2]) / d.scaleY);
+ data[data.size() - 1].height = ((yTarget[rows - 1] - yTarget[rows - 2]) / d.scaleY);
}
if (targetMargins.right() > 0 && sourceMargins.right() > 0) { // right
- QDrawPixmapsDataArray &data = hints & QDrawBorderPixmap::OpaqueRight ? opaqueData : translucentData;
- d.source = QRectF(sourceCenterRight, sourceCenterTop, sourceMargins.right(), sourceCenterHeight);
- d.point.setX(0.5 * (xTarget[columns] + xTarget[columns - 1]));
- d.scaleX = qreal(xTarget[columns] - xTarget[columns - 1]) / d.source.width();
- d.scaleY = dy / d.source.height();
+ QPixmapFragmentsArray &data = hints & QDrawBorderPixmap::OpaqueRight ? opaqueData : translucentData;
+ d.sourceLeft = sourceCenterRight;
+ d.sourceTop = sourceCenterTop;
+ d.width = sourceMargins.right();
+ d.height = sourceCenterHeight;
+ d.x = (0.5 * (xTarget[columns] + xTarget[columns - 1]));
+ d.scaleX = qreal(xTarget[columns] - xTarget[columns - 1]) / d.width;
+ d.scaleY = dy / d.height;
for (int i = 1; i < rows - 1; ++i) {
- d.point.setY(0.5 * (yTarget[i + 1] + yTarget[i]));
+ d.y = (0.5 * (yTarget[i + 1] + yTarget[i]));
data.append(d);
}
if (rules.vertical == Qt::RepeatTile)
- data[data.size() - 1].source.setHeight((yTarget[rows - 1] - yTarget[rows - 2]) / d.scaleY);
+ data[data.size() - 1].height = ((yTarget[rows - 1] - yTarget[rows - 2]) / d.scaleY);
}
}
// center
if (targetCenterWidth > 0 && targetCenterHeight > 0 && sourceCenterWidth > 0 && sourceCenterHeight > 0) {
- QDrawPixmapsDataArray &data = hints & QDrawBorderPixmap::OpaqueCenter ? opaqueData : translucentData;
- d.source = QRectF(sourceCenterLeft, sourceCenterTop, sourceCenterWidth, sourceCenterHeight);
- d.scaleX = dx / d.source.width();
- d.scaleY = dy / d.source.height();
+ QPixmapFragmentsArray &data = hints & QDrawBorderPixmap::OpaqueCenter ? opaqueData : translucentData;
+ d.sourceLeft = sourceCenterLeft;
+ d.sourceTop = sourceCenterTop;
+ d.width = sourceCenterWidth;
+ d.height = sourceCenterHeight;
+ d.scaleX = dx / d.width;
+ d.scaleY = dy / d.height;
qreal repeatWidth = (xTarget[columns - 1] - xTarget[columns - 2]) / d.scaleX;
qreal repeatHeight = (yTarget[rows - 1] - yTarget[rows - 2]) / d.scaleY;
for (int j = 1; j < rows - 1; ++j) {
- d.point.setY(0.5 * (yTarget[j + 1] + yTarget[j]));
+ d.y = (0.5 * (yTarget[j + 1] + yTarget[j]));
for (int i = 1; i < columns - 1; ++i) {
- d.point.setX(0.5 * (xTarget[i + 1] + xTarget[i]));
+ d.x = (0.5 * (xTarget[i + 1] + xTarget[i]));
data.append(d);
}
if (rules.horizontal == Qt::RepeatTile)
- data[data.size() - 1].source.setWidth(repeatWidth);
+ data[data.size() - 1].width = repeatWidth;
}
if (rules.vertical == Qt::RepeatTile) {
for (int i = 1; i < columns - 1; ++i)
- data[data.size() - i].source.setHeight(repeatHeight);
+ data[data.size() - i].height = repeatHeight;
}
}
if (opaqueData.size())
- qDrawPixmaps(painter, opaqueData.data(), opaqueData.size(), pixmap, QDrawPixmaps::OpaqueHint);
+ painter->drawPixmapFragments(opaqueData.data(), opaqueData.size(), pixmap, QPainter::OpaqueHint);
if (translucentData.size())
- qDrawPixmaps(painter, translucentData.data(), translucentData.size(), pixmap);
-}
-
-/*!
- \class QDrawPixmaps::Data
- \since 4.6
- \internal
-
- This structure is used with the qDrawPixmaps() function.
-
- QPointF point: Specifies the center of the target rectangle.
- QRectF source: Specifies the source rectangle in the pixmap passed into the qDrawPixmaps() call.
- qreal scaleX: Specifies the horizontal scale of the target rectangle.
- qreal scaleY: Specifies the vertical scale of the target rectangle.
- qreal rotation: Specifies the rotation of the target rectangle in degrees.
- The target rectangle is rotated after scaling.
- qreal opacity: Specifies the opacity of the rectangle.
-*/
-
-/*!
- \enum QDrawPixmaps::DrawingHint
- \internal
-*/
-
-/*!
- \internal
- \since 4.6
-
- This function is used to draw \a pixmap, or a sub-rectangle of \a pixmap, at multiple positions
- with different scale, rotation and opacity on \a painter. \a drawingData is an array of \a
- dataCount elements specifying the parameters used to draw each pixmap instance.
- This can be used for example to implement a particle system.
-*/
-void qDrawPixmaps(QPainter *painter, const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QDrawPixmaps::DrawingHints hints)
-{
- QPaintEngine *engine = painter->paintEngine();
- if (!engine)
- return;
-
- if (engine->isExtended()) {
- static_cast<QPaintEngineEx *>(engine)->drawPixmaps(drawingData, dataCount, pixmap, hints);
- } else {
- qreal oldOpacity = painter->opacity();
- QTransform oldTransform = painter->transform();
-
- for (int i = 0; i < dataCount; ++i) {
- QTransform transform = oldTransform;
- transform.translate(drawingData[i].point.x(), drawingData[i].point.y());
- transform.rotate(drawingData[i].rotation);
- painter->setOpacity(oldOpacity * drawingData[i].opacity);
- painter->setTransform(transform);
-
- qreal w = drawingData[i].scaleX * drawingData[i].source.width();
- qreal h = drawingData[i].scaleY * drawingData[i].source.height();
- painter->drawPixmap(QRectF(-0.5 * w, -0.5 * h, w, h), pixmap, drawingData[i].source);
- }
-
- painter->setOpacity(oldOpacity);
- painter->setTransform(oldTransform);
- }
+ painter->drawPixmapFragments(translucentData.data(), translucentData.size(), pixmap);
}
QT_END_NAMESPACE
diff --git a/src/gui/painting/qdrawutil.h b/src/gui/painting/qdrawutil.h
index 2801b2f..31e352f 100644
--- a/src/gui/painting/qdrawutil.h
+++ b/src/gui/painting/qdrawutil.h
@@ -188,31 +188,6 @@ inline void qDrawBorderPixmap(QPainter *painter,
qDrawBorderPixmap(painter, target, margins, pixmap, pixmap.rect(), margins);
}
-// For internal use only.
-namespace QDrawPixmaps
-{
- struct Data
- {
- QPointF point;
- QRectF source;
- qreal scaleX;
- qreal scaleY;
- qreal rotation;
- qreal opacity;
- };
-
- enum DrawingHint
- {
- OpaqueHint = 0x01
- };
-
- Q_DECLARE_FLAGS(DrawingHints, DrawingHint)
-}
-
-// This function is private and may change without notice. Do not use outside Qt!!!
-Q_GUI_EXPORT void qDrawPixmaps(QPainter *painter, const QDrawPixmaps::Data *drawingData,
- int dataCount, const QPixmap &pixmap, QDrawPixmaps::DrawingHints hints = 0);
-
QT_END_NAMESPACE
QT_END_HEADER
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index 60265c5..a7c2a0b 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -3213,6 +3213,9 @@ QRasterPaintEnginePrivate::getPenFunc(const QRectF &rect,
return isUnclipped(rect, penWidth) ? data->unclipped_blend : data->blend;
}
+/*!
+ \reimp
+*/
void QRasterPaintEngine::drawStaticTextItem(QStaticTextItem *textItem)
{
ensurePen();
diff --git a/src/gui/painting/qpaintengineex.cpp b/src/gui/painting/qpaintengineex.cpp
index 4f2fffa..98762f0 100644
--- a/src/gui/painting/qpaintengineex.cpp
+++ b/src/gui/painting/qpaintengineex.cpp
@@ -893,7 +893,7 @@ void QPaintEngineEx::drawPoints(const QPoint *points, int pointCount)
for (int i=0; i<count; ++i) {
pts[++oset] = points[i].x();
pts[++oset] = points[i].y();
- pts[++oset] = points[i].x() + 1/63;
+ pts[++oset] = points[i].x() + 1/63.;
pts[++oset] = points[i].y();
}
QVectorPath path(pts, count * 2, qpaintengineex_line_types_16, QVectorPath::LinesHint);
@@ -970,23 +970,26 @@ void QPaintEngineEx::drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, con
fill(path, brush);
}
-void QPaintEngineEx::drawPixmaps(const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QDrawPixmaps::DrawingHints /*hints*/)
+void QPaintEngineEx::drawPixmapFragments(const QPainter::Fragment *fragments, int fragmentCount,
+ const QPixmap &pixmap, QPainter::FragmentHints /*hints*/)
{
qreal oldOpacity = state()->opacity;
QTransform oldTransform = state()->matrix;
- for (int i = 0; i < dataCount; ++i) {
+ for (int i = 0; i < fragmentCount; ++i) {
QTransform transform = oldTransform;
- transform.translate(drawingData[i].point.x(), drawingData[i].point.y());
- transform.rotate(drawingData[i].rotation);
- state()->opacity = oldOpacity * drawingData[i].opacity;
+ transform.translate(fragments[i].x, fragments[i].y);
+ transform.rotate(fragments[i].rotation);
+ state()->opacity = oldOpacity * fragments[i].opacity;
state()->matrix = transform;
opacityChanged();
transformChanged();
- qreal w = drawingData[i].scaleX * drawingData[i].source.width();
- qreal h = drawingData[i].scaleY * drawingData[i].source.height();
- drawPixmap(QRectF(-0.5 * w, -0.5 * h, w, h), pixmap, drawingData[i].source);
+ qreal w = fragments[i].scaleX * fragments[i].width;
+ qreal h = fragments[i].scaleY * fragments[i].height;
+ QRectF sourceRect(fragments[i].sourceLeft, fragments[i].sourceTop,
+ fragments[i].width, fragments[i].height);
+ drawPixmap(QRectF(-0.5 * w, -0.5 * h, w, h), pixmap, sourceRect);
}
state()->opacity = oldOpacity;
diff --git a/src/gui/painting/qpaintengineex_p.h b/src/gui/painting/qpaintengineex_p.h
index 90c4f9f..2401b94 100644
--- a/src/gui/painting/qpaintengineex_p.h
+++ b/src/gui/painting/qpaintengineex_p.h
@@ -197,7 +197,7 @@ public:
virtual void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s);
- virtual void drawPixmaps(const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QFlags<QDrawPixmaps::DrawingHint> hints);
+ virtual void drawPixmapFragments(const QPainter::Fragment *fragments, int fragmentCount, const QPixmap &pixmap, QFlags<QPainter::FragmentHint> hints);
virtual void updateState(const QPaintEngineState &state);
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index 4f532c0..dc96c17 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -5700,6 +5700,61 @@ void QPainter::drawImage(const QRectF &targetRect, const QImage &image, const QR
d->engine->drawImage(QRectF(x, y, w, h), image, QRectF(sx, sy, sw, sh), flags);
}
+
+void qt_draw_glyphs(QPainter *painter, const quint32 *glyphArray, const QPointF *positionArray,
+ int glyphCount)
+{
+ QPainterPrivate *painter_d = QPainterPrivate::get(painter);
+ painter_d->drawGlyphs(glyphArray, positionArray, glyphCount);
+}
+
+void QPainterPrivate::drawGlyphs(const quint32 *glyphArray, const QPointF *positionArray,
+ int glyphCount)
+{
+ updateState(state);
+
+ QFontEngine *fontEngine = state->font.d->engineForScript(QUnicodeTables::Common);
+
+ QVarLengthArray<QFixedPoint, 128> positions;
+ for (int i=0; i<glyphCount; ++i) {
+ QFixedPoint fp = QFixedPoint::fromPointF(positionArray[i]);
+ positions.append(fp);
+ }
+
+ if (extended != 0) {
+ QStaticTextItem staticTextItem;
+ staticTextItem.color = state->pen.color();
+ staticTextItem.font = state->font;
+ staticTextItem.fontEngine = fontEngine;
+ staticTextItem.numGlyphs = glyphCount;
+ staticTextItem.glyphs = reinterpret_cast<glyph_t *>(const_cast<glyph_t *>(glyphArray));
+ staticTextItem.glyphPositions = positions.data();
+
+ extended->drawStaticTextItem(&staticTextItem);
+ } else {
+ QTextItemInt textItem;
+ textItem.f = &state->font;
+ textItem.fontEngine = fontEngine;
+
+ QVarLengthArray<QFixed, 128> advances(glyphCount);
+ QVarLengthArray<QGlyphJustification, 128> glyphJustifications(glyphCount);
+ QVarLengthArray<HB_GlyphAttributes, 128> glyphAttributes(glyphCount);
+ qMemSet(glyphAttributes.data(), 0, glyphAttributes.size() * sizeof(HB_GlyphAttributes));
+ qMemSet(advances.data(), 0, advances.size() * sizeof(QFixed));
+ qMemSet(glyphJustifications.data(), 0, glyphJustifications.size() * sizeof(QGlyphJustification));
+
+ textItem.glyphs.numGlyphs = glyphCount;
+ textItem.glyphs.glyphs = reinterpret_cast<HB_Glyph *>(const_cast<quint32 *>(glyphArray));
+ textItem.glyphs.offsets = positions.data();
+ textItem.glyphs.advances_x = advances.data();
+ textItem.glyphs.advances_y = advances.data();
+ textItem.glyphs.justifications = glyphJustifications.data();
+ textItem.glyphs.attributes = glyphAttributes.data();
+
+ engine->drawTextItem(QPointF(0, 0), textItem);
+ }
+}
+
/*!
\fn void QPainter::drawStaticText(const QPoint &position, const QStaticText &staticText)
@@ -8847,6 +8902,160 @@ QTransform QPainter::combinedTransform() const
return d->state->worldMatrix * d->viewTransform();
}
+/*!
+ \since 4.7
+
+ This function is used to draw \a pixmap, or a sub-rectangle of \a pixmap,
+ at multiple positions with different scale, rotation and opacity. \a
+ fragments is an array of \a fragmentCount elements specifying the
+ parameters used to draw each pixmap fragment. The \a hints
+ parameter can be used to pass in drawing hints.
+
+ This function is potentially faster than multiple calls to drawPixmap(),
+ since the backend can optimize state changes.
+
+ \sa QPainter::Fragment, QPainter::FragmentHint
+*/
+
+void QPainter::drawPixmapFragments(const Fragment *fragments, int fragmentCount,
+ const QPixmap &pixmap, FragmentHints hints)
+{
+ Q_D(QPainter);
+
+ if (!d->engine)
+ return;
+
+ if (d->engine->isExtended()) {
+ d->extended->drawPixmapFragments(fragments, fragmentCount, pixmap, hints);
+ } else {
+ qreal oldOpacity = opacity();
+ QTransform oldTransform = transform();
+
+ for (int i = 0; i < fragmentCount; ++i) {
+ QTransform transform = oldTransform;
+ transform.translate(fragments[i].x, fragments[i].y);
+ transform.rotate(fragments[i].rotation);
+ setOpacity(oldOpacity * fragments[i].opacity);
+ setTransform(transform);
+
+ qreal w = fragments[i].scaleX * fragments[i].width;
+ qreal h = fragments[i].scaleY * fragments[i].height;
+ QRectF sourceRect(fragments[i].sourceLeft, fragments[i].sourceTop,
+ fragments[i].width, fragments[i].height);
+ drawPixmap(QRectF(-0.5 * w, -0.5 * h, w, h), pixmap, sourceRect);
+ }
+
+ setOpacity(oldOpacity);
+ setTransform(oldTransform);
+ }
+}
+
+/*!
+ \since 4.7
+ \class QPainter::Fragment
+
+ \brief This class is used in conjunction with the
+ QPainter::drawPixmapFragments() function to specify how a pixmap, or
+ sub-rect of a pixmap, is drawn.
+
+ The \a sourceLeft, \a sourceTop, \a width and \a height variables are used
+ as a source rectangle within the pixmap passed into the
+ QPainter::drawPixmapFragments() function. The variables \a x, \a y, \a
+ width and \a height are used to calculate the target rectangle that is
+ drawn. \a x and \a y denotes the center of the target rectangle. The \a
+ width and \a heigth in the target rectangle is scaled by the \a scaleX and
+ \a scaleY values. The resulting target rectangle is then rotated \a
+ rotation degrees around the \a x, \a y center point.
+
+ \sa QPainter::drawPixmapFragments()
+*/
+
+/*!
+ \since 4.7
+
+ This is a convenience function that returns a QPainter::Fragment that is
+ initialized with the \a pos, \a sourceRect, \a scaleX, \a scaleY, \a
+ rotation, \a opacity parameters.
+*/
+
+QPainter::Fragment QPainter::Fragment::create(const QPointF &pos, const QRectF &sourceRect,
+ qreal scaleX, qreal scaleY, qreal rotation,
+ qreal opacity)
+{
+ Fragment fragment = {pos.x(), pos.y(), sourceRect.x(), sourceRect.y(), sourceRect.width(),
+ sourceRect.height(), scaleX, scaleY, rotation, opacity};
+ return fragment;
+}
+
+/*!
+ \variable QPainter::Fragment::x
+ \brief the x coordinate of center point in the target rectangle.
+*/
+
+/*!
+ \variable QPainter::Fragment::y
+ \brief the y coordinate of the center point in the target rectangle.
+*/
+
+/*!
+ \variable QPainter::Fragment::sourceLeft
+ \brief the left coordinate of the source rectangle.
+*/
+
+/*!
+ \variable QPainter::Fragment::sourceTop
+ \brief the top coordinate of the source rectangle.
+*/
+
+/*!
+ \variable QPainter::Fragment::width
+
+ \brief the width of the source rectangle and is used to calculate the width
+ of the target rectangle.
+*/
+
+/*!
+ \variable QPainter::Fragment::height
+
+ \brief the height of the source rectangle and is used to calculate the
+ height of the target rectangle.
+*/
+
+/*!
+ \variable QPainter::Fragment::scaleX
+ \brief the horizontal scale of the target rectangle.
+*/
+
+/*!
+ \variable QPainter::Fragment::scaleY
+ \brief the vertical scale of the target rectangle.
+*/
+
+/*!
+ \variable QPainter::Fragment::rotation
+
+ \brief the rotation of the target rectangle in degrees. The target
+ rectangle is rotated after it has been scaled.
+*/
+
+/*!
+ \variable QPainter::Fragment::opacity
+
+ \brief the opacity of the target rectangle, where 0.0 is fully transparent
+ and 1.0 is fully opaque.
+*/
+
+/*!
+ \since 4.7
+
+ \enum QPainter::FragmentHint
+
+ \value OpaqueHint Indicates that the pixmap fragments to be drawn are
+ opaque. Opaque fragments are potentially faster to draw.
+
+ \sa QPainter::drawPixmapFragments(), QPainter::Fragment
+*/
+
void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivate::DrawOperation operation)
{
p->draw_helper(path, operation);
diff --git a/src/gui/painting/qpainter.h b/src/gui/painting/qpainter.h
index e9fd532..bcb0b50 100644
--- a/src/gui/painting/qpainter.h
+++ b/src/gui/painting/qpainter.h
@@ -99,6 +99,29 @@ public:
Q_DECLARE_FLAGS(RenderHints, RenderHint)
+ class Fragment {
+ public:
+ qreal x;
+ qreal y;
+ qreal sourceLeft;
+ qreal sourceTop;
+ qreal width;
+ qreal height;
+ qreal scaleX;
+ qreal scaleY;
+ qreal rotation;
+ qreal opacity;
+ static Fragment Q_GUI_EXPORT create(const QPointF &pos, const QRectF &sourceRect,
+ qreal scaleX = 1, qreal scaleY = 1,
+ qreal rotation = 0, qreal opacity = 1);
+ };
+
+ enum FragmentHint {
+ OpaqueHint = 0x01
+ };
+
+ Q_DECLARE_FLAGS(FragmentHints, FragmentHint)
+
QPainter();
explicit QPainter(QPaintDevice *);
~QPainter();
@@ -352,6 +375,9 @@ public:
inline void drawPixmap(const QRect &r, const QPixmap &pm);
inline void drawPixmap(int x, int y, int w, int h, const QPixmap &pm);
+ void drawPixmapFragments(const Fragment *fragments, int fragmentCount,
+ const QPixmap &pixmap, FragmentHints hints = 0);
+
void drawImage(const QRectF &targetRect, const QImage &image, const QRectF &sourceRect,
Qt::ImageConversionFlags flags = Qt::AutoColor);
inline void drawImage(const QRect &targetRect, const QImage &image, const QRect &sourceRect,
diff --git a/src/gui/painting/qpainter_p.h b/src/gui/painting/qpainter_p.h
index 02a91aa..9362dbe 100644
--- a/src/gui/painting/qpainter_p.h
+++ b/src/gui/painting/qpainter_p.h
@@ -228,6 +228,7 @@ public:
void draw_helper(const QPainterPath &path, DrawOperation operation = StrokeAndFillDraw);
void drawStretchedGradient(const QPainterPath &path, DrawOperation operation);
void drawOpaqueBackground(const QPainterPath &path, DrawOperation operation);
+ void drawGlyphs(const quint32 *glyphArray, const QPointF *positionArray, int glyphCount);
void updateMatrix();
void updateInvMatrix();
@@ -238,6 +239,11 @@ public:
void checkEmulation();
+ static QPainterPrivate *get(QPainter *painter)
+ {
+ return painter->d_ptr.data();
+ }
+
QTransform viewTransform() const;
static bool attachPainterPrivate(QPainter *q, QPaintDevice *pdev);
void detachPainterPrivate(QPainter *q);
@@ -252,6 +258,8 @@ public:
};
Q_GUI_EXPORT void qt_draw_helper(QPainterPrivate *p, const QPainterPath &path, QPainterPrivate::DrawOperation operation);
+Q_GUI_EXPORT void qt_draw_glyphs(QPainter *painter, const quint32 *glyphArray,
+ const QPointF *positionArray, int glyphCount);
QString qt_generate_brush_key(const QBrush &brush);
diff --git a/src/gui/painting/qprintengine_win.cpp b/src/gui/painting/qprintengine_win.cpp
index d029b1e..ea9dc5d 100644
--- a/src/gui/painting/qprintengine_win.cpp
+++ b/src/gui/painting/qprintengine_win.cpp
@@ -368,7 +368,8 @@ void QWin32PrintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem
}
// We only want to convert the glyphs to text if the entire string is compatible with ASCII
- bool convertToText = true;
+ // and if we actually have access to the chars.
+ bool convertToText = ti.chars != 0;
for (int i=0; i < ti.num_chars; ++i) {
if (ti.chars[i].unicode() >= 0x80) {
convertToText = false;
diff --git a/src/gui/styles/qmacstyle_mac.mm b/src/gui/styles/qmacstyle_mac.mm
index 40ee31d..116b03e 100644
--- a/src/gui/styles/qmacstyle_mac.mm
+++ b/src/gui/styles/qmacstyle_mac.mm
@@ -3760,7 +3760,7 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
QPalette np = tab->palette;
np.setColor(QPalette::WindowText, QColor(255, 255, 255, 75));
QRect nr = subElementRect(SE_TabBarTabText, opt, w);
- nr.moveTop(+1);
+ nr.moveTop(-1);
int alignment = Qt::AlignCenter | Qt::TextShowMnemonic | Qt::TextHideMnemonic;
proxy()->drawItemText(p, nr, alignment, np, tab->state & State_Enabled,
tab->text, QPalette::WindowText);
diff --git a/src/gui/text/qfont.h b/src/gui/text/qfont.h
index a2fff70..5adf237 100644
--- a/src/gui/text/qfont.h
+++ b/src/gui/text/qfont.h
@@ -291,6 +291,7 @@ private:
friend class QFontMetricsF;
friend class QFontInfo;
friend class QPainter;
+ friend class QPainterPrivate;
friend class QPSPrintEngineFont;
friend class QApplication;
friend class QWidget;
diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp
index c000457..e5975d2 100644
--- a/src/gui/text/qfontengine.cpp
+++ b/src/gui/text/qfontengine.cpp
@@ -587,8 +587,9 @@ QImage QFontEngine::alphaMapForGlyph(glyph_t glyph, const QTransform &t)
{
QImage i = alphaMapForGlyph(glyph);
if (t.type() > QTransform::TxTranslate)
- i = i.transformed(t);
+ i = i.transformed(t).convertToFormat(QImage::Format_Indexed8);
Q_ASSERT(i.depth() <= 8); // To verify that transformed didn't change the format...
+
return i;
}
@@ -597,11 +598,14 @@ QImage QFontEngine::alphaRGBMapForGlyph(glyph_t glyph, int /* margin */, const Q
QImage alphaMask = alphaMapForGlyph(glyph, t);
QImage rgbMask(alphaMask.width(), alphaMask.height(), QImage::Format_RGB32);
+ QVector<QRgb> colorTable = alphaMask.colorTable();
for (int y=0; y<alphaMask.height(); ++y) {
uint *dst = (uint *) rgbMask.scanLine(y);
uchar *src = (uchar *) alphaMask.scanLine(y);
- for (int x=0; x<alphaMask.width(); ++x)
- dst[x] = qRgb(src[x], src[x], src[x]);
+ for (int x=0; x<alphaMask.width(); ++x) {
+ int val = qAlpha(colorTable.at(src[x]));
+ dst[x] = qRgb(val, val, val);
+ }
}
return rgbMask;
diff --git a/src/gui/text/qfontengine_win.cpp b/src/gui/text/qfontengine_win.cpp
index 1a815d3..55e93bd 100644
--- a/src/gui/text/qfontengine_win.cpp
+++ b/src/gui/text/qfontengine_win.cpp
@@ -208,7 +208,7 @@ void QFontEngineWin::getCMap()
unitsPerEm = otm->otmEMSquare;
x_height = (int)otm->otmsXHeight;
loadKerningPairs(designToDevice);
- _faceId.filename = QString::fromWCharArray((wchar_t *)((char *)otm + (int)otm->otmpFullName)).toLatin1();
+ _faceId.filename = QString::fromWCharArray((wchar_t *)((char *)otm + (quintptr)otm->otmpFullName)).toLatin1();
lineWidth = otm->otmsUnderscoreSize;
fsType = otm->otmfsType;
free(otm);
@@ -1006,8 +1006,8 @@ QFontEngine::Properties QFontEngineWin::properties() const
Properties p;
p.emSquare = unitsPerEm;
p.italicAngle = otm->otmItalicAngle;
- p.postscriptName = QString::fromWCharArray((wchar_t *)((char *)otm + (int)otm->otmpFamilyName)).toLatin1();
- p.postscriptName += QString::fromWCharArray((wchar_t *)((char *)otm + (int)otm->otmpStyleName)).toLatin1();
+ p.postscriptName = QString::fromWCharArray((wchar_t *)((char *)otm + (quintptr)otm->otmpFamilyName)).toLatin1();
+ p.postscriptName += QString::fromWCharArray((wchar_t *)((char *)otm + (quintptr)otm->otmpStyleName)).toLatin1();
#ifndef QT_NO_PRINTER
p.postscriptName = QPdf::stripSpecialCharacters(p.postscriptName);
#endif
diff --git a/src/gui/text/qstatictext.cpp b/src/gui/text/qstatictext.cpp
index a7138b9..8fe4c47 100644
--- a/src/gui/text/qstatictext.cpp
+++ b/src/gui/text/qstatictext.cpp
@@ -350,15 +350,13 @@ QStaticTextPrivate::QStaticTextPrivate()
: items(0), itemCount(0), glyphPool(0), positionPool(0), needsClipRect(false),
useBackendOptimizations(false), textFormat(Qt::AutoText)
{
- ref = 1;
}
QStaticTextPrivate::QStaticTextPrivate(const QStaticTextPrivate &other)
: text(other.text), font(other.font), maximumSize(other.maximumSize), matrix(other.matrix),
items(0), itemCount(0), glyphPool(0), positionPool(0), needsClipRect(false),
- useBackendOptimizations(false), textFormat(other.textFormat)
+ useBackendOptimizations(other.useBackendOptimizations), textFormat(other.textFormat)
{
- ref = 1;
}
QStaticTextPrivate::~QStaticTextPrivate()
diff --git a/src/multimedia/base/qgraphicsvideoitem.cpp b/src/multimedia/base/qgraphicsvideoitem.cpp
index 21ba8c9..d5ca9e8 100644
--- a/src/multimedia/base/qgraphicsvideoitem.cpp
+++ b/src/multimedia/base/qgraphicsvideoitem.cpp
@@ -177,9 +177,10 @@ void QGraphicsVideoItemPrivate::_q_mediaObjectDestroyed()
/*!
\class QGraphicsVideoItem
-
\brief The QGraphicsVideoItem class provides a graphics item which display video produced by a QMediaObject.
+ \since 4.7
+
\ingroup multimedia
Attaching a QGraphicsVideoItem to a QMediaObject allows it to display
diff --git a/src/multimedia/base/qmediacontent.cpp b/src/multimedia/base/qmediacontent.cpp
index fd519c6..6f158d2 100644
--- a/src/multimedia/base/qmediacontent.cpp
+++ b/src/multimedia/base/qmediacontent.cpp
@@ -76,6 +76,7 @@ private:
\class QMediaContent
\preliminary
\brief The QMediaContent class provides access to the resources relating to a media content.
+ \since 4.7
\ingroup multimedia
diff --git a/src/multimedia/base/qmediacontrol.cpp b/src/multimedia/base/qmediacontrol.cpp
index c8bbfd4..b84c49e 100644
--- a/src/multimedia/base/qmediacontrol.cpp
+++ b/src/multimedia/base/qmediacontrol.cpp
@@ -52,6 +52,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QMediaControl
\ingroup multimedia-serv
+ \since 4.7
\preliminary
\brief The QMediaControl class provides a base interface for media service controls.
diff --git a/src/multimedia/base/qmediaobject.cpp b/src/multimedia/base/qmediaobject.cpp
index b2b8c1b..0422718 100644
--- a/src/multimedia/base/qmediaobject.cpp
+++ b/src/multimedia/base/qmediaobject.cpp
@@ -67,6 +67,7 @@ void QMediaObjectPrivate::_q_notify()
\class QMediaObject
\preliminary
\brief The QMediaObject class provides a common base for multimedia objects.
+ \since 4.7
\ingroup multimedia
diff --git a/src/multimedia/base/qmediaplaylist.cpp b/src/multimedia/base/qmediaplaylist.cpp
index ab91fd7..b3f3dd3 100644
--- a/src/multimedia/base/qmediaplaylist.cpp
+++ b/src/multimedia/base/qmediaplaylist.cpp
@@ -66,6 +66,7 @@ Q_GLOBAL_STATIC_WITH_ARGS(QMediaPluginLoader, playlistIOLoader,
/*!
\class QMediaPlaylist
\ingroup multimedia
+ \since 4.7
\preliminary
\brief The QMediaPlaylist class provides a list of media content to play.
diff --git a/src/multimedia/base/qmediaplaylistcontrol.cpp b/src/multimedia/base/qmediaplaylistcontrol.cpp
index 2ae03ad..ba3d224 100644
--- a/src/multimedia/base/qmediaplaylistcontrol.cpp
+++ b/src/multimedia/base/qmediaplaylistcontrol.cpp
@@ -49,6 +49,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QMediaPlaylistControl
\ingroup multimedia-serv
+ \since 4.7
\preliminary
\brief The QMediaPlaylistControl class provides access to the playlist functionality of a
diff --git a/src/multimedia/base/qmediaplaylistioplugin.cpp b/src/multimedia/base/qmediaplaylistioplugin.cpp
index 5f11e38..48fd721 100644
--- a/src/multimedia/base/qmediaplaylistioplugin.cpp
+++ b/src/multimedia/base/qmediaplaylistioplugin.cpp
@@ -46,6 +46,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QMediaPlaylistReader
\preliminary
+ \since 4.7
\brief The QMediaPlaylistReader class provides an interface for reading a playlist file.
\sa QMediaPlaylistIOPlugin
@@ -83,6 +84,7 @@ QMediaPlaylistReader::~QMediaPlaylistReader()
/*!
\class QMediaPlaylistWriter
\preliminary
+ \since 4.7
\brief The QMediaPlaylistWriter class provides an interface for writing a playlist file.
\sa QMediaPlaylistIOPlugin
@@ -111,6 +113,7 @@ QMediaPlaylistWriter::~QMediaPlaylistWriter()
/*!
\class QMediaPlaylistIOPlugin
+ \since 4.7
\brief The QMediaPlaylistIOPlugin class provides an interface for media playlist I/O plug-ins.
*/
diff --git a/src/multimedia/base/qmediaplaylistnavigator.cpp b/src/multimedia/base/qmediaplaylistnavigator.cpp
index 3c22ea4..0c52c71 100644
--- a/src/multimedia/base/qmediaplaylistnavigator.cpp
+++ b/src/multimedia/base/qmediaplaylistnavigator.cpp
@@ -193,6 +193,7 @@ int QMediaPlaylistNavigatorPrivate::previousItemPos(int steps) const
/*!
\class QMediaPlaylistNavigator
\preliminary
+ \since 4.7
\brief The QMediaPlaylistNavigator class provides navigation for a media playlist.
\sa QMediaPlaylist, QMediaPlaylistProvider
diff --git a/src/multimedia/base/qmediaplaylistprovider.cpp b/src/multimedia/base/qmediaplaylistprovider.cpp
index 65105dc..942f155 100644
--- a/src/multimedia/base/qmediaplaylistprovider.cpp
+++ b/src/multimedia/base/qmediaplaylistprovider.cpp
@@ -50,6 +50,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QMediaPlaylistProvider
\preliminary
+ \since 4.7
\brief The QMediaPlaylistProvider class provides an abstract list of media.
\sa QMediaPlaylist
diff --git a/src/multimedia/base/qmediaresource.cpp b/src/multimedia/base/qmediaresource.cpp
index 515e432..646d9a7 100644
--- a/src/multimedia/base/qmediaresource.cpp
+++ b/src/multimedia/base/qmediaresource.cpp
@@ -51,6 +51,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QMediaResource
\preliminary
+ \since 4.7
\brief The QMediaResource class provides a description of a media resource.
\ingroup multimedia
diff --git a/src/multimedia/base/qmediaservice.cpp b/src/multimedia/base/qmediaservice.cpp
index e40688e..d9e980b 100644
--- a/src/multimedia/base/qmediaservice.cpp
+++ b/src/multimedia/base/qmediaservice.cpp
@@ -57,6 +57,7 @@ QT_MODULE(Multimedia)
service implementations.
\ingroup multimedia-serv
\preliminary
+ \since 4.7
Media services provide implementations of the functionality promised
by media objects, and allow multiple providers to implement a QMediaObject.
diff --git a/src/multimedia/base/qmediaserviceprovider.cpp b/src/multimedia/base/qmediaserviceprovider.cpp
index 02c9b29..eb6505c 100644
--- a/src/multimedia/base/qmediaserviceprovider.cpp
+++ b/src/multimedia/base/qmediaserviceprovider.cpp
@@ -82,6 +82,7 @@ public:
/*!
\class QMediaServiceProviderHint
\preliminary
+ \since 4.7
\brief The QMediaServiceProviderHint class describes what is required of a QMediaService.
\ingroup multimedia-serv
@@ -489,6 +490,7 @@ Q_GLOBAL_STATIC(QPluginServiceProvider, pluginProvider);
/*!
\class QMediaServiceProvider
\preliminary
+ \since 4.7
\brief The QMediaServiceProvider class provides an abstract allocator for media services.
*/
@@ -597,6 +599,7 @@ QMediaServiceProvider *QMediaServiceProvider::defaultServiceProvider()
/*!
\class QMediaServiceProviderPlugin
\preliminary
+ \since 4.7
\brief The QMediaServiceProviderPlugin class interface provides an interface for QMediaService
plug-ins.
@@ -630,6 +633,7 @@ QMediaServiceProvider *QMediaServiceProvider::defaultServiceProvider()
\class QMediaServiceSupportedFormatsInterface
\brief The QMediaServiceSupportedFormatsInterface class interface
identifies if a media service plug-in supports a media format.
+ \since 4.7
A QMediaServiceProviderPlugin may implement this interface.
*/
@@ -656,6 +660,7 @@ QMediaServiceProvider *QMediaServiceProvider::defaultServiceProvider()
\class QMediaServiceSupportedDevicesInterface
\brief The QMediaServiceSupportedDevicesInterface class interface
identifies the devices supported by a media service plug-in.
+ \since 4.7
A QMediaServiceProviderPlugin may implement this interface.
*/
@@ -682,6 +687,7 @@ QMediaServiceProvider *QMediaServiceProvider::defaultServiceProvider()
\class QMediaServiceFeaturesInterface
\brief The QMediaServiceFeaturesInterface class interface identifies
features supported by a media service plug-in.
+ \since 4.7
A QMediaServiceProviderPlugin may implement this interface.
*/
diff --git a/src/multimedia/base/qmediatimerange.cpp b/src/multimedia/base/qmediatimerange.cpp
index 0ca1948..e1cea7e 100644
--- a/src/multimedia/base/qmediatimerange.cpp
+++ b/src/multimedia/base/qmediatimerange.cpp
@@ -48,6 +48,7 @@ QT_BEGIN_NAMESPACE
\class QMediaTimeInterval
\brief The QMediaTimeInterval class represents a time interval with integer precision.
\ingroup multimedia
+ \since 4.7
An interval is specified by an inclusive start() and end() time.
These must be set in the constructor, as this is an immutable class.
@@ -308,6 +309,7 @@ void QMediaTimeRangePrivate::removeInterval(const QMediaTimeInterval &interval)
\brief The QMediaTimeRange class represents a set of zero or more disjoint
time intervals.
\ingroup multimedia
+ \since 4.7
\reentrant
diff --git a/src/multimedia/base/qmetadatacontrol.cpp b/src/multimedia/base/qmetadatacontrol.cpp
index 3ecbe8d..28a82ec 100644
--- a/src/multimedia/base/qmetadatacontrol.cpp
+++ b/src/multimedia/base/qmetadatacontrol.cpp
@@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QMetaDataControl
\ingroup multimedia-serv
-
+ \since 4.7
\preliminary
\brief The QMetaDataControl class provides access to the meta-data of a
QMediaService's media.
diff --git a/src/multimedia/base/qvideodevicecontrol.cpp b/src/multimedia/base/qvideodevicecontrol.cpp
index 21db500..c0fe9a8 100644
--- a/src/multimedia/base/qvideodevicecontrol.cpp
+++ b/src/multimedia/base/qvideodevicecontrol.cpp
@@ -49,6 +49,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QVideoDeviceControl
\preliminary
+ \since 4.7
\brief The QVideoDeviceControl class provides an video device selector media control.
\ingroup multimedia-serv
diff --git a/src/multimedia/base/qvideooutputcontrol.cpp b/src/multimedia/base/qvideooutputcontrol.cpp
index a904385..58f1527 100644
--- a/src/multimedia/base/qvideooutputcontrol.cpp
+++ b/src/multimedia/base/qvideooutputcontrol.cpp
@@ -47,7 +47,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QVideoOutputControl
\preliminary
-
+ \since 4.7
\brief The QVideoOutputControl class provides a means of selecting the
active video output control.
diff --git a/src/multimedia/base/qvideorenderercontrol.cpp b/src/multimedia/base/qvideorenderercontrol.cpp
index 4e7b3da..a34ef9b 100644
--- a/src/multimedia/base/qvideorenderercontrol.cpp
+++ b/src/multimedia/base/qvideorenderercontrol.cpp
@@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QVideoRendererControl
\preliminary
-
+ \since 4.7
\brief The QVideoRendererControl class provides a control for rendering
to a video surface.
diff --git a/src/multimedia/base/qvideowidget.cpp b/src/multimedia/base/qvideowidget.cpp
index 5df245e..aabfefc 100644
--- a/src/multimedia/base/qvideowidget.cpp
+++ b/src/multimedia/base/qvideowidget.cpp
@@ -488,7 +488,7 @@ void QVideoWidgetPrivate::_q_dimensionsChanged()
/*!
\class QVideoWidget
\preliminary
-
+ \since 4.7
\brief The QVideoWidget class provides a widget which presents video
produced by a media object.
\ingroup multimedia
diff --git a/src/multimedia/base/qvideowidgetcontrol.cpp b/src/multimedia/base/qvideowidgetcontrol.cpp
index bd7ce4e..c53c77b 100644
--- a/src/multimedia/base/qvideowidgetcontrol.cpp
+++ b/src/multimedia/base/qvideowidgetcontrol.cpp
@@ -48,7 +48,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QVideoWidgetControl
\preliminary
-
+ \since 4.7
\brief The QVideoWidgetControl class provides a media control which
implements a video widget.
diff --git a/src/multimedia/base/qvideowindowcontrol.cpp b/src/multimedia/base/qvideowindowcontrol.cpp
index a23cb4b..da46823 100644
--- a/src/multimedia/base/qvideowindowcontrol.cpp
+++ b/src/multimedia/base/qvideowindowcontrol.cpp
@@ -47,6 +47,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QVideoWindowControl
\preliminary
+ \since 4.7
\ingroup multimedia-serv
\brief The QVideoWindowControl class provides a media control for rendering video to a window.
diff --git a/src/multimedia/playback/qmediaplayer.cpp b/src/multimedia/playback/qmediaplayer.cpp
index ca34993..27bff02 100644
--- a/src/multimedia/playback/qmediaplayer.cpp
+++ b/src/multimedia/playback/qmediaplayer.cpp
@@ -66,7 +66,7 @@ QT_MODULE(Multimedia)
\class QMediaPlayer
\brief The QMediaPlayer class allows the playing of a media source.
\ingroup multimedia
-
+ \since 4.7
\preliminary
The QMediaPlayer class is a high level media playback class. It can be used
diff --git a/src/multimedia/playback/qmediaplayercontrol.cpp b/src/multimedia/playback/qmediaplayercontrol.cpp
index 95ffade..2129098 100644
--- a/src/multimedia/playback/qmediaplayercontrol.cpp
+++ b/src/multimedia/playback/qmediaplayercontrol.cpp
@@ -50,7 +50,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QMediaPlayerControl
\ingroup multimedia-serv
-
+ \since 4.7
\preliminary
\brief The QMediaPlayerControl class provides access to the media playing
functionality of a QMediaService.
diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
index ea464d5..25ad5d7 100644
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
@@ -1309,7 +1309,6 @@ void QGL2PaintEngineEx::drawStaticTextItem(QStaticTextItem *textItem)
? QFontEngineGlyphCache::Type(textItem->fontEngine->glyphFormat)
: d->glyphCacheType;
- // ### What about huge fonts? These are not passed through cache in drawTextItem().
d->drawCachedGlyphs(glyphType, textItem, true);
}
@@ -1642,21 +1641,23 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
s->matrix = old;
}
-void QGL2PaintEngineEx::drawPixmaps(const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QDrawPixmaps::DrawingHints hints)
+void QGL2PaintEngineEx::drawPixmapFragments(const QPainter::Fragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::FragmentHints hints)
{
Q_D(QGL2PaintEngineEx);
// Use fallback for extended composition modes.
if (state()->composition_mode > QPainter::CompositionMode_Plus) {
- QPaintEngineEx::drawPixmaps(drawingData, dataCount, pixmap, hints);
+ QPaintEngineEx::drawPixmapFragments(fragments, fragmentCount, pixmap, hints);
return;
}
ensureActive();
- d->drawPixmaps(drawingData, dataCount, pixmap, hints);
+ d->drawPixmapFragments(fragments, fragmentCount, pixmap, hints);
}
-void QGL2PaintEngineExPrivate::drawPixmaps(const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QDrawPixmaps::DrawingHints hints)
+void QGL2PaintEngineExPrivate::drawPixmapFragments(const QPainter::Fragment *fragments,
+ int fragmentCount, const QPixmap &pixmap,
+ QPainter::FragmentHints hints)
{
GLfloat dx = 1.0f / pixmap.size().width();
GLfloat dy = 1.0f / pixmap.size().height();
@@ -1677,28 +1678,29 @@ void QGL2PaintEngineExPrivate::drawPixmaps(const QDrawPixmaps::Data *drawingData
bool allOpaque = true;
- for (int i = 0; i < dataCount; ++i) {
+ for (int i = 0; i < fragmentCount; ++i) {
qreal s = 0;
qreal c = 1;
- if (drawingData[i].rotation != 0) {
- s = qFastSin(drawingData[i].rotation * Q_PI / 180);
- c = qFastCos(drawingData[i].rotation * Q_PI / 180);
+ if (fragments[i].rotation != 0) {
+ s = qFastSin(fragments[i].rotation * Q_PI / 180);
+ c = qFastCos(fragments[i].rotation * Q_PI / 180);
}
- qreal right = 0.5 * drawingData[i].scaleX * drawingData[i].source.width();
- qreal bottom = 0.5 * drawingData[i].scaleY * drawingData[i].source.height();
+ qreal right = 0.5 * fragments[i].scaleX * fragments[i].width;
+ qreal bottom = 0.5 * fragments[i].scaleY * fragments[i].height;
QGLPoint bottomRight(right * c - bottom * s, right * s + bottom * c);
QGLPoint bottomLeft(-right * c - bottom * s, -right * s + bottom * c);
- vertexCoordinateArray.lineToArray(bottomRight.x + drawingData[i].point.x(), bottomRight.y + drawingData[i].point.y());
- vertexCoordinateArray.lineToArray(-bottomLeft.x + drawingData[i].point.x(), -bottomLeft.y + drawingData[i].point.y());
- vertexCoordinateArray.lineToArray(-bottomRight.x + drawingData[i].point.x(), -bottomRight.y + drawingData[i].point.y());
- vertexCoordinateArray.lineToArray(-bottomRight.x + drawingData[i].point.x(), -bottomRight.y + drawingData[i].point.y());
- vertexCoordinateArray.lineToArray(bottomLeft.x + drawingData[i].point.x(), bottomLeft.y + drawingData[i].point.y());
- vertexCoordinateArray.lineToArray(bottomRight.x + drawingData[i].point.x(), bottomRight.y + drawingData[i].point.y());
+ vertexCoordinateArray.lineToArray(bottomRight.x + fragments[i].x, bottomRight.y + fragments[i].y);
+ vertexCoordinateArray.lineToArray(-bottomLeft.x + fragments[i].x, -bottomLeft.y + fragments[i].y);
+ vertexCoordinateArray.lineToArray(-bottomRight.x + fragments[i].x, -bottomRight.y + fragments[i].y);
+ vertexCoordinateArray.lineToArray(-bottomRight.x + fragments[i].x, -bottomRight.y + fragments[i].y);
+ vertexCoordinateArray.lineToArray(bottomLeft.x + fragments[i].x, bottomLeft.y + fragments[i].y);
+ vertexCoordinateArray.lineToArray(bottomRight.x + fragments[i].x, bottomRight.y + fragments[i].y);
- QGLRect src(drawingData[i].source.left() * dx, drawingData[i].source.top() * dy,
- drawingData[i].source.right() * dx, drawingData[i].source.bottom() * dy);
+ QGLRect src(fragments[i].sourceLeft * dx, fragments[i].sourceTop * dy,
+ (fragments[i].sourceLeft + fragments[i].width) * dx,
+ (fragments[i].sourceTop + fragments[i].height) * dy);
textureCoordinateArray.lineToArray(src.right, src.bottom);
textureCoordinateArray.lineToArray(src.right, src.top);
@@ -1707,7 +1709,7 @@ void QGL2PaintEngineExPrivate::drawPixmaps(const QDrawPixmaps::Data *drawingData
textureCoordinateArray.lineToArray(src.left, src.bottom);
textureCoordinateArray.lineToArray(src.right, src.bottom);
- qreal opacity = drawingData[i].opacity * q->state()->opacity;
+ qreal opacity = fragments[i].opacity * q->state()->opacity;
opacityArray << opacity << opacity << opacity << opacity << opacity << opacity;
allOpaque &= (opacity >= 0.99f);
}
@@ -1720,21 +1722,22 @@ void QGL2PaintEngineExPrivate::drawPixmaps(const QDrawPixmaps::Data *drawingData
if (texture->options & QGLContext::InvertedYBindOption) {
// Flip texture y-coordinate.
QGLPoint *data = textureCoordinateArray.data();
- for (int i = 0; i < 6 * dataCount; ++i)
+ for (int i = 0; i < 6 * fragmentCount; ++i)
data[i].y = 1 - data[i].y;
}
transferMode(ImageArrayDrawingMode);
bool isBitmap = pixmap.isQBitmap();
- bool isOpaque = !isBitmap && (!pixmap.hasAlphaChannel() || (hints & QDrawPixmaps::OpaqueHint)) && allOpaque;
+ bool isOpaque = !isBitmap && (!pixmap.hasAlphaChannel() || (hints & QPainter::OpaqueHint)) && allOpaque;
updateTextureFilter(GL_TEXTURE_2D, GL_CLAMP_TO_EDGE,
q->state()->renderHints & QPainter::SmoothPixmapTransform, texture->id);
// Setup for texture drawing
currentBrush = noBrush;
- shaderManager->setSrcPixelType(isBitmap ? QGLEngineShaderManager::PatternSrc : QGLEngineShaderManager::ImageSrc);
+ shaderManager->setSrcPixelType(isBitmap ? QGLEngineShaderManager::PatternSrc
+ : QGLEngineShaderManager::ImageSrc);
if (prepareForDraw(isOpaque))
shaderManager->currentProgram()->setUniformValue(location(QGLEngineShaderManager::ImageTexture), QT_IMAGE_TEXTURE_UNIT);
@@ -1743,7 +1746,7 @@ void QGL2PaintEngineExPrivate::drawPixmaps(const QDrawPixmaps::Data *drawingData
shaderManager->currentProgram()->setUniformValue(location(QGLEngineShaderManager::PatternColor), col);
}
- glDrawArrays(GL_TRIANGLES, 0, 6 * dataCount);
+ glDrawArrays(GL_TRIANGLES, 0, 6 * fragmentCount);
}
bool QGL2PaintEngineEx::begin(QPaintDevice *pdev)
diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h
index d4932be..5d3608b 100644
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h
@@ -125,7 +125,7 @@ public:
virtual void drawTexture(const QRectF &r, GLuint textureId, const QSize &size, const QRectF &sr);
virtual void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr);
- virtual void drawPixmaps(const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QDrawPixmaps::DrawingHints hints);
+ virtual void drawPixmapFragments(const QPainter::Fragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::FragmentHints hints);
virtual void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr,
Qt::ImageConversionFlags flags = Qt::AutoColor);
virtual void drawTextItem(const QPointF &p, const QTextItem &textItem);
@@ -196,7 +196,7 @@ public:
void fill(const QVectorPath &path);
void stroke(const QVectorPath &path, const QPen &pen);
void drawTexture(const QGLRect& dest, const QGLRect& src, const QSize &textureSize, bool opaque, bool pattern = false);
- void drawPixmaps(const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QDrawPixmaps::DrawingHints hints);
+ void drawPixmapFragments(const QPainter::Fragment *fragments, int fragmentCount, const QPixmap &pixmap, QPainter::FragmentHints hints);
void drawCachedGlyphs(QFontEngineGlyphCache::Type glyphType, QStaticTextItem *staticTextItem,
bool includeMatrixInCache);
diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp
index 62f0293..bc9f0c9 100644
--- a/src/openvg/qpaintengine_vg.cpp
+++ b/src/openvg/qpaintengine_vg.cpp
@@ -93,7 +93,7 @@ public:
VGFont font;
VGfloat scaleX;
VGfloat scaleY;
-
+
uint cachedGlyphsMask[256 / 32];
QSet<glyph_t> cachedGlyphs;
};
@@ -3035,9 +3035,8 @@ void QVGPaintEngine::drawTiledPixmap
// (i.e. no opacity), no rotation or scaling, and drawing the full
// pixmap rather than parts of the pixmap. Even having just one of
// these conditions will improve performance.
-void QVGPaintEngine::drawPixmaps
- (const QDrawPixmaps::Data *drawingData, int dataCount,
- const QPixmap &pixmap, QFlags<QDrawPixmaps::DrawingHint> hints)
+void QVGPaintEngine::drawPixmapFragments(const QPainter::Fragment *drawingData, int dataCount,
+ const QPixmap &pixmap, QFlags<QPainter::FragmentHint> hints)
{
#if !defined(QT_SHIVAVG)
Q_D(QVGPaintEngine);
@@ -3048,7 +3047,7 @@ void QVGPaintEngine::drawPixmaps
if (!pd)
return; // null QPixmap
if (pd->classId() != QPixmapData::OpenVGClass || !d->simpleTransform) {
- QPaintEngineEx::drawPixmaps(drawingData, dataCount, pixmap, hints);
+ QPaintEngineEx::drawPixmapFragments(drawingData, dataCount, pixmap, hints);
return;
}
@@ -3072,7 +3071,7 @@ void QVGPaintEngine::drawPixmaps
QVarLengthArray<QRect> cachedSources;
// Select the opacity paint object.
- if ((hints & QDrawPixmaps::OpaqueHint) != 0 && d->opacity == 1.0f) {
+ if ((hints & QPainter::OpaqueHint) != 0 && d->opacity == 1.0f) {
d->setImageMode(VG_DRAW_IMAGE_NORMAL);
} else {
hints = 0;
@@ -3084,12 +3083,13 @@ void QVGPaintEngine::drawPixmaps
for (int i = 0; i < dataCount; ++i) {
QTransform transform(d->imageTransform);
- transform.translate(drawingData[i].point.x(), drawingData[i].point.y());
+ transform.translate(drawingData[i].x, drawingData[i].y);
transform.rotate(drawingData[i].rotation);
VGImage child;
QSize imageSize = vgpd->size();
- QRectF sr = drawingData[i].source;
+ QRectF sr(drawingData[i].sourceLeft, drawingData[i].sourceTop,
+ drawingData[i].width, drawingData[i].height);
if (sr.topLeft().isNull() && sr.size() == imageSize) {
child = vgImg;
} else {
@@ -3118,7 +3118,7 @@ void QVGPaintEngine::drawPixmaps
transform.scale(scaleX, scaleY);
d->setTransform(VG_MATRIX_IMAGE_USER_TO_SURFACE, transform);
- if ((hints & QDrawPixmaps::OpaqueHint) == 0) {
+ if ((hints & QPainter::OpaqueHint) == 0) {
qreal opacity = d->opacity * drawingData[i].opacity;
if (opacity != 1.0f) {
if (d->paintOpacity != opacity) {
@@ -3144,7 +3144,7 @@ void QVGPaintEngine::drawPixmaps
for (int i = 0; i < cachedImages.size(); ++i)
vgDestroyImage(cachedImages[i]);
#else
- QPaintEngineEx::drawPixmaps(drawingData, dataCount, pixmap, hints);
+ QPaintEngineEx::drawPixmapFragments(drawingData, dataCount, pixmap, hints);
#endif
}
@@ -3274,7 +3274,7 @@ void QVGPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem)
QPaintEngineEx::drawTextItem(p, textItem);
return;
}
-
+
// Get the glyphs and positions associated with the text item.
QVarLengthArray<QFixedPoint> positions;
QVarLengthArray<glyph_t> glyphs;
@@ -3284,7 +3284,7 @@ void QVGPaintEngine::drawTextItem(const QPointF &p, const QTextItem &textItem)
(ti.glyphs, matrix, ti.flags, glyphs, positions);
if (!drawCachedGlyphs(glyphs.size(), glyphs.data(), ti.font(), ti.fontEngine, p))
- QPaintEngineEx::drawTextItem(p, textItem);
+ QPaintEngineEx::drawTextItem(p, textItem);
#else
// OpenGL 1.0 does not have support for VGFont and glyphs,
// so fall back to the default Qt path stroking algorithm.
@@ -3312,7 +3312,7 @@ void QVGPaintEngine::drawStaticTextItem(QStaticTextItem *textItem)
glyphCache = new QVGFontGlyphCache();
if (glyphCache->font == VG_INVALID_HANDLE) {
qWarning("QVGPaintEngine::drawTextItem: OpenVG fonts are not supported by the OpenVG engine");
- delete glyphCache;
+ delete glyphCache;
return false;
}
glyphCache->setScaleFromText(font, fontEngine);
diff --git a/src/openvg/qpaintengine_vg_p.h b/src/openvg/qpaintengine_vg_p.h
index 3f73fed..1203af5 100644
--- a/src/openvg/qpaintengine_vg_p.h
+++ b/src/openvg/qpaintengine_vg_p.h
@@ -137,7 +137,7 @@ public:
void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s);
- void drawPixmaps(const QDrawPixmaps::Data *drawingData, int dataCount, const QPixmap &pixmap, QFlags<QDrawPixmaps::DrawingHint> hints);
+ void drawPixmapFragments(const QPainter::Fragment *drawingData, int dataCount, const QPixmap &pixmap, QFlags<QPainter::FragmentHint> hints);
void drawTextItem(const QPointF &p, const QTextItem &textItem);
void drawStaticTextItem(QStaticTextItem *staticTextItem);
diff --git a/src/plugins/bearer/generic/qgenericengine.cpp b/src/plugins/bearer/generic/qgenericengine.cpp
index a95b14b..e96b80c 100644
--- a/src/plugins/bearer/generic/qgenericengine.cpp
+++ b/src/plugins/bearer/generic/qgenericengine.cpp
@@ -60,6 +60,7 @@
#include <sys/ioctl.h>
#include <net/if.h>
#include <net/if_arp.h>
+#include <unistd.h>
#endif
diff --git a/src/plugins/mediaservices/gstreamer/gstreamer.pro b/src/plugins/mediaservices/gstreamer/gstreamer.pro
index db0ee4e..22e3c16 100644
--- a/src/plugins/mediaservices/gstreamer/gstreamer.pro
+++ b/src/plugins/mediaservices/gstreamer/gstreamer.pro
@@ -8,16 +8,8 @@ unix:contains(QT_CONFIG, alsa) {
LIBS += -lasound
}
-LIBS += -lXv
-
-CONFIG += link_pkgconfig
-
-PKGCONFIG += \
- gstreamer-0.10 \
- gstreamer-base-0.10 \
- gstreamer-interfaces-0.10 \
- gstreamer-audio-0.10 \
- gstreamer-video-0.10
+QMAKE_CXXFLAGS += $$QT_CFLAGS_GSTREAMER
+LIBS += -lXv $$QT_LIBS_GSTREAMER -lgstinterfaces-0.10 -lgstvideo-0.10 -lgstbase-0.10 -lgstaudio-0.10
# Input
HEADERS += \
diff --git a/src/plugins/mediaservices/gstreamer/qgstreamermessage.cpp b/src/plugins/mediaservices/gstreamer/qgstreamermessage.cpp
index 0a689d9..13a2454 100644
--- a/src/plugins/mediaservices/gstreamer/qgstreamermessage.cpp
+++ b/src/plugins/mediaservices/gstreamer/qgstreamermessage.cpp
@@ -48,7 +48,7 @@ static int wuchi = qRegisterMetaType<QGstreamerMessage>();
/*!
- \class QGstreamerMessage
+ \class gstreamer::QGstreamerMessage
\internal
*/
diff --git a/src/plugins/mediaservices/mediaservices.pro b/src/plugins/mediaservices/mediaservices.pro
index 0cef605..d84b276 100644
--- a/src/plugins/mediaservices/mediaservices.pro
+++ b/src/plugins/mediaservices/mediaservices.pro
@@ -5,16 +5,7 @@ contains(QT_CONFIG, mediaservice) {
mac: SUBDIRS += qt7
- unix:!mac:!symbian {
- TMP_GST_LIBS = \
- gstreamer-0.10 >= 0.10.19 \
- gstreamer-base-0.10 >= 0.10.19 \
- gstreamer-interfaces-0.10 >= 0.10.19 \
- gstreamer-audio-0.10 >= 0.10.19 \
- gstreamer-video-0.10 >= 0.10.19
-
- system(pkg-config --exists \'$${TMP_GST_LIBS}\' --print-errors): {
- SUBDIRS += gstreamer
- }
+ unix:!mac:!symbian:contains(QT_CONFIG, xvideo):contains(QT_CONFIG, gstreamer) {
+ SUBDIRS += gstreamer
}
}
diff --git a/src/qbase.pri b/src/qbase.pri
index ef5d9e5..835ed0e 100644
--- a/src/qbase.pri
+++ b/src/qbase.pri
@@ -157,6 +157,7 @@ contains(QT_PRODUCT, OpenSource.*):DEFINES *= QT_OPENSOURCE
DEFINES *= QT_NO_CAST_TO_ASCII QT_ASCII_CAST_WARNINGS
contains(QT_CONFIG, qt3support):DEFINES *= QT3_SUPPORT
DEFINES *= QT_MOC_COMPAT #we don't need warnings from calling moc code in our generated code
+DEFINES *= QT_USE_FAST_OPERATOR_PLUS QT_USE_FAST_CONCATENATION
TARGET = $$qtLibraryTarget($$TARGET$$QT_LIBINFIX) #do this towards the end
diff --git a/src/qt3support/text/q3richtext.cpp b/src/qt3support/text/q3richtext.cpp
index 21383bd..8614076 100644
--- a/src/qt3support/text/q3richtext.cpp
+++ b/src/qt3support/text/q3richtext.cpp
@@ -6667,7 +6667,7 @@ Q3TextImage::Q3TextImage(Q3TextDocument *p, const QMap<QString, QString> &attr,
imageName = attr[QLatin1String("source")];
if (!imageName.isEmpty()) {
- imgId = QString::fromLatin1("%1,%2,%3,%4").arg(imageName).arg(width).arg(height).arg((ulong)&factory);
+ imgId = QString::fromLatin1("%1,%2,%3,%4").arg(imageName).arg(width).arg(height).arg((quintptr)&factory);
if (!pixmap_map)
pixmap_map = new QMap<QString, QPixmapInt>;
if (pixmap_map->contains(imgId)) {
diff --git a/src/qt3support/text/q3textedit.cpp b/src/qt3support/text/q3textedit.cpp
index 7f51bea..d4f75ed 100644
--- a/src/qt3support/text/q3textedit.cpp
+++ b/src/qt3support/text/q3textedit.cpp
@@ -6238,7 +6238,7 @@ void Q3TextEdit::optimParseTags(QString * line, int lineNo, int indexOffset)
} else {
tmp = tagStack.isEmpty() ? 0 : tagStack.pop();
if (!tmp) {
- if (((QLatin1Char('/') + cur->tag) == tag->tag) ||
+ if ((QString(QLatin1Char('/') + cur->tag) == tag->tag) ||
(tag->tag == QLatin1String("/font") && cur->tag.left(4) == QLatin1String("font"))) {
// set up the left and parent of this tag
tag->leftTag = cur;
diff --git a/src/qt3support/text/q3textstream.cpp b/src/qt3support/text/q3textstream.cpp
index 41aab4d..8c86c7c 100644
--- a/src/qt3support/text/q3textstream.cpp
+++ b/src/qt3support/text/q3textstream.cpp
@@ -2084,7 +2084,7 @@ Q3TextStream &Q3TextStream::operator<<( void *ptr )
setf( hex, basefield );
setf( showbase );
unsetf( uppercase );
- output_int( I_LONG | I_UNSIGNED, (ulong)ptr, FALSE );
+ output_int( I_LONG | I_UNSIGNED, (quintptr)ptr, FALSE );
flags( f );
return *this;
}
diff --git a/src/qt3support/tools/q3gcache.cpp b/src/qt3support/tools/q3gcache.cpp
index a31f827..ada8330 100644
--- a/src/qt3support/tools/q3gcache.cpp
+++ b/src/qt3support/tools/q3gcache.cpp
@@ -226,7 +226,7 @@ public:
bool remove_ascii(Q3CacheItem *item)
{ return Q3GDict::remove_ascii((const char *)item->key,item); }
bool remove_int(Q3CacheItem *item)
- { return Q3GDict::remove_int((long)item->key,item);}
+ { return Q3GDict::remove_int((quintptr)item->key,item);}
void statistics() { Q3GDict::statistics(); }
@@ -426,7 +426,7 @@ bool Q3GCache::insert_other(const char *key, Q3PtrCollection::Item data,
if (keytype == AsciiKey)
dict->insert_ascii(key, ci);
else
- dict->insert_int((long)key, ci);
+ dict->insert_int((quintptr)key, ci);
tCost += cost;
return true;
}
@@ -486,7 +486,7 @@ Q3PtrCollection::Item Q3GCache::take_other(const char *key)
if (keytype == AsciiKey)
ci = dict->take_ascii(key);
else
- ci = dict->take_int((long)key);
+ ci = dict->take_int((quintptr)key);
Item d;
if (ci) {
d = ci->data;
@@ -563,7 +563,7 @@ Q3PtrCollection::Item Q3GCache::find_string(const QString &key, bool ref) const
Q3PtrCollection::Item Q3GCache::find_other(const char *key, bool ref) const
{
Q3CacheItem *ci = keytype == AsciiKey ? dict->find_ascii(key)
- : dict->find_int((long)key);
+ : dict->find_int((quintptr)key);
#if defined(QT_DEBUG)
lruList->finds++;
#endif
@@ -811,7 +811,7 @@ const char *Q3GCacheIterator::getKeyAscii() const
long Q3GCacheIterator::getKeyInt() const
{
Q3CacheItem *item = it->current();
- return item ? (long)item->key : 0;
+ return item ? (quintptr)item->key : 0;
}
/*!
diff --git a/src/qt3support/tools/q3gdict.cpp b/src/qt3support/tools/q3gdict.cpp
index a968407..e8144fe 100644
--- a/src/qt3support/tools/q3gdict.cpp
+++ b/src/qt3support/tools/q3gdict.cpp
@@ -437,7 +437,7 @@ Q3PtrCollection::Item Q3GDict::look_int(long key, Q3PtrCollection::Item d, int o
Q3PtrCollection::Item Q3GDict::look_ptr(void *key, Q3PtrCollection::Item d, int op)
{
Q3PtrBucket *n;
- int index = (int)((ulong)key % vlen); // simple hash
+ int index = (int)((quintptr)key % vlen); // simple hash
if (op == op_find) { // find
for (n=(Q3PtrBucket*)vec[index]; n;
n=(Q3PtrBucket*)n->getNext()) {
@@ -650,7 +650,7 @@ Q3PtrBucket *Q3GDict::unlink_ptr(void *key, Q3PtrCollection::Item d)
return 0;
Q3PtrBucket *n;
Q3PtrBucket *prev = 0;
- int index = (int)((ulong)key % vlen);
+ int index = (int)((quintptr)key % vlen);
for (n=(Q3PtrBucket *)vec[index]; n; n=(Q3PtrBucket *)n->getNext()) {
bool found = (n->getKey() == key);
if (found && d)
diff --git a/src/script/api/qscriptengine_p.h b/src/script/api/qscriptengine_p.h
index f69e537..79294fe 100644
--- a/src/script/api/qscriptengine_p.h
+++ b/src/script/api/qscriptengine_p.h
@@ -854,7 +854,7 @@ inline bool QScriptEnginePrivate::isQObject(JSC::JSValue value)
inline bool QScriptEnginePrivate::isQMetaObject(JSC::JSValue value)
{
#ifndef QT_NO_QOBJECT
- return JSC::asObject(value)->inherits(&QScript::QMetaObjectWrapperObject::info);
+ return isObject(value) && JSC::asObject(value)->inherits(&QScript::QMetaObjectWrapperObject::info);
#else
return false;
#endif
diff --git a/src/sql/drivers/oci/qsql_oci.cpp b/src/sql/drivers/oci/qsql_oci.cpp
index b5c85e6..de2be89 100644
--- a/src/sql/drivers/oci/qsql_oci.cpp
+++ b/src/sql/drivers/oci/qsql_oci.cpp
@@ -56,6 +56,12 @@
#include <qvector.h>
#include <qdebug.h>
+// This is needed for oracle oci when compiling with mingw-w64 headers
+#if defined(__MINGW64_VERSION_MAJOR) && defined(_WIN64)
+#define _int64 __int64
+#endif
+
+
#include <oci.h>
#ifdef max
#undef max
diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp
index fab3ab3..9f7d267 100644
--- a/src/sql/drivers/odbc/qsql_odbc.cpp
+++ b/src/sql/drivers/odbc/qsql_odbc.cpp
@@ -63,7 +63,7 @@ QT_BEGIN_NAMESPACE
#define ODBC_CHECK_DRIVER
// newer platform SDKs use SQLLEN instead of SQLINTEGER
-#if defined(WIN32) && (_MSC_VER < 1300)
+#if defined(WIN32) && (_MSC_VER < 1300) && !defined(__MINGW64_VERSION_MAJOR)
# define QSQLLEN SQLINTEGER
# define QSQLULEN SQLUINTEGER
#else
diff --git a/tests/auto/gestures/tst_gestures.cpp b/tests/auto/gestures/tst_gestures.cpp
index 24391c0..a2058cd 100644
--- a/tests/auto/gestures/tst_gestures.cpp
+++ b/tests/auto/gestures/tst_gestures.cpp
@@ -261,15 +261,19 @@ protected:
eventsPtr->all << g->gestureType();
switch(g->state()) {
case Qt::GestureStarted:
+ emit gestureStarted(e->type(), g);
eventsPtr->started << g->gestureType();
break;
case Qt::GestureUpdated:
+ emit gestureUpdated(e->type(), g);
eventsPtr->updated << g->gestureType();
break;
case Qt::GestureFinished:
+ emit gestureFinished(e->type(), g);
eventsPtr->finished << g->gestureType();
break;
case Qt::GestureCanceled:
+ emit gestureCanceled(e->type(), g);
eventsPtr->canceled << g->gestureType();
break;
default:
@@ -283,13 +287,23 @@ protected:
}
return true;
}
+
+Q_SIGNALS:
+ void gestureStarted(QEvent::Type, QGesture *);
+ void gestureUpdated(QEvent::Type, QGesture *);
+ void gestureFinished(QEvent::Type, QGesture *);
+ void gestureCanceled(QEvent::Type, QGesture *);
+
+public Q_SLOTS:
+ void deleteThis() { delete this; }
};
// TODO rename to sendGestureSequence
static void sendCustomGesture(CustomEvent *event, QObject *object, QGraphicsScene *scene = 0)
{
+ QWeakPointer<QObject> receiver(object);
for (int i = CustomGesture::SerialMaybeThreshold;
- i <= CustomGesture::SerialFinishedThreshold; ++i) {
+ i <= CustomGesture::SerialFinishedThreshold && receiver; ++i) {
event->serial = i;
if (scene)
scene->sendEvent(qobject_cast<QGraphicsObject *>(object), event);
@@ -336,6 +350,9 @@ private slots:
void graphicsViewParentPropagation();
void panelPropagation();
void panelStacksBehindParent();
+ void deleteGestureTargetWidget();
+ void deleteGestureTargetItem_data();
+ void deleteGestureTargetItem();
};
tst_Gestures::tst_Gestures()
@@ -657,14 +674,16 @@ static const QColor InstanceColors[] = {
class GestureItem : public QGraphicsObject
{
+ Q_OBJECT
static int InstanceCount;
-
public:
GestureItem(const char *name = 0)
{
instanceNumber = InstanceCount++;
- if (name)
+ if (name) {
setObjectName(QLatin1String(name));
+ setToolTip(name);
+ }
size = QRectF(0, 0, 100, 100);
customEventsReceived = 0;
gestureEventsReceived = 0;
@@ -672,6 +691,8 @@ public:
events.clear();
overrideEvents.clear();
acceptGestureOverride = false;
+
+ scene = 0;
}
~GestureItem()
{
@@ -773,15 +794,19 @@ protected:
switch(g->state()) {
case Qt::GestureStarted:
eventsPtr->started << g->gestureType();
+ emit gestureStarted(e->type(), g);
break;
case Qt::GestureUpdated:
eventsPtr->updated << g->gestureType();
+ emit gestureUpdated(e->type(), g);
break;
case Qt::GestureFinished:
eventsPtr->finished << g->gestureType();
+ emit gestureFinished(e->type(), g);
break;
case Qt::GestureCanceled:
eventsPtr->canceled << g->gestureType();
+ emit gestureCanceled(e->type(), g);
break;
default:
Q_ASSERT(false);
@@ -794,6 +819,26 @@ protected:
}
return true;
}
+
+Q_SIGNALS:
+ void gestureStarted(QEvent::Type, QGesture *);
+ void gestureUpdated(QEvent::Type, QGesture *);
+ void gestureFinished(QEvent::Type, QGesture *);
+ void gestureCanceled(QEvent::Type, QGesture *);
+
+public:
+ // some arguments for the slots below:
+ QGraphicsScene *scene;
+
+public Q_SLOTS:
+ void deleteThis() { delete this; }
+ void addSelfToScene(QEvent::Type eventType, QGesture *)
+ {
+ if (eventType == QEvent::Gesture) {
+ disconnect(sender(), 0, this, SLOT(addSelfToScene(QEvent::Type,QGesture*)));
+ scene->addItem(this);
+ }
+ }
};
int GestureItem::InstanceCount = 0;
@@ -1549,7 +1594,7 @@ void tst_Gestures::graphicsViewParentPropagation()
QCOMPARE(item1_c1_c1->gestureEventsReceived, TotalGestureEventsCount);
QCOMPARE(item1_c1_c1->gestureOverrideEventsReceived, 1);
- QCOMPARE(item1_c1->gestureEventsReceived, 0);
+ QCOMPARE(item1_c1->gestureEventsReceived, TotalGestureEventsCount-1);
QCOMPARE(item1_c1->gestureOverrideEventsReceived, 1);
QCOMPARE(item1->gestureEventsReceived, TotalGestureEventsCount-1);
QCOMPARE(item1->gestureOverrideEventsReceived, 1);
@@ -1724,5 +1769,93 @@ void tst_Gestures::panelStacksBehindParent()
QCOMPARE(panel->gestureOverrideEventsReceived, 0);
}
+void tst_Gestures::deleteGestureTargetWidget()
+{
+
+}
+
+void tst_Gestures::deleteGestureTargetItem_data()
+{
+ QTest::addColumn<bool>("propagateUpdateGesture");
+ QTest::addColumn<QString>("emitter");
+ QTest::addColumn<QString>("receiver");
+ QTest::addColumn<QByteArray>("signalName");
+ QTest::addColumn<QByteArray>("slotName");
+
+ QByteArray gestureUpdated = SIGNAL(gestureUpdated(QEvent::Type,QGesture*));
+ QByteArray gestureFinished = SIGNAL(gestureFinished(QEvent::Type,QGesture*));
+ QByteArray deleteThis = SLOT(deleteThis());
+ QByteArray deleteLater = SLOT(deleteLater());
+
+ QTest::newRow("delete1")
+ << false << "item1" << "item1" << gestureUpdated << deleteThis;
+ QTest::newRow("delete2")
+ << false << "item2" << "item2" << gestureUpdated << deleteThis;
+ QTest::newRow("delete3")
+ << false << "item1" << "item2" << gestureUpdated << deleteThis;
+
+ QTest::newRow("deleteLater1")
+ << false << "item1" << "item1" << gestureUpdated << deleteLater;
+ QTest::newRow("deleteLater2")
+ << false << "item2" << "item2" << gestureUpdated << deleteLater;
+ QTest::newRow("deleteLater3")
+ << false << "item1" << "item2" << gestureUpdated << deleteLater;
+ QTest::newRow("deleteLater4")
+ << false << "item2" << "item1" << gestureUpdated << deleteLater;
+
+ QTest::newRow("delete-self-and-propagate")
+ << true << "item2" << "item2" << gestureUpdated << deleteThis;
+ QTest::newRow("deleteLater-self-and-propagate")
+ << true << "item2" << "item2" << gestureUpdated << deleteLater;
+ QTest::newRow("propagate-to-deletedLater")
+ << true << "item2" << "item1" << gestureUpdated << deleteLater;
+}
+
+void tst_Gestures::deleteGestureTargetItem()
+{
+ QFETCH(bool, propagateUpdateGesture);
+ QFETCH(QString, emitter);
+ QFETCH(QString, receiver);
+ QFETCH(QByteArray, signalName);
+ QFETCH(QByteArray, slotName);
+
+ QGraphicsScene scene;
+ QGraphicsView view(&scene);
+ view.setWindowFlags(Qt::X11BypassWindowManagerHint);
+
+ GestureItem *item1 = new GestureItem("item1");
+ item1->grabGesture(CustomGesture::GestureType);
+ item1->setZValue(2);
+ scene.addItem(item1);
+
+ GestureItem *item2 = new GestureItem("item2");
+ item2->grabGesture(CustomGesture::GestureType);
+ item2->setZValue(5);
+ scene.addItem(item2);
+
+ QMap<QString, GestureItem *> items;
+ items.insert(item1->objectName(), item1);
+ items.insert(item2->objectName(), item2);
+
+ view.show();
+ QTest::qWaitForWindowShown(&view);
+ view.ensureVisible(scene.sceneRect());
+
+ view.viewport()->grabGesture(CustomGesture::GestureType, Qt::DontStartGestureOnChildren);
+
+ if (propagateUpdateGesture)
+ item2->ignoredUpdatedGestures << CustomGesture::GestureType;
+ connect(items.value(emitter, 0), signalName, items.value(receiver, 0), slotName);
+
+ // some debug output to see the current test data tag, so if we crash
+ // we know which one caused the crash.
+ qDebug() << "<-- testing";
+
+ CustomEvent event;
+ event.hotSpot = mapToGlobal(QPointF(5, 5), item2, &view);
+ event.hasHotSpot = true;
+ sendCustomGesture(&event, item1, &scene);
+}
+
QTEST_MAIN(tst_Gestures)
#include "tst_gestures.moc"
diff --git a/tests/auto/headers/headers.pro b/tests/auto/headers/headers.pro
index 703da7c..74e1a02 100644
--- a/tests/auto/headers/headers.pro
+++ b/tests/auto/headers/headers.pro
@@ -1,3 +1,3 @@
load(qttest_p4)
-SOURCES += tst_headers.cpp
+SOURCES += tst_headers.cpp headersclean.cpp
QT = core
diff --git a/tests/auto/headers/headersclean.cpp b/tests/auto/headers/headersclean.cpp
new file mode 100644
index 0000000..b932b9f
--- /dev/null
+++ b/tests/auto/headers/headersclean.cpp
@@ -0,0 +1,86 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#define QT_NO_KEYWORDS
+#define signals int
+#define slots int
+#define emit public:;
+#define foreach public:;
+#define forever public:;
+
+// include all of Qt here
+
+// core Qt
+#include <QtCore/QtCore>
+#include <QtGui/QtGui>
+#include <QtNetwork/QtNetwork>
+
+// extra
+#include <QtDBus/QtDBus>
+//#include <QtDeclarative/QtDeclarative>
+#include <QtHelp/QtHelp>
+#include <QtMultimedia/QtMultimedia>
+#include <QtOpenGL/QtOpenGL>
+#include <QtScript/QtScript>
+#include <QtScriptTools/QtScriptTools>
+#include <QtSql/QtSql>
+#include <QtSvg/QtSvg>
+#include <QtTest/QtTest>
+#include <QtXml/QtXml>
+#include <QtXmlPatterns/QtXmlPatterns>
+
+// webkit:
+#include <QtWebKit/QtWebKit>
+
+// designer:
+#include <QtDesigner/QtDesigner>
+#include <QtUiTools/QtUiTools>
+
+// feature dependent:
+#ifndef QT_NO_OPENVG
+#include <QtOpenVG/QtOpenVG>
+#endif
+
+// removed in 4.7:
+//#include <QtAssistant/QtAssistant>
+
+// can't include this since it causes a linker error
+//#include <Qt3Support/Qt3Support>
diff --git a/tests/auto/qchar/qchar.pro b/tests/auto/qchar/qchar.pro
index fca4ef6..0a3fcc3 100644
--- a/tests/auto/qchar/qchar.pro
+++ b/tests/auto/qchar/qchar.pro
@@ -8,3 +8,4 @@ deploy.sources += NormalizationTest.txt
DEPLOYMENT = deploy
}
+DEFINES += SRCDIR=\\\"$$PWD/\\\"
diff --git a/tests/auto/qchar/tst_qchar.cpp b/tests/auto/qchar/tst_qchar.cpp
index 241b9a5..547147c 100644
--- a/tests/auto/qchar/tst_qchar.cpp
+++ b/tests/auto/qchar/tst_qchar.cpp
@@ -499,10 +499,7 @@ void tst_QChar::normalization()
QVERIFY(composed.normalized(QString::NormalizationForm_KC) == decomposed);
}
- QFile f("NormalizationTest.txt");
- // Windows - current directory is the debug/release subdirectory where the executable is located
- if (!f.exists())
- f.setFileName("../NormalizationTest.txt");;
+ QFile f(SRCDIR "NormalizationTest.txt");
if (!f.exists()) {
QFAIL("Couldn't find NormalizationTest.txt");
return;
diff --git a/tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp b/tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp
index 7208383..54426ce 100644
--- a/tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp
+++ b/tests/auto/qdbuspendingcall/tst_qdbuspendingcall.cpp
@@ -41,6 +41,7 @@
#include <QtCore/QObject>
#include <QtCore/QVariant>
#include <QtCore/QList>
+#include <QtCore/QThread>
#include <QtCore/QVector>
#include <QtTest/QtTest>
#ifndef QT_NO_DBUS
@@ -90,6 +91,7 @@ private Q_SLOTS:
void watcher();
void watcher_error();
void watcher_waitForFinished();
+ void watcher_waitForFinished_threaded();
void watcher_waitForFinished_alreadyFinished();
void watcher_waitForFinished_alreadyFinished_eventLoop();
void watcher_waitForFinished_error();
@@ -124,7 +126,10 @@ void tst_QDBusPendingCall::finished(QDBusPendingCallWatcher *call)
slotCalled = FinishCalled;
++callCount;
watchArgument = call;
- QTestEventLoop::instance().exitLoop();
+ if (QThread::currentThread() == thread())
+ QTestEventLoop::instance().exitLoop();
+ else
+ QMetaObject::invokeMethod(&QTestEventLoop::instance(), "exitLoop", Qt::QueuedConnection);
}
void tst_QDBusPendingCall::callback(const QStringList &list)
@@ -377,6 +382,56 @@ void tst_QDBusPendingCall::watcher_waitForFinished()
QVERIFY(args2.at(0).toStringList().contains(conn.baseService()));
}
+void tst_QDBusPendingCall::watcher_waitForFinished_threaded()
+{
+ callCount = 0;
+ watchArgument = 0;
+ slotCalled = 0;
+
+ class WorkerThread: public QThread {
+ public:
+ tst_QDBusPendingCall *tst;
+ WorkerThread(tst_QDBusPendingCall *tst) : tst(tst) {}
+ void run()
+ {
+ QDBusPendingCall ac = tst->sendMessage();
+// QVERIFY(!ac.isFinished());
+// QVERIFY(!ac.isError());
+// QVERIFY(ac.reply().type() == QDBusMessage::InvalidMessage);
+
+ QDBusPendingCallWatcher watch(ac);
+ tst->connect(&watch, SIGNAL(finished(QDBusPendingCallWatcher*)),
+ SLOT(finished(QDBusPendingCallWatcher*)), Qt::DirectConnection);
+
+ QTest::qSleep(100); // don't process events in this thread
+
+// QVERIFY(!ac.isFinished());
+// QVERIFY(!ac.isError());
+// QVERIFY(ac.reply().type() == QDBusMessage::InvalidMessage);
+ QCOMPARE(tst->callCount, 0);
+ QCOMPARE(tst->slotCalled, 0);
+
+ watch.waitForFinished();
+ QVERIFY(ac.isFinished());
+ QVERIFY(!ac.isError());
+
+ QCOMPARE(tst->callCount, 1);
+ QCOMPARE(tst->slotCalled, (int)FinishCalled);
+ QCOMPARE(tst->watchArgument, &watch);
+ QVERIFY(!watch.isError());
+
+ const QVariantList args2 = ac.reply().arguments();
+ QVERIFY(!args2.isEmpty());
+ QVERIFY(args2.at(0).toStringList().contains(tst->conn.baseService()));
+ }
+ } thread(this);
+ QTestEventLoop::instance().connect(&thread, SIGNAL(finished()), SLOT(exitLoop()));
+ thread.start();
+ QTestEventLoop::instance().enterLoop(1000);
+ QVERIFY(!thread.isRunning());
+ QVERIFY(!QTestEventLoop::instance().timeout());
+}
+
void tst_QDBusPendingCall::watcher_waitForFinished_alreadyFinished()
{
QDBusPendingCall ac = sendMessage();
diff --git a/tests/auto/qgl/tst_qgl.cpp b/tests/auto/qgl/tst_qgl.cpp
index 1bf7850..6ffe2a7 100644
--- a/tests/auto/qgl/tst_qgl.cpp
+++ b/tests/auto/qgl/tst_qgl.cpp
@@ -978,6 +978,47 @@ void tst_QGL::glWidgetWithAlpha()
delete w;
}
+
+void qt_opengl_draw_test_pattern(QPainter* painter, int width, int height)
+{
+ QPainterPath intersectingPath;
+ intersectingPath.moveTo(0, 0);
+ intersectingPath.lineTo(100, 0);
+ intersectingPath.lineTo(0, 100);
+ intersectingPath.lineTo(100, 100);
+ intersectingPath.closeSubpath();
+
+ QPainterPath trianglePath;
+ trianglePath.moveTo(50, 0);
+ trianglePath.lineTo(100, 100);
+ trianglePath.lineTo(0, 100);
+ trianglePath.closeSubpath();
+
+ painter->setTransform(QTransform()); // reset xform
+ painter->fillRect(-1, -1, width+2, height+2, Qt::red); // Background
+ painter->translate(14, 14);
+ painter->fillPath(intersectingPath, Qt::blue); // Test stencil buffer works
+ painter->translate(128, 0);
+ painter->setClipPath(trianglePath); // Test depth buffer works
+ painter->setTransform(QTransform()); // reset xform ready for fill
+ painter->fillRect(-1, -1, width+2, height+2, Qt::green);
+}
+
+void qt_opengl_check_test_pattern(const QImage& img)
+{
+ // As we're doing more than trivial painting, we can't just compare to
+ // an image rendered with raster. Instead, we sample at well-defined
+ // test-points:
+ QFUZZY_COMPARE_PIXELS(img.pixel(39, 64), QColor(Qt::red).rgb());
+ QFUZZY_COMPARE_PIXELS(img.pixel(89, 64), QColor(Qt::red).rgb());
+ QFUZZY_COMPARE_PIXELS(img.pixel(64, 39), QColor(Qt::blue).rgb());
+ QFUZZY_COMPARE_PIXELS(img.pixel(64, 89), QColor(Qt::blue).rgb());
+
+ QFUZZY_COMPARE_PIXELS(img.pixel(167, 39), QColor(Qt::red).rgb());
+ QFUZZY_COMPARE_PIXELS(img.pixel(217, 39), QColor(Qt::red).rgb());
+ QFUZZY_COMPARE_PIXELS(img.pixel(192, 64), QColor(Qt::green).rgb());
+}
+
class GLWidget : public QGLWidget
{
public:
@@ -992,9 +1033,7 @@ public:
QPaintEngine* pe = p.paintEngine();
engineType = pe->type();
- // This test only ensures it's possible to paint onto a QGLWidget. Full
- // paint engine feature testing is way out of scope!
- p.fillRect(-1, -1, width()+2, height()+2, Qt::red);
+ qt_opengl_draw_test_pattern(&p, width(), height());
// No p.end() or swap buffers, should be done automatically
}
@@ -1007,7 +1046,7 @@ void tst_QGL::glWidgetRendering()
#ifdef Q_WS_QWS
w.setWindowFlags(Qt::FramelessWindowHint);
#endif
- w.setGeometry(100, 100, 200, 200);
+ w.resize(256, 128);
w.show();
#ifdef Q_WS_X11
@@ -1018,11 +1057,8 @@ void tst_QGL::glWidgetRendering()
QVERIFY(w.beginOk);
QVERIFY(w.engineType == QPaintEngine::OpenGL || w.engineType == QPaintEngine::OpenGL2);
- QImage fb = w.grabFrameBuffer(false).convertToFormat(QImage::Format_RGB32);
- QImage reference(fb.size(), QImage::Format_RGB32);
- reference.fill(0xffff0000);
-
- QFUZZY_COMPARE_IMAGES(fb, reference);
+ QImage fb = w.grabFrameBuffer(false);
+ qt_opengl_check_test_pattern(fb);
}
void tst_QGL::glFBOSimpleRendering()
@@ -1075,46 +1111,23 @@ void tst_QGL::glFBORendering()
// Don't complicate things by using NPOT:
QGLFramebufferObject *fbo = new QGLFramebufferObject(256, 128, fboFormat);
+ if (fbo->attachment() != QGLFramebufferObject::CombinedDepthStencil) {
+ delete fbo;
+ QSKIP("FBOs missing combined depth~stencil support", SkipSingle);
+ }
+
QPainter fboPainter;
bool painterBegun = fboPainter.begin(fbo);
QVERIFY(painterBegun);
- QPainterPath intersectingPath;
- intersectingPath.moveTo(0, 0);
- intersectingPath.lineTo(100, 0);
- intersectingPath.lineTo(0, 100);
- intersectingPath.lineTo(100, 100);
- intersectingPath.closeSubpath();
-
- QPainterPath trianglePath;
- trianglePath.moveTo(50, 0);
- trianglePath.lineTo(100, 100);
- trianglePath.lineTo(0, 100);
- trianglePath.closeSubpath();
+ qt_opengl_draw_test_pattern(&fboPainter, fbo->width(), fbo->height());
- fboPainter.fillRect(0, 0, fbo->width(), fbo->height(), Qt::red); // Background
- fboPainter.translate(14, 14);
- fboPainter.fillPath(intersectingPath, Qt::blue); // Test stencil buffer works
- fboPainter.translate(128, 0);
- fboPainter.setClipPath(trianglePath); // Test depth buffer works
- fboPainter.setTransform(QTransform()); // reset xform
- fboPainter.fillRect(0, 0, fbo->width(), fbo->height(), Qt::green);
fboPainter.end();
QImage fb = fbo->toImage().convertToFormat(QImage::Format_RGB32);
delete fbo;
- // As we're doing more than trivial painting, we can't just compare to
- // an image rendered with raster. Instead, we sample at well-defined
- // test-points:
- QFUZZY_COMPARE_PIXELS(fb.pixel(39, 64), QColor(Qt::red).rgb());
- QFUZZY_COMPARE_PIXELS(fb.pixel(89, 64), QColor(Qt::red).rgb());
- QFUZZY_COMPARE_PIXELS(fb.pixel(64, 39), QColor(Qt::blue).rgb());
- QFUZZY_COMPARE_PIXELS(fb.pixel(64, 89), QColor(Qt::blue).rgb());
-
- QFUZZY_COMPARE_PIXELS(fb.pixel(167, 39), QColor(Qt::red).rgb());
- QFUZZY_COMPARE_PIXELS(fb.pixel(217, 39), QColor(Qt::red).rgb());
- QFUZZY_COMPARE_PIXELS(fb.pixel(192, 64), QColor(Qt::green).rgb());
+ qt_opengl_check_test_pattern(fb);
}
@@ -1137,6 +1150,16 @@ void tst_QGL::multipleFBOInterleavedRendering()
QGLFramebufferObject *fbo2 = new QGLFramebufferObject(256, 128, fboFormat);
QGLFramebufferObject *fbo3 = new QGLFramebufferObject(256, 128, fboFormat);
+ if ( (fbo1->attachment() != QGLFramebufferObject::CombinedDepthStencil) ||
+ (fbo2->attachment() != QGLFramebufferObject::CombinedDepthStencil) ||
+ (fbo3->attachment() != QGLFramebufferObject::CombinedDepthStencil) )
+ {
+ delete fbo1;
+ delete fbo2;
+ delete fbo3;
+ QSKIP("FBOs missing combined depth~stencil support", SkipSingle);
+ }
+
QPainter fbo1Painter;
QPainter fbo2Painter;
QPainter fbo3Painter;
@@ -1242,7 +1265,7 @@ protected:
QPainter widgetPainter;
widgetPainterBeginOk = widgetPainter.begin(this);
QGLFramebufferObjectFormat fboFormat;
- fboFormat.setAttachment(QGLFramebufferObject::CombinedDepthStencil);
+ fboFormat.setAttachment(QGLFramebufferObject::NoAttachment);
QGLFramebufferObject *fbo = new QGLFramebufferObject(128, 128, fboFormat);
QPainter fboPainter;
diff --git a/tests/auto/qpainter/tst_qpainter.cpp b/tests/auto/qpainter/tst_qpainter.cpp
index beb83a1..a03b2c7 100644
--- a/tests/auto/qpainter/tst_qpainter.cpp
+++ b/tests/auto/qpainter/tst_qpainter.cpp
@@ -107,6 +107,7 @@ private slots:
void saveAndRestore();
void drawBorderPixmap();
+ void drawPixmapFragments();
void drawLine_data();
void drawLine();
@@ -994,6 +995,49 @@ void tst_QPainter::drawBorderPixmap()
QTileRules(Qt::StretchTile,Qt::StretchTile), 0);
}
+void tst_QPainter::drawPixmapFragments()
+{
+ QPixmap origPixmap(20, 20);
+ QPixmap resPixmap(20, 20);
+ QPainter::Fragment fragments[4] = { {15, 15, 0, 0, 10, 10, 1, 1, 0, 1},
+ { 5, 15, 10, 0, 10, 10, 1, 1, 0, 1},
+ {15, 5, 0, 10, 10, 10, 1, 1, 0, 1},
+ { 5, 5, 10, 10, 10, 10, 1, 1, 0, 1} };
+ {
+ QPainter p(&origPixmap);
+ p.fillRect(0, 0, 10, 10, Qt::red);
+ p.fillRect(10, 0, 10, 10, Qt::green);
+ p.fillRect(0, 10, 10, 10, Qt::blue);
+ p.fillRect(10, 10, 10, 10, Qt::yellow);
+ }
+ {
+ QPainter p(&resPixmap);
+ p.drawPixmapFragments(fragments, 4, origPixmap);
+ }
+
+ QImage origImage = origPixmap.toImage().convertToFormat(QImage::Format_ARGB32);
+ QImage resImage = resPixmap.toImage().convertToFormat(QImage::Format_ARGB32);
+
+ QVERIFY(resImage.size() == resPixmap.size());
+ QVERIFY(resImage.pixel(5, 5) == origImage.pixel(15, 15));
+ QVERIFY(resImage.pixel(5, 15) == origImage.pixel(15, 5));
+ QVERIFY(resImage.pixel(15, 5) == origImage.pixel(5, 15));
+ QVERIFY(resImage.pixel(15, 15) == origImage.pixel(5, 5));
+
+
+ QPainter::Fragment fragment = QPainter::Fragment::create(QPointF(20, 20), QRectF(30, 30, 2, 2));
+ QVERIFY(fragment.x == 20);
+ QVERIFY(fragment.y == 20);
+ QVERIFY(fragment.sourceLeft == 30);
+ QVERIFY(fragment.sourceTop == 30);
+ QVERIFY(fragment.width == 2);
+ QVERIFY(fragment.height == 2);
+ QVERIFY(fragment.scaleX == 1);
+ QVERIFY(fragment.scaleY == 1);
+ QVERIFY(fragment.rotation == 0);
+ QVERIFY(fragment.opacity == 1);
+}
+
void tst_QPainter::drawLine_data()
{
QTest::addColumn<QLine>("line");
@@ -3443,8 +3487,8 @@ bool verifyOutlineFillConsistency(const QImage &img, QRgb outside, QRgb inside,
if ((dx == 0) == (dy == 0))
continue;
QRgb neighbor = img.pixel(p.x() + dx, p.y() + dy);
- if (pixel == inside && neighbor == outside ||
- pixel == outside && neighbor == inside)
+ if ((pixel == inside && neighbor == outside) ||
+ (pixel == outside && neighbor == inside))
return false;
}
}
diff --git a/tests/auto/qregexp/tst_qregexp.cpp b/tests/auto/qregexp/tst_qregexp.cpp
index 4d16ab5..ea07323 100644
--- a/tests/auto/qregexp/tst_qregexp.cpp
+++ b/tests/auto/qregexp/tst_qregexp.cpp
@@ -102,6 +102,9 @@ private slots:
void reentrancy();
void threadsafeEngineCache();
+
+ void QTBUG_7049_data();
+ void QTBUG_7049();
};
// Testing get/set functions
@@ -1333,5 +1336,95 @@ void tst_QRegExp::operator_eq()
}
}
+void tst_QRegExp::QTBUG_7049_data()
+{
+ QTest::addColumn<QString>("reStr");
+ QTest::addColumn<QString>("text");
+ QTest::addColumn<int>("matchIndex");
+
+ QTest::addColumn<int>("pos0");
+ QTest::addColumn<int>("pos1");
+ QTest::addColumn<int>("pos2");
+
+ QTest::addColumn<QString>("cap0");
+ QTest::addColumn<QString>("cap1");
+ QTest::addColumn<QString>("cap2");
+
+ QTest::newRow("no match")
+ << QString("(a) (b)") << QString("b a") << -1
+ << -1 << -1 << -1 << QString() << QString() << QString();
+
+ QTest::newRow("both captures match")
+ << QString("(a) (b)") << QString("a b") << 0
+ << 0 << 0 << 2 << QString("a b") << QString("a") << QString("b");
+
+ QTest::newRow("first capture matches @0")
+ << QString("(a*)|(b*)") << QString("axx") << 0
+ << 0 << 0 << -1 << QString("a") << QString("a") << QString();
+ QTest::newRow("second capture matches @0")
+ << QString("(a*)|(b*)") << QString("bxx") << 0
+ << 0 << -1 << 0 << QString("b") << QString() << QString("b");
+ QTest::newRow("first capture empty match @0")
+ << QString("(a*)|(b*)") << QString("xx") << 0
+ << 0 << -1 << -1 << QString("") << QString() << QString();
+ QTest::newRow("second capture empty match @0")
+ << QString("(a)|(b*)") << QString("xx") << 0
+ << 0 << -1 << -1 << QString("") << QString() << QString();
+
+ QTest::newRow("first capture matches @1")
+ << QString("x(?:(a*)|(b*))") << QString("-xa") << 1
+ << 1 << 2 << -1 << QString("xa") << QString("a") << QString();
+ QTest::newRow("second capture matches @1")
+ << QString("x(?:(a*)|(b*))") << QString("-xb") << 1
+ << 1 << -1 << 2 << QString("xb") << QString() << QString("b");
+ QTest::newRow("first capture empty match @1")
+ << QString("x(?:(a*)|(b*))") << QString("-xx") << 1
+ << 1 << -1 << -1 << QString("x") << QString() << QString();
+ QTest::newRow("second capture empty match @1")
+ << QString("x(?:(a)|(b*))") << QString("-xx") << 1
+ << 1 << -1 << -1 << QString("x") << QString() << QString();
+
+ QTest::newRow("first capture matches @2")
+ << QString("(a)|(b)") << QString("xxa") << 2
+ << 2 << 2 << -1 << QString("a") << QString("a") << QString();
+ QTest::newRow("second capture matches @2")
+ << QString("(a)|(b)") << QString("xxb") << 2
+ << 2 << -1 << 2 << QString("b") << QString() << QString("b");
+ QTest::newRow("no match - with options")
+ << QString("(a)|(b)") << QString("xx") << -1
+ << -1 << -1 << -1 << QString() << QString() << QString();
+
+}
+
+void tst_QRegExp::QTBUG_7049()
+{
+ QFETCH( QString, reStr );
+ QFETCH( QString, text );
+ QFETCH( int, matchIndex );
+ QFETCH( int, pos0 );
+ QFETCH( int, pos1 );
+ QFETCH( int, pos2 );
+ QFETCH( QString, cap0 );
+ QFETCH( QString, cap1 );
+ QFETCH( QString, cap2 );
+
+ QRegExp re(reStr);
+ QCOMPARE(re.numCaptures(), 2);
+ QCOMPARE(re.capturedTexts().size(), 3);
+
+ QCOMPARE(re.indexIn(text), matchIndex);
+
+ QCOMPARE( re.pos(0), pos0 );
+ QCOMPARE( re.pos(1), pos1 );
+ QCOMPARE( re.pos(2), pos2 );
+
+ QCOMPARE( re.cap(0).isNull(), cap0.isNull() );
+ QCOMPARE( re.cap(0), cap0 );
+ QCOMPARE( re.cap(1).isNull(), cap1.isNull() );
+ QCOMPARE( re.cap(1), cap1 );
+ QCOMPARE( re.cap(2).isNull(), cap2.isNull() );
+ QCOMPARE( re.cap(2), cap2 );
+}
+
QTEST_APPLESS_MAIN(tst_QRegExp)
#include "tst_qregexp.moc"
diff --git a/tests/auto/qscriptvalue/testgen/data.txt b/tests/auto/qscriptvalue/testgen/data.txt
index a041c9b..73677ec 100644
--- a/tests/auto/qscriptvalue/testgen/data.txt
+++ b/tests/auto/qscriptvalue/testgen/data.txt
@@ -34,6 +34,7 @@ QScriptValue(QString())
QScriptValue(QString("0"))
QScriptValue(QString("123"))
QScriptValue(QString("12.4"))
+#QScriptValue(QString::fromUtf8("ąśćżźółńę"))
#Unbound values (bound to a null engine)
QScriptValue(0, QScriptValue::UndefinedValue)
@@ -64,6 +65,7 @@ QScriptValue(0, QString())
QScriptValue(0, QString("0"))
QScriptValue(0, QString("123"))
QScriptValue(0, QString("12.3"))
+#QScriptValue(0, QString::fromUtf8("ąśćżźółńę"))
#Bound values
QScriptValue(engine, QScriptValue::UndefinedValue)
@@ -114,7 +116,46 @@ engine->evaluate("/foo/")
engine->evaluate("new Object()")
engine->evaluate("new Array()")
engine->evaluate("new Error()")
+engine->evaluate("a = new Object(); a.foo = 22; a.foo")
+engine->evaluate("Undefined")
+engine->evaluate("Null")
+engine->evaluate("True")
+engine->evaluate("False")
+
+engine->evaluate("undefined")
+engine->evaluate("null")
+engine->evaluate("true")
+engine->evaluate("false")
+engine->evaluate("122")
+engine->evaluate("124")
+engine->evaluate("0")
+engine->evaluate("0.0")
+engine->evaluate("123.0")
+engine->evaluate("6.37e-8")
+engine->evaluate("-6.37e-8")
+engine->evaluate("0x43211234")
+engine->evaluate("0x10000")
+engine->evaluate("0x10001")
+engine->evaluate("NaN")
+engine->evaluate("Infinity")
+engine->evaluate("-Infinity")
+engine->evaluate("'ciao'")
+engine->evaluate("''")
+engine->evaluate("'0'")
+engine->evaluate("'123'")
+engine->evaluate("'12.4'")
+#engine->evaluate(QString::fromUtf8("'ąśćżźółńę'"))
#other
engine->nullValue()
-engine->undefinedValue() \ No newline at end of file
+engine->undefinedValue()
+engine->newObject()
+engine->newArray()
+engine->newArray(10)
+engine->newDate(QDateTime())
+engine->newQMetaObject(&QObject::staticMetaObject)
+engine->newVariant(QVariant())
+engine->newVariant(QVariant(123))
+engine->newVariant(QVariant(false))
+engine->newQObject(0)
+engine->newQObject(engine) \ No newline at end of file
diff --git a/tests/auto/qscriptvalue/testgen/gen.py b/tests/auto/qscriptvalue/testgen/gen.py
index b3c81b9..6e48f46 100755
--- a/tests/auto/qscriptvalue/testgen/gen.py
+++ b/tests/auto/qscriptvalue/testgen/gen.py
@@ -70,8 +70,7 @@ class Options():
return getattr(self._o, attr)
-mainTempl = Template("""/*
-/****************************************************************************
+mainTempl = Template("""/****************************************************************************
**
** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
diff --git a/tests/auto/qscriptvalue/testgen/testgenerator.cpp b/tests/auto/qscriptvalue/testgen/testgenerator.cpp
index d852ea5..4376c42 100644
--- a/tests/auto/qscriptvalue/testgen/testgenerator.cpp
+++ b/tests/auto/qscriptvalue/testgen/testgenerator.cpp
@@ -119,6 +119,7 @@ static QString generateIsXXXDef(const QString& name, const QList<QString>& list)
"{\n"\
" QFETCH(bool, expected);\n"\
" QCOMPARE(value.%1(), expected);\n"\
+ " QCOMPARE(value.%1(), expected);\n"\
"}\n"\
"\n"\
"DEFINE_TEST_FUNCTION(%1)\n"\
@@ -166,6 +167,7 @@ static QString generateToXXXDef(const QString& name, const QList<QPair<QString,
"{\n"\
" QFETCH(%2, expected);\n"\
" QCOMPARE(value.%1(), expected);\n"\
+ " QCOMPARE(value.%1(), expected);\n"\
"}\n"\
"\n"\
"DEFINE_TEST_FUNCTION(%1)\n";
@@ -213,9 +215,11 @@ QString generateToXXXDef<qsreal>(const QString& name, const QList<QPair<QString,
"%666"
" if (qIsInf(expected)) {\n"\
" QVERIFY(qIsInf(value.%1()));\n"\
+ " QVERIFY(qIsInf(value.%1()));\n"\
" return;\n"\
" }\n"\
" QCOMPARE(value.%1(), expected);\n"\
+ " QCOMPARE(value.%1(), expected);\n"\
"}\n"\
"\n"\
"DEFINE_TEST_FUNCTION(%1)\n";
@@ -269,6 +273,7 @@ static QString generateCastDef(const QList<QPair<QString, T> >& list)
"{\n"\
" QFETCH(%2, expected);\n"\
" QCOMPARE(qscriptvalue_cast<%2>(value), expected);\n"\
+ " QCOMPARE(qscriptvalue_cast<%2>(value), expected);\n"\
"}\n"\
"\n"\
"DEFINE_TEST_FUNCTION(qscriptvalue_cast%2)\n";
@@ -313,13 +318,16 @@ QString generateCastDef<qsreal>(const QList<QPair<QString, qsreal> >& list)
" QFETCH(%2, expected);\n"\
" if (qIsNaN(expected)) {\n"
" QVERIFY(qIsNaN(qscriptvalue_cast<%2>(value)));\n"
+ " QVERIFY(qIsNaN(qscriptvalue_cast<%2>(value)));\n"
" return;\n"
" }\n"\
" if (qIsInf(expected)) {\n"
" QVERIFY(qIsInf(qscriptvalue_cast<%2>(value)));\n"
+ " QVERIFY(qIsInf(qscriptvalue_cast<%2>(value)));\n"
" return;\n"
" }\n"
" QCOMPARE(qscriptvalue_cast<%2>(value), expected);\n"\
+ " QCOMPARE(qscriptvalue_cast<%2>(value), expected);\n"\
"}\n"\
"\n"\
"DEFINE_TEST_FUNCTION(qscriptvalue_cast%2)\n";
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue.h b/tests/auto/qscriptvalue/tst_qscriptvalue.h
index 6215506..a5c7b45 100644
--- a/tests/auto/qscriptvalue/tst_qscriptvalue.h
+++ b/tests/auto/qscriptvalue/tst_qscriptvalue.h
@@ -89,11 +89,11 @@ private slots:
void isObject_data();
void isObject();
-// void isQMetaObject_data();
-// void isQMetaObject();
+ void isQMetaObject_data();
+ void isQMetaObject();
-// void isQObject_data();
-// void isQObject();
+ void isQObject_data();
+ void isQObject();
void isRegExp_data();
void isRegExp();
@@ -107,8 +107,8 @@ private slots:
void isValid_data();
void isValid();
-// void isVariant_data();
-// void isVariant();
+ void isVariant_data();
+ void isVariant();
void toBool_data();
void toBool();
diff --git a/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp b/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp
index 4e621b3..a07ff4b 100644
--- a/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp
+++ b/tests/auto/qscriptvalue/tst_qscriptvalue_generated.cpp
@@ -152,8 +152,45 @@ void tst_QScriptValue::initScriptValues()
DEFINE_TEST_VALUE(engine->evaluate("new Object()"));
DEFINE_TEST_VALUE(engine->evaluate("new Array()"));
DEFINE_TEST_VALUE(engine->evaluate("new Error()"));
+ DEFINE_TEST_VALUE(engine->evaluate("a = new Object(); a.foo = 22; a.foo"));
+ DEFINE_TEST_VALUE(engine->evaluate("Undefined"));
+ DEFINE_TEST_VALUE(engine->evaluate("Null"));
+ DEFINE_TEST_VALUE(engine->evaluate("True"));
+ DEFINE_TEST_VALUE(engine->evaluate("False"));
+ DEFINE_TEST_VALUE(engine->evaluate("undefined"));
+ DEFINE_TEST_VALUE(engine->evaluate("null"));
+ DEFINE_TEST_VALUE(engine->evaluate("true"));
+ DEFINE_TEST_VALUE(engine->evaluate("false"));
+ DEFINE_TEST_VALUE(engine->evaluate("122"));
+ DEFINE_TEST_VALUE(engine->evaluate("124"));
+ DEFINE_TEST_VALUE(engine->evaluate("0"));
+ DEFINE_TEST_VALUE(engine->evaluate("0.0"));
+ DEFINE_TEST_VALUE(engine->evaluate("123.0"));
+ DEFINE_TEST_VALUE(engine->evaluate("6.37e-8"));
+ DEFINE_TEST_VALUE(engine->evaluate("-6.37e-8"));
+ DEFINE_TEST_VALUE(engine->evaluate("0x43211234"));
+ DEFINE_TEST_VALUE(engine->evaluate("0x10000"));
+ DEFINE_TEST_VALUE(engine->evaluate("0x10001"));
+ DEFINE_TEST_VALUE(engine->evaluate("NaN"));
+ DEFINE_TEST_VALUE(engine->evaluate("Infinity"));
+ DEFINE_TEST_VALUE(engine->evaluate("-Infinity"));
+ DEFINE_TEST_VALUE(engine->evaluate("'ciao'"));
+ DEFINE_TEST_VALUE(engine->evaluate("''"));
+ DEFINE_TEST_VALUE(engine->evaluate("'0'"));
+ DEFINE_TEST_VALUE(engine->evaluate("'123'"));
+ DEFINE_TEST_VALUE(engine->evaluate("'12.4'"));
DEFINE_TEST_VALUE(engine->nullValue());
DEFINE_TEST_VALUE(engine->undefinedValue());
+ DEFINE_TEST_VALUE(engine->newObject());
+ DEFINE_TEST_VALUE(engine->newArray());
+ DEFINE_TEST_VALUE(engine->newArray(10));
+ DEFINE_TEST_VALUE(engine->newDate(QDateTime()));
+ DEFINE_TEST_VALUE(engine->newQMetaObject(&QObject::staticMetaObject));
+ DEFINE_TEST_VALUE(engine->newVariant(QVariant()));
+ DEFINE_TEST_VALUE(engine->newVariant(QVariant(123)));
+ DEFINE_TEST_VALUE(engine->newVariant(QVariant(false)));
+ DEFINE_TEST_VALUE(engine->newQObject(0));
+ DEFINE_TEST_VALUE(engine->newQObject(engine));
}
@@ -269,8 +306,45 @@ void tst_QScriptValue::isValid_makeData(const char* expr)
<< "engine->evaluate(\"new Object()\")"
<< "engine->evaluate(\"new Array()\")"
<< "engine->evaluate(\"new Error()\")"
+ << "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"
+ << "engine->evaluate(\"Undefined\")"
+ << "engine->evaluate(\"Null\")"
+ << "engine->evaluate(\"True\")"
+ << "engine->evaluate(\"False\")"
+ << "engine->evaluate(\"undefined\")"
+ << "engine->evaluate(\"null\")"
+ << "engine->evaluate(\"true\")"
+ << "engine->evaluate(\"false\")"
+ << "engine->evaluate(\"122\")"
+ << "engine->evaluate(\"124\")"
+ << "engine->evaluate(\"0\")"
+ << "engine->evaluate(\"0.0\")"
+ << "engine->evaluate(\"123.0\")"
+ << "engine->evaluate(\"6.37e-8\")"
+ << "engine->evaluate(\"-6.37e-8\")"
+ << "engine->evaluate(\"0x43211234\")"
+ << "engine->evaluate(\"0x10000\")"
+ << "engine->evaluate(\"0x10001\")"
+ << "engine->evaluate(\"NaN\")"
+ << "engine->evaluate(\"Infinity\")"
+ << "engine->evaluate(\"-Infinity\")"
+ << "engine->evaluate(\"'ciao'\")"
+ << "engine->evaluate(\"''\")"
+ << "engine->evaluate(\"'0'\")"
+ << "engine->evaluate(\"'123'\")"
+ << "engine->evaluate(\"'12.4'\")"
<< "engine->nullValue()"
<< "engine->undefinedValue()"
+ << "engine->newObject()"
+ << "engine->newArray()"
+ << "engine->newArray(10)"
+ << "engine->newDate(QDateTime())"
+ << "engine->newQMetaObject(&QObject::staticMetaObject)"
+ << "engine->newVariant(QVariant())"
+ << "engine->newVariant(QVariant(123))"
+ << "engine->newVariant(QVariant(false))"
+ << "engine->newQObject(0)"
+ << "engine->newQObject(engine)"
;
}
newRow(expr) << isValid.contains(expr);
@@ -280,6 +354,7 @@ void tst_QScriptValue::isValid_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isValid(), expected);
+ QCOMPARE(value.isValid(), expected);
}
DEFINE_TEST_FUNCTION(isValid)
@@ -301,6 +376,8 @@ void tst_QScriptValue::isBool_makeData(const char* expr)
<< "QScriptValue(0, false)"
<< "QScriptValue(engine, true)"
<< "QScriptValue(engine, false)"
+ << "engine->evaluate(\"true\")"
+ << "engine->evaluate(\"false\")"
;
}
newRow(expr) << isBool.contains(expr);
@@ -310,6 +387,7 @@ void tst_QScriptValue::isBool_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isBool(), expected);
+ QCOMPARE(value.isBool(), expected);
}
DEFINE_TEST_FUNCTION(isBool)
@@ -331,6 +409,8 @@ void tst_QScriptValue::isBoolean_makeData(const char* expr)
<< "QScriptValue(0, false)"
<< "QScriptValue(engine, true)"
<< "QScriptValue(engine, false)"
+ << "engine->evaluate(\"true\")"
+ << "engine->evaluate(\"false\")"
;
}
newRow(expr) << isBoolean.contains(expr);
@@ -340,6 +420,7 @@ void tst_QScriptValue::isBoolean_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isBoolean(), expected);
+ QCOMPARE(value.isBoolean(), expected);
}
DEFINE_TEST_FUNCTION(isBoolean)
@@ -397,6 +478,20 @@ void tst_QScriptValue::isNumber_makeData(const char* expr)
<< "QScriptValue(engine, qQNaN())"
<< "QScriptValue(engine, qInf())"
<< "QScriptValue(engine, -qInf())"
+ << "engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")"
+ << "engine->evaluate(\"122\")"
+ << "engine->evaluate(\"124\")"
+ << "engine->evaluate(\"0\")"
+ << "engine->evaluate(\"0.0\")"
+ << "engine->evaluate(\"123.0\")"
+ << "engine->evaluate(\"6.37e-8\")"
+ << "engine->evaluate(\"-6.37e-8\")"
+ << "engine->evaluate(\"0x43211234\")"
+ << "engine->evaluate(\"0x10000\")"
+ << "engine->evaluate(\"0x10001\")"
+ << "engine->evaluate(\"NaN\")"
+ << "engine->evaluate(\"Infinity\")"
+ << "engine->evaluate(\"-Infinity\")"
;
}
newRow(expr) << isNumber.contains(expr);
@@ -406,6 +501,7 @@ void tst_QScriptValue::isNumber_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isNumber(), expected);
+ QCOMPARE(value.isNumber(), expected);
}
DEFINE_TEST_FUNCTION(isNumber)
@@ -430,6 +526,7 @@ void tst_QScriptValue::isFunction_makeData(const char* expr)
<< "engine->evaluate(\"(function() { return 'ciao'; })\")"
<< "engine->evaluate(\"(function() { throw new Error('foo'); })\")"
<< "engine->evaluate(\"/foo/\")"
+ << "engine->newQMetaObject(&QObject::staticMetaObject)"
;
}
newRow(expr) << isFunction.contains(expr);
@@ -439,6 +536,7 @@ void tst_QScriptValue::isFunction_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isFunction(), expected);
+ QCOMPARE(value.isFunction(), expected);
}
DEFINE_TEST_FUNCTION(isFunction)
@@ -457,7 +555,9 @@ void tst_QScriptValue::isNull_makeData(const char* expr)
isNull << "QScriptValue(QScriptValue::NullValue)"
<< "QScriptValue(0, QScriptValue::NullValue)"
<< "QScriptValue(engine, QScriptValue::NullValue)"
+ << "engine->evaluate(\"null\")"
<< "engine->nullValue()"
+ << "engine->newQObject(0)"
;
}
newRow(expr) << isNull.contains(expr);
@@ -467,6 +567,7 @@ void tst_QScriptValue::isNull_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isNull(), expected);
+ QCOMPARE(value.isNull(), expected);
}
DEFINE_TEST_FUNCTION(isNull)
@@ -512,6 +613,11 @@ void tst_QScriptValue::isString_makeData(const char* expr)
<< "QScriptValue(engine, QString(\"0\"))"
<< "QScriptValue(engine, QString(\"123\"))"
<< "QScriptValue(engine, QString(\"1.23\"))"
+ << "engine->evaluate(\"'ciao'\")"
+ << "engine->evaluate(\"''\")"
+ << "engine->evaluate(\"'0'\")"
+ << "engine->evaluate(\"'123'\")"
+ << "engine->evaluate(\"'12.4'\")"
;
}
newRow(expr) << isString.contains(expr);
@@ -521,6 +627,7 @@ void tst_QScriptValue::isString_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isString(), expected);
+ QCOMPARE(value.isString(), expected);
}
DEFINE_TEST_FUNCTION(isString)
@@ -540,6 +647,7 @@ void tst_QScriptValue::isUndefined_makeData(const char* expr)
<< "QScriptValue(0, QScriptValue::UndefinedValue)"
<< "QScriptValue(engine, QScriptValue::UndefinedValue)"
<< "engine->evaluate(\"{}\")"
+ << "engine->evaluate(\"undefined\")"
<< "engine->undefinedValue()"
;
}
@@ -550,12 +658,90 @@ void tst_QScriptValue::isUndefined_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isUndefined(), expected);
+ QCOMPARE(value.isUndefined(), expected);
}
DEFINE_TEST_FUNCTION(isUndefined)
+void tst_QScriptValue::isVariant_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::isVariant_makeData(const char* expr)
+{
+ static QSet<QString> isVariant;
+ if (isVariant.isEmpty()) {
+ isVariant << "engine->newVariant(QVariant())"
+ << "engine->newVariant(QVariant(123))"
+ << "engine->newVariant(QVariant(false))"
+ ;
+ }
+ newRow(expr) << isVariant.contains(expr);
+}
+
+void tst_QScriptValue::isVariant_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isVariant(), expected);
+ QCOMPARE(value.isVariant(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isVariant)
+
+
+void tst_QScriptValue::isQObject_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::isQObject_makeData(const char* expr)
+{
+ static QSet<QString> isQObject;
+ if (isQObject.isEmpty()) {
+ isQObject << "engine->newQObject(engine)"
+ ;
+ }
+ newRow(expr) << isQObject.contains(expr);
+}
+
+void tst_QScriptValue::isQObject_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isQObject(), expected);
+ QCOMPARE(value.isQObject(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isQObject)
+
+void tst_QScriptValue::isQMetaObject_initData()
+{
+ QTest::addColumn<bool>("expected");
+ initScriptValues();
+}
+
+void tst_QScriptValue::isQMetaObject_makeData(const char* expr)
+{
+ static QSet<QString> isQMetaObject;
+ if (isQMetaObject.isEmpty()) {
+ isQMetaObject << "engine->newQMetaObject(&QObject::staticMetaObject)"
+ ;
+ }
+ newRow(expr) << isQMetaObject.contains(expr);
+}
+
+void tst_QScriptValue::isQMetaObject_test(const char*, const QScriptValue& value)
+{
+ QFETCH(bool, expected);
+ QCOMPARE(value.isQMetaObject(), expected);
+ QCOMPARE(value.isQMetaObject(), expected);
+}
+
+DEFINE_TEST_FUNCTION(isQMetaObject)
void tst_QScriptValue::isObject_initData()
@@ -585,6 +771,19 @@ void tst_QScriptValue::isObject_makeData(const char* expr)
<< "engine->evaluate(\"new Object()\")"
<< "engine->evaluate(\"new Array()\")"
<< "engine->evaluate(\"new Error()\")"
+ << "engine->evaluate(\"Undefined\")"
+ << "engine->evaluate(\"Null\")"
+ << "engine->evaluate(\"True\")"
+ << "engine->evaluate(\"False\")"
+ << "engine->newObject()"
+ << "engine->newArray()"
+ << "engine->newArray(10)"
+ << "engine->newDate(QDateTime())"
+ << "engine->newQMetaObject(&QObject::staticMetaObject)"
+ << "engine->newVariant(QVariant())"
+ << "engine->newVariant(QVariant(123))"
+ << "engine->newVariant(QVariant(false))"
+ << "engine->newQObject(engine)"
;
}
newRow(expr) << isObject.contains(expr);
@@ -594,6 +793,7 @@ void tst_QScriptValue::isObject_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isObject(), expected);
+ QCOMPARE(value.isObject(), expected);
}
DEFINE_TEST_FUNCTION(isObject)
@@ -610,6 +810,7 @@ void tst_QScriptValue::isDate_makeData(const char* expr)
static QSet<QString> isDate;
if (isDate.isEmpty()) {
isDate << "engine->evaluate(\"Date.prototype\")"
+ << "engine->newDate(QDateTime())"
;
}
newRow(expr) << isDate.contains(expr);
@@ -619,6 +820,7 @@ void tst_QScriptValue::isDate_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isDate(), expected);
+ QCOMPARE(value.isDate(), expected);
}
DEFINE_TEST_FUNCTION(isDate)
@@ -644,6 +846,7 @@ void tst_QScriptValue::isRegExp_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isRegExp(), expected);
+ QCOMPARE(value.isRegExp(), expected);
}
DEFINE_TEST_FUNCTION(isRegExp)
@@ -662,6 +865,8 @@ void tst_QScriptValue::isArray_makeData(const char* expr)
isArray << "engine->evaluate(\"[]\")"
<< "engine->evaluate(\"Array.prototype\")"
<< "engine->evaluate(\"new Array()\")"
+ << "engine->newArray()"
+ << "engine->newArray(10)"
;
}
newRow(expr) << isArray.contains(expr);
@@ -671,6 +876,7 @@ void tst_QScriptValue::isArray_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isArray(), expected);
+ QCOMPARE(value.isArray(), expected);
}
DEFINE_TEST_FUNCTION(isArray)
@@ -688,6 +894,10 @@ void tst_QScriptValue::isError_makeData(const char* expr)
if (isError.isEmpty()) {
isError << "engine->evaluate(\"Error.prototype\")"
<< "engine->evaluate(\"new Error()\")"
+ << "engine->evaluate(\"Undefined\")"
+ << "engine->evaluate(\"Null\")"
+ << "engine->evaluate(\"True\")"
+ << "engine->evaluate(\"False\")"
;
}
newRow(expr) << isError.contains(expr);
@@ -697,6 +907,7 @@ void tst_QScriptValue::isError_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.isError(), expected);
+ QCOMPARE(value.isError(), expected);
}
DEFINE_TEST_FUNCTION(isError)
@@ -816,8 +1027,45 @@ void tst_QScriptValue::toString_makeData(const char* expr)
toString.insert("engine->evaluate(\"new Object()\")", "[object Object]");
toString.insert("engine->evaluate(\"new Array()\")", "");
toString.insert("engine->evaluate(\"new Error()\")", "Error: Unknown error");
+ toString.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", "22");
+ toString.insert("engine->evaluate(\"Undefined\")", "ReferenceError: Can't find variable: Undefined");
+ toString.insert("engine->evaluate(\"Null\")", "ReferenceError: Can't find variable: Null");
+ toString.insert("engine->evaluate(\"True\")", "ReferenceError: Can't find variable: True");
+ toString.insert("engine->evaluate(\"False\")", "ReferenceError: Can't find variable: False");
+ toString.insert("engine->evaluate(\"undefined\")", "undefined");
+ toString.insert("engine->evaluate(\"null\")", "null");
+ toString.insert("engine->evaluate(\"true\")", "true");
+ toString.insert("engine->evaluate(\"false\")", "false");
+ toString.insert("engine->evaluate(\"122\")", "122");
+ toString.insert("engine->evaluate(\"124\")", "124");
+ toString.insert("engine->evaluate(\"0\")", "0");
+ toString.insert("engine->evaluate(\"0.0\")", "0");
+ toString.insert("engine->evaluate(\"123.0\")", "123");
+ toString.insert("engine->evaluate(\"6.37e-8\")", "6.37e-8");
+ toString.insert("engine->evaluate(\"-6.37e-8\")", "-6.37e-8");
+ toString.insert("engine->evaluate(\"0x43211234\")", "1126240820");
+ toString.insert("engine->evaluate(\"0x10000\")", "65536");
+ toString.insert("engine->evaluate(\"0x10001\")", "65537");
+ toString.insert("engine->evaluate(\"NaN\")", "NaN");
+ toString.insert("engine->evaluate(\"Infinity\")", "Infinity");
+ toString.insert("engine->evaluate(\"-Infinity\")", "-Infinity");
+ toString.insert("engine->evaluate(\"'ciao'\")", "ciao");
+ toString.insert("engine->evaluate(\"''\")", "");
+ toString.insert("engine->evaluate(\"'0'\")", "0");
+ toString.insert("engine->evaluate(\"'123'\")", "123");
+ toString.insert("engine->evaluate(\"'12.4'\")", "12.4");
toString.insert("engine->nullValue()", "null");
toString.insert("engine->undefinedValue()", "undefined");
+ toString.insert("engine->newObject()", "[object Object]");
+ toString.insert("engine->newArray()", "");
+ toString.insert("engine->newArray(10)", ",,,,,,,,,");
+ toString.insert("engine->newDate(QDateTime())", "Invalid Date");
+ toString.insert("engine->newQMetaObject(&QObject::staticMetaObject)", "[object QMetaObject]");
+ toString.insert("engine->newVariant(QVariant())", "undefined");
+ toString.insert("engine->newVariant(QVariant(123))", "123");
+ toString.insert("engine->newVariant(QVariant(false))", "false");
+ toString.insert("engine->newQObject(0)", "null");
+ toString.insert("engine->newQObject(engine)", "QScriptEngine(name = \"\")");
}
newRow(expr) << toString.value(expr);
}
@@ -826,6 +1074,7 @@ void tst_QScriptValue::toString_test(const char*, const QScriptValue& value)
{
QFETCH(QString, expected);
QCOMPARE(value.toString(), expected);
+ QCOMPARE(value.toString(), expected);
}
DEFINE_TEST_FUNCTION(toString)
@@ -944,8 +1193,45 @@ void tst_QScriptValue::toNumber_makeData(const char* expr)
toNumber.insert("engine->evaluate(\"new Object()\")", qQNaN());
toNumber.insert("engine->evaluate(\"new Array()\")", 0);
toNumber.insert("engine->evaluate(\"new Error()\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ toNumber.insert("engine->evaluate(\"Undefined\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"Null\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"True\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"False\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"undefined\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"null\")", 0);
+ toNumber.insert("engine->evaluate(\"true\")", 1);
+ toNumber.insert("engine->evaluate(\"false\")", 0);
+ toNumber.insert("engine->evaluate(\"122\")", 122);
+ toNumber.insert("engine->evaluate(\"124\")", 124);
+ toNumber.insert("engine->evaluate(\"0\")", 0);
+ toNumber.insert("engine->evaluate(\"0.0\")", 0);
+ toNumber.insert("engine->evaluate(\"123.0\")", 123);
+ toNumber.insert("engine->evaluate(\"6.37e-8\")", 6.369999999999999e-08);
+ toNumber.insert("engine->evaluate(\"-6.37e-8\")", -6.369999999999999e-08);
+ toNumber.insert("engine->evaluate(\"0x43211234\")", 1126240820);
+ toNumber.insert("engine->evaluate(\"0x10000\")", 65536);
+ toNumber.insert("engine->evaluate(\"0x10001\")", 65537);
+ toNumber.insert("engine->evaluate(\"NaN\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"Infinity\")", qInf());
+ toNumber.insert("engine->evaluate(\"-Infinity\")", qInf());
+ toNumber.insert("engine->evaluate(\"'ciao'\")", qQNaN());
+ toNumber.insert("engine->evaluate(\"''\")", 0);
+ toNumber.insert("engine->evaluate(\"'0'\")", 0);
+ toNumber.insert("engine->evaluate(\"'123'\")", 123);
+ toNumber.insert("engine->evaluate(\"'12.4'\")", 12.4);
toNumber.insert("engine->nullValue()", 0);
toNumber.insert("engine->undefinedValue()", qQNaN());
+ toNumber.insert("engine->newObject()", qQNaN());
+ toNumber.insert("engine->newArray()", 0);
+ toNumber.insert("engine->newArray(10)", qQNaN());
+ toNumber.insert("engine->newDate(QDateTime())", qQNaN());
+ toNumber.insert("engine->newQMetaObject(&QObject::staticMetaObject)", qQNaN());
+ toNumber.insert("engine->newVariant(QVariant())", qQNaN());
+ toNumber.insert("engine->newVariant(QVariant(123))", 123);
+ toNumber.insert("engine->newVariant(QVariant(false))", 0);
+ toNumber.insert("engine->newQObject(0)", 0);
+ toNumber.insert("engine->newQObject(engine)", qQNaN());
}
newRow(expr) << toNumber.value(expr);
}
@@ -959,9 +1245,11 @@ void tst_QScriptValue::toNumber_test(const char*, const QScriptValue& value)
}
if (qIsInf(expected)) {
QVERIFY(qIsInf(value.toNumber()));
+ QVERIFY(qIsInf(value.toNumber()));
return;
}
QCOMPARE(value.toNumber(), expected);
+ QCOMPARE(value.toNumber(), expected);
}
DEFINE_TEST_FUNCTION(toNumber)
@@ -1080,8 +1368,45 @@ void tst_QScriptValue::toBool_makeData(const char* expr)
toBool.insert("engine->evaluate(\"new Object()\")", true);
toBool.insert("engine->evaluate(\"new Array()\")", true);
toBool.insert("engine->evaluate(\"new Error()\")", true);
+ toBool.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", true);
+ toBool.insert("engine->evaluate(\"Undefined\")", true);
+ toBool.insert("engine->evaluate(\"Null\")", true);
+ toBool.insert("engine->evaluate(\"True\")", true);
+ toBool.insert("engine->evaluate(\"False\")", true);
+ toBool.insert("engine->evaluate(\"undefined\")", false);
+ toBool.insert("engine->evaluate(\"null\")", false);
+ toBool.insert("engine->evaluate(\"true\")", true);
+ toBool.insert("engine->evaluate(\"false\")", false);
+ toBool.insert("engine->evaluate(\"122\")", true);
+ toBool.insert("engine->evaluate(\"124\")", true);
+ toBool.insert("engine->evaluate(\"0\")", false);
+ toBool.insert("engine->evaluate(\"0.0\")", false);
+ toBool.insert("engine->evaluate(\"123.0\")", true);
+ toBool.insert("engine->evaluate(\"6.37e-8\")", true);
+ toBool.insert("engine->evaluate(\"-6.37e-8\")", true);
+ toBool.insert("engine->evaluate(\"0x43211234\")", true);
+ toBool.insert("engine->evaluate(\"0x10000\")", true);
+ toBool.insert("engine->evaluate(\"0x10001\")", true);
+ toBool.insert("engine->evaluate(\"NaN\")", false);
+ toBool.insert("engine->evaluate(\"Infinity\")", true);
+ toBool.insert("engine->evaluate(\"-Infinity\")", true);
+ toBool.insert("engine->evaluate(\"'ciao'\")", true);
+ toBool.insert("engine->evaluate(\"''\")", false);
+ toBool.insert("engine->evaluate(\"'0'\")", true);
+ toBool.insert("engine->evaluate(\"'123'\")", true);
+ toBool.insert("engine->evaluate(\"'12.4'\")", true);
toBool.insert("engine->nullValue()", false);
toBool.insert("engine->undefinedValue()", false);
+ toBool.insert("engine->newObject()", true);
+ toBool.insert("engine->newArray()", true);
+ toBool.insert("engine->newArray(10)", true);
+ toBool.insert("engine->newDate(QDateTime())", true);
+ toBool.insert("engine->newQMetaObject(&QObject::staticMetaObject)", true);
+ toBool.insert("engine->newVariant(QVariant())", true);
+ toBool.insert("engine->newVariant(QVariant(123))", true);
+ toBool.insert("engine->newVariant(QVariant(false))", true);
+ toBool.insert("engine->newQObject(0)", false);
+ toBool.insert("engine->newQObject(engine)", true);
}
newRow(expr) << toBool.value(expr);
}
@@ -1090,6 +1415,7 @@ void tst_QScriptValue::toBool_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.toBool(), expected);
+ QCOMPARE(value.toBool(), expected);
}
DEFINE_TEST_FUNCTION(toBool)
@@ -1208,8 +1534,45 @@ void tst_QScriptValue::toBoolean_makeData(const char* expr)
toBoolean.insert("engine->evaluate(\"new Object()\")", true);
toBoolean.insert("engine->evaluate(\"new Array()\")", true);
toBoolean.insert("engine->evaluate(\"new Error()\")", true);
+ toBoolean.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", true);
+ toBoolean.insert("engine->evaluate(\"Undefined\")", true);
+ toBoolean.insert("engine->evaluate(\"Null\")", true);
+ toBoolean.insert("engine->evaluate(\"True\")", true);
+ toBoolean.insert("engine->evaluate(\"False\")", true);
+ toBoolean.insert("engine->evaluate(\"undefined\")", false);
+ toBoolean.insert("engine->evaluate(\"null\")", false);
+ toBoolean.insert("engine->evaluate(\"true\")", true);
+ toBoolean.insert("engine->evaluate(\"false\")", false);
+ toBoolean.insert("engine->evaluate(\"122\")", true);
+ toBoolean.insert("engine->evaluate(\"124\")", true);
+ toBoolean.insert("engine->evaluate(\"0\")", false);
+ toBoolean.insert("engine->evaluate(\"0.0\")", false);
+ toBoolean.insert("engine->evaluate(\"123.0\")", true);
+ toBoolean.insert("engine->evaluate(\"6.37e-8\")", true);
+ toBoolean.insert("engine->evaluate(\"-6.37e-8\")", true);
+ toBoolean.insert("engine->evaluate(\"0x43211234\")", true);
+ toBoolean.insert("engine->evaluate(\"0x10000\")", true);
+ toBoolean.insert("engine->evaluate(\"0x10001\")", true);
+ toBoolean.insert("engine->evaluate(\"NaN\")", false);
+ toBoolean.insert("engine->evaluate(\"Infinity\")", true);
+ toBoolean.insert("engine->evaluate(\"-Infinity\")", true);
+ toBoolean.insert("engine->evaluate(\"'ciao'\")", true);
+ toBoolean.insert("engine->evaluate(\"''\")", false);
+ toBoolean.insert("engine->evaluate(\"'0'\")", true);
+ toBoolean.insert("engine->evaluate(\"'123'\")", true);
+ toBoolean.insert("engine->evaluate(\"'12.4'\")", true);
toBoolean.insert("engine->nullValue()", false);
toBoolean.insert("engine->undefinedValue()", false);
+ toBoolean.insert("engine->newObject()", true);
+ toBoolean.insert("engine->newArray()", true);
+ toBoolean.insert("engine->newArray(10)", true);
+ toBoolean.insert("engine->newDate(QDateTime())", true);
+ toBoolean.insert("engine->newQMetaObject(&QObject::staticMetaObject)", true);
+ toBoolean.insert("engine->newVariant(QVariant())", true);
+ toBoolean.insert("engine->newVariant(QVariant(123))", true);
+ toBoolean.insert("engine->newVariant(QVariant(false))", true);
+ toBoolean.insert("engine->newQObject(0)", false);
+ toBoolean.insert("engine->newQObject(engine)", true);
}
newRow(expr) << toBoolean.value(expr);
}
@@ -1218,6 +1581,7 @@ void tst_QScriptValue::toBoolean_test(const char*, const QScriptValue& value)
{
QFETCH(bool, expected);
QCOMPARE(value.toBoolean(), expected);
+ QCOMPARE(value.toBoolean(), expected);
}
DEFINE_TEST_FUNCTION(toBoolean)
@@ -1336,8 +1700,45 @@ void tst_QScriptValue::toInteger_makeData(const char* expr)
toInteger.insert("engine->evaluate(\"new Object()\")", 0);
toInteger.insert("engine->evaluate(\"new Array()\")", 0);
toInteger.insert("engine->evaluate(\"new Error()\")", 0);
+ toInteger.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ toInteger.insert("engine->evaluate(\"Undefined\")", 0);
+ toInteger.insert("engine->evaluate(\"Null\")", 0);
+ toInteger.insert("engine->evaluate(\"True\")", 0);
+ toInteger.insert("engine->evaluate(\"False\")", 0);
+ toInteger.insert("engine->evaluate(\"undefined\")", 0);
+ toInteger.insert("engine->evaluate(\"null\")", 0);
+ toInteger.insert("engine->evaluate(\"true\")", 1);
+ toInteger.insert("engine->evaluate(\"false\")", 0);
+ toInteger.insert("engine->evaluate(\"122\")", 122);
+ toInteger.insert("engine->evaluate(\"124\")", 124);
+ toInteger.insert("engine->evaluate(\"0\")", 0);
+ toInteger.insert("engine->evaluate(\"0.0\")", 0);
+ toInteger.insert("engine->evaluate(\"123.0\")", 123);
+ toInteger.insert("engine->evaluate(\"6.37e-8\")", 0);
+ toInteger.insert("engine->evaluate(\"-6.37e-8\")", 0);
+ toInteger.insert("engine->evaluate(\"0x43211234\")", 1126240820);
+ toInteger.insert("engine->evaluate(\"0x10000\")", 65536);
+ toInteger.insert("engine->evaluate(\"0x10001\")", 65537);
+ toInteger.insert("engine->evaluate(\"NaN\")", 0);
+ toInteger.insert("engine->evaluate(\"Infinity\")", qInf());
+ toInteger.insert("engine->evaluate(\"-Infinity\")", qInf());
+ toInteger.insert("engine->evaluate(\"'ciao'\")", 0);
+ toInteger.insert("engine->evaluate(\"''\")", 0);
+ toInteger.insert("engine->evaluate(\"'0'\")", 0);
+ toInteger.insert("engine->evaluate(\"'123'\")", 123);
+ toInteger.insert("engine->evaluate(\"'12.4'\")", 12);
toInteger.insert("engine->nullValue()", 0);
toInteger.insert("engine->undefinedValue()", 0);
+ toInteger.insert("engine->newObject()", 0);
+ toInteger.insert("engine->newArray()", 0);
+ toInteger.insert("engine->newArray(10)", 0);
+ toInteger.insert("engine->newDate(QDateTime())", 0);
+ toInteger.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0);
+ toInteger.insert("engine->newVariant(QVariant())", 0);
+ toInteger.insert("engine->newVariant(QVariant(123))", 123);
+ toInteger.insert("engine->newVariant(QVariant(false))", 0);
+ toInteger.insert("engine->newQObject(0)", 0);
+ toInteger.insert("engine->newQObject(engine)", 0);
}
newRow(expr) << toInteger.value(expr);
}
@@ -1347,9 +1748,11 @@ void tst_QScriptValue::toInteger_test(const char*, const QScriptValue& value)
QFETCH(qsreal, expected);
if (qIsInf(expected)) {
QVERIFY(qIsInf(value.toInteger()));
+ QVERIFY(qIsInf(value.toInteger()));
return;
}
QCOMPARE(value.toInteger(), expected);
+ QCOMPARE(value.toInteger(), expected);
}
DEFINE_TEST_FUNCTION(toInteger)
@@ -1468,8 +1871,45 @@ void tst_QScriptValue::toInt32_makeData(const char* expr)
toInt32.insert("engine->evaluate(\"new Object()\")", 0);
toInt32.insert("engine->evaluate(\"new Array()\")", 0);
toInt32.insert("engine->evaluate(\"new Error()\")", 0);
+ toInt32.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ toInt32.insert("engine->evaluate(\"Undefined\")", 0);
+ toInt32.insert("engine->evaluate(\"Null\")", 0);
+ toInt32.insert("engine->evaluate(\"True\")", 0);
+ toInt32.insert("engine->evaluate(\"False\")", 0);
+ toInt32.insert("engine->evaluate(\"undefined\")", 0);
+ toInt32.insert("engine->evaluate(\"null\")", 0);
+ toInt32.insert("engine->evaluate(\"true\")", 1);
+ toInt32.insert("engine->evaluate(\"false\")", 0);
+ toInt32.insert("engine->evaluate(\"122\")", 122);
+ toInt32.insert("engine->evaluate(\"124\")", 124);
+ toInt32.insert("engine->evaluate(\"0\")", 0);
+ toInt32.insert("engine->evaluate(\"0.0\")", 0);
+ toInt32.insert("engine->evaluate(\"123.0\")", 123);
+ toInt32.insert("engine->evaluate(\"6.37e-8\")", 0);
+ toInt32.insert("engine->evaluate(\"-6.37e-8\")", 0);
+ toInt32.insert("engine->evaluate(\"0x43211234\")", 1126240820);
+ toInt32.insert("engine->evaluate(\"0x10000\")", 65536);
+ toInt32.insert("engine->evaluate(\"0x10001\")", 65537);
+ toInt32.insert("engine->evaluate(\"NaN\")", 0);
+ toInt32.insert("engine->evaluate(\"Infinity\")", 0);
+ toInt32.insert("engine->evaluate(\"-Infinity\")", 0);
+ toInt32.insert("engine->evaluate(\"'ciao'\")", 0);
+ toInt32.insert("engine->evaluate(\"''\")", 0);
+ toInt32.insert("engine->evaluate(\"'0'\")", 0);
+ toInt32.insert("engine->evaluate(\"'123'\")", 123);
+ toInt32.insert("engine->evaluate(\"'12.4'\")", 12);
toInt32.insert("engine->nullValue()", 0);
toInt32.insert("engine->undefinedValue()", 0);
+ toInt32.insert("engine->newObject()", 0);
+ toInt32.insert("engine->newArray()", 0);
+ toInt32.insert("engine->newArray(10)", 0);
+ toInt32.insert("engine->newDate(QDateTime())", 0);
+ toInt32.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0);
+ toInt32.insert("engine->newVariant(QVariant())", 0);
+ toInt32.insert("engine->newVariant(QVariant(123))", 123);
+ toInt32.insert("engine->newVariant(QVariant(false))", 0);
+ toInt32.insert("engine->newQObject(0)", 0);
+ toInt32.insert("engine->newQObject(engine)", 0);
}
newRow(expr) << toInt32.value(expr);
}
@@ -1478,6 +1918,7 @@ void tst_QScriptValue::toInt32_test(const char*, const QScriptValue& value)
{
QFETCH(qint32, expected);
QCOMPARE(value.toInt32(), expected);
+ QCOMPARE(value.toInt32(), expected);
}
DEFINE_TEST_FUNCTION(toInt32)
@@ -1596,8 +2037,45 @@ void tst_QScriptValue::toUInt32_makeData(const char* expr)
toUInt32.insert("engine->evaluate(\"new Object()\")", 0);
toUInt32.insert("engine->evaluate(\"new Array()\")", 0);
toUInt32.insert("engine->evaluate(\"new Error()\")", 0);
+ toUInt32.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ toUInt32.insert("engine->evaluate(\"Undefined\")", 0);
+ toUInt32.insert("engine->evaluate(\"Null\")", 0);
+ toUInt32.insert("engine->evaluate(\"True\")", 0);
+ toUInt32.insert("engine->evaluate(\"False\")", 0);
+ toUInt32.insert("engine->evaluate(\"undefined\")", 0);
+ toUInt32.insert("engine->evaluate(\"null\")", 0);
+ toUInt32.insert("engine->evaluate(\"true\")", 1);
+ toUInt32.insert("engine->evaluate(\"false\")", 0);
+ toUInt32.insert("engine->evaluate(\"122\")", 122);
+ toUInt32.insert("engine->evaluate(\"124\")", 124);
+ toUInt32.insert("engine->evaluate(\"0\")", 0);
+ toUInt32.insert("engine->evaluate(\"0.0\")", 0);
+ toUInt32.insert("engine->evaluate(\"123.0\")", 123);
+ toUInt32.insert("engine->evaluate(\"6.37e-8\")", 0);
+ toUInt32.insert("engine->evaluate(\"-6.37e-8\")", 0);
+ toUInt32.insert("engine->evaluate(\"0x43211234\")", 1126240820);
+ toUInt32.insert("engine->evaluate(\"0x10000\")", 65536);
+ toUInt32.insert("engine->evaluate(\"0x10001\")", 65537);
+ toUInt32.insert("engine->evaluate(\"NaN\")", 0);
+ toUInt32.insert("engine->evaluate(\"Infinity\")", 0);
+ toUInt32.insert("engine->evaluate(\"-Infinity\")", 0);
+ toUInt32.insert("engine->evaluate(\"'ciao'\")", 0);
+ toUInt32.insert("engine->evaluate(\"''\")", 0);
+ toUInt32.insert("engine->evaluate(\"'0'\")", 0);
+ toUInt32.insert("engine->evaluate(\"'123'\")", 123);
+ toUInt32.insert("engine->evaluate(\"'12.4'\")", 12);
toUInt32.insert("engine->nullValue()", 0);
toUInt32.insert("engine->undefinedValue()", 0);
+ toUInt32.insert("engine->newObject()", 0);
+ toUInt32.insert("engine->newArray()", 0);
+ toUInt32.insert("engine->newArray(10)", 0);
+ toUInt32.insert("engine->newDate(QDateTime())", 0);
+ toUInt32.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0);
+ toUInt32.insert("engine->newVariant(QVariant())", 0);
+ toUInt32.insert("engine->newVariant(QVariant(123))", 123);
+ toUInt32.insert("engine->newVariant(QVariant(false))", 0);
+ toUInt32.insert("engine->newQObject(0)", 0);
+ toUInt32.insert("engine->newQObject(engine)", 0);
}
newRow(expr) << toUInt32.value(expr);
}
@@ -1606,6 +2084,7 @@ void tst_QScriptValue::toUInt32_test(const char*, const QScriptValue& value)
{
QFETCH(quint32, expected);
QCOMPARE(value.toUInt32(), expected);
+ QCOMPARE(value.toUInt32(), expected);
}
DEFINE_TEST_FUNCTION(toUInt32)
@@ -1724,8 +2203,45 @@ void tst_QScriptValue::toUInt16_makeData(const char* expr)
toUInt16.insert("engine->evaluate(\"new Object()\")", 0);
toUInt16.insert("engine->evaluate(\"new Array()\")", 0);
toUInt16.insert("engine->evaluate(\"new Error()\")", 0);
+ toUInt16.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ toUInt16.insert("engine->evaluate(\"Undefined\")", 0);
+ toUInt16.insert("engine->evaluate(\"Null\")", 0);
+ toUInt16.insert("engine->evaluate(\"True\")", 0);
+ toUInt16.insert("engine->evaluate(\"False\")", 0);
+ toUInt16.insert("engine->evaluate(\"undefined\")", 0);
+ toUInt16.insert("engine->evaluate(\"null\")", 0);
+ toUInt16.insert("engine->evaluate(\"true\")", 1);
+ toUInt16.insert("engine->evaluate(\"false\")", 0);
+ toUInt16.insert("engine->evaluate(\"122\")", 122);
+ toUInt16.insert("engine->evaluate(\"124\")", 124);
+ toUInt16.insert("engine->evaluate(\"0\")", 0);
+ toUInt16.insert("engine->evaluate(\"0.0\")", 0);
+ toUInt16.insert("engine->evaluate(\"123.0\")", 123);
+ toUInt16.insert("engine->evaluate(\"6.37e-8\")", 0);
+ toUInt16.insert("engine->evaluate(\"-6.37e-8\")", 0);
+ toUInt16.insert("engine->evaluate(\"0x43211234\")", 4660);
+ toUInt16.insert("engine->evaluate(\"0x10000\")", 0);
+ toUInt16.insert("engine->evaluate(\"0x10001\")", 1);
+ toUInt16.insert("engine->evaluate(\"NaN\")", 0);
+ toUInt16.insert("engine->evaluate(\"Infinity\")", 0);
+ toUInt16.insert("engine->evaluate(\"-Infinity\")", 0);
+ toUInt16.insert("engine->evaluate(\"'ciao'\")", 0);
+ toUInt16.insert("engine->evaluate(\"''\")", 0);
+ toUInt16.insert("engine->evaluate(\"'0'\")", 0);
+ toUInt16.insert("engine->evaluate(\"'123'\")", 123);
+ toUInt16.insert("engine->evaluate(\"'12.4'\")", 12);
toUInt16.insert("engine->nullValue()", 0);
toUInt16.insert("engine->undefinedValue()", 0);
+ toUInt16.insert("engine->newObject()", 0);
+ toUInt16.insert("engine->newArray()", 0);
+ toUInt16.insert("engine->newArray(10)", 0);
+ toUInt16.insert("engine->newDate(QDateTime())", 0);
+ toUInt16.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0);
+ toUInt16.insert("engine->newVariant(QVariant())", 0);
+ toUInt16.insert("engine->newVariant(QVariant(123))", 123);
+ toUInt16.insert("engine->newVariant(QVariant(false))", 0);
+ toUInt16.insert("engine->newQObject(0)", 0);
+ toUInt16.insert("engine->newQObject(engine)", 0);
}
newRow(expr) << toUInt16.value(expr);
}
@@ -1734,6 +2250,7 @@ void tst_QScriptValue::toUInt16_test(const char*, const QScriptValue& value)
{
QFETCH(quint16, expected);
QCOMPARE(value.toUInt16(), expected);
+ QCOMPARE(value.toUInt16(), expected);
}
DEFINE_TEST_FUNCTION(toUInt16)
@@ -1758,8 +2275,11 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")");
+ equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->nullValue()");
equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
+ equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->newQObject(0)");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
@@ -1767,11 +2287,15 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"undefined\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->nullValue()");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->undefinedValue()");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->newQObject(0)");
equals.insert("QScriptValue(true) <=> QScriptValue(true)");
equals.insert("QScriptValue(true) <=> QScriptValue(0, true)");
equals.insert("QScriptValue(true) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"true\")");
equals.insert("QScriptValue(false) <=> QScriptValue(false)");
equals.insert("QScriptValue(false) <=> QScriptValue(0)");
equals.insert("QScriptValue(false) <=> QScriptValue(0.0)");
@@ -1793,12 +2317,21 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(false) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(false) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(false) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(false) <=> engine->newArray()");
+ equals.insert("QScriptValue(false) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, int(122))");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"122\")");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, uint(124))");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(uint(124)) <=> engine->evaluate(\"124\")");
equals.insert("QScriptValue(0) <=> QScriptValue(false)");
equals.insert("QScriptValue(0) <=> QScriptValue(0)");
equals.insert("QScriptValue(0) <=> QScriptValue(0.0)");
@@ -1820,6 +2353,13 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(0) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(0) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(0) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0) <=> engine->newArray()");
+ equals.insert("QScriptValue(0) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(0.0) <=> QScriptValue(false)");
equals.insert("QScriptValue(0.0) <=> QScriptValue(0)");
equals.insert("QScriptValue(0.0) <=> QScriptValue(0.0)");
@@ -1841,39 +2381,56 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0.0) <=> engine->newArray()");
+ equals.insert("QScriptValue(0.0) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(123.0) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(123.0) <=> QScriptValue(QString(\"123\"))");
equals.insert("QScriptValue(123.0) <=> QScriptValue(0, 123.0)");
equals.insert("QScriptValue(123.0) <=> QScriptValue(0, QString(\"123\"))");
equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, 123.0)");
equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(123.0) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(6.37e-8)");
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, 6.37e-8)");
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"6.37e-8\")");
equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(-6.37e-8)");
equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, -6.37e-8)");
equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"-6.37e-8\")");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0, 0x43211234)");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0x43211234) <=> engine->evaluate(\"0x43211234\")");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x10000)");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, 0x10000)");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0x10000) <=> engine->evaluate(\"0x10000\")");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(0x10001)");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(0, 0x10001)");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0x10001) <=> engine->evaluate(\"0x10001\")");
equals.insert("QScriptValue(qInf()) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(qInf()) <=> QScriptValue(\"Infinity\")");
equals.insert("QScriptValue(qInf()) <=> QScriptValue(0, qInf())");
equals.insert("QScriptValue(qInf()) <=> QScriptValue(0, \"Infinity\")");
equals.insert("QScriptValue(qInf()) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(qInf()) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(qInf()) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(-qInf())");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(\"-Infinity\")");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, -qInf())");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, \"-Infinity\")");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, -qInf())");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(0, \"NaN\")");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(engine, \"NaN\")");
@@ -1883,24 +2440,28 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(0, \"Infinity\")");
equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(-qInf())");
equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(\"-Infinity\")");
equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, -qInf())");
equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, -qInf())");
equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(0, \"ciao\")");
equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(false)");
equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0)");
equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0.0)");
@@ -1919,6 +2480,12 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->newArray()");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(QString()) <=> QScriptValue(false)");
equals.insert("QScriptValue(QString()) <=> QScriptValue(0)");
equals.insert("QScriptValue(QString()) <=> QScriptValue(0.0)");
@@ -1937,6 +2504,12 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(QString()) <=> engine->newArray()");
+ equals.insert("QScriptValue(QString()) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(false)");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0)");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0.0)");
@@ -1949,13 +2522,22 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0)");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, 0.0)");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, 123.0)");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, 123.0)");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
@@ -1963,8 +2545,11 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")");
+ equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->nullValue()");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
+ equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->newQObject(0)");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
@@ -1972,11 +2557,15 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"undefined\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->nullValue()");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->undefinedValue()");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->newQObject(0)");
equals.insert("QScriptValue(0, true) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, true) <=> QScriptValue(0, true)");
equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"true\")");
equals.insert("QScriptValue(0, false) <=> QScriptValue(false)");
equals.insert("QScriptValue(0, false) <=> QScriptValue(0)");
equals.insert("QScriptValue(0, false) <=> QScriptValue(0.0)");
@@ -1998,12 +2587,21 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, false) <=> engine->newArray()");
+ equals.insert("QScriptValue(0, false) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, int(122))");
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"122\")");
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, uint(124))");
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0, uint(124)) <=> engine->evaluate(\"124\")");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(false)");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(0)");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(0.0)");
@@ -2025,6 +2623,13 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->newArray()");
+ equals.insert("QScriptValue(0, 0) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(false)");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0)");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0.0)");
@@ -2046,39 +2651,56 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->newArray()");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(QString(\"123\"))");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, 123.0)");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, QString(\"123\"))");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, 123.0)");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(6.37e-8)");
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 6.37e-8)");
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"6.37e-8\")");
equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(-6.37e-8)");
equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, -6.37e-8)");
equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"-6.37e-8\")");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0, 0x43211234)");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, 0x43211234) <=> engine->evaluate(\"0x43211234\")");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0x10000)");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x10000)");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0, 0x10000) <=> engine->evaluate(\"0x10000\")");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0x10001)");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0, 0x10001)");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, 0x10001) <=> engine->evaluate(\"0x10001\")");
equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(\"Infinity\")");
equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(0, qInf())");
equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(0, \"Infinity\")");
equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, qInf()) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(-qInf())");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(\"-Infinity\")");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, -qInf())");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, \"-Infinity\")");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, -qInf())");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"NaN\")");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
@@ -2088,24 +2710,28 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(0, \"Infinity\")");
equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(-qInf())");
equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(\"-Infinity\")");
equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, -qInf())");
equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, -qInf())");
equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(0, \"ciao\")");
equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(false)");
equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0)");
equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0.0)");
@@ -2124,6 +2750,12 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newArray()");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(false)");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0)");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0.0)");
@@ -2142,6 +2774,12 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->newArray()");
+ equals.insert("QScriptValue(0, QString()) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(false)");
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0)");
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0.0)");
@@ -2154,12 +2792,20 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0)");
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, 0.0)");
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, 123.0)");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, 123.0)");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString(\"12.3\"))");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::NullValue)");
@@ -2168,8 +2814,11 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")");
+ equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->nullValue()");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
+ equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->newQObject(0)");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
@@ -2177,11 +2826,15 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"undefined\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->nullValue()");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->undefinedValue()");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->newQObject(0)");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, true)");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"true\")");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(false)");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(0)");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(0.0)");
@@ -2203,12 +2856,21 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->newArray()");
+ equals.insert("QScriptValue(engine, false) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, int(122))");
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"122\")");
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, uint(124))");
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(engine, uint(124)) <=> engine->evaluate(\"124\")");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(false)");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0)");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0.0)");
@@ -2230,6 +2892,13 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->newArray()");
+ equals.insert("QScriptValue(engine, 0) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(false)");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0)");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0.0)");
@@ -2251,39 +2920,56 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->newArray()");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(QString(\"123\"))");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, 123.0)");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, QString(\"123\"))");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, 123.0)");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(6.37e-8)");
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 6.37e-8)");
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"6.37e-8\")");
equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(-6.37e-8)");
equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, -6.37e-8)");
equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"-6.37e-8\")");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0, 0x43211234)");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, 0x43211234) <=> engine->evaluate(\"0x43211234\")");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0x10000)");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x10000)");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(engine, 0x10000) <=> engine->evaluate(\"0x10000\")");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0x10001)");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0, 0x10001)");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, 0x10001) <=> engine->evaluate(\"0x10001\")");
equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(\"Infinity\")");
equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(0, qInf())");
equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(0, \"Infinity\")");
equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, qInf()) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(-qInf())");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(\"-Infinity\")");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, -qInf())");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, \"-Infinity\")");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, -qInf())");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"NaN\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
@@ -2293,24 +2979,28 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(0, \"Infinity\")");
equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(-qInf())");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(\"-Infinity\")");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, -qInf())");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, -qInf())");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(0, \"ciao\")");
equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(false)");
equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0)");
equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0.0)");
@@ -2329,6 +3019,12 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newArray()");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(false)");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0)");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0.0)");
@@ -2347,6 +3043,12 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->newArray()");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(false)");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0)");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0.0)");
@@ -2359,12 +3061,20 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0)");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, 0.0)");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->newVariant(QVariant(false))");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, 123.0)");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, 123.0)");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString(\"1.23\"))");
equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(false)");
equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(0)");
@@ -2382,6 +3092,10 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString(\"\"))");
equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(engine, QString())");
equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"[]\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"''\")");
equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(0, QScriptValue::UndefinedValue)");
@@ -2389,8 +3103,11 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::NullValue)");
equals.insert("engine->evaluate(\"{}\") <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->evaluate(\"{}\") <=> engine->evaluate(\"undefined\")");
+ equals.insert("engine->evaluate(\"{}\") <=> engine->evaluate(\"null\")");
equals.insert("engine->evaluate(\"{}\") <=> engine->nullValue()");
equals.insert("engine->evaluate(\"{}\") <=> engine->undefinedValue()");
+ equals.insert("engine->evaluate(\"{}\") <=> engine->newQObject(0)");
equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object.prototype\")");
equals.insert("engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Date.prototype\")");
equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(false)");
@@ -2409,6 +3126,10 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString(\"\"))");
equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(engine, QString())");
equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"''\")");
equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Function.prototype\")");
equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Error.prototype\")");
equals.insert("engine->evaluate(\"Object\") <=> engine->evaluate(\"Object\")");
@@ -2436,7 +3157,238 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString(\"\"))");
equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(engine, QString())");
equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Array()\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"''\")");
equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->evaluate(\"undefined\")");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->evaluate(\"null\")");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->nullValue()");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->undefinedValue()");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->newQObject(0)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"undefined\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"null\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->nullValue()");
+ equals.insert("engine->evaluate(\"null\") <=> engine->undefinedValue()");
+ equals.insert("engine->evaluate(\"null\") <=> engine->newQObject(0)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(QString())");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, QString())");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, QString())");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"[]\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"new Array()\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"''\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->newArray()");
+ equals.insert("engine->evaluate(\"false\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(QString())");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, QString())");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, QString())");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"[]\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"new Array()\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"''\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->newArray()");
+ equals.insert("engine->evaluate(\"0\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(QString())");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, QString())");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString())");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"[]\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"new Array()\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"''\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->newArray()");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(-6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, -6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"Infinity\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(-qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(\"-Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, -qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, -qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"-Infinity\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(QString())");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, QString())");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, QString())");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"[]\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"new Array()\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"''\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->newArray()");
+ equals.insert("engine->evaluate(\"''\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'12.4'\")");
equals.insert("engine->nullValue() <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("engine->nullValue() <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("engine->nullValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)");
@@ -2444,8 +3396,11 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("engine->nullValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("engine->nullValue() <=> QScriptValue(engine, QScriptValue::NullValue)");
equals.insert("engine->nullValue() <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"undefined\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"null\")");
equals.insert("engine->nullValue() <=> engine->nullValue()");
equals.insert("engine->nullValue() <=> engine->undefinedValue()");
+ equals.insert("engine->nullValue() <=> engine->newQObject(0)");
equals.insert("engine->undefinedValue() <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("engine->undefinedValue() <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("engine->undefinedValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)");
@@ -2453,8 +3408,82 @@ void tst_QScriptValue::equals_makeData(const char *expr)
equals.insert("engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::NullValue)");
equals.insert("engine->undefinedValue() <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->undefinedValue() <=> engine->evaluate(\"undefined\")");
+ equals.insert("engine->undefinedValue() <=> engine->evaluate(\"null\")");
equals.insert("engine->undefinedValue() <=> engine->nullValue()");
equals.insert("engine->undefinedValue() <=> engine->undefinedValue()");
+ equals.insert("engine->undefinedValue() <=> engine->newQObject(0)");
+ equals.insert("engine->newObject() <=> engine->newObject()");
+ equals.insert("engine->newArray() <=> QScriptValue(false)");
+ equals.insert("engine->newArray() <=> QScriptValue(0)");
+ equals.insert("engine->newArray() <=> QScriptValue(0.0)");
+ equals.insert("engine->newArray() <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(QString())");
+ equals.insert("engine->newArray() <=> QScriptValue(0, false)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, 0)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(0, QString())");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, false)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, 0)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, QString())");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"false\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"0\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"''\")");
+ equals.insert("engine->newArray() <=> engine->newArray()");
+ equals.insert("engine->newArray(10) <=> engine->newArray(10)");
+ equals.insert("engine->newDate(QDateTime()) <=> engine->newDate(QDateTime())");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->newVariant(QVariant()) <=> engine->newVariant(QVariant())");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(123.0)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(false)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0.0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(QString())");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, false)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString())");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, false)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString())");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"false\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"''\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(QScriptValue::UndefinedValue)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"undefined\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"null\")");
+ equals.insert("engine->newQObject(0) <=> engine->nullValue()");
+ equals.insert("engine->newQObject(0) <=> engine->undefinedValue()");
+ equals.insert("engine->newQObject(0) <=> engine->newQObject(0)");
+ equals.insert("engine->newQObject(engine) <=> engine->newQObject(engine)");
}
QHash<QString, QScriptValue>::const_iterator it;
for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
@@ -2489,59 +3518,78 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")");
equals.insert("QScriptValue(QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->nullValue()");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->newQObject(0)");
equals.insert("QScriptValue(true) <=> QScriptValue(true)");
equals.insert("QScriptValue(true) <=> QScriptValue(0, true)");
equals.insert("QScriptValue(true) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"true\")");
equals.insert("QScriptValue(false) <=> QScriptValue(false)");
equals.insert("QScriptValue(false) <=> QScriptValue(0, false)");
equals.insert("QScriptValue(false) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"false\")");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(0, int(122))");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"122\")");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0, uint(124))");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(uint(124)) <=> engine->evaluate(\"124\")");
equals.insert("QScriptValue(0) <=> QScriptValue(0)");
equals.insert("QScriptValue(0) <=> QScriptValue(0.0)");
equals.insert("QScriptValue(0) <=> QScriptValue(0, 0)");
equals.insert("QScriptValue(0) <=> QScriptValue(0, 0.0)");
equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0)");
equals.insert("QScriptValue(0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"0.0\")");
equals.insert("QScriptValue(0.0) <=> QScriptValue(0)");
equals.insert("QScriptValue(0.0) <=> QScriptValue(0.0)");
equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0)");
equals.insert("QScriptValue(0.0) <=> QScriptValue(0, 0.0)");
equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0)");
equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0.0\")");
equals.insert("QScriptValue(123.0) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(123.0) <=> QScriptValue(0, 123.0)");
equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"123.0\")");
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(6.37e-8)");
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(0, 6.37e-8)");
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"6.37e-8\")");
equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(-6.37e-8)");
equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(0, -6.37e-8)");
equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"-6.37e-8\")");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0, 0x43211234)");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0x43211234) <=> engine->evaluate(\"0x43211234\")");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x10000)");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(0, 0x10000)");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0x10000) <=> engine->evaluate(\"0x10000\")");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(0x10001)");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(0, 0x10001)");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0x10001) <=> engine->evaluate(\"0x10001\")");
equals.insert("QScriptValue(qInf()) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(qInf()) <=> QScriptValue(0, qInf())");
equals.insert("QScriptValue(qInf()) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(qInf()) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(-qInf())");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(0, -qInf())");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(engine, -qInf())");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(0, \"NaN\")");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(engine, \"NaN\")");
@@ -2557,88 +3605,114 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(\"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString(\"\"))");
equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(QString())");
equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(0, QString())");
equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
equals.insert("QScriptValue(QString(\"\")) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"''\")");
equals.insert("QScriptValue(QString()) <=> QScriptValue(QString(\"\"))");
equals.insert("QScriptValue(QString()) <=> QScriptValue(QString())");
equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString(\"\"))");
equals.insert("QScriptValue(QString()) <=> QScriptValue(0, QString())");
equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString(\"\"))");
equals.insert("QScriptValue(QString()) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"''\")");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'0'\")");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"'123'\")");
equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")");
equals.insert("QScriptValue(0, QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->nullValue()");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->newQObject(0)");
equals.insert("QScriptValue(0, true) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, true) <=> QScriptValue(0, true)");
equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"true\")");
equals.insert("QScriptValue(0, false) <=> QScriptValue(false)");
equals.insert("QScriptValue(0, false) <=> QScriptValue(0, false)");
equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"false\")");
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0, int(122))");
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"122\")");
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0, uint(124))");
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(0, uint(124)) <=> engine->evaluate(\"124\")");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(0)");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(0.0)");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0)");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(0, 0.0)");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0)");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0.0\")");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0)");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0.0)");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0)");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(0, 0.0)");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0)");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0.0\")");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0, 123.0)");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"123.0\")");
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(6.37e-8)");
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(0, 6.37e-8)");
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"6.37e-8\")");
equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(-6.37e-8)");
equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(0, -6.37e-8)");
equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"-6.37e-8\")");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0, 0x43211234)");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(0, 0x43211234) <=> engine->evaluate(\"0x43211234\")");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0x10000)");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0, 0x10000)");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(0, 0x10000) <=> engine->evaluate(\"0x10000\")");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0x10001)");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0, 0x10001)");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(0, 0x10001) <=> engine->evaluate(\"0x10001\")");
equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(0, qInf())");
equals.insert("QScriptValue(0, qInf()) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(0, qInf()) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(-qInf())");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(0, -qInf())");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(engine, -qInf())");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"NaN\")");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
@@ -2654,88 +3728,113 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(0, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(0, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString(\"\"))");
equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(QString())");
equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(0, QString())");
equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
equals.insert("QScriptValue(0, QString(\"\")) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"''\")");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString(\"\"))");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(QString())");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString(\"\"))");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(0, QString())");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString(\"\"))");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"''\")");
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'0'\")");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"'123'\")");
equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(0, QString(\"12.3\"))");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(0, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"{}\")");
+ equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->evaluate(\"undefined\")");
equals.insert("QScriptValue(engine, QScriptValue::UndefinedValue) <=> engine->undefinedValue()");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(0, QScriptValue::NullValue)");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"null\")");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->nullValue()");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->newQObject(0)");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(0, true)");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, true)");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"true\")");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(false)");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(0, false)");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, false)");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"false\")");
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0, int(122))");
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, int(122))");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"122\")");
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0, uint(124))");
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("QScriptValue(engine, uint(124)) <=> engine->evaluate(\"124\")");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0)");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0.0)");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0)");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(0, 0.0)");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0)");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0.0\")");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0)");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0.0)");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0)");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(0, 0.0)");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0)");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, 0.0)");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0.0\")");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0, 123.0)");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, 123.0)");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"123.0\")");
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(6.37e-8)");
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(0, 6.37e-8)");
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"6.37e-8\")");
equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(-6.37e-8)");
equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(0, -6.37e-8)");
equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"-6.37e-8\")");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0, 0x43211234)");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("QScriptValue(engine, 0x43211234) <=> engine->evaluate(\"0x43211234\")");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0x10000)");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0, 0x10000)");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("QScriptValue(engine, 0x10000) <=> engine->evaluate(\"0x10000\")");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0x10001)");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0, 0x10001)");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("QScriptValue(engine, 0x10001) <=> engine->evaluate(\"0x10001\")");
equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(0, qInf())");
equals.insert("QScriptValue(engine, qInf()) <=> QScriptValue(engine, qInf())");
+ equals.insert("QScriptValue(engine, qInf()) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(-qInf())");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(0, -qInf())");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(engine, -qInf())");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"-Infinity\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"NaN\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(engine, \"NaN\")");
@@ -2751,36 +3850,43 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(engine, \"ciao\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, \"ciao\")");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, \"ciao\")");
equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("QScriptValue(engine, QString::fromLatin1(\"ciao\")) <=> engine->evaluate(\"'ciao'\")");
equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString(\"\"))");
equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(QString())");
equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString(\"\"))");
equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(0, QString())");
equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString(\"\"))");
equals.insert("QScriptValue(engine, QString(\"\")) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"''\")");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString(\"\"))");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(QString())");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString(\"\"))");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(0, QString())");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString(\"\"))");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(engine, QString())");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"''\")");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(QString(\"0\"))");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(0, QString(\"0\"))");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'0'\")");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(QString(\"123\"))");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0, QString(\"123\"))");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"'123'\")");
equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(engine, QString(\"1.23\"))");
equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"[]\")");
equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(0, QScriptValue::UndefinedValue)");
equals.insert("engine->evaluate(\"{}\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("engine->evaluate(\"{}\") <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->evaluate(\"{}\") <=> engine->evaluate(\"undefined\")");
equals.insert("engine->evaluate(\"{}\") <=> engine->undefinedValue()");
equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"Object.prototype\")");
equals.insert("engine->evaluate(\"Date.prototype\") <=> engine->evaluate(\"Date.prototype\")");
@@ -2798,15 +3904,138 @@ void tst_QScriptValue::strictlyEquals_makeData(const char *expr)
equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"new Object()\")");
equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Array()\")");
equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(0, QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->evaluate(\"undefined\")");
+ equals.insert("engine->evaluate(\"undefined\") <=> engine->undefinedValue()");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"null\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->nullValue()");
+ equals.insert("engine->evaluate(\"null\") <=> engine->newQObject(0)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(-6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, -6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"Infinity\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"Infinity\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(-qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, -qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, -qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"-Infinity\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(QString())");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, QString())");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, QString())");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"''\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'12.4'\")");
equals.insert("engine->nullValue() <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("engine->nullValue() <=> QScriptValue(0, QScriptValue::NullValue)");
equals.insert("engine->nullValue() <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"null\")");
equals.insert("engine->nullValue() <=> engine->nullValue()");
+ equals.insert("engine->nullValue() <=> engine->newQObject(0)");
equals.insert("engine->undefinedValue() <=> QScriptValue(QScriptValue::UndefinedValue)");
equals.insert("engine->undefinedValue() <=> QScriptValue(0, QScriptValue::UndefinedValue)");
equals.insert("engine->undefinedValue() <=> QScriptValue(engine, QScriptValue::UndefinedValue)");
equals.insert("engine->undefinedValue() <=> engine->evaluate(\"{}\")");
+ equals.insert("engine->undefinedValue() <=> engine->evaluate(\"undefined\")");
equals.insert("engine->undefinedValue() <=> engine->undefinedValue()");
+ equals.insert("engine->newObject() <=> engine->newObject()");
+ equals.insert("engine->newArray() <=> engine->newArray()");
+ equals.insert("engine->newArray(10) <=> engine->newArray(10)");
+ equals.insert("engine->newDate(QDateTime()) <=> engine->newDate(QDateTime())");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->newVariant(QVariant()) <=> engine->newVariant(QVariant())");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"null\")");
+ equals.insert("engine->newQObject(0) <=> engine->nullValue()");
+ equals.insert("engine->newQObject(0) <=> engine->newQObject(0)");
+ equals.insert("engine->newQObject(engine) <=> engine->newQObject(engine)");
}
QHash<QString, QScriptValue>::const_iterator it;
for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
@@ -2872,6 +4101,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(QScriptValue::NullValue) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(true) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(true) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(true) <=> QScriptValue(123.0)");
@@ -2902,6 +4144,17 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(true) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(true) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(true) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(true) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(true) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(false) <=> QScriptValue(true)");
equals.insert("QScriptValue(false) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(false) <=> QScriptValue(uint(124))");
@@ -2938,6 +4191,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(false) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(false) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(false) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(false) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(false) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(0x43211234)");
@@ -2962,6 +4228,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(int(122)) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(int(122)) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(int(122)) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0x10000)");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(0x10001)");
@@ -2977,6 +4251,10 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, 0x10001)");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(uint(124)) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(uint(124)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(uint(124)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(uint(124)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(uint(124)) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0) <=> QScriptValue(true)");
equals.insert("QScriptValue(0) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0) <=> QScriptValue(uint(124))");
@@ -3013,6 +4291,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(0) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(0) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(0.0) <=> QScriptValue(true)");
equals.insert("QScriptValue(0.0) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0.0) <=> QScriptValue(uint(124))");
@@ -3049,6 +4340,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(0.0) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0.0) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0.0) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(123.0) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(123.0) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(123.0) <=> QScriptValue(0x10000)");
@@ -3067,6 +4371,11 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, 0x10001)");
equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(123.0) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(123.0) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(true)");
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(uint(124))");
@@ -3100,6 +4409,18 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(6.37e-8) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(true)");
equals.insert("QScriptValue(-6.37e-8) <=> QScriptValue(false)");
@@ -3160,13 +4481,36 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(-6.37e-8) <=> engine->nullValue()");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->newArray()");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(-6.37e-8) <=> engine->newQObject(0)");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(\"Infinity\")");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0, qInf())");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(0, \"Infinity\")");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0x43211234) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0x43211234) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(0x10001)");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(qInf())");
@@ -3179,6 +4523,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, 0x10001)");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0x10000) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0x10000) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0x10000) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0x10000) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(\"Infinity\")");
@@ -3188,6 +4535,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, 0x43211234)");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0x10001) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0x10001) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0x10001) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(true)");
equals.insert("QScriptValue(-qInf()) <=> QScriptValue(false)");
@@ -3251,7 +4600,30 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(-qInf()) <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(-qInf()) <=> engine->nullValue()");
+ equals.insert("QScriptValue(-qInf()) <=> engine->newArray()");
+ equals.insert("QScriptValue(-qInf()) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(-qInf()) <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(-qInf()) <=> engine->newQObject(0)");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(\"NaN\") <=> QScriptValue(0, \"ciao\")");
@@ -3268,6 +4640,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->newObject()");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(\"NaN\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(\"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
@@ -3287,6 +4667,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->newObject()");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(\"Infinity\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(true)");
equals.insert("QScriptValue(\"-Infinity\") <=> QScriptValue(false)");
@@ -3363,7 +4751,36 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"/foo/\")");
equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(\"-Infinity\") <=> engine->nullValue()");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->newObject()");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->newQObject(0)");
+ equals.insert("QScriptValue(\"-Infinity\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Function.prototype\")");
equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Object\")");
equals.insert("QScriptValue(\"ciao\") <=> engine->evaluate(\"Array\")");
@@ -3444,6 +4861,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"/foo/\")");
equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->newArray(10)");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(QString(\"\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(QString()) <=> QScriptValue(true)");
equals.insert("QScriptValue(QString()) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(QString()) <=> QScriptValue(uint(124))");
@@ -3508,6 +4948,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"/foo/\")");
equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(QString()) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(QString()) <=> engine->newObject()");
+ equals.insert("QScriptValue(QString()) <=> engine->newArray(10)");
+ equals.insert("QScriptValue(QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(QString()) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(QString()) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(true)");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(QString(\"0\")) <=> QScriptValue(uint(124))");
@@ -3565,6 +5028,27 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(QString(\"0\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(QString(\"123\")) <=> QScriptValue(0x10000)");
@@ -3604,6 +5088,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(QString(\"123\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(QString(\"12.4\")) <=> QScriptValue(123.0)");
@@ -3652,6 +5149,24 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(QString(\"12.4\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(uint(124))");
@@ -3688,6 +5203,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, QScriptValue::NullValue) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(0, true) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, true) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(0, true) <=> QScriptValue(123.0)");
@@ -3718,6 +5246,17 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(0, true) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, true) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, true) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(0, false) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, false) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, false) <=> QScriptValue(uint(124))");
@@ -3754,6 +5293,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(0, false) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, false) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, false) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(0x43211234)");
@@ -3778,6 +5330,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(0, int(122)) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, int(122)) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0x10000)");
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(0x10001)");
@@ -3793,6 +5353,10 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, 0x10001)");
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0, uint(124)) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, uint(124)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, uint(124)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, uint(124)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, uint(124)) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(uint(124))");
@@ -3829,6 +5393,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(0, 0) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, 0) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(uint(124))");
@@ -3865,6 +5442,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(0, 0.0) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, 0.0) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(0x10000)");
@@ -3883,6 +5473,11 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, 0x10001)");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0, 123.0) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, 123.0) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(uint(124))");
@@ -3916,6 +5511,18 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(0, 6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, 6.37e-8) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, -6.37e-8) <=> QScriptValue(false)");
@@ -3976,13 +5583,36 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(0, -6.37e-8) <=> engine->nullValue()");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->newArray()");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(0, -6.37e-8) <=> engine->newQObject(0)");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(\"Infinity\")");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0, qInf())");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(0, \"Infinity\")");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0, 0x43211234) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, 0x43211234) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(0x10001)");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(qInf())");
@@ -3995,6 +5625,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, 0x10001)");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0, 0x10000) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, 0x10000) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, 0x10000) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, 0x10000) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(\"Infinity\")");
@@ -4004,6 +5637,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, 0x43211234)");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(0, 0x10001) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(0, 0x10001) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, 0x10001) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, -qInf()) <=> QScriptValue(false)");
@@ -4067,7 +5702,30 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(0, -qInf()) <=> engine->nullValue()");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->newArray()");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(0, -qInf()) <=> engine->newQObject(0)");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(0, \"NaN\") <=> QScriptValue(0, \"ciao\")");
@@ -4084,6 +5742,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->newObject()");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, \"NaN\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(0, \"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
@@ -4103,6 +5769,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->newObject()");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, \"Infinity\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(true)");
equals.insert("QScriptValue(0, \"-Infinity\") <=> QScriptValue(false)");
@@ -4179,7 +5853,36 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"/foo/\")");
equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->nullValue()");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newObject()");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newQObject(0)");
+ equals.insert("QScriptValue(0, \"-Infinity\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Function.prototype\")");
equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Object\")");
equals.insert("QScriptValue(0, \"ciao\") <=> engine->evaluate(\"Array\")");
@@ -4260,6 +5963,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"/foo/\")");
equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newArray(10)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(0, QString(\"\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, QString()) <=> QScriptValue(uint(124))");
@@ -4324,6 +6050,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"/foo/\")");
equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, QString()) <=> engine->newObject()");
+ equals.insert("QScriptValue(0, QString()) <=> engine->newArray(10)");
+ equals.insert("QScriptValue(0, QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, QString()) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(0, QString()) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(true)");
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, QString(\"0\")) <=> QScriptValue(uint(124))");
@@ -4381,6 +6130,27 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(0, QString(\"0\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(0, QString(\"123\")) <=> QScriptValue(0x10000)");
@@ -4420,6 +6190,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, QString(\"123\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(0, QString(\"12.3\")) <=> QScriptValue(123.0)");
@@ -4469,6 +6252,25 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(0, QString(\"12.3\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(uint(124))");
@@ -4505,6 +6307,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, QScriptValue::NullValue) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(123.0)");
@@ -4535,6 +6350,17 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(engine, true) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, true) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(uint(124))");
@@ -4571,6 +6397,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(engine, false) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, false) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(123.0)");
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(0x43211234)");
@@ -4595,6 +6434,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(engine, int(122)) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, int(122)) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0x10000)");
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(0x10001)");
@@ -4610,6 +6457,10 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, 0x10001)");
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(engine, uint(124)) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, uint(124)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, uint(124)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, uint(124)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, uint(124)) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(uint(124))");
@@ -4646,6 +6497,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(engine, 0) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, 0) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(uint(124))");
@@ -4682,6 +6546,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(engine, 0.0) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, 0.0) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(0x10000)");
@@ -4700,6 +6577,11 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, 0x10001)");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(engine, 123.0) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, 123.0) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(uint(124))");
@@ -4733,6 +6615,18 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, \"Infinity\")");
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("QScriptValue(engine, 6.37e-8) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, 6.37e-8) <=> engine->newVariant(QVariant(123))");
equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, -6.37e-8) <=> QScriptValue(false)");
@@ -4793,13 +6687,36 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->nullValue()");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->newArray()");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(engine, -6.37e-8) <=> engine->newQObject(0)");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(\"Infinity\")");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0, qInf())");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(0, \"Infinity\")");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(engine, 0x43211234) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, 0x43211234) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(0x10001)");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(qInf())");
@@ -4812,6 +6729,9 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, 0x10001)");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(engine, 0x10000) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, 0x10000) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, 0x10000) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, 0x10000) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(qInf())");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(\"Infinity\")");
@@ -4821,6 +6741,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, 0x43211234)");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, qInf())");
equals.insert("QScriptValue(engine, 0x10001) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("QScriptValue(engine, 0x10001) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, 0x10001) <=> engine->evaluate(\"Infinity\")");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, -qInf()) <=> QScriptValue(false)");
@@ -4884,7 +6806,30 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"[]\")");
equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"Array.prototype\")");
equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"new Array()\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"''\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(engine, -qInf()) <=> engine->nullValue()");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->newArray()");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(engine, -qInf()) <=> engine->newQObject(0)");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("QScriptValue(engine, \"NaN\") <=> QScriptValue(0, \"ciao\")");
@@ -4901,6 +6846,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, \"NaN\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"NaN\")");
equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(\"ciao\")");
equals.insert("QScriptValue(engine, \"Infinity\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
@@ -4920,6 +6873,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, \"Infinity\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> QScriptValue(false)");
@@ -4996,7 +6957,36 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"/foo/\")");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"null\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"false\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->evaluate(\"'12.4'\")");
equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->nullValue()");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newQObject(0)");
+ equals.insert("QScriptValue(engine, \"-Infinity\") <=> engine->newQObject(engine)");
equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Function.prototype\")");
equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Object\")");
equals.insert("QScriptValue(engine, \"ciao\") <=> engine->evaluate(\"Array\")");
@@ -5077,6 +7067,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"/foo/\")");
equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newArray(10)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(engine, QString(\"\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, QString()) <=> QScriptValue(uint(124))");
@@ -5141,6 +7154,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"/foo/\")");
equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"'0'\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->newArray(10)");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(engine, QString()) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(true)");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> QScriptValue(uint(124))");
@@ -5198,6 +7234,27 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"true\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(engine, QString(\"0\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x43211234)");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> QScriptValue(0x10000)");
@@ -5237,6 +7294,19 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, QString(\"123\")) <=> engine->newQObject(engine)");
equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(int(122))");
equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(uint(124))");
equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> QScriptValue(123.0)");
@@ -5287,6 +7357,25 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new Object()\")");
equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Null\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"True\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"False\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"122\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"124\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"123.0\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"'123'\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->newObject()");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->newVariant(QVariant(123))");
+ equals.insert("QScriptValue(engine, QString(\"1.23\")) <=> engine->newQObject(engine)");
equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(true)");
equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(int(122))");
equals.insert("engine->evaluate(\"[]\") <=> QScriptValue(uint(124))");
@@ -5351,6 +7440,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"/foo/\")");
equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"new Object()\")");
equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->newArray(10)");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"[]\") <=> engine->newQObject(engine)");
equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(\"ciao\")");
equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("engine->evaluate(\"Object.prototype\") <=> QScriptValue(0, \"ciao\")");
@@ -5365,6 +7477,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { return 1; })\")");
equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"Object.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(true)");
equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(int(122))");
equals.insert("engine->evaluate(\"Array.prototype\") <=> QScriptValue(uint(124))");
@@ -5429,6 +7543,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"/foo/\")");
equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Object()\")");
equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->newArray(10)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"Array.prototype\") <=> engine->newQObject(engine)");
equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Object\")");
equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Array\")");
equals.insert("engine->evaluate(\"Function.prototype\") <=> engine->evaluate(\"Number\")");
@@ -5458,6 +7595,14 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"Error.prototype\") <=> engine->newQObject(engine)");
equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Object\")");
equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Number\")");
equals.insert("engine->evaluate(\"Array\") <=> engine->evaluate(\"Function\")");
@@ -5512,6 +7657,17 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new Object()\")");
equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"/foo/\") <=> engine->newQObject(engine)");
equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(\"ciao\")");
equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
equals.insert("engine->evaluate(\"new Object()\") <=> QScriptValue(0, \"ciao\")");
@@ -5526,6 +7682,8 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { return 1; })\")");
equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"new Object()\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"new Object()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(true)");
equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(int(122))");
equals.insert("engine->evaluate(\"new Array()\") <=> QScriptValue(uint(124))");
@@ -5590,6 +7748,29 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"/foo/\")");
equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Object()\")");
equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->newArray(10)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"new Array()\") <=> engine->newQObject(engine)");
equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(\"NaN\")");
equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(\"Infinity\")");
equals.insert("engine->evaluate(\"new Error()\") <=> QScriptValue(\"ciao\")");
@@ -5612,6 +7793,982 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"new Error()\") <=> engine->newQObject(engine)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"Null\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"True\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"True\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"True\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"True\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"True\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"True\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"True\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"False\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"False\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"False\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"False\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"False\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"False\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"False\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"null\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"null\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"true\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"true\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"false\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"false\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"122\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"122\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"122\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"124\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"124\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"0\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"0\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"0.0\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"123.0\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"123.0\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"6.37e-8\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString())");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString())");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString())");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"[]\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"new Array()\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"null\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"''\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->nullValue()");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->newArray()");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->evaluate(\"-6.37e-8\") <=> engine->newQObject(0)");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0x43211234\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"0x10000\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"0x10000\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"0x10001\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"0x10001\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"0x10001\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(false)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0.0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(-6.37e-8)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QString())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, false)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0.0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, -6.37e-8)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QScriptValue::NullValue)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, false)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0.0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, -6.37e-8)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString())");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"[]\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"Array.prototype\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"new Array()\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"null\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"false\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0.0\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"-6.37e-8\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"''\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->nullValue()");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->newArray()");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->newVariant(QVariant(false))");
+ equals.insert("engine->evaluate(\"-Infinity\") <=> engine->newQObject(0)");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"'ciao'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(\"NaN\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(\"-Infinity\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"''\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"/foo/\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"''\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"''\") <=> engine->newArray(10)");
+ equals.insert("engine->evaluate(\"''\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"''\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"''\") <=> engine->newQObject(engine)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(true)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(\"NaN\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, true)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, true)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"true\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"'0'\") <=> engine->newQObject(engine)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(\"NaN\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"'123'\") <=> engine->newQObject(engine)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(int(122))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(uint(124))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(123.0)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0x43211234)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0x10000)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0x10001)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(qInf())");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(\"NaN\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, int(122))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, qInf())");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, \"NaN\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"True\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"False\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"122\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"124\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->newObject()");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->evaluate(\"'12.4'\") <=> engine->newQObject(engine)");
equals.insert("engine->nullValue() <=> QScriptValue(true)");
equals.insert("engine->nullValue() <=> QScriptValue(int(122))");
equals.insert("engine->nullValue() <=> QScriptValue(uint(124))");
@@ -5648,6 +8805,329 @@ void tst_QScriptValue::lessThan_makeData(const char *expr)
equals.insert("engine->nullValue() <=> QScriptValue(engine, \"Infinity\")");
equals.insert("engine->nullValue() <=> QScriptValue(engine, QString(\"123\"))");
equals.insert("engine->nullValue() <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"true\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"122\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"124\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->nullValue() <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->nullValue() <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->newObject() <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->newObject() <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newObject() <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->newObject() <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newObject() <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->newObject() <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->newObject() <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->newArray() <=> QScriptValue(true)");
+ equals.insert("engine->newArray() <=> QScriptValue(int(122))");
+ equals.insert("engine->newArray() <=> QScriptValue(uint(124))");
+ equals.insert("engine->newArray() <=> QScriptValue(123.0)");
+ equals.insert("engine->newArray() <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->newArray() <=> QScriptValue(0x43211234)");
+ equals.insert("engine->newArray() <=> QScriptValue(0x10000)");
+ equals.insert("engine->newArray() <=> QScriptValue(0x10001)");
+ equals.insert("engine->newArray() <=> QScriptValue(qInf())");
+ equals.insert("engine->newArray() <=> QScriptValue(\"NaN\")");
+ equals.insert("engine->newArray() <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->newArray() <=> QScriptValue(\"-Infinity\")");
+ equals.insert("engine->newArray() <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->newArray() <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(0, true)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, int(122))");
+ equals.insert("engine->newArray() <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->newArray() <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->newArray() <=> QScriptValue(0, qInf())");
+ equals.insert("engine->newArray() <=> QScriptValue(0, \"NaN\")");
+ equals.insert("engine->newArray() <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->newArray() <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("engine->newArray() <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->newArray() <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, true)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->newArray() <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"/foo/\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"True\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"False\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"true\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"122\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"124\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->newArray() <=> engine->newObject()");
+ equals.insert("engine->newArray() <=> engine->newArray(10)");
+ equals.insert("engine->newArray() <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->newArray() <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->newArray() <=> engine->newQObject(engine)");
+ equals.insert("engine->newArray(10) <=> QScriptValue(\"NaN\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(\"-Infinity\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(QString(\"0\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, \"NaN\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, \"-Infinity\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, QString(\"0\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, \"NaN\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, \"-Infinity\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, QString(\"0\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->newArray(10) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Error.prototype\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"/foo/\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"new Error()\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"True\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"False\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"'0'\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->newArray(10) <=> engine->newObject()");
+ equals.insert("engine->newArray(10) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
+ equals.insert("engine->newArray(10) <=> engine->newQObject(engine)");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(uint(124))");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0x43211234)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0x10000)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0x10001)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(qInf())");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, qInf())");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->newVariant(QVariant(123)) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"124\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(true)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(int(122))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(uint(124))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(123.0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0x43211234)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0x10000)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0x10001)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(qInf())");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, true)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, int(122))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, qInf())");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, true)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"true\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"122\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"124\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(true)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(int(122))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(uint(124))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(123.0)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(6.37e-8)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0x43211234)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0x10000)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0x10001)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(qInf())");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(\"Infinity\")");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(QString(\"123\"))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(QString(\"12.4\"))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, true)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, int(122))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, uint(124))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, 123.0)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, 6.37e-8)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, 0x43211234)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, 0x10000)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, 0x10001)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, qInf())");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, \"Infinity\")");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, QString(\"123\"))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(0, QString(\"12.3\"))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, true)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, int(122))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, uint(124))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, 123.0)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, 6.37e-8)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, 0x43211234)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, 0x10000)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, 0x10001)");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, qInf())");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, \"Infinity\")");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, QString(\"123\"))");
+ equals.insert("engine->newQObject(0) <=> QScriptValue(engine, QString(\"1.23\"))");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"true\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"122\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"124\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"123.0\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"6.37e-8\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"0x43211234\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"0x10000\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"0x10001\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"Infinity\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"'123'\")");
+ equals.insert("engine->newQObject(0) <=> engine->evaluate(\"'12.4'\")");
+ equals.insert("engine->newQObject(0) <=> engine->newVariant(QVariant(123))");
+ equals.insert("engine->newQObject(engine) <=> QScriptValue(\"ciao\")");
+ equals.insert("engine->newQObject(engine) <=> QScriptValue(QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newQObject(engine) <=> QScriptValue(0, \"ciao\")");
+ equals.insert("engine->newQObject(engine) <=> QScriptValue(0, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newQObject(engine) <=> QScriptValue(engine, \"ciao\")");
+ equals.insert("engine->newQObject(engine) <=> QScriptValue(engine, QString::fromLatin1(\"ciao\"))");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Object.prototype\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Function.prototype\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Number\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Function\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"(function() { return 1; })\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"(function() { return 'ciao'; })\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"(function() { throw new Error('foo'); })\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"new Object()\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Undefined\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Null\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"True\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"False\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"'ciao'\")");
+ equals.insert("engine->newQObject(engine) <=> engine->newObject()");
+ equals.insert("engine->newQObject(engine) <=> engine->newQMetaObject(&QObject::staticMetaObject)");
}
QHash<QString, QScriptValue>::const_iterator it;
for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
@@ -5702,6 +9182,21 @@ void tst_QScriptValue::instanceOf_makeData(const char *expr)
equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Object\")");
equals.insert("engine->evaluate(\"new Array()\") <=> engine->evaluate(\"Array\")");
equals.insert("engine->evaluate(\"new Error()\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Undefined\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"Null\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"True\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->evaluate(\"False\") <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newObject() <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newArray() <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newArray(10) <=> engine->evaluate(\"Array\")");
+ equals.insert("engine->newDate(QDateTime()) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newQMetaObject(&QObject::staticMetaObject) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newVariant(QVariant()) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newVariant(QVariant(123)) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newVariant(QVariant(false)) <=> engine->evaluate(\"Object\")");
+ equals.insert("engine->newQObject(engine) <=> engine->evaluate(\"Object\")");
}
QHash<QString, QScriptValue>::const_iterator it;
for (it = m_values.constBegin(); it != m_values.constEnd(); ++it) {
@@ -5833,8 +9328,45 @@ void tst_QScriptValue::qscriptvalue_castQString_makeData(const char* expr)
value.insert("engine->evaluate(\"new Object()\")", "[object Object]");
value.insert("engine->evaluate(\"new Array()\")", "");
value.insert("engine->evaluate(\"new Error()\")", "Error: Unknown error");
+ value.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", "22");
+ value.insert("engine->evaluate(\"Undefined\")", "ReferenceError: Can't find variable: Undefined");
+ value.insert("engine->evaluate(\"Null\")", "ReferenceError: Can't find variable: Null");
+ value.insert("engine->evaluate(\"True\")", "ReferenceError: Can't find variable: True");
+ value.insert("engine->evaluate(\"False\")", "ReferenceError: Can't find variable: False");
+ value.insert("engine->evaluate(\"undefined\")", "");
+ value.insert("engine->evaluate(\"null\")", "");
+ value.insert("engine->evaluate(\"true\")", "true");
+ value.insert("engine->evaluate(\"false\")", "false");
+ value.insert("engine->evaluate(\"122\")", "122");
+ value.insert("engine->evaluate(\"124\")", "124");
+ value.insert("engine->evaluate(\"0\")", "0");
+ value.insert("engine->evaluate(\"0.0\")", "0");
+ value.insert("engine->evaluate(\"123.0\")", "123");
+ value.insert("engine->evaluate(\"6.37e-8\")", "6.37e-8");
+ value.insert("engine->evaluate(\"-6.37e-8\")", "-6.37e-8");
+ value.insert("engine->evaluate(\"0x43211234\")", "1126240820");
+ value.insert("engine->evaluate(\"0x10000\")", "65536");
+ value.insert("engine->evaluate(\"0x10001\")", "65537");
+ value.insert("engine->evaluate(\"NaN\")", "NaN");
+ value.insert("engine->evaluate(\"Infinity\")", "Infinity");
+ value.insert("engine->evaluate(\"-Infinity\")", "-Infinity");
+ value.insert("engine->evaluate(\"'ciao'\")", "ciao");
+ value.insert("engine->evaluate(\"''\")", "");
+ value.insert("engine->evaluate(\"'0'\")", "0");
+ value.insert("engine->evaluate(\"'123'\")", "123");
+ value.insert("engine->evaluate(\"'12.4'\")", "12.4");
value.insert("engine->nullValue()", "");
value.insert("engine->undefinedValue()", "");
+ value.insert("engine->newObject()", "[object Object]");
+ value.insert("engine->newArray()", "");
+ value.insert("engine->newArray(10)", ",,,,,,,,,");
+ value.insert("engine->newDate(QDateTime())", "Invalid Date");
+ value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", "[object QMetaObject]");
+ value.insert("engine->newVariant(QVariant())", "undefined");
+ value.insert("engine->newVariant(QVariant(123))", "123");
+ value.insert("engine->newVariant(QVariant(false))", "false");
+ value.insert("engine->newQObject(0)", "");
+ value.insert("engine->newQObject(engine)", "QScriptEngine(name = \"\")");
}
newRow(expr) << value.value(expr);
}
@@ -5843,6 +9375,7 @@ void tst_QScriptValue::qscriptvalue_castQString_test(const char*, const QScriptV
{
QFETCH(QString, expected);
QCOMPARE(qscriptvalue_cast<QString>(value), expected);
+ QCOMPARE(qscriptvalue_cast<QString>(value), expected);
}
DEFINE_TEST_FUNCTION(qscriptvalue_castQString)
@@ -5961,8 +9494,45 @@ void tst_QScriptValue::qscriptvalue_castqsreal_makeData(const char* expr)
value.insert("engine->evaluate(\"new Object()\")", qQNaN());
value.insert("engine->evaluate(\"new Array()\")", 0);
value.insert("engine->evaluate(\"new Error()\")", qQNaN());
+ value.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ value.insert("engine->evaluate(\"Undefined\")", qQNaN());
+ value.insert("engine->evaluate(\"Null\")", qQNaN());
+ value.insert("engine->evaluate(\"True\")", qQNaN());
+ value.insert("engine->evaluate(\"False\")", qQNaN());
+ value.insert("engine->evaluate(\"undefined\")", qQNaN());
+ value.insert("engine->evaluate(\"null\")", 0);
+ value.insert("engine->evaluate(\"true\")", 1);
+ value.insert("engine->evaluate(\"false\")", 0);
+ value.insert("engine->evaluate(\"122\")", 122);
+ value.insert("engine->evaluate(\"124\")", 124);
+ value.insert("engine->evaluate(\"0\")", 0);
+ value.insert("engine->evaluate(\"0.0\")", 0);
+ value.insert("engine->evaluate(\"123.0\")", 123);
+ value.insert("engine->evaluate(\"6.37e-8\")", 6.369999999999999e-08);
+ value.insert("engine->evaluate(\"-6.37e-8\")", -6.369999999999999e-08);
+ value.insert("engine->evaluate(\"0x43211234\")", 1126240820);
+ value.insert("engine->evaluate(\"0x10000\")", 65536);
+ value.insert("engine->evaluate(\"0x10001\")", 65537);
+ value.insert("engine->evaluate(\"NaN\")", qQNaN());
+ value.insert("engine->evaluate(\"Infinity\")", qInf());
+ value.insert("engine->evaluate(\"-Infinity\")", qInf());
+ value.insert("engine->evaluate(\"'ciao'\")", qQNaN());
+ value.insert("engine->evaluate(\"''\")", 0);
+ value.insert("engine->evaluate(\"'0'\")", 0);
+ value.insert("engine->evaluate(\"'123'\")", 123);
+ value.insert("engine->evaluate(\"'12.4'\")", 12.4);
value.insert("engine->nullValue()", 0);
value.insert("engine->undefinedValue()", qQNaN());
+ value.insert("engine->newObject()", qQNaN());
+ value.insert("engine->newArray()", 0);
+ value.insert("engine->newArray(10)", qQNaN());
+ value.insert("engine->newDate(QDateTime())", qQNaN());
+ value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", qQNaN());
+ value.insert("engine->newVariant(QVariant())", qQNaN());
+ value.insert("engine->newVariant(QVariant(123))", 123);
+ value.insert("engine->newVariant(QVariant(false))", 0);
+ value.insert("engine->newQObject(0)", 0);
+ value.insert("engine->newQObject(engine)", qQNaN());
}
newRow(expr) << value.value(expr);
}
@@ -5972,13 +9542,16 @@ void tst_QScriptValue::qscriptvalue_castqsreal_test(const char*, const QScriptVa
QFETCH(qsreal, expected);
if (qIsNaN(expected)) {
QVERIFY(qIsNaN(qscriptvalue_cast<qsreal>(value)));
+ QVERIFY(qIsNaN(qscriptvalue_cast<qsreal>(value)));
return;
}
if (qIsInf(expected)) {
QVERIFY(qIsInf(qscriptvalue_cast<qsreal>(value)));
+ QVERIFY(qIsInf(qscriptvalue_cast<qsreal>(value)));
return;
}
QCOMPARE(qscriptvalue_cast<qsreal>(value), expected);
+ QCOMPARE(qscriptvalue_cast<qsreal>(value), expected);
}
DEFINE_TEST_FUNCTION(qscriptvalue_castqsreal)
@@ -6097,8 +9670,45 @@ void tst_QScriptValue::qscriptvalue_castbool_makeData(const char* expr)
value.insert("engine->evaluate(\"new Object()\")", true);
value.insert("engine->evaluate(\"new Array()\")", true);
value.insert("engine->evaluate(\"new Error()\")", true);
+ value.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", true);
+ value.insert("engine->evaluate(\"Undefined\")", true);
+ value.insert("engine->evaluate(\"Null\")", true);
+ value.insert("engine->evaluate(\"True\")", true);
+ value.insert("engine->evaluate(\"False\")", true);
+ value.insert("engine->evaluate(\"undefined\")", false);
+ value.insert("engine->evaluate(\"null\")", false);
+ value.insert("engine->evaluate(\"true\")", true);
+ value.insert("engine->evaluate(\"false\")", false);
+ value.insert("engine->evaluate(\"122\")", true);
+ value.insert("engine->evaluate(\"124\")", true);
+ value.insert("engine->evaluate(\"0\")", false);
+ value.insert("engine->evaluate(\"0.0\")", false);
+ value.insert("engine->evaluate(\"123.0\")", true);
+ value.insert("engine->evaluate(\"6.37e-8\")", true);
+ value.insert("engine->evaluate(\"-6.37e-8\")", true);
+ value.insert("engine->evaluate(\"0x43211234\")", true);
+ value.insert("engine->evaluate(\"0x10000\")", true);
+ value.insert("engine->evaluate(\"0x10001\")", true);
+ value.insert("engine->evaluate(\"NaN\")", false);
+ value.insert("engine->evaluate(\"Infinity\")", true);
+ value.insert("engine->evaluate(\"-Infinity\")", true);
+ value.insert("engine->evaluate(\"'ciao'\")", true);
+ value.insert("engine->evaluate(\"''\")", false);
+ value.insert("engine->evaluate(\"'0'\")", true);
+ value.insert("engine->evaluate(\"'123'\")", true);
+ value.insert("engine->evaluate(\"'12.4'\")", true);
value.insert("engine->nullValue()", false);
value.insert("engine->undefinedValue()", false);
+ value.insert("engine->newObject()", true);
+ value.insert("engine->newArray()", true);
+ value.insert("engine->newArray(10)", true);
+ value.insert("engine->newDate(QDateTime())", true);
+ value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", true);
+ value.insert("engine->newVariant(QVariant())", true);
+ value.insert("engine->newVariant(QVariant(123))", true);
+ value.insert("engine->newVariant(QVariant(false))", true);
+ value.insert("engine->newQObject(0)", false);
+ value.insert("engine->newQObject(engine)", true);
}
newRow(expr) << value.value(expr);
}
@@ -6107,6 +9717,7 @@ void tst_QScriptValue::qscriptvalue_castbool_test(const char*, const QScriptValu
{
QFETCH(bool, expected);
QCOMPARE(qscriptvalue_cast<bool>(value), expected);
+ QCOMPARE(qscriptvalue_cast<bool>(value), expected);
}
DEFINE_TEST_FUNCTION(qscriptvalue_castbool)
@@ -6225,8 +9836,45 @@ void tst_QScriptValue::qscriptvalue_castqint32_makeData(const char* expr)
value.insert("engine->evaluate(\"new Object()\")", 0);
value.insert("engine->evaluate(\"new Array()\")", 0);
value.insert("engine->evaluate(\"new Error()\")", 0);
+ value.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ value.insert("engine->evaluate(\"Undefined\")", 0);
+ value.insert("engine->evaluate(\"Null\")", 0);
+ value.insert("engine->evaluate(\"True\")", 0);
+ value.insert("engine->evaluate(\"False\")", 0);
+ value.insert("engine->evaluate(\"undefined\")", 0);
+ value.insert("engine->evaluate(\"null\")", 0);
+ value.insert("engine->evaluate(\"true\")", 1);
+ value.insert("engine->evaluate(\"false\")", 0);
+ value.insert("engine->evaluate(\"122\")", 122);
+ value.insert("engine->evaluate(\"124\")", 124);
+ value.insert("engine->evaluate(\"0\")", 0);
+ value.insert("engine->evaluate(\"0.0\")", 0);
+ value.insert("engine->evaluate(\"123.0\")", 123);
+ value.insert("engine->evaluate(\"6.37e-8\")", 0);
+ value.insert("engine->evaluate(\"-6.37e-8\")", 0);
+ value.insert("engine->evaluate(\"0x43211234\")", 1126240820);
+ value.insert("engine->evaluate(\"0x10000\")", 65536);
+ value.insert("engine->evaluate(\"0x10001\")", 65537);
+ value.insert("engine->evaluate(\"NaN\")", 0);
+ value.insert("engine->evaluate(\"Infinity\")", 0);
+ value.insert("engine->evaluate(\"-Infinity\")", 0);
+ value.insert("engine->evaluate(\"'ciao'\")", 0);
+ value.insert("engine->evaluate(\"''\")", 0);
+ value.insert("engine->evaluate(\"'0'\")", 0);
+ value.insert("engine->evaluate(\"'123'\")", 123);
+ value.insert("engine->evaluate(\"'12.4'\")", 12);
value.insert("engine->nullValue()", 0);
value.insert("engine->undefinedValue()", 0);
+ value.insert("engine->newObject()", 0);
+ value.insert("engine->newArray()", 0);
+ value.insert("engine->newArray(10)", 0);
+ value.insert("engine->newDate(QDateTime())", 0);
+ value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0);
+ value.insert("engine->newVariant(QVariant())", 0);
+ value.insert("engine->newVariant(QVariant(123))", 123);
+ value.insert("engine->newVariant(QVariant(false))", 0);
+ value.insert("engine->newQObject(0)", 0);
+ value.insert("engine->newQObject(engine)", 0);
}
newRow(expr) << value.value(expr);
}
@@ -6235,6 +9883,7 @@ void tst_QScriptValue::qscriptvalue_castqint32_test(const char*, const QScriptVa
{
QFETCH(qint32, expected);
QCOMPARE(qscriptvalue_cast<qint32>(value), expected);
+ QCOMPARE(qscriptvalue_cast<qint32>(value), expected);
}
DEFINE_TEST_FUNCTION(qscriptvalue_castqint32)
@@ -6353,8 +10002,45 @@ void tst_QScriptValue::qscriptvalue_castquint32_makeData(const char* expr)
value.insert("engine->evaluate(\"new Object()\")", 0);
value.insert("engine->evaluate(\"new Array()\")", 0);
value.insert("engine->evaluate(\"new Error()\")", 0);
+ value.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ value.insert("engine->evaluate(\"Undefined\")", 0);
+ value.insert("engine->evaluate(\"Null\")", 0);
+ value.insert("engine->evaluate(\"True\")", 0);
+ value.insert("engine->evaluate(\"False\")", 0);
+ value.insert("engine->evaluate(\"undefined\")", 0);
+ value.insert("engine->evaluate(\"null\")", 0);
+ value.insert("engine->evaluate(\"true\")", 1);
+ value.insert("engine->evaluate(\"false\")", 0);
+ value.insert("engine->evaluate(\"122\")", 122);
+ value.insert("engine->evaluate(\"124\")", 124);
+ value.insert("engine->evaluate(\"0\")", 0);
+ value.insert("engine->evaluate(\"0.0\")", 0);
+ value.insert("engine->evaluate(\"123.0\")", 123);
+ value.insert("engine->evaluate(\"6.37e-8\")", 0);
+ value.insert("engine->evaluate(\"-6.37e-8\")", 0);
+ value.insert("engine->evaluate(\"0x43211234\")", 1126240820);
+ value.insert("engine->evaluate(\"0x10000\")", 65536);
+ value.insert("engine->evaluate(\"0x10001\")", 65537);
+ value.insert("engine->evaluate(\"NaN\")", 0);
+ value.insert("engine->evaluate(\"Infinity\")", 0);
+ value.insert("engine->evaluate(\"-Infinity\")", 0);
+ value.insert("engine->evaluate(\"'ciao'\")", 0);
+ value.insert("engine->evaluate(\"''\")", 0);
+ value.insert("engine->evaluate(\"'0'\")", 0);
+ value.insert("engine->evaluate(\"'123'\")", 123);
+ value.insert("engine->evaluate(\"'12.4'\")", 12);
value.insert("engine->nullValue()", 0);
value.insert("engine->undefinedValue()", 0);
+ value.insert("engine->newObject()", 0);
+ value.insert("engine->newArray()", 0);
+ value.insert("engine->newArray(10)", 0);
+ value.insert("engine->newDate(QDateTime())", 0);
+ value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0);
+ value.insert("engine->newVariant(QVariant())", 0);
+ value.insert("engine->newVariant(QVariant(123))", 123);
+ value.insert("engine->newVariant(QVariant(false))", 0);
+ value.insert("engine->newQObject(0)", 0);
+ value.insert("engine->newQObject(engine)", 0);
}
newRow(expr) << value.value(expr);
}
@@ -6363,6 +10049,7 @@ void tst_QScriptValue::qscriptvalue_castquint32_test(const char*, const QScriptV
{
QFETCH(quint32, expected);
QCOMPARE(qscriptvalue_cast<quint32>(value), expected);
+ QCOMPARE(qscriptvalue_cast<quint32>(value), expected);
}
DEFINE_TEST_FUNCTION(qscriptvalue_castquint32)
@@ -6481,8 +10168,45 @@ void tst_QScriptValue::qscriptvalue_castquint16_makeData(const char* expr)
value.insert("engine->evaluate(\"new Object()\")", 0);
value.insert("engine->evaluate(\"new Array()\")", 0);
value.insert("engine->evaluate(\"new Error()\")", 0);
+ value.insert("engine->evaluate(\"a = new Object(); a.foo = 22; a.foo\")", 22);
+ value.insert("engine->evaluate(\"Undefined\")", 0);
+ value.insert("engine->evaluate(\"Null\")", 0);
+ value.insert("engine->evaluate(\"True\")", 0);
+ value.insert("engine->evaluate(\"False\")", 0);
+ value.insert("engine->evaluate(\"undefined\")", 0);
+ value.insert("engine->evaluate(\"null\")", 0);
+ value.insert("engine->evaluate(\"true\")", 1);
+ value.insert("engine->evaluate(\"false\")", 0);
+ value.insert("engine->evaluate(\"122\")", 122);
+ value.insert("engine->evaluate(\"124\")", 124);
+ value.insert("engine->evaluate(\"0\")", 0);
+ value.insert("engine->evaluate(\"0.0\")", 0);
+ value.insert("engine->evaluate(\"123.0\")", 123);
+ value.insert("engine->evaluate(\"6.37e-8\")", 0);
+ value.insert("engine->evaluate(\"-6.37e-8\")", 0);
+ value.insert("engine->evaluate(\"0x43211234\")", 4660);
+ value.insert("engine->evaluate(\"0x10000\")", 0);
+ value.insert("engine->evaluate(\"0x10001\")", 1);
+ value.insert("engine->evaluate(\"NaN\")", 0);
+ value.insert("engine->evaluate(\"Infinity\")", 0);
+ value.insert("engine->evaluate(\"-Infinity\")", 0);
+ value.insert("engine->evaluate(\"'ciao'\")", 0);
+ value.insert("engine->evaluate(\"''\")", 0);
+ value.insert("engine->evaluate(\"'0'\")", 0);
+ value.insert("engine->evaluate(\"'123'\")", 123);
+ value.insert("engine->evaluate(\"'12.4'\")", 12);
value.insert("engine->nullValue()", 0);
value.insert("engine->undefinedValue()", 0);
+ value.insert("engine->newObject()", 0);
+ value.insert("engine->newArray()", 0);
+ value.insert("engine->newArray(10)", 0);
+ value.insert("engine->newDate(QDateTime())", 0);
+ value.insert("engine->newQMetaObject(&QObject::staticMetaObject)", 0);
+ value.insert("engine->newVariant(QVariant())", 0);
+ value.insert("engine->newVariant(QVariant(123))", 123);
+ value.insert("engine->newVariant(QVariant(false))", 0);
+ value.insert("engine->newQObject(0)", 0);
+ value.insert("engine->newQObject(engine)", 0);
}
newRow(expr) << value.value(expr);
}
@@ -6491,6 +10215,7 @@ void tst_QScriptValue::qscriptvalue_castquint16_test(const char*, const QScriptV
{
QFETCH(quint16, expected);
QCOMPARE(qscriptvalue_cast<quint16>(value), expected);
+ QCOMPARE(qscriptvalue_cast<quint16>(value), expected);
}
DEFINE_TEST_FUNCTION(qscriptvalue_castquint16)
diff --git a/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp b/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
index 5b2b0cf..56eaf25 100644
--- a/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
+++ b/tests/auto/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
@@ -137,6 +137,7 @@ private slots:
void task255652_removeRowsRecursive();
void taskQTBUG_6205_doubleProxySelectionSetSourceModel();
void taskQTBUG_7537_appearsAndSort();
+ void taskQTBUG_7716_unnecessaryDynamicSorting();
protected:
void buildHierarchy(const QStringList &data, QAbstractItemModel *model);
@@ -918,15 +919,16 @@ void tst_QSortFilterProxyModel::removeRows()
QStandardItemModel model;
QSortFilterProxyModel proxy;
proxy.setSourceModel(&model);
- if (sortOrder != -1)
- proxy.sort(0, static_cast<Qt::SortOrder>(sortOrder));
- if (!filter.isEmpty())
- proxy.setFilterRegExp(QRegExp(filter));
// prepare model
foreach (QString s, initial)
model.appendRow(new QStandardItem(s));
+ if (sortOrder != -1)
+ proxy.sort(0, static_cast<Qt::SortOrder>(sortOrder));
+ if (!filter.isEmpty())
+ proxy.setFilterRegExp(QRegExp(filter));
+
// remove the rows
QCOMPARE(proxy.removeRows(position, count, QModelIndex()), success);
QCOMPARE(model.rowCount(QModelIndex()), expectedSource.count());
@@ -2419,6 +2421,7 @@ void tst_QSortFilterProxyModel::sortColumnTracking2()
{
QStandardItemModel model;
QSortFilterProxyModel proxyModel;
+ proxyModel.setDynamicSortFilter(true);
proxyModel.setSourceModel(&model);
proxyModel.sort(0);
@@ -2921,5 +2924,32 @@ void tst_QSortFilterProxyModel::taskQTBUG_7537_appearsAndSort()
QCOMPARE(spyChanged2.count(), 1);
}
+void tst_QSortFilterProxyModel::taskQTBUG_7716_unnecessaryDynamicSorting()
+{
+ QStringListModel model;
+ const QStringList initial = QString("bravo charlie delta echo").split(" ");
+ model.setStringList(initial);
+ QSortFilterProxyModel proxy;
+ proxy.setDynamicSortFilter(false);
+ proxy.setSourceModel(&model);
+ proxy.sort(Qt::AscendingOrder);
+
+ //append two rows
+ int maxrows = proxy.rowCount(QModelIndex());
+ model.insertRows(maxrows, 2);
+ model.setData(model.index(maxrows, 0), QString("alpha"));
+ model.setData(model.index(maxrows + 1, 0), QString("fondue"));
+
+ //append new items to the initial string list and compare with model
+ QStringList expected = initial;
+ expected << QString("alpha") << QString("fondue");
+
+ //if bug 7716 is present, new rows were prepended, when they should have been appended
+ for (int row = 0; row < proxy.rowCount(QModelIndex()); ++row) {
+ QModelIndex index = proxy.index(row, 0, QModelIndex());
+ QCOMPARE(proxy.data(index, Qt::DisplayRole).toString(), expected.at(row));
+ }
+}
+
QTEST_MAIN(tst_QSortFilterProxyModel)
#include "tst_qsortfilterproxymodel.moc"
diff --git a/tests/auto/qstatictext/qstatictext.pro b/tests/auto/qstatictext/qstatictext.pro
index a759a90..0f1ca68 100644
--- a/tests/auto/qstatictext/qstatictext.pro
+++ b/tests/auto/qstatictext/qstatictext.pro
@@ -1,4 +1,4 @@
load(qttest_p4)
-QT = core gui opengl
+QT = core gui
SOURCES += tst_qstatictext.cpp
diff --git a/tests/auto/qstatictext/tst_qstatictext.cpp b/tests/auto/qstatictext/tst_qstatictext.cpp
index 68f05c1..16832ad 100644
--- a/tests/auto/qstatictext/tst_qstatictext.cpp
+++ b/tests/auto/qstatictext/tst_qstatictext.cpp
@@ -45,13 +45,20 @@
#include <QtGui/QImage>
#include <qstatictext.h>
+#include <qpaintengine.h>
+
#include <private/qstatictext_p.h>
+#include <private/qapplication_p.h>
// #define DEBUG_SAVE_IMAGE
class tst_QStaticText: public QObject
{
Q_OBJECT
+
+private:
+ bool supportsTransformations() const;
+
private slots:
void init();
void cleanup();
@@ -177,6 +184,8 @@ void tst_QStaticText::prepareToCorrectData()
p.drawStaticText(QPointF(11, 12), text);
}
+ if (!supportsTransformations())
+ QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
QCOMPARE(imageDrawStaticText, imageDrawText);
}
@@ -288,6 +297,25 @@ void tst_QStaticText::translatedPainter()
QCOMPARE(imageDrawStaticText, imageDrawText);
}
+bool tst_QStaticText::supportsTransformations() const
+{
+ QPixmap pm(10, 10);
+ QPainter p(&pm);
+ QPaintEngine *engine = p.paintEngine();
+
+ QPaintEngine::Type type = engine->type();
+
+ if (type == QPaintEngine::OpenGL2
+ || type == QPaintEngine::OpenGL
+#if !defined Q_WS_WIN
+ || type == QPaintEngine::Raster
+#endif
+ )
+ return false;
+
+ return true;
+}
+
void tst_QStaticText::rotatedPainter()
{
QPixmap imageDrawText(1000, 1000);
@@ -314,6 +342,8 @@ void tst_QStaticText::rotatedPainter()
imageDrawStaticText.save("rotatedPainter_imageDrawStaticText.png");
#endif
+ if (!supportsTransformations())
+ QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
QCOMPARE(imageDrawStaticText, imageDrawText);
}
@@ -340,6 +370,8 @@ void tst_QStaticText::scaledPainter()
p.drawStaticText(QPointF(11, 12), text);
}
+ if (!supportsTransformations())
+ QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
QCOMPARE(imageDrawStaticText, imageDrawText);
}
@@ -370,7 +402,6 @@ void tst_QStaticText::projectedPainter()
}
QCOMPARE(imageDrawStaticText, imageDrawText);
-
}
void tst_QStaticText::rotatedScaledAndTranslatedPainter()
@@ -405,6 +436,8 @@ void tst_QStaticText::rotatedScaledAndTranslatedPainter()
imageDrawStaticText.save("rotatedScaledAndPainter_imageDrawStaticText.png");
#endif
+ if (!supportsTransformations())
+ QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
QCOMPARE(imageDrawStaticText, imageDrawText);
}
@@ -444,6 +477,8 @@ void tst_QStaticText::transformationChanged()
imageDrawStaticText.save("transformationChanged_imageDrawStaticText.png");
#endif
+ if (!supportsTransformations())
+ QEXPECT_FAIL("", "Graphics system does not support transformed text on this platform", Abort);
QCOMPARE(imageDrawStaticText, imageDrawText);
}
diff --git a/tests/auto/qstring/tst_qstring.cpp b/tests/auto/qstring/tst_qstring.cpp
index 9c9524a..dc37c42 100644
--- a/tests/auto/qstring/tst_qstring.cpp
+++ b/tests/auto/qstring/tst_qstring.cpp
@@ -165,6 +165,10 @@ private slots:
void fromLocal8Bit();
void local8Bit_data();
void local8Bit();
+ void fromLatin1Roundtrip_data();
+ void fromLatin1Roundtrip();
+ void toLatin1Roundtrip_data();
+ void toLatin1Roundtrip();
void fromLatin1();
void fromAscii();
void arg();
@@ -3224,6 +3228,109 @@ void tst_QString::local8Bit()
QCOMPARE(local8Bit.toLocal8Bit(), QByteArray(result));
}
+void tst_QString::fromLatin1Roundtrip_data()
+{
+ QTest::addColumn<QByteArray>("latin1");
+ QTest::addColumn<QString>("unicode");
+
+ QTest::newRow("null") << QByteArray() << QString();
+ QTest::newRow("empty") << QByteArray("") << "";
+
+ static const ushort unicode1[] = { 'H', 'e', 'l', 'l', 'o', 1, '\r', '\n', 0x7f };
+ QTest::newRow("ascii-only") << QByteArray("Hello") << QString::fromUtf16(unicode1, 5);
+ QTest::newRow("ascii+control") << QByteArray("Hello\1\r\n\x7f") << QString::fromUtf16(unicode1, 9);
+
+ static const ushort unicode3[] = { 'a', 0, 'z' };
+ QTest::newRow("ascii+nul") << QByteArray("a\0z", 3) << QString::fromUtf16(unicode3, 3);
+
+ static const ushort unicode4[] = { 0x80, 0xc0, 0xff };
+ QTest::newRow("non-ascii") << QByteArray("\x80\xc0\xff") << QString::fromUtf16(unicode4, 3);
+}
+
+void tst_QString::fromLatin1Roundtrip()
+{
+ QFETCH(QByteArray, latin1);
+ QFETCH(QString, unicode);
+
+ // QtTest safety check:
+ Q_ASSERT(latin1.isNull() == unicode.isNull());
+ Q_ASSERT(latin1.isEmpty() == unicode.isEmpty());
+ Q_ASSERT(latin1.length() == unicode.length());
+
+ if (!latin1.isEmpty())
+ while (latin1.length() < 128) {
+ latin1 += latin1;
+ unicode += unicode;
+ }
+
+ // fromLatin1
+ QCOMPARE(QString::fromLatin1(latin1, latin1.length()).length(), unicode.length());
+ QCOMPARE(QString::fromLatin1(latin1, latin1.length()), unicode);
+
+ // and back:
+ QCOMPARE(unicode.toLatin1().length(), latin1.length());
+ QCOMPARE(unicode.toLatin1(), latin1);
+}
+
+void tst_QString::toLatin1Roundtrip_data()
+{
+ QTest::addColumn<QByteArray>("latin1");
+ QTest::addColumn<QString>("unicodesrc");
+ QTest::addColumn<QString>("unicodedst");
+
+ QTest::newRow("null") << QByteArray() << QString() << QString();
+ QTest::newRow("empty") << QByteArray("") << "" << "";
+
+ static const ushort unicode1[] = { 'H', 'e', 'l', 'l', 'o', 1, '\r', '\n', 0x7f };
+ QTest::newRow("ascii-only") << QByteArray("Hello") << QString::fromUtf16(unicode1, 5) << QString::fromUtf16(unicode1, 5);
+ QTest::newRow("ascii+control") << QByteArray("Hello\1\r\n\x7f") << QString::fromUtf16(unicode1, 9) << QString::fromUtf16(unicode1, 9);
+
+ static const ushort unicode3[] = { 'a', 0, 'z' };
+ QTest::newRow("ascii+nul") << QByteArray("a\0z", 3) << QString::fromUtf16(unicode3, 3) << QString::fromUtf16(unicode3, 3);
+
+ static const ushort unicode4[] = { 0x80, 0xc0, 0xff };
+ QTest::newRow("non-ascii") << QByteArray("\x80\xc0\xff") << QString::fromUtf16(unicode4, 3) << QString::fromUtf16(unicode4, 3);
+
+ static const ushort unicodeq[] = { '?', '?', '?', '?', '?' };
+ const QString questionmarks = QString::fromUtf16(unicodeq, 5);
+
+ static const ushort unicode5[] = { 0x100, 0x101, 0x17f, 0x7f00, 0x7f7f };
+ QTest::newRow("non-latin1a") << QByteArray("?????") << QString::fromUtf16(unicode5, 5) << questionmarks;
+
+ static const ushort unicode6[] = { 0x180, 0x1ff, 0x8001, 0x8080, 0xfffc };
+ QTest::newRow("non-latin1b") << QByteArray("?????") << QString::fromUtf16(unicode6, 5) << questionmarks;
+}
+
+void tst_QString::toLatin1Roundtrip()
+{
+ QFETCH(QByteArray, latin1);
+ QFETCH(QString, unicodesrc);
+ QFETCH(QString, unicodedst);
+
+ // QtTest safety check:
+ Q_ASSERT(latin1.isNull() == unicodesrc.isNull());
+ Q_ASSERT(latin1.isEmpty() == unicodesrc.isEmpty());
+ Q_ASSERT(latin1.length() == unicodesrc.length());
+ Q_ASSERT(latin1.isNull() == unicodedst.isNull());
+ Q_ASSERT(latin1.isEmpty() == unicodedst.isEmpty());
+ Q_ASSERT(latin1.length() == unicodedst.length());
+
+ if (!latin1.isEmpty())
+ while (latin1.length() < 128) {
+ latin1 += latin1;
+ unicodesrc += unicodesrc;
+ unicodedst += unicodedst;
+ }
+
+ // toLatin1
+ QCOMPARE(unicodesrc.toLatin1().length(), latin1.length());
+ QCOMPARE(unicodesrc.toLatin1(), latin1);
+
+ // and back:
+ QCOMPARE(QString::fromLatin1(latin1, latin1.length()).length(), unicodedst.length());
+ QCOMPARE(QString::fromLatin1(latin1, latin1.length()), unicodedst);
+}
+
void tst_QString::fromLatin1()
{
QString a;
diff --git a/tests/auto/qstringbuilder1/stringbuilder.cpp b/tests/auto/qstringbuilder1/stringbuilder.cpp
index 8e95818..e9ae7a6 100644
--- a/tests/auto/qstringbuilder1/stringbuilder.cpp
+++ b/tests/auto/qstringbuilder1/stringbuilder.cpp
@@ -44,6 +44,14 @@
// "some literal", but replacing all vocals by their umlauted UTF-8 string :)
#define UTF8_LITERAL "s\xc3\xb6m\xc3\xab l\xc3\xaft\xc3\xabr\xc3\xa4l"
+
+//fix for gcc4.0: if the operator+ does not exist without QT_USE_FAST_OPERATOR_PLUS
+#ifndef QT_USE_FAST_CONCATENATION
+#define Q %
+#else
+#define Q P
+#endif
+
void runScenario()
{
// set codec for C strings to 0, enforcing Latin1
@@ -59,13 +67,13 @@ void runScenario()
QString r;
QByteArray ba(LITERAL);
- r = l1literal P l1literal;
+ r = l1literal Q l1literal;
QCOMPARE(r, r2);
r = string P string;
QCOMPARE(r, r2);
- r = stringref P stringref;
+ r = stringref Q stringref;
QCOMPARE(r, QString(stringref.toString() + stringref.toString()));
- r = string P l1literal;
+ r = string Q l1literal;
QCOMPARE(r, r2);
r = string P l1string;
QCOMPARE(r, r2);
diff --git a/tests/auto/qtreeview/tst_qtreeview.cpp b/tests/auto/qtreeview/tst_qtreeview.cpp
index fd4815e..e39cf6c 100644
--- a/tests/auto/qtreeview/tst_qtreeview.cpp
+++ b/tests/auto/qtreeview/tst_qtreeview.cpp
@@ -3083,6 +3083,20 @@ void tst_QTreeView::styleOptionViewItem()
QApplication::processEvents();
QTRY_VERIFY(delegate.count >= 3);
QApplication::processEvents();
+
+ item00->setText("OnlyOne");
+ item0->insertRow(2, new QStandardItem("OnlyOne Last"));
+ view.collapse(item0->index());
+ item0->removeRow(0);
+ delegate.count = 0;
+ QTRY_VERIFY(delegate.count >= 2);
+ QApplication::processEvents();
+
+ item0->removeRow(1);
+ item0->setText("OnlyOne");
+ delegate.count = 0;
+ QTRY_VERIFY(delegate.count >= 2);
+ QApplication::processEvents();
}
}
diff --git a/tools/assistant/lib/qhelp_global.cpp b/tools/assistant/lib/qhelp_global.cpp
index d8a94d3..c2c916b 100644
--- a/tools/assistant/lib/qhelp_global.cpp
+++ b/tools/assistant/lib/qhelp_global.cpp
@@ -56,7 +56,7 @@ QString QHelpGlobal::uniquifyConnectionName(const QString &name, void *pointer)
counter = 0;
return QString::fromLatin1("%1-%2-%3").
- arg(name).arg(long(pointer)).arg(counter);
+ arg(name).arg(quintptr(pointer)).arg(counter);
}
QString QHelpGlobal::documentTitle(const QString &content)
diff --git a/tools/assistant/lib/qhelpdbreader.cpp b/tools/assistant/lib/qhelpdbreader.cpp
index 6dd949a..5c0f595 100644
--- a/tools/assistant/lib/qhelpdbreader.cpp
+++ b/tools/assistant/lib/qhelpdbreader.cpp
@@ -205,7 +205,7 @@ QByteArray QHelpDBReader::fileData(const QString &virtualFolder,
"NamespaceTable d WHERE a.Id=b.FileId AND (b.Name=? OR b.Name=?) AND b.FolderId=c.Id "
"AND c.Name=? AND c.NamespaceId=d.Id AND d.Name=?"));
m_query->bindValue(0, filePath);
- m_query->bindValue(1, QLatin1String("./") + filePath);
+ m_query->bindValue(1, QString(QLatin1String("./") + filePath));
m_query->bindValue(2, virtualFolder);
m_query->bindValue(3, m_namespace);
m_query->exec();
diff --git a/tools/qdoc3/codemarker.cpp b/tools/qdoc3/codemarker.cpp
index ee93080..15f2c2d 100644
--- a/tools/qdoc3/codemarker.cpp
+++ b/tools/qdoc3/codemarker.cpp
@@ -177,7 +177,7 @@ const Node *CodeMarker::nodeForString(const QString& string)
QString CodeMarker::stringForNode(const Node *node)
{
if (sizeof(const Node *) == sizeof(ulong)) {
- return QString::number(reinterpret_cast<ulong>(node));
+ return QString::number(reinterpret_cast<quintptr>(node));
}
else {
return QString::number(reinterpret_cast<qulonglong>(node));
diff --git a/tools/qdoc3/cppcodemarker.cpp b/tools/qdoc3/cppcodemarker.cpp
index 657cfbb..3ff6ebe 100644
--- a/tools/qdoc3/cppcodemarker.cpp
+++ b/tools/qdoc3/cppcodemarker.cpp
@@ -145,7 +145,7 @@ QString CppCodeMarker::plainFullName(const Node *node, const Node *relative)
}
else {
QString fullName;
- for (;;) {
+ while (node) {
fullName.prepend(plainName(node));
if (node->parent() == relative || node->parent()->name().isEmpty())
break;
diff --git a/tools/qdoc3/cppcodeparser.cpp b/tools/qdoc3/cppcodeparser.cpp
index d9e9c3b..021d64a 100644
--- a/tools/qdoc3/cppcodeparser.cpp
+++ b/tools/qdoc3/cppcodeparser.cpp
@@ -1034,7 +1034,7 @@ void CppCodeParser::processOtherMetaCommand(const Doc& doc,
else if (command == COMMAND_QMLINHERITS) {
setLink(node, Node::InheritsLink, arg);
if (node->subType() == Node::QmlClass) {
- QmlClassNode::addInheritedBy(arg,node);
+ QmlClassNode::addInheritedBy(arg,node->name());
}
}
else if (command == COMMAND_QMLDEFAULT) {
diff --git a/tools/qdoc3/generator.cpp b/tools/qdoc3/generator.cpp
index a7ab453..6a8899a 100644
--- a/tools/qdoc3/generator.cpp
+++ b/tools/qdoc3/generator.cpp
@@ -1186,32 +1186,6 @@ void Generator::appendSortedNames(Text& text,
}
}
-void Generator::appendSortedNames(Text& text,
- const Node* base,
- const NodeList& subs,
- CodeMarker *marker)
-{
- NodeList::ConstIterator r;
- QMap<QString,Text> classMap;
- int index = 0;
-
- r = subs.begin();
- while (r != subs.end()) {
- Text className;
- appendFullName(className, (*r), base, marker);
- classMap[className.toString().toLower()] = className;
- ++r;
- }
-
- QStringList classNames = classMap.keys();
- classNames.sort();
-
- foreach (const QString &className, classNames) {
- text << classMap[className];
- text << separator(index++, classNames.count());
- }
-}
-
int Generator::skipAtoms(const Atom *atom, Atom::Type type) const
{
int skipAhead = 0;
diff --git a/tools/qdoc3/generator.h b/tools/qdoc3/generator.h
index 50ffb0a..44f56e2 100644
--- a/tools/qdoc3/generator.h
+++ b/tools/qdoc3/generator.h
@@ -169,13 +169,6 @@ class Generator
const QList<RelatedClass> &classes,
CodeMarker *marker);
- protected:
- void appendSortedNames(Text& text,
- const Node* base,
- const NodeList& subs,
- CodeMarker *marker);
-
- private:
QString amp;
QString lt;
QString gt;
diff --git a/tools/qdoc3/htmlgenerator.cpp b/tools/qdoc3/htmlgenerator.cpp
index 0477ebb..e767460 100644
--- a/tools/qdoc3/htmlgenerator.cpp
+++ b/tools/qdoc3/htmlgenerator.cpp
@@ -73,7 +73,6 @@ QString HtmlGenerator::sinceTitles[] =
" New Typedefs",
" New Properties",
" New Variables",
- " New QML Elements",
" New Qml Properties",
" New Qml Signals",
" New Qml Methods",
@@ -688,8 +687,6 @@ int HtmlGenerator::generateAtom(const Atom *atom,
nsmap = newSinceMaps.find(atom->string());
NewClassMaps::const_iterator ncmap;
ncmap = newClassMaps.find(atom->string());
- NewClassMaps::const_iterator nqcmap;
- nqcmap = newQmlClassMaps.find(atom->string());
if ((nsmap != newSinceMaps.constEnd()) && !nsmap.value().isEmpty()) {
QList<Section> sections;
QList<Section>::ConstIterator s;
@@ -700,10 +697,6 @@ int HtmlGenerator::generateAtom(const Atom *atom,
while (n != nsmap.value().constEnd()) {
const Node* node = n.value();
switch (node->type()) {
- case Node::Fake:
- if (node->subType() == Node::QmlClass)
- sections[QmlClass].appendMember((Node*)node);
- break;
case Node::Namespace:
sections[Namespace].appendMember((Node*)node);
break;
@@ -789,8 +782,6 @@ int HtmlGenerator::generateAtom(const Atom *atom,
out() << "<h3>" << protectEnc((*s).name) << "</h3>\n";
if (idx == Class)
generateCompactList(0, marker, ncmap.value(), QString("Q"));
- else if (idx == QmlClass)
- generateCompactList(0, marker, nqcmap.value(), QString("Q"));
else if (idx == MemberFunction) {
ParentMaps parentmaps;
ParentMaps::iterator pmap;
@@ -2341,11 +2332,7 @@ void HtmlGenerator::generateCompactList(const Node *relative,
out() << "<a href=\""
<< linkForNode(it.value(), relative)
<< "\">";
- QStringList pieces;
- if (it.value()->subType() == Node::QmlClass)
- pieces << it.value()->name();
- else
- pieces = fullName(it.value(), relative, marker).split("::");
+ QStringList pieces = fullName(it.value(), relative, marker).split("::");
out() << protectEnc(pieces.last());
out() << "</a>";
if (pieces.size() > 1) {
@@ -3736,9 +3723,6 @@ void HtmlGenerator::findAllSince(const InnerNode *node)
NewClassMaps::iterator ncmap = newClassMaps.find(sinceVersion);
if (ncmap == newClassMaps.end())
ncmap = newClassMaps.insert(sinceVersion,NodeMap());
- NewClassMaps::iterator nqcmap = newQmlClassMaps.find(sinceVersion);
- if (nqcmap == newQmlClassMaps.end())
- nqcmap = newQmlClassMaps.insert(sinceVersion,NodeMap());
if ((*child)->type() == Node::Function) {
FunctionNode *func = static_cast<FunctionNode *>(*child);
@@ -3758,15 +3742,6 @@ void HtmlGenerator::findAllSince(const InnerNode *node)
nsmap.value().insert(className,(*child));
ncmap.value().insert(className,(*child));
}
- else if ((*child)->subType() == Node::QmlClass) {
- QString className = (*child)->name();
- if ((*child)->parent() &&
- (*child)->parent()->type() == Node::Namespace &&
- !(*child)->parent()->name().isEmpty())
- className = (*child)->parent()->name()+"::"+className;
- nsmap.value().insert(className,(*child));
- nqcmap.value().insert(className,(*child));
- }
}
else {
QString name = (*child)->name();
@@ -4341,15 +4316,40 @@ void HtmlGenerator::generateQmlInheritedBy(const QmlClassNode* cn,
CodeMarker* marker)
{
if (cn) {
- NodeList subs;
+ QStringList subs;
QmlClassNode::subclasses(cn->name(),subs);
if (!subs.isEmpty()) {
+ subs.sort();
Text text;
text << Atom::ParaLeft << "Inherited by ";
- appendSortedNames(text,cn,subs,marker);
+ for (int i = 0; i < subs.size(); ++i) {
+ text << subs.at(i);
+ text << separator(i, subs.size());
+ }
text << Atom::ParaRight;
generateText(text, cn, marker);
}
+#if 0
+ if (cn->links().contains(Node::InheritsLink)) {
+ QPair<QString,QString> linkPair;
+ linkPair = cn->links()[Node::InheritsLink];
+ QStringList strList(linkPair.first);
+ const Node* n = myTree->findNode(strList,Node::Fake);
+ if (n && n->subType() == Node::QmlClass) {
+ const QmlClassNode* qcn = static_cast<const QmlClassNode*>(n);
+ out() << "<p style=\"text-align: center\">";
+ Text text;
+ text << "[Inherits ";
+ text << Atom(Atom::LinkNode,CodeMarker::stringForNode(qcn));
+ text << Atom(Atom::FormattingLeft, ATOM_FORMATTING_LINK);
+ text << Atom(Atom::String, linkPair.second);
+ text << Atom(Atom::FormattingRight, ATOM_FORMATTING_LINK);
+ text << "]";
+ generateText(text, cn, marker);
+ out() << "</p>";
+ }
+ }
+#endif
}
}
diff --git a/tools/qdoc3/htmlgenerator.h b/tools/qdoc3/htmlgenerator.h
index 8fe0331..551bead 100644
--- a/tools/qdoc3/htmlgenerator.h
+++ b/tools/qdoc3/htmlgenerator.h
@@ -90,7 +90,6 @@ class HtmlGenerator : public PageGenerator
Typedef,
Property,
Variable,
- QmlClass,
QmlProperty,
QmlSignal,
QmlMethod,
@@ -327,7 +326,6 @@ class HtmlGenerator : public PageGenerator
NewSinceMaps newSinceMaps;
static QString sinceTitles[];
NewClassMaps newClassMaps;
- NewClassMaps newQmlClassMaps;
static int id;
};
diff --git a/tools/qdoc3/node.cpp b/tools/qdoc3/node.cpp
index 5357597..4ddcfb1 100644
--- a/tools/qdoc3/node.cpp
+++ b/tools/qdoc3/node.cpp
@@ -1257,7 +1257,7 @@ bool TargetNode::isInnerNode() const
#ifdef QDOC_QML
bool QmlClassNode::qmlOnly = false;
-QMultiMap<QString,Node*> QmlClassNode::inheritedBy;
+QMultiMap<QString,QString> QmlClassNode::inheritedBy;
/*!
Constructs a Qml class node (i.e. a Fake node with the
@@ -1294,15 +1294,15 @@ QString QmlClassNode::fileBase() const
Record the fact that QML class \a base is inherited by
QML class \a sub.
*/
-void QmlClassNode::addInheritedBy(const QString& base, Node* sub)
+void QmlClassNode::addInheritedBy(const QString& base, const QString& sub)
{
inheritedBy.insert(base,sub);
}
/*!
- Loads the list \a subs with the nodes of all the subclasses of \a base.
+ Loads the list \a subs with the names of all the subclasses of \a base.
*/
-void QmlClassNode::subclasses(const QString& base, NodeList& subs)
+void QmlClassNode::subclasses(const QString& base, QStringList& subs)
{
subs.clear();
if (inheritedBy.contains(base))
diff --git a/tools/qdoc3/node.h b/tools/qdoc3/node.h
index 3798e4e..de26025 100644
--- a/tools/qdoc3/node.h
+++ b/tools/qdoc3/node.h
@@ -383,12 +383,12 @@ class QmlClassNode : public FakeNode
const ClassNode* classNode() const { return cnode; }
virtual QString fileBase() const;
- static void addInheritedBy(const QString& base, Node* sub);
- static void subclasses(const QString& base, NodeList& subs);
+ static void addInheritedBy(const QString& base, const QString& sub);
+ static void subclasses(const QString& base, QStringList& subs);
public:
static bool qmlOnly;
- static QMultiMap<QString,Node*> inheritedBy;
+ static QMultiMap<QString,QString> inheritedBy;
private:
const ClassNode* cnode;
diff --git a/tools/qdoc3/test/qt_zh_CN.qdocconf b/tools/qdoc3/test/qt_zh_CN.qdocconf
new file mode 100644
index 0000000..8c7e64a
--- /dev/null
+++ b/tools/qdoc3/test/qt_zh_CN.qdocconf
@@ -0,0 +1,86 @@
+include(compat.qdocconf)
+include(macros.qdocconf)
+include(qt-cpp-ignore.qdocconf)
+include(qt-html-templates_zh_CN.qdocconf)
+include(qt-defines.qdocconf)
+
+project = Qt
+versionsym =
+version = %VERSION%
+description = Qt Reference Documentation
+url = http://qt.nokia.com/doc/zh_CN/4.7
+
+sourceencoding = UTF-8
+outputencoding = UTF-8
+naturallanguage = zh-Hans
+
+indexes = $QTDIR/doc/html/qt.index
+
+qhp.projects = Qt
+
+qhp.Qt.file = qt.qhp
+qhp.Qt.namespace = com.trolltech.qt.470
+qhp.Qt.virtualFolder = qdoc
+qhp.Qt.title = 教程
+qhp.Qt.indexTitle = 教程
+qhp.Qt.selectors = fake:example
+
+qhp.Qt.filterAttributes = qt 4.7.0 qtrefdoc zh_CN
+qhp.Qt.customFilters.Qt.name = Qt 4.7.0
+qhp.Qt.customFilters.Qt.filterAttributes = qt 4.7.0
+
+# Files not referenced in any qdoc file (last four are needed by qtdemo)
+# See also extraimages.HTML
+qhp.Qt.extraFiles = classic.css \
+ images/qt-logo.png \
+ images/taskmenuextension-example.png \
+ images/coloreditorfactoryimage.png \
+ images/dynamiclayouts-example.png \
+ images/stylesheet-coffee-plastique.png
+
+language = Cpp
+
+sourcedirs = $QTDIR/doc/src/zh_CN
+
+excludedirs = $QTDIR/src/3rdparty/clucene \
+ $QTDIR/src/3rdparty/des \
+ $QTDIR/src/3rdparty/freetype \
+ $QTDIR/src/3rdparty/harfbuzz \
+ $QTDIR/src/3rdparty/kdebase \
+ $QTDIR/src/3rdparty/libjpeg \
+ $QTDIR/src/3rdparty/libmng \
+ $QTDIR/src/3rdparty/libpng \
+ $QTDIR/src/3rdparty/libtiff \
+ $QTDIR/src/3rdparty/md4 \
+ $QTDIR/src/3rdparty/md5 \
+ $QTDIR/src/3rdparty/patches \
+ $QTDIR/src/3rdparty/sha1 \
+ $QTDIR/src/3rdparty/sqlite \
+ $QTDIR/src/3rdparty/webkit/JavaScriptCore \
+ $QTDIR/src/3rdparty/webkit/WebCore \
+ $QTDIR/src/3rdparty/wintab \
+ $QTDIR/src/3rdparty/zlib \
+ $QTDIR/doc/src/snippets \
+ $QTDIR/src/3rdparty/phonon/gstreamer \
+ $QTDIR/src/3rdparty/phonon/ds9 \
+ $QTDIR/src/3rdparty/phonon/qt7 \
+ $QTDIR/src/3rdparty/phonon/mmf \
+ $QTDIR/src/3rdparty/phonon/waveout
+
+sources.fileextensions = "*.cpp *.qdoc *.mm"
+examples.fileextensions = "*.cpp *.h *.js *.xq *.svg *.xml *.ui *.qhp *.qhcp"
+examples.imageextensions = "*.png"
+
+exampledirs = $QTDIR/doc/src \
+ $QTDIR/examples \
+ $QTDIR/examples/tutorials \
+ $QTDIR \
+ $QTDIR/qmake/examples \
+ $QTDIR/src/3rdparty/webkit/WebKit/qt/docs
+imagedirs = $QTDIR/doc/src/images \
+ $QTDIR/examples
+outputdir = $QTDIR/doc/html_zh_CN
+tagfile = $QTDIR/doc/html_zh_CN/qt.tags
+base = file:$QTDIR/doc/html_zh_CN
+
+HTML.generatemacrefs = "true"
diff --git a/tools/qtconfig/mainwindow.cpp b/tools/qtconfig/mainwindow.cpp
index 604b1f4..0de4b43 100644
--- a/tools/qtconfig/mainwindow.cpp
+++ b/tools/qtconfig/mainwindow.cpp
@@ -68,6 +68,8 @@
#ifndef QT_NO_GSTREAMER
#include <gst/gst.h>
+#endif
+#ifdef HAVE_PHONON
#include <phonon/phononnamespace.h>
#endif
@@ -387,8 +389,10 @@ MainWindow::MainWindow()
audiosinkCombo->addItem(tr("aRts"), QLatin1String("artssink"));
audiosinkCombo->setItemData(audiosinkCombo->findText(tr("aRts")),
tr("Experimental aRts support for GStreamer."), Qt::ToolTipRole);
-#ifndef QT_NO_GSTREAMER
+#ifdef HAVE_PHONON
phononVersionLabel->setText(QLatin1String(Phonon::phononVersion()));
+#endif
+#ifndef QT_NO_GSTREAMER
if (gst_init_check(0, 0, 0)) {
gchar *versionString = gst_version_string();
gstversionLabel->setText(QLatin1String(versionString));
diff --git a/tools/qtconfig/qtconfig.pro b/tools/qtconfig/qtconfig.pro
index 8ab3f03..d1fd320 100644
--- a/tools/qtconfig/qtconfig.pro
+++ b/tools/qtconfig/qtconfig.pro
@@ -9,7 +9,10 @@ QT += qt3support
contains(QT_CONFIG, gstreamer):LIBS += $$QT_LIBS_GSTREAMER -lgstinterfaces-0.10 -lgstvideo-0.10 -lgstbase-0.10
contains(QT_CONFIG, gstreamer):QMAKE_CXXFLAGS += $$QT_CFLAGS_GSTREAMER
-contains(QT_CONFIG, gstreamer):QT += phonon
+contains(QT_CONFIG, phonon) {
+ QT += phonon
+ DEFINES += HAVE_PHONON
+}
SOURCES += colorbutton.cpp main.cpp previewframe.cpp previewwidget.cpp mainwindow.cpp paletteeditoradvanced.cpp \
mainwindowbase.cpp paletteeditoradvancedbase.cpp previewwidgetbase.cpp
HEADERS += colorbutton.h previewframe.h previewwidget.h mainwindow.h paletteeditoradvanced.h \
diff --git a/util/unicode/data/DerivedNormalizationProps.txt b/util/unicode/data/DerivedNormalizationProps.txt
new file mode 100644
index 0000000..fba1fd1
--- /dev/null
+++ b/util/unicode/data/DerivedNormalizationProps.txt
@@ -0,0 +1,2650 @@
+# DerivedNormalizationProps-5.0.0.txt
+# Date: 2006-06-07, 17:42:44 GMT [MD]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2006 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see UCD.html
+
+# ================================================
+
+# Derived Property: FC_NFKC_Closure
+# Generated from computing: b = NFKC(Fold(a)); c = NFKC(Fold(b));
+# Then if (c != b) add the mapping from a to c to the set of
+# mappings that constitute the FC_NFKC_Closure list
+# Uses the full case folding from CaseFolding.txt, without the T option.
+
+037A ; FC_NFKC; 0020 03B9 # Lm GREEK YPOGEGRAMMENI
+03D2 ; FC_NFKC; 03C5 # L& GREEK UPSILON WITH HOOK SYMBOL
+03D3 ; FC_NFKC; 03CD # L& GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
+03D4 ; FC_NFKC; 03CB # L& GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+03F2 ; FC_NFKC; 03C3 # L& GREEK LUNATE SIGMA SYMBOL
+03F9 ; FC_NFKC; 03C3 # L& GREEK CAPITAL LUNATE SIGMA SYMBOL
+1D2C ; FC_NFKC; 0061 # Lm MODIFIER LETTER CAPITAL A
+1D2D ; FC_NFKC; 00E6 # Lm MODIFIER LETTER CAPITAL AE
+1D2E ; FC_NFKC; 0062 # Lm MODIFIER LETTER CAPITAL B
+1D30 ; FC_NFKC; 0064 # Lm MODIFIER LETTER CAPITAL D
+1D31 ; FC_NFKC; 0065 # Lm MODIFIER LETTER CAPITAL E
+1D32 ; FC_NFKC; 01DD # Lm MODIFIER LETTER CAPITAL REVERSED E
+1D33 ; FC_NFKC; 0067 # Lm MODIFIER LETTER CAPITAL G
+1D34 ; FC_NFKC; 0068 # Lm MODIFIER LETTER CAPITAL H
+1D35 ; FC_NFKC; 0069 # Lm MODIFIER LETTER CAPITAL I
+1D36 ; FC_NFKC; 006A # Lm MODIFIER LETTER CAPITAL J
+1D37 ; FC_NFKC; 006B # Lm MODIFIER LETTER CAPITAL K
+1D38 ; FC_NFKC; 006C # Lm MODIFIER LETTER CAPITAL L
+1D39 ; FC_NFKC; 006D # Lm MODIFIER LETTER CAPITAL M
+1D3A ; FC_NFKC; 006E # Lm MODIFIER LETTER CAPITAL N
+1D3C ; FC_NFKC; 006F # Lm MODIFIER LETTER CAPITAL O
+1D3D ; FC_NFKC; 0223 # Lm MODIFIER LETTER CAPITAL OU
+1D3E ; FC_NFKC; 0070 # Lm MODIFIER LETTER CAPITAL P
+1D3F ; FC_NFKC; 0072 # Lm MODIFIER LETTER CAPITAL R
+1D40 ; FC_NFKC; 0074 # Lm MODIFIER LETTER CAPITAL T
+1D41 ; FC_NFKC; 0075 # Lm MODIFIER LETTER CAPITAL U
+1D42 ; FC_NFKC; 0077 # Lm MODIFIER LETTER CAPITAL W
+20A8 ; FC_NFKC; 0072 0073 # Sc RUPEE SIGN
+2102 ; FC_NFKC; 0063 # L& DOUBLE-STRUCK CAPITAL C
+2103 ; FC_NFKC; 00B0 0063 # So DEGREE CELSIUS
+2107 ; FC_NFKC; 025B # L& EULER CONSTANT
+2109 ; FC_NFKC; 00B0 0066 # So DEGREE FAHRENHEIT
+210B ; FC_NFKC; 0068 # L& SCRIPT CAPITAL H
+210C ; FC_NFKC; 0068 # L& BLACK-LETTER CAPITAL H
+210D ; FC_NFKC; 0068 # L& DOUBLE-STRUCK CAPITAL H
+2110 ; FC_NFKC; 0069 # L& SCRIPT CAPITAL I
+2111 ; FC_NFKC; 0069 # L& BLACK-LETTER CAPITAL I
+2112 ; FC_NFKC; 006C # L& SCRIPT CAPITAL L
+2115 ; FC_NFKC; 006E # L& DOUBLE-STRUCK CAPITAL N
+2116 ; FC_NFKC; 006E 006F # So NUMERO SIGN
+2119 ; FC_NFKC; 0070 # L& DOUBLE-STRUCK CAPITAL P
+211A ; FC_NFKC; 0071 # L& DOUBLE-STRUCK CAPITAL Q
+211B ; FC_NFKC; 0072 # L& SCRIPT CAPITAL R
+211C ; FC_NFKC; 0072 # L& BLACK-LETTER CAPITAL R
+211D ; FC_NFKC; 0072 # L& DOUBLE-STRUCK CAPITAL R
+2120 ; FC_NFKC; 0073 006D # So SERVICE MARK
+2121 ; FC_NFKC; 0074 0065 006C # So TELEPHONE SIGN
+2122 ; FC_NFKC; 0074 006D # So TRADE MARK SIGN
+2124 ; FC_NFKC; 007A # L& DOUBLE-STRUCK CAPITAL Z
+2128 ; FC_NFKC; 007A # L& BLACK-LETTER CAPITAL Z
+212C ; FC_NFKC; 0062 # L& SCRIPT CAPITAL B
+212D ; FC_NFKC; 0063 # L& BLACK-LETTER CAPITAL C
+2130 ; FC_NFKC; 0065 # L& SCRIPT CAPITAL E
+2131 ; FC_NFKC; 0066 # L& SCRIPT CAPITAL F
+2133 ; FC_NFKC; 006D # L& SCRIPT CAPITAL M
+213B ; FC_NFKC; 0066 0061 0078 # So FACSIMILE SIGN
+213E ; FC_NFKC; 03B3 # L& DOUBLE-STRUCK CAPITAL GAMMA
+213F ; FC_NFKC; 03C0 # L& DOUBLE-STRUCK CAPITAL PI
+2145 ; FC_NFKC; 0064 # L& DOUBLE-STRUCK ITALIC CAPITAL D
+3250 ; FC_NFKC; 0070 0074 0065 # So PARTNERSHIP SIGN
+32CC ; FC_NFKC; 0068 0067 # So SQUARE HG
+32CE ; FC_NFKC; 0065 0076 # So SQUARE EV
+32CF ; FC_NFKC; 006C 0074 0064 # So LIMITED LIABILITY SIGN
+3371 ; FC_NFKC; 0068 0070 0061 # So SQUARE HPA
+3373 ; FC_NFKC; 0061 0075 # So SQUARE AU
+3375 ; FC_NFKC; 006F 0076 # So SQUARE OV
+337A ; FC_NFKC; 0069 0075 # So SQUARE IU
+3380 ; FC_NFKC; 0070 0061 # So SQUARE PA AMPS
+3381 ; FC_NFKC; 006E 0061 # So SQUARE NA
+3382 ; FC_NFKC; 03BC 0061 # So SQUARE MU A
+3383 ; FC_NFKC; 006D 0061 # So SQUARE MA
+3384 ; FC_NFKC; 006B 0061 # So SQUARE KA
+3385 ; FC_NFKC; 006B 0062 # So SQUARE KB
+3386 ; FC_NFKC; 006D 0062 # So SQUARE MB
+3387 ; FC_NFKC; 0067 0062 # So SQUARE GB
+338A ; FC_NFKC; 0070 0066 # So SQUARE PF
+338B ; FC_NFKC; 006E 0066 # So SQUARE NF
+338C ; FC_NFKC; 03BC 0066 # So SQUARE MU F
+3390 ; FC_NFKC; 0068 007A # So SQUARE HZ
+3391 ; FC_NFKC; 006B 0068 007A # So SQUARE KHZ
+3392 ; FC_NFKC; 006D 0068 007A # So SQUARE MHZ
+3393 ; FC_NFKC; 0067 0068 007A # So SQUARE GHZ
+3394 ; FC_NFKC; 0074 0068 007A # So SQUARE THZ
+33A9 ; FC_NFKC; 0070 0061 # So SQUARE PA
+33AA ; FC_NFKC; 006B 0070 0061 # So SQUARE KPA
+33AB ; FC_NFKC; 006D 0070 0061 # So SQUARE MPA
+33AC ; FC_NFKC; 0067 0070 0061 # So SQUARE GPA
+33B4 ; FC_NFKC; 0070 0076 # So SQUARE PV
+33B5 ; FC_NFKC; 006E 0076 # So SQUARE NV
+33B6 ; FC_NFKC; 03BC 0076 # So SQUARE MU V
+33B7 ; FC_NFKC; 006D 0076 # So SQUARE MV
+33B8 ; FC_NFKC; 006B 0076 # So SQUARE KV
+33B9 ; FC_NFKC; 006D 0076 # So SQUARE MV MEGA
+33BA ; FC_NFKC; 0070 0077 # So SQUARE PW
+33BB ; FC_NFKC; 006E 0077 # So SQUARE NW
+33BC ; FC_NFKC; 03BC 0077 # So SQUARE MU W
+33BD ; FC_NFKC; 006D 0077 # So SQUARE MW
+33BE ; FC_NFKC; 006B 0077 # So SQUARE KW
+33BF ; FC_NFKC; 006D 0077 # So SQUARE MW MEGA
+33C0 ; FC_NFKC; 006B 03C9 # So SQUARE K OHM
+33C1 ; FC_NFKC; 006D 03C9 # So SQUARE M OHM
+33C3 ; FC_NFKC; 0062 0071 # So SQUARE BQ
+33C6 ; FC_NFKC; 0063 2215 006B 0067 #So SQUARE C OVER KG
+33C7 ; FC_NFKC; 0063 006F 002E # So SQUARE CO
+33C8 ; FC_NFKC; 0064 0062 # So SQUARE DB
+33C9 ; FC_NFKC; 0067 0079 # So SQUARE GY
+33CB ; FC_NFKC; 0068 0070 # So SQUARE HP
+33CD ; FC_NFKC; 006B 006B # So SQUARE KK
+33CE ; FC_NFKC; 006B 006D # So SQUARE KM CAPITAL
+33D7 ; FC_NFKC; 0070 0068 # So SQUARE PH
+33D9 ; FC_NFKC; 0070 0070 006D # So SQUARE PPM
+33DA ; FC_NFKC; 0070 0072 # So SQUARE PR
+33DC ; FC_NFKC; 0073 0076 # So SQUARE SV
+33DD ; FC_NFKC; 0077 0062 # So SQUARE WB
+33DE ; FC_NFKC; 0076 2215 006D # So SQUARE V OVER M
+33DF ; FC_NFKC; 0061 2215 006D # So SQUARE A OVER M
+1D400 ; FC_NFKC; 0061 # L& MATHEMATICAL BOLD CAPITAL A
+1D401 ; FC_NFKC; 0062 # L& MATHEMATICAL BOLD CAPITAL B
+1D402 ; FC_NFKC; 0063 # L& MATHEMATICAL BOLD CAPITAL C
+1D403 ; FC_NFKC; 0064 # L& MATHEMATICAL BOLD CAPITAL D
+1D404 ; FC_NFKC; 0065 # L& MATHEMATICAL BOLD CAPITAL E
+1D405 ; FC_NFKC; 0066 # L& MATHEMATICAL BOLD CAPITAL F
+1D406 ; FC_NFKC; 0067 # L& MATHEMATICAL BOLD CAPITAL G
+1D407 ; FC_NFKC; 0068 # L& MATHEMATICAL BOLD CAPITAL H
+1D408 ; FC_NFKC; 0069 # L& MATHEMATICAL BOLD CAPITAL I
+1D409 ; FC_NFKC; 006A # L& MATHEMATICAL BOLD CAPITAL J
+1D40A ; FC_NFKC; 006B # L& MATHEMATICAL BOLD CAPITAL K
+1D40B ; FC_NFKC; 006C # L& MATHEMATICAL BOLD CAPITAL L
+1D40C ; FC_NFKC; 006D # L& MATHEMATICAL BOLD CAPITAL M
+1D40D ; FC_NFKC; 006E # L& MATHEMATICAL BOLD CAPITAL N
+1D40E ; FC_NFKC; 006F # L& MATHEMATICAL BOLD CAPITAL O
+1D40F ; FC_NFKC; 0070 # L& MATHEMATICAL BOLD CAPITAL P
+1D410 ; FC_NFKC; 0071 # L& MATHEMATICAL BOLD CAPITAL Q
+1D411 ; FC_NFKC; 0072 # L& MATHEMATICAL BOLD CAPITAL R
+1D412 ; FC_NFKC; 0073 # L& MATHEMATICAL BOLD CAPITAL S
+1D413 ; FC_NFKC; 0074 # L& MATHEMATICAL BOLD CAPITAL T
+1D414 ; FC_NFKC; 0075 # L& MATHEMATICAL BOLD CAPITAL U
+1D415 ; FC_NFKC; 0076 # L& MATHEMATICAL BOLD CAPITAL V
+1D416 ; FC_NFKC; 0077 # L& MATHEMATICAL BOLD CAPITAL W
+1D417 ; FC_NFKC; 0078 # L& MATHEMATICAL BOLD CAPITAL X
+1D418 ; FC_NFKC; 0079 # L& MATHEMATICAL BOLD CAPITAL Y
+1D419 ; FC_NFKC; 007A # L& MATHEMATICAL BOLD CAPITAL Z
+1D434 ; FC_NFKC; 0061 # L& MATHEMATICAL ITALIC CAPITAL A
+1D435 ; FC_NFKC; 0062 # L& MATHEMATICAL ITALIC CAPITAL B
+1D436 ; FC_NFKC; 0063 # L& MATHEMATICAL ITALIC CAPITAL C
+1D437 ; FC_NFKC; 0064 # L& MATHEMATICAL ITALIC CAPITAL D
+1D438 ; FC_NFKC; 0065 # L& MATHEMATICAL ITALIC CAPITAL E
+1D439 ; FC_NFKC; 0066 # L& MATHEMATICAL ITALIC CAPITAL F
+1D43A ; FC_NFKC; 0067 # L& MATHEMATICAL ITALIC CAPITAL G
+1D43B ; FC_NFKC; 0068 # L& MATHEMATICAL ITALIC CAPITAL H
+1D43C ; FC_NFKC; 0069 # L& MATHEMATICAL ITALIC CAPITAL I
+1D43D ; FC_NFKC; 006A # L& MATHEMATICAL ITALIC CAPITAL J
+1D43E ; FC_NFKC; 006B # L& MATHEMATICAL ITALIC CAPITAL K
+1D43F ; FC_NFKC; 006C # L& MATHEMATICAL ITALIC CAPITAL L
+1D440 ; FC_NFKC; 006D # L& MATHEMATICAL ITALIC CAPITAL M
+1D441 ; FC_NFKC; 006E # L& MATHEMATICAL ITALIC CAPITAL N
+1D442 ; FC_NFKC; 006F # L& MATHEMATICAL ITALIC CAPITAL O
+1D443 ; FC_NFKC; 0070 # L& MATHEMATICAL ITALIC CAPITAL P
+1D444 ; FC_NFKC; 0071 # L& MATHEMATICAL ITALIC CAPITAL Q
+1D445 ; FC_NFKC; 0072 # L& MATHEMATICAL ITALIC CAPITAL R
+1D446 ; FC_NFKC; 0073 # L& MATHEMATICAL ITALIC CAPITAL S
+1D447 ; FC_NFKC; 0074 # L& MATHEMATICAL ITALIC CAPITAL T
+1D448 ; FC_NFKC; 0075 # L& MATHEMATICAL ITALIC CAPITAL U
+1D449 ; FC_NFKC; 0076 # L& MATHEMATICAL ITALIC CAPITAL V
+1D44A ; FC_NFKC; 0077 # L& MATHEMATICAL ITALIC CAPITAL W
+1D44B ; FC_NFKC; 0078 # L& MATHEMATICAL ITALIC CAPITAL X
+1D44C ; FC_NFKC; 0079 # L& MATHEMATICAL ITALIC CAPITAL Y
+1D44D ; FC_NFKC; 007A # L& MATHEMATICAL ITALIC CAPITAL Z
+1D468 ; FC_NFKC; 0061 # L& MATHEMATICAL BOLD ITALIC CAPITAL A
+1D469 ; FC_NFKC; 0062 # L& MATHEMATICAL BOLD ITALIC CAPITAL B
+1D46A ; FC_NFKC; 0063 # L& MATHEMATICAL BOLD ITALIC CAPITAL C
+1D46B ; FC_NFKC; 0064 # L& MATHEMATICAL BOLD ITALIC CAPITAL D
+1D46C ; FC_NFKC; 0065 # L& MATHEMATICAL BOLD ITALIC CAPITAL E
+1D46D ; FC_NFKC; 0066 # L& MATHEMATICAL BOLD ITALIC CAPITAL F
+1D46E ; FC_NFKC; 0067 # L& MATHEMATICAL BOLD ITALIC CAPITAL G
+1D46F ; FC_NFKC; 0068 # L& MATHEMATICAL BOLD ITALIC CAPITAL H
+1D470 ; FC_NFKC; 0069 # L& MATHEMATICAL BOLD ITALIC CAPITAL I
+1D471 ; FC_NFKC; 006A # L& MATHEMATICAL BOLD ITALIC CAPITAL J
+1D472 ; FC_NFKC; 006B # L& MATHEMATICAL BOLD ITALIC CAPITAL K
+1D473 ; FC_NFKC; 006C # L& MATHEMATICAL BOLD ITALIC CAPITAL L
+1D474 ; FC_NFKC; 006D # L& MATHEMATICAL BOLD ITALIC CAPITAL M
+1D475 ; FC_NFKC; 006E # L& MATHEMATICAL BOLD ITALIC CAPITAL N
+1D476 ; FC_NFKC; 006F # L& MATHEMATICAL BOLD ITALIC CAPITAL O
+1D477 ; FC_NFKC; 0070 # L& MATHEMATICAL BOLD ITALIC CAPITAL P
+1D478 ; FC_NFKC; 0071 # L& MATHEMATICAL BOLD ITALIC CAPITAL Q
+1D479 ; FC_NFKC; 0072 # L& MATHEMATICAL BOLD ITALIC CAPITAL R
+1D47A ; FC_NFKC; 0073 # L& MATHEMATICAL BOLD ITALIC CAPITAL S
+1D47B ; FC_NFKC; 0074 # L& MATHEMATICAL BOLD ITALIC CAPITAL T
+1D47C ; FC_NFKC; 0075 # L& MATHEMATICAL BOLD ITALIC CAPITAL U
+1D47D ; FC_NFKC; 0076 # L& MATHEMATICAL BOLD ITALIC CAPITAL V
+1D47E ; FC_NFKC; 0077 # L& MATHEMATICAL BOLD ITALIC CAPITAL W
+1D47F ; FC_NFKC; 0078 # L& MATHEMATICAL BOLD ITALIC CAPITAL X
+1D480 ; FC_NFKC; 0079 # L& MATHEMATICAL BOLD ITALIC CAPITAL Y
+1D481 ; FC_NFKC; 007A # L& MATHEMATICAL BOLD ITALIC CAPITAL Z
+1D49C ; FC_NFKC; 0061 # L& MATHEMATICAL SCRIPT CAPITAL A
+1D49E ; FC_NFKC; 0063 # L& MATHEMATICAL SCRIPT CAPITAL C
+1D49F ; FC_NFKC; 0064 # L& MATHEMATICAL SCRIPT CAPITAL D
+1D4A2 ; FC_NFKC; 0067 # L& MATHEMATICAL SCRIPT CAPITAL G
+1D4A5 ; FC_NFKC; 006A # L& MATHEMATICAL SCRIPT CAPITAL J
+1D4A6 ; FC_NFKC; 006B # L& MATHEMATICAL SCRIPT CAPITAL K
+1D4A9 ; FC_NFKC; 006E # L& MATHEMATICAL SCRIPT CAPITAL N
+1D4AA ; FC_NFKC; 006F # L& MATHEMATICAL SCRIPT CAPITAL O
+1D4AB ; FC_NFKC; 0070 # L& MATHEMATICAL SCRIPT CAPITAL P
+1D4AC ; FC_NFKC; 0071 # L& MATHEMATICAL SCRIPT CAPITAL Q
+1D4AE ; FC_NFKC; 0073 # L& MATHEMATICAL SCRIPT CAPITAL S
+1D4AF ; FC_NFKC; 0074 # L& MATHEMATICAL SCRIPT CAPITAL T
+1D4B0 ; FC_NFKC; 0075 # L& MATHEMATICAL SCRIPT CAPITAL U
+1D4B1 ; FC_NFKC; 0076 # L& MATHEMATICAL SCRIPT CAPITAL V
+1D4B2 ; FC_NFKC; 0077 # L& MATHEMATICAL SCRIPT CAPITAL W
+1D4B3 ; FC_NFKC; 0078 # L& MATHEMATICAL SCRIPT CAPITAL X
+1D4B4 ; FC_NFKC; 0079 # L& MATHEMATICAL SCRIPT CAPITAL Y
+1D4B5 ; FC_NFKC; 007A # L& MATHEMATICAL SCRIPT CAPITAL Z
+1D4D0 ; FC_NFKC; 0061 # L& MATHEMATICAL BOLD SCRIPT CAPITAL A
+1D4D1 ; FC_NFKC; 0062 # L& MATHEMATICAL BOLD SCRIPT CAPITAL B
+1D4D2 ; FC_NFKC; 0063 # L& MATHEMATICAL BOLD SCRIPT CAPITAL C
+1D4D3 ; FC_NFKC; 0064 # L& MATHEMATICAL BOLD SCRIPT CAPITAL D
+1D4D4 ; FC_NFKC; 0065 # L& MATHEMATICAL BOLD SCRIPT CAPITAL E
+1D4D5 ; FC_NFKC; 0066 # L& MATHEMATICAL BOLD SCRIPT CAPITAL F
+1D4D6 ; FC_NFKC; 0067 # L& MATHEMATICAL BOLD SCRIPT CAPITAL G
+1D4D7 ; FC_NFKC; 0068 # L& MATHEMATICAL BOLD SCRIPT CAPITAL H
+1D4D8 ; FC_NFKC; 0069 # L& MATHEMATICAL BOLD SCRIPT CAPITAL I
+1D4D9 ; FC_NFKC; 006A # L& MATHEMATICAL BOLD SCRIPT CAPITAL J
+1D4DA ; FC_NFKC; 006B # L& MATHEMATICAL BOLD SCRIPT CAPITAL K
+1D4DB ; FC_NFKC; 006C # L& MATHEMATICAL BOLD SCRIPT CAPITAL L
+1D4DC ; FC_NFKC; 006D # L& MATHEMATICAL BOLD SCRIPT CAPITAL M
+1D4DD ; FC_NFKC; 006E # L& MATHEMATICAL BOLD SCRIPT CAPITAL N
+1D4DE ; FC_NFKC; 006F # L& MATHEMATICAL BOLD SCRIPT CAPITAL O
+1D4DF ; FC_NFKC; 0070 # L& MATHEMATICAL BOLD SCRIPT CAPITAL P
+1D4E0 ; FC_NFKC; 0071 # L& MATHEMATICAL BOLD SCRIPT CAPITAL Q
+1D4E1 ; FC_NFKC; 0072 # L& MATHEMATICAL BOLD SCRIPT CAPITAL R
+1D4E2 ; FC_NFKC; 0073 # L& MATHEMATICAL BOLD SCRIPT CAPITAL S
+1D4E3 ; FC_NFKC; 0074 # L& MATHEMATICAL BOLD SCRIPT CAPITAL T
+1D4E4 ; FC_NFKC; 0075 # L& MATHEMATICAL BOLD SCRIPT CAPITAL U
+1D4E5 ; FC_NFKC; 0076 # L& MATHEMATICAL BOLD SCRIPT CAPITAL V
+1D4E6 ; FC_NFKC; 0077 # L& MATHEMATICAL BOLD SCRIPT CAPITAL W
+1D4E7 ; FC_NFKC; 0078 # L& MATHEMATICAL BOLD SCRIPT CAPITAL X
+1D4E8 ; FC_NFKC; 0079 # L& MATHEMATICAL BOLD SCRIPT CAPITAL Y
+1D4E9 ; FC_NFKC; 007A # L& MATHEMATICAL BOLD SCRIPT CAPITAL Z
+1D504 ; FC_NFKC; 0061 # L& MATHEMATICAL FRAKTUR CAPITAL A
+1D505 ; FC_NFKC; 0062 # L& MATHEMATICAL FRAKTUR CAPITAL B
+1D507 ; FC_NFKC; 0064 # L& MATHEMATICAL FRAKTUR CAPITAL D
+1D508 ; FC_NFKC; 0065 # L& MATHEMATICAL FRAKTUR CAPITAL E
+1D509 ; FC_NFKC; 0066 # L& MATHEMATICAL FRAKTUR CAPITAL F
+1D50A ; FC_NFKC; 0067 # L& MATHEMATICAL FRAKTUR CAPITAL G
+1D50D ; FC_NFKC; 006A # L& MATHEMATICAL FRAKTUR CAPITAL J
+1D50E ; FC_NFKC; 006B # L& MATHEMATICAL FRAKTUR CAPITAL K
+1D50F ; FC_NFKC; 006C # L& MATHEMATICAL FRAKTUR CAPITAL L
+1D510 ; FC_NFKC; 006D # L& MATHEMATICAL FRAKTUR CAPITAL M
+1D511 ; FC_NFKC; 006E # L& MATHEMATICAL FRAKTUR CAPITAL N
+1D512 ; FC_NFKC; 006F # L& MATHEMATICAL FRAKTUR CAPITAL O
+1D513 ; FC_NFKC; 0070 # L& MATHEMATICAL FRAKTUR CAPITAL P
+1D514 ; FC_NFKC; 0071 # L& MATHEMATICAL FRAKTUR CAPITAL Q
+1D516 ; FC_NFKC; 0073 # L& MATHEMATICAL FRAKTUR CAPITAL S
+1D517 ; FC_NFKC; 0074 # L& MATHEMATICAL FRAKTUR CAPITAL T
+1D518 ; FC_NFKC; 0075 # L& MATHEMATICAL FRAKTUR CAPITAL U
+1D519 ; FC_NFKC; 0076 # L& MATHEMATICAL FRAKTUR CAPITAL V
+1D51A ; FC_NFKC; 0077 # L& MATHEMATICAL FRAKTUR CAPITAL W
+1D51B ; FC_NFKC; 0078 # L& MATHEMATICAL FRAKTUR CAPITAL X
+1D51C ; FC_NFKC; 0079 # L& MATHEMATICAL FRAKTUR CAPITAL Y
+1D538 ; FC_NFKC; 0061 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL A
+1D539 ; FC_NFKC; 0062 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D53B ; FC_NFKC; 0064 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL D
+1D53C ; FC_NFKC; 0065 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL E
+1D53D ; FC_NFKC; 0066 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL F
+1D53E ; FC_NFKC; 0067 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D540 ; FC_NFKC; 0069 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL I
+1D541 ; FC_NFKC; 006A # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL J
+1D542 ; FC_NFKC; 006B # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL K
+1D543 ; FC_NFKC; 006C # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL L
+1D544 ; FC_NFKC; 006D # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D546 ; FC_NFKC; 006F # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D54A ; FC_NFKC; 0073 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL S
+1D54B ; FC_NFKC; 0074 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL T
+1D54C ; FC_NFKC; 0075 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL U
+1D54D ; FC_NFKC; 0076 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL V
+1D54E ; FC_NFKC; 0077 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL W
+1D54F ; FC_NFKC; 0078 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL X
+1D550 ; FC_NFKC; 0079 # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D56C ; FC_NFKC; 0061 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL A
+1D56D ; FC_NFKC; 0062 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL B
+1D56E ; FC_NFKC; 0063 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL C
+1D56F ; FC_NFKC; 0064 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL D
+1D570 ; FC_NFKC; 0065 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL E
+1D571 ; FC_NFKC; 0066 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL F
+1D572 ; FC_NFKC; 0067 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL G
+1D573 ; FC_NFKC; 0068 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL H
+1D574 ; FC_NFKC; 0069 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL I
+1D575 ; FC_NFKC; 006A # L& MATHEMATICAL BOLD FRAKTUR CAPITAL J
+1D576 ; FC_NFKC; 006B # L& MATHEMATICAL BOLD FRAKTUR CAPITAL K
+1D577 ; FC_NFKC; 006C # L& MATHEMATICAL BOLD FRAKTUR CAPITAL L
+1D578 ; FC_NFKC; 006D # L& MATHEMATICAL BOLD FRAKTUR CAPITAL M
+1D579 ; FC_NFKC; 006E # L& MATHEMATICAL BOLD FRAKTUR CAPITAL N
+1D57A ; FC_NFKC; 006F # L& MATHEMATICAL BOLD FRAKTUR CAPITAL O
+1D57B ; FC_NFKC; 0070 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL P
+1D57C ; FC_NFKC; 0071 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL Q
+1D57D ; FC_NFKC; 0072 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL R
+1D57E ; FC_NFKC; 0073 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL S
+1D57F ; FC_NFKC; 0074 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL T
+1D580 ; FC_NFKC; 0075 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL U
+1D581 ; FC_NFKC; 0076 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL V
+1D582 ; FC_NFKC; 0077 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL W
+1D583 ; FC_NFKC; 0078 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL X
+1D584 ; FC_NFKC; 0079 # L& MATHEMATICAL BOLD FRAKTUR CAPITAL Y
+1D585 ; FC_NFKC; 007A # L& MATHEMATICAL BOLD FRAKTUR CAPITAL Z
+1D5A0 ; FC_NFKC; 0061 # L& MATHEMATICAL SANS-SERIF CAPITAL A
+1D5A1 ; FC_NFKC; 0062 # L& MATHEMATICAL SANS-SERIF CAPITAL B
+1D5A2 ; FC_NFKC; 0063 # L& MATHEMATICAL SANS-SERIF CAPITAL C
+1D5A3 ; FC_NFKC; 0064 # L& MATHEMATICAL SANS-SERIF CAPITAL D
+1D5A4 ; FC_NFKC; 0065 # L& MATHEMATICAL SANS-SERIF CAPITAL E
+1D5A5 ; FC_NFKC; 0066 # L& MATHEMATICAL SANS-SERIF CAPITAL F
+1D5A6 ; FC_NFKC; 0067 # L& MATHEMATICAL SANS-SERIF CAPITAL G
+1D5A7 ; FC_NFKC; 0068 # L& MATHEMATICAL SANS-SERIF CAPITAL H
+1D5A8 ; FC_NFKC; 0069 # L& MATHEMATICAL SANS-SERIF CAPITAL I
+1D5A9 ; FC_NFKC; 006A # L& MATHEMATICAL SANS-SERIF CAPITAL J
+1D5AA ; FC_NFKC; 006B # L& MATHEMATICAL SANS-SERIF CAPITAL K
+1D5AB ; FC_NFKC; 006C # L& MATHEMATICAL SANS-SERIF CAPITAL L
+1D5AC ; FC_NFKC; 006D # L& MATHEMATICAL SANS-SERIF CAPITAL M
+1D5AD ; FC_NFKC; 006E # L& MATHEMATICAL SANS-SERIF CAPITAL N
+1D5AE ; FC_NFKC; 006F # L& MATHEMATICAL SANS-SERIF CAPITAL O
+1D5AF ; FC_NFKC; 0070 # L& MATHEMATICAL SANS-SERIF CAPITAL P
+1D5B0 ; FC_NFKC; 0071 # L& MATHEMATICAL SANS-SERIF CAPITAL Q
+1D5B1 ; FC_NFKC; 0072 # L& MATHEMATICAL SANS-SERIF CAPITAL R
+1D5B2 ; FC_NFKC; 0073 # L& MATHEMATICAL SANS-SERIF CAPITAL S
+1D5B3 ; FC_NFKC; 0074 # L& MATHEMATICAL SANS-SERIF CAPITAL T
+1D5B4 ; FC_NFKC; 0075 # L& MATHEMATICAL SANS-SERIF CAPITAL U
+1D5B5 ; FC_NFKC; 0076 # L& MATHEMATICAL SANS-SERIF CAPITAL V
+1D5B6 ; FC_NFKC; 0077 # L& MATHEMATICAL SANS-SERIF CAPITAL W
+1D5B7 ; FC_NFKC; 0078 # L& MATHEMATICAL SANS-SERIF CAPITAL X
+1D5B8 ; FC_NFKC; 0079 # L& MATHEMATICAL SANS-SERIF CAPITAL Y
+1D5B9 ; FC_NFKC; 007A # L& MATHEMATICAL SANS-SERIF CAPITAL Z
+1D5D4 ; FC_NFKC; 0061 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL A
+1D5D5 ; FC_NFKC; 0062 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL B
+1D5D6 ; FC_NFKC; 0063 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL C
+1D5D7 ; FC_NFKC; 0064 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL D
+1D5D8 ; FC_NFKC; 0065 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL E
+1D5D9 ; FC_NFKC; 0066 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL F
+1D5DA ; FC_NFKC; 0067 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL G
+1D5DB ; FC_NFKC; 0068 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL H
+1D5DC ; FC_NFKC; 0069 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL I
+1D5DD ; FC_NFKC; 006A # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL J
+1D5DE ; FC_NFKC; 006B # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL K
+1D5DF ; FC_NFKC; 006C # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL L
+1D5E0 ; FC_NFKC; 006D # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL M
+1D5E1 ; FC_NFKC; 006E # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL N
+1D5E2 ; FC_NFKC; 006F # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL O
+1D5E3 ; FC_NFKC; 0070 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL P
+1D5E4 ; FC_NFKC; 0071 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL Q
+1D5E5 ; FC_NFKC; 0072 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL R
+1D5E6 ; FC_NFKC; 0073 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL S
+1D5E7 ; FC_NFKC; 0074 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL T
+1D5E8 ; FC_NFKC; 0075 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL U
+1D5E9 ; FC_NFKC; 0076 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL V
+1D5EA ; FC_NFKC; 0077 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL W
+1D5EB ; FC_NFKC; 0078 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL X
+1D5EC ; FC_NFKC; 0079 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL Y
+1D5ED ; FC_NFKC; 007A # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
+1D608 ; FC_NFKC; 0061 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL A
+1D609 ; FC_NFKC; 0062 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL B
+1D60A ; FC_NFKC; 0063 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL C
+1D60B ; FC_NFKC; 0064 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL D
+1D60C ; FC_NFKC; 0065 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL E
+1D60D ; FC_NFKC; 0066 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL F
+1D60E ; FC_NFKC; 0067 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL G
+1D60F ; FC_NFKC; 0068 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL H
+1D610 ; FC_NFKC; 0069 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL I
+1D611 ; FC_NFKC; 006A # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL J
+1D612 ; FC_NFKC; 006B # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL K
+1D613 ; FC_NFKC; 006C # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL L
+1D614 ; FC_NFKC; 006D # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL M
+1D615 ; FC_NFKC; 006E # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL N
+1D616 ; FC_NFKC; 006F # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL O
+1D617 ; FC_NFKC; 0070 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL P
+1D618 ; FC_NFKC; 0071 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q
+1D619 ; FC_NFKC; 0072 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL R
+1D61A ; FC_NFKC; 0073 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL S
+1D61B ; FC_NFKC; 0074 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL T
+1D61C ; FC_NFKC; 0075 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL U
+1D61D ; FC_NFKC; 0076 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL V
+1D61E ; FC_NFKC; 0077 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL W
+1D61F ; FC_NFKC; 0078 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL X
+1D620 ; FC_NFKC; 0079 # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y
+1D621 ; FC_NFKC; 007A # L& MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
+1D63C ; FC_NFKC; 0061 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A
+1D63D ; FC_NFKC; 0062 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B
+1D63E ; FC_NFKC; 0063 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C
+1D63F ; FC_NFKC; 0064 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D
+1D640 ; FC_NFKC; 0065 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E
+1D641 ; FC_NFKC; 0066 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F
+1D642 ; FC_NFKC; 0067 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G
+1D643 ; FC_NFKC; 0068 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H
+1D644 ; FC_NFKC; 0069 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I
+1D645 ; FC_NFKC; 006A # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J
+1D646 ; FC_NFKC; 006B # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K
+1D647 ; FC_NFKC; 006C # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L
+1D648 ; FC_NFKC; 006D # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M
+1D649 ; FC_NFKC; 006E # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N
+1D64A ; FC_NFKC; 006F # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O
+1D64B ; FC_NFKC; 0070 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P
+1D64C ; FC_NFKC; 0071 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q
+1D64D ; FC_NFKC; 0072 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R
+1D64E ; FC_NFKC; 0073 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S
+1D64F ; FC_NFKC; 0074 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T
+1D650 ; FC_NFKC; 0075 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U
+1D651 ; FC_NFKC; 0076 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V
+1D652 ; FC_NFKC; 0077 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W
+1D653 ; FC_NFKC; 0078 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X
+1D654 ; FC_NFKC; 0079 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y
+1D655 ; FC_NFKC; 007A # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
+1D670 ; FC_NFKC; 0061 # L& MATHEMATICAL MONOSPACE CAPITAL A
+1D671 ; FC_NFKC; 0062 # L& MATHEMATICAL MONOSPACE CAPITAL B
+1D672 ; FC_NFKC; 0063 # L& MATHEMATICAL MONOSPACE CAPITAL C
+1D673 ; FC_NFKC; 0064 # L& MATHEMATICAL MONOSPACE CAPITAL D
+1D674 ; FC_NFKC; 0065 # L& MATHEMATICAL MONOSPACE CAPITAL E
+1D675 ; FC_NFKC; 0066 # L& MATHEMATICAL MONOSPACE CAPITAL F
+1D676 ; FC_NFKC; 0067 # L& MATHEMATICAL MONOSPACE CAPITAL G
+1D677 ; FC_NFKC; 0068 # L& MATHEMATICAL MONOSPACE CAPITAL H
+1D678 ; FC_NFKC; 0069 # L& MATHEMATICAL MONOSPACE CAPITAL I
+1D679 ; FC_NFKC; 006A # L& MATHEMATICAL MONOSPACE CAPITAL J
+1D67A ; FC_NFKC; 006B # L& MATHEMATICAL MONOSPACE CAPITAL K
+1D67B ; FC_NFKC; 006C # L& MATHEMATICAL MONOSPACE CAPITAL L
+1D67C ; FC_NFKC; 006D # L& MATHEMATICAL MONOSPACE CAPITAL M
+1D67D ; FC_NFKC; 006E # L& MATHEMATICAL MONOSPACE CAPITAL N
+1D67E ; FC_NFKC; 006F # L& MATHEMATICAL MONOSPACE CAPITAL O
+1D67F ; FC_NFKC; 0070 # L& MATHEMATICAL MONOSPACE CAPITAL P
+1D680 ; FC_NFKC; 0071 # L& MATHEMATICAL MONOSPACE CAPITAL Q
+1D681 ; FC_NFKC; 0072 # L& MATHEMATICAL MONOSPACE CAPITAL R
+1D682 ; FC_NFKC; 0073 # L& MATHEMATICAL MONOSPACE CAPITAL S
+1D683 ; FC_NFKC; 0074 # L& MATHEMATICAL MONOSPACE CAPITAL T
+1D684 ; FC_NFKC; 0075 # L& MATHEMATICAL MONOSPACE CAPITAL U
+1D685 ; FC_NFKC; 0076 # L& MATHEMATICAL MONOSPACE CAPITAL V
+1D686 ; FC_NFKC; 0077 # L& MATHEMATICAL MONOSPACE CAPITAL W
+1D687 ; FC_NFKC; 0078 # L& MATHEMATICAL MONOSPACE CAPITAL X
+1D688 ; FC_NFKC; 0079 # L& MATHEMATICAL MONOSPACE CAPITAL Y
+1D689 ; FC_NFKC; 007A # L& MATHEMATICAL MONOSPACE CAPITAL Z
+1D6A8 ; FC_NFKC; 03B1 # L& MATHEMATICAL BOLD CAPITAL ALPHA
+1D6A9 ; FC_NFKC; 03B2 # L& MATHEMATICAL BOLD CAPITAL BETA
+1D6AA ; FC_NFKC; 03B3 # L& MATHEMATICAL BOLD CAPITAL GAMMA
+1D6AB ; FC_NFKC; 03B4 # L& MATHEMATICAL BOLD CAPITAL DELTA
+1D6AC ; FC_NFKC; 03B5 # L& MATHEMATICAL BOLD CAPITAL EPSILON
+1D6AD ; FC_NFKC; 03B6 # L& MATHEMATICAL BOLD CAPITAL ZETA
+1D6AE ; FC_NFKC; 03B7 # L& MATHEMATICAL BOLD CAPITAL ETA
+1D6AF ; FC_NFKC; 03B8 # L& MATHEMATICAL BOLD CAPITAL THETA
+1D6B0 ; FC_NFKC; 03B9 # L& MATHEMATICAL BOLD CAPITAL IOTA
+1D6B1 ; FC_NFKC; 03BA # L& MATHEMATICAL BOLD CAPITAL KAPPA
+1D6B2 ; FC_NFKC; 03BB # L& MATHEMATICAL BOLD CAPITAL LAMDA
+1D6B3 ; FC_NFKC; 03BC # L& MATHEMATICAL BOLD CAPITAL MU
+1D6B4 ; FC_NFKC; 03BD # L& MATHEMATICAL BOLD CAPITAL NU
+1D6B5 ; FC_NFKC; 03BE # L& MATHEMATICAL BOLD CAPITAL XI
+1D6B6 ; FC_NFKC; 03BF # L& MATHEMATICAL BOLD CAPITAL OMICRON
+1D6B7 ; FC_NFKC; 03C0 # L& MATHEMATICAL BOLD CAPITAL PI
+1D6B8 ; FC_NFKC; 03C1 # L& MATHEMATICAL BOLD CAPITAL RHO
+1D6B9 ; FC_NFKC; 03B8 # L& MATHEMATICAL BOLD CAPITAL THETA SYMBOL
+1D6BA ; FC_NFKC; 03C3 # L& MATHEMATICAL BOLD CAPITAL SIGMA
+1D6BB ; FC_NFKC; 03C4 # L& MATHEMATICAL BOLD CAPITAL TAU
+1D6BC ; FC_NFKC; 03C5 # L& MATHEMATICAL BOLD CAPITAL UPSILON
+1D6BD ; FC_NFKC; 03C6 # L& MATHEMATICAL BOLD CAPITAL PHI
+1D6BE ; FC_NFKC; 03C7 # L& MATHEMATICAL BOLD CAPITAL CHI
+1D6BF ; FC_NFKC; 03C8 # L& MATHEMATICAL BOLD CAPITAL PSI
+1D6C0 ; FC_NFKC; 03C9 # L& MATHEMATICAL BOLD CAPITAL OMEGA
+1D6D3 ; FC_NFKC; 03C3 # L& MATHEMATICAL BOLD SMALL FINAL SIGMA
+1D6E2 ; FC_NFKC; 03B1 # L& MATHEMATICAL ITALIC CAPITAL ALPHA
+1D6E3 ; FC_NFKC; 03B2 # L& MATHEMATICAL ITALIC CAPITAL BETA
+1D6E4 ; FC_NFKC; 03B3 # L& MATHEMATICAL ITALIC CAPITAL GAMMA
+1D6E5 ; FC_NFKC; 03B4 # L& MATHEMATICAL ITALIC CAPITAL DELTA
+1D6E6 ; FC_NFKC; 03B5 # L& MATHEMATICAL ITALIC CAPITAL EPSILON
+1D6E7 ; FC_NFKC; 03B6 # L& MATHEMATICAL ITALIC CAPITAL ZETA
+1D6E8 ; FC_NFKC; 03B7 # L& MATHEMATICAL ITALIC CAPITAL ETA
+1D6E9 ; FC_NFKC; 03B8 # L& MATHEMATICAL ITALIC CAPITAL THETA
+1D6EA ; FC_NFKC; 03B9 # L& MATHEMATICAL ITALIC CAPITAL IOTA
+1D6EB ; FC_NFKC; 03BA # L& MATHEMATICAL ITALIC CAPITAL KAPPA
+1D6EC ; FC_NFKC; 03BB # L& MATHEMATICAL ITALIC CAPITAL LAMDA
+1D6ED ; FC_NFKC; 03BC # L& MATHEMATICAL ITALIC CAPITAL MU
+1D6EE ; FC_NFKC; 03BD # L& MATHEMATICAL ITALIC CAPITAL NU
+1D6EF ; FC_NFKC; 03BE # L& MATHEMATICAL ITALIC CAPITAL XI
+1D6F0 ; FC_NFKC; 03BF # L& MATHEMATICAL ITALIC CAPITAL OMICRON
+1D6F1 ; FC_NFKC; 03C0 # L& MATHEMATICAL ITALIC CAPITAL PI
+1D6F2 ; FC_NFKC; 03C1 # L& MATHEMATICAL ITALIC CAPITAL RHO
+1D6F3 ; FC_NFKC; 03B8 # L& MATHEMATICAL ITALIC CAPITAL THETA SYMBOL
+1D6F4 ; FC_NFKC; 03C3 # L& MATHEMATICAL ITALIC CAPITAL SIGMA
+1D6F5 ; FC_NFKC; 03C4 # L& MATHEMATICAL ITALIC CAPITAL TAU
+1D6F6 ; FC_NFKC; 03C5 # L& MATHEMATICAL ITALIC CAPITAL UPSILON
+1D6F7 ; FC_NFKC; 03C6 # L& MATHEMATICAL ITALIC CAPITAL PHI
+1D6F8 ; FC_NFKC; 03C7 # L& MATHEMATICAL ITALIC CAPITAL CHI
+1D6F9 ; FC_NFKC; 03C8 # L& MATHEMATICAL ITALIC CAPITAL PSI
+1D6FA ; FC_NFKC; 03C9 # L& MATHEMATICAL ITALIC CAPITAL OMEGA
+1D70D ; FC_NFKC; 03C3 # L& MATHEMATICAL ITALIC SMALL FINAL SIGMA
+1D71C ; FC_NFKC; 03B1 # L& MATHEMATICAL BOLD ITALIC CAPITAL ALPHA
+1D71D ; FC_NFKC; 03B2 # L& MATHEMATICAL BOLD ITALIC CAPITAL BETA
+1D71E ; FC_NFKC; 03B3 # L& MATHEMATICAL BOLD ITALIC CAPITAL GAMMA
+1D71F ; FC_NFKC; 03B4 # L& MATHEMATICAL BOLD ITALIC CAPITAL DELTA
+1D720 ; FC_NFKC; 03B5 # L& MATHEMATICAL BOLD ITALIC CAPITAL EPSILON
+1D721 ; FC_NFKC; 03B6 # L& MATHEMATICAL BOLD ITALIC CAPITAL ZETA
+1D722 ; FC_NFKC; 03B7 # L& MATHEMATICAL BOLD ITALIC CAPITAL ETA
+1D723 ; FC_NFKC; 03B8 # L& MATHEMATICAL BOLD ITALIC CAPITAL THETA
+1D724 ; FC_NFKC; 03B9 # L& MATHEMATICAL BOLD ITALIC CAPITAL IOTA
+1D725 ; FC_NFKC; 03BA # L& MATHEMATICAL BOLD ITALIC CAPITAL KAPPA
+1D726 ; FC_NFKC; 03BB # L& MATHEMATICAL BOLD ITALIC CAPITAL LAMDA
+1D727 ; FC_NFKC; 03BC # L& MATHEMATICAL BOLD ITALIC CAPITAL MU
+1D728 ; FC_NFKC; 03BD # L& MATHEMATICAL BOLD ITALIC CAPITAL NU
+1D729 ; FC_NFKC; 03BE # L& MATHEMATICAL BOLD ITALIC CAPITAL XI
+1D72A ; FC_NFKC; 03BF # L& MATHEMATICAL BOLD ITALIC CAPITAL OMICRON
+1D72B ; FC_NFKC; 03C0 # L& MATHEMATICAL BOLD ITALIC CAPITAL PI
+1D72C ; FC_NFKC; 03C1 # L& MATHEMATICAL BOLD ITALIC CAPITAL RHO
+1D72D ; FC_NFKC; 03B8 # L& MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL
+1D72E ; FC_NFKC; 03C3 # L& MATHEMATICAL BOLD ITALIC CAPITAL SIGMA
+1D72F ; FC_NFKC; 03C4 # L& MATHEMATICAL BOLD ITALIC CAPITAL TAU
+1D730 ; FC_NFKC; 03C5 # L& MATHEMATICAL BOLD ITALIC CAPITAL UPSILON
+1D731 ; FC_NFKC; 03C6 # L& MATHEMATICAL BOLD ITALIC CAPITAL PHI
+1D732 ; FC_NFKC; 03C7 # L& MATHEMATICAL BOLD ITALIC CAPITAL CHI
+1D733 ; FC_NFKC; 03C8 # L& MATHEMATICAL BOLD ITALIC CAPITAL PSI
+1D734 ; FC_NFKC; 03C9 # L& MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D747 ; FC_NFKC; 03C3 # L& MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA
+1D756 ; FC_NFKC; 03B1 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA
+1D757 ; FC_NFKC; 03B2 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA
+1D758 ; FC_NFKC; 03B3 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA
+1D759 ; FC_NFKC; 03B4 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA
+1D75A ; FC_NFKC; 03B5 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON
+1D75B ; FC_NFKC; 03B6 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA
+1D75C ; FC_NFKC; 03B7 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA
+1D75D ; FC_NFKC; 03B8 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA
+1D75E ; FC_NFKC; 03B9 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA
+1D75F ; FC_NFKC; 03BA # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA
+1D760 ; FC_NFKC; 03BB # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA
+1D761 ; FC_NFKC; 03BC # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL MU
+1D762 ; FC_NFKC; 03BD # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL NU
+1D763 ; FC_NFKC; 03BE # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL XI
+1D764 ; FC_NFKC; 03BF # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON
+1D765 ; FC_NFKC; 03C0 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL PI
+1D766 ; FC_NFKC; 03C1 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO
+1D767 ; FC_NFKC; 03B8 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL
+1D768 ; FC_NFKC; 03C3 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA
+1D769 ; FC_NFKC; 03C4 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU
+1D76A ; FC_NFKC; 03C5 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON
+1D76B ; FC_NFKC; 03C6 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI
+1D76C ; FC_NFKC; 03C7 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI
+1D76D ; FC_NFKC; 03C8 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI
+1D76E ; FC_NFKC; 03C9 # L& MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D781 ; FC_NFKC; 03C3 # L& MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA
+1D790 ; FC_NFKC; 03B1 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA
+1D791 ; FC_NFKC; 03B2 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA
+1D792 ; FC_NFKC; 03B3 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA
+1D793 ; FC_NFKC; 03B4 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA
+1D794 ; FC_NFKC; 03B5 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON
+1D795 ; FC_NFKC; 03B6 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA
+1D796 ; FC_NFKC; 03B7 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA
+1D797 ; FC_NFKC; 03B8 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA
+1D798 ; FC_NFKC; 03B9 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA
+1D799 ; FC_NFKC; 03BA # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA
+1D79A ; FC_NFKC; 03BB # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA
+1D79B ; FC_NFKC; 03BC # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU
+1D79C ; FC_NFKC; 03BD # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU
+1D79D ; FC_NFKC; 03BE # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI
+1D79E ; FC_NFKC; 03BF # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON
+1D79F ; FC_NFKC; 03C0 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI
+1D7A0 ; FC_NFKC; 03C1 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO
+1D7A1 ; FC_NFKC; 03B8 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL
+1D7A2 ; FC_NFKC; 03C3 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA
+1D7A3 ; FC_NFKC; 03C4 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU
+1D7A4 ; FC_NFKC; 03C5 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON
+1D7A5 ; FC_NFKC; 03C6 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI
+1D7A6 ; FC_NFKC; 03C7 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI
+1D7A7 ; FC_NFKC; 03C8 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI
+1D7A8 ; FC_NFKC; 03C9 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1D7BB ; FC_NFKC; 03C3 # L& MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA
+1D7CA ; FC_NFKC; 03DD # L& MATHEMATICAL BOLD CAPITAL DIGAMMA
+
+# Total code points: 565
+
+# ================================================
+
+# Derived Property: Full_Composition_Exclusion
+# Generated from: Composition Exclusions + Singletons + Non-Starter Decompositions
+
+0340..0341 ; Full_Composition_Exclusion # Mn [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+0343..0344 ; Full_Composition_Exclusion # Mn [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS
+0374 ; Full_Composition_Exclusion # Sk GREEK NUMERAL SIGN
+037E ; Full_Composition_Exclusion # Po GREEK QUESTION MARK
+0387 ; Full_Composition_Exclusion # Po GREEK ANO TELEIA
+0958..095F ; Full_Composition_Exclusion # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09DC..09DD ; Full_Composition_Exclusion # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; Full_Composition_Exclusion # Lo BENGALI LETTER YYA
+0A33 ; Full_Composition_Exclusion # Lo GURMUKHI LETTER LLA
+0A36 ; Full_Composition_Exclusion # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; Full_Composition_Exclusion # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; Full_Composition_Exclusion # Lo GURMUKHI LETTER FA
+0B5C..0B5D ; Full_Composition_Exclusion # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0F43 ; Full_Composition_Exclusion # Lo TIBETAN LETTER GHA
+0F4D ; Full_Composition_Exclusion # Lo TIBETAN LETTER DDHA
+0F52 ; Full_Composition_Exclusion # Lo TIBETAN LETTER DHA
+0F57 ; Full_Composition_Exclusion # Lo TIBETAN LETTER BHA
+0F5C ; Full_Composition_Exclusion # Lo TIBETAN LETTER DZHA
+0F69 ; Full_Composition_Exclusion # Lo TIBETAN LETTER KSSA
+0F73 ; Full_Composition_Exclusion # Mn TIBETAN VOWEL SIGN II
+0F75..0F76 ; Full_Composition_Exclusion # Mn [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R
+0F78 ; Full_Composition_Exclusion # Mn TIBETAN VOWEL SIGN VOCALIC L
+0F81 ; Full_Composition_Exclusion # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; Full_Composition_Exclusion # Mn TIBETAN SUBJOINED LETTER KSSA
+1F71 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER ALPHA WITH OXIA
+1F73 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER EPSILON WITH OXIA
+1F75 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER ETA WITH OXIA
+1F77 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER IOTA WITH OXIA
+1F79 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER OMICRON WITH OXIA
+1F7B ; Full_Composition_Exclusion # L& GREEK SMALL LETTER UPSILON WITH OXIA
+1F7D ; Full_Composition_Exclusion # L& GREEK SMALL LETTER OMEGA WITH OXIA
+1FBB ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER ALPHA WITH OXIA
+1FBE ; Full_Composition_Exclusion # L& GREEK PROSGEGRAMMENI
+1FC9 ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER EPSILON WITH OXIA
+1FCB ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER ETA WITH OXIA
+1FD3 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FDB ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER IOTA WITH OXIA
+1FE3 ; Full_Composition_Exclusion # L& GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FEB ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER UPSILON WITH OXIA
+1FEE..1FEF ; Full_Composition_Exclusion # Sk [2] GREEK DIALYTIKA AND OXIA..GREEK VARIA
+1FF9 ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER OMICRON WITH OXIA
+1FFB ; Full_Composition_Exclusion # L& GREEK CAPITAL LETTER OMEGA WITH OXIA
+1FFD ; Full_Composition_Exclusion # Sk GREEK OXIA
+2000..2001 ; Full_Composition_Exclusion # Zs [2] EN QUAD..EM QUAD
+2126 ; Full_Composition_Exclusion # L& OHM SIGN
+212A..212B ; Full_Composition_Exclusion # L& [2] KELVIN SIGN..ANGSTROM SIGN
+2329 ; Full_Composition_Exclusion # Ps LEFT-POINTING ANGLE BRACKET
+232A ; Full_Composition_Exclusion # Pe RIGHT-POINTING ANGLE BRACKET
+2ADC ; Full_Composition_Exclusion # Sm FORKING
+F900..FA0D ; Full_Composition_Exclusion # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+FA10 ; Full_Composition_Exclusion # Lo CJK COMPATIBILITY IDEOGRAPH-FA10
+FA12 ; Full_Composition_Exclusion # Lo CJK COMPATIBILITY IDEOGRAPH-FA12
+FA15..FA1E ; Full_Composition_Exclusion # Lo [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+FA20 ; Full_Composition_Exclusion # Lo CJK COMPATIBILITY IDEOGRAPH-FA20
+FA22 ; Full_Composition_Exclusion # Lo CJK COMPATIBILITY IDEOGRAPH-FA22
+FA25..FA26 ; Full_Composition_Exclusion # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+FA2A..FA2D ; Full_Composition_Exclusion # Lo [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30..FA6A ; Full_Composition_Exclusion # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA70..FAD9 ; Full_Composition_Exclusion # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+FB1D ; Full_Composition_Exclusion # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F ; Full_Composition_Exclusion # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A..FB36 ; Full_Composition_Exclusion # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; Full_Composition_Exclusion # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; Full_Composition_Exclusion # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; Full_Composition_Exclusion # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; Full_Composition_Exclusion # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4E ; Full_Composition_Exclusion # Lo [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE
+1D15E..1D164 ; Full_Composition_Exclusion # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; Full_Composition_Exclusion # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+2F800..2FA1D ; Full_Composition_Exclusion # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 1115
+
+# ================================================
+
+# Property: NFD_Quick_Check
+
+# All code points not explicitly listed for NFD_Quick_Check
+# have the value Yes (Y).
+
+# @missing: 0000..10FFFF; NFD_QC; Yes
+
+# ================================================
+
+# NFD_Quick_Check=No
+
+00C0..00C5 ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER A WITH RING ABOVE
+00C7..00CF ; NFD_QC; N # L& [9] LATIN CAPITAL LETTER C WITH CEDILLA..LATIN CAPITAL LETTER I WITH DIAERESIS
+00D1..00D6 ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER N WITH TILDE..LATIN CAPITAL LETTER O WITH DIAERESIS
+00D9..00DD ; NFD_QC; N # L& [5] LATIN CAPITAL LETTER U WITH GRAVE..LATIN CAPITAL LETTER Y WITH ACUTE
+00E0..00E5 ; NFD_QC; N # L& [6] LATIN SMALL LETTER A WITH GRAVE..LATIN SMALL LETTER A WITH RING ABOVE
+00E7..00EF ; NFD_QC; N # L& [9] LATIN SMALL LETTER C WITH CEDILLA..LATIN SMALL LETTER I WITH DIAERESIS
+00F1..00F6 ; NFD_QC; N # L& [6] LATIN SMALL LETTER N WITH TILDE..LATIN SMALL LETTER O WITH DIAERESIS
+00F9..00FD ; NFD_QC; N # L& [5] LATIN SMALL LETTER U WITH GRAVE..LATIN SMALL LETTER Y WITH ACUTE
+00FF..010F ; NFD_QC; N # L& [17] LATIN SMALL LETTER Y WITH DIAERESIS..LATIN SMALL LETTER D WITH CARON
+0112..0125 ; NFD_QC; N # L& [20] LATIN CAPITAL LETTER E WITH MACRON..LATIN SMALL LETTER H WITH CIRCUMFLEX
+0128..0130 ; NFD_QC; N # L& [9] LATIN CAPITAL LETTER I WITH TILDE..LATIN CAPITAL LETTER I WITH DOT ABOVE
+0134..0137 ; NFD_QC; N # L& [4] LATIN CAPITAL LETTER J WITH CIRCUMFLEX..LATIN SMALL LETTER K WITH CEDILLA
+0139..013E ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER L WITH CARON
+0143..0148 ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER N WITH ACUTE..LATIN SMALL LETTER N WITH CARON
+014C..0151 ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER O WITH MACRON..LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0154..0165 ; NFD_QC; N # L& [18] LATIN CAPITAL LETTER R WITH ACUTE..LATIN SMALL LETTER T WITH CARON
+0168..017E ; NFD_QC; N # L& [23] LATIN CAPITAL LETTER U WITH TILDE..LATIN SMALL LETTER Z WITH CARON
+01A0..01A1 ; NFD_QC; N # L& [2] LATIN CAPITAL LETTER O WITH HORN..LATIN SMALL LETTER O WITH HORN
+01AF..01B0 ; NFD_QC; N # L& [2] LATIN CAPITAL LETTER U WITH HORN..LATIN SMALL LETTER U WITH HORN
+01CD..01DC ; NFD_QC; N # L& [16] LATIN CAPITAL LETTER A WITH CARON..LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DE..01E3 ; NFD_QC; N # L& [6] LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON..LATIN SMALL LETTER AE WITH MACRON
+01E6..01F0 ; NFD_QC; N # L& [11] LATIN CAPITAL LETTER G WITH CARON..LATIN SMALL LETTER J WITH CARON
+01F4..01F5 ; NFD_QC; N # L& [2] LATIN CAPITAL LETTER G WITH ACUTE..LATIN SMALL LETTER G WITH ACUTE
+01F8..021B ; NFD_QC; N # L& [36] LATIN CAPITAL LETTER N WITH GRAVE..LATIN SMALL LETTER T WITH COMMA BELOW
+021E..021F ; NFD_QC; N # L& [2] LATIN CAPITAL LETTER H WITH CARON..LATIN SMALL LETTER H WITH CARON
+0226..0233 ; NFD_QC; N # L& [14] LATIN CAPITAL LETTER A WITH DOT ABOVE..LATIN SMALL LETTER Y WITH MACRON
+0340..0341 ; NFD_QC; N # Mn [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+0343..0344 ; NFD_QC; N # Mn [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS
+0374 ; NFD_QC; N # Sk GREEK NUMERAL SIGN
+037E ; NFD_QC; N # Po GREEK QUESTION MARK
+0385 ; NFD_QC; N # Sk GREEK DIALYTIKA TONOS
+0386 ; NFD_QC; N # L& GREEK CAPITAL LETTER ALPHA WITH TONOS
+0387 ; NFD_QC; N # Po GREEK ANO TELEIA
+0388..038A ; NFD_QC; N # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+038C ; NFD_QC; N # L& GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E..0390 ; NFD_QC; N # L& [3] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03AA..03B0 ; NFD_QC; N # L& [7] GREEK CAPITAL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03CA..03CE ; NFD_QC; N # L& [5] GREEK SMALL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER OMEGA WITH TONOS
+03D3..03D4 ; NFD_QC; N # L& [2] GREEK UPSILON WITH ACUTE AND HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+0400..0401 ; NFD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC CAPITAL LETTER IO
+0403 ; NFD_QC; N # L& CYRILLIC CAPITAL LETTER GJE
+0407 ; NFD_QC; N # L& CYRILLIC CAPITAL LETTER YI
+040C..040E ; NFD_QC; N # L& [3] CYRILLIC CAPITAL LETTER KJE..CYRILLIC CAPITAL LETTER SHORT U
+0419 ; NFD_QC; N # L& CYRILLIC CAPITAL LETTER SHORT I
+0439 ; NFD_QC; N # L& CYRILLIC SMALL LETTER SHORT I
+0450..0451 ; NFD_QC; N # L& [2] CYRILLIC SMALL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER IO
+0453 ; NFD_QC; N # L& CYRILLIC SMALL LETTER GJE
+0457 ; NFD_QC; N # L& CYRILLIC SMALL LETTER YI
+045C..045E ; NFD_QC; N # L& [3] CYRILLIC SMALL LETTER KJE..CYRILLIC SMALL LETTER SHORT U
+0476..0477 ; NFD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT..CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+04C1..04C2 ; NFD_QC; N # L& [2] CYRILLIC CAPITAL LETTER ZHE WITH BREVE..CYRILLIC SMALL LETTER ZHE WITH BREVE
+04D0..04D3 ; NFD_QC; N # L& [4] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D6..04D7 ; NFD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IE WITH BREVE..CYRILLIC SMALL LETTER IE WITH BREVE
+04DA..04DF ; NFD_QC; N # L& [6] CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS..CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04E2..04E7 ; NFD_QC; N # L& [6] CYRILLIC CAPITAL LETTER I WITH MACRON..CYRILLIC SMALL LETTER O WITH DIAERESIS
+04EA..04F5 ; NFD_QC; N # L& [12] CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS..CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F8..04F9 ; NFD_QC; N # L& [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+0622..0626 ; NFD_QC; N # Lo [5] ARABIC LETTER ALEF WITH MADDA ABOVE..ARABIC LETTER YEH WITH HAMZA ABOVE
+06C0 ; NFD_QC; N # Lo ARABIC LETTER HEH WITH YEH ABOVE
+06C2 ; NFD_QC; N # Lo ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06D3 ; NFD_QC; N # Lo ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+0929 ; NFD_QC; N # Lo DEVANAGARI LETTER NNNA
+0931 ; NFD_QC; N # Lo DEVANAGARI LETTER RRA
+0934 ; NFD_QC; N # Lo DEVANAGARI LETTER LLLA
+0958..095F ; NFD_QC; N # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09CB..09CC ; NFD_QC; N # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+09DC..09DD ; NFD_QC; N # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; NFD_QC; N # Lo BENGALI LETTER YYA
+0A33 ; NFD_QC; N # Lo GURMUKHI LETTER LLA
+0A36 ; NFD_QC; N # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; NFD_QC; N # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; NFD_QC; N # Lo GURMUKHI LETTER FA
+0B48 ; NFD_QC; N # Mc ORIYA VOWEL SIGN AI
+0B4B..0B4C ; NFD_QC; N # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+0B5C..0B5D ; NFD_QC; N # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0B94 ; NFD_QC; N # Lo TAMIL LETTER AU
+0BCA..0BCC ; NFD_QC; N # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+0C48 ; NFD_QC; N # Mn TELUGU VOWEL SIGN AI
+0CC0 ; NFD_QC; N # Mc KANNADA VOWEL SIGN II
+0CC7..0CC8 ; NFD_QC; N # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; NFD_QC; N # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0D4A..0D4C ; NFD_QC; N # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+0DDA ; NFD_QC; N # Mc SINHALA VOWEL SIGN DIGA KOMBUVA
+0DDC..0DDE ; NFD_QC; N # Mc [3] SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0F43 ; NFD_QC; N # Lo TIBETAN LETTER GHA
+0F4D ; NFD_QC; N # Lo TIBETAN LETTER DDHA
+0F52 ; NFD_QC; N # Lo TIBETAN LETTER DHA
+0F57 ; NFD_QC; N # Lo TIBETAN LETTER BHA
+0F5C ; NFD_QC; N # Lo TIBETAN LETTER DZHA
+0F69 ; NFD_QC; N # Lo TIBETAN LETTER KSSA
+0F73 ; NFD_QC; N # Mn TIBETAN VOWEL SIGN II
+0F75..0F76 ; NFD_QC; N # Mn [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R
+0F78 ; NFD_QC; N # Mn TIBETAN VOWEL SIGN VOCALIC L
+0F81 ; NFD_QC; N # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; NFD_QC; N # Mn TIBETAN SUBJOINED LETTER KSSA
+1026 ; NFD_QC; N # Lo MYANMAR LETTER UU
+1B06 ; NFD_QC; N # Lo BALINESE LETTER AKARA TEDUNG
+1B08 ; NFD_QC; N # Lo BALINESE LETTER IKARA TEDUNG
+1B0A ; NFD_QC; N # Lo BALINESE LETTER UKARA TEDUNG
+1B0C ; NFD_QC; N # Lo BALINESE LETTER RA REPA TEDUNG
+1B0E ; NFD_QC; N # Lo BALINESE LETTER LA LENGA TEDUNG
+1B12 ; NFD_QC; N # Lo BALINESE LETTER OKARA TEDUNG
+1B3B ; NFD_QC; N # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3D ; NFD_QC; N # Mc BALINESE VOWEL SIGN LA LENGA TEDUNG
+1B40..1B41 ; NFD_QC; N # Mc [2] BALINESE VOWEL SIGN TALING TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B43 ; NFD_QC; N # Mc BALINESE VOWEL SIGN PEPET TEDUNG
+1E00..1E99 ; NFD_QC; N # L& [154] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH RING ABOVE
+1E9B ; NFD_QC; N # L& LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA0..1EF9 ; NFD_QC; N # L& [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE
+1F00..1F15 ; NFD_QC; N # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18..1F1D ; NFD_QC; N # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20..1F45 ; NFD_QC; N # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48..1F4D ; NFD_QC; N # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50..1F57 ; NFD_QC; N # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59 ; NFD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B ; NFD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D ; NFD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F..1F7D ; NFD_QC; N # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+1F80..1FB4 ; NFD_QC; N # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6..1FBC ; NFD_QC; N # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBE ; NFD_QC; N # L& GREEK PROSGEGRAMMENI
+1FC1 ; NFD_QC; N # Sk GREEK DIALYTIKA AND PERISPOMENI
+1FC2..1FC4 ; NFD_QC; N # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6..1FCC ; NFD_QC; N # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCD..1FCF ; NFD_QC; N # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+1FD0..1FD3 ; NFD_QC; N # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6..1FDB ; NFD_QC; N # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD..1FDF ; NFD_QC; N # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+1FE0..1FEC ; NFD_QC; N # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+1FED..1FEF ; NFD_QC; N # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
+1FF2..1FF4 ; NFD_QC; N # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6..1FFC ; NFD_QC; N # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+1FFD ; NFD_QC; N # Sk GREEK OXIA
+2000..2001 ; NFD_QC; N # Zs [2] EN QUAD..EM QUAD
+2126 ; NFD_QC; N # L& OHM SIGN
+212A..212B ; NFD_QC; N # L& [2] KELVIN SIGN..ANGSTROM SIGN
+219A..219B ; NFD_QC; N # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+21AE ; NFD_QC; N # Sm LEFT RIGHT ARROW WITH STROKE
+21CD ; NFD_QC; N # So LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE..21CF ; NFD_QC; N # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+2204 ; NFD_QC; N # Sm THERE DOES NOT EXIST
+2209 ; NFD_QC; N # Sm NOT AN ELEMENT OF
+220C ; NFD_QC; N # Sm DOES NOT CONTAIN AS MEMBER
+2224 ; NFD_QC; N # Sm DOES NOT DIVIDE
+2226 ; NFD_QC; N # Sm NOT PARALLEL TO
+2241 ; NFD_QC; N # Sm NOT TILDE
+2244 ; NFD_QC; N # Sm NOT ASYMPTOTICALLY EQUAL TO
+2247 ; NFD_QC; N # Sm NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+2249 ; NFD_QC; N # Sm NOT ALMOST EQUAL TO
+2260 ; NFD_QC; N # Sm NOT EQUAL TO
+2262 ; NFD_QC; N # Sm NOT IDENTICAL TO
+226D..2271 ; NFD_QC; N # Sm [5] NOT EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUAL TO
+2274..2275 ; NFD_QC; N # Sm [2] NEITHER LESS-THAN NOR EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUIVALENT TO
+2278..2279 ; NFD_QC; N # Sm [2] NEITHER LESS-THAN NOR GREATER-THAN..NEITHER GREATER-THAN NOR LESS-THAN
+2280..2281 ; NFD_QC; N # Sm [2] DOES NOT PRECEDE..DOES NOT SUCCEED
+2284..2285 ; NFD_QC; N # Sm [2] NOT A SUBSET OF..NOT A SUPERSET OF
+2288..2289 ; NFD_QC; N # Sm [2] NEITHER A SUBSET OF NOR EQUAL TO..NEITHER A SUPERSET OF NOR EQUAL TO
+22AC..22AF ; NFD_QC; N # Sm [4] DOES NOT PROVE..NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22E0..22E3 ; NFD_QC; N # Sm [4] DOES NOT PRECEDE OR EQUAL..NOT SQUARE ORIGINAL OF OR EQUAL TO
+22EA..22ED ; NFD_QC; N # Sm [4] NOT NORMAL SUBGROUP OF..DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+2329 ; NFD_QC; N # Ps LEFT-POINTING ANGLE BRACKET
+232A ; NFD_QC; N # Pe RIGHT-POINTING ANGLE BRACKET
+2ADC ; NFD_QC; N # Sm FORKING
+304C ; NFD_QC; N # Lo HIRAGANA LETTER GA
+304E ; NFD_QC; N # Lo HIRAGANA LETTER GI
+3050 ; NFD_QC; N # Lo HIRAGANA LETTER GU
+3052 ; NFD_QC; N # Lo HIRAGANA LETTER GE
+3054 ; NFD_QC; N # Lo HIRAGANA LETTER GO
+3056 ; NFD_QC; N # Lo HIRAGANA LETTER ZA
+3058 ; NFD_QC; N # Lo HIRAGANA LETTER ZI
+305A ; NFD_QC; N # Lo HIRAGANA LETTER ZU
+305C ; NFD_QC; N # Lo HIRAGANA LETTER ZE
+305E ; NFD_QC; N # Lo HIRAGANA LETTER ZO
+3060 ; NFD_QC; N # Lo HIRAGANA LETTER DA
+3062 ; NFD_QC; N # Lo HIRAGANA LETTER DI
+3065 ; NFD_QC; N # Lo HIRAGANA LETTER DU
+3067 ; NFD_QC; N # Lo HIRAGANA LETTER DE
+3069 ; NFD_QC; N # Lo HIRAGANA LETTER DO
+3070..3071 ; NFD_QC; N # Lo [2] HIRAGANA LETTER BA..HIRAGANA LETTER PA
+3073..3074 ; NFD_QC; N # Lo [2] HIRAGANA LETTER BI..HIRAGANA LETTER PI
+3076..3077 ; NFD_QC; N # Lo [2] HIRAGANA LETTER BU..HIRAGANA LETTER PU
+3079..307A ; NFD_QC; N # Lo [2] HIRAGANA LETTER BE..HIRAGANA LETTER PE
+307C..307D ; NFD_QC; N # Lo [2] HIRAGANA LETTER BO..HIRAGANA LETTER PO
+3094 ; NFD_QC; N # Lo HIRAGANA LETTER VU
+309E ; NFD_QC; N # Lm HIRAGANA VOICED ITERATION MARK
+30AC ; NFD_QC; N # Lo KATAKANA LETTER GA
+30AE ; NFD_QC; N # Lo KATAKANA LETTER GI
+30B0 ; NFD_QC; N # Lo KATAKANA LETTER GU
+30B2 ; NFD_QC; N # Lo KATAKANA LETTER GE
+30B4 ; NFD_QC; N # Lo KATAKANA LETTER GO
+30B6 ; NFD_QC; N # Lo KATAKANA LETTER ZA
+30B8 ; NFD_QC; N # Lo KATAKANA LETTER ZI
+30BA ; NFD_QC; N # Lo KATAKANA LETTER ZU
+30BC ; NFD_QC; N # Lo KATAKANA LETTER ZE
+30BE ; NFD_QC; N # Lo KATAKANA LETTER ZO
+30C0 ; NFD_QC; N # Lo KATAKANA LETTER DA
+30C2 ; NFD_QC; N # Lo KATAKANA LETTER DI
+30C5 ; NFD_QC; N # Lo KATAKANA LETTER DU
+30C7 ; NFD_QC; N # Lo KATAKANA LETTER DE
+30C9 ; NFD_QC; N # Lo KATAKANA LETTER DO
+30D0..30D1 ; NFD_QC; N # Lo [2] KATAKANA LETTER BA..KATAKANA LETTER PA
+30D3..30D4 ; NFD_QC; N # Lo [2] KATAKANA LETTER BI..KATAKANA LETTER PI
+30D6..30D7 ; NFD_QC; N # Lo [2] KATAKANA LETTER BU..KATAKANA LETTER PU
+30D9..30DA ; NFD_QC; N # Lo [2] KATAKANA LETTER BE..KATAKANA LETTER PE
+30DC..30DD ; NFD_QC; N # Lo [2] KATAKANA LETTER BO..KATAKANA LETTER PO
+30F4 ; NFD_QC; N # Lo KATAKANA LETTER VU
+30F7..30FA ; NFD_QC; N # Lo [4] KATAKANA LETTER VA..KATAKANA LETTER VO
+30FE ; NFD_QC; N # Lm KATAKANA VOICED ITERATION MARK
+AC00..D7A3 ; NFD_QC; N # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+F900..FA0D ; NFD_QC; N # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+FA10 ; NFD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA10
+FA12 ; NFD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA12
+FA15..FA1E ; NFD_QC; N # Lo [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+FA20 ; NFD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA20
+FA22 ; NFD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA22
+FA25..FA26 ; NFD_QC; N # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+FA2A..FA2D ; NFD_QC; N # Lo [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30..FA6A ; NFD_QC; N # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA70..FAD9 ; NFD_QC; N # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+FB1D ; NFD_QC; N # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F ; NFD_QC; N # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A..FB36 ; NFD_QC; N # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; NFD_QC; N # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; NFD_QC; N # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; NFD_QC; N # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; NFD_QC; N # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4E ; NFD_QC; N # Lo [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE
+1D15E..1D164 ; NFD_QC; N # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; NFD_QC; N # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+2F800..2FA1D ; NFD_QC; N # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 13215
+
+# ================================================
+
+# Property: NFC_Quick_Check
+
+# All code points not explicitly listed for NFC_Quick_Check
+# have the value Yes (Y).
+
+# @missing: 0000..10FFFF; NFC_QC; Yes
+
+# ================================================
+
+# NFC_Quick_Check=No
+
+0340..0341 ; NFC_QC; N # Mn [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+0343..0344 ; NFC_QC; N # Mn [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS
+0374 ; NFC_QC; N # Sk GREEK NUMERAL SIGN
+037E ; NFC_QC; N # Po GREEK QUESTION MARK
+0387 ; NFC_QC; N # Po GREEK ANO TELEIA
+0958..095F ; NFC_QC; N # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09DC..09DD ; NFC_QC; N # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; NFC_QC; N # Lo BENGALI LETTER YYA
+0A33 ; NFC_QC; N # Lo GURMUKHI LETTER LLA
+0A36 ; NFC_QC; N # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; NFC_QC; N # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; NFC_QC; N # Lo GURMUKHI LETTER FA
+0B5C..0B5D ; NFC_QC; N # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0F43 ; NFC_QC; N # Lo TIBETAN LETTER GHA
+0F4D ; NFC_QC; N # Lo TIBETAN LETTER DDHA
+0F52 ; NFC_QC; N # Lo TIBETAN LETTER DHA
+0F57 ; NFC_QC; N # Lo TIBETAN LETTER BHA
+0F5C ; NFC_QC; N # Lo TIBETAN LETTER DZHA
+0F69 ; NFC_QC; N # Lo TIBETAN LETTER KSSA
+0F73 ; NFC_QC; N # Mn TIBETAN VOWEL SIGN II
+0F75..0F76 ; NFC_QC; N # Mn [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R
+0F78 ; NFC_QC; N # Mn TIBETAN VOWEL SIGN VOCALIC L
+0F81 ; NFC_QC; N # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; NFC_QC; N # Mn TIBETAN SUBJOINED LETTER KSSA
+1F71 ; NFC_QC; N # L& GREEK SMALL LETTER ALPHA WITH OXIA
+1F73 ; NFC_QC; N # L& GREEK SMALL LETTER EPSILON WITH OXIA
+1F75 ; NFC_QC; N # L& GREEK SMALL LETTER ETA WITH OXIA
+1F77 ; NFC_QC; N # L& GREEK SMALL LETTER IOTA WITH OXIA
+1F79 ; NFC_QC; N # L& GREEK SMALL LETTER OMICRON WITH OXIA
+1F7B ; NFC_QC; N # L& GREEK SMALL LETTER UPSILON WITH OXIA
+1F7D ; NFC_QC; N # L& GREEK SMALL LETTER OMEGA WITH OXIA
+1FBB ; NFC_QC; N # L& GREEK CAPITAL LETTER ALPHA WITH OXIA
+1FBE ; NFC_QC; N # L& GREEK PROSGEGRAMMENI
+1FC9 ; NFC_QC; N # L& GREEK CAPITAL LETTER EPSILON WITH OXIA
+1FCB ; NFC_QC; N # L& GREEK CAPITAL LETTER ETA WITH OXIA
+1FD3 ; NFC_QC; N # L& GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FDB ; NFC_QC; N # L& GREEK CAPITAL LETTER IOTA WITH OXIA
+1FE3 ; NFC_QC; N # L& GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FEB ; NFC_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH OXIA
+1FEE..1FEF ; NFC_QC; N # Sk [2] GREEK DIALYTIKA AND OXIA..GREEK VARIA
+1FF9 ; NFC_QC; N # L& GREEK CAPITAL LETTER OMICRON WITH OXIA
+1FFB ; NFC_QC; N # L& GREEK CAPITAL LETTER OMEGA WITH OXIA
+1FFD ; NFC_QC; N # Sk GREEK OXIA
+2000..2001 ; NFC_QC; N # Zs [2] EN QUAD..EM QUAD
+2126 ; NFC_QC; N # L& OHM SIGN
+212A..212B ; NFC_QC; N # L& [2] KELVIN SIGN..ANGSTROM SIGN
+2329 ; NFC_QC; N # Ps LEFT-POINTING ANGLE BRACKET
+232A ; NFC_QC; N # Pe RIGHT-POINTING ANGLE BRACKET
+2ADC ; NFC_QC; N # Sm FORKING
+F900..FA0D ; NFC_QC; N # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+FA10 ; NFC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA10
+FA12 ; NFC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA12
+FA15..FA1E ; NFC_QC; N # Lo [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+FA20 ; NFC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA20
+FA22 ; NFC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA22
+FA25..FA26 ; NFC_QC; N # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+FA2A..FA2D ; NFC_QC; N # Lo [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30..FA6A ; NFC_QC; N # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA70..FAD9 ; NFC_QC; N # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+FB1D ; NFC_QC; N # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F ; NFC_QC; N # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A..FB36 ; NFC_QC; N # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; NFC_QC; N # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; NFC_QC; N # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; NFC_QC; N # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; NFC_QC; N # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4E ; NFC_QC; N # Lo [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE
+1D15E..1D164 ; NFC_QC; N # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; NFC_QC; N # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+2F800..2FA1D ; NFC_QC; N # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 1115
+
+# ================================================
+
+# NFC_Quick_Check=Maybe
+
+0300..0304 ; NFC_QC; M # Mn [5] COMBINING GRAVE ACCENT..COMBINING MACRON
+0306..030C ; NFC_QC; M # Mn [7] COMBINING BREVE..COMBINING CARON
+030F ; NFC_QC; M # Mn COMBINING DOUBLE GRAVE ACCENT
+0311 ; NFC_QC; M # Mn COMBINING INVERTED BREVE
+0313..0314 ; NFC_QC; M # Mn [2] COMBINING COMMA ABOVE..COMBINING REVERSED COMMA ABOVE
+031B ; NFC_QC; M # Mn COMBINING HORN
+0323..0328 ; NFC_QC; M # Mn [6] COMBINING DOT BELOW..COMBINING OGONEK
+032D..032E ; NFC_QC; M # Mn [2] COMBINING CIRCUMFLEX ACCENT BELOW..COMBINING BREVE BELOW
+0330..0331 ; NFC_QC; M # Mn [2] COMBINING TILDE BELOW..COMBINING MACRON BELOW
+0338 ; NFC_QC; M # Mn COMBINING LONG SOLIDUS OVERLAY
+0342 ; NFC_QC; M # Mn COMBINING GREEK PERISPOMENI
+0345 ; NFC_QC; M # Mn COMBINING GREEK YPOGEGRAMMENI
+0653..0655 ; NFC_QC; M # Mn [3] ARABIC MADDAH ABOVE..ARABIC HAMZA BELOW
+093C ; NFC_QC; M # Mn DEVANAGARI SIGN NUKTA
+09BE ; NFC_QC; M # Mc BENGALI VOWEL SIGN AA
+09D7 ; NFC_QC; M # Mc BENGALI AU LENGTH MARK
+0B3E ; NFC_QC; M # Mc ORIYA VOWEL SIGN AA
+0B56 ; NFC_QC; M # Mn ORIYA AI LENGTH MARK
+0B57 ; NFC_QC; M # Mc ORIYA AU LENGTH MARK
+0BBE ; NFC_QC; M # Mc TAMIL VOWEL SIGN AA
+0BD7 ; NFC_QC; M # Mc TAMIL AU LENGTH MARK
+0C56 ; NFC_QC; M # Mn TELUGU AI LENGTH MARK
+0CC2 ; NFC_QC; M # Mc KANNADA VOWEL SIGN UU
+0CD5..0CD6 ; NFC_QC; M # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+0D3E ; NFC_QC; M # Mc MALAYALAM VOWEL SIGN AA
+0D57 ; NFC_QC; M # Mc MALAYALAM AU LENGTH MARK
+0DCA ; NFC_QC; M # Mn SINHALA SIGN AL-LAKUNA
+0DCF ; NFC_QC; M # Mc SINHALA VOWEL SIGN AELA-PILLA
+0DDF ; NFC_QC; M # Mc SINHALA VOWEL SIGN GAYANUKITTA
+102E ; NFC_QC; M # Mn MYANMAR VOWEL SIGN II
+1161..1175 ; NFC_QC; M # Lo [21] HANGUL JUNGSEONG A..HANGUL JUNGSEONG I
+11A8..11C2 ; NFC_QC; M # Lo [27] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG HIEUH
+1B35 ; NFC_QC; M # Mc BALINESE VOWEL SIGN TEDUNG
+3099..309A ; NFC_QC; M # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+
+# Total code points: 102
+
+# ================================================
+
+# Property: NFKD_Quick_Check
+
+# All code points not explicitly listed for NFKD_Quick_Check
+# have the value Yes (Y).
+
+# @missing: 0000..10FFFF; NFKD_QC; Yes
+
+# ================================================
+
+# NFKD_Quick_Check=No
+
+00A0 ; NFKD_QC; N # Zs NO-BREAK SPACE
+00A8 ; NFKD_QC; N # Sk DIAERESIS
+00AA ; NFKD_QC; N # L& FEMININE ORDINAL INDICATOR
+00AF ; NFKD_QC; N # Sk MACRON
+00B2..00B3 ; NFKD_QC; N # No [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE
+00B4 ; NFKD_QC; N # Sk ACUTE ACCENT
+00B5 ; NFKD_QC; N # L& MICRO SIGN
+00B8 ; NFKD_QC; N # Sk CEDILLA
+00B9 ; NFKD_QC; N # No SUPERSCRIPT ONE
+00BA ; NFKD_QC; N # L& MASCULINE ORDINAL INDICATOR
+00BC..00BE ; NFKD_QC; N # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+00C0..00C5 ; NFKD_QC; N # L& [6] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER A WITH RING ABOVE
+00C7..00CF ; NFKD_QC; N # L& [9] LATIN CAPITAL LETTER C WITH CEDILLA..LATIN CAPITAL LETTER I WITH DIAERESIS
+00D1..00D6 ; NFKD_QC; N # L& [6] LATIN CAPITAL LETTER N WITH TILDE..LATIN CAPITAL LETTER O WITH DIAERESIS
+00D9..00DD ; NFKD_QC; N # L& [5] LATIN CAPITAL LETTER U WITH GRAVE..LATIN CAPITAL LETTER Y WITH ACUTE
+00E0..00E5 ; NFKD_QC; N # L& [6] LATIN SMALL LETTER A WITH GRAVE..LATIN SMALL LETTER A WITH RING ABOVE
+00E7..00EF ; NFKD_QC; N # L& [9] LATIN SMALL LETTER C WITH CEDILLA..LATIN SMALL LETTER I WITH DIAERESIS
+00F1..00F6 ; NFKD_QC; N # L& [6] LATIN SMALL LETTER N WITH TILDE..LATIN SMALL LETTER O WITH DIAERESIS
+00F9..00FD ; NFKD_QC; N # L& [5] LATIN SMALL LETTER U WITH GRAVE..LATIN SMALL LETTER Y WITH ACUTE
+00FF..010F ; NFKD_QC; N # L& [17] LATIN SMALL LETTER Y WITH DIAERESIS..LATIN SMALL LETTER D WITH CARON
+0112..0125 ; NFKD_QC; N # L& [20] LATIN CAPITAL LETTER E WITH MACRON..LATIN SMALL LETTER H WITH CIRCUMFLEX
+0128..0130 ; NFKD_QC; N # L& [9] LATIN CAPITAL LETTER I WITH TILDE..LATIN CAPITAL LETTER I WITH DOT ABOVE
+0132..0137 ; NFKD_QC; N # L& [6] LATIN CAPITAL LIGATURE IJ..LATIN SMALL LETTER K WITH CEDILLA
+0139..0140 ; NFKD_QC; N # L& [8] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER L WITH MIDDLE DOT
+0143..0149 ; NFKD_QC; N # L& [7] LATIN CAPITAL LETTER N WITH ACUTE..LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+014C..0151 ; NFKD_QC; N # L& [6] LATIN CAPITAL LETTER O WITH MACRON..LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0154..0165 ; NFKD_QC; N # L& [18] LATIN CAPITAL LETTER R WITH ACUTE..LATIN SMALL LETTER T WITH CARON
+0168..017F ; NFKD_QC; N # L& [24] LATIN CAPITAL LETTER U WITH TILDE..LATIN SMALL LETTER LONG S
+01A0..01A1 ; NFKD_QC; N # L& [2] LATIN CAPITAL LETTER O WITH HORN..LATIN SMALL LETTER O WITH HORN
+01AF..01B0 ; NFKD_QC; N # L& [2] LATIN CAPITAL LETTER U WITH HORN..LATIN SMALL LETTER U WITH HORN
+01C4..01DC ; NFKD_QC; N # L& [25] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DE..01E3 ; NFKD_QC; N # L& [6] LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON..LATIN SMALL LETTER AE WITH MACRON
+01E6..01F5 ; NFKD_QC; N # L& [16] LATIN CAPITAL LETTER G WITH CARON..LATIN SMALL LETTER G WITH ACUTE
+01F8..021B ; NFKD_QC; N # L& [36] LATIN CAPITAL LETTER N WITH GRAVE..LATIN SMALL LETTER T WITH COMMA BELOW
+021E..021F ; NFKD_QC; N # L& [2] LATIN CAPITAL LETTER H WITH CARON..LATIN SMALL LETTER H WITH CARON
+0226..0233 ; NFKD_QC; N # L& [14] LATIN CAPITAL LETTER A WITH DOT ABOVE..LATIN SMALL LETTER Y WITH MACRON
+02B0..02B8 ; NFKD_QC; N # Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y
+02D8..02DD ; NFKD_QC; N # Sk [6] BREVE..DOUBLE ACUTE ACCENT
+02E0..02E4 ; NFKD_QC; N # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+0340..0341 ; NFKD_QC; N # Mn [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+0343..0344 ; NFKD_QC; N # Mn [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS
+0374 ; NFKD_QC; N # Sk GREEK NUMERAL SIGN
+037A ; NFKD_QC; N # Lm GREEK YPOGEGRAMMENI
+037E ; NFKD_QC; N # Po GREEK QUESTION MARK
+0384..0385 ; NFKD_QC; N # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS
+0386 ; NFKD_QC; N # L& GREEK CAPITAL LETTER ALPHA WITH TONOS
+0387 ; NFKD_QC; N # Po GREEK ANO TELEIA
+0388..038A ; NFKD_QC; N # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+038C ; NFKD_QC; N # L& GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E..0390 ; NFKD_QC; N # L& [3] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03AA..03B0 ; NFKD_QC; N # L& [7] GREEK CAPITAL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03CA..03CE ; NFKD_QC; N # L& [5] GREEK SMALL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER OMEGA WITH TONOS
+03D0..03D6 ; NFKD_QC; N # L& [7] GREEK BETA SYMBOL..GREEK PI SYMBOL
+03F0..03F2 ; NFKD_QC; N # L& [3] GREEK KAPPA SYMBOL..GREEK LUNATE SIGMA SYMBOL
+03F4..03F5 ; NFKD_QC; N # L& [2] GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL
+03F9 ; NFKD_QC; N # L& GREEK CAPITAL LUNATE SIGMA SYMBOL
+0400..0401 ; NFKD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC CAPITAL LETTER IO
+0403 ; NFKD_QC; N # L& CYRILLIC CAPITAL LETTER GJE
+0407 ; NFKD_QC; N # L& CYRILLIC CAPITAL LETTER YI
+040C..040E ; NFKD_QC; N # L& [3] CYRILLIC CAPITAL LETTER KJE..CYRILLIC CAPITAL LETTER SHORT U
+0419 ; NFKD_QC; N # L& CYRILLIC CAPITAL LETTER SHORT I
+0439 ; NFKD_QC; N # L& CYRILLIC SMALL LETTER SHORT I
+0450..0451 ; NFKD_QC; N # L& [2] CYRILLIC SMALL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER IO
+0453 ; NFKD_QC; N # L& CYRILLIC SMALL LETTER GJE
+0457 ; NFKD_QC; N # L& CYRILLIC SMALL LETTER YI
+045C..045E ; NFKD_QC; N # L& [3] CYRILLIC SMALL LETTER KJE..CYRILLIC SMALL LETTER SHORT U
+0476..0477 ; NFKD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT..CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+04C1..04C2 ; NFKD_QC; N # L& [2] CYRILLIC CAPITAL LETTER ZHE WITH BREVE..CYRILLIC SMALL LETTER ZHE WITH BREVE
+04D0..04D3 ; NFKD_QC; N # L& [4] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D6..04D7 ; NFKD_QC; N # L& [2] CYRILLIC CAPITAL LETTER IE WITH BREVE..CYRILLIC SMALL LETTER IE WITH BREVE
+04DA..04DF ; NFKD_QC; N # L& [6] CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS..CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04E2..04E7 ; NFKD_QC; N # L& [6] CYRILLIC CAPITAL LETTER I WITH MACRON..CYRILLIC SMALL LETTER O WITH DIAERESIS
+04EA..04F5 ; NFKD_QC; N # L& [12] CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS..CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F8..04F9 ; NFKD_QC; N # L& [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+0587 ; NFKD_QC; N # L& ARMENIAN SMALL LIGATURE ECH YIWN
+0622..0626 ; NFKD_QC; N # Lo [5] ARABIC LETTER ALEF WITH MADDA ABOVE..ARABIC LETTER YEH WITH HAMZA ABOVE
+0675..0678 ; NFKD_QC; N # Lo [4] ARABIC LETTER HIGH HAMZA ALEF..ARABIC LETTER HIGH HAMZA YEH
+06C0 ; NFKD_QC; N # Lo ARABIC LETTER HEH WITH YEH ABOVE
+06C2 ; NFKD_QC; N # Lo ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06D3 ; NFKD_QC; N # Lo ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+0929 ; NFKD_QC; N # Lo DEVANAGARI LETTER NNNA
+0931 ; NFKD_QC; N # Lo DEVANAGARI LETTER RRA
+0934 ; NFKD_QC; N # Lo DEVANAGARI LETTER LLLA
+0958..095F ; NFKD_QC; N # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09CB..09CC ; NFKD_QC; N # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+09DC..09DD ; NFKD_QC; N # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; NFKD_QC; N # Lo BENGALI LETTER YYA
+0A33 ; NFKD_QC; N # Lo GURMUKHI LETTER LLA
+0A36 ; NFKD_QC; N # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; NFKD_QC; N # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; NFKD_QC; N # Lo GURMUKHI LETTER FA
+0B48 ; NFKD_QC; N # Mc ORIYA VOWEL SIGN AI
+0B4B..0B4C ; NFKD_QC; N # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+0B5C..0B5D ; NFKD_QC; N # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0B94 ; NFKD_QC; N # Lo TAMIL LETTER AU
+0BCA..0BCC ; NFKD_QC; N # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+0C48 ; NFKD_QC; N # Mn TELUGU VOWEL SIGN AI
+0CC0 ; NFKD_QC; N # Mc KANNADA VOWEL SIGN II
+0CC7..0CC8 ; NFKD_QC; N # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; NFKD_QC; N # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0D4A..0D4C ; NFKD_QC; N # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+0DDA ; NFKD_QC; N # Mc SINHALA VOWEL SIGN DIGA KOMBUVA
+0DDC..0DDE ; NFKD_QC; N # Mc [3] SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0E33 ; NFKD_QC; N # Lo THAI CHARACTER SARA AM
+0EB3 ; NFKD_QC; N # Lo LAO VOWEL SIGN AM
+0EDC..0EDD ; NFKD_QC; N # Lo [2] LAO HO NO..LAO HO MO
+0F0C ; NFKD_QC; N # Po TIBETAN MARK DELIMITER TSHEG BSTAR
+0F43 ; NFKD_QC; N # Lo TIBETAN LETTER GHA
+0F4D ; NFKD_QC; N # Lo TIBETAN LETTER DDHA
+0F52 ; NFKD_QC; N # Lo TIBETAN LETTER DHA
+0F57 ; NFKD_QC; N # Lo TIBETAN LETTER BHA
+0F5C ; NFKD_QC; N # Lo TIBETAN LETTER DZHA
+0F69 ; NFKD_QC; N # Lo TIBETAN LETTER KSSA
+0F73 ; NFKD_QC; N # Mn TIBETAN VOWEL SIGN II
+0F75..0F79 ; NFKD_QC; N # Mn [5] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC LL
+0F81 ; NFKD_QC; N # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; NFKD_QC; N # Mn TIBETAN SUBJOINED LETTER KSSA
+1026 ; NFKD_QC; N # Lo MYANMAR LETTER UU
+10FC ; NFKD_QC; N # Lm MODIFIER LETTER GEORGIAN NAR
+1B06 ; NFKD_QC; N # Lo BALINESE LETTER AKARA TEDUNG
+1B08 ; NFKD_QC; N # Lo BALINESE LETTER IKARA TEDUNG
+1B0A ; NFKD_QC; N # Lo BALINESE LETTER UKARA TEDUNG
+1B0C ; NFKD_QC; N # Lo BALINESE LETTER RA REPA TEDUNG
+1B0E ; NFKD_QC; N # Lo BALINESE LETTER LA LENGA TEDUNG
+1B12 ; NFKD_QC; N # Lo BALINESE LETTER OKARA TEDUNG
+1B3B ; NFKD_QC; N # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3D ; NFKD_QC; N # Mc BALINESE VOWEL SIGN LA LENGA TEDUNG
+1B40..1B41 ; NFKD_QC; N # Mc [2] BALINESE VOWEL SIGN TALING TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B43 ; NFKD_QC; N # Mc BALINESE VOWEL SIGN PEPET TEDUNG
+1D2C..1D2E ; NFKD_QC; N # Lm [3] MODIFIER LETTER CAPITAL A..MODIFIER LETTER CAPITAL B
+1D30..1D3A ; NFKD_QC; N # Lm [11] MODIFIER LETTER CAPITAL D..MODIFIER LETTER CAPITAL N
+1D3C..1D4D ; NFKD_QC; N # Lm [18] MODIFIER LETTER CAPITAL O..MODIFIER LETTER SMALL G
+1D4F..1D61 ; NFKD_QC; N # Lm [19] MODIFIER LETTER SMALL K..MODIFIER LETTER SMALL CHI
+1D62..1D6A ; NFKD_QC; N # L& [9] LATIN SUBSCRIPT SMALL LETTER I..GREEK SUBSCRIPT SMALL LETTER CHI
+1D78 ; NFKD_QC; N # Lm MODIFIER LETTER CYRILLIC EN
+1D9B..1DBF ; NFKD_QC; N # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+1E00..1E9B ; NFKD_QC; N # L& [156] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA0..1EF9 ; NFKD_QC; N # L& [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE
+1F00..1F15 ; NFKD_QC; N # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18..1F1D ; NFKD_QC; N # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20..1F45 ; NFKD_QC; N # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48..1F4D ; NFKD_QC; N # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50..1F57 ; NFKD_QC; N # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59 ; NFKD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B ; NFKD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D ; NFKD_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F..1F7D ; NFKD_QC; N # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+1F80..1FB4 ; NFKD_QC; N # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6..1FBC ; NFKD_QC; N # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBD ; NFKD_QC; N # Sk GREEK KORONIS
+1FBE ; NFKD_QC; N # L& GREEK PROSGEGRAMMENI
+1FBF..1FC1 ; NFKD_QC; N # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+1FC2..1FC4 ; NFKD_QC; N # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6..1FCC ; NFKD_QC; N # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCD..1FCF ; NFKD_QC; N # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+1FD0..1FD3 ; NFKD_QC; N # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6..1FDB ; NFKD_QC; N # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD..1FDF ; NFKD_QC; N # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+1FE0..1FEC ; NFKD_QC; N # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+1FED..1FEF ; NFKD_QC; N # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
+1FF2..1FF4 ; NFKD_QC; N # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6..1FFC ; NFKD_QC; N # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+1FFD..1FFE ; NFKD_QC; N # Sk [2] GREEK OXIA..GREEK DASIA
+2000..200A ; NFKD_QC; N # Zs [11] EN QUAD..HAIR SPACE
+2011 ; NFKD_QC; N # Pd NON-BREAKING HYPHEN
+2017 ; NFKD_QC; N # Po DOUBLE LOW LINE
+2024..2026 ; NFKD_QC; N # Po [3] ONE DOT LEADER..HORIZONTAL ELLIPSIS
+202F ; NFKD_QC; N # Zs NARROW NO-BREAK SPACE
+2033..2034 ; NFKD_QC; N # Po [2] DOUBLE PRIME..TRIPLE PRIME
+2036..2037 ; NFKD_QC; N # Po [2] REVERSED DOUBLE PRIME..REVERSED TRIPLE PRIME
+203C ; NFKD_QC; N # Po DOUBLE EXCLAMATION MARK
+203E ; NFKD_QC; N # Po OVERLINE
+2047..2049 ; NFKD_QC; N # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
+2057 ; NFKD_QC; N # Po QUADRUPLE PRIME
+205F ; NFKD_QC; N # Zs MEDIUM MATHEMATICAL SPACE
+2070 ; NFKD_QC; N # No SUPERSCRIPT ZERO
+2071 ; NFKD_QC; N # L& SUPERSCRIPT LATIN SMALL LETTER I
+2074..2079 ; NFKD_QC; N # No [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE
+207A..207C ; NFKD_QC; N # Sm [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN
+207D ; NFKD_QC; N # Ps SUPERSCRIPT LEFT PARENTHESIS
+207E ; NFKD_QC; N # Pe SUPERSCRIPT RIGHT PARENTHESIS
+207F ; NFKD_QC; N # L& SUPERSCRIPT LATIN SMALL LETTER N
+2080..2089 ; NFKD_QC; N # No [10] SUBSCRIPT ZERO..SUBSCRIPT NINE
+208A..208C ; NFKD_QC; N # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
+208D ; NFKD_QC; N # Ps SUBSCRIPT LEFT PARENTHESIS
+208E ; NFKD_QC; N # Pe SUBSCRIPT RIGHT PARENTHESIS
+2090..2094 ; NFKD_QC; N # Lm [5] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER SCHWA
+20A8 ; NFKD_QC; N # Sc RUPEE SIGN
+2100..2101 ; NFKD_QC; N # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
+2102 ; NFKD_QC; N # L& DOUBLE-STRUCK CAPITAL C
+2103 ; NFKD_QC; N # So DEGREE CELSIUS
+2105..2106 ; NFKD_QC; N # So [2] CARE OF..CADA UNA
+2107 ; NFKD_QC; N # L& EULER CONSTANT
+2109 ; NFKD_QC; N # So DEGREE FAHRENHEIT
+210A..2113 ; NFKD_QC; N # L& [10] SCRIPT SMALL G..SCRIPT SMALL L
+2115 ; NFKD_QC; N # L& DOUBLE-STRUCK CAPITAL N
+2116 ; NFKD_QC; N # So NUMERO SIGN
+2119..211D ; NFKD_QC; N # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+2120..2122 ; NFKD_QC; N # So [3] SERVICE MARK..TRADE MARK SIGN
+2124 ; NFKD_QC; N # L& DOUBLE-STRUCK CAPITAL Z
+2126 ; NFKD_QC; N # L& OHM SIGN
+2128 ; NFKD_QC; N # L& BLACK-LETTER CAPITAL Z
+212A..212D ; NFKD_QC; N # L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
+212F..2131 ; NFKD_QC; N # L& [3] SCRIPT SMALL E..SCRIPT CAPITAL F
+2133..2134 ; NFKD_QC; N # L& [2] SCRIPT CAPITAL M..SCRIPT SMALL O
+2135..2138 ; NFKD_QC; N # Lo [4] ALEF SYMBOL..DALET SYMBOL
+2139 ; NFKD_QC; N # L& INFORMATION SOURCE
+213B ; NFKD_QC; N # So FACSIMILE SIGN
+213C..213F ; NFKD_QC; N # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+2140 ; NFKD_QC; N # Sm DOUBLE-STRUCK N-ARY SUMMATION
+2145..2149 ; NFKD_QC; N # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+2153..215F ; NFKD_QC; N # No [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE
+2160..217F ; NFKD_QC; N # Nl [32] ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND
+219A..219B ; NFKD_QC; N # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+21AE ; NFKD_QC; N # Sm LEFT RIGHT ARROW WITH STROKE
+21CD ; NFKD_QC; N # So LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE..21CF ; NFKD_QC; N # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+2204 ; NFKD_QC; N # Sm THERE DOES NOT EXIST
+2209 ; NFKD_QC; N # Sm NOT AN ELEMENT OF
+220C ; NFKD_QC; N # Sm DOES NOT CONTAIN AS MEMBER
+2224 ; NFKD_QC; N # Sm DOES NOT DIVIDE
+2226 ; NFKD_QC; N # Sm NOT PARALLEL TO
+222C..222D ; NFKD_QC; N # Sm [2] DOUBLE INTEGRAL..TRIPLE INTEGRAL
+222F..2230 ; NFKD_QC; N # Sm [2] SURFACE INTEGRAL..VOLUME INTEGRAL
+2241 ; NFKD_QC; N # Sm NOT TILDE
+2244 ; NFKD_QC; N # Sm NOT ASYMPTOTICALLY EQUAL TO
+2247 ; NFKD_QC; N # Sm NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+2249 ; NFKD_QC; N # Sm NOT ALMOST EQUAL TO
+2260 ; NFKD_QC; N # Sm NOT EQUAL TO
+2262 ; NFKD_QC; N # Sm NOT IDENTICAL TO
+226D..2271 ; NFKD_QC; N # Sm [5] NOT EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUAL TO
+2274..2275 ; NFKD_QC; N # Sm [2] NEITHER LESS-THAN NOR EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUIVALENT TO
+2278..2279 ; NFKD_QC; N # Sm [2] NEITHER LESS-THAN NOR GREATER-THAN..NEITHER GREATER-THAN NOR LESS-THAN
+2280..2281 ; NFKD_QC; N # Sm [2] DOES NOT PRECEDE..DOES NOT SUCCEED
+2284..2285 ; NFKD_QC; N # Sm [2] NOT A SUBSET OF..NOT A SUPERSET OF
+2288..2289 ; NFKD_QC; N # Sm [2] NEITHER A SUBSET OF NOR EQUAL TO..NEITHER A SUPERSET OF NOR EQUAL TO
+22AC..22AF ; NFKD_QC; N # Sm [4] DOES NOT PROVE..NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22E0..22E3 ; NFKD_QC; N # Sm [4] DOES NOT PRECEDE OR EQUAL..NOT SQUARE ORIGINAL OF OR EQUAL TO
+22EA..22ED ; NFKD_QC; N # Sm [4] NOT NORMAL SUBGROUP OF..DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+2329 ; NFKD_QC; N # Ps LEFT-POINTING ANGLE BRACKET
+232A ; NFKD_QC; N # Pe RIGHT-POINTING ANGLE BRACKET
+2460..249B ; NFKD_QC; N # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
+249C..24E9 ; NFKD_QC; N # So [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
+24EA ; NFKD_QC; N # No CIRCLED DIGIT ZERO
+2A0C ; NFKD_QC; N # Sm QUADRUPLE INTEGRAL OPERATOR
+2A74..2A76 ; NFKD_QC; N # Sm [3] DOUBLE COLON EQUAL..THREE CONSECUTIVE EQUALS SIGNS
+2ADC ; NFKD_QC; N # Sm FORKING
+2D6F ; NFKD_QC; N # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+2E9F ; NFKD_QC; N # So CJK RADICAL MOTHER
+2EF3 ; NFKD_QC; N # So CJK RADICAL C-SIMPLIFIED TURTLE
+2F00..2FD5 ; NFKD_QC; N # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
+3000 ; NFKD_QC; N # Zs IDEOGRAPHIC SPACE
+3036 ; NFKD_QC; N # So CIRCLED POSTAL MARK
+3038..303A ; NFKD_QC; N # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
+304C ; NFKD_QC; N # Lo HIRAGANA LETTER GA
+304E ; NFKD_QC; N # Lo HIRAGANA LETTER GI
+3050 ; NFKD_QC; N # Lo HIRAGANA LETTER GU
+3052 ; NFKD_QC; N # Lo HIRAGANA LETTER GE
+3054 ; NFKD_QC; N # Lo HIRAGANA LETTER GO
+3056 ; NFKD_QC; N # Lo HIRAGANA LETTER ZA
+3058 ; NFKD_QC; N # Lo HIRAGANA LETTER ZI
+305A ; NFKD_QC; N # Lo HIRAGANA LETTER ZU
+305C ; NFKD_QC; N # Lo HIRAGANA LETTER ZE
+305E ; NFKD_QC; N # Lo HIRAGANA LETTER ZO
+3060 ; NFKD_QC; N # Lo HIRAGANA LETTER DA
+3062 ; NFKD_QC; N # Lo HIRAGANA LETTER DI
+3065 ; NFKD_QC; N # Lo HIRAGANA LETTER DU
+3067 ; NFKD_QC; N # Lo HIRAGANA LETTER DE
+3069 ; NFKD_QC; N # Lo HIRAGANA LETTER DO
+3070..3071 ; NFKD_QC; N # Lo [2] HIRAGANA LETTER BA..HIRAGANA LETTER PA
+3073..3074 ; NFKD_QC; N # Lo [2] HIRAGANA LETTER BI..HIRAGANA LETTER PI
+3076..3077 ; NFKD_QC; N # Lo [2] HIRAGANA LETTER BU..HIRAGANA LETTER PU
+3079..307A ; NFKD_QC; N # Lo [2] HIRAGANA LETTER BE..HIRAGANA LETTER PE
+307C..307D ; NFKD_QC; N # Lo [2] HIRAGANA LETTER BO..HIRAGANA LETTER PO
+3094 ; NFKD_QC; N # Lo HIRAGANA LETTER VU
+309B..309C ; NFKD_QC; N # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309E ; NFKD_QC; N # Lm HIRAGANA VOICED ITERATION MARK
+309F ; NFKD_QC; N # Lo HIRAGANA DIGRAPH YORI
+30AC ; NFKD_QC; N # Lo KATAKANA LETTER GA
+30AE ; NFKD_QC; N # Lo KATAKANA LETTER GI
+30B0 ; NFKD_QC; N # Lo KATAKANA LETTER GU
+30B2 ; NFKD_QC; N # Lo KATAKANA LETTER GE
+30B4 ; NFKD_QC; N # Lo KATAKANA LETTER GO
+30B6 ; NFKD_QC; N # Lo KATAKANA LETTER ZA
+30B8 ; NFKD_QC; N # Lo KATAKANA LETTER ZI
+30BA ; NFKD_QC; N # Lo KATAKANA LETTER ZU
+30BC ; NFKD_QC; N # Lo KATAKANA LETTER ZE
+30BE ; NFKD_QC; N # Lo KATAKANA LETTER ZO
+30C0 ; NFKD_QC; N # Lo KATAKANA LETTER DA
+30C2 ; NFKD_QC; N # Lo KATAKANA LETTER DI
+30C5 ; NFKD_QC; N # Lo KATAKANA LETTER DU
+30C7 ; NFKD_QC; N # Lo KATAKANA LETTER DE
+30C9 ; NFKD_QC; N # Lo KATAKANA LETTER DO
+30D0..30D1 ; NFKD_QC; N # Lo [2] KATAKANA LETTER BA..KATAKANA LETTER PA
+30D3..30D4 ; NFKD_QC; N # Lo [2] KATAKANA LETTER BI..KATAKANA LETTER PI
+30D6..30D7 ; NFKD_QC; N # Lo [2] KATAKANA LETTER BU..KATAKANA LETTER PU
+30D9..30DA ; NFKD_QC; N # Lo [2] KATAKANA LETTER BE..KATAKANA LETTER PE
+30DC..30DD ; NFKD_QC; N # Lo [2] KATAKANA LETTER BO..KATAKANA LETTER PO
+30F4 ; NFKD_QC; N # Lo KATAKANA LETTER VU
+30F7..30FA ; NFKD_QC; N # Lo [4] KATAKANA LETTER VA..KATAKANA LETTER VO
+30FE ; NFKD_QC; N # Lm KATAKANA VOICED ITERATION MARK
+30FF ; NFKD_QC; N # Lo KATAKANA DIGRAPH KOTO
+3131..318E ; NFKD_QC; N # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+3192..3195 ; NFKD_QC; N # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
+3196..319F ; NFKD_QC; N # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
+3200..321E ; NFKD_QC; N # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+3220..3229 ; NFKD_QC; N # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+322A..3243 ; NFKD_QC; N # So [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH
+3250 ; NFKD_QC; N # So PARTNERSHIP SIGN
+3251..325F ; NFKD_QC; N # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+3260..327E ; NFKD_QC; N # So [31] CIRCLED HANGUL KIYEOK..CIRCLED HANGUL IEUNG U
+3280..3289 ; NFKD_QC; N # No [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
+328A..32B0 ; NFKD_QC; N # So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
+32B1..32BF ; NFKD_QC; N # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+32C0..32FE ; NFKD_QC; N # So [63] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..CIRCLED KATAKANA WO
+3300..33FF ; NFKD_QC; N # So [256] SQUARE APAATO..SQUARE GAL
+AC00..D7A3 ; NFKD_QC; N # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+F900..FA0D ; NFKD_QC; N # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+FA10 ; NFKD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA10
+FA12 ; NFKD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA12
+FA15..FA1E ; NFKD_QC; N # Lo [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+FA20 ; NFKD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA20
+FA22 ; NFKD_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA22
+FA25..FA26 ; NFKD_QC; N # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+FA2A..FA2D ; NFKD_QC; N # Lo [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30..FA6A ; NFKD_QC; N # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA70..FAD9 ; NFKD_QC; N # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+FB00..FB06 ; NFKD_QC; N # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+FB13..FB17 ; NFKD_QC; N # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+FB1D ; NFKD_QC; N # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F..FB28 ; NFKD_QC; N # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+FB29 ; NFKD_QC; N # Sm HEBREW LETTER ALTERNATIVE PLUS SIGN
+FB2A..FB36 ; NFKD_QC; N # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; NFKD_QC; N # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; NFKD_QC; N # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; NFKD_QC; N # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; NFKD_QC; N # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FBB1 ; NFKD_QC; N # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBD3..FD3D ; NFKD_QC; N # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD50..FD8F ; NFKD_QC; N # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92..FDC7 ; NFKD_QC; N # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0..FDFB ; NFKD_QC; N # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+FDFC ; NFKD_QC; N # Sc RIAL SIGN
+FE10..FE16 ; NFKD_QC; N # Po [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK
+FE17 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
+FE18 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
+FE19 ; NFKD_QC; N # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+FE30 ; NFKD_QC; N # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE31..FE32 ; NFKD_QC; N # Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH
+FE33..FE34 ; NFKD_QC; N # Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+FE35 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+FE36 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+FE37 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+FE38 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+FE39 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+FE3A ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+FE3B ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+FE3C ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+FE3D ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+FE3E ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+FE3F ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+FE40 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+FE41 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+FE42 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+FE43 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+FE44 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+FE47 ; NFKD_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
+FE48 ; NFKD_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
+FE49..FE4C ; NFKD_QC; N # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+FE4D..FE4F ; NFKD_QC; N # Pc [3] DASHED LOW LINE..WAVY LOW LINE
+FE50..FE52 ; NFKD_QC; N # Po [3] SMALL COMMA..SMALL FULL STOP
+FE54..FE57 ; NFKD_QC; N # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK
+FE58 ; NFKD_QC; N # Pd SMALL EM DASH
+FE59 ; NFKD_QC; N # Ps SMALL LEFT PARENTHESIS
+FE5A ; NFKD_QC; N # Pe SMALL RIGHT PARENTHESIS
+FE5B ; NFKD_QC; N # Ps SMALL LEFT CURLY BRACKET
+FE5C ; NFKD_QC; N # Pe SMALL RIGHT CURLY BRACKET
+FE5D ; NFKD_QC; N # Ps SMALL LEFT TORTOISE SHELL BRACKET
+FE5E ; NFKD_QC; N # Pe SMALL RIGHT TORTOISE SHELL BRACKET
+FE5F..FE61 ; NFKD_QC; N # Po [3] SMALL NUMBER SIGN..SMALL ASTERISK
+FE62 ; NFKD_QC; N # Sm SMALL PLUS SIGN
+FE63 ; NFKD_QC; N # Pd SMALL HYPHEN-MINUS
+FE64..FE66 ; NFKD_QC; N # Sm [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN
+FE68 ; NFKD_QC; N # Po SMALL REVERSE SOLIDUS
+FE69 ; NFKD_QC; N # Sc SMALL DOLLAR SIGN
+FE6A..FE6B ; NFKD_QC; N # Po [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT
+FE70..FE72 ; NFKD_QC; N # Lo [3] ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM
+FE74 ; NFKD_QC; N # Lo ARABIC KASRATAN ISOLATED FORM
+FE76..FEFC ; NFKD_QC; N # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FF01..FF03 ; NFKD_QC; N # Po [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN
+FF04 ; NFKD_QC; N # Sc FULLWIDTH DOLLAR SIGN
+FF05..FF07 ; NFKD_QC; N # Po [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE
+FF08 ; NFKD_QC; N # Ps FULLWIDTH LEFT PARENTHESIS
+FF09 ; NFKD_QC; N # Pe FULLWIDTH RIGHT PARENTHESIS
+FF0A ; NFKD_QC; N # Po FULLWIDTH ASTERISK
+FF0B ; NFKD_QC; N # Sm FULLWIDTH PLUS SIGN
+FF0C ; NFKD_QC; N # Po FULLWIDTH COMMA
+FF0D ; NFKD_QC; N # Pd FULLWIDTH HYPHEN-MINUS
+FF0E..FF0F ; NFKD_QC; N # Po [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS
+FF10..FF19 ; NFKD_QC; N # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
+FF1A..FF1B ; NFKD_QC; N # Po [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON
+FF1C..FF1E ; NFKD_QC; N # Sm [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN
+FF1F..FF20 ; NFKD_QC; N # Po [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT
+FF21..FF3A ; NFKD_QC; N # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+FF3B ; NFKD_QC; N # Ps FULLWIDTH LEFT SQUARE BRACKET
+FF3C ; NFKD_QC; N # Po FULLWIDTH REVERSE SOLIDUS
+FF3D ; NFKD_QC; N # Pe FULLWIDTH RIGHT SQUARE BRACKET
+FF3E ; NFKD_QC; N # Sk FULLWIDTH CIRCUMFLEX ACCENT
+FF3F ; NFKD_QC; N # Pc FULLWIDTH LOW LINE
+FF40 ; NFKD_QC; N # Sk FULLWIDTH GRAVE ACCENT
+FF41..FF5A ; NFKD_QC; N # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+FF5B ; NFKD_QC; N # Ps FULLWIDTH LEFT CURLY BRACKET
+FF5C ; NFKD_QC; N # Sm FULLWIDTH VERTICAL LINE
+FF5D ; NFKD_QC; N # Pe FULLWIDTH RIGHT CURLY BRACKET
+FF5E ; NFKD_QC; N # Sm FULLWIDTH TILDE
+FF5F ; NFKD_QC; N # Ps FULLWIDTH LEFT WHITE PARENTHESIS
+FF60 ; NFKD_QC; N # Pe FULLWIDTH RIGHT WHITE PARENTHESIS
+FF61 ; NFKD_QC; N # Po HALFWIDTH IDEOGRAPHIC FULL STOP
+FF62 ; NFKD_QC; N # Ps HALFWIDTH LEFT CORNER BRACKET
+FF63 ; NFKD_QC; N # Pe HALFWIDTH RIGHT CORNER BRACKET
+FF64..FF65 ; NFKD_QC; N # Po [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT
+FF66..FF6F ; NFKD_QC; N # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+FF70 ; NFKD_QC; N # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF71..FF9D ; NFKD_QC; N # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+FF9E..FF9F ; NFKD_QC; N # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+FFA0..FFBE ; NFKD_QC; N # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+FFC2..FFC7 ; NFKD_QC; N # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+FFCA..FFCF ; NFKD_QC; N # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+FFD2..FFD7 ; NFKD_QC; N # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+FFDA..FFDC ; NFKD_QC; N # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+FFE0..FFE1 ; NFKD_QC; N # Sc [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN
+FFE2 ; NFKD_QC; N # Sm FULLWIDTH NOT SIGN
+FFE3 ; NFKD_QC; N # Sk FULLWIDTH MACRON
+FFE4 ; NFKD_QC; N # So FULLWIDTH BROKEN BAR
+FFE5..FFE6 ; NFKD_QC; N # Sc [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN
+FFE8 ; NFKD_QC; N # So HALFWIDTH FORMS LIGHT VERTICAL
+FFE9..FFEC ; NFKD_QC; N # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW
+FFED..FFEE ; NFKD_QC; N # So [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
+1D15E..1D164 ; NFKD_QC; N # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; NFKD_QC; N # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+1D400..1D454 ; NFKD_QC; N # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+1D456..1D49C ; NFKD_QC; N # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+1D49E..1D49F ; NFKD_QC; N # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+1D4A2 ; NFKD_QC; N # L& MATHEMATICAL SCRIPT CAPITAL G
+1D4A5..1D4A6 ; NFKD_QC; N # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+1D4A9..1D4AC ; NFKD_QC; N # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+1D4AE..1D4B9 ; NFKD_QC; N # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+1D4BB ; NFKD_QC; N # L& MATHEMATICAL SCRIPT SMALL F
+1D4BD..1D4C3 ; NFKD_QC; N # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+1D4C5..1D505 ; NFKD_QC; N # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+1D507..1D50A ; NFKD_QC; N # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+1D50D..1D514 ; NFKD_QC; N # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+1D516..1D51C ; NFKD_QC; N # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+1D51E..1D539 ; NFKD_QC; N # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D53B..1D53E ; NFKD_QC; N # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D540..1D544 ; NFKD_QC; N # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D546 ; NFKD_QC; N # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D54A..1D550 ; NFKD_QC; N # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D552..1D6A5 ; NFKD_QC; N # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+1D6A8..1D6C0 ; NFKD_QC; N # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+1D6C1 ; NFKD_QC; N # Sm MATHEMATICAL BOLD NABLA
+1D6C2..1D6DA ; NFKD_QC; N # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+1D6DB ; NFKD_QC; N # Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+1D6DC..1D6FA ; NFKD_QC; N # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+1D6FB ; NFKD_QC; N # Sm MATHEMATICAL ITALIC NABLA
+1D6FC..1D714 ; NFKD_QC; N # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+1D715 ; NFKD_QC; N # Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+1D716..1D734 ; NFKD_QC; N # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D735 ; NFKD_QC; N # Sm MATHEMATICAL BOLD ITALIC NABLA
+1D736..1D74E ; NFKD_QC; N # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+1D74F ; NFKD_QC; N # Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+1D750..1D76E ; NFKD_QC; N # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D76F ; NFKD_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD NABLA
+1D770..1D788 ; NFKD_QC; N # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+1D789 ; NFKD_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+1D78A..1D7A8 ; NFKD_QC; N # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1D7A9 ; NFKD_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+1D7AA..1D7C2 ; NFKD_QC; N # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+1D7C3 ; NFKD_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+1D7C4..1D7CB ; NFKD_QC; N # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+1D7CE..1D7FF ; NFKD_QC; N # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+2F800..2FA1D ; NFKD_QC; N # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 16574
+
+# ================================================
+
+# Property: NFKC_Quick_Check
+
+# All code points not explicitly listed for NFKC_Quick_Check
+# have the value Yes (Y).
+
+# @missing: 0000..10FFFF; NFKC_QC; Yes
+
+# ================================================
+
+# NFKC_Quick_Check=No
+
+00A0 ; NFKC_QC; N # Zs NO-BREAK SPACE
+00A8 ; NFKC_QC; N # Sk DIAERESIS
+00AA ; NFKC_QC; N # L& FEMININE ORDINAL INDICATOR
+00AF ; NFKC_QC; N # Sk MACRON
+00B2..00B3 ; NFKC_QC; N # No [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE
+00B4 ; NFKC_QC; N # Sk ACUTE ACCENT
+00B5 ; NFKC_QC; N # L& MICRO SIGN
+00B8 ; NFKC_QC; N # Sk CEDILLA
+00B9 ; NFKC_QC; N # No SUPERSCRIPT ONE
+00BA ; NFKC_QC; N # L& MASCULINE ORDINAL INDICATOR
+00BC..00BE ; NFKC_QC; N # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+0132..0133 ; NFKC_QC; N # L& [2] LATIN CAPITAL LIGATURE IJ..LATIN SMALL LIGATURE IJ
+013F..0140 ; NFKC_QC; N # L& [2] LATIN CAPITAL LETTER L WITH MIDDLE DOT..LATIN SMALL LETTER L WITH MIDDLE DOT
+0149 ; NFKC_QC; N # L& LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+017F ; NFKC_QC; N # L& LATIN SMALL LETTER LONG S
+01C4..01CC ; NFKC_QC; N # L& [9] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER NJ
+01F1..01F3 ; NFKC_QC; N # L& [3] LATIN CAPITAL LETTER DZ..LATIN SMALL LETTER DZ
+02B0..02B8 ; NFKC_QC; N # Lm [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y
+02D8..02DD ; NFKC_QC; N # Sk [6] BREVE..DOUBLE ACUTE ACCENT
+02E0..02E4 ; NFKC_QC; N # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+0340..0341 ; NFKC_QC; N # Mn [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+0343..0344 ; NFKC_QC; N # Mn [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS
+0374 ; NFKC_QC; N # Sk GREEK NUMERAL SIGN
+037A ; NFKC_QC; N # Lm GREEK YPOGEGRAMMENI
+037E ; NFKC_QC; N # Po GREEK QUESTION MARK
+0384..0385 ; NFKC_QC; N # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS
+0387 ; NFKC_QC; N # Po GREEK ANO TELEIA
+03D0..03D6 ; NFKC_QC; N # L& [7] GREEK BETA SYMBOL..GREEK PI SYMBOL
+03F0..03F2 ; NFKC_QC; N # L& [3] GREEK KAPPA SYMBOL..GREEK LUNATE SIGMA SYMBOL
+03F4..03F5 ; NFKC_QC; N # L& [2] GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL
+03F9 ; NFKC_QC; N # L& GREEK CAPITAL LUNATE SIGMA SYMBOL
+0587 ; NFKC_QC; N # L& ARMENIAN SMALL LIGATURE ECH YIWN
+0675..0678 ; NFKC_QC; N # Lo [4] ARABIC LETTER HIGH HAMZA ALEF..ARABIC LETTER HIGH HAMZA YEH
+0958..095F ; NFKC_QC; N # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09DC..09DD ; NFKC_QC; N # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; NFKC_QC; N # Lo BENGALI LETTER YYA
+0A33 ; NFKC_QC; N # Lo GURMUKHI LETTER LLA
+0A36 ; NFKC_QC; N # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; NFKC_QC; N # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; NFKC_QC; N # Lo GURMUKHI LETTER FA
+0B5C..0B5D ; NFKC_QC; N # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0E33 ; NFKC_QC; N # Lo THAI CHARACTER SARA AM
+0EB3 ; NFKC_QC; N # Lo LAO VOWEL SIGN AM
+0EDC..0EDD ; NFKC_QC; N # Lo [2] LAO HO NO..LAO HO MO
+0F0C ; NFKC_QC; N # Po TIBETAN MARK DELIMITER TSHEG BSTAR
+0F43 ; NFKC_QC; N # Lo TIBETAN LETTER GHA
+0F4D ; NFKC_QC; N # Lo TIBETAN LETTER DDHA
+0F52 ; NFKC_QC; N # Lo TIBETAN LETTER DHA
+0F57 ; NFKC_QC; N # Lo TIBETAN LETTER BHA
+0F5C ; NFKC_QC; N # Lo TIBETAN LETTER DZHA
+0F69 ; NFKC_QC; N # Lo TIBETAN LETTER KSSA
+0F73 ; NFKC_QC; N # Mn TIBETAN VOWEL SIGN II
+0F75..0F79 ; NFKC_QC; N # Mn [5] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC LL
+0F81 ; NFKC_QC; N # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; NFKC_QC; N # Mn TIBETAN SUBJOINED LETTER KSSA
+10FC ; NFKC_QC; N # Lm MODIFIER LETTER GEORGIAN NAR
+1D2C..1D2E ; NFKC_QC; N # Lm [3] MODIFIER LETTER CAPITAL A..MODIFIER LETTER CAPITAL B
+1D30..1D3A ; NFKC_QC; N # Lm [11] MODIFIER LETTER CAPITAL D..MODIFIER LETTER CAPITAL N
+1D3C..1D4D ; NFKC_QC; N # Lm [18] MODIFIER LETTER CAPITAL O..MODIFIER LETTER SMALL G
+1D4F..1D61 ; NFKC_QC; N # Lm [19] MODIFIER LETTER SMALL K..MODIFIER LETTER SMALL CHI
+1D62..1D6A ; NFKC_QC; N # L& [9] LATIN SUBSCRIPT SMALL LETTER I..GREEK SUBSCRIPT SMALL LETTER CHI
+1D78 ; NFKC_QC; N # Lm MODIFIER LETTER CYRILLIC EN
+1D9B..1DBF ; NFKC_QC; N # Lm [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+1E9A..1E9B ; NFKC_QC; N # L& [2] LATIN SMALL LETTER A WITH RIGHT HALF RING..LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1F71 ; NFKC_QC; N # L& GREEK SMALL LETTER ALPHA WITH OXIA
+1F73 ; NFKC_QC; N # L& GREEK SMALL LETTER EPSILON WITH OXIA
+1F75 ; NFKC_QC; N # L& GREEK SMALL LETTER ETA WITH OXIA
+1F77 ; NFKC_QC; N # L& GREEK SMALL LETTER IOTA WITH OXIA
+1F79 ; NFKC_QC; N # L& GREEK SMALL LETTER OMICRON WITH OXIA
+1F7B ; NFKC_QC; N # L& GREEK SMALL LETTER UPSILON WITH OXIA
+1F7D ; NFKC_QC; N # L& GREEK SMALL LETTER OMEGA WITH OXIA
+1FBB ; NFKC_QC; N # L& GREEK CAPITAL LETTER ALPHA WITH OXIA
+1FBD ; NFKC_QC; N # Sk GREEK KORONIS
+1FBE ; NFKC_QC; N # L& GREEK PROSGEGRAMMENI
+1FBF..1FC1 ; NFKC_QC; N # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+1FC9 ; NFKC_QC; N # L& GREEK CAPITAL LETTER EPSILON WITH OXIA
+1FCB ; NFKC_QC; N # L& GREEK CAPITAL LETTER ETA WITH OXIA
+1FCD..1FCF ; NFKC_QC; N # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+1FD3 ; NFKC_QC; N # L& GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FDB ; NFKC_QC; N # L& GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD..1FDF ; NFKC_QC; N # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+1FE3 ; NFKC_QC; N # L& GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+1FEB ; NFKC_QC; N # L& GREEK CAPITAL LETTER UPSILON WITH OXIA
+1FED..1FEF ; NFKC_QC; N # Sk [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
+1FF9 ; NFKC_QC; N # L& GREEK CAPITAL LETTER OMICRON WITH OXIA
+1FFB ; NFKC_QC; N # L& GREEK CAPITAL LETTER OMEGA WITH OXIA
+1FFD..1FFE ; NFKC_QC; N # Sk [2] GREEK OXIA..GREEK DASIA
+2000..200A ; NFKC_QC; N # Zs [11] EN QUAD..HAIR SPACE
+2011 ; NFKC_QC; N # Pd NON-BREAKING HYPHEN
+2017 ; NFKC_QC; N # Po DOUBLE LOW LINE
+2024..2026 ; NFKC_QC; N # Po [3] ONE DOT LEADER..HORIZONTAL ELLIPSIS
+202F ; NFKC_QC; N # Zs NARROW NO-BREAK SPACE
+2033..2034 ; NFKC_QC; N # Po [2] DOUBLE PRIME..TRIPLE PRIME
+2036..2037 ; NFKC_QC; N # Po [2] REVERSED DOUBLE PRIME..REVERSED TRIPLE PRIME
+203C ; NFKC_QC; N # Po DOUBLE EXCLAMATION MARK
+203E ; NFKC_QC; N # Po OVERLINE
+2047..2049 ; NFKC_QC; N # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
+2057 ; NFKC_QC; N # Po QUADRUPLE PRIME
+205F ; NFKC_QC; N # Zs MEDIUM MATHEMATICAL SPACE
+2070 ; NFKC_QC; N # No SUPERSCRIPT ZERO
+2071 ; NFKC_QC; N # L& SUPERSCRIPT LATIN SMALL LETTER I
+2074..2079 ; NFKC_QC; N # No [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE
+207A..207C ; NFKC_QC; N # Sm [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN
+207D ; NFKC_QC; N # Ps SUPERSCRIPT LEFT PARENTHESIS
+207E ; NFKC_QC; N # Pe SUPERSCRIPT RIGHT PARENTHESIS
+207F ; NFKC_QC; N # L& SUPERSCRIPT LATIN SMALL LETTER N
+2080..2089 ; NFKC_QC; N # No [10] SUBSCRIPT ZERO..SUBSCRIPT NINE
+208A..208C ; NFKC_QC; N # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
+208D ; NFKC_QC; N # Ps SUBSCRIPT LEFT PARENTHESIS
+208E ; NFKC_QC; N # Pe SUBSCRIPT RIGHT PARENTHESIS
+2090..2094 ; NFKC_QC; N # Lm [5] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER SCHWA
+20A8 ; NFKC_QC; N # Sc RUPEE SIGN
+2100..2101 ; NFKC_QC; N # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
+2102 ; NFKC_QC; N # L& DOUBLE-STRUCK CAPITAL C
+2103 ; NFKC_QC; N # So DEGREE CELSIUS
+2105..2106 ; NFKC_QC; N # So [2] CARE OF..CADA UNA
+2107 ; NFKC_QC; N # L& EULER CONSTANT
+2109 ; NFKC_QC; N # So DEGREE FAHRENHEIT
+210A..2113 ; NFKC_QC; N # L& [10] SCRIPT SMALL G..SCRIPT SMALL L
+2115 ; NFKC_QC; N # L& DOUBLE-STRUCK CAPITAL N
+2116 ; NFKC_QC; N # So NUMERO SIGN
+2119..211D ; NFKC_QC; N # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+2120..2122 ; NFKC_QC; N # So [3] SERVICE MARK..TRADE MARK SIGN
+2124 ; NFKC_QC; N # L& DOUBLE-STRUCK CAPITAL Z
+2126 ; NFKC_QC; N # L& OHM SIGN
+2128 ; NFKC_QC; N # L& BLACK-LETTER CAPITAL Z
+212A..212D ; NFKC_QC; N # L& [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
+212F..2131 ; NFKC_QC; N # L& [3] SCRIPT SMALL E..SCRIPT CAPITAL F
+2133..2134 ; NFKC_QC; N # L& [2] SCRIPT CAPITAL M..SCRIPT SMALL O
+2135..2138 ; NFKC_QC; N # Lo [4] ALEF SYMBOL..DALET SYMBOL
+2139 ; NFKC_QC; N # L& INFORMATION SOURCE
+213B ; NFKC_QC; N # So FACSIMILE SIGN
+213C..213F ; NFKC_QC; N # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+2140 ; NFKC_QC; N # Sm DOUBLE-STRUCK N-ARY SUMMATION
+2145..2149 ; NFKC_QC; N # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+2153..215F ; NFKC_QC; N # No [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE
+2160..217F ; NFKC_QC; N # Nl [32] ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND
+222C..222D ; NFKC_QC; N # Sm [2] DOUBLE INTEGRAL..TRIPLE INTEGRAL
+222F..2230 ; NFKC_QC; N # Sm [2] SURFACE INTEGRAL..VOLUME INTEGRAL
+2329 ; NFKC_QC; N # Ps LEFT-POINTING ANGLE BRACKET
+232A ; NFKC_QC; N # Pe RIGHT-POINTING ANGLE BRACKET
+2460..249B ; NFKC_QC; N # No [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
+249C..24E9 ; NFKC_QC; N # So [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
+24EA ; NFKC_QC; N # No CIRCLED DIGIT ZERO
+2A0C ; NFKC_QC; N # Sm QUADRUPLE INTEGRAL OPERATOR
+2A74..2A76 ; NFKC_QC; N # Sm [3] DOUBLE COLON EQUAL..THREE CONSECUTIVE EQUALS SIGNS
+2ADC ; NFKC_QC; N # Sm FORKING
+2D6F ; NFKC_QC; N # Lm TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+2E9F ; NFKC_QC; N # So CJK RADICAL MOTHER
+2EF3 ; NFKC_QC; N # So CJK RADICAL C-SIMPLIFIED TURTLE
+2F00..2FD5 ; NFKC_QC; N # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
+3000 ; NFKC_QC; N # Zs IDEOGRAPHIC SPACE
+3036 ; NFKC_QC; N # So CIRCLED POSTAL MARK
+3038..303A ; NFKC_QC; N # Nl [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
+309B..309C ; NFKC_QC; N # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309F ; NFKC_QC; N # Lo HIRAGANA DIGRAPH YORI
+30FF ; NFKC_QC; N # Lo KATAKANA DIGRAPH KOTO
+3131..318E ; NFKC_QC; N # Lo [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+3192..3195 ; NFKC_QC; N # No [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
+3196..319F ; NFKC_QC; N # So [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
+3200..321E ; NFKC_QC; N # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+3220..3229 ; NFKC_QC; N # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+322A..3243 ; NFKC_QC; N # So [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH
+3250 ; NFKC_QC; N # So PARTNERSHIP SIGN
+3251..325F ; NFKC_QC; N # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+3260..327E ; NFKC_QC; N # So [31] CIRCLED HANGUL KIYEOK..CIRCLED HANGUL IEUNG U
+3280..3289 ; NFKC_QC; N # No [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
+328A..32B0 ; NFKC_QC; N # So [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
+32B1..32BF ; NFKC_QC; N # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+32C0..32FE ; NFKC_QC; N # So [63] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..CIRCLED KATAKANA WO
+3300..33FF ; NFKC_QC; N # So [256] SQUARE APAATO..SQUARE GAL
+F900..FA0D ; NFKC_QC; N # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+FA10 ; NFKC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA10
+FA12 ; NFKC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA12
+FA15..FA1E ; NFKC_QC; N # Lo [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+FA20 ; NFKC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA20
+FA22 ; NFKC_QC; N # Lo CJK COMPATIBILITY IDEOGRAPH-FA22
+FA25..FA26 ; NFKC_QC; N # Lo [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+FA2A..FA2D ; NFKC_QC; N # Lo [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D
+FA30..FA6A ; NFKC_QC; N # Lo [59] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6A
+FA70..FAD9 ; NFKC_QC; N # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+FB00..FB06 ; NFKC_QC; N # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+FB13..FB17 ; NFKC_QC; N # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+FB1D ; NFKC_QC; N # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F..FB28 ; NFKC_QC; N # Lo [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+FB29 ; NFKC_QC; N # Sm HEBREW LETTER ALTERNATIVE PLUS SIGN
+FB2A..FB36 ; NFKC_QC; N # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; NFKC_QC; N # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; NFKC_QC; N # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; NFKC_QC; N # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; NFKC_QC; N # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FBB1 ; NFKC_QC; N # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBD3..FD3D ; NFKC_QC; N # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD50..FD8F ; NFKC_QC; N # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92..FDC7 ; NFKC_QC; N # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0..FDFB ; NFKC_QC; N # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+FDFC ; NFKC_QC; N # Sc RIAL SIGN
+FE10..FE16 ; NFKC_QC; N # Po [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK
+FE17 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
+FE18 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
+FE19 ; NFKC_QC; N # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+FE30 ; NFKC_QC; N # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE31..FE32 ; NFKC_QC; N # Pd [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH
+FE33..FE34 ; NFKC_QC; N # Pc [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+FE35 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+FE36 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+FE37 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+FE38 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+FE39 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+FE3A ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+FE3B ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+FE3C ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+FE3D ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+FE3E ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+FE3F ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+FE40 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+FE41 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+FE42 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+FE43 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+FE44 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+FE47 ; NFKC_QC; N # Ps PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
+FE48 ; NFKC_QC; N # Pe PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
+FE49..FE4C ; NFKC_QC; N # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+FE4D..FE4F ; NFKC_QC; N # Pc [3] DASHED LOW LINE..WAVY LOW LINE
+FE50..FE52 ; NFKC_QC; N # Po [3] SMALL COMMA..SMALL FULL STOP
+FE54..FE57 ; NFKC_QC; N # Po [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK
+FE58 ; NFKC_QC; N # Pd SMALL EM DASH
+FE59 ; NFKC_QC; N # Ps SMALL LEFT PARENTHESIS
+FE5A ; NFKC_QC; N # Pe SMALL RIGHT PARENTHESIS
+FE5B ; NFKC_QC; N # Ps SMALL LEFT CURLY BRACKET
+FE5C ; NFKC_QC; N # Pe SMALL RIGHT CURLY BRACKET
+FE5D ; NFKC_QC; N # Ps SMALL LEFT TORTOISE SHELL BRACKET
+FE5E ; NFKC_QC; N # Pe SMALL RIGHT TORTOISE SHELL BRACKET
+FE5F..FE61 ; NFKC_QC; N # Po [3] SMALL NUMBER SIGN..SMALL ASTERISK
+FE62 ; NFKC_QC; N # Sm SMALL PLUS SIGN
+FE63 ; NFKC_QC; N # Pd SMALL HYPHEN-MINUS
+FE64..FE66 ; NFKC_QC; N # Sm [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN
+FE68 ; NFKC_QC; N # Po SMALL REVERSE SOLIDUS
+FE69 ; NFKC_QC; N # Sc SMALL DOLLAR SIGN
+FE6A..FE6B ; NFKC_QC; N # Po [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT
+FE70..FE72 ; NFKC_QC; N # Lo [3] ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM
+FE74 ; NFKC_QC; N # Lo ARABIC KASRATAN ISOLATED FORM
+FE76..FEFC ; NFKC_QC; N # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FF01..FF03 ; NFKC_QC; N # Po [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN
+FF04 ; NFKC_QC; N # Sc FULLWIDTH DOLLAR SIGN
+FF05..FF07 ; NFKC_QC; N # Po [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE
+FF08 ; NFKC_QC; N # Ps FULLWIDTH LEFT PARENTHESIS
+FF09 ; NFKC_QC; N # Pe FULLWIDTH RIGHT PARENTHESIS
+FF0A ; NFKC_QC; N # Po FULLWIDTH ASTERISK
+FF0B ; NFKC_QC; N # Sm FULLWIDTH PLUS SIGN
+FF0C ; NFKC_QC; N # Po FULLWIDTH COMMA
+FF0D ; NFKC_QC; N # Pd FULLWIDTH HYPHEN-MINUS
+FF0E..FF0F ; NFKC_QC; N # Po [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS
+FF10..FF19 ; NFKC_QC; N # Nd [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
+FF1A..FF1B ; NFKC_QC; N # Po [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON
+FF1C..FF1E ; NFKC_QC; N # Sm [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN
+FF1F..FF20 ; NFKC_QC; N # Po [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT
+FF21..FF3A ; NFKC_QC; N # L& [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+FF3B ; NFKC_QC; N # Ps FULLWIDTH LEFT SQUARE BRACKET
+FF3C ; NFKC_QC; N # Po FULLWIDTH REVERSE SOLIDUS
+FF3D ; NFKC_QC; N # Pe FULLWIDTH RIGHT SQUARE BRACKET
+FF3E ; NFKC_QC; N # Sk FULLWIDTH CIRCUMFLEX ACCENT
+FF3F ; NFKC_QC; N # Pc FULLWIDTH LOW LINE
+FF40 ; NFKC_QC; N # Sk FULLWIDTH GRAVE ACCENT
+FF41..FF5A ; NFKC_QC; N # L& [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+FF5B ; NFKC_QC; N # Ps FULLWIDTH LEFT CURLY BRACKET
+FF5C ; NFKC_QC; N # Sm FULLWIDTH VERTICAL LINE
+FF5D ; NFKC_QC; N # Pe FULLWIDTH RIGHT CURLY BRACKET
+FF5E ; NFKC_QC; N # Sm FULLWIDTH TILDE
+FF5F ; NFKC_QC; N # Ps FULLWIDTH LEFT WHITE PARENTHESIS
+FF60 ; NFKC_QC; N # Pe FULLWIDTH RIGHT WHITE PARENTHESIS
+FF61 ; NFKC_QC; N # Po HALFWIDTH IDEOGRAPHIC FULL STOP
+FF62 ; NFKC_QC; N # Ps HALFWIDTH LEFT CORNER BRACKET
+FF63 ; NFKC_QC; N # Pe HALFWIDTH RIGHT CORNER BRACKET
+FF64..FF65 ; NFKC_QC; N # Po [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT
+FF66..FF6F ; NFKC_QC; N # Lo [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+FF70 ; NFKC_QC; N # Lm HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+FF71..FF9D ; NFKC_QC; N # Lo [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+FF9E..FF9F ; NFKC_QC; N # Lm [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+FFA0..FFBE ; NFKC_QC; N # Lo [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+FFC2..FFC7 ; NFKC_QC; N # Lo [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+FFCA..FFCF ; NFKC_QC; N # Lo [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+FFD2..FFD7 ; NFKC_QC; N # Lo [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+FFDA..FFDC ; NFKC_QC; N # Lo [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+FFE0..FFE1 ; NFKC_QC; N # Sc [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN
+FFE2 ; NFKC_QC; N # Sm FULLWIDTH NOT SIGN
+FFE3 ; NFKC_QC; N # Sk FULLWIDTH MACRON
+FFE4 ; NFKC_QC; N # So FULLWIDTH BROKEN BAR
+FFE5..FFE6 ; NFKC_QC; N # Sc [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN
+FFE8 ; NFKC_QC; N # So HALFWIDTH FORMS LIGHT VERTICAL
+FFE9..FFEC ; NFKC_QC; N # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW
+FFED..FFEE ; NFKC_QC; N # So [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
+1D15E..1D164 ; NFKC_QC; N # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; NFKC_QC; N # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+1D400..1D454 ; NFKC_QC; N # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+1D456..1D49C ; NFKC_QC; N # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+1D49E..1D49F ; NFKC_QC; N # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+1D4A2 ; NFKC_QC; N # L& MATHEMATICAL SCRIPT CAPITAL G
+1D4A5..1D4A6 ; NFKC_QC; N # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+1D4A9..1D4AC ; NFKC_QC; N # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+1D4AE..1D4B9 ; NFKC_QC; N # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+1D4BB ; NFKC_QC; N # L& MATHEMATICAL SCRIPT SMALL F
+1D4BD..1D4C3 ; NFKC_QC; N # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+1D4C5..1D505 ; NFKC_QC; N # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+1D507..1D50A ; NFKC_QC; N # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+1D50D..1D514 ; NFKC_QC; N # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+1D516..1D51C ; NFKC_QC; N # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+1D51E..1D539 ; NFKC_QC; N # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D53B..1D53E ; NFKC_QC; N # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D540..1D544 ; NFKC_QC; N # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D546 ; NFKC_QC; N # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D54A..1D550 ; NFKC_QC; N # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D552..1D6A5 ; NFKC_QC; N # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+1D6A8..1D6C0 ; NFKC_QC; N # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+1D6C1 ; NFKC_QC; N # Sm MATHEMATICAL BOLD NABLA
+1D6C2..1D6DA ; NFKC_QC; N # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+1D6DB ; NFKC_QC; N # Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+1D6DC..1D6FA ; NFKC_QC; N # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+1D6FB ; NFKC_QC; N # Sm MATHEMATICAL ITALIC NABLA
+1D6FC..1D714 ; NFKC_QC; N # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+1D715 ; NFKC_QC; N # Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+1D716..1D734 ; NFKC_QC; N # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D735 ; NFKC_QC; N # Sm MATHEMATICAL BOLD ITALIC NABLA
+1D736..1D74E ; NFKC_QC; N # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+1D74F ; NFKC_QC; N # Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+1D750..1D76E ; NFKC_QC; N # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D76F ; NFKC_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD NABLA
+1D770..1D788 ; NFKC_QC; N # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+1D789 ; NFKC_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+1D78A..1D7A8 ; NFKC_QC; N # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1D7A9 ; NFKC_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+1D7AA..1D7C2 ; NFKC_QC; N # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+1D7C3 ; NFKC_QC; N # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+1D7C4..1D7CB ; NFKC_QC; N # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+1D7CE..1D7FF ; NFKC_QC; N # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+2F800..2FA1D ; NFKC_QC; N # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 4486
+
+# ================================================
+
+# NFKC_Quick_Check=Maybe
+
+0300..0304 ; NFKC_QC; M # Mn [5] COMBINING GRAVE ACCENT..COMBINING MACRON
+0306..030C ; NFKC_QC; M # Mn [7] COMBINING BREVE..COMBINING CARON
+030F ; NFKC_QC; M # Mn COMBINING DOUBLE GRAVE ACCENT
+0311 ; NFKC_QC; M # Mn COMBINING INVERTED BREVE
+0313..0314 ; NFKC_QC; M # Mn [2] COMBINING COMMA ABOVE..COMBINING REVERSED COMMA ABOVE
+031B ; NFKC_QC; M # Mn COMBINING HORN
+0323..0328 ; NFKC_QC; M # Mn [6] COMBINING DOT BELOW..COMBINING OGONEK
+032D..032E ; NFKC_QC; M # Mn [2] COMBINING CIRCUMFLEX ACCENT BELOW..COMBINING BREVE BELOW
+0330..0331 ; NFKC_QC; M # Mn [2] COMBINING TILDE BELOW..COMBINING MACRON BELOW
+0338 ; NFKC_QC; M # Mn COMBINING LONG SOLIDUS OVERLAY
+0342 ; NFKC_QC; M # Mn COMBINING GREEK PERISPOMENI
+0345 ; NFKC_QC; M # Mn COMBINING GREEK YPOGEGRAMMENI
+0653..0655 ; NFKC_QC; M # Mn [3] ARABIC MADDAH ABOVE..ARABIC HAMZA BELOW
+093C ; NFKC_QC; M # Mn DEVANAGARI SIGN NUKTA
+09BE ; NFKC_QC; M # Mc BENGALI VOWEL SIGN AA
+09D7 ; NFKC_QC; M # Mc BENGALI AU LENGTH MARK
+0B3E ; NFKC_QC; M # Mc ORIYA VOWEL SIGN AA
+0B56 ; NFKC_QC; M # Mn ORIYA AI LENGTH MARK
+0B57 ; NFKC_QC; M # Mc ORIYA AU LENGTH MARK
+0BBE ; NFKC_QC; M # Mc TAMIL VOWEL SIGN AA
+0BD7 ; NFKC_QC; M # Mc TAMIL AU LENGTH MARK
+0C56 ; NFKC_QC; M # Mn TELUGU AI LENGTH MARK
+0CC2 ; NFKC_QC; M # Mc KANNADA VOWEL SIGN UU
+0CD5..0CD6 ; NFKC_QC; M # Mc [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+0D3E ; NFKC_QC; M # Mc MALAYALAM VOWEL SIGN AA
+0D57 ; NFKC_QC; M # Mc MALAYALAM AU LENGTH MARK
+0DCA ; NFKC_QC; M # Mn SINHALA SIGN AL-LAKUNA
+0DCF ; NFKC_QC; M # Mc SINHALA VOWEL SIGN AELA-PILLA
+0DDF ; NFKC_QC; M # Mc SINHALA VOWEL SIGN GAYANUKITTA
+102E ; NFKC_QC; M # Mn MYANMAR VOWEL SIGN II
+1161..1175 ; NFKC_QC; M # Lo [21] HANGUL JUNGSEONG A..HANGUL JUNGSEONG I
+11A8..11C2 ; NFKC_QC; M # Lo [27] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG HIEUH
+1B35 ; NFKC_QC; M # Mc BALINESE VOWEL SIGN TEDUNG
+3099..309A ; NFKC_QC; M # Mn [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+
+# Total code points: 102
+
+# ================================================
+
+# Derived Property: Expands_On_NFD
+# Generated according to UAX #15.
+# Characters whose normalized length is not one.
+# WARNING: Normalization of STRINGS must use the algorithm in UAX #15 because characters may interact.
+# The length of a normalized string is not necessarily the sum of the lengths of the normalized characters!
+
+00C0..00C5 ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER A WITH RING ABOVE
+00C7..00CF ; Expands_On_NFD # L& [9] LATIN CAPITAL LETTER C WITH CEDILLA..LATIN CAPITAL LETTER I WITH DIAERESIS
+00D1..00D6 ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER N WITH TILDE..LATIN CAPITAL LETTER O WITH DIAERESIS
+00D9..00DD ; Expands_On_NFD # L& [5] LATIN CAPITAL LETTER U WITH GRAVE..LATIN CAPITAL LETTER Y WITH ACUTE
+00E0..00E5 ; Expands_On_NFD # L& [6] LATIN SMALL LETTER A WITH GRAVE..LATIN SMALL LETTER A WITH RING ABOVE
+00E7..00EF ; Expands_On_NFD # L& [9] LATIN SMALL LETTER C WITH CEDILLA..LATIN SMALL LETTER I WITH DIAERESIS
+00F1..00F6 ; Expands_On_NFD # L& [6] LATIN SMALL LETTER N WITH TILDE..LATIN SMALL LETTER O WITH DIAERESIS
+00F9..00FD ; Expands_On_NFD # L& [5] LATIN SMALL LETTER U WITH GRAVE..LATIN SMALL LETTER Y WITH ACUTE
+00FF..010F ; Expands_On_NFD # L& [17] LATIN SMALL LETTER Y WITH DIAERESIS..LATIN SMALL LETTER D WITH CARON
+0112..0125 ; Expands_On_NFD # L& [20] LATIN CAPITAL LETTER E WITH MACRON..LATIN SMALL LETTER H WITH CIRCUMFLEX
+0128..0130 ; Expands_On_NFD # L& [9] LATIN CAPITAL LETTER I WITH TILDE..LATIN CAPITAL LETTER I WITH DOT ABOVE
+0134..0137 ; Expands_On_NFD # L& [4] LATIN CAPITAL LETTER J WITH CIRCUMFLEX..LATIN SMALL LETTER K WITH CEDILLA
+0139..013E ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER L WITH CARON
+0143..0148 ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER N WITH ACUTE..LATIN SMALL LETTER N WITH CARON
+014C..0151 ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER O WITH MACRON..LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0154..0165 ; Expands_On_NFD # L& [18] LATIN CAPITAL LETTER R WITH ACUTE..LATIN SMALL LETTER T WITH CARON
+0168..017E ; Expands_On_NFD # L& [23] LATIN CAPITAL LETTER U WITH TILDE..LATIN SMALL LETTER Z WITH CARON
+01A0..01A1 ; Expands_On_NFD # L& [2] LATIN CAPITAL LETTER O WITH HORN..LATIN SMALL LETTER O WITH HORN
+01AF..01B0 ; Expands_On_NFD # L& [2] LATIN CAPITAL LETTER U WITH HORN..LATIN SMALL LETTER U WITH HORN
+01CD..01DC ; Expands_On_NFD # L& [16] LATIN CAPITAL LETTER A WITH CARON..LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DE..01E3 ; Expands_On_NFD # L& [6] LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON..LATIN SMALL LETTER AE WITH MACRON
+01E6..01F0 ; Expands_On_NFD # L& [11] LATIN CAPITAL LETTER G WITH CARON..LATIN SMALL LETTER J WITH CARON
+01F4..01F5 ; Expands_On_NFD # L& [2] LATIN CAPITAL LETTER G WITH ACUTE..LATIN SMALL LETTER G WITH ACUTE
+01F8..021B ; Expands_On_NFD # L& [36] LATIN CAPITAL LETTER N WITH GRAVE..LATIN SMALL LETTER T WITH COMMA BELOW
+021E..021F ; Expands_On_NFD # L& [2] LATIN CAPITAL LETTER H WITH CARON..LATIN SMALL LETTER H WITH CARON
+0226..0233 ; Expands_On_NFD # L& [14] LATIN CAPITAL LETTER A WITH DOT ABOVE..LATIN SMALL LETTER Y WITH MACRON
+0344 ; Expands_On_NFD # Mn COMBINING GREEK DIALYTIKA TONOS
+0385 ; Expands_On_NFD # Sk GREEK DIALYTIKA TONOS
+0386 ; Expands_On_NFD # L& GREEK CAPITAL LETTER ALPHA WITH TONOS
+0388..038A ; Expands_On_NFD # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+038C ; Expands_On_NFD # L& GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E..0390 ; Expands_On_NFD # L& [3] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03AA..03B0 ; Expands_On_NFD # L& [7] GREEK CAPITAL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03CA..03CE ; Expands_On_NFD # L& [5] GREEK SMALL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER OMEGA WITH TONOS
+03D3..03D4 ; Expands_On_NFD # L& [2] GREEK UPSILON WITH ACUTE AND HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+0400..0401 ; Expands_On_NFD # L& [2] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC CAPITAL LETTER IO
+0403 ; Expands_On_NFD # L& CYRILLIC CAPITAL LETTER GJE
+0407 ; Expands_On_NFD # L& CYRILLIC CAPITAL LETTER YI
+040C..040E ; Expands_On_NFD # L& [3] CYRILLIC CAPITAL LETTER KJE..CYRILLIC CAPITAL LETTER SHORT U
+0419 ; Expands_On_NFD # L& CYRILLIC CAPITAL LETTER SHORT I
+0439 ; Expands_On_NFD # L& CYRILLIC SMALL LETTER SHORT I
+0450..0451 ; Expands_On_NFD # L& [2] CYRILLIC SMALL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER IO
+0453 ; Expands_On_NFD # L& CYRILLIC SMALL LETTER GJE
+0457 ; Expands_On_NFD # L& CYRILLIC SMALL LETTER YI
+045C..045E ; Expands_On_NFD # L& [3] CYRILLIC SMALL LETTER KJE..CYRILLIC SMALL LETTER SHORT U
+0476..0477 ; Expands_On_NFD # L& [2] CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT..CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+04C1..04C2 ; Expands_On_NFD # L& [2] CYRILLIC CAPITAL LETTER ZHE WITH BREVE..CYRILLIC SMALL LETTER ZHE WITH BREVE
+04D0..04D3 ; Expands_On_NFD # L& [4] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D6..04D7 ; Expands_On_NFD # L& [2] CYRILLIC CAPITAL LETTER IE WITH BREVE..CYRILLIC SMALL LETTER IE WITH BREVE
+04DA..04DF ; Expands_On_NFD # L& [6] CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS..CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04E2..04E7 ; Expands_On_NFD # L& [6] CYRILLIC CAPITAL LETTER I WITH MACRON..CYRILLIC SMALL LETTER O WITH DIAERESIS
+04EA..04F5 ; Expands_On_NFD # L& [12] CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS..CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F8..04F9 ; Expands_On_NFD # L& [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+0622..0626 ; Expands_On_NFD # Lo [5] ARABIC LETTER ALEF WITH MADDA ABOVE..ARABIC LETTER YEH WITH HAMZA ABOVE
+06C0 ; Expands_On_NFD # Lo ARABIC LETTER HEH WITH YEH ABOVE
+06C2 ; Expands_On_NFD # Lo ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06D3 ; Expands_On_NFD # Lo ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+0929 ; Expands_On_NFD # Lo DEVANAGARI LETTER NNNA
+0931 ; Expands_On_NFD # Lo DEVANAGARI LETTER RRA
+0934 ; Expands_On_NFD # Lo DEVANAGARI LETTER LLLA
+0958..095F ; Expands_On_NFD # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09CB..09CC ; Expands_On_NFD # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+09DC..09DD ; Expands_On_NFD # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; Expands_On_NFD # Lo BENGALI LETTER YYA
+0A33 ; Expands_On_NFD # Lo GURMUKHI LETTER LLA
+0A36 ; Expands_On_NFD # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; Expands_On_NFD # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; Expands_On_NFD # Lo GURMUKHI LETTER FA
+0B48 ; Expands_On_NFD # Mc ORIYA VOWEL SIGN AI
+0B4B..0B4C ; Expands_On_NFD # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+0B5C..0B5D ; Expands_On_NFD # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0B94 ; Expands_On_NFD # Lo TAMIL LETTER AU
+0BCA..0BCC ; Expands_On_NFD # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+0C48 ; Expands_On_NFD # Mn TELUGU VOWEL SIGN AI
+0CC0 ; Expands_On_NFD # Mc KANNADA VOWEL SIGN II
+0CC7..0CC8 ; Expands_On_NFD # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; Expands_On_NFD # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0D4A..0D4C ; Expands_On_NFD # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+0DDA ; Expands_On_NFD # Mc SINHALA VOWEL SIGN DIGA KOMBUVA
+0DDC..0DDE ; Expands_On_NFD # Mc [3] SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0F43 ; Expands_On_NFD # Lo TIBETAN LETTER GHA
+0F4D ; Expands_On_NFD # Lo TIBETAN LETTER DDHA
+0F52 ; Expands_On_NFD # Lo TIBETAN LETTER DHA
+0F57 ; Expands_On_NFD # Lo TIBETAN LETTER BHA
+0F5C ; Expands_On_NFD # Lo TIBETAN LETTER DZHA
+0F69 ; Expands_On_NFD # Lo TIBETAN LETTER KSSA
+0F73 ; Expands_On_NFD # Mn TIBETAN VOWEL SIGN II
+0F75..0F76 ; Expands_On_NFD # Mn [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R
+0F78 ; Expands_On_NFD # Mn TIBETAN VOWEL SIGN VOCALIC L
+0F81 ; Expands_On_NFD # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; Expands_On_NFD # Mn TIBETAN SUBJOINED LETTER KSSA
+1026 ; Expands_On_NFD # Lo MYANMAR LETTER UU
+1B06 ; Expands_On_NFD # Lo BALINESE LETTER AKARA TEDUNG
+1B08 ; Expands_On_NFD # Lo BALINESE LETTER IKARA TEDUNG
+1B0A ; Expands_On_NFD # Lo BALINESE LETTER UKARA TEDUNG
+1B0C ; Expands_On_NFD # Lo BALINESE LETTER RA REPA TEDUNG
+1B0E ; Expands_On_NFD # Lo BALINESE LETTER LA LENGA TEDUNG
+1B12 ; Expands_On_NFD # Lo BALINESE LETTER OKARA TEDUNG
+1B3B ; Expands_On_NFD # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3D ; Expands_On_NFD # Mc BALINESE VOWEL SIGN LA LENGA TEDUNG
+1B40..1B41 ; Expands_On_NFD # Mc [2] BALINESE VOWEL SIGN TALING TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B43 ; Expands_On_NFD # Mc BALINESE VOWEL SIGN PEPET TEDUNG
+1E00..1E99 ; Expands_On_NFD # L& [154] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH RING ABOVE
+1E9B ; Expands_On_NFD # L& LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA0..1EF9 ; Expands_On_NFD # L& [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE
+1F00..1F15 ; Expands_On_NFD # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18..1F1D ; Expands_On_NFD # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20..1F45 ; Expands_On_NFD # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48..1F4D ; Expands_On_NFD # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50..1F57 ; Expands_On_NFD # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59 ; Expands_On_NFD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B ; Expands_On_NFD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D ; Expands_On_NFD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F..1F7D ; Expands_On_NFD # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+1F80..1FB4 ; Expands_On_NFD # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6..1FBC ; Expands_On_NFD # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FC1 ; Expands_On_NFD # Sk GREEK DIALYTIKA AND PERISPOMENI
+1FC2..1FC4 ; Expands_On_NFD # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6..1FCC ; Expands_On_NFD # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCD..1FCF ; Expands_On_NFD # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+1FD0..1FD3 ; Expands_On_NFD # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6..1FDB ; Expands_On_NFD # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD..1FDF ; Expands_On_NFD # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+1FE0..1FEC ; Expands_On_NFD # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+1FED..1FEE ; Expands_On_NFD # Sk [2] GREEK DIALYTIKA AND VARIA..GREEK DIALYTIKA AND OXIA
+1FF2..1FF4 ; Expands_On_NFD # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6..1FFC ; Expands_On_NFD # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+212B ; Expands_On_NFD # L& ANGSTROM SIGN
+219A..219B ; Expands_On_NFD # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+21AE ; Expands_On_NFD # Sm LEFT RIGHT ARROW WITH STROKE
+21CD ; Expands_On_NFD # So LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE..21CF ; Expands_On_NFD # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+2204 ; Expands_On_NFD # Sm THERE DOES NOT EXIST
+2209 ; Expands_On_NFD # Sm NOT AN ELEMENT OF
+220C ; Expands_On_NFD # Sm DOES NOT CONTAIN AS MEMBER
+2224 ; Expands_On_NFD # Sm DOES NOT DIVIDE
+2226 ; Expands_On_NFD # Sm NOT PARALLEL TO
+2241 ; Expands_On_NFD # Sm NOT TILDE
+2244 ; Expands_On_NFD # Sm NOT ASYMPTOTICALLY EQUAL TO
+2247 ; Expands_On_NFD # Sm NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+2249 ; Expands_On_NFD # Sm NOT ALMOST EQUAL TO
+2260 ; Expands_On_NFD # Sm NOT EQUAL TO
+2262 ; Expands_On_NFD # Sm NOT IDENTICAL TO
+226D..2271 ; Expands_On_NFD # Sm [5] NOT EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUAL TO
+2274..2275 ; Expands_On_NFD # Sm [2] NEITHER LESS-THAN NOR EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUIVALENT TO
+2278..2279 ; Expands_On_NFD # Sm [2] NEITHER LESS-THAN NOR GREATER-THAN..NEITHER GREATER-THAN NOR LESS-THAN
+2280..2281 ; Expands_On_NFD # Sm [2] DOES NOT PRECEDE..DOES NOT SUCCEED
+2284..2285 ; Expands_On_NFD # Sm [2] NOT A SUBSET OF..NOT A SUPERSET OF
+2288..2289 ; Expands_On_NFD # Sm [2] NEITHER A SUBSET OF NOR EQUAL TO..NEITHER A SUPERSET OF NOR EQUAL TO
+22AC..22AF ; Expands_On_NFD # Sm [4] DOES NOT PROVE..NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22E0..22E3 ; Expands_On_NFD # Sm [4] DOES NOT PRECEDE OR EQUAL..NOT SQUARE ORIGINAL OF OR EQUAL TO
+22EA..22ED ; Expands_On_NFD # Sm [4] NOT NORMAL SUBGROUP OF..DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+2ADC ; Expands_On_NFD # Sm FORKING
+304C ; Expands_On_NFD # Lo HIRAGANA LETTER GA
+304E ; Expands_On_NFD # Lo HIRAGANA LETTER GI
+3050 ; Expands_On_NFD # Lo HIRAGANA LETTER GU
+3052 ; Expands_On_NFD # Lo HIRAGANA LETTER GE
+3054 ; Expands_On_NFD # Lo HIRAGANA LETTER GO
+3056 ; Expands_On_NFD # Lo HIRAGANA LETTER ZA
+3058 ; Expands_On_NFD # Lo HIRAGANA LETTER ZI
+305A ; Expands_On_NFD # Lo HIRAGANA LETTER ZU
+305C ; Expands_On_NFD # Lo HIRAGANA LETTER ZE
+305E ; Expands_On_NFD # Lo HIRAGANA LETTER ZO
+3060 ; Expands_On_NFD # Lo HIRAGANA LETTER DA
+3062 ; Expands_On_NFD # Lo HIRAGANA LETTER DI
+3065 ; Expands_On_NFD # Lo HIRAGANA LETTER DU
+3067 ; Expands_On_NFD # Lo HIRAGANA LETTER DE
+3069 ; Expands_On_NFD # Lo HIRAGANA LETTER DO
+3070..3071 ; Expands_On_NFD # Lo [2] HIRAGANA LETTER BA..HIRAGANA LETTER PA
+3073..3074 ; Expands_On_NFD # Lo [2] HIRAGANA LETTER BI..HIRAGANA LETTER PI
+3076..3077 ; Expands_On_NFD # Lo [2] HIRAGANA LETTER BU..HIRAGANA LETTER PU
+3079..307A ; Expands_On_NFD # Lo [2] HIRAGANA LETTER BE..HIRAGANA LETTER PE
+307C..307D ; Expands_On_NFD # Lo [2] HIRAGANA LETTER BO..HIRAGANA LETTER PO
+3094 ; Expands_On_NFD # Lo HIRAGANA LETTER VU
+309E ; Expands_On_NFD # Lm HIRAGANA VOICED ITERATION MARK
+30AC ; Expands_On_NFD # Lo KATAKANA LETTER GA
+30AE ; Expands_On_NFD # Lo KATAKANA LETTER GI
+30B0 ; Expands_On_NFD # Lo KATAKANA LETTER GU
+30B2 ; Expands_On_NFD # Lo KATAKANA LETTER GE
+30B4 ; Expands_On_NFD # Lo KATAKANA LETTER GO
+30B6 ; Expands_On_NFD # Lo KATAKANA LETTER ZA
+30B8 ; Expands_On_NFD # Lo KATAKANA LETTER ZI
+30BA ; Expands_On_NFD # Lo KATAKANA LETTER ZU
+30BC ; Expands_On_NFD # Lo KATAKANA LETTER ZE
+30BE ; Expands_On_NFD # Lo KATAKANA LETTER ZO
+30C0 ; Expands_On_NFD # Lo KATAKANA LETTER DA
+30C2 ; Expands_On_NFD # Lo KATAKANA LETTER DI
+30C5 ; Expands_On_NFD # Lo KATAKANA LETTER DU
+30C7 ; Expands_On_NFD # Lo KATAKANA LETTER DE
+30C9 ; Expands_On_NFD # Lo KATAKANA LETTER DO
+30D0..30D1 ; Expands_On_NFD # Lo [2] KATAKANA LETTER BA..KATAKANA LETTER PA
+30D3..30D4 ; Expands_On_NFD # Lo [2] KATAKANA LETTER BI..KATAKANA LETTER PI
+30D6..30D7 ; Expands_On_NFD # Lo [2] KATAKANA LETTER BU..KATAKANA LETTER PU
+30D9..30DA ; Expands_On_NFD # Lo [2] KATAKANA LETTER BE..KATAKANA LETTER PE
+30DC..30DD ; Expands_On_NFD # Lo [2] KATAKANA LETTER BO..KATAKANA LETTER PO
+30F4 ; Expands_On_NFD # Lo KATAKANA LETTER VU
+30F7..30FA ; Expands_On_NFD # Lo [4] KATAKANA LETTER VA..KATAKANA LETTER VO
+30FE ; Expands_On_NFD # Lm KATAKANA VOICED ITERATION MARK
+AC00..D7A3 ; Expands_On_NFD # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+FB1D ; Expands_On_NFD # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F ; Expands_On_NFD # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A..FB36 ; Expands_On_NFD # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; Expands_On_NFD # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; Expands_On_NFD # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; Expands_On_NFD # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; Expands_On_NFD # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4E ; Expands_On_NFD # Lo [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE
+1D15E..1D164 ; Expands_On_NFD # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; Expands_On_NFD # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+
+# Total code points: 12203
+
+# ================================================
+
+# Derived Property: Expands_On_NFC
+# Generated according to UAX #15.
+# Characters whose normalized length is not one.
+# WARNING: Normalization of STRINGS must use the algorithm in UAX #15 because characters may interact.
+# The length of a normalized string is not necessarily the sum of the lengths of the normalized characters!
+
+0344 ; Expands_On_NFC # Mn COMBINING GREEK DIALYTIKA TONOS
+0958..095F ; Expands_On_NFC # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09DC..09DD ; Expands_On_NFC # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; Expands_On_NFC # Lo BENGALI LETTER YYA
+0A33 ; Expands_On_NFC # Lo GURMUKHI LETTER LLA
+0A36 ; Expands_On_NFC # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; Expands_On_NFC # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; Expands_On_NFC # Lo GURMUKHI LETTER FA
+0B5C..0B5D ; Expands_On_NFC # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0F43 ; Expands_On_NFC # Lo TIBETAN LETTER GHA
+0F4D ; Expands_On_NFC # Lo TIBETAN LETTER DDHA
+0F52 ; Expands_On_NFC # Lo TIBETAN LETTER DHA
+0F57 ; Expands_On_NFC # Lo TIBETAN LETTER BHA
+0F5C ; Expands_On_NFC # Lo TIBETAN LETTER DZHA
+0F69 ; Expands_On_NFC # Lo TIBETAN LETTER KSSA
+0F73 ; Expands_On_NFC # Mn TIBETAN VOWEL SIGN II
+0F75..0F76 ; Expands_On_NFC # Mn [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R
+0F78 ; Expands_On_NFC # Mn TIBETAN VOWEL SIGN VOCALIC L
+0F81 ; Expands_On_NFC # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; Expands_On_NFC # Mn TIBETAN SUBJOINED LETTER KSSA
+2ADC ; Expands_On_NFC # Sm FORKING
+FB1D ; Expands_On_NFC # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F ; Expands_On_NFC # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A..FB36 ; Expands_On_NFC # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; Expands_On_NFC # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; Expands_On_NFC # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; Expands_On_NFC # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; Expands_On_NFC # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4E ; Expands_On_NFC # Lo [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE
+1D15E..1D164 ; Expands_On_NFC # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; Expands_On_NFC # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+
+# Total code points: 85
+
+# ================================================
+
+# Derived Property: Expands_On_NFKD
+# Generated according to UAX #15.
+# Characters whose normalized length is not one.
+# WARNING: Normalization of STRINGS must use the algorithm in UAX #15 because characters may interact.
+# The length of a normalized string is not necessarily the sum of the lengths of the normalized characters!
+
+00A8 ; Expands_On_NFKD # Sk DIAERESIS
+00AF ; Expands_On_NFKD # Sk MACRON
+00B4 ; Expands_On_NFKD # Sk ACUTE ACCENT
+00B8 ; Expands_On_NFKD # Sk CEDILLA
+00BC..00BE ; Expands_On_NFKD # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+00C0..00C5 ; Expands_On_NFKD # L& [6] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER A WITH RING ABOVE
+00C7..00CF ; Expands_On_NFKD # L& [9] LATIN CAPITAL LETTER C WITH CEDILLA..LATIN CAPITAL LETTER I WITH DIAERESIS
+00D1..00D6 ; Expands_On_NFKD # L& [6] LATIN CAPITAL LETTER N WITH TILDE..LATIN CAPITAL LETTER O WITH DIAERESIS
+00D9..00DD ; Expands_On_NFKD # L& [5] LATIN CAPITAL LETTER U WITH GRAVE..LATIN CAPITAL LETTER Y WITH ACUTE
+00E0..00E5 ; Expands_On_NFKD # L& [6] LATIN SMALL LETTER A WITH GRAVE..LATIN SMALL LETTER A WITH RING ABOVE
+00E7..00EF ; Expands_On_NFKD # L& [9] LATIN SMALL LETTER C WITH CEDILLA..LATIN SMALL LETTER I WITH DIAERESIS
+00F1..00F6 ; Expands_On_NFKD # L& [6] LATIN SMALL LETTER N WITH TILDE..LATIN SMALL LETTER O WITH DIAERESIS
+00F9..00FD ; Expands_On_NFKD # L& [5] LATIN SMALL LETTER U WITH GRAVE..LATIN SMALL LETTER Y WITH ACUTE
+00FF..010F ; Expands_On_NFKD # L& [17] LATIN SMALL LETTER Y WITH DIAERESIS..LATIN SMALL LETTER D WITH CARON
+0112..0125 ; Expands_On_NFKD # L& [20] LATIN CAPITAL LETTER E WITH MACRON..LATIN SMALL LETTER H WITH CIRCUMFLEX
+0128..0130 ; Expands_On_NFKD # L& [9] LATIN CAPITAL LETTER I WITH TILDE..LATIN CAPITAL LETTER I WITH DOT ABOVE
+0132..0137 ; Expands_On_NFKD # L& [6] LATIN CAPITAL LIGATURE IJ..LATIN SMALL LETTER K WITH CEDILLA
+0139..0140 ; Expands_On_NFKD # L& [8] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER L WITH MIDDLE DOT
+0143..0149 ; Expands_On_NFKD # L& [7] LATIN CAPITAL LETTER N WITH ACUTE..LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+014C..0151 ; Expands_On_NFKD # L& [6] LATIN CAPITAL LETTER O WITH MACRON..LATIN SMALL LETTER O WITH DOUBLE ACUTE
+0154..0165 ; Expands_On_NFKD # L& [18] LATIN CAPITAL LETTER R WITH ACUTE..LATIN SMALL LETTER T WITH CARON
+0168..017E ; Expands_On_NFKD # L& [23] LATIN CAPITAL LETTER U WITH TILDE..LATIN SMALL LETTER Z WITH CARON
+01A0..01A1 ; Expands_On_NFKD # L& [2] LATIN CAPITAL LETTER O WITH HORN..LATIN SMALL LETTER O WITH HORN
+01AF..01B0 ; Expands_On_NFKD # L& [2] LATIN CAPITAL LETTER U WITH HORN..LATIN SMALL LETTER U WITH HORN
+01C4..01DC ; Expands_On_NFKD # L& [25] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+01DE..01E3 ; Expands_On_NFKD # L& [6] LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON..LATIN SMALL LETTER AE WITH MACRON
+01E6..01F5 ; Expands_On_NFKD # L& [16] LATIN CAPITAL LETTER G WITH CARON..LATIN SMALL LETTER G WITH ACUTE
+01F8..021B ; Expands_On_NFKD # L& [36] LATIN CAPITAL LETTER N WITH GRAVE..LATIN SMALL LETTER T WITH COMMA BELOW
+021E..021F ; Expands_On_NFKD # L& [2] LATIN CAPITAL LETTER H WITH CARON..LATIN SMALL LETTER H WITH CARON
+0226..0233 ; Expands_On_NFKD # L& [14] LATIN CAPITAL LETTER A WITH DOT ABOVE..LATIN SMALL LETTER Y WITH MACRON
+02D8..02DD ; Expands_On_NFKD # Sk [6] BREVE..DOUBLE ACUTE ACCENT
+0344 ; Expands_On_NFKD # Mn COMBINING GREEK DIALYTIKA TONOS
+037A ; Expands_On_NFKD # Lm GREEK YPOGEGRAMMENI
+0384..0385 ; Expands_On_NFKD # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS
+0386 ; Expands_On_NFKD # L& GREEK CAPITAL LETTER ALPHA WITH TONOS
+0388..038A ; Expands_On_NFKD # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+038C ; Expands_On_NFKD # L& GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E..0390 ; Expands_On_NFKD # L& [3] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+03AA..03B0 ; Expands_On_NFKD # L& [7] GREEK CAPITAL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+03CA..03CE ; Expands_On_NFKD # L& [5] GREEK SMALL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER OMEGA WITH TONOS
+03D3..03D4 ; Expands_On_NFKD # L& [2] GREEK UPSILON WITH ACUTE AND HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+0400..0401 ; Expands_On_NFKD # L& [2] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC CAPITAL LETTER IO
+0403 ; Expands_On_NFKD # L& CYRILLIC CAPITAL LETTER GJE
+0407 ; Expands_On_NFKD # L& CYRILLIC CAPITAL LETTER YI
+040C..040E ; Expands_On_NFKD # L& [3] CYRILLIC CAPITAL LETTER KJE..CYRILLIC CAPITAL LETTER SHORT U
+0419 ; Expands_On_NFKD # L& CYRILLIC CAPITAL LETTER SHORT I
+0439 ; Expands_On_NFKD # L& CYRILLIC SMALL LETTER SHORT I
+0450..0451 ; Expands_On_NFKD # L& [2] CYRILLIC SMALL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER IO
+0453 ; Expands_On_NFKD # L& CYRILLIC SMALL LETTER GJE
+0457 ; Expands_On_NFKD # L& CYRILLIC SMALL LETTER YI
+045C..045E ; Expands_On_NFKD # L& [3] CYRILLIC SMALL LETTER KJE..CYRILLIC SMALL LETTER SHORT U
+0476..0477 ; Expands_On_NFKD # L& [2] CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT..CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+04C1..04C2 ; Expands_On_NFKD # L& [2] CYRILLIC CAPITAL LETTER ZHE WITH BREVE..CYRILLIC SMALL LETTER ZHE WITH BREVE
+04D0..04D3 ; Expands_On_NFKD # L& [4] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER A WITH DIAERESIS
+04D6..04D7 ; Expands_On_NFKD # L& [2] CYRILLIC CAPITAL LETTER IE WITH BREVE..CYRILLIC SMALL LETTER IE WITH BREVE
+04DA..04DF ; Expands_On_NFKD # L& [6] CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS..CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+04E2..04E7 ; Expands_On_NFKD # L& [6] CYRILLIC CAPITAL LETTER I WITH MACRON..CYRILLIC SMALL LETTER O WITH DIAERESIS
+04EA..04F5 ; Expands_On_NFKD # L& [12] CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS..CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+04F8..04F9 ; Expands_On_NFKD # L& [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+0587 ; Expands_On_NFKD # L& ARMENIAN SMALL LIGATURE ECH YIWN
+0622..0626 ; Expands_On_NFKD # Lo [5] ARABIC LETTER ALEF WITH MADDA ABOVE..ARABIC LETTER YEH WITH HAMZA ABOVE
+0675..0678 ; Expands_On_NFKD # Lo [4] ARABIC LETTER HIGH HAMZA ALEF..ARABIC LETTER HIGH HAMZA YEH
+06C0 ; Expands_On_NFKD # Lo ARABIC LETTER HEH WITH YEH ABOVE
+06C2 ; Expands_On_NFKD # Lo ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+06D3 ; Expands_On_NFKD # Lo ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+0929 ; Expands_On_NFKD # Lo DEVANAGARI LETTER NNNA
+0931 ; Expands_On_NFKD # Lo DEVANAGARI LETTER RRA
+0934 ; Expands_On_NFKD # Lo DEVANAGARI LETTER LLLA
+0958..095F ; Expands_On_NFKD # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09CB..09CC ; Expands_On_NFKD # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+09DC..09DD ; Expands_On_NFKD # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; Expands_On_NFKD # Lo BENGALI LETTER YYA
+0A33 ; Expands_On_NFKD # Lo GURMUKHI LETTER LLA
+0A36 ; Expands_On_NFKD # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; Expands_On_NFKD # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; Expands_On_NFKD # Lo GURMUKHI LETTER FA
+0B48 ; Expands_On_NFKD # Mc ORIYA VOWEL SIGN AI
+0B4B..0B4C ; Expands_On_NFKD # Mc [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+0B5C..0B5D ; Expands_On_NFKD # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0B94 ; Expands_On_NFKD # Lo TAMIL LETTER AU
+0BCA..0BCC ; Expands_On_NFKD # Mc [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+0C48 ; Expands_On_NFKD # Mn TELUGU VOWEL SIGN AI
+0CC0 ; Expands_On_NFKD # Mc KANNADA VOWEL SIGN II
+0CC7..0CC8 ; Expands_On_NFKD # Mc [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+0CCA..0CCB ; Expands_On_NFKD # Mc [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+0D4A..0D4C ; Expands_On_NFKD # Mc [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+0DDA ; Expands_On_NFKD # Mc SINHALA VOWEL SIGN DIGA KOMBUVA
+0DDC..0DDE ; Expands_On_NFKD # Mc [3] SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+0E33 ; Expands_On_NFKD # Lo THAI CHARACTER SARA AM
+0EB3 ; Expands_On_NFKD # Lo LAO VOWEL SIGN AM
+0EDC..0EDD ; Expands_On_NFKD # Lo [2] LAO HO NO..LAO HO MO
+0F43 ; Expands_On_NFKD # Lo TIBETAN LETTER GHA
+0F4D ; Expands_On_NFKD # Lo TIBETAN LETTER DDHA
+0F52 ; Expands_On_NFKD # Lo TIBETAN LETTER DHA
+0F57 ; Expands_On_NFKD # Lo TIBETAN LETTER BHA
+0F5C ; Expands_On_NFKD # Lo TIBETAN LETTER DZHA
+0F69 ; Expands_On_NFKD # Lo TIBETAN LETTER KSSA
+0F73 ; Expands_On_NFKD # Mn TIBETAN VOWEL SIGN II
+0F75..0F79 ; Expands_On_NFKD # Mn [5] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC LL
+0F81 ; Expands_On_NFKD # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; Expands_On_NFKD # Mn TIBETAN SUBJOINED LETTER KSSA
+1026 ; Expands_On_NFKD # Lo MYANMAR LETTER UU
+1B06 ; Expands_On_NFKD # Lo BALINESE LETTER AKARA TEDUNG
+1B08 ; Expands_On_NFKD # Lo BALINESE LETTER IKARA TEDUNG
+1B0A ; Expands_On_NFKD # Lo BALINESE LETTER UKARA TEDUNG
+1B0C ; Expands_On_NFKD # Lo BALINESE LETTER RA REPA TEDUNG
+1B0E ; Expands_On_NFKD # Lo BALINESE LETTER LA LENGA TEDUNG
+1B12 ; Expands_On_NFKD # Lo BALINESE LETTER OKARA TEDUNG
+1B3B ; Expands_On_NFKD # Mc BALINESE VOWEL SIGN RA REPA TEDUNG
+1B3D ; Expands_On_NFKD # Mc BALINESE VOWEL SIGN LA LENGA TEDUNG
+1B40..1B41 ; Expands_On_NFKD # Mc [2] BALINESE VOWEL SIGN TALING TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+1B43 ; Expands_On_NFKD # Mc BALINESE VOWEL SIGN PEPET TEDUNG
+1E00..1E9B ; Expands_On_NFKD # L& [156] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE
+1EA0..1EF9 ; Expands_On_NFKD # L& [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE
+1F00..1F15 ; Expands_On_NFKD # L& [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+1F18..1F1D ; Expands_On_NFKD # L& [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+1F20..1F45 ; Expands_On_NFKD # L& [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+1F48..1F4D ; Expands_On_NFKD # L& [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+1F50..1F57 ; Expands_On_NFKD # L& [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+1F59 ; Expands_On_NFKD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA
+1F5B ; Expands_On_NFKD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+1F5D ; Expands_On_NFKD # L& GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+1F5F..1F7D ; Expands_On_NFKD # L& [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+1F80..1FB4 ; Expands_On_NFKD # L& [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+1FB6..1FBC ; Expands_On_NFKD # L& [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+1FBD ; Expands_On_NFKD # Sk GREEK KORONIS
+1FBF..1FC1 ; Expands_On_NFKD # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+1FC2..1FC4 ; Expands_On_NFKD # L& [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+1FC6..1FCC ; Expands_On_NFKD # L& [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+1FCD..1FCF ; Expands_On_NFKD # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+1FD0..1FD3 ; Expands_On_NFKD # L& [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+1FD6..1FDB ; Expands_On_NFKD # L& [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+1FDD..1FDF ; Expands_On_NFKD # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+1FE0..1FEC ; Expands_On_NFKD # L& [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+1FED..1FEE ; Expands_On_NFKD # Sk [2] GREEK DIALYTIKA AND VARIA..GREEK DIALYTIKA AND OXIA
+1FF2..1FF4 ; Expands_On_NFKD # L& [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+1FF6..1FFC ; Expands_On_NFKD # L& [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+1FFD..1FFE ; Expands_On_NFKD # Sk [2] GREEK OXIA..GREEK DASIA
+2017 ; Expands_On_NFKD # Po DOUBLE LOW LINE
+2025..2026 ; Expands_On_NFKD # Po [2] TWO DOT LEADER..HORIZONTAL ELLIPSIS
+2033..2034 ; Expands_On_NFKD # Po [2] DOUBLE PRIME..TRIPLE PRIME
+2036..2037 ; Expands_On_NFKD # Po [2] REVERSED DOUBLE PRIME..REVERSED TRIPLE PRIME
+203C ; Expands_On_NFKD # Po DOUBLE EXCLAMATION MARK
+203E ; Expands_On_NFKD # Po OVERLINE
+2047..2049 ; Expands_On_NFKD # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
+2057 ; Expands_On_NFKD # Po QUADRUPLE PRIME
+20A8 ; Expands_On_NFKD # Sc RUPEE SIGN
+2100..2101 ; Expands_On_NFKD # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
+2103 ; Expands_On_NFKD # So DEGREE CELSIUS
+2105..2106 ; Expands_On_NFKD # So [2] CARE OF..CADA UNA
+2109 ; Expands_On_NFKD # So DEGREE FAHRENHEIT
+2116 ; Expands_On_NFKD # So NUMERO SIGN
+2120..2122 ; Expands_On_NFKD # So [3] SERVICE MARK..TRADE MARK SIGN
+212B ; Expands_On_NFKD # L& ANGSTROM SIGN
+213B ; Expands_On_NFKD # So FACSIMILE SIGN
+2153..215F ; Expands_On_NFKD # No [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE
+2161..2163 ; Expands_On_NFKD # Nl [3] ROMAN NUMERAL TWO..ROMAN NUMERAL FOUR
+2165..2168 ; Expands_On_NFKD # Nl [4] ROMAN NUMERAL SIX..ROMAN NUMERAL NINE
+216A..216B ; Expands_On_NFKD # Nl [2] ROMAN NUMERAL ELEVEN..ROMAN NUMERAL TWELVE
+2171..2173 ; Expands_On_NFKD # Nl [3] SMALL ROMAN NUMERAL TWO..SMALL ROMAN NUMERAL FOUR
+2175..2178 ; Expands_On_NFKD # Nl [4] SMALL ROMAN NUMERAL SIX..SMALL ROMAN NUMERAL NINE
+217A..217B ; Expands_On_NFKD # Nl [2] SMALL ROMAN NUMERAL ELEVEN..SMALL ROMAN NUMERAL TWELVE
+219A..219B ; Expands_On_NFKD # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+21AE ; Expands_On_NFKD # Sm LEFT RIGHT ARROW WITH STROKE
+21CD ; Expands_On_NFKD # So LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE..21CF ; Expands_On_NFKD # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+2204 ; Expands_On_NFKD # Sm THERE DOES NOT EXIST
+2209 ; Expands_On_NFKD # Sm NOT AN ELEMENT OF
+220C ; Expands_On_NFKD # Sm DOES NOT CONTAIN AS MEMBER
+2224 ; Expands_On_NFKD # Sm DOES NOT DIVIDE
+2226 ; Expands_On_NFKD # Sm NOT PARALLEL TO
+222C..222D ; Expands_On_NFKD # Sm [2] DOUBLE INTEGRAL..TRIPLE INTEGRAL
+222F..2230 ; Expands_On_NFKD # Sm [2] SURFACE INTEGRAL..VOLUME INTEGRAL
+2241 ; Expands_On_NFKD # Sm NOT TILDE
+2244 ; Expands_On_NFKD # Sm NOT ASYMPTOTICALLY EQUAL TO
+2247 ; Expands_On_NFKD # Sm NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+2249 ; Expands_On_NFKD # Sm NOT ALMOST EQUAL TO
+2260 ; Expands_On_NFKD # Sm NOT EQUAL TO
+2262 ; Expands_On_NFKD # Sm NOT IDENTICAL TO
+226D..2271 ; Expands_On_NFKD # Sm [5] NOT EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUAL TO
+2274..2275 ; Expands_On_NFKD # Sm [2] NEITHER LESS-THAN NOR EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUIVALENT TO
+2278..2279 ; Expands_On_NFKD # Sm [2] NEITHER LESS-THAN NOR GREATER-THAN..NEITHER GREATER-THAN NOR LESS-THAN
+2280..2281 ; Expands_On_NFKD # Sm [2] DOES NOT PRECEDE..DOES NOT SUCCEED
+2284..2285 ; Expands_On_NFKD # Sm [2] NOT A SUBSET OF..NOT A SUPERSET OF
+2288..2289 ; Expands_On_NFKD # Sm [2] NEITHER A SUBSET OF NOR EQUAL TO..NEITHER A SUPERSET OF NOR EQUAL TO
+22AC..22AF ; Expands_On_NFKD # Sm [4] DOES NOT PROVE..NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+22E0..22E3 ; Expands_On_NFKD # Sm [4] DOES NOT PRECEDE OR EQUAL..NOT SQUARE ORIGINAL OF OR EQUAL TO
+22EA..22ED ; Expands_On_NFKD # Sm [4] NOT NORMAL SUBGROUP OF..DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+2469..249B ; Expands_On_NFKD # No [51] CIRCLED NUMBER TEN..NUMBER TWENTY FULL STOP
+249C..24B5 ; Expands_On_NFKD # So [26] PARENTHESIZED LATIN SMALL LETTER A..PARENTHESIZED LATIN SMALL LETTER Z
+2A0C ; Expands_On_NFKD # Sm QUADRUPLE INTEGRAL OPERATOR
+2A74..2A76 ; Expands_On_NFKD # Sm [3] DOUBLE COLON EQUAL..THREE CONSECUTIVE EQUALS SIGNS
+2ADC ; Expands_On_NFKD # Sm FORKING
+304C ; Expands_On_NFKD # Lo HIRAGANA LETTER GA
+304E ; Expands_On_NFKD # Lo HIRAGANA LETTER GI
+3050 ; Expands_On_NFKD # Lo HIRAGANA LETTER GU
+3052 ; Expands_On_NFKD # Lo HIRAGANA LETTER GE
+3054 ; Expands_On_NFKD # Lo HIRAGANA LETTER GO
+3056 ; Expands_On_NFKD # Lo HIRAGANA LETTER ZA
+3058 ; Expands_On_NFKD # Lo HIRAGANA LETTER ZI
+305A ; Expands_On_NFKD # Lo HIRAGANA LETTER ZU
+305C ; Expands_On_NFKD # Lo HIRAGANA LETTER ZE
+305E ; Expands_On_NFKD # Lo HIRAGANA LETTER ZO
+3060 ; Expands_On_NFKD # Lo HIRAGANA LETTER DA
+3062 ; Expands_On_NFKD # Lo HIRAGANA LETTER DI
+3065 ; Expands_On_NFKD # Lo HIRAGANA LETTER DU
+3067 ; Expands_On_NFKD # Lo HIRAGANA LETTER DE
+3069 ; Expands_On_NFKD # Lo HIRAGANA LETTER DO
+3070..3071 ; Expands_On_NFKD # Lo [2] HIRAGANA LETTER BA..HIRAGANA LETTER PA
+3073..3074 ; Expands_On_NFKD # Lo [2] HIRAGANA LETTER BI..HIRAGANA LETTER PI
+3076..3077 ; Expands_On_NFKD # Lo [2] HIRAGANA LETTER BU..HIRAGANA LETTER PU
+3079..307A ; Expands_On_NFKD # Lo [2] HIRAGANA LETTER BE..HIRAGANA LETTER PE
+307C..307D ; Expands_On_NFKD # Lo [2] HIRAGANA LETTER BO..HIRAGANA LETTER PO
+3094 ; Expands_On_NFKD # Lo HIRAGANA LETTER VU
+309B..309C ; Expands_On_NFKD # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309E ; Expands_On_NFKD # Lm HIRAGANA VOICED ITERATION MARK
+309F ; Expands_On_NFKD # Lo HIRAGANA DIGRAPH YORI
+30AC ; Expands_On_NFKD # Lo KATAKANA LETTER GA
+30AE ; Expands_On_NFKD # Lo KATAKANA LETTER GI
+30B0 ; Expands_On_NFKD # Lo KATAKANA LETTER GU
+30B2 ; Expands_On_NFKD # Lo KATAKANA LETTER GE
+30B4 ; Expands_On_NFKD # Lo KATAKANA LETTER GO
+30B6 ; Expands_On_NFKD # Lo KATAKANA LETTER ZA
+30B8 ; Expands_On_NFKD # Lo KATAKANA LETTER ZI
+30BA ; Expands_On_NFKD # Lo KATAKANA LETTER ZU
+30BC ; Expands_On_NFKD # Lo KATAKANA LETTER ZE
+30BE ; Expands_On_NFKD # Lo KATAKANA LETTER ZO
+30C0 ; Expands_On_NFKD # Lo KATAKANA LETTER DA
+30C2 ; Expands_On_NFKD # Lo KATAKANA LETTER DI
+30C5 ; Expands_On_NFKD # Lo KATAKANA LETTER DU
+30C7 ; Expands_On_NFKD # Lo KATAKANA LETTER DE
+30C9 ; Expands_On_NFKD # Lo KATAKANA LETTER DO
+30D0..30D1 ; Expands_On_NFKD # Lo [2] KATAKANA LETTER BA..KATAKANA LETTER PA
+30D3..30D4 ; Expands_On_NFKD # Lo [2] KATAKANA LETTER BI..KATAKANA LETTER PI
+30D6..30D7 ; Expands_On_NFKD # Lo [2] KATAKANA LETTER BU..KATAKANA LETTER PU
+30D9..30DA ; Expands_On_NFKD # Lo [2] KATAKANA LETTER BE..KATAKANA LETTER PE
+30DC..30DD ; Expands_On_NFKD # Lo [2] KATAKANA LETTER BO..KATAKANA LETTER PO
+30F4 ; Expands_On_NFKD # Lo KATAKANA LETTER VU
+30F7..30FA ; Expands_On_NFKD # Lo [4] KATAKANA LETTER VA..KATAKANA LETTER VO
+30FE ; Expands_On_NFKD # Lm KATAKANA VOICED ITERATION MARK
+30FF ; Expands_On_NFKD # Lo KATAKANA DIGRAPH KOTO
+3200..321E ; Expands_On_NFKD # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+3220..3229 ; Expands_On_NFKD # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+322A..3243 ; Expands_On_NFKD # So [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH
+3250 ; Expands_On_NFKD # So PARTNERSHIP SIGN
+3251..325F ; Expands_On_NFKD # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+326E..327E ; Expands_On_NFKD # So [17] CIRCLED HANGUL KIYEOK A..CIRCLED HANGUL IEUNG U
+32B1..32BF ; Expands_On_NFKD # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+32C0..32CF ; Expands_On_NFKD # So [16] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..LIMITED LIABILITY SIGN
+3300..33FF ; Expands_On_NFKD # So [256] SQUARE APAATO..SQUARE GAL
+AC00..D7A3 ; Expands_On_NFKD # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+FB00..FB06 ; Expands_On_NFKD # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+FB13..FB17 ; Expands_On_NFKD # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+FB1D ; Expands_On_NFKD # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F ; Expands_On_NFKD # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A..FB36 ; Expands_On_NFKD # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; Expands_On_NFKD # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; Expands_On_NFKD # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; Expands_On_NFKD # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; Expands_On_NFKD # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4F ; Expands_On_NFKD # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED
+FBA4..FBA5 ; Expands_On_NFKD # Lo [2] ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM..ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM
+FBB0..FBB1 ; Expands_On_NFKD # Lo [2] ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+FBDD ; Expands_On_NFKD # Lo ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
+FBEA..FBFB ; Expands_On_NFKD # Lo [18] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM..ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
+FC00..FD3D ; Expands_On_NFKD # Lo [318] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD50..FD8F ; Expands_On_NFKD # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92..FDC7 ; Expands_On_NFKD # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0..FDFB ; Expands_On_NFKD # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+FDFC ; Expands_On_NFKD # Sc RIAL SIGN
+FE19 ; Expands_On_NFKD # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+FE30 ; Expands_On_NFKD # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE49..FE4C ; Expands_On_NFKD # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+FE70..FE72 ; Expands_On_NFKD # Lo [3] ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM
+FE74 ; Expands_On_NFKD # Lo ARABIC KASRATAN ISOLATED FORM
+FE76..FE7F ; Expands_On_NFKD # Lo [10] ARABIC FATHA ISOLATED FORM..ARABIC SUKUN MEDIAL FORM
+FE81..FE8C ; Expands_On_NFKD # Lo [12] ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM..ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM
+FEF5..FEFC ; Expands_On_NFKD # Lo [8] ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FFE3 ; Expands_On_NFKD # Sk FULLWIDTH MACRON
+1D15E..1D164 ; Expands_On_NFKD # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; Expands_On_NFKD # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+
+# Total code points: 13310
+
+# ================================================
+
+# Derived Property: Expands_On_NFKC
+# Generated according to UAX #15.
+# Characters whose normalized length is not one.
+# WARNING: Normalization of STRINGS must use the algorithm in UAX #15 because characters may interact.
+# The length of a normalized string is not necessarily the sum of the lengths of the normalized characters!
+
+00A8 ; Expands_On_NFKC # Sk DIAERESIS
+00AF ; Expands_On_NFKC # Sk MACRON
+00B4 ; Expands_On_NFKC # Sk ACUTE ACCENT
+00B8 ; Expands_On_NFKC # Sk CEDILLA
+00BC..00BE ; Expands_On_NFKC # No [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+0132..0133 ; Expands_On_NFKC # L& [2] LATIN CAPITAL LIGATURE IJ..LATIN SMALL LIGATURE IJ
+013F..0140 ; Expands_On_NFKC # L& [2] LATIN CAPITAL LETTER L WITH MIDDLE DOT..LATIN SMALL LETTER L WITH MIDDLE DOT
+0149 ; Expands_On_NFKC # L& LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+01C4..01CC ; Expands_On_NFKC # L& [9] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER NJ
+01F1..01F3 ; Expands_On_NFKC # L& [3] LATIN CAPITAL LETTER DZ..LATIN SMALL LETTER DZ
+02D8..02DD ; Expands_On_NFKC # Sk [6] BREVE..DOUBLE ACUTE ACCENT
+0344 ; Expands_On_NFKC # Mn COMBINING GREEK DIALYTIKA TONOS
+037A ; Expands_On_NFKC # Lm GREEK YPOGEGRAMMENI
+0384..0385 ; Expands_On_NFKC # Sk [2] GREEK TONOS..GREEK DIALYTIKA TONOS
+0587 ; Expands_On_NFKC # L& ARMENIAN SMALL LIGATURE ECH YIWN
+0675..0678 ; Expands_On_NFKC # Lo [4] ARABIC LETTER HIGH HAMZA ALEF..ARABIC LETTER HIGH HAMZA YEH
+0958..095F ; Expands_On_NFKC # Lo [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+09DC..09DD ; Expands_On_NFKC # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF ; Expands_On_NFKC # Lo BENGALI LETTER YYA
+0A33 ; Expands_On_NFKC # Lo GURMUKHI LETTER LLA
+0A36 ; Expands_On_NFKC # Lo GURMUKHI LETTER SHA
+0A59..0A5B ; Expands_On_NFKC # Lo [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+0A5E ; Expands_On_NFKC # Lo GURMUKHI LETTER FA
+0B5C..0B5D ; Expands_On_NFKC # Lo [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+0E33 ; Expands_On_NFKC # Lo THAI CHARACTER SARA AM
+0EB3 ; Expands_On_NFKC # Lo LAO VOWEL SIGN AM
+0EDC..0EDD ; Expands_On_NFKC # Lo [2] LAO HO NO..LAO HO MO
+0F43 ; Expands_On_NFKC # Lo TIBETAN LETTER GHA
+0F4D ; Expands_On_NFKC # Lo TIBETAN LETTER DDHA
+0F52 ; Expands_On_NFKC # Lo TIBETAN LETTER DHA
+0F57 ; Expands_On_NFKC # Lo TIBETAN LETTER BHA
+0F5C ; Expands_On_NFKC # Lo TIBETAN LETTER DZHA
+0F69 ; Expands_On_NFKC # Lo TIBETAN LETTER KSSA
+0F73 ; Expands_On_NFKC # Mn TIBETAN VOWEL SIGN II
+0F75..0F79 ; Expands_On_NFKC # Mn [5] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC LL
+0F81 ; Expands_On_NFKC # Mn TIBETAN VOWEL SIGN REVERSED II
+0F93 ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER GHA
+0F9D ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER DDHA
+0FA2 ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER DHA
+0FA7 ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER BHA
+0FAC ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER DZHA
+0FB9 ; Expands_On_NFKC # Mn TIBETAN SUBJOINED LETTER KSSA
+1E9A ; Expands_On_NFKC # L& LATIN SMALL LETTER A WITH RIGHT HALF RING
+1FBD ; Expands_On_NFKC # Sk GREEK KORONIS
+1FBF..1FC1 ; Expands_On_NFKC # Sk [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+1FCD..1FCF ; Expands_On_NFKC # Sk [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+1FDD..1FDF ; Expands_On_NFKC # Sk [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+1FED..1FEE ; Expands_On_NFKC # Sk [2] GREEK DIALYTIKA AND VARIA..GREEK DIALYTIKA AND OXIA
+1FFD..1FFE ; Expands_On_NFKC # Sk [2] GREEK OXIA..GREEK DASIA
+2017 ; Expands_On_NFKC # Po DOUBLE LOW LINE
+2025..2026 ; Expands_On_NFKC # Po [2] TWO DOT LEADER..HORIZONTAL ELLIPSIS
+2033..2034 ; Expands_On_NFKC # Po [2] DOUBLE PRIME..TRIPLE PRIME
+2036..2037 ; Expands_On_NFKC # Po [2] REVERSED DOUBLE PRIME..REVERSED TRIPLE PRIME
+203C ; Expands_On_NFKC # Po DOUBLE EXCLAMATION MARK
+203E ; Expands_On_NFKC # Po OVERLINE
+2047..2049 ; Expands_On_NFKC # Po [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
+2057 ; Expands_On_NFKC # Po QUADRUPLE PRIME
+20A8 ; Expands_On_NFKC # Sc RUPEE SIGN
+2100..2101 ; Expands_On_NFKC # So [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
+2103 ; Expands_On_NFKC # So DEGREE CELSIUS
+2105..2106 ; Expands_On_NFKC # So [2] CARE OF..CADA UNA
+2109 ; Expands_On_NFKC # So DEGREE FAHRENHEIT
+2116 ; Expands_On_NFKC # So NUMERO SIGN
+2120..2122 ; Expands_On_NFKC # So [3] SERVICE MARK..TRADE MARK SIGN
+213B ; Expands_On_NFKC # So FACSIMILE SIGN
+2153..215F ; Expands_On_NFKC # No [13] VULGAR FRACTION ONE THIRD..FRACTION NUMERATOR ONE
+2161..2163 ; Expands_On_NFKC # Nl [3] ROMAN NUMERAL TWO..ROMAN NUMERAL FOUR
+2165..2168 ; Expands_On_NFKC # Nl [4] ROMAN NUMERAL SIX..ROMAN NUMERAL NINE
+216A..216B ; Expands_On_NFKC # Nl [2] ROMAN NUMERAL ELEVEN..ROMAN NUMERAL TWELVE
+2171..2173 ; Expands_On_NFKC # Nl [3] SMALL ROMAN NUMERAL TWO..SMALL ROMAN NUMERAL FOUR
+2175..2178 ; Expands_On_NFKC # Nl [4] SMALL ROMAN NUMERAL SIX..SMALL ROMAN NUMERAL NINE
+217A..217B ; Expands_On_NFKC # Nl [2] SMALL ROMAN NUMERAL ELEVEN..SMALL ROMAN NUMERAL TWELVE
+222C..222D ; Expands_On_NFKC # Sm [2] DOUBLE INTEGRAL..TRIPLE INTEGRAL
+222F..2230 ; Expands_On_NFKC # Sm [2] SURFACE INTEGRAL..VOLUME INTEGRAL
+2469..249B ; Expands_On_NFKC # No [51] CIRCLED NUMBER TEN..NUMBER TWENTY FULL STOP
+249C..24B5 ; Expands_On_NFKC # So [26] PARENTHESIZED LATIN SMALL LETTER A..PARENTHESIZED LATIN SMALL LETTER Z
+2A0C ; Expands_On_NFKC # Sm QUADRUPLE INTEGRAL OPERATOR
+2A74..2A76 ; Expands_On_NFKC # Sm [3] DOUBLE COLON EQUAL..THREE CONSECUTIVE EQUALS SIGNS
+2ADC ; Expands_On_NFKC # Sm FORKING
+309B..309C ; Expands_On_NFKC # Sk [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+309F ; Expands_On_NFKC # Lo HIRAGANA DIGRAPH YORI
+30FF ; Expands_On_NFKC # Lo KATAKANA DIGRAPH KOTO
+3200..321E ; Expands_On_NFKC # So [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+3220..3229 ; Expands_On_NFKC # No [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+322A..3243 ; Expands_On_NFKC # So [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH
+3250 ; Expands_On_NFKC # So PARTNERSHIP SIGN
+3251..325F ; Expands_On_NFKC # No [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+327C..327D ; Expands_On_NFKC # So [2] CIRCLED KOREAN CHARACTER CHAMKO..CIRCLED KOREAN CHARACTER JUEUI
+32B1..32BF ; Expands_On_NFKC # No [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+32C0..32CF ; Expands_On_NFKC # So [16] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..LIMITED LIABILITY SIGN
+3300..33FF ; Expands_On_NFKC # So [256] SQUARE APAATO..SQUARE GAL
+FB00..FB06 ; Expands_On_NFKC # L& [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+FB13..FB17 ; Expands_On_NFKC # L& [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+FB1D ; Expands_On_NFKC # Lo HEBREW LETTER YOD WITH HIRIQ
+FB1F ; Expands_On_NFKC # Lo HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A..FB36 ; Expands_On_NFKC # Lo [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+FB38..FB3C ; Expands_On_NFKC # Lo [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+FB3E ; Expands_On_NFKC # Lo HEBREW LETTER MEM WITH DAGESH
+FB40..FB41 ; Expands_On_NFKC # Lo [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+FB43..FB44 ; Expands_On_NFKC # Lo [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+FB46..FB4F ; Expands_On_NFKC # Lo [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED
+FBDD ; Expands_On_NFKC # Lo ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
+FBEA..FBFB ; Expands_On_NFKC # Lo [18] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM..ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
+FC00..FD3D ; Expands_On_NFKC # Lo [318] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+FD50..FD8F ; Expands_On_NFKC # Lo [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+FD92..FDC7 ; Expands_On_NFKC # Lo [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+FDF0..FDFB ; Expands_On_NFKC # Lo [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+FDFC ; Expands_On_NFKC # Sc RIAL SIGN
+FE19 ; Expands_On_NFKC # Po PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+FE30 ; Expands_On_NFKC # Po PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+FE49..FE4C ; Expands_On_NFKC # Po [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+FE70..FE72 ; Expands_On_NFKC # Lo [3] ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM
+FE74 ; Expands_On_NFKC # Lo ARABIC KASRATAN ISOLATED FORM
+FE76..FE7F ; Expands_On_NFKC # Lo [10] ARABIC FATHA ISOLATED FORM..ARABIC SUKUN MEDIAL FORM
+FEF5..FEFC ; Expands_On_NFKC # Lo [8] ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+FFE3 ; Expands_On_NFKC # Sk FULLWIDTH MACRON
+1D15E..1D164 ; Expands_On_NFKC # So [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB..1D1C0 ; Expands_On_NFKC # So [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+
+# Total code points: 1171
+
+# EOF
diff --git a/util/webkit/mkdist-webkit b/util/webkit/mkdist-webkit
index ddf74bb..e8426b1 100755
--- a/util/webkit/mkdist-webkit
+++ b/util/webkit/mkdist-webkit
@@ -20,7 +20,7 @@ if [ -z "$repository" ]; then
die "error: cannot locate webkit git repository. please run git config --global qtwebkit.url /path-or-url/to/webkit/repo"
fi
-excluded_directories="LayoutTests JavaScriptGlue WebKitLibraries WebKitSite WebKitTools WebCore/platform/cf WebCore/platform/gtk WebCore/platform/chromium"
+excluded_directories="LayoutTests JavaScriptGlue WebKitLibraries WebKitSite WebKitTools WebCore/platform/gtk WebCore/platform/chromium"
excluded_directories="$excluded_directories PageLoadTests"
excluded_directories="$excluded_directories BugsSite"
excluded_directories="$excluded_directories PlanetWebKit"
@@ -49,6 +49,8 @@ excluded_directories="$excluded_directories JavaScriptCore/wtf/mac"
excluded_directories="$excluded_directories JavaScriptCore/wtf/win"
excluded_directories="$excluded_directories JavaScriptCore/wtf/chromium"
excluded_directories="$excluded_directories JavaScriptCore/wtf/haiku"
+excluded_directories="$excluded_directories JavaScriptCore/wtf/android"
+excluded_directories="$excluded_directories JavaScriptCore/wtf/brew"
excluded_directories="$excluded_directories WebCore/WebCore.vcproj"
excluded_directories="$excluded_directories WebCore/WebCore.gyp"
@@ -81,41 +83,52 @@ excluded_directories="$excluded_directories WebCore/page/wx"
excluded_directories="$excluded_directories WebCore/page/chromium"
excluded_directories="$excluded_directories WebCore/page/haiku"
excluded_directories="$excluded_directories WebCore/page/wince"
+excluded_directories="$excluded_directories WebCore/page/android"
+excluded_directories="$excluded_directories WebCore/page/brew"
excluded_directories="$excluded_directories WebCore/history/mac"
+excluded_directories="$excluded_directories WebCore/history/android"
excluded_directories="$excluded_directories WebCore/editing/mac"
excluded_directories="$excluded_directories WebCore/editing/wx"
excluded_directories="$excluded_directories WebCore/editing/haiku"
+excluded_directories="$excluded_directories WebCore/editing/android"
+excluded_directories="$excluded_directories WebCore/editing/chromium"
+excluded_directories="$excluded_directories WebCore/editing/gtk"
excluded_directories="$excluded_directories WebCore/platform/haiku"
+excluded_directories="$excluded_directories WebCore/platform/android"
+excluded_directories="$excluded_directories WebCore/platform/brew"
excluded_directories="$excluded_directories WebCore/platform/text/wx"
excluded_directories="$excluded_directories WebCore/platform/text/gtk"
excluded_directories="$excluded_directories WebCore/platform/text/chromium"
excluded_directories="$excluded_directories WebCore/platform/text/haiku"
+excluded_directories="$excluded_directories WebCore/platform/text/android"
+excluded_directories="$excluded_directories WebCore/platform/text/brew"
excluded_directories="$excluded_directories WebCore/platform/sql/chromium"
excluded_directories="$excluded_directories WebCore/manual-tests"
-excluded_directories="$excluded_directories WebCore/platform/network/cf"
excluded_directories="$excluded_directories WebCore/platform/network/curl"
excluded_directories="$excluded_directories WebCore/platform/network/mac"
excluded_directories="$excluded_directories WebCore/platform/network/win"
excluded_directories="$excluded_directories WebCore/platform/network/soup"
excluded_directories="$excluded_directories WebCore/platform/network/chromium"
+excluded_directories="$excluded_directories WebCore/platform/network/android"
+excluded_directories="$excluded_directories WebCore/platform/network/brew"
excluded_directories="$excluded_directories WebCore/platform/graphics/cg"
excluded_directories="$excluded_directories WebCore/platform/graphics/cairo"
excluded_directories="$excluded_directories WebCore/platform/graphics/gtk"
excluded_directories="$excluded_directories WebCore/platform/graphics/wx"
excluded_directories="$excluded_directories WebCore/platform/graphics/mac"
-excluded_directories="$excluded_directories WebCore/platform/graphics/win"
excluded_directories="$excluded_directories WebCore/platform/graphics/skia"
excluded_directories="$excluded_directories WebCore/platform/graphics/chromium"
excluded_directories="$excluded_directories WebCore/platform/graphics/wince"
excluded_directories="$excluded_directories WebCore/platform/graphics/haiku"
+excluded_directories="$excluded_directories WebCore/platform/graphics/brew"
excluded_directories="$excluded_directories WebCore/platform/image-decoders/bmp"
excluded_directories="$excluded_directories WebCore/platform/image-decoders/gif"
@@ -126,11 +139,13 @@ excluded_directories="$excluded_directories WebCore/platform/image-decoders/jpeg
excluded_directories="$excluded_directories WebCore/platform/image-decoders/xbm"
excluded_directories="$excluded_directories WebCore/platform/image-decoders/skia"
excluded_directories="$excluded_directories WebCore/platform/image-decoders/haiku"
+excluded_directories="$excluded_directories WebCore/platform/image-decoders/wx"
excluded_directories="$excluded_directories WebCore/platform/image-encoders/skia"
excluded_directories="$excluded_directories WebCore/plugins/gtk"
excluded_directories="$excluded_directories WebCore/plugins/chromium"
+excluded_directories="$excluded_directories WebCore/plugins/wx"
excluded_directories="$excluded_directories WebCore/accessibility/chromium"
excluded_directories="$excluded_directories WebCore/accessibility/gtk"
@@ -139,6 +154,7 @@ excluded_directories="$excluded_directories WebCore/accessibility/win"
excluded_directories="$excluded_directories WebCore/accessibility/wx"
excluded_directories="$excluded_directories WebCore/storage/wince"
+excluded_directories="$excluded_directories WebCore/storage/chromium"
excluded_directories="$excluded_directories WebCore/platform/wx"
excluded_directories="$excluded_directories WebCore/platform/wince"
@@ -196,6 +212,7 @@ files_to_remove="$files_to_remove autogen.sh"
files_to_remove="$files_to_remove configure.ac"
files_to_remove="$files_to_remove WebKit.pro"
+files_to_remove="$files_to_remove DerivedSources.pro"
files_to_remove="$files_to_remove WebKit/qt/QtLauncher/QtLauncher.pro"
files_to_remove="$files_to_remove WebKit/qt/QtLauncher/main.cpp"
@@ -311,16 +328,11 @@ echo "generating extra sources"
(
for proj in JavaScriptCore WebCore; do
cd $absSrcDir/$proj &&
- rm -rf tmp &&
- mkdir tmp &&
- cd tmp &&
- mkdir -p ../generated &&
- qmake -o Makefile CONFIG-=QTDIR_build QT_CONFIG+=phonon GENERATED_SOURCES_DIR=`pwd`/../generated OUTPUT_DIR=`pwd` ../$proj.pro &&
+ qmake -o Makefile DerivedSources.pro &&
make generated_files &&
- perl -pi -e "s,$absSrcDir/,,g" ../generated/*.cpp ../generated/*.h &&
- git add ../generated &&
- cd .. &&
- rm -rf tmp &&
+ perl -pi -e "s,$absSrcDir/,,g" generated/*.cpp generated/*.h &&
+ git add generated &&
+ rm DerivedSources.pro Makefile &&
cd ..
done
)