1 /****************************************************************************
3 ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/
6 ** This file is part of the QtXmlPatterns module of the Qt Toolkit.
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.
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.
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.
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.
40 ****************************************************************************/
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.
52 #ifndef Patternist_AtomicComparatorLocators_H
53 #define Patternist_AtomicComparatorLocators_H
55 #include <private/qatomiccomparatorlocator_p.h>
59 * @short Contains AtomicComparatorLocator sub-classes that finds classes
60 * which can compare atomic values.
71 * @author Frans Englich <frans.englich@nokia.com>
73 class DoubleComparatorLocator : public AtomicComparatorLocator
75 using AtomicComparatorLocator::visit;
76 virtual AtomicTypeVisitorResult::Ptr visit(const DoubleType *,
78 const SourceLocationReflection *const) const;
79 virtual AtomicTypeVisitorResult::Ptr visit(const FloatType *,
81 const SourceLocationReflection *const) const;
82 virtual AtomicTypeVisitorResult::Ptr visit(const DecimalType *,
84 const SourceLocationReflection *const) const;
85 virtual AtomicTypeVisitorResult::Ptr visit(const IntegerType *,
87 const SourceLocationReflection *const) const;
91 * @author Frans Englich <frans.englich@nokia.com>
93 class FloatComparatorLocator : public AtomicComparatorLocator
95 using AtomicComparatorLocator::visit;
96 virtual AtomicTypeVisitorResult::Ptr visit(const DoubleType *,
98 const SourceLocationReflection *const) const;
99 virtual AtomicTypeVisitorResult::Ptr visit(const FloatType *,
101 const SourceLocationReflection *const) const;
102 virtual AtomicTypeVisitorResult::Ptr visit(const DecimalType *,
104 const SourceLocationReflection *const) const;
105 virtual AtomicTypeVisitorResult::Ptr visit(const IntegerType *,
107 const SourceLocationReflection *const) const;
111 * @author Frans Englich <frans.englich@nokia.com>
113 class DecimalComparatorLocator : public AtomicComparatorLocator
115 using AtomicComparatorLocator::visit;
116 virtual AtomicTypeVisitorResult::Ptr visit(const DoubleType *,
118 const SourceLocationReflection *const) const;
119 virtual AtomicTypeVisitorResult::Ptr visit(const FloatType *,
121 const SourceLocationReflection *const) const;
122 virtual AtomicTypeVisitorResult::Ptr visit(const DecimalType *,
124 const SourceLocationReflection *const) const;
125 virtual AtomicTypeVisitorResult::Ptr visit(const IntegerType *,
127 const SourceLocationReflection *const) const;
131 * @author Frans Englich <frans.englich@nokia.com>
133 class IntegerComparatorLocator : public AtomicComparatorLocator
135 using AtomicComparatorLocator::visit;
136 virtual AtomicTypeVisitorResult::Ptr visit(const DoubleType *,
138 const SourceLocationReflection *const) const;
139 virtual AtomicTypeVisitorResult::Ptr visit(const FloatType *,
141 const SourceLocationReflection *const) const;
142 virtual AtomicTypeVisitorResult::Ptr visit(const DecimalType *,
144 const SourceLocationReflection *const) const;
145 virtual AtomicTypeVisitorResult::Ptr visit(const IntegerType *,
147 const SourceLocationReflection *const) const;
151 * @author Frans Englich <frans.englich@nokia.com>
153 class BooleanComparatorLocator : public AtomicComparatorLocator
155 using AtomicComparatorLocator::visit;
156 virtual AtomicTypeVisitorResult::Ptr visit(const BooleanType *,
158 const SourceLocationReflection *const) const;
162 * @author Frans Englich <frans.englich@nokia.com>
164 class Base64BinaryComparatorLocator : public AtomicComparatorLocator
166 using AtomicComparatorLocator::visit;
167 virtual AtomicTypeVisitorResult::Ptr visit(const Base64BinaryType *,
169 const SourceLocationReflection *const) const;
173 * @author Frans Englich <frans.englich@nokia.com>
175 class HexBinaryComparatorLocator : public AtomicComparatorLocator
177 using AtomicComparatorLocator::visit;
178 virtual AtomicTypeVisitorResult::Ptr visit(const HexBinaryType *,
180 const SourceLocationReflection *const) const;
184 * @author Frans Englich <frans.englich@nokia.com>
186 class QNameComparatorLocator : public AtomicComparatorLocator
188 using AtomicComparatorLocator::visit;
189 virtual AtomicTypeVisitorResult::Ptr visit(const QNameType *,
191 const SourceLocationReflection *const) const;
195 * @author Frans Englich <frans.englich@nokia.com>
197 class StringComparatorLocator : public AtomicComparatorLocator
199 using AtomicComparatorLocator::visit;
200 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
202 const SourceLocationReflection *const) const;
203 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
205 const SourceLocationReflection *const) const;
206 virtual AtomicTypeVisitorResult::Ptr visit(const AnyURIType *,
208 const SourceLocationReflection *const) const;
213 * @author Frans Englich <frans.englich@nokia.com>
215 class GYearComparatorLocator : public AtomicComparatorLocator
217 using AtomicComparatorLocator::visit;
218 virtual AtomicTypeVisitorResult::Ptr visit(const GYearType *,
220 const SourceLocationReflection *const) const;
224 * @author Frans Englich <frans.englich@nokia.com>
226 class GMonthComparatorLocator : public AtomicComparatorLocator
228 using AtomicComparatorLocator::visit;
229 virtual AtomicTypeVisitorResult::Ptr visit(const GMonthType *,
231 const SourceLocationReflection *const) const;
235 * @author Frans Englich <frans.englich@nokia.com>
237 class GYearMonthComparatorLocator : public AtomicComparatorLocator
239 using AtomicComparatorLocator::visit;
240 virtual AtomicTypeVisitorResult::Ptr visit(const GYearMonthType *,
242 const SourceLocationReflection *const) const;
246 * @author Frans Englich <frans.englich@nokia.com>
248 class GMonthDayComparatorLocator : public AtomicComparatorLocator
250 using AtomicComparatorLocator::visit;
251 virtual AtomicTypeVisitorResult::Ptr visit(const GMonthDayType *,
253 const SourceLocationReflection *const) const;
257 * @author Frans Englich <frans.englich@nokia.com>
259 class GDayComparatorLocator : public AtomicComparatorLocator
261 using AtomicComparatorLocator::visit;
262 virtual AtomicTypeVisitorResult::Ptr visit(const GDayType *,
264 const SourceLocationReflection *const) const;
268 * @author Frans Englich <frans.englich@nokia.com>
270 class DateTimeComparatorLocator : public AtomicComparatorLocator
272 using AtomicComparatorLocator::visit;
273 virtual AtomicTypeVisitorResult::Ptr visit(const DateTimeType *,
275 const SourceLocationReflection *const) const;
279 * @author Frans Englich <frans.englich@nokia.com>
281 class SchemaTimeComparatorLocator : public AtomicComparatorLocator
283 using AtomicComparatorLocator::visit;
284 virtual AtomicTypeVisitorResult::Ptr visit(const SchemaTimeType *,
286 const SourceLocationReflection *const) const;
290 * @author Frans Englich <frans.englich@nokia.com>
292 class DateComparatorLocator : public AtomicComparatorLocator
294 using AtomicComparatorLocator::visit;
295 virtual AtomicTypeVisitorResult::Ptr visit(const DateType *,
297 const SourceLocationReflection *const) const;
301 * @author Frans Englich <frans.englich@nokia.com>
303 class DurationComparatorLocator : public AtomicComparatorLocator
305 using AtomicComparatorLocator::visit;
306 virtual AtomicTypeVisitorResult::Ptr visit(const DayTimeDurationType *,
308 const SourceLocationReflection *const) const;
309 virtual AtomicTypeVisitorResult::Ptr visit(const DurationType *,
311 const SourceLocationReflection *const) const;
312 virtual AtomicTypeVisitorResult::Ptr visit(const YearMonthDurationType *,
314 const SourceLocationReflection *const) const;
318 * @author Frans Englich <frans.englich@nokia.com>
320 class DayTimeDurationComparatorLocator : public AtomicComparatorLocator
322 using AtomicComparatorLocator::visit;
323 virtual AtomicTypeVisitorResult::Ptr visit(const DayTimeDurationType *,
325 const SourceLocationReflection *const) const;
326 virtual AtomicTypeVisitorResult::Ptr visit(const DurationType *,
328 const SourceLocationReflection *const) const;
329 virtual AtomicTypeVisitorResult::Ptr visit(const YearMonthDurationType *,
331 const SourceLocationReflection *const) const;
335 * @author Frans Englich <frans.englich@nokia.com>
337 class YearMonthDurationComparatorLocator : public AtomicComparatorLocator
339 using AtomicComparatorLocator::visit;
340 virtual AtomicTypeVisitorResult::Ptr visit(const DayTimeDurationType *,
342 const SourceLocationReflection *const) const;
343 virtual AtomicTypeVisitorResult::Ptr visit(const DurationType *,
345 const SourceLocationReflection *const) const;
346 virtual AtomicTypeVisitorResult::Ptr visit(const YearMonthDurationType *,
348 const SourceLocationReflection *const) const;