1 /****************************************************************************
2 **
3 ** Copyright (C) 2015 The Qt Company Ltd.
4 ** Contact: http://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 http://www.qt.io/terms-conditions. For further
15 ** information use the contact form at http://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 2.1 or version 3 as published by the Free
20 ** Software Foundation and appearing in the file LICENSE.LGPLv21 and
21 ** LICENSE.LGPLv3 included in the packaging of this file. Please review the
22 ** following information to ensure the GNU Lesser General Public License
23 ** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
24 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
25 **
26 ** As a special exception, The Qt Company gives you certain additional
27 ** rights. These rights are described in The Qt Company LGPL Exception
28 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
29 **
30 ** GNU General Public License Usage
31 ** Alternatively, this file may be used under the terms of the GNU
32 ** General Public License version 3.0 as published by the Free Software
33 ** Foundation and appearing in the file LICENSE.GPL included in the
34 ** packaging of this file.  Please review the following information to
35 ** ensure the GNU General Public License version 3.0 requirements will be
36 ** met: http://www.gnu.org/copyleft/gpl.html.
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_CommonValues_H
53 #define Patternist_CommonValues_H
54 
55 #include "qdaytimeduration_p.h"
56 #include "qyearmonthduration_p.h"
57 #include "qemptyiterator_p.h"
58 
59 QT_BEGIN_HEADER
60 
61 QT_BEGIN_NAMESPACE
62 
63 namespace QPatternist
64 {
65 
66     /**
67      * @short A collection of common values.
68      *
69      * @author Frans Englich <frans.englich@nokia.com>
70      * @ingroup Patternist_xdm
71      * @todo Documentation is missing/incomplete
72      */
73     class CommonValues
74     {
75     public:
76         /**
77          * An empty, zero-length string.
78          *
79          * @note It is not @c null, but empty.
80          */
81         static const AtomicValue::Ptr EmptyString;
82 
83         /**
84          * The string "true", the lexical representation of
85          * @c xs:boolean's value @c true.
86          */
87         static const AtomicValue::Ptr TrueString;
88 
89         /**
90          * The string "false", the lexical representation of
91          * @c xs:boolean's value @c false.
92          */
93         static const AtomicValue::Ptr UntypedAtomicFalse;
94 
95         /**
96          * The string "true", the lexical representation of
97          * @c xs:boolean's value @c true.
98          */
99         static const AtomicValue::Ptr UntypedAtomicTrue;
100 
101         /**
102          * The string "false", the lexical representation of
103          * @c xs:boolean's value @c false.
104          */
105         static const AtomicValue::Ptr FalseString;
106 
107         /**
108          * @returns a Boolean instance carrying the boolean value @c true.
109          * Use this value instead of Boolean::fromValue() if you
110          * know what boolean value you need.
111          */
112         static const AtomicValue::Ptr BooleanTrue;
113 
114         /**
115          * @returns a Boolean instance carrying the boolean value @c true.
116          * Use this value instead of Boolean::fromValue() if you
117          * know what boolean value you need.
118          */
119         static const AtomicValue::Ptr BooleanFalse;
120 
121         /**
122          * Not-a-Numeric typed as @c xs:double.
123          */
124         static const AtomicValue::Ptr DoubleNaN;
125 
126         /**
127          * Not-a-Number typed as @c xs:float, <tt>xs:float("NaN")</tt>.
128          */
129         static const AtomicValue::Ptr FloatNaN;
130 
131         /**
132          * Zero(0) typed as @c xs:integer, <tt>xs:integer("0")</tt>.
133          */
134         static const Item IntegerZero;
135 
136         /**
137          * An empty, "", @c xs:anyURI.
138          */
139         static const AtomicValue::Ptr EmptyAnyURI;
140 
141         /**
142          * The empty sequence.
143          */
144         static const EmptyIterator<Item>::Ptr emptyIterator;
145 
146         /**
147          * <tt>xs:float("-INF")</tt>
148          */
149         static const AtomicValue::Ptr NegativeInfFloat;
150 
151         /**
152          * <tt>xs:float("INF")</tt>
153          */
154         static const AtomicValue::Ptr InfFloat;
155 
156         /**
157          * <tt>xs:double("-INF")</tt>
158          */
159         static const AtomicValue::Ptr NegativeInfDouble;
160 
161         /**
162          * <tt>xs:double("INF")</tt>
163          */
164         static const AtomicValue::Ptr InfDouble;
165 
166         /**
167          * <tt>xs:float("1")</tt>
168          */
169         static const AtomicValue::Ptr FloatOne;
170         /**
171          * <tt>xs:double("1")</tt>
172          */
173         static const AtomicValue::Ptr DoubleOne;
174         /**
175          * <tt>xs:decimal("1")</tt>
176          */
177         static const AtomicValue::Ptr DecimalOne;
178 
179         /**
180          * <tt>xs:integer("1")</tt>
181          */
182         static const Item IntegerOne;
183 
184         /**
185          * <tt>xs:integer("-1")</tt>
186          */
187         static const Item IntegerOneNegative;
188 
189         /**
190          * <tt>xs:double("0")</tt>
191          */
192         static const AtomicValue::Ptr DoubleZero;
193 
194         /**
195          * <tt>xs:float("0")</tt>
196          */
197         static const AtomicValue::Ptr FloatZero;
198         /**
199          * <tt>xs:integer("0")</tt>
200          */
201         static const AtomicValue::Ptr DecimalZero;
202 
203         /**
204          * The @c xs:dayTimeDuration value PT0S
205          */
206         static const DayTimeDuration::Ptr DayTimeDurationZero;
207 
208         /**
209          * The @c xs:yearMonthDuration value P0M
210          */
211         static const DayTimeDuration::Ptr YearMonthDurationZero;
212 
213     private:
214         /**
215          * The constructor is private because this class is not meant to be instantiated,
216          * but should only be used via its static const members.
217          */
218         inline CommonValues();
219 
220         Q_DISABLE_COPY(CommonValues)
221     };
222 }
223 
224 QT_END_NAMESPACE
225 
226 QT_END_HEADER
227 
228 #endif
229