b0f532b3ce7d03f788c86689bcddbc9822c0787f
[profile/ivi/qtxmlpatterns.git] / src / xmlpatterns / expr / qexpressiondispatch_p.h
1 /****************************************************************************
2 **
3 ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/
5 **
6 ** This file is part of the QtXmlPatterns module of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:LGPL$
9 ** GNU Lesser General Public License Usage
10 ** This file may be used under the terms of the GNU Lesser General Public
11 ** License version 2.1 as published by the Free Software Foundation and
12 ** appearing in the file LICENSE.LGPL included in the packaging of this
13 ** file. Please review the following information to ensure the GNU Lesser
14 ** General Public License version 2.1 requirements will be met:
15 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
16 **
17 ** In addition, as a special exception, Nokia gives you certain additional
18 ** rights. These rights are described in the Nokia Qt LGPL Exception
19 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
20 **
21 ** GNU General Public License Usage
22 ** Alternatively, this file may be used under the terms of the GNU General
23 ** Public License version 3.0 as published by the Free Software Foundation
24 ** and appearing in the file LICENSE.GPL included in the packaging of this
25 ** file. Please review the following information to ensure the GNU General
26 ** Public License version 3.0 requirements will be met:
27 ** http://www.gnu.org/copyleft/gpl.html.
28 **
29 ** Other Usage
30 ** Alternatively, this file may be used in accordance with the terms and
31 ** conditions contained in a signed written agreement between you and Nokia.
32 **
33 **
34 **
35 **
36 **
37 **
38 ** $QT_END_LICENSE$
39 **
40 ****************************************************************************/
41
42 //
43 //  W A R N I N G
44 //  -------------
45 //
46 // This file is not part of the Qt API.  It exists purely as an
47 // implementation detail.  This header file may change from version to
48 // version without notice, or even be removed.
49 //
50 // We mean it.
51
52 #ifndef Patternist_ExpressionDispatch_H
53 #define Patternist_ExpressionDispatch_H
54
55 #include <QSharedData>
56
57
58 QT_BEGIN_HEADER
59
60 QT_BEGIN_NAMESPACE
61
62 namespace QPatternist
63 {
64     class AndExpression;
65     class ApplyTemplate;
66     class ArgumentConverter;
67     class ArgumentReference;
68     class ArithmeticExpression;
69     class Atomizer;
70     class AttributeConstructor;
71     class AttributeNameValidator;
72     class AxisStep;
73     class CallTemplate;
74     class CardinalityVerifier;
75     class CardinalityVerifier;
76     class CastableAs;
77     class CastableAs;
78     class CastAs;
79     class CastAs;
80     class CollationChecker;
81     class CollationChecker;
82     class CombineNodes;
83     class CombineNodes;
84     class CommentConstructor;
85     class CommentConstructor;
86     class ComputedNamespaceConstructor;
87     class ContextItem;
88     class CopyOf;
89     class CurrentItemStore;
90     class DocumentConstructor;
91     class DynamicContextStore;
92     class EBVExtractor;
93     class ElementConstructor;
94     class EmptySequence;
95     class ExpressionSequence;
96     class ExpressionVariableReference;
97     class ExternalVariableReference;
98     class FirstItemPredicate;
99     class ForClause;
100     class FunctionCall;
101     class GeneralComparison;
102     class GenericPredicate;
103     class IfThenClause;
104     class InstanceOf;
105     class ItemVerifier;
106     class LetClause;
107     class Literal;
108     class LiteralSequence;
109     class NamespaceConstructor;
110     class NCNameConstructor;
111     class NodeComparison;
112     class NodeSortExpression;
113     class OrderBy;
114     class OrExpression;
115     class ParentNodeAxis;
116     class Path;
117     class PositionalVariableReference;
118     class ProcessingInstructionConstructor;
119     class QNameConstructor;
120     class QuantifiedExpression;
121     class RangeExpression;
122     class RangeVariableReference;
123     class ReturnOrderBy;
124     class SimpleContentConstructor;
125     class StaticBaseURIStore;
126     class StaticCompatibilityStore;
127     class TemplateParameterReference;
128     class TextNodeConstructor;
129     class TreatAs;
130     class TruthPredicate;
131     class UnresolvedVariableReference;
132     class UntypedAtomicConverter;
133     class UserFunctionCallsite;
134     class ValidationError;
135     class ValueComparison;
136     template<bool IsForGlobal> class EvaluationCache;
137
138     /**
139      * @todo Documentation's missing
140      *
141      * @defgroup Patternist_expr_dispatch Expression Dispatching
142      */
143
144     /**
145      * @ingroup Patternist_expr_dispatch
146      * @author Frans Englich <frans.englich@nokia.com>
147      */
148     class ExpressionVisitorResult : public QSharedData
149     {
150     public:
151         typedef QExplicitlySharedDataPointer<ExpressionVisitorResult> Ptr;
152         ExpressionVisitorResult() {}
153         virtual ~ExpressionVisitorResult() {}
154     };
155
156     /**
157      * @ingroup Patternist_expr_dispatch
158      * @author Frans Englich <frans.englich@nokia.com>
159      */
160     class ExpressionVisitor : public QSharedData
161     {
162     public:
163         typedef QExplicitlySharedDataPointer<ExpressionVisitor> Ptr;
164         virtual ~ExpressionVisitor() {}
165
166         virtual ExpressionVisitorResult::Ptr visit(const AndExpression *) const = 0;
167         virtual ExpressionVisitorResult::Ptr visit(const ApplyTemplate *) const = 0;
168         virtual ExpressionVisitorResult::Ptr visit(const ArgumentConverter *) const = 0;
169         virtual ExpressionVisitorResult::Ptr visit(const ArgumentReference *) const = 0;
170         virtual ExpressionVisitorResult::Ptr visit(const ArithmeticExpression *) const = 0;
171         virtual ExpressionVisitorResult::Ptr visit(const Atomizer *) const = 0;
172         virtual ExpressionVisitorResult::Ptr visit(const AttributeConstructor *) const = 0;
173         virtual ExpressionVisitorResult::Ptr visit(const AttributeNameValidator *) const = 0;
174         virtual ExpressionVisitorResult::Ptr visit(const AxisStep *) const = 0;
175         virtual ExpressionVisitorResult::Ptr visit(const CallTemplate *) const = 0;
176         virtual ExpressionVisitorResult::Ptr visit(const CardinalityVerifier *) const = 0;
177         virtual ExpressionVisitorResult::Ptr visit(const CastableAs *) const = 0;
178         virtual ExpressionVisitorResult::Ptr visit(const CastAs *) const = 0;
179         virtual ExpressionVisitorResult::Ptr visit(const CollationChecker *) const = 0;
180         virtual ExpressionVisitorResult::Ptr visit(const CombineNodes *) const = 0;
181         virtual ExpressionVisitorResult::Ptr visit(const CommentConstructor *) const = 0;
182         virtual ExpressionVisitorResult::Ptr visit(const ComputedNamespaceConstructor *) const = 0;
183         virtual ExpressionVisitorResult::Ptr visit(const ContextItem *) const = 0;
184         virtual ExpressionVisitorResult::Ptr visit(const CopyOf *) const = 0;
185         virtual ExpressionVisitorResult::Ptr visit(const CurrentItemStore *) const = 0;
186         virtual ExpressionVisitorResult::Ptr visit(const DocumentConstructor *) const = 0;
187         virtual ExpressionVisitorResult::Ptr visit(const DynamicContextStore *) const = 0;
188         virtual ExpressionVisitorResult::Ptr visit(const EBVExtractor *) const = 0;
189         virtual ExpressionVisitorResult::Ptr visit(const ElementConstructor *) const = 0;
190         virtual ExpressionVisitorResult::Ptr visit(const EmptySequence *) const = 0;
191         virtual ExpressionVisitorResult::Ptr visit(const EvaluationCache<false> *) const = 0;
192         virtual ExpressionVisitorResult::Ptr visit(const EvaluationCache<true> *) const = 0;
193         virtual ExpressionVisitorResult::Ptr visit(const ExpressionSequence *) const = 0;
194         virtual ExpressionVisitorResult::Ptr visit(const ExpressionVariableReference *) const = 0;
195         virtual ExpressionVisitorResult::Ptr visit(const ExternalVariableReference *) const = 0;
196         virtual ExpressionVisitorResult::Ptr visit(const FirstItemPredicate *) const = 0;
197         virtual ExpressionVisitorResult::Ptr visit(const ForClause *) const = 0;
198         virtual ExpressionVisitorResult::Ptr visit(const FunctionCall *) const = 0;
199         virtual ExpressionVisitorResult::Ptr visit(const GeneralComparison *) const = 0;
200         virtual ExpressionVisitorResult::Ptr visit(const GenericPredicate *) const = 0;
201         virtual ExpressionVisitorResult::Ptr visit(const IfThenClause *) const = 0;
202         virtual ExpressionVisitorResult::Ptr visit(const InstanceOf *) const = 0;
203         virtual ExpressionVisitorResult::Ptr visit(const ItemVerifier *) const = 0;
204         virtual ExpressionVisitorResult::Ptr visit(const LetClause *) const = 0;
205         virtual ExpressionVisitorResult::Ptr visit(const Literal *) const = 0;
206         virtual ExpressionVisitorResult::Ptr visit(const LiteralSequence *) const = 0;
207         virtual ExpressionVisitorResult::Ptr visit(const NamespaceConstructor *) const = 0;
208         virtual ExpressionVisitorResult::Ptr visit(const NCNameConstructor *) const = 0;
209         virtual ExpressionVisitorResult::Ptr visit(const NodeComparison *) const = 0;
210         virtual ExpressionVisitorResult::Ptr visit(const NodeSortExpression *) const = 0;
211         virtual ExpressionVisitorResult::Ptr visit(const OrderBy *) const = 0;
212         virtual ExpressionVisitorResult::Ptr visit(const OrExpression *) const = 0;
213         virtual ExpressionVisitorResult::Ptr visit(const ParentNodeAxis *) const = 0;
214         virtual ExpressionVisitorResult::Ptr visit(const Path *) const = 0;
215         virtual ExpressionVisitorResult::Ptr visit(const PositionalVariableReference *) const = 0;
216         virtual ExpressionVisitorResult::Ptr visit(const ProcessingInstructionConstructor *) const = 0;
217         virtual ExpressionVisitorResult::Ptr visit(const QNameConstructor *) const = 0;
218         virtual ExpressionVisitorResult::Ptr visit(const QuantifiedExpression *) const = 0;
219         virtual ExpressionVisitorResult::Ptr visit(const RangeExpression *) const = 0;
220         virtual ExpressionVisitorResult::Ptr visit(const RangeVariableReference *) const = 0;
221         virtual ExpressionVisitorResult::Ptr visit(const ReturnOrderBy *) const = 0;
222         virtual ExpressionVisitorResult::Ptr visit(const SimpleContentConstructor *) const = 0;
223         virtual ExpressionVisitorResult::Ptr visit(const StaticBaseURIStore *) const = 0;
224         virtual ExpressionVisitorResult::Ptr visit(const StaticCompatibilityStore *) const = 0;
225         virtual ExpressionVisitorResult::Ptr visit(const TemplateParameterReference *) const = 0;
226         virtual ExpressionVisitorResult::Ptr visit(const TextNodeConstructor *) const = 0;
227         virtual ExpressionVisitorResult::Ptr visit(const TreatAs *) const = 0;
228         virtual ExpressionVisitorResult::Ptr visit(const TruthPredicate *) const = 0;
229         virtual ExpressionVisitorResult::Ptr visit(const UnresolvedVariableReference *) const = 0;
230         virtual ExpressionVisitorResult::Ptr visit(const UntypedAtomicConverter *) const = 0;
231         virtual ExpressionVisitorResult::Ptr visit(const UserFunctionCallsite *) const = 0;
232         virtual ExpressionVisitorResult::Ptr visit(const ValidationError *) const = 0;
233         virtual ExpressionVisitorResult::Ptr visit(const ValueComparison *) const = 0;
234     };
235 }
236
237 QT_END_NAMESPACE
238
239 QT_END_HEADER
240
241 #endif