summaryrefslogtreecommitdiffstats
path: root/tests/auto/qtokenautomaton
diff options
context:
space:
mode:
authorQt by Nokia <qt-info@nokia.com>2011-04-27 12:05:43 +0200
committeraxis <qt-info@nokia.com>2011-04-27 12:05:43 +0200
commit38be0d13830efd2d98281c645c3a60afe05ffece (patch)
tree6ea73f3ec77f7d153333779883e8120f82820abe /tests/auto/qtokenautomaton
Initial import from the monolithic Qt.
This is the beginning of revision history for this module. If you want to look at revision history older than this, please refer to the Qt Git wiki for how to use Git history grafting. At the time of writing, this wiki is located here: http://qt.gitorious.org/qt/pages/GitIntroductionWithQt If you have already performed the grafting and you don't see any history beyond this commit, try running "git log" with the "--follow" argument. Branched from the monolithic repo, Qt master branch, at commit 896db169ea224deb96c59ce8af800d019de63f12
Diffstat (limited to 'tests/auto/qtokenautomaton')
-rw-r--r--tests/auto/qtokenautomaton/.gitignore4
-rwxr-xr-xtests/auto/qtokenautomaton/generateTokenizers.sh50
-rw-r--r--tests/auto/qtokenautomaton/qtokenautomaton.pro18
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/basic/basic.cpp480
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/basic/basic.h101
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/basic/basic.xml25
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.cpp386
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.h99
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.xml23
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.cpp386
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.h98
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.xml67
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/noNamespace/noNamespace.cpp449
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/noNamespace/noNamespace.h99
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/noNamespace/noNamespace.xml24
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/noToString/noToString.cpp251
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/noToString/noToString.h98
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/noToString/noToString.xml23
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/withNamespace/withNamespace.cpp451
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/withNamespace/withNamespace.h102
-rw-r--r--tests/auto/qtokenautomaton/tokenizers/withNamespace/withNamespace.xml25
-rw-r--r--tests/auto/qtokenautomaton/tst_qtokenautomaton.cpp134
22 files changed, 3393 insertions, 0 deletions
diff --git a/tests/auto/qtokenautomaton/.gitignore b/tests/auto/qtokenautomaton/.gitignore
new file mode 100644
index 0000000000..3ec2df3434
--- /dev/null
+++ b/tests/auto/qtokenautomaton/.gitignore
@@ -0,0 +1,4 @@
+Makefile
+tmp/
+tst_qtokenautomaton
+tst_qtokenautomaton
diff --git a/tests/auto/qtokenautomaton/generateTokenizers.sh b/tests/auto/qtokenautomaton/generateTokenizers.sh
new file mode 100755
index 0000000000..a5fa050dfe
--- /dev/null
+++ b/tests/auto/qtokenautomaton/generateTokenizers.sh
@@ -0,0 +1,50 @@
+#!/bin/bash
+#############################################################################
+##
+## Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+## All rights reserved.
+## Contact: Nokia Corporation (qt-info@nokia.com)
+##
+## This file is the build configuration utility 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$
+##
+#############################################################################
+
+tokenizers=`find tokenizers/* -type d`
+for tokenizer in $tokenizers; do
+ pushd $tokenizer
+ basename=`basename $tokenizer`
+ xmllint --noout --schema ../../../../../src/xmlpatterns/qtokenautomaton/qtokenautomaton.xsd $basename.xml
+ java net.sf.saxon.Transform -xsl:../../../../../src/xmlpatterns/qtokenautomaton/qautomaton2cpp.xsl $basename.xml
+ popd
+done
diff --git a/tests/auto/qtokenautomaton/qtokenautomaton.pro b/tests/auto/qtokenautomaton/qtokenautomaton.pro
new file mode 100644
index 0000000000..5e2e590a4b
--- /dev/null
+++ b/tests/auto/qtokenautomaton/qtokenautomaton.pro
@@ -0,0 +1,18 @@
+load(qttest_p4)
+SOURCES += tst_qtokenautomaton.cpp \
+ tokenizers/basic/basic.cpp \
+ tokenizers/basicNamespace/basicNamespace.cpp \
+ tokenizers/boilerplate/boilerplate.cpp \
+ tokenizers/noNamespace/noNamespace.cpp \
+ tokenizers/noToString/noToString.cpp \
+ tokenizers/withNamespace/withNamespace.cpp
+
+HEADERS += tokenizers/basic/basic.h \
+ tokenizers/basicNamespace/basicNamespace.h \
+ tokenizers/boilerplate/boilerplate.h \
+ tokenizers/noNamespace/noNamespace.h \
+ tokenizers/noToString/noToString.h \
+ tokenizers/withNamespace/withNamespace.h
+
+QT -= gui
+CONFIG += parallel_test
diff --git a/tests/auto/qtokenautomaton/tokenizers/basic/basic.cpp b/tests/auto/qtokenautomaton/tokenizers/basic/basic.cpp
new file mode 100644
index 0000000000..d5398b7aaa
--- /dev/null
+++ b/tests/auto/qtokenautomaton/tokenizers/basic/basic.cpp
@@ -0,0 +1,480 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 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$
+**
+****************************************************************************/
+/* NOTE: This file is AUTO GENERATED by qtokenautomaton2cpp.xsl. */
+
+#include "basic.h"
+
+QT_BEGIN_NAMESPACE
+
+Basic::Token Basic::classifier3(const QChar *data)
+
+ {
+ if (data[0] == 100)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 101, 102
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 2) == 0)
+
+
+ return _111;
+
+ }
+
+ else if (data[0] == 97)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 98, 99
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 2) == 0)
+
+
+ return _;
+
+ }
+
+ else if (data[0] == 103)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 104, 105
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 2) == 0)
+
+
+ return wobbly;
+
+ }
+
+
+
+ return NoKeyword;
+ }
+ Basic::Token Basic::classifier4(const QChar *data)
+
+ {
+ if (data[0] == 70)
+
+
+ {
+ if (data[1] == 70)
+
+
+ {
+ if (data[2] == 70)
+
+
+ {
+ if (data[3] == 70)
+
+
+ {
+
+
+ return FFFF;
+
+ }
+
+ else if (data[3] == 71)
+
+
+ {
+
+
+ return FFFG;
+
+ }
+
+
+ }
+
+ else if (data[2] == 71)
+
+
+ {
+ if (data[3] == 70)
+
+
+ {
+
+
+ return FFGF;
+
+ }
+
+ else if (data[3] == 71)
+
+
+ {
+
+
+ return FFGG;
+
+ }
+
+
+ }
+
+ else if (data[2] == 76)
+
+
+ {
+
+ if(data[3] == 77)
+
+
+ return FFLM;
+
+ }
+
+
+ }
+
+
+ }
+
+
+
+ return NoKeyword;
+ }
+ Basic::Token Basic::classifier9(const QChar *data)
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 111, 110, 101, 58, 99, 111, 108, 111, 110
+ };
+ if(memcmp(&data[0], &string, sizeof(QChar) * 9) == 0)
+
+
+ return OneColon;
+
+
+ return NoKeyword;
+ }
+ Basic::Token Basic::classifier14(const QChar *data)
+
+ {
+ if (data[0] == 119)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 101, 45, 104, 97, 118, 101, 45, 100, 97, 115, 104, 101, 115
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 13) == 0)
+
+
+ return WeHaveDashes;
+
+ }
+
+ else if (data[0] == 99)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 111, 108, 111, 110, 58, 105, 110, 58, 110, 97, 109, 101, 58
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 13) == 0)
+
+
+ return ColonInName;
+
+ }
+
+
+
+ return NoKeyword;
+ }
+ Basic::Token Basic::classifier15(const QChar *data)
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 119, 101, 45, 104, 97, 118, 101, 45, 100, 97, 115, 104, 101, 115, 45
+ };
+ if(memcmp(&data[0], &string, sizeof(QChar) * 15) == 0)
+
+
+ return WeHaveDashes2;
+
+
+ return NoKeyword;
+ }
+ Basic::Token Basic::classifier44(const QChar *data)
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 97, 82, 101, 97, 108, 108, 121, 76, 111, 110, 103, 84, 111, 107, 101, 110, 73, 70, 114, 101, 97, 107, 105, 110, 77, 101, 97, 110, 73, 116, 85, 75, 110, 111, 119, 85, 75, 110, 111, 119, 75, 110, 111, 119
+ };
+ if(memcmp(&data[0], &string, sizeof(QChar) * 44) == 0)
+
+
+ return AReallyLongTokenIFreakinMeanItUKnowUKnowKnow;
+
+
+ return NoKeyword;
+ }
+ Basic::Token Basic::toToken(const QChar *data, int length)
+ {
+ switch(length)
+ {
+
+ case 3:
+ return classifier3(data);
+
+
+ case 4:
+ return classifier4(data);
+
+
+ case 9:
+ return classifier9(data);
+
+
+ case 14:
+ return classifier14(data);
+
+
+ case 15:
+ return classifier15(data);
+
+
+ case 44:
+ return classifier44(data);
+
+
+ default:
+ return NoKeyword;
+ }
+ }
+
+
+ QString Basic::toString(Token token)
+ {
+ const unsigned short *data = 0;
+ int length = 0;
+
+ switch(token)
+ {
+
+ case AReallyLongTokenIFreakinMeanItUKnowUKnowKnow:
+ {
+ static const unsigned short staticallyStoredAReallyLongTokenIFreakinMeanItUKnowUKnowKnow[] =
+ {
+ 97, 82, 101, 97, 108, 108, 121, 76, 111, 110, 103, 84, 111, 107, 101, 110, 73, 70, 114, 101, 97, 107, 105, 110, 77, 101, 97, 110, 73, 116, 85, 75, 110, 111, 119, 85, 75, 110, 111, 119, 75, 110, 111, 119, 0
+ };
+ data = staticallyStoredAReallyLongTokenIFreakinMeanItUKnowUKnowKnow;
+ length = 44;
+ break;
+ }
+
+ case ColonInName:
+ {
+ static const unsigned short staticallyStoredColonInName[] =
+ {
+ 99, 111, 108, 111, 110, 58, 105, 110, 58, 110, 97, 109, 101, 58, 0
+ };
+ data = staticallyStoredColonInName;
+ length = 14;
+ break;
+ }
+
+ case FFFF:
+ {
+ static const unsigned short staticallyStoredFFFF[] =
+ {
+ 70, 70, 70, 70, 0
+ };
+ data = staticallyStoredFFFF;
+ length = 4;
+ break;
+ }
+
+ case FFFG:
+ {
+ static const unsigned short staticallyStoredFFFG[] =
+ {
+ 70, 70, 70, 71, 0
+ };
+ data = staticallyStoredFFFG;
+ length = 4;
+ break;
+ }
+
+ case FFGF:
+ {
+ static const unsigned short staticallyStoredFFGF[] =
+ {
+ 70, 70, 71, 70, 0
+ };
+ data = staticallyStoredFFGF;
+ length = 4;
+ break;
+ }
+
+ case FFGG:
+ {
+ static const unsigned short staticallyStoredFFGG[] =
+ {
+ 70, 70, 71, 71, 0
+ };
+ data = staticallyStoredFFGG;
+ length = 4;
+ break;
+ }
+
+ case FFLM:
+ {
+ static const unsigned short staticallyStoredFFLM[] =
+ {
+ 70, 70, 76, 77, 0
+ };
+ data = staticallyStoredFFLM;
+ length = 4;
+ break;
+ }
+
+ case OneColon:
+ {
+ static const unsigned short staticallyStoredOneColon[] =
+ {
+ 111, 110, 101, 58, 99, 111, 108, 111, 110, 0
+ };
+ data = staticallyStoredOneColon;
+ length = 9;
+ break;
+ }
+
+ case WeHaveDashes:
+ {
+ static const unsigned short staticallyStoredWeHaveDashes[] =
+ {
+ 119, 101, 45, 104, 97, 118, 101, 45, 100, 97, 115, 104, 101, 115, 0
+ };
+ data = staticallyStoredWeHaveDashes;
+ length = 14;
+ break;
+ }
+
+ case WeHaveDashes2:
+ {
+ static const unsigned short staticallyStoredWeHaveDashes2[] =
+ {
+ 119, 101, 45, 104, 97, 118, 101, 45, 100, 97, 115, 104, 101, 115, 45, 0
+ };
+ data = staticallyStoredWeHaveDashes2;
+ length = 15;
+ break;
+ }
+
+ case _:
+ {
+ static const unsigned short staticallyStored_[] =
+ {
+ 97, 98, 99, 0
+ };
+ data = staticallyStored_;
+ length = 3;
+ break;
+ }
+
+ case _111:
+ {
+ static const unsigned short staticallyStored_111[] =
+ {
+ 100, 101, 102, 0
+ };
+ data = staticallyStored_111;
+ length = 3;
+ break;
+ }
+
+ case wobbly:
+ {
+ static const unsigned short staticallyStoredwobbly[] =
+ {
+ 103, 104, 105, 0
+ };
+ data = staticallyStoredwobbly;
+ length = 3;
+ break;
+ }
+
+ default:
+ /* It's either the default token, or an undefined enum
+ * value. We silence a compiler warning, and return the
+ * empty string. */
+ ;
+ }
+
+ union
+ {
+ const unsigned short *data;
+ const QChar *asQChar;
+ } converter;
+ converter.data = data;
+
+ return QString::fromRawData(converter.asQChar, length);
+ }
+
+QT_END_NAMESPACE
+
diff --git a/tests/auto/qtokenautomaton/tokenizers/basic/basic.h b/tests/auto/qtokenautomaton/tokenizers/basic/basic.h
new file mode 100644
index 0000000000..1263a6ef6f
--- /dev/null
+++ b/tests/auto/qtokenautomaton/tokenizers/basic/basic.h
@@ -0,0 +1,101 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 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$
+**
+****************************************************************************/
+/* NOTE: This file is AUTO GENERATED by qtokenautomaton2cpp.xsl. */
+
+#ifndef q_Basic_h
+#define q_Basic_h
+
+#include <QtCore/QString>
+
+QT_BEGIN_NAMESPACE
+
+class Basic
+ {
+ public:
+ enum Token
+
+ {
+ NoKeyword,
+AReallyLongTokenIFreakinMeanItUKnowUKnowKnow,
+ColonInName,
+FFFF,
+FFFG,
+FFGF,
+FFGG,
+FFLM,
+OneColon,
+WeHaveDashes,
+WeHaveDashes2,
+_,
+_111,
+wobbly
+ };
+
+ static inline Token toToken(const QString &value);
+static inline Token toToken(const QStringRef &value);
+static Token toToken(const QChar *data, int length);
+static QString toString(Token token);
+
+
+ private:
+ static inline Token classifier3(const QChar *data);
+static inline Token classifier4(const QChar *data);
+static inline Token classifier9(const QChar *data);
+static inline Token classifier14(const QChar *data);
+static inline Token classifier15(const QChar *data);
+static inline Token classifier44(const QChar *data);
+
+ };
+
+ inline Basic::Token Basic::toToken(const QString &value)
+ {
+ return toToken(value.constData(), value.length());
+ }
+
+ inline Basic::Token Basic::toToken(const QStringRef &value)
+ {
+ return toToken(value.constData(), value.length());
+ }
+
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/tests/auto/qtokenautomaton/tokenizers/basic/basic.xml b/tests/auto/qtokenautomaton/tokenizers/basic/basic.xml
new file mode 100644
index 0000000000..3d7ac868eb
--- /dev/null
+++ b/tests/auto/qtokenautomaton/tokenizers/basic/basic.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<tokenAutomaton scope="public"
+ className="Basic"
+ headerFile="basic.h"
+ sourceFile="basic.cpp"
+ defaultToken="NoKeyword"
+ tokenEnum="Token"
+ hasToString="true"
+ includeGuardName="q_Basic_h">
+ <tokens>
+ <token>aReallyLongTokenIFreakinMeanItUKnowUKnowKnow</token>
+ <token>FFFF</token>
+ <token>FFFG</token>
+ <token>FFGF</token>
+ <token>FFGG</token>
+ <token>FFLM</token>
+ <token name="_111">def</token>
+ <token name="_">abc</token>
+ <token name="wobbly">ghi</token>
+ <token>we-have-dashes</token>
+ <token name="WeHaveDashes2">we-have-dashes-</token>
+ <token>colon:in:name:</token>
+ <token>one:colon</token>
+ </tokens>
+</tokenAutomaton>
diff --git a/tests/auto/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.cpp b/tests/auto/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.cpp
new file mode 100644
index 0000000000..444c948070
--- /dev/null
+++ b/tests/auto/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.cpp
@@ -0,0 +1,386 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 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$
+**
+****************************************************************************/
+/* NOTE: This file is AUTO GENERATED by qtokenautomaton2cpp.xsl. */
+
+#include "basicNamespace.h"
+
+QT_BEGIN_NAMESPACE
+
+using namespace BasicNamespace;
+
+Basic::Token Basic::classifier3(const QChar *data)
+
+ {
+ if (data[0] == 100)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 101, 102
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 2) == 0)
+
+
+ return _111;
+
+ }
+
+ else if (data[0] == 97)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 98, 99
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 2) == 0)
+
+
+ return _;
+
+ }
+
+ else if (data[0] == 103)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 104, 105
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 2) == 0)
+
+
+ return wobbly;
+
+ }
+
+
+
+ return NoKeyword;
+ }
+ Basic::Token Basic::classifier4(const QChar *data)
+
+ {
+ if (data[0] == 70)
+
+
+ {
+ if (data[1] == 70)
+
+
+ {
+ if (data[2] == 70)
+
+
+ {
+ if (data[3] == 70)
+
+
+ {
+
+
+ return FFFF;
+
+ }
+
+ else if (data[3] == 71)
+
+
+ {
+
+
+ return FFFG;
+
+ }
+
+
+ }
+
+ else if (data[2] == 71)
+
+
+ {
+ if (data[3] == 70)
+
+
+ {
+
+
+ return FFGF;
+
+ }
+
+ else if (data[3] == 71)
+
+
+ {
+
+
+ return FFGG;
+
+ }
+
+
+ }
+
+ else if (data[2] == 76)
+
+
+ {
+
+ if(data[3] == 77)
+
+
+ return FFLM;
+
+ }
+
+
+ }
+
+
+ }
+
+
+
+ return NoKeyword;
+ }
+ Basic::Token Basic::classifier14(const QChar *data)
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 99, 111, 108, 111, 110, 58, 105, 110, 58, 110, 97, 109, 101, 58
+ };
+ if(memcmp(&data[0], &string, sizeof(QChar) * 14) == 0)
+
+
+ return ColonInName;
+
+
+ return NoKeyword;
+ }
+ Basic::Token Basic::classifier44(const QChar *data)
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 97, 82, 101, 97, 108, 108, 121, 76, 111, 110, 103, 84, 111, 107, 101, 110, 73, 70, 114, 101, 97, 107, 105, 110, 77, 101, 97, 110, 73, 116, 85, 75, 110, 111, 119, 85, 75, 110, 111, 119, 75, 110, 111, 119
+ };
+ if(memcmp(&data[0], &string, sizeof(QChar) * 44) == 0)
+
+
+ return AReallyLongTokenIFreakinMeanItUKnowUKnowKnow;
+
+
+ return NoKeyword;
+ }
+ Basic::Token Basic::toToken(const QChar *data, int length)
+ {
+ switch(length)
+ {
+
+ case 3:
+ return classifier3(data);
+
+
+ case 4:
+ return classifier4(data);
+
+
+ case 14:
+ return classifier14(data);
+
+
+ case 44:
+ return classifier44(data);
+
+
+ default:
+ return NoKeyword;
+ }
+ }
+
+
+ QString Basic::toString(Token token)
+ {
+ const unsigned short *data = 0;
+ int length = 0;
+
+ switch(token)
+ {
+
+ case AReallyLongTokenIFreakinMeanItUKnowUKnowKnow:
+ {
+ static const unsigned short staticallyStoredAReallyLongTokenIFreakinMeanItUKnowUKnowKnow[] =
+ {
+ 97, 82, 101, 97, 108, 108, 121, 76, 111, 110, 103, 84, 111, 107, 101, 110, 73, 70, 114, 101, 97, 107, 105, 110, 77, 101, 97, 110, 73, 116, 85, 75, 110, 111, 119, 85, 75, 110, 111, 119, 75, 110, 111, 119, 0
+ };
+ data = staticallyStoredAReallyLongTokenIFreakinMeanItUKnowUKnowKnow;
+ length = 44;
+ break;
+ }
+
+ case ColonInName:
+ {
+ static const unsigned short staticallyStoredColonInName[] =
+ {
+ 99, 111, 108, 111, 110, 58, 105, 110, 58, 110, 97, 109, 101, 58, 0
+ };
+ data = staticallyStoredColonInName;
+ length = 14;
+ break;
+ }
+
+ case FFFF:
+ {
+ static const unsigned short staticallyStoredFFFF[] =
+ {
+ 70, 70, 70, 70, 0
+ };
+ data = staticallyStoredFFFF;
+ length = 4;
+ break;
+ }
+
+ case FFFG:
+ {
+ static const unsigned short staticallyStoredFFFG[] =
+ {
+ 70, 70, 70, 71, 0
+ };
+ data = staticallyStoredFFFG;
+ length = 4;
+ break;
+ }
+
+ case FFGF:
+ {
+ static const unsigned short staticallyStoredFFGF[] =
+ {
+ 70, 70, 71, 70, 0
+ };
+ data = staticallyStoredFFGF;
+ length = 4;
+ break;
+ }
+
+ case FFGG:
+ {
+ static const unsigned short staticallyStoredFFGG[] =
+ {
+ 70, 70, 71, 71, 0
+ };
+ data = staticallyStoredFFGG;
+ length = 4;
+ break;
+ }
+
+ case FFLM:
+ {
+ static const unsigned short staticallyStoredFFLM[] =
+ {
+ 70, 70, 76, 77, 0
+ };
+ data = staticallyStoredFFLM;
+ length = 4;
+ break;
+ }
+
+ case _:
+ {
+ static const unsigned short staticallyStored_[] =
+ {
+ 97, 98, 99, 0
+ };
+ data = staticallyStored_;
+ length = 3;
+ break;
+ }
+
+ case _111:
+ {
+ static const unsigned short staticallyStored_111[] =
+ {
+ 100, 101, 102, 0
+ };
+ data = staticallyStored_111;
+ length = 3;
+ break;
+ }
+
+ case wobbly:
+ {
+ static const unsigned short staticallyStoredwobbly[] =
+ {
+ 103, 104, 105, 0
+ };
+ data = staticallyStoredwobbly;
+ length = 3;
+ break;
+ }
+
+ default:
+ /* It's either the default token, or an undefined enum
+ * value. We silence a compiler warning, and return the
+ * empty string. */
+ ;
+ }
+
+ union
+ {
+ const unsigned short *data;
+ const QChar *asQChar;
+ } converter;
+ converter.data = data;
+
+ return QString::fromRawData(converter.asQChar, length);
+ }
+
+QT_END_NAMESPACE
+
diff --git a/tests/auto/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.h b/tests/auto/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.h
new file mode 100644
index 0000000000..a456a612d5
--- /dev/null
+++ b/tests/auto/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.h
@@ -0,0 +1,99 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 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$
+**
+****************************************************************************/
+/* NOTE: This file is AUTO GENERATED by qtokenautomaton2cpp.xsl. */
+
+#ifndef q_BasicNamespace_h
+#define q_BasicNamespace_h
+
+#include <QtCore/QString>
+
+QT_BEGIN_NAMESPACE
+
+namespace BasicNamespace
+ {
+ class Basic
+ {
+ public:
+ enum Token
+
+ {
+ NoKeyword,
+AReallyLongTokenIFreakinMeanItUKnowUKnowKnow,
+ColonInName,
+FFFF,
+FFFG,
+FFGF,
+FFGG,
+FFLM,
+_,
+_111,
+wobbly
+ };
+
+ static inline Token toToken(const QString &value);
+static inline Token toToken(const QStringRef &value);
+static Token toToken(const QChar *data, int length);
+static QString toString(Token token);
+
+
+ private:
+ static inline Token classifier3(const QChar *data);
+static inline Token classifier4(const QChar *data);
+static inline Token classifier14(const QChar *data);
+static inline Token classifier44(const QChar *data);
+
+ };
+
+ inline Basic::Token Basic::toToken(const QString &value)
+ {
+ return toToken(value.constData(), value.length());
+ }
+
+ inline Basic::Token Basic::toToken(const QStringRef &value)
+ {
+ return toToken(value.constData(), value.length());
+ }
+
+ }
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/tests/auto/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.xml b/tests/auto/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.xml
new file mode 100644
index 0000000000..282ffc292d
--- /dev/null
+++ b/tests/auto/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<tokenAutomaton scope="public"
+ namespace="BasicNamespace"
+ className="Basic"
+ headerFile="basicNamespace.h"
+ sourceFile="basicNamespace.cpp"
+ hasToString="true"
+ tokenEnum="Token"
+ defaultToken="NoKeyword"
+ includeGuardName="q_BasicNamespace_h">
+ <tokens>
+ <token>aReallyLongTokenIFreakinMeanItUKnowUKnowKnow</token>
+ <token>FFFF</token>
+ <token>FFFG</token>
+ <token>FFGF</token>
+ <token>FFGG</token>
+ <token>FFLM</token>
+ <token name="_111">def</token>
+ <token name="_">abc</token>
+ <token name="wobbly">ghi</token>
+ <token>colon:in:name:</token>
+ </tokens>
+</tokenAutomaton>
diff --git a/tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.cpp b/tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.cpp
new file mode 100644
index 0000000000..b716f99ba5
--- /dev/null
+++ b/tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.cpp
@@ -0,0 +1,386 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 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$
+**
+****************************************************************************/
+
+
+/* NOTE: This file is AUTO GENERATED by qtokenautomaton2cpp.xsl. */
+
+#include "boilerplate.h"
+
+QT_BEGIN_NAMESPACE
+
+Boilerplate::Token Boilerplate::classifier3(const QChar *data)
+
+ {
+ if (data[0] == 100)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 101, 102
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 2) == 0)
+
+
+ return _111;
+
+ }
+
+ else if (data[0] == 97)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 98, 99
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 2) == 0)
+
+
+ return _;
+
+ }
+
+ else if (data[0] == 103)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 104, 105
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 2) == 0)
+
+
+ return wobbly;
+
+ }
+
+
+
+ return NoKeyword;
+ }
+ Boilerplate::Token Boilerplate::classifier4(const QChar *data)
+
+ {
+ if (data[0] == 70)
+
+
+ {
+ if (data[1] == 70)
+
+
+ {
+ if (data[2] == 70)
+
+
+ {
+ if (data[3] == 70)
+
+
+ {
+
+
+ return FFFF;
+
+ }
+
+ else if (data[3] == 71)
+
+
+ {
+
+
+ return FFFG;
+
+ }
+
+
+ }
+
+ else if (data[2] == 71)
+
+
+ {
+ if (data[3] == 70)
+
+
+ {
+
+
+ return FFGF;
+
+ }
+
+ else if (data[3] == 71)
+
+
+ {
+
+
+ return FFGG;
+
+ }
+
+
+ }
+
+ else if (data[2] == 76)
+
+
+ {
+
+ if(data[3] == 77)
+
+
+ return FFLM;
+
+ }
+
+
+ }
+
+
+ }
+
+
+
+ return NoKeyword;
+ }
+ Boilerplate::Token Boilerplate::classifier14(const QChar *data)
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 99, 111, 108, 111, 110, 58, 105, 110, 58, 110, 97, 109, 101, 58
+ };
+ if(memcmp(&data[0], &string, sizeof(QChar) * 14) == 0)
+
+
+ return ColonInName;
+
+
+ return NoKeyword;
+ }
+ Boilerplate::Token Boilerplate::classifier44(const QChar *data)
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 97, 82, 101, 97, 108, 108, 121, 76, 111, 110, 103, 84, 111, 107, 101, 110, 73, 70, 114, 101, 97, 107, 105, 110, 77, 101, 97, 110, 73, 116, 85, 75, 110, 111, 119, 85, 75, 110, 111, 119, 75, 110, 111, 119
+ };
+ if(memcmp(&data[0], &string, sizeof(QChar) * 44) == 0)
+
+
+ return AReallyLongTokenIFreakinMeanItUKnowUKnowKnow;
+
+
+ return NoKeyword;
+ }
+ Boilerplate::Token Boilerplate::toToken(const QChar *data, int length)
+ {
+ switch(length)
+ {
+
+ case 3:
+ return classifier3(data);
+
+
+ case 4:
+ return classifier4(data);
+
+
+ case 14:
+ return classifier14(data);
+
+
+ case 44:
+ return classifier44(data);
+
+
+ default:
+ return NoKeyword;
+ }
+ }
+
+
+ QString Boilerplate::toString(Token token)
+ {
+ const unsigned short *data = 0;
+ int length = 0;
+
+ switch(token)
+ {
+
+ case AReallyLongTokenIFreakinMeanItUKnowUKnowKnow:
+ {
+ static const unsigned short staticallyStoredAReallyLongTokenIFreakinMeanItUKnowUKnowKnow[] =
+ {
+ 97, 82, 101, 97, 108, 108, 121, 76, 111, 110, 103, 84, 111, 107, 101, 110, 73, 70, 114, 101, 97, 107, 105, 110, 77, 101, 97, 110, 73, 116, 85, 75, 110, 111, 119, 85, 75, 110, 111, 119, 75, 110, 111, 119, 0
+ };
+ data = staticallyStoredAReallyLongTokenIFreakinMeanItUKnowUKnowKnow;
+ length = 44;
+ break;
+ }
+
+ case ColonInName:
+ {
+ static const unsigned short staticallyStoredColonInName[] =
+ {
+ 99, 111, 108, 111, 110, 58, 105, 110, 58, 110, 97, 109, 101, 58, 0
+ };
+ data = staticallyStoredColonInName;
+ length = 14;
+ break;
+ }
+
+ case FFFF:
+ {
+ static const unsigned short staticallyStoredFFFF[] =
+ {
+ 70, 70, 70, 70, 0
+ };
+ data = staticallyStoredFFFF;
+ length = 4;
+ break;
+ }
+
+ case FFFG:
+ {
+ static const unsigned short staticallyStoredFFFG[] =
+ {
+ 70, 70, 70, 71, 0
+ };
+ data = staticallyStoredFFFG;
+ length = 4;
+ break;
+ }
+
+ case FFGF:
+ {
+ static const unsigned short staticallyStoredFFGF[] =
+ {
+ 70, 70, 71, 70, 0
+ };
+ data = staticallyStoredFFGF;
+ length = 4;
+ break;
+ }
+
+ case FFGG:
+ {
+ static const unsigned short staticallyStoredFFGG[] =
+ {
+ 70, 70, 71, 71, 0
+ };
+ data = staticallyStoredFFGG;
+ length = 4;
+ break;
+ }
+
+ case FFLM:
+ {
+ static const unsigned short staticallyStoredFFLM[] =
+ {
+ 70, 70, 76, 77, 0
+ };
+ data = staticallyStoredFFLM;
+ length = 4;
+ break;
+ }
+
+ case _:
+ {
+ static const unsigned short staticallyStored_[] =
+ {
+ 97, 98, 99, 0
+ };
+ data = staticallyStored_;
+ length = 3;
+ break;
+ }
+
+ case _111:
+ {
+ static const unsigned short staticallyStored_111[] =
+ {
+ 100, 101, 102, 0
+ };
+ data = staticallyStored_111;
+ length = 3;
+ break;
+ }
+
+ case wobbly:
+ {
+ static const unsigned short staticallyStoredwobbly[] =
+ {
+ 103, 104, 105, 0
+ };
+ data = staticallyStoredwobbly;
+ length = 3;
+ break;
+ }
+
+ default:
+ /* It's either the default token, or an undefined enum
+ * value. We silence a compiler warning, and return the
+ * empty string. */
+ ;
+ }
+
+ union
+ {
+ const unsigned short *data;
+ const QChar *asQChar;
+ } converter;
+ converter.data = data;
+
+ return QString::fromRawData(converter.asQChar, length);
+ }
+
+QT_END_NAMESPACE
+
diff --git a/tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.h b/tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.h
new file mode 100644
index 0000000000..1174dfcf16
--- /dev/null
+++ b/tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.h
@@ -0,0 +1,98 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 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$
+**
+****************************************************************************/
+
+
+/* NOTE: This file is AUTO GENERATED by qtokenautomaton2cpp.xsl. */
+
+#ifndef q_Basic_h
+#define q_Basic_h
+
+#include <QtCore/QString>
+
+QT_BEGIN_NAMESPACE
+
+class Boilerplate
+ {
+ public:
+ enum Token
+
+ {
+ NoKeyword,
+AReallyLongTokenIFreakinMeanItUKnowUKnowKnow,
+ColonInName,
+FFFF,
+FFFG,
+FFGF,
+FFGG,
+FFLM,
+_,
+_111,
+wobbly
+ };
+
+ static inline Token toToken(const QString &value);
+static inline Token toToken(const QStringRef &value);
+static Token toToken(const QChar *data, int length);
+static QString toString(Token token);
+
+
+ private:
+ static inline Token classifier3(const QChar *data);
+static inline Token classifier4(const QChar *data);
+static inline Token classifier14(const QChar *data);
+static inline Token classifier44(const QChar *data);
+
+ };
+
+ inline Boilerplate::Token Boilerplate::toToken(const QString &value)
+ {
+ return toToken(value.constData(), value.length());
+ }
+
+ inline Boilerplate::Token Boilerplate::toToken(const QStringRef &value)
+ {
+ return toToken(value.constData(), value.length());
+ }
+
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.xml b/tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.xml
new file mode 100644
index 0000000000..f60d0e46f5
--- /dev/null
+++ b/tests/auto/qtokenautomaton/tokenizers/boilerplate/boilerplate.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<tokenAutomaton scope="public"
+ className="Boilerplate"
+ headerFile="boilerplate.h"
+ sourceFile="boilerplate.cpp"
+ defaultToken="NoKeyword"
+ tokenEnum="Token"
+ hasToString="true"
+ includeGuardName="q_Basic_h">
+ <tokens>
+ <token>aReallyLongTokenIFreakinMeanItUKnowUKnowKnow</token>
+ <token>FFFF</token>
+ <token>FFFG</token>
+ <token>FFGF</token>
+ <token>FFGG</token>
+ <token>FFLM</token>
+ <token name="_111">def</token>
+ <token name="_">abc</token>
+ <token name="wobbly">ghi</token>
+ <token>colon:in:name:</token>
+ </tokens>
+
+ <boilerplate>
+ <prolog>/****************************************************************************
+**
+** Copyright (C) 2011 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$
+**
+****************************************************************************/
+
+</prolog>
+ </boilerplate>
+</tokenAutomaton>
diff --git a/tests/auto/qtokenautomaton/tokenizers/noNamespace/noNamespace.cpp b/tests/auto/qtokenautomaton/tokenizers/noNamespace/noNamespace.cpp
new file mode 100644
index 0000000000..6b30789653
--- /dev/null
+++ b/tests/auto/qtokenautomaton/tokenizers/noNamespace/noNamespace.cpp
@@ -0,0 +1,449 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 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$
+**
+****************************************************************************/
+/* NOTE: This file is AUTO GENERATED by qtokenautomaton2cpp.xsl. */
+
+#include "noNamespace.h"
+
+QT_BEGIN_NAMESPACE
+
+NoNamespace::Token NoNamespace::classifier3(const QChar *data)
+
+ {
+ if (data[0] == 100)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 101, 102
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 2) == 0)
+
+
+ return _111;
+
+ }
+
+ else if (data[0] == 97)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 98, 99
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 2) == 0)
+
+
+ return _;
+
+ }
+
+ else if (data[0] == 103)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 104, 105
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 2) == 0)
+
+
+ return wobbly;
+
+ }
+
+
+
+ return NoKeyword;
+ }
+ NoNamespace::Token NoNamespace::classifier4(const QChar *data)
+
+ {
+ if (data[0] == 70)
+
+
+ {
+ if (data[1] == 70)
+
+
+ {
+ if (data[2] == 70)
+
+
+ {
+ if (data[3] == 70)
+
+
+ {
+
+
+ return FFFF;
+
+ }
+
+ else if (data[3] == 71)
+
+
+ {
+
+
+ return FFFG;
+
+ }
+
+
+ }
+
+ else if (data[2] == 71)
+
+
+ {
+ if (data[3] == 70)
+
+
+ {
+
+
+ return FFGF;
+
+ }
+
+ else if (data[3] == 71)
+
+
+ {
+
+
+ return FFGG;
+
+ }
+
+
+ }
+
+ else if (data[2] == 76)
+
+
+ {
+
+ if(data[3] == 77)
+
+
+ return FFLM;
+
+ }
+
+
+ }
+
+
+ }
+
+
+
+ return NoKeyword;
+ }
+ NoNamespace::Token NoNamespace::classifier14(const QChar *data)
+
+ {
+ if (data[0] == 119)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 101, 45, 104, 97, 118, 101, 45, 100, 97, 115, 104, 101, 115
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 13) == 0)
+
+
+ return WeHaveDashes;
+
+ }
+
+ else if (data[0] == 99)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 111, 108, 111, 110, 58, 105, 110, 58, 110, 97, 109, 101, 58
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 13) == 0)
+
+
+ return ColonInName;
+
+ }
+
+
+
+ return NoKeyword;
+ }
+ NoNamespace::Token NoNamespace::classifier15(const QChar *data)
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 119, 101, 45, 104, 97, 118, 101, 45, 100, 97, 115, 104, 101, 115, 45
+ };
+ if(memcmp(&data[0], &string, sizeof(QChar) * 15) == 0)
+
+
+ return WeHaveDashes2;
+
+
+ return NoKeyword;
+ }
+ NoNamespace::Token NoNamespace::classifier44(const QChar *data)
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 97, 82, 101, 97, 108, 108, 121, 76, 111, 110, 103, 84, 111, 107, 101, 110, 73, 70, 114, 101, 97, 107, 105, 110, 77, 101, 97, 110, 73, 116, 85, 75, 110, 111, 119, 85, 75, 110, 111, 119, 75, 110, 111, 119
+ };
+ if(memcmp(&data[0], &string, sizeof(QChar) * 44) == 0)
+
+
+ return AReallyLongTokenIFreakinMeanItUKnowUKnowKnow;
+
+
+ return NoKeyword;
+ }
+ NoNamespace::Token NoNamespace::toToken(const QChar *data, int length)
+ {
+ switch(length)
+ {
+
+ case 3:
+ return classifier3(data);
+
+
+ case 4:
+ return classifier4(data);
+
+
+ case 14:
+ return classifier14(data);
+
+
+ case 15:
+ return classifier15(data);
+
+
+ case 44:
+ return classifier44(data);
+
+
+ default:
+ return NoKeyword;
+ }
+ }
+
+
+ QString NoNamespace::toString(Token token)
+ {
+ const unsigned short *data = 0;
+ int length = 0;
+
+ switch(token)
+ {
+
+ case AReallyLongTokenIFreakinMeanItUKnowUKnowKnow:
+ {
+ static const unsigned short staticallyStoredAReallyLongTokenIFreakinMeanItUKnowUKnowKnow[] =
+ {
+ 97, 82, 101, 97, 108, 108, 121, 76, 111, 110, 103, 84, 111, 107, 101, 110, 73, 70, 114, 101, 97, 107, 105, 110, 77, 101, 97, 110, 73, 116, 85, 75, 110, 111, 119, 85, 75, 110, 111, 119, 75, 110, 111, 119, 0
+ };
+ data = staticallyStoredAReallyLongTokenIFreakinMeanItUKnowUKnowKnow;
+ length = 44;
+ break;
+ }
+
+ case ColonInName:
+ {
+ static const unsigned short staticallyStoredColonInName[] =
+ {
+ 99, 111, 108, 111, 110, 58, 105, 110, 58, 110, 97, 109, 101, 58, 0
+ };
+ data = staticallyStoredColonInName;
+ length = 14;
+ break;
+ }
+
+ case FFFF:
+ {
+ static const unsigned short staticallyStoredFFFF[] =
+ {
+ 70, 70, 70, 70, 0
+ };
+ data = staticallyStoredFFFF;
+ length = 4;
+ break;
+ }
+
+ case FFFG:
+ {
+ static const unsigned short staticallyStoredFFFG[] =
+ {
+ 70, 70, 70, 71, 0
+ };
+ data = staticallyStoredFFFG;
+ length = 4;
+ break;
+ }
+
+ case FFGF:
+ {
+ static const unsigned short staticallyStoredFFGF[] =
+ {
+ 70, 70, 71, 70, 0
+ };
+ data = staticallyStoredFFGF;
+ length = 4;
+ break;
+ }
+
+ case FFGG:
+ {
+ static const unsigned short staticallyStoredFFGG[] =
+ {
+ 70, 70, 71, 71, 0
+ };
+ data = staticallyStoredFFGG;
+ length = 4;
+ break;
+ }
+
+ case FFLM:
+ {
+ static const unsigned short staticallyStoredFFLM[] =
+ {
+ 70, 70, 76, 77, 0
+ };
+ data = staticallyStoredFFLM;
+ length = 4;
+ break;
+ }
+
+ case WeHaveDashes:
+ {
+ static const unsigned short staticallyStoredWeHaveDashes[] =
+ {
+ 119, 101, 45, 104, 97, 118, 101, 45, 100, 97, 115, 104, 101, 115, 0
+ };
+ data = staticallyStoredWeHaveDashes;
+ length = 14;
+ break;
+ }
+
+ case WeHaveDashes2:
+ {
+ static const unsigned short staticallyStoredWeHaveDashes2[] =
+ {
+ 119, 101, 45, 104, 97, 118, 101, 45, 100, 97, 115, 104, 101, 115, 45, 0
+ };
+ data = staticallyStoredWeHaveDashes2;
+ length = 15;
+ break;
+ }
+
+ case _:
+ {
+ static const unsigned short staticallyStored_[] =
+ {
+ 97, 98, 99, 0
+ };
+ data = staticallyStored_;
+ length = 3;
+ break;
+ }
+
+ case _111:
+ {
+ static const unsigned short staticallyStored_111[] =
+ {
+ 100, 101, 102, 0
+ };
+ data = staticallyStored_111;
+ length = 3;
+ break;
+ }
+
+ case wobbly:
+ {
+ static const unsigned short staticallyStoredwobbly[] =
+ {
+ 103, 104, 105, 0
+ };
+ data = staticallyStoredwobbly;
+ length = 3;
+ break;
+ }
+
+ default:
+ /* It's either the default token, or an undefined enum
+ * value. We silence a compiler warning, and return the
+ * empty string. */
+ ;
+ }
+
+ union
+ {
+ const unsigned short *data;
+ const QChar *asQChar;
+ } converter;
+ converter.data = data;
+
+ return QString::fromRawData(converter.asQChar, length);
+ }
+
+QT_END_NAMESPACE
+
diff --git a/tests/auto/qtokenautomaton/tokenizers/noNamespace/noNamespace.h b/tests/auto/qtokenautomaton/tokenizers/noNamespace/noNamespace.h
new file mode 100644
index 0000000000..03fd904f24
--- /dev/null
+++ b/tests/auto/qtokenautomaton/tokenizers/noNamespace/noNamespace.h
@@ -0,0 +1,99 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 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$
+**
+****************************************************************************/
+/* NOTE: This file is AUTO GENERATED by qtokenautomaton2cpp.xsl. */
+
+#ifndef q_noNamespace_h
+#define q_noNamespace_h
+
+#include <QtCore/QString>
+
+QT_BEGIN_NAMESPACE
+
+class NoNamespace
+ {
+ public:
+ enum Token
+
+ {
+ NoKeyword,
+AReallyLongTokenIFreakinMeanItUKnowUKnowKnow,
+ColonInName,
+FFFF,
+FFFG,
+FFGF,
+FFGG,
+FFLM,
+WeHaveDashes,
+WeHaveDashes2,
+_,
+_111,
+wobbly
+ };
+
+ static inline Token toToken(const QString &value);
+static inline Token toToken(const QStringRef &value);
+static Token toToken(const QChar *data, int length);
+static QString toString(Token token);
+
+
+ private:
+ static inline Token classifier3(const QChar *data);
+static inline Token classifier4(const QChar *data);
+static inline Token classifier14(const QChar *data);
+static inline Token classifier15(const QChar *data);
+static inline Token classifier44(const QChar *data);
+
+ };
+
+ inline NoNamespace::Token NoNamespace::toToken(const QString &value)
+ {
+ return toToken(value.constData(), value.length());
+ }
+
+ inline NoNamespace::Token NoNamespace::toToken(const QStringRef &value)
+ {
+ return toToken(value.constData(), value.length());
+ }
+
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/tests/auto/qtokenautomaton/tokenizers/noNamespace/noNamespace.xml b/tests/auto/qtokenautomaton/tokenizers/noNamespace/noNamespace.xml
new file mode 100644
index 0000000000..67738cd3bd
--- /dev/null
+++ b/tests/auto/qtokenautomaton/tokenizers/noNamespace/noNamespace.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<tokenAutomaton scope="public"
+ className="NoNamespace"
+ headerFile="noNamespace.h"
+ sourceFile="noNamespace.cpp"
+ defaultToken="NoKeyword"
+ tokenEnum="Token"
+ hasToString="true"
+ includeGuardName="q_noNamespace_h">
+ <tokens>
+ <token>aReallyLongTokenIFreakinMeanItUKnowUKnowKnow</token>
+ <token>FFFF</token>
+ <token>FFFG</token>
+ <token>FFGF</token>
+ <token>FFGG</token>
+ <token>FFLM</token>
+ <token name="_111">def</token>
+ <token name="_">abc</token>
+ <token name="wobbly">ghi</token>
+ <token>we-have-dashes</token>
+ <token name="WeHaveDashes2">we-have-dashes-</token>
+ <token>colon:in:name:</token>
+ </tokens>
+</tokenAutomaton>
diff --git a/tests/auto/qtokenautomaton/tokenizers/noToString/noToString.cpp b/tests/auto/qtokenautomaton/tokenizers/noToString/noToString.cpp
new file mode 100644
index 0000000000..bce5829709
--- /dev/null
+++ b/tests/auto/qtokenautomaton/tokenizers/noToString/noToString.cpp
@@ -0,0 +1,251 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 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$
+**
+****************************************************************************/
+/* NOTE: This file is AUTO GENERATED by qtokenautomaton2cpp.xsl. */
+
+#include "noToString.h"
+
+QT_BEGIN_NAMESPACE
+
+using namespace NoToStringNS;
+
+NoToString::Token NoToString::classifier3(const QChar *data)
+
+ {
+ if (data[0] == 100)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 101, 102
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 2) == 0)
+
+
+ return _111;
+
+ }
+
+ else if (data[0] == 97)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 98, 99
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 2) == 0)
+
+
+ return _;
+
+ }
+
+ else if (data[0] == 103)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 104, 105
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 2) == 0)
+
+
+ return wobbly;
+
+ }
+
+
+
+ return NoKeyword;
+ }
+ NoToString::Token NoToString::classifier4(const QChar *data)
+
+ {
+ if (data[0] == 70)
+
+
+ {
+ if (data[1] == 70)
+
+
+ {
+ if (data[2] == 70)
+
+
+ {
+ if (data[3] == 70)
+
+
+ {
+
+
+ return FFFF;
+
+ }
+
+ else if (data[3] == 71)
+
+
+ {
+
+
+ return FFFG;
+
+ }
+
+
+ }
+
+ else if (data[2] == 71)
+
+
+ {
+ if (data[3] == 70)
+
+
+ {
+
+
+ return FFGF;
+
+ }
+
+ else if (data[3] == 71)
+
+
+ {
+
+
+ return FFGG;
+
+ }
+
+
+ }
+
+ else if (data[2] == 76)
+
+
+ {
+
+ if(data[3] == 77)
+
+
+ return FFLM;
+
+ }
+
+
+ }
+
+
+ }
+
+
+
+ return NoKeyword;
+ }
+ NoToString::Token NoToString::classifier14(const QChar *data)
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 99, 111, 108, 111, 110, 58, 105, 110, 58, 110, 97, 109, 101, 58
+ };
+ if(memcmp(&data[0], &string, sizeof(QChar) * 14) == 0)
+
+
+ return ColonInName;
+
+
+ return NoKeyword;
+ }
+ NoToString::Token NoToString::classifier44(const QChar *data)
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 97, 82, 101, 97, 108, 108, 121, 76, 111, 110, 103, 84, 111, 107, 101, 110, 73, 70, 114, 101, 97, 107, 105, 110, 77, 101, 97, 110, 73, 116, 85, 75, 110, 111, 119, 85, 75, 110, 111, 119, 75, 110, 111, 119
+ };
+ if(memcmp(&data[0], &string, sizeof(QChar) * 44) == 0)
+
+
+ return AReallyLongTokenIFreakinMeanItUKnowUKnowKnow;
+
+
+ return NoKeyword;
+ }
+ NoToString::Token NoToString::toToken(const QChar *data, int length)
+ {
+ switch(length)
+ {
+
+ case 3:
+ return classifier3(data);
+
+
+ case 4:
+ return classifier4(data);
+
+
+ case 14:
+ return classifier14(data);
+
+
+ case 44:
+ return classifier44(data);
+
+
+ default:
+ return NoKeyword;
+ }
+ }
+
+
+QT_END_NAMESPACE
+
diff --git a/tests/auto/qtokenautomaton/tokenizers/noToString/noToString.h b/tests/auto/qtokenautomaton/tokenizers/noToString/noToString.h
new file mode 100644
index 0000000000..d8fd42dcc5
--- /dev/null
+++ b/tests/auto/qtokenautomaton/tokenizers/noToString/noToString.h
@@ -0,0 +1,98 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 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$
+**
+****************************************************************************/
+/* NOTE: This file is AUTO GENERATED by qtokenautomaton2cpp.xsl. */
+
+#ifndef q_NoToStringNS_h
+#define q_NoToStringNS_h
+
+#include <QtCore/QString>
+
+QT_BEGIN_NAMESPACE
+
+namespace NoToStringNS
+ {
+ class NoToString
+ {
+ public:
+ enum Token
+
+ {
+ NoKeyword,
+AReallyLongTokenIFreakinMeanItUKnowUKnowKnow,
+ColonInName,
+FFFF,
+FFFG,
+FFGF,
+FFGG,
+FFLM,
+_,
+_111,
+wobbly
+ };
+
+ static inline Token toToken(const QString &value);
+static inline Token toToken(const QStringRef &value);
+static Token toToken(const QChar *data, int length);
+
+
+ private:
+ static inline Token classifier3(const QChar *data);
+static inline Token classifier4(const QChar *data);
+static inline Token classifier14(const QChar *data);
+static inline Token classifier44(const QChar *data);
+
+ };
+
+ inline NoToString::Token NoToString::toToken(const QString &value)
+ {
+ return toToken(value.constData(), value.length());
+ }
+
+ inline NoToString::Token NoToString::toToken(const QStringRef &value)
+ {
+ return toToken(value.constData(), value.length());
+ }
+
+ }
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/tests/auto/qtokenautomaton/tokenizers/noToString/noToString.xml b/tests/auto/qtokenautomaton/tokenizers/noToString/noToString.xml
new file mode 100644
index 0000000000..99e1644d87
--- /dev/null
+++ b/tests/auto/qtokenautomaton/tokenizers/noToString/noToString.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<tokenAutomaton scope="public"
+ namespace="NoToStringNS"
+ className="NoToString"
+ headerFile="noToString.h"
+ sourceFile="noToString.cpp"
+ hasToString="false"
+ tokenEnum="Token"
+ defaultToken="NoKeyword"
+ includeGuardName="q_NoToStringNS_h">
+ <tokens>
+ <token>aReallyLongTokenIFreakinMeanItUKnowUKnowKnow</token>
+ <token>FFFF</token>
+ <token>FFFG</token>
+ <token>FFGF</token>
+ <token>FFGG</token>
+ <token>FFLM</token>
+ <token name="_111">def</token>
+ <token name="_">abc</token>
+ <token name="wobbly">ghi</token>
+ <token>colon:in:name:</token>
+ </tokens>
+</tokenAutomaton>
diff --git a/tests/auto/qtokenautomaton/tokenizers/withNamespace/withNamespace.cpp b/tests/auto/qtokenautomaton/tokenizers/withNamespace/withNamespace.cpp
new file mode 100644
index 0000000000..bf6c988bf1
--- /dev/null
+++ b/tests/auto/qtokenautomaton/tokenizers/withNamespace/withNamespace.cpp
@@ -0,0 +1,451 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 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$
+**
+****************************************************************************/
+/* NOTE: This file is AUTO GENERATED by qtokenautomaton2cpp.xsl. */
+
+#include "withNamespace.h"
+
+QT_BEGIN_NAMESPACE
+
+using namespace TheNamespace;
+
+WithNamespace::Token WithNamespace::classifier3(const QChar *data)
+
+ {
+ if (data[0] == 100)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 101, 102
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 2) == 0)
+
+
+ return _111;
+
+ }
+
+ else if (data[0] == 97)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 98, 99
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 2) == 0)
+
+
+ return _;
+
+ }
+
+ else if (data[0] == 103)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 104, 105
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 2) == 0)
+
+
+ return wobbly;
+
+ }
+
+
+
+ return NoKeyword;
+ }
+ WithNamespace::Token WithNamespace::classifier4(const QChar *data)
+
+ {
+ if (data[0] == 70)
+
+
+ {
+ if (data[1] == 70)
+
+
+ {
+ if (data[2] == 70)
+
+
+ {
+ if (data[3] == 70)
+
+
+ {
+
+
+ return FFFF;
+
+ }
+
+ else if (data[3] == 71)
+
+
+ {
+
+
+ return FFFG;
+
+ }
+
+
+ }
+
+ else if (data[2] == 71)
+
+
+ {
+ if (data[3] == 70)
+
+
+ {
+
+
+ return FFGF;
+
+ }
+
+ else if (data[3] == 71)
+
+
+ {
+
+
+ return FFGG;
+
+ }
+
+
+ }
+
+ else if (data[2] == 76)
+
+
+ {
+
+ if(data[3] == 77)
+
+
+ return FFLM;
+
+ }
+
+
+ }
+
+
+ }
+
+
+
+ return NoKeyword;
+ }
+ WithNamespace::Token WithNamespace::classifier14(const QChar *data)
+
+ {
+ if (data[0] == 119)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 101, 45, 104, 97, 118, 101, 45, 100, 97, 115, 104, 101, 115
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 13) == 0)
+
+
+ return WeHaveDashes;
+
+ }
+
+ else if (data[0] == 99)
+
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 111, 108, 111, 110, 58, 105, 110, 58, 110, 97, 109, 101, 58
+ };
+ if(memcmp(&data[1], &string, sizeof(QChar) * 13) == 0)
+
+
+ return ColonInName;
+
+ }
+
+
+
+ return NoKeyword;
+ }
+ WithNamespace::Token WithNamespace::classifier15(const QChar *data)
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 119, 101, 45, 104, 97, 118, 101, 45, 100, 97, 115, 104, 101, 115, 45
+ };
+ if(memcmp(&data[0], &string, sizeof(QChar) * 15) == 0)
+
+
+ return WeHaveDashes2;
+
+
+ return NoKeyword;
+ }
+ WithNamespace::Token WithNamespace::classifier44(const QChar *data)
+
+ {
+
+ static const unsigned short string[] =
+ {
+ 97, 82, 101, 97, 108, 108, 121, 76, 111, 110, 103, 84, 111, 107, 101, 110, 73, 70, 114, 101, 97, 107, 105, 110, 77, 101, 97, 110, 73, 116, 85, 75, 110, 111, 119, 85, 75, 110, 111, 119, 75, 110, 111, 119
+ };
+ if(memcmp(&data[0], &string, sizeof(QChar) * 44) == 0)
+
+
+ return AReallyLongTokenIFreakinMeanItUKnowUKnowKnow;
+
+
+ return NoKeyword;
+ }
+ WithNamespace::Token WithNamespace::toToken(const QChar *data, int length)
+ {
+ switch(length)
+ {
+
+ case 3:
+ return classifier3(data);
+
+
+ case 4:
+ return classifier4(data);
+
+
+ case 14:
+ return classifier14(data);
+
+
+ case 15:
+ return classifier15(data);
+
+
+ case 44:
+ return classifier44(data);
+
+
+ default:
+ return NoKeyword;
+ }
+ }
+
+
+ QString WithNamespace::toString(Token token)
+ {
+ const unsigned short *data = 0;
+ int length = 0;
+
+ switch(token)
+ {
+
+ case AReallyLongTokenIFreakinMeanItUKnowUKnowKnow:
+ {
+ static const unsigned short staticallyStoredAReallyLongTokenIFreakinMeanItUKnowUKnowKnow[] =
+ {
+ 97, 82, 101, 97, 108, 108, 121, 76, 111, 110, 103, 84, 111, 107, 101, 110, 73, 70, 114, 101, 97, 107, 105, 110, 77, 101, 97, 110, 73, 116, 85, 75, 110, 111, 119, 85, 75, 110, 111, 119, 75, 110, 111, 119, 0
+ };
+ data = staticallyStoredAReallyLongTokenIFreakinMeanItUKnowUKnowKnow;
+ length = 44;
+ break;
+ }
+
+ case ColonInName:
+ {
+ static const unsigned short staticallyStoredColonInName[] =
+ {
+ 99, 111, 108, 111, 110, 58, 105, 110, 58, 110, 97, 109, 101, 58, 0
+ };
+ data = staticallyStoredColonInName;
+ length = 14;
+ break;
+ }
+
+ case FFFF:
+ {
+ static const unsigned short staticallyStoredFFFF[] =
+ {
+ 70, 70, 70, 70, 0
+ };
+ data = staticallyStoredFFFF;
+ length = 4;
+ break;
+ }
+
+ case FFFG:
+ {
+ static const unsigned short staticallyStoredFFFG[] =
+ {
+ 70, 70, 70, 71, 0
+ };
+ data = staticallyStoredFFFG;
+ length = 4;
+ break;
+ }
+
+ case FFGF:
+ {
+ static const unsigned short staticallyStoredFFGF[] =
+ {
+ 70, 70, 71, 70, 0
+ };
+ data = staticallyStoredFFGF;
+ length = 4;
+ break;
+ }
+
+ case FFGG:
+ {
+ static const unsigned short staticallyStoredFFGG[] =
+ {
+ 70, 70, 71, 71, 0
+ };
+ data = staticallyStoredFFGG;
+ length = 4;
+ break;
+ }
+
+ case FFLM:
+ {
+ static const unsigned short staticallyStoredFFLM[] =
+ {
+ 70, 70, 76, 77, 0
+ };
+ data = staticallyStoredFFLM;
+ length = 4;
+ break;
+ }
+
+ case WeHaveDashes:
+ {
+ static const unsigned short staticallyStoredWeHaveDashes[] =
+ {
+ 119, 101, 45, 104, 97, 118, 101, 45, 100, 97, 115, 104, 101, 115, 0
+ };
+ data = staticallyStoredWeHaveDashes;
+ length = 14;
+ break;
+ }
+
+ case WeHaveDashes2:
+ {
+ static const unsigned short staticallyStoredWeHaveDashes2[] =
+ {
+ 119, 101, 45, 104, 97, 118, 101, 45, 100, 97, 115, 104, 101, 115, 45, 0
+ };
+ data = staticallyStoredWeHaveDashes2;
+ length = 15;
+ break;
+ }
+
+ case _:
+ {
+ static const unsigned short staticallyStored_[] =
+ {
+ 97, 98, 99, 0
+ };
+ data = staticallyStored_;
+ length = 3;
+ break;
+ }
+
+ case _111:
+ {
+ static const unsigned short staticallyStored_111[] =
+ {
+ 100, 101, 102, 0
+ };
+ data = staticallyStored_111;
+ length = 3;
+ break;
+ }
+
+ case wobbly:
+ {
+ static const unsigned short staticallyStoredwobbly[] =
+ {
+ 103, 104, 105, 0
+ };
+ data = staticallyStoredwobbly;
+ length = 3;
+ break;
+ }
+
+ default:
+ /* It's either the default token, or an undefined enum
+ * value. We silence a compiler warning, and return the
+ * empty string. */
+ ;
+ }
+
+ union
+ {
+ const unsigned short *data;
+ const QChar *asQChar;
+ } converter;
+ converter.data = data;
+
+ return QString::fromRawData(converter.asQChar, length);
+ }
+
+QT_END_NAMESPACE
+
diff --git a/tests/auto/qtokenautomaton/tokenizers/withNamespace/withNamespace.h b/tests/auto/qtokenautomaton/tokenizers/withNamespace/withNamespace.h
new file mode 100644
index 0000000000..1bf68212c9
--- /dev/null
+++ b/tests/auto/qtokenautomaton/tokenizers/withNamespace/withNamespace.h
@@ -0,0 +1,102 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 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$
+**
+****************************************************************************/
+/* NOTE: This file is AUTO GENERATED by qtokenautomaton2cpp.xsl. */
+
+#ifndef q_withNamespace_h
+#define q_withNamespace_h
+
+#include <QtCore/QString>
+
+QT_BEGIN_NAMESPACE
+
+namespace TheNamespace
+ {
+ class WithNamespace
+ {
+ public:
+ enum Token
+
+ {
+ NoKeyword,
+AReallyLongTokenIFreakinMeanItUKnowUKnowKnow,
+ColonInName,
+FFFF,
+FFFG,
+FFGF,
+FFGG,
+FFLM,
+WeHaveDashes,
+WeHaveDashes2,
+_,
+_111,
+wobbly
+ };
+
+ static inline Token toToken(const QString &value);
+static inline Token toToken(const QStringRef &value);
+static Token toToken(const QChar *data, int length);
+static QString toString(Token token);
+
+
+ private:
+ static inline Token classifier3(const QChar *data);
+static inline Token classifier4(const QChar *data);
+static inline Token classifier14(const QChar *data);
+static inline Token classifier15(const QChar *data);
+static inline Token classifier44(const QChar *data);
+
+ };
+
+ inline WithNamespace::Token WithNamespace::toToken(const QString &value)
+ {
+ return toToken(value.constData(), value.length());
+ }
+
+ inline WithNamespace::Token WithNamespace::toToken(const QStringRef &value)
+ {
+ return toToken(value.constData(), value.length());
+ }
+
+ }
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/tests/auto/qtokenautomaton/tokenizers/withNamespace/withNamespace.xml b/tests/auto/qtokenautomaton/tokenizers/withNamespace/withNamespace.xml
new file mode 100644
index 0000000000..533eed85b7
--- /dev/null
+++ b/tests/auto/qtokenautomaton/tokenizers/withNamespace/withNamespace.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<tokenAutomaton scope="public"
+ className="WithNamespace"
+ headerFile="withNamespace.h"
+ sourceFile="withNamespace.cpp"
+ defaultToken="NoKeyword"
+ tokenEnum="Token"
+ hasToString="true"
+ namespace="TheNamespace"
+ includeGuardName="q_withNamespace_h">
+ <tokens>
+ <token>aReallyLongTokenIFreakinMeanItUKnowUKnowKnow</token>
+ <token>FFFF</token>
+ <token>FFFG</token>
+ <token>FFGF</token>
+ <token>FFGG</token>
+ <token>FFLM</token>
+ <token name="_111">def</token>
+ <token name="_">abc</token>
+ <token name="wobbly">ghi</token>
+ <token>we-have-dashes</token>
+ <token name="WeHaveDashes2">we-have-dashes-</token>
+ <token>colon:in:name:</token>
+ </tokens>
+</tokenAutomaton>
diff --git a/tests/auto/qtokenautomaton/tst_qtokenautomaton.cpp b/tests/auto/qtokenautomaton/tst_qtokenautomaton.cpp
new file mode 100644
index 0000000000..7a190ed95b
--- /dev/null
+++ b/tests/auto/qtokenautomaton/tst_qtokenautomaton.cpp
@@ -0,0 +1,134 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 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$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include "tokenizers/basic/basic.h"
+#include "tokenizers/basicNamespace/basicNamespace.h"
+#include "tokenizers/boilerplate/boilerplate.h"
+#include "tokenizers/noToString/noToString.h"
+
+/*!
+ \class tst_QTokenAutomaton
+ \internal
+ \brief Tests the QTokenAutomaton generator.
+
+TODO:
+ - Verify high Unicode codepoints
+ - Verify that signatures are static.
+ */
+class tst_QTokenAutomaton : public QObject
+{
+ Q_OBJECT
+
+private Q_SLOTS:
+ void tokenizerBasic() const;
+};
+
+void tst_QTokenAutomaton::tokenizerBasic() const
+{
+ typedef QPair<Basic::Token, QString> TokenPair;
+ typedef QList<TokenPair> TokenPairList;
+
+ /* Tokenizer basic. */
+ {
+ /* All the tokens matching tokens. */
+ {
+ TokenPairList tokens;
+ tokens.append(qMakePair(Basic::_, QString::fromLatin1("abc")));
+ tokens.append(qMakePair(Basic::_111, QString::fromLatin1("def")));
+ tokens.append(qMakePair(Basic::wobbly, QString::fromLatin1("ghi")));
+ tokens.append(qMakePair(Basic::FFFF, QString::fromLatin1("FFFF")));
+ tokens.append(qMakePair(Basic::FFFG, QString::fromLatin1("FFFG")));
+ tokens.append(qMakePair(Basic::FFGG, QString::fromLatin1("FFGG")));
+ tokens.append(qMakePair(Basic::FFGF, QString::fromLatin1("FFGF")));
+ tokens.append(qMakePair(Basic::FFLM, QString::fromLatin1("FFLM")));
+ tokens.append(qMakePair(Basic::AReallyLongTokenIFreakinMeanItUKnowUKnowKnow, QString::fromLatin1("aReallyLongTokenIFreakinMeanItUKnowUKnowKnow")));
+ tokens.append(qMakePair(Basic::WeHaveDashes, QString::fromLatin1("we-have-dashes")));
+ tokens.append(qMakePair(Basic::WeHaveDashes2, QString::fromLatin1("we-have-dashes-")));
+
+ /* toToken(). */
+ for(int i = 0; i < tokens.count(); ++i)
+ {
+ const TokenPair &at = tokens.at(i);
+ /* QString. */
+ QCOMPARE(Basic::toToken(at.second), at.first);
+
+ /* const QChar *, int. */
+ QCOMPARE(Basic::toToken(at.second.constData(), at.second.length()), at.first);
+
+ /* QStringRef. */
+ const QStringRef ref(&at.second);
+ QCOMPARE(Basic::toToken(ref), at.first);
+ }
+
+ /* toString(). */
+ for(int i = 0; i < tokens.count(); ++i)
+ {
+ const TokenPair &at = tokens.at(i);
+ QCOMPARE(Basic::toString(at.first), at.second);
+ }
+ }
+
+ /* Tokens that we don't recognize. */
+ {
+ QStringList tokens;
+ tokens.append(QLatin1String("NO-MATCH"));
+ tokens.append(QLatin1String("NoKeyword"));
+ tokens.append(QString());
+
+ for(int i = 0; i < tokens.count(); ++i)
+ QCOMPARE(Basic::toToken(tokens.at(i)), Basic::NoKeyword);
+ }
+
+ /* Weird values for toToken(). */
+ {
+ QCOMPARE(Basic::toString(Basic::Token(5000)), QString());
+ QCOMPARE(Basic::toString(Basic::NoKeyword), QString());
+ }
+
+ }
+}
+
+QTEST_MAIN(tst_QTokenAutomaton)
+
+#include "tst_qtokenautomaton.moc"