diff -r 000000000000 -r 1918ee327afb src/xmlpatterns/parser/TokenLookup.gperf --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/xmlpatterns/parser/TokenLookup.gperf Mon Jan 11 14:00:40 2010 +0000 @@ -0,0 +1,223 @@ +/**************************************************************************** +** +** Copyright (C) 2009 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 + */ + +/** + * @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 Perfect hash function, Wikipedia + * @see Perfect Hash Function Generator + */ + +%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