1 /****************************************************************************
3 ** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
7 ** This file is part of the QtXmlPatterns module of the Qt Toolkit.
9 ** $QT_BEGIN_LICENSE:LGPL$
10 ** GNU Lesser General Public License Usage
11 ** This file may be used under the terms of the GNU Lesser General Public
12 ** License version 2.1 as published by the Free Software Foundation and
13 ** appearing in the file LICENSE.LGPL included in the packaging of this
14 ** file. Please review the following information to ensure the GNU Lesser
15 ** General Public License version 2.1 requirements will be met:
16 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
18 ** In addition, as a special exception, Nokia gives you certain additional
19 ** rights. These rights are described in the Nokia Qt LGPL Exception
20 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
22 ** GNU General Public License Usage
23 ** Alternatively, this file may be used under the terms of the GNU General
24 ** Public License version 3.0 as published by the Free Software Foundation
25 ** and appearing in the file LICENSE.GPL included in the packaging of this
26 ** file. Please review the following information to ensure the GNU General
27 ** Public License version 3.0 requirements will be met:
28 ** http://www.gnu.org/copyleft/gpl.html.
31 ** Alternatively, this file may be used in accordance with the terms and
32 ** 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_AtomicCasterLocators_H
53 #define Patternist_AtomicCasterLocators_H
55 #include "qatomiccasterlocator_p.h"
56 #include "qatomiccasters_p.h"
57 //#include "qderivedinteger_p.h"
61 * @short Contains AtomicCasterLocator sub-classes that finds classes
62 * which can perform casting from one atomic value to another.
72 * @author Frans Englich <frans.englich@nokia.com>
74 class ToStringCasterLocator : public AtomicCasterLocator
77 using AtomicCasterLocator::visit;
78 virtual AtomicTypeVisitorResult::Ptr visit(const AnyURIType *,
79 const SourceLocationReflection *const r) const;
80 virtual AtomicTypeVisitorResult::Ptr visit(const Base64BinaryType *,
81 const SourceLocationReflection *const r) const;
82 virtual AtomicTypeVisitorResult::Ptr visit(const BooleanType *,
83 const SourceLocationReflection *const r) const;
84 virtual AtomicTypeVisitorResult::Ptr visit(const DateTimeType *,
85 const SourceLocationReflection *const r) const;
86 virtual AtomicTypeVisitorResult::Ptr visit(const DateType *,
87 const SourceLocationReflection *const r) const;
88 virtual AtomicTypeVisitorResult::Ptr visit(const DayTimeDurationType *,
89 const SourceLocationReflection *const r) const;
90 virtual AtomicTypeVisitorResult::Ptr visit(const DecimalType *,
91 const SourceLocationReflection *const r) const;
92 virtual AtomicTypeVisitorResult::Ptr visit(const DoubleType *,
93 const SourceLocationReflection *const r) const;
94 virtual AtomicTypeVisitorResult::Ptr visit(const DurationType *,
95 const SourceLocationReflection *const r) const;
96 virtual AtomicTypeVisitorResult::Ptr visit(const FloatType *,
97 const SourceLocationReflection *const r) const;
98 virtual AtomicTypeVisitorResult::Ptr visit(const GDayType *,
99 const SourceLocationReflection *const r) const;
100 virtual AtomicTypeVisitorResult::Ptr visit(const GMonthDayType *,
101 const SourceLocationReflection *const r) const;
102 virtual AtomicTypeVisitorResult::Ptr visit(const GMonthType *,
103 const SourceLocationReflection *const r) const;
104 virtual AtomicTypeVisitorResult::Ptr visit(const GYearMonthType *,
105 const SourceLocationReflection *const r) const;
106 virtual AtomicTypeVisitorResult::Ptr visit(const GYearType *,
107 const SourceLocationReflection *const r) const;
108 virtual AtomicTypeVisitorResult::Ptr visit(const HexBinaryType *,
109 const SourceLocationReflection *const r) const;
110 virtual AtomicTypeVisitorResult::Ptr visit(const IntegerType *,
111 const SourceLocationReflection *const r) const;
112 virtual AtomicTypeVisitorResult::Ptr visit(const NOTATIONType *,
113 const SourceLocationReflection *const r) const;
114 virtual AtomicTypeVisitorResult::Ptr visit(const QNameType *,
115 const SourceLocationReflection *const r) const;
116 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
117 const SourceLocationReflection *const r) const;
118 virtual AtomicTypeVisitorResult::Ptr visit(const SchemaTimeType *,
119 const SourceLocationReflection *const r) const;
120 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
121 const SourceLocationReflection *const r) const;
122 virtual AtomicTypeVisitorResult::Ptr visit(const YearMonthDurationType *,
123 const SourceLocationReflection *const r) const;
127 * @author Frans Englich <frans.englich@nokia.com>
129 class ToUntypedAtomicCasterLocator : public AtomicCasterLocator
132 using AtomicCasterLocator::visit;
133 virtual AtomicTypeVisitorResult::Ptr visit(const AnyURIType *,
134 const SourceLocationReflection *const r) const;
135 virtual AtomicTypeVisitorResult::Ptr visit(const Base64BinaryType *,
136 const SourceLocationReflection *const r) const;
137 virtual AtomicTypeVisitorResult::Ptr visit(const BooleanType *,
138 const SourceLocationReflection *const r) const;
139 virtual AtomicTypeVisitorResult::Ptr visit(const DateTimeType *,
140 const SourceLocationReflection *const r) const;
141 virtual AtomicTypeVisitorResult::Ptr visit(const DateType *,
142 const SourceLocationReflection *const r) const;
143 virtual AtomicTypeVisitorResult::Ptr visit(const DayTimeDurationType *,
144 const SourceLocationReflection *const r) const;
145 virtual AtomicTypeVisitorResult::Ptr visit(const DecimalType *,
146 const SourceLocationReflection *const r) const;
147 virtual AtomicTypeVisitorResult::Ptr visit(const DoubleType *,
148 const SourceLocationReflection *const r) const;
149 virtual AtomicTypeVisitorResult::Ptr visit(const DurationType *,
150 const SourceLocationReflection *const r) const;
151 virtual AtomicTypeVisitorResult::Ptr visit(const FloatType *,
152 const SourceLocationReflection *const r) const;
153 virtual AtomicTypeVisitorResult::Ptr visit(const GDayType *,
154 const SourceLocationReflection *const r) const;
155 virtual AtomicTypeVisitorResult::Ptr visit(const GMonthDayType *,
156 const SourceLocationReflection *const r) const;
157 virtual AtomicTypeVisitorResult::Ptr visit(const GMonthType *,
158 const SourceLocationReflection *const r) const;
159 virtual AtomicTypeVisitorResult::Ptr visit(const GYearMonthType *,
160 const SourceLocationReflection *const r) const;
161 virtual AtomicTypeVisitorResult::Ptr visit(const GYearType *,
162 const SourceLocationReflection *const r) const;
163 virtual AtomicTypeVisitorResult::Ptr visit(const HexBinaryType *,
164 const SourceLocationReflection *const r) const;
165 virtual AtomicTypeVisitorResult::Ptr visit(const IntegerType *,
166 const SourceLocationReflection *const r) const;
167 virtual AtomicTypeVisitorResult::Ptr visit(const NOTATIONType *,
168 const SourceLocationReflection *const r) const;
169 virtual AtomicTypeVisitorResult::Ptr visit(const QNameType *,
170 const SourceLocationReflection *const r) const;
171 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
172 const SourceLocationReflection *const r) const;
173 virtual AtomicTypeVisitorResult::Ptr visit(const SchemaTimeType *,
174 const SourceLocationReflection *const r) const;
175 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
176 const SourceLocationReflection *const r) const;
177 virtual AtomicTypeVisitorResult::Ptr visit(const YearMonthDurationType *,
178 const SourceLocationReflection *const r) const;
182 * @author Frans Englich <frans.englich@nokia.com>
184 class ToAnyURICasterLocator : public AtomicCasterLocator
187 using AtomicCasterLocator::visit;
188 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
189 const SourceLocationReflection *const r) const;
190 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
191 const SourceLocationReflection *const r) const;
192 virtual AtomicTypeVisitorResult::Ptr visit(const AnyURIType *,
193 const SourceLocationReflection *const r) const;
197 * @author Frans Englich <frans.englich@nokia.com>
199 class ToBooleanCasterLocator : public AtomicCasterLocator
202 using AtomicCasterLocator::visit;
203 virtual AtomicTypeVisitorResult::Ptr visit(const BooleanType *,
204 const SourceLocationReflection *const r) const;
205 virtual AtomicTypeVisitorResult::Ptr visit(const DecimalType *,
206 const SourceLocationReflection *const r) const;
207 virtual AtomicTypeVisitorResult::Ptr visit(const DoubleType *,
208 const SourceLocationReflection *const r) const;
209 virtual AtomicTypeVisitorResult::Ptr visit(const FloatType *,
210 const SourceLocationReflection *const r) const;
211 virtual AtomicTypeVisitorResult::Ptr visit(const IntegerType *,
212 const SourceLocationReflection *const r) const;
213 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
214 const SourceLocationReflection *const r) const;
215 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
216 const SourceLocationReflection *const r) const;
220 * @author Frans Englich <frans.englich@nokia.com>
222 class ToDoubleCasterLocator : public AtomicCasterLocator
225 using AtomicCasterLocator::visit;
226 virtual AtomicTypeVisitorResult::Ptr visit(const BooleanType *,
227 const SourceLocationReflection *const r) const;
228 virtual AtomicTypeVisitorResult::Ptr visit(const DoubleType *,
229 const SourceLocationReflection *const r) const;
230 virtual AtomicTypeVisitorResult::Ptr visit(const DecimalType *,
231 const SourceLocationReflection *const r) const;
232 virtual AtomicTypeVisitorResult::Ptr visit(const FloatType *,
233 const SourceLocationReflection *const r) const;
234 virtual AtomicTypeVisitorResult::Ptr visit(const IntegerType *,
235 const SourceLocationReflection *const r) const;
236 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
237 const SourceLocationReflection *const r) const;
238 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
239 const SourceLocationReflection *const r) const;
243 * @author Frans Englich <frans.englich@nokia.com>
245 class ToFloatCasterLocator : public AtomicCasterLocator
248 using AtomicCasterLocator::visit;
249 virtual AtomicTypeVisitorResult::Ptr visit(const BooleanType *,
250 const SourceLocationReflection *const r) const;
251 virtual AtomicTypeVisitorResult::Ptr visit(const DecimalType *,
252 const SourceLocationReflection *const r) const;
253 virtual AtomicTypeVisitorResult::Ptr visit(const DoubleType *,
254 const SourceLocationReflection *const r) const;
255 virtual AtomicTypeVisitorResult::Ptr visit(const FloatType *,
256 const SourceLocationReflection *const r) const;
257 virtual AtomicTypeVisitorResult::Ptr visit(const IntegerType *,
258 const SourceLocationReflection *const r) const;
259 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
260 const SourceLocationReflection *const r) const;
261 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
262 const SourceLocationReflection *const r) const;
266 * @author Frans Englich <frans.englich@nokia.com>
268 class ToDecimalCasterLocator : public AtomicCasterLocator
271 using AtomicCasterLocator::visit;
272 virtual AtomicTypeVisitorResult::Ptr visit(const BooleanType *,
273 const SourceLocationReflection *const r) const;
274 virtual AtomicTypeVisitorResult::Ptr visit(const DecimalType *,
275 const SourceLocationReflection *const r) const;
276 virtual AtomicTypeVisitorResult::Ptr visit(const DoubleType *,
277 const SourceLocationReflection *const r) const;
278 virtual AtomicTypeVisitorResult::Ptr visit(const FloatType *,
279 const SourceLocationReflection *const r) const;
280 virtual AtomicTypeVisitorResult::Ptr visit(const IntegerType *,
281 const SourceLocationReflection *const r) const;
282 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
283 const SourceLocationReflection *const r) const;
284 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
285 const SourceLocationReflection *const r) const;
289 * @author Frans Englich <frans.englich@nokia.com>
291 class ToIntegerCasterLocator : public AtomicCasterLocator
294 using AtomicCasterLocator::visit;
295 virtual AtomicTypeVisitorResult::Ptr visit(const BooleanType *,
296 const SourceLocationReflection *const r) const;
297 virtual AtomicTypeVisitorResult::Ptr visit(const DecimalType *,
298 const SourceLocationReflection *const r) const;
299 virtual AtomicTypeVisitorResult::Ptr visit(const DoubleType *,
300 const SourceLocationReflection *const r) const;
301 virtual AtomicTypeVisitorResult::Ptr visit(const FloatType *,
302 const SourceLocationReflection *const r) const;
303 virtual AtomicTypeVisitorResult::Ptr visit(const IntegerType *,
304 const SourceLocationReflection *const r) const;
305 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
306 const SourceLocationReflection *const r) const;
307 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
308 const SourceLocationReflection *const r) const;
312 * @author Frans Englich <frans.englich@nokia.com>
314 class ToBase64BinaryCasterLocator : public AtomicCasterLocator
317 using AtomicCasterLocator::visit;
318 virtual AtomicTypeVisitorResult::Ptr visit(const Base64BinaryType *,
319 const SourceLocationReflection *const r) const;
320 virtual AtomicTypeVisitorResult::Ptr visit(const HexBinaryType *,
321 const SourceLocationReflection *const r) const;
322 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
323 const SourceLocationReflection *const r) const;
324 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
325 const SourceLocationReflection *const r) const;
329 * @author Frans Englich <frans.englich@nokia.com>
331 class ToHexBinaryCasterLocator : public AtomicCasterLocator
334 using AtomicCasterLocator::visit;
335 virtual AtomicTypeVisitorResult::Ptr visit(const Base64BinaryType *,
336 const SourceLocationReflection *const r) const;
337 virtual AtomicTypeVisitorResult::Ptr visit(const HexBinaryType *,
338 const SourceLocationReflection *const r) const;
339 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
340 const SourceLocationReflection *const r) const;
341 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
342 const SourceLocationReflection *const r) const;
346 * @author Frans Englich <frans.englich@nokia.com>
348 class ToQNameCasterLocator : public AtomicCasterLocator
351 using AtomicCasterLocator::visit;
352 virtual AtomicTypeVisitorResult::Ptr visit(const QNameType *,
353 const SourceLocationReflection *const r) const;
354 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
355 const SourceLocationReflection *const r) const;
359 * @author Frans Englich <frans.englich@nokia.com>
361 class ToGYearCasterLocator : public AtomicCasterLocator
364 using AtomicCasterLocator::visit;
365 virtual AtomicTypeVisitorResult::Ptr visit(const DateTimeType *,
366 const SourceLocationReflection *const r) const;
367 virtual AtomicTypeVisitorResult::Ptr visit(const DateType *,
368 const SourceLocationReflection *const r) const;
369 virtual AtomicTypeVisitorResult::Ptr visit(const GYearType *,
370 const SourceLocationReflection *const r) const;
371 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
372 const SourceLocationReflection *const r) const;
373 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
374 const SourceLocationReflection *const r) const;
378 * @author Frans Englich <frans.englich@nokia.com>
380 class ToGDayCasterLocator : public AtomicCasterLocator
383 using AtomicCasterLocator::visit;
384 virtual AtomicTypeVisitorResult::Ptr visit(const DateTimeType *,
385 const SourceLocationReflection *const r) const;
386 virtual AtomicTypeVisitorResult::Ptr visit(const DateType *,
387 const SourceLocationReflection *const r) const;
388 virtual AtomicTypeVisitorResult::Ptr visit(const GDayType *,
389 const SourceLocationReflection *const r) const;
390 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
391 const SourceLocationReflection *const r) const;
392 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
393 const SourceLocationReflection *const r) const;
397 * @author Frans Englich <frans.englich@nokia.com>
399 class ToGMonthCasterLocator : public AtomicCasterLocator
402 using AtomicCasterLocator::visit;
403 virtual AtomicTypeVisitorResult::Ptr visit(const DateTimeType *,
404 const SourceLocationReflection *const r) const;
405 virtual AtomicTypeVisitorResult::Ptr visit(const DateType *,
406 const SourceLocationReflection *const r) const;
407 virtual AtomicTypeVisitorResult::Ptr visit(const GMonthType *,
408 const SourceLocationReflection *const r) const;
409 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
410 const SourceLocationReflection *const r) const;
411 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
412 const SourceLocationReflection *const r) const;
416 * @author Frans Englich <frans.englich@nokia.com>
418 class ToGYearMonthCasterLocator : public AtomicCasterLocator
421 using AtomicCasterLocator::visit;
422 virtual AtomicTypeVisitorResult::Ptr visit(const DateTimeType *,
423 const SourceLocationReflection *const r) const;
424 virtual AtomicTypeVisitorResult::Ptr visit(const DateType *,
425 const SourceLocationReflection *const r) const;
426 virtual AtomicTypeVisitorResult::Ptr visit(const GYearMonthType *,
427 const SourceLocationReflection *const r) const;
428 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
429 const SourceLocationReflection *const r) const;
430 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
431 const SourceLocationReflection *const r) const;
435 * @author Frans Englich <frans.englich@nokia.com>
437 class ToGMonthDayCasterLocator : public AtomicCasterLocator
440 using AtomicCasterLocator::visit;
441 virtual AtomicTypeVisitorResult::Ptr visit(const DateTimeType *,
442 const SourceLocationReflection *const r) const;
443 virtual AtomicTypeVisitorResult::Ptr visit(const DateType *,
444 const SourceLocationReflection *const r) const;
445 virtual AtomicTypeVisitorResult::Ptr visit(const GMonthDayType *,
446 const SourceLocationReflection *const r) const;
447 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
448 const SourceLocationReflection *const r) const;
449 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
450 const SourceLocationReflection *const r) const;
454 * @author Frans Englich <frans.englich@nokia.com>
456 class ToDateTimeCasterLocator : public AtomicCasterLocator
459 using AtomicCasterLocator::visit;
460 virtual AtomicTypeVisitorResult::Ptr visit(const DateTimeType *,
461 const SourceLocationReflection *const r) const;
462 virtual AtomicTypeVisitorResult::Ptr visit(const DateType *,
463 const SourceLocationReflection *const r) const;
464 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
465 const SourceLocationReflection *const r) const;
466 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
467 const SourceLocationReflection *const r) const;
471 * @author Frans Englich <frans.englich@nokia.com>
473 class ToDateCasterLocator : public AtomicCasterLocator
476 using AtomicCasterLocator::visit;
477 virtual AtomicTypeVisitorResult::Ptr visit(const DateTimeType *,
478 const SourceLocationReflection *const r) const;
479 virtual AtomicTypeVisitorResult::Ptr visit(const DateType *,
480 const SourceLocationReflection *const r) const;
481 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
482 const SourceLocationReflection *const r) const;
483 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
484 const SourceLocationReflection *const r) const;
488 * @author Frans Englich <frans.englich@nokia.com>
490 class ToSchemaTimeCasterLocator : public AtomicCasterLocator
493 using AtomicCasterLocator::visit;
494 virtual AtomicTypeVisitorResult::Ptr visit(const DateTimeType *,
495 const SourceLocationReflection *const r) const;
496 virtual AtomicTypeVisitorResult::Ptr visit(const SchemaTimeType *,
497 const SourceLocationReflection *const r) const;
498 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
499 const SourceLocationReflection *const r) const;
500 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
501 const SourceLocationReflection *const r) const;
505 * @author Frans Englich <frans.englich@nokia.com>
507 class ToDurationCasterLocator : public AtomicCasterLocator
510 using AtomicCasterLocator::visit;
511 virtual AtomicTypeVisitorResult::Ptr visit(const DayTimeDurationType *,
512 const SourceLocationReflection *const r) const;
513 virtual AtomicTypeVisitorResult::Ptr visit(const DurationType *,
514 const SourceLocationReflection *const r) const;
515 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
516 const SourceLocationReflection *const r) const;
517 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
518 const SourceLocationReflection *const r) const;
519 virtual AtomicTypeVisitorResult::Ptr visit(const YearMonthDurationType *,
520 const SourceLocationReflection *const r) const;
524 * @author Frans Englich <frans.englich@nokia.com>
526 class ToDayTimeDurationCasterLocator : public AtomicCasterLocator
529 using AtomicCasterLocator::visit;
530 virtual AtomicTypeVisitorResult::Ptr visit(const DayTimeDurationType *,
531 const SourceLocationReflection *const r) const;
532 virtual AtomicTypeVisitorResult::Ptr visit(const DurationType *,
533 const SourceLocationReflection *const r) const;
534 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
535 const SourceLocationReflection *const r) const;
536 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
537 const SourceLocationReflection *const r) const;
538 virtual AtomicTypeVisitorResult::Ptr visit(const YearMonthDurationType *,
539 const SourceLocationReflection *const r) const;
543 * @author Frans Englich <frans.englich@nokia.com>
545 class ToYearMonthDurationCasterLocator : public AtomicCasterLocator
548 using AtomicCasterLocator::visit;
549 virtual AtomicTypeVisitorResult::Ptr visit(const DayTimeDurationType *,
550 const SourceLocationReflection *const r) const;
551 virtual AtomicTypeVisitorResult::Ptr visit(const DurationType *,
552 const SourceLocationReflection *const r) const;
553 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
554 const SourceLocationReflection *const r) const;
555 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
556 const SourceLocationReflection *const r) const;
557 virtual AtomicTypeVisitorResult::Ptr visit(const YearMonthDurationType *,
558 const SourceLocationReflection *const r) const;
562 * @author Frans Englich <frans.englich@nokia.com>
564 template<TypeOfDerivedInteger type>
565 class ToDerivedIntegerCasterLocator : public ToIntegerCasterLocator
568 using ToIntegerCasterLocator::visit;
570 virtual AtomicTypeVisitorResult::Ptr visit(const BooleanType *,
571 const SourceLocationReflection *const r) const
574 return AtomicTypeVisitorResult::Ptr(new BooleanToDerivedIntegerCaster<type>());
577 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
578 const SourceLocationReflection *const r) const
581 return AtomicTypeVisitorResult::Ptr(new StringToDerivedIntegerCaster<type>());
584 virtual AtomicTypeVisitorResult::Ptr visit(const AnyURIType *,
585 const SourceLocationReflection *const r) const
588 return AtomicTypeVisitorResult::Ptr(new StringToDerivedIntegerCaster<type>());
591 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
592 const SourceLocationReflection *const r) const
595 return AtomicTypeVisitorResult::Ptr(new StringToDerivedIntegerCaster<type>());
598 virtual AtomicTypeVisitorResult::Ptr visit(const IntegerType *,
599 const SourceLocationReflection *const r) const
602 return AtomicTypeVisitorResult::Ptr(new NumericToDerivedIntegerCaster<type>());
605 virtual AtomicTypeVisitorResult::Ptr visit(const DerivedIntegerType<TypeByte> *,
606 const SourceLocationReflection *const r) const
609 return AtomicTypeVisitorResult::Ptr(new NumericToDerivedIntegerCaster<type>());
612 virtual AtomicTypeVisitorResult::Ptr visit(const DerivedIntegerType<TypeInt> *,
613 const SourceLocationReflection *const r) const
616 return AtomicTypeVisitorResult::Ptr(new NumericToDerivedIntegerCaster<type>());
619 virtual AtomicTypeVisitorResult::Ptr visit(const DerivedIntegerType<TypeLong> *,
620 const SourceLocationReflection *const r) const
623 return AtomicTypeVisitorResult::Ptr(new NumericToDerivedIntegerCaster<type>());
626 virtual AtomicTypeVisitorResult::Ptr visit(const DerivedIntegerType<TypeNegativeInteger> *,
627 const SourceLocationReflection *const r) const
630 return AtomicTypeVisitorResult::Ptr(new NumericToDerivedIntegerCaster<type>());
633 virtual AtomicTypeVisitorResult::Ptr visit(const DerivedIntegerType<TypeNonNegativeInteger> *,
634 const SourceLocationReflection *const r) const
637 return AtomicTypeVisitorResult::Ptr(new NumericToDerivedIntegerCaster<type>());
640 virtual AtomicTypeVisitorResult::Ptr visit(const DerivedIntegerType<TypeNonPositiveInteger> *,
641 const SourceLocationReflection *const r) const
644 return AtomicTypeVisitorResult::Ptr(new NumericToDerivedIntegerCaster<type>());
647 virtual AtomicTypeVisitorResult::Ptr visit(const DerivedIntegerType<TypePositiveInteger> *,
648 const SourceLocationReflection *const r) const
651 return AtomicTypeVisitorResult::Ptr(new NumericToDerivedIntegerCaster<type>());
654 virtual AtomicTypeVisitorResult::Ptr visit(const DerivedIntegerType<TypeShort> *,
655 const SourceLocationReflection *const r) const
658 return AtomicTypeVisitorResult::Ptr(new NumericToDerivedIntegerCaster<type>());
661 virtual AtomicTypeVisitorResult::Ptr visit(const DerivedIntegerType<TypeUnsignedByte> *,
662 const SourceLocationReflection *const r) const
665 return AtomicTypeVisitorResult::Ptr(new NumericToDerivedIntegerCaster<type>());
668 virtual AtomicTypeVisitorResult::Ptr visit(const DerivedIntegerType<TypeUnsignedInt> *,
669 const SourceLocationReflection *const r) const
672 return AtomicTypeVisitorResult::Ptr(new NumericToDerivedIntegerCaster<type>());
675 virtual AtomicTypeVisitorResult::Ptr visit(const DerivedIntegerType<TypeUnsignedLong> *,
676 const SourceLocationReflection *const r) const
679 return AtomicTypeVisitorResult::Ptr(new NumericToDerivedIntegerCaster<type>());
682 virtual AtomicTypeVisitorResult::Ptr visit(const DerivedIntegerType<TypeUnsignedShort> *,
683 const SourceLocationReflection *const r) const
686 return AtomicTypeVisitorResult::Ptr(new NumericToDerivedIntegerCaster<type>());
689 virtual AtomicTypeVisitorResult::Ptr visit(const DoubleType *,
690 const SourceLocationReflection *const r) const
693 return AtomicTypeVisitorResult::Ptr(new NumericToDerivedIntegerCaster<type>());
696 virtual AtomicTypeVisitorResult::Ptr visit(const FloatType *,
697 const SourceLocationReflection *const r) const
700 return AtomicTypeVisitorResult::Ptr(new NumericToDerivedIntegerCaster<type>());
705 * @author Frans Englich <frans.englich@nokia.com>
707 template<TypeOfDerivedString type>
708 class ToDerivedStringCasterLocator : public ToStringCasterLocator
711 using ToStringCasterLocator::visit;
713 virtual AtomicTypeVisitorResult::Ptr visit(const BooleanType *,
714 const SourceLocationReflection *const r) const
717 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
720 virtual AtomicTypeVisitorResult::Ptr visit(const StringType *,
721 const SourceLocationReflection *const r) const
724 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
727 virtual AtomicTypeVisitorResult::Ptr visit(const AnyURIType *,
728 const SourceLocationReflection *const r) const
731 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
734 virtual AtomicTypeVisitorResult::Ptr visit(const UntypedAtomicType *,
735 const SourceLocationReflection *const r) const
738 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
741 // TODO TypeString not handled
742 virtual AtomicTypeVisitorResult::Ptr visit(const DerivedStringType<TypeNormalizedString> *,
743 const SourceLocationReflection *const r) const
746 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
749 virtual AtomicTypeVisitorResult::Ptr visit(const DerivedStringType<TypeToken> *,
750 const SourceLocationReflection *const r) const
753 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
756 virtual AtomicTypeVisitorResult::Ptr visit(const DerivedStringType<TypeLanguage> *,
757 const SourceLocationReflection *const r) const
760 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
763 virtual AtomicTypeVisitorResult::Ptr visit(const DerivedStringType<TypeNMTOKEN> *,
764 const SourceLocationReflection *const r) const
767 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
770 virtual AtomicTypeVisitorResult::Ptr visit(const DerivedStringType<TypeName> *,
771 const SourceLocationReflection *const r) const
774 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
777 virtual AtomicTypeVisitorResult::Ptr visit(const DerivedStringType<TypeNCName> *,
778 const SourceLocationReflection *const r) const
781 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
784 virtual AtomicTypeVisitorResult::Ptr visit(const DerivedStringType<TypeID> *,
785 const SourceLocationReflection *const r) const
788 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
791 virtual AtomicTypeVisitorResult::Ptr visit(const DerivedStringType<TypeIDREF> *,
792 const SourceLocationReflection *const r) const
795 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
798 virtual AtomicTypeVisitorResult::Ptr visit(const DerivedStringType<TypeENTITY> *,
799 const SourceLocationReflection *const r) const
802 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
805 virtual AtomicTypeVisitorResult::Ptr visit(const DateTimeType *,
806 const SourceLocationReflection *const r) const
809 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
812 virtual AtomicTypeVisitorResult::Ptr visit(const DateType *,
813 const SourceLocationReflection *const r) const
816 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
819 virtual AtomicTypeVisitorResult::Ptr visit(const SchemaTimeType *,
820 const SourceLocationReflection *const r) const
823 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
826 virtual AtomicTypeVisitorResult::Ptr visit(const FloatType *,
827 const SourceLocationReflection *const r) const
830 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
833 virtual AtomicTypeVisitorResult::Ptr visit(const DoubleType *,
834 const SourceLocationReflection *const r) const
837 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
840 virtual AtomicTypeVisitorResult::Ptr visit(const DecimalType *,
841 const SourceLocationReflection *const r) const
844 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
847 virtual AtomicTypeVisitorResult::Ptr visit(const IntegerType *,
848 const SourceLocationReflection *const r) const
851 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
854 virtual AtomicTypeVisitorResult::Ptr visit(const DurationType *,
855 const SourceLocationReflection *const r) const
858 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
861 virtual AtomicTypeVisitorResult::Ptr visit(const GYearMonthType *,
862 const SourceLocationReflection *const r) const
865 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
868 virtual AtomicTypeVisitorResult::Ptr visit(const GYearType *,
869 const SourceLocationReflection *const r) const
872 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
875 virtual AtomicTypeVisitorResult::Ptr visit(const GMonthDayType *,
876 const SourceLocationReflection *const r) const
879 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
882 virtual AtomicTypeVisitorResult::Ptr visit(const GDayType *,
883 const SourceLocationReflection *const r) const
886 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
889 virtual AtomicTypeVisitorResult::Ptr visit(const GMonthType *,
890 const SourceLocationReflection *const r) const
893 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());
896 virtual AtomicTypeVisitorResult::Ptr visit(const QNameType *,
897 const SourceLocationReflection *const r) const
900 return AtomicTypeVisitorResult::Ptr(new AnyToDerivedStringCaster<type>());