blob: a8c43f7d3e1eda916fcce36cbc986911a48c0aa9 [file] [log] [blame]
/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the QtXmlPatterns module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 3 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL3 included in the
** packaging of this file. Please review the following information to
** ensure the GNU Lesser General Public License version 3 requirements
** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 2.0 or (at your option) the GNU General
** Public license version 3 or any later version approved by the KDE Free
** Qt Foundation. The licenses are as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
** included in the packaging of this file. Please review the following
** information to ensure the GNU General Public License requirements will
** be met: https://www.gnu.org/licenses/gpl-2.0.html and
** https://www.gnu.org/licenses/gpl-3.0.html.
**
** $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 ,T_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", T_ANCESTOR
"ancestor-or-self", T_ANCESTOR_OR_SELF
"and", T_AND
"as", T_AS
"ascending", T_ASCENDING
"assign", T_ASSIGN
"at", T_AT
"attribute", T_ATTRIBUTE
"base-uri", T_BASEURI
"boundary-space", T_BOUNDARY_SPACE
"by", T_BY
"case", T_CASE
"castable", T_CASTABLE
"cast", T_CAST
"child", T_CHILD
"collation", T_COLLATION
"comment", T_COMMENT
"construction", T_CONSTRUCTION
"copy-namespaces", T_COPY_NAMESPACES
"declare", T_DECLARE
"default", T_DEFAULT
"descendant", T_DESCENDANT
"descendant-or-self", T_DESCENDANT_OR_SELF
"descending", T_DESCENDING
"div", T_DIV
"document", T_DOCUMENT
"document-node", T_DOCUMENT_NODE
"element", T_ELEMENT
"else", T_ELSE
"empty", T_EMPTY
"empty-sequence", T_EMPTY_SEQUENCE
"encoding", T_ENCODING
"eq", T_EQ
"every", T_EVERY
"except", T_EXCEPT
"external", T_EXTERNAL
"following", T_FOLLOWING
"following-sibling", T_FOLLOWING_SIBLING
"follows", T_FOLLOWS
"for", T_FOR
"function", T_FUNCTION
"ge", T_GE
"greatest", T_GREATEST
"gt", T_GT
"idiv", T_IDIV
"if", T_IF
"import", T_IMPORT
"inherit", T_INHERIT
"in", T_IN
"instance", T_INSTANCE
"intersect", T_INTERSECT
"is", T_IS
"item", T_ITEM
"lax", T_LAX
"least", T_LEAST
"le", T_LE
"let", T_LET
"lt", T_LT
"mod", T_MOD
"module", T_MODULE
"namespace", T_NAMESPACE
"ne", T_NE
"node", T_NODE
"no-inherit", T_NO_INHERIT
"no-preserve", T_NO_PRESERVE
"of", T_OF
"option", T_OPTION
"ordered", T_ORDERED
"ordering", T_ORDERING
"order", T_ORDER
"or", T_OR
"parent", T_PARENT
"precedes", T_PRECEDES
"preceding", T_PRECEDING
"preceding-sibling", T_PRECEDING_SIBLING
"preserve", T_PRESERVE
"processing-instruction", T_PROCESSING_INSTRUCTION
"return", T_RETURN
"satisfies", T_SATISFIES
"schema-attribute", T_SCHEMA_ATTRIBUTE
"schema-element", T_SCHEMA_ELEMENT
"schema", T_SCHEMA
"self", T_SELF
"some", T_SOME
"stable", T_STABLE
"strict", T_STRICT
"strip", T_STRIP
"text", T_TEXT
"then", T_THEN
"to", T_TO
"treat", T_TREAT
"typeswitch", T_TYPESWITCH
"union", T_UNION
"unordered", T_UNORDERED
"validate", T_VALIDATE
"variable", T_VARIABLE
"version", T_VERSION
"where", T_WHERE
"xquery", T_XQUERY
%%
} /* Close the QPatternist namespace. */
QT_END_NAMESPACE