summaryrefslogtreecommitdiff
path: root/src/xmlpatterns/parser/TokenLookup.gperf
diff options
context:
space:
mode:
Diffstat (limited to 'src/xmlpatterns/parser/TokenLookup.gperf')
-rw-r--r--src/xmlpatterns/parser/TokenLookup.gperf223
1 files changed, 223 insertions, 0 deletions
diff --git a/src/xmlpatterns/parser/TokenLookup.gperf b/src/xmlpatterns/parser/TokenLookup.gperf
new file mode 100644
index 0000000..491e925
--- /dev/null
+++ b/src/xmlpatterns/parser/TokenLookup.gperf
@@ -0,0 +1,223 @@
+/****************************************************************************
+**
+** 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 QtXmlPatterns 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$
+**
+****************************************************************************/
+
+/**
+ * @file qtokenlookup.cpp
+ * @short This file is generated from TokenLookup.gperf and contains
+ * TokenLookup, a class housing a perfect hash function class for XQuery's keywords.
+ * @author Frans Englich <frans.englich@nokia.com>
+ */
+
+/**
+ * @class QPatternist::TokenLookup
+ * @short Contains a perfect hash function for XQuery's keywords.
+ */
+
+/**
+ * @fn QPatternist::TokenLookup::value(const QString &keyword)
+ * Looks up @p keyword and returns a pointer to the corresponding value.
+ *
+ * If @p keyword is not contained in the hash, a null pointer is returned.
+ */
+
+/**
+ * @file
+ * @short This file is the @c gperf declaration for generating TokenLookup.cpp.
+ *
+ * You generate TokenLookup.cpp by running:
+ *
+ * @code
+ * gperf TokenLookup.gperf --output-file=../src/parser/TokenLookup.cpp
+ * @endcode
+ *
+ * @c gperf generates a perfect hash function, which the tokenizer, src/parser/qxquerytokenizer.cpp,
+ * uses for looking up XQuery keywords.
+ *
+ * @see <a href="http://en.wikipedia.org/wiki/Perfect_hash_function">Perfect hash function, Wikipedia</a>
+ * @see <a href="http://www.gnu.org/software/gperf/manual/gperf.html">Perfect Hash Function Generator</a>
+ */
+
+%language=C++
+
+/* Declare data const such that the compiler can put them
+ * in the read-only section. */
+%readonly-tables
+
+/* Yes, for crisps sake, we want enums instead of macros. */
+%enum
+
+/* Rename in_word_set to value, such that it's more
+ * like QHash::value(). */
+%define lookup-function-name value
+
+/* Rename Perfect_Hash to TokenLookup. More Qt/Patternist'ish. */
+%define class-name TokenLookup
+
+/* Output initializers for the TokenMap struct. Note the lack
+ * of a space between the comma and ERROR. Anything else is
+ * a syntax error to gperf. Rocket science. */
+%define initializer-suffix ,ERROR
+
+%struct-type
+
+struct TokenMap
+{
+ const char *name;
+ const Tokenizer::TokenType token;
+}
+
+%{
+
+QT_BEGIN_NAMESPACE
+
+namespace QPatternist
+{
+
+%}
+
+/* The strings below are in UTF-16 encoding. Subsequently, each ASCII
+ * character is stored as the ASCII character, followed by a null byte.
+ * Sorted alphabetically. */
+%%
+"ancestor", ANCESTOR
+"ancestor-or-self", ANCESTOR_OR_SELF
+"and", AND
+"as", AS
+"ascending", ASCENDING
+"assign", ASSIGN
+"at", AT
+"attribute", ATTRIBUTE
+"base-uri", BASEURI
+"boundary-space", BOUNDARY_SPACE
+"by", BY
+"case", CASE
+"castable", CASTABLE
+"cast", CAST
+"child", CHILD
+"collation", COLLATION
+"comment", COMMENT
+"construction", CONSTRUCTION
+"copy-namespaces", COPY_NAMESPACES
+"declare", DECLARE
+"default", DEFAULT
+"descendant", DESCENDANT
+"descendant-or-self", DESCENDANT_OR_SELF
+"descending", DESCENDING
+"div", DIV
+"document", DOCUMENT
+"document-node", DOCUMENT_NODE
+"element", ELEMENT
+"else", ELSE
+"empty", EMPTY
+"empty-sequence", EMPTY_SEQUENCE
+"encoding", ENCODING
+"eq", EQ
+"every", EVERY
+"except", EXCEPT
+"external", EXTERNAL
+"following", FOLLOWING
+"following-sibling", FOLLOWING_SIBLING
+"follows", FOLLOWS
+"for", FOR
+"function", FUNCTION
+"ge", GE
+"greatest", GREATEST
+"gt", GT
+"idiv", IDIV
+"if", IF
+"import", IMPORT
+"inherit", INHERIT
+"in", IN
+"instance", INSTANCE
+"intersect", INTERSECT
+"is", IS
+"item", ITEM
+"lax", LAX
+"least", LEAST
+"le", LE
+"let", LET
+"lt", LT
+"mod", MOD
+"module", MODULE
+"namespace", NAMESPACE
+"ne", NE
+"node", NODE
+"no-inherit", NO_INHERIT
+"no-preserve", NO_PRESERVE
+"of", OF
+"option", OPTION
+"ordered", ORDERED
+"ordering", ORDERING
+"order", ORDER
+"or", OR
+"parent", PARENT
+"precedes", PRECEDES
+"preceding", PRECEDING
+"preceding-sibling", PRECEDING_SIBLING
+"preserve", PRESERVE
+"processing-instruction", PROCESSING_INSTRUCTION
+"return", RETURN
+"satisfies", SATISFIES
+"schema-attribute", SCHEMA_ATTRIBUTE
+"schema-element", SCHEMA_ELEMENT
+"schema", SCHEMA
+"self", SELF
+"some", SOME
+"stable", STABLE
+"strict", STRICT
+"strip", STRIP
+"text", TEXT
+"then", THEN
+"to", TO
+"treat", TREAT
+"typeswitch", TYPESWITCH
+"union", UNION
+"unordered", UNORDERED
+"validate", VALIDATE
+"variable", VARIABLE
+"version", VERSION
+"where", WHERE
+"xquery", XQUERY
+%%
+
+} /* Close the QPatternist namespace. */
+
+QT_END_NAMESPACE