1 | /**************************************************************************** |
2 | ** |
3 | ** Copyright (C) 2016 The Qt Company Ltd. |
4 | ** Contact: https://www.qt.io/licensing/ |
5 | ** |
6 | ** This file is part of the QtXmlPatterns module of the Qt Toolkit. |
7 | ** |
8 | ** $QT_BEGIN_LICENSE:LGPL$ |
9 | ** Commercial License Usage |
10 | ** Licensees holding valid commercial Qt licenses may use this file in |
11 | ** accordance with the commercial license agreement provided with the |
12 | ** Software or, alternatively, in accordance with the terms contained in |
13 | ** a written agreement between you and The Qt Company. For licensing terms |
14 | ** and conditions see https://www.qt.io/terms-conditions. For further |
15 | ** information use the contact form at https://www.qt.io/contact-us. |
16 | ** |
17 | ** GNU Lesser General Public License Usage |
18 | ** Alternatively, this file may be used under the terms of the GNU Lesser |
19 | ** General Public License version 3 as published by the Free Software |
20 | ** Foundation and appearing in the file LICENSE.LGPL3 included in the |
21 | ** packaging of this file. Please review the following information to |
22 | ** ensure the GNU Lesser General Public License version 3 requirements |
23 | ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. |
24 | ** |
25 | ** GNU General Public License Usage |
26 | ** Alternatively, this file may be used under the terms of the GNU |
27 | ** General Public License version 2.0 or (at your option) the GNU General |
28 | ** Public license version 3 or any later version approved by the KDE Free |
29 | ** Qt Foundation. The licenses are as published by the Free Software |
30 | ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 |
31 | ** included in the packaging of this file. Please review the following |
32 | ** information to ensure the GNU General Public License requirements will |
33 | ** be met: https://www.gnu.org/licenses/gpl-2.0.html and |
34 | ** https://www.gnu.org/licenses/gpl-3.0.html. |
35 | ** |
36 | ** $QT_END_LICENSE$ |
37 | ** |
38 | ****************************************************************************/ |
39 | |
40 | #include "qabstractfloatcasters_p.h" |
41 | |
42 | #include "qatomiccasterlocators_p.h" |
43 | |
44 | QT_BEGIN_NAMESPACE |
45 | |
46 | using namespace QPatternist; |
47 | |
48 | #define impl(owner, mather, type) \ |
49 | AtomicTypeVisitorResult::Ptr owner::visit(const type *, \ |
50 | const SourceLocationReflection *const) const \ |
51 | { \ |
52 | return AtomicTypeVisitorResult::Ptr(new mather()); \ |
53 | } |
54 | |
55 | #define implSelf(owner) impl(To##owner##CasterLocator, SelfToSelfCaster, owner##Type) |
56 | |
57 | /* xs:string */ |
58 | implSelf(String) |
59 | impl(ToStringCasterLocator, ToStringCaster<TypeString>, AnyURIType) |
60 | impl(ToStringCasterLocator, ToStringCaster<TypeString>, Base64BinaryType) |
61 | impl(ToStringCasterLocator, ToStringCaster<TypeString>, BooleanType) |
62 | impl(ToStringCasterLocator, ToStringCaster<TypeString>, DateTimeType) |
63 | impl(ToStringCasterLocator, ToStringCaster<TypeString>, DateType) |
64 | impl(ToStringCasterLocator, ToStringCaster<TypeString>, DayTimeDurationType) |
65 | impl(ToStringCasterLocator, ToStringCaster<TypeString>, DecimalType) |
66 | impl(ToStringCasterLocator, ToStringCaster<TypeString>, DoubleType) |
67 | impl(ToStringCasterLocator, ToStringCaster<TypeString>, DurationType) |
68 | impl(ToStringCasterLocator, ToStringCaster<TypeString>, FloatType) |
69 | impl(ToStringCasterLocator, ToStringCaster<TypeString>, GDayType) |
70 | impl(ToStringCasterLocator, ToStringCaster<TypeString>, GMonthDayType) |
71 | impl(ToStringCasterLocator, ToStringCaster<TypeString>, GMonthType) |
72 | impl(ToStringCasterLocator, ToStringCaster<TypeString>, GYearMonthType) |
73 | impl(ToStringCasterLocator, ToStringCaster<TypeString>, GYearType) |
74 | impl(ToStringCasterLocator, ToStringCaster<TypeString>, HexBinaryType) |
75 | impl(ToStringCasterLocator, ToStringCaster<TypeString>, IntegerType) |
76 | impl(ToStringCasterLocator, ToStringCaster<TypeString>, NOTATIONType) |
77 | impl(ToStringCasterLocator, ToStringCaster<TypeString>, QNameType) |
78 | impl(ToStringCasterLocator, ToStringCaster<TypeString>, SchemaTimeType) |
79 | impl(ToStringCasterLocator, ToStringCaster<TypeString>, UntypedAtomicType) |
80 | impl(ToStringCasterLocator, ToStringCaster<TypeString>, YearMonthDurationType) |
81 | |
82 | /* xs:untypedAtomic */ |
83 | implSelf(UntypedAtomic) |
84 | impl(ToUntypedAtomicCasterLocator, ToUntypedAtomicCaster, AnyURIType) |
85 | impl(ToUntypedAtomicCasterLocator, ToUntypedAtomicCaster, Base64BinaryType) |
86 | impl(ToUntypedAtomicCasterLocator, ToUntypedAtomicCaster, BooleanType) |
87 | impl(ToUntypedAtomicCasterLocator, ToUntypedAtomicCaster, DateTimeType) |
88 | impl(ToUntypedAtomicCasterLocator, ToUntypedAtomicCaster, DateType) |
89 | impl(ToUntypedAtomicCasterLocator, ToUntypedAtomicCaster, DayTimeDurationType) |
90 | impl(ToUntypedAtomicCasterLocator, ToUntypedAtomicCaster, DecimalType) |
91 | impl(ToUntypedAtomicCasterLocator, ToUntypedAtomicCaster, DoubleType) |
92 | impl(ToUntypedAtomicCasterLocator, ToUntypedAtomicCaster, DurationType) |
93 | impl(ToUntypedAtomicCasterLocator, ToUntypedAtomicCaster, FloatType) |
94 | impl(ToUntypedAtomicCasterLocator, ToUntypedAtomicCaster, GDayType) |
95 | impl(ToUntypedAtomicCasterLocator, ToUntypedAtomicCaster, GMonthDayType) |
96 | impl(ToUntypedAtomicCasterLocator, ToUntypedAtomicCaster, GMonthType) |
97 | impl(ToUntypedAtomicCasterLocator, ToUntypedAtomicCaster, GYearMonthType) |
98 | impl(ToUntypedAtomicCasterLocator, ToUntypedAtomicCaster, GYearType) |
99 | impl(ToUntypedAtomicCasterLocator, ToUntypedAtomicCaster, HexBinaryType) |
100 | impl(ToUntypedAtomicCasterLocator, ToUntypedAtomicCaster, IntegerType) |
101 | impl(ToUntypedAtomicCasterLocator, ToUntypedAtomicCaster, NOTATIONType) |
102 | impl(ToUntypedAtomicCasterLocator, ToUntypedAtomicCaster, QNameType) |
103 | impl(ToUntypedAtomicCasterLocator, ToUntypedAtomicCaster, StringType) |
104 | impl(ToUntypedAtomicCasterLocator, ToUntypedAtomicCaster, SchemaTimeType) |
105 | impl(ToUntypedAtomicCasterLocator, ToUntypedAtomicCaster, YearMonthDurationType) |
106 | |
107 | /* xs:anyURI */ |
108 | implSelf(AnyURI) |
109 | impl(ToAnyURICasterLocator, ToAnyURICaster, StringType) |
110 | impl(ToAnyURICasterLocator, ToAnyURICaster, UntypedAtomicType) |
111 | |
112 | /* xs:boolean */ |
113 | implSelf(Boolean) |
114 | impl(ToBooleanCasterLocator, NumericToBooleanCaster, DoubleType) |
115 | impl(ToBooleanCasterLocator, NumericToBooleanCaster, FloatType) |
116 | impl(ToBooleanCasterLocator, NumericToBooleanCaster, DecimalType) |
117 | impl(ToBooleanCasterLocator, NumericToBooleanCaster, IntegerType) |
118 | impl(ToBooleanCasterLocator, StringToBooleanCaster, StringType) |
119 | impl(ToBooleanCasterLocator, StringToBooleanCaster, UntypedAtomicType) |
120 | |
121 | /* xs:double */ |
122 | implSelf(Double) |
123 | impl(ToDoubleCasterLocator, BooleanToDoubleCaster, BooleanType) |
124 | impl(ToDoubleCasterLocator, NumericToDoubleCaster, FloatType) |
125 | impl(ToDoubleCasterLocator, NumericToDoubleCaster, DecimalType) |
126 | impl(ToDoubleCasterLocator, NumericToDoubleCaster, IntegerType) |
127 | impl(ToDoubleCasterLocator, StringToDoubleCaster, StringType) |
128 | impl(ToDoubleCasterLocator, StringToDoubleCaster, UntypedAtomicType) |
129 | |
130 | /* xs:float */ |
131 | implSelf(Float) |
132 | impl(ToFloatCasterLocator, BooleanToFloatCaster, BooleanType) |
133 | impl(ToFloatCasterLocator, NumericToFloatCaster, DoubleType) |
134 | impl(ToFloatCasterLocator, NumericToFloatCaster, DecimalType) |
135 | impl(ToFloatCasterLocator, NumericToFloatCaster, IntegerType) |
136 | impl(ToFloatCasterLocator, StringToFloatCaster, StringType) |
137 | impl(ToFloatCasterLocator, StringToFloatCaster, UntypedAtomicType) |
138 | |
139 | /* xs:decimal */ |
140 | implSelf(Decimal) |
141 | impl(ToDecimalCasterLocator, BooleanToDecimalCaster, BooleanType) |
142 | impl(ToDecimalCasterLocator, NumericToDecimalCaster<false>, DoubleType) |
143 | impl(ToDecimalCasterLocator, NumericToDecimalCaster<false>, FloatType) |
144 | impl(ToDecimalCasterLocator, NumericToDecimalCaster<false>, IntegerType) |
145 | impl(ToDecimalCasterLocator, StringToDecimalCaster, StringType) |
146 | impl(ToDecimalCasterLocator, StringToDecimalCaster, UntypedAtomicType) |
147 | |
148 | /* xs:integer */ |
149 | implSelf(Integer) |
150 | impl(ToIntegerCasterLocator, BooleanToIntegerCaster, BooleanType) |
151 | impl(ToIntegerCasterLocator, NumericToDecimalCaster<true>, DoubleType) |
152 | impl(ToIntegerCasterLocator, NumericToDecimalCaster<true>, FloatType) |
153 | impl(ToIntegerCasterLocator, NumericToDecimalCaster<true>, DecimalType) |
154 | impl(ToIntegerCasterLocator, StringToIntegerCaster, StringType) |
155 | impl(ToIntegerCasterLocator, StringToIntegerCaster, UntypedAtomicType) |
156 | |
157 | /* xs:base64binary */ |
158 | implSelf(Base64Binary) |
159 | impl(ToBase64BinaryCasterLocator, HexBinaryToBase64BinaryCaster, HexBinaryType) |
160 | impl(ToBase64BinaryCasterLocator, StringToBase64BinaryCaster, StringType) |
161 | impl(ToBase64BinaryCasterLocator, StringToBase64BinaryCaster, UntypedAtomicType) |
162 | |
163 | /* xs:hexBinary */ |
164 | implSelf(HexBinary) |
165 | impl(ToHexBinaryCasterLocator, Base64BinaryToHexBinaryCaster, Base64BinaryType) |
166 | impl(ToHexBinaryCasterLocator, StringToHexBinaryCaster, StringType) |
167 | impl(ToHexBinaryCasterLocator, StringToHexBinaryCaster, UntypedAtomicType) |
168 | |
169 | /* xs:QName */ |
170 | implSelf(QName) |
171 | impl(ToQNameCasterLocator, ToStringCaster<TypeString>, StringType) |
172 | |
173 | /* xs:gYear */ |
174 | implSelf(GYear) |
175 | impl(ToGYearCasterLocator, StringToGYearCaster, StringType) |
176 | impl(ToGYearCasterLocator, StringToGYearCaster, UntypedAtomicType) |
177 | impl(ToGYearCasterLocator, AbstractDateTimeToGYearCaster, DateType) |
178 | impl(ToGYearCasterLocator, AbstractDateTimeToGYearCaster, DateTimeType) |
179 | |
180 | /* xs:gDay */ |
181 | implSelf(GDay) |
182 | impl(ToGDayCasterLocator, StringToGDayCaster, StringType) |
183 | impl(ToGDayCasterLocator, StringToGDayCaster, UntypedAtomicType) |
184 | impl(ToGDayCasterLocator, AbstractDateTimeToGDayCaster, DateType) |
185 | impl(ToGDayCasterLocator, AbstractDateTimeToGDayCaster, DateTimeType) |
186 | |
187 | /* xs:gMonth */ |
188 | implSelf(GMonth) |
189 | impl(ToGMonthCasterLocator, StringToGMonthCaster, StringType) |
190 | impl(ToGMonthCasterLocator, StringToGMonthCaster, UntypedAtomicType) |
191 | impl(ToGMonthCasterLocator, AbstractDateTimeToGMonthCaster, DateType) |
192 | impl(ToGMonthCasterLocator, AbstractDateTimeToGMonthCaster, DateTimeType) |
193 | |
194 | /* xs:gYearMonth */ |
195 | implSelf(GYearMonth) |
196 | impl(ToGYearMonthCasterLocator, StringToGYearMonthCaster, StringType) |
197 | impl(ToGYearMonthCasterLocator, StringToGYearMonthCaster, UntypedAtomicType) |
198 | impl(ToGYearMonthCasterLocator, AbstractDateTimeToGYearMonthCaster, DateType) |
199 | impl(ToGYearMonthCasterLocator, AbstractDateTimeToGYearMonthCaster, DateTimeType) |
200 | |
201 | /* xs:gMonthDay */ |
202 | implSelf(GMonthDay) |
203 | impl(ToGMonthDayCasterLocator, StringToGMonthDayCaster, StringType) |
204 | impl(ToGMonthDayCasterLocator, StringToGMonthDayCaster, UntypedAtomicType) |
205 | impl(ToGMonthDayCasterLocator, AbstractDateTimeToGMonthDayCaster, DateType) |
206 | impl(ToGMonthDayCasterLocator, AbstractDateTimeToGMonthDayCaster, DateTimeType) |
207 | |
208 | /* xs:dateTime */ |
209 | implSelf(DateTime) |
210 | impl(ToDateTimeCasterLocator, StringToDateTimeCaster, StringType) |
211 | impl(ToDateTimeCasterLocator, AbstractDateTimeToDateTimeCaster, DateType) |
212 | impl(ToDateTimeCasterLocator, StringToDateTimeCaster, UntypedAtomicType) |
213 | |
214 | /* xs:time */ |
215 | implSelf(SchemaTime) |
216 | impl(ToSchemaTimeCasterLocator, StringToTimeCaster, StringType) |
217 | impl(ToSchemaTimeCasterLocator, AbstractDateTimeToTimeCaster, DateTimeType) |
218 | impl(ToSchemaTimeCasterLocator, StringToTimeCaster, UntypedAtomicType) |
219 | |
220 | /* xs:date */ |
221 | implSelf(Date) |
222 | impl(ToDateCasterLocator, StringToDateCaster, StringType) |
223 | impl(ToDateCasterLocator, AbstractDateTimeToDateCaster, DateTimeType) |
224 | impl(ToDateCasterLocator, StringToDateCaster, UntypedAtomicType) |
225 | |
226 | /* xs:duration */ |
227 | implSelf(Duration) |
228 | impl(ToDurationCasterLocator, AbstractDurationToDurationCaster, DayTimeDurationType) |
229 | impl(ToDurationCasterLocator, AbstractDurationToDurationCaster, YearMonthDurationType) |
230 | impl(ToDurationCasterLocator, StringToDurationCaster, StringType) |
231 | impl(ToDurationCasterLocator, StringToDurationCaster, UntypedAtomicType) |
232 | |
233 | /* xs:dayTimeDuration */ |
234 | implSelf(DayTimeDuration) |
235 | impl(ToDayTimeDurationCasterLocator, AbstractDurationToDayTimeDurationCaster, DurationType) |
236 | impl(ToDayTimeDurationCasterLocator, AbstractDurationToDayTimeDurationCaster, YearMonthDurationType) |
237 | impl(ToDayTimeDurationCasterLocator, StringToDayTimeDurationCaster, StringType) |
238 | impl(ToDayTimeDurationCasterLocator, StringToDayTimeDurationCaster, UntypedAtomicType) |
239 | |
240 | /* xs:yearMonthDuration */ |
241 | implSelf(YearMonthDuration) |
242 | impl(ToYearMonthDurationCasterLocator, AbstractDurationToYearMonthDurationCaster, DayTimeDurationType) |
243 | impl(ToYearMonthDurationCasterLocator, AbstractDurationToYearMonthDurationCaster, DurationType) |
244 | impl(ToYearMonthDurationCasterLocator, StringToYearMonthDurationCaster, StringType) |
245 | impl(ToYearMonthDurationCasterLocator, StringToYearMonthDurationCaster, UntypedAtomicType) |
246 | |
247 | #undef implSelf |
248 | #undef impl |
249 | |
250 | QT_END_NAMESPACE |
251 | |