qvalidator.cpp

Absolute File Name:/home/qt/qt5_coco/qt5/qtbase/src/gui/util/qvalidator.cpp
Switch to Source codePreprocessed file
LineSourceCount
1-
2-
3-
4-
5-
6class QValidatorPrivate : public QObjectPrivate{-
7 inline QValidator* q_func() { return static_cast<QValidator *>(q_ptr); } inline const QValidator* q_func() const { return static_cast<const QValidator *>(q_ptr); } friend class QValidator;-
8public:-
9 QValidatorPrivate() : QObjectPrivate()-
10 {-
11 }
never executed: end of block
0
12-
13 QLocale locale;-
14};-
15-
16-
17-
18-
19-
20-
21-
22QValidator::QValidator(QObject * parent)-
23 : QObject(*new QValidatorPrivate, parent)-
24{-
25}
never executed: end of block
0
26-
27-
28-
29-
30-
31-
32QValidator::~QValidator()-
33{-
34}-
35-
36-
37-
38-
39-
40-
41-
42QLocale QValidator::locale() const-
43{-
44 const QValidatorPrivate * const d = d_func();-
45 return
never executed: return d->locale;
d->locale;
never executed: return d->locale;
0
46}-
47void QValidator::setLocale(const QLocale &locale)-
48{-
49 QValidatorPrivate * const d = d_func();-
50 if (d->locale != locale
d->locale != localeDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
51 d->locale = locale;-
52 changed();-
53 }
never executed: end of block
0
54}
never executed: end of block
0
55void QValidator::fixup(QString &) const-
56{-
57}-
58QIntValidator::QIntValidator(QObject * parent)-
59 : QValidator(parent)-
60{-
61 b = (-2147483647 - 1);-
62 t = 2147483647;-
63}
never executed: end of block
0
64-
65-
66-
67-
68-
69-
70-
71QIntValidator::QIntValidator(int minimum, int maximum,-
72 QObject * parent)-
73 : QValidator(parent)-
74{-
75 b = minimum;-
76 t = maximum;-
77}
never executed: end of block
0
78-
79-
80-
81-
82-
83-
84QIntValidator::~QIntValidator()-
85{-
86-
87}-
88static int numDigits(qlonglong n)-
89{-
90 if (n == 0
n == 0Description
TRUEnever evaluated
FALSEnever evaluated
)
0
91 return
never executed: return 1;
1;
never executed: return 1;
0
92 return
never executed: return (int)std::log10(double(n)) + 1;
(int)std::log10(double(n)) + 1;
never executed: return (int)std::log10(double(n)) + 1;
0
93}-
94-
95static qlonglong pow10(int exp)-
96{-
97 qlonglong result = 1;-
98 for (int i = 0; i < exp
i < expDescription
TRUEnever evaluated
FALSEnever evaluated
; ++i)
0
99 result *= 10;
never executed: result *= 10;
0
100 return
never executed: return result;
result;
never executed: return result;
0
101}-
102-
103QValidator::State QIntValidator::validate(QString & input, int&) const-
104{-
105 QByteArray buff;-
106 if (!locale().d->m_data->validateChars(input, QLocaleData::IntegerMode, &buff,
!locale().d->m...roupSeparator)Description
TRUEnever evaluated
FALSEnever evaluated
0
107 -1, locale().numberOptions() & QLocale::RejectGroupSeparator)
!locale().d->m...roupSeparator)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
108 return
never executed: return Invalid;
Invalid;
never executed: return Invalid;
0
109 }-
110-
111 if (buff.isEmpty()
buff.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
112 return
never executed: return Intermediate;
Intermediate;
never executed: return Intermediate;
0
113-
114 if (b >= 0
b >= 0Description
TRUEnever evaluated
FALSEnever evaluated
&& buff.startsWith('-')
buff.startsWith('-')Description
TRUEnever evaluated
FALSEnever evaluated
)
0
115 return
never executed: return Invalid;
Invalid;
never executed: return Invalid;
0
116-
117 if (t < 0
t < 0Description
TRUEnever evaluated
FALSEnever evaluated
&& buff.startsWith('+')
buff.startsWith('+')Description
TRUEnever evaluated
FALSEnever evaluated
)
0
118 return
never executed: return Invalid;
Invalid;
never executed: return Invalid;
0
119-
120 if (buff.size() == 1
buff.size() == 1Description
TRUEnever evaluated
FALSEnever evaluated
&& (buff.at(0) == '+'
buff.at(0) == '+'Description
TRUEnever evaluated
FALSEnever evaluated
|| buff.at(0) == '-'
buff.at(0) == '-'Description
TRUEnever evaluated
FALSEnever evaluated
))
0
121 return
never executed: return Intermediate;
Intermediate;
never executed: return Intermediate;
0
122-
123 bool ok, overflow;-
124 qlonglong entered = QLocaleData::bytearrayToLongLong(buff.constData(), 10, &ok, &overflow);-
125 if (overflow
overflowDescription
TRUEnever evaluated
FALSEnever evaluated
|| !ok
!okDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
126 return
never executed: return Invalid;
Invalid;
never executed: return Invalid;
0
127-
128 if (entered >= b
entered >= bDescription
TRUEnever evaluated
FALSEnever evaluated
&& entered <= t
entered <= tDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
129 locale().toInt(input, &ok);-
130 return
never executed: return ok ? Acceptable : Intermediate;
ok
okDescription
TRUEnever evaluated
FALSEnever evaluated
? Acceptable : Intermediate;
never executed: return ok ? Acceptable : Intermediate;
0
131 }-
132-
133 if (entered >= 0
entered >= 0Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
134-
135-
136 return
never executed: return (entered > t && -entered < b) ? Invalid : Intermediate;
(entered > t
entered > tDescription
TRUEnever evaluated
FALSEnever evaluated
&& -
-entered < bDescription
TRUEnever evaluated
FALSEnever evaluated
entered < b
-entered < bDescription
TRUEnever evaluated
FALSEnever evaluated
) ? Invalid : Intermediate;
never executed: return (entered > t && -entered < b) ? Invalid : Intermediate;
0
137 } else {-
138 return
never executed: return (entered < b) ? Invalid : Intermediate;
(
(entered < b)Description
TRUEnever evaluated
FALSEnever evaluated
entered < b)
(entered < b)Description
TRUEnever evaluated
FALSEnever evaluated
? Invalid : Intermediate;
never executed: return (entered < b) ? Invalid : Intermediate;
0
139 }-
140}-
141-
142-
143void QIntValidator::fixup(QString &input) const-
144{-
145 QByteArray buff;-
146 if (!locale().d->m_data->validateChars(input, QLocaleData::IntegerMode, &buff,
!locale().d->m...roupSeparator)Description
TRUEnever evaluated
FALSEnever evaluated
0
147 -1, locale().numberOptions() & QLocale::RejectGroupSeparator)
!locale().d->m...roupSeparator)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
148 return;
never executed: return;
0
149 }-
150 bool ok, overflow;-
151 qlonglong entered = QLocaleData::bytearrayToLongLong(buff.constData(), 10, &ok, &overflow);-
152 if (ok
okDescription
TRUEnever evaluated
FALSEnever evaluated
&& !overflow
!overflowDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
153 input = locale().toString(entered);
never executed: input = locale().toString(entered);
0
154}
never executed: end of block
0
155void QIntValidator::setRange(int bottom, int top)-
156{-
157 bool rangeChanged = false;-
158 if (b != bottom
b != bottomDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
159 b = bottom;-
160 rangeChanged = true;-
161 bottomChanged(b);-
162 }
never executed: end of block
0
163-
164 if (t != top
t != topDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
165 t = top;-
166 rangeChanged = true;-
167 topChanged(t);-
168 }
never executed: end of block
0
169-
170 if (rangeChanged
rangeChangedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
171 changed();
never executed: changed();
0
172}
never executed: end of block
0
173void QIntValidator::setBottom(int bottom)-
174{-
175 setRange(bottom, top());-
176}
never executed: end of block
0
177void QIntValidator::setTop(int top)-
178{-
179 setRange(bottom(), top);-
180}
never executed: end of block
0
181-
182-
183-
184-
185QValidator::QValidator(QObjectPrivate &d, QObject *parent)-
186 : QObject(d, parent)-
187{-
188}
never executed: end of block
0
189-
190-
191-
192-
193QValidator::QValidator(QValidatorPrivate &d, QObject *parent)-
194 : QObject(d, parent)-
195{-
196}
never executed: end of block
0
197-
198-
199-
200class QDoubleValidatorPrivate : public QValidatorPrivate-
201{-
202 inline QDoubleValidator* q_func() { return static_cast<QDoubleValidator *>(q_ptr); } inline const QDoubleValidator* q_func() const { return static_cast<const QDoubleValidator *>(q_ptr); } friend class QDoubleValidator;-
203public:-
204 QDoubleValidatorPrivate()-
205 : QValidatorPrivate()-
206 , notation(QDoubleValidator::ScientificNotation)-
207 {-
208 }
never executed: end of block
0
209-
210 QDoubleValidator::Notation notation;-
211-
212 QValidator::State validateWithLocale(QString & input, QLocaleData::NumberMode numMode, const QLocale &locale) const;-
213};-
214QDoubleValidator::QDoubleValidator(QObject * parent)-
215 : QValidator(*new QDoubleValidatorPrivate , parent)-
216{-
217 b = -(__builtin_huge_val());-
218 t = (__builtin_huge_val());-
219 dec = 1000;-
220}
never executed: end of block
0
221QDoubleValidator::QDoubleValidator(double bottom, double top, int decimals,-
222 QObject * parent)-
223 : QValidator(*new QDoubleValidatorPrivate , parent)-
224{-
225 b = bottom;-
226 t = top;-
227 dec = decimals;-
228}
never executed: end of block
0
229-
230-
231-
232-
233-
234-
235QDoubleValidator::~QDoubleValidator()-
236{-
237}-
238QValidator::State QDoubleValidator::validate(QString & input, int &) const-
239{-
240 const QDoubleValidatorPrivate * const d = d_func();-
241-
242 QLocaleData::NumberMode numMode = QLocaleData::DoubleStandardMode;-
243 switch (d->notation) {-
244 case
never executed: case StandardNotation:
StandardNotation:
never executed: case StandardNotation:
0
245 numMode = QLocaleData::DoubleStandardMode;-
246 break;
never executed: break;
0
247 case
never executed: case ScientificNotation:
ScientificNotation:
never executed: case ScientificNotation:
0
248 numMode = QLocaleData::DoubleScientificMode;-
249 break;
never executed: break;
0
250 }-
251-
252 return
never executed: return d->validateWithLocale(input, numMode, locale());
d->validateWithLocale(input, numMode, locale());
never executed: return d->validateWithLocale(input, numMode, locale());
0
253}-
254-
255QValidator::State QDoubleValidatorPrivate::validateWithLocale(QString &input, QLocaleData::NumberMode numMode, const QLocale &locale) const-
256{-
257 const QDoubleValidator * const q = q_func();-
258 QByteArray buff;-
259 if (!locale.d->m_data->validateChars(input, numMode, &buff, q->dec,
!locale.d->m_d...roupSeparator)Description
TRUEnever evaluated
FALSEnever evaluated
0
260 locale.numberOptions() & QLocale::RejectGroupSeparator)
!locale.d->m_d...roupSeparator)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
261 return
never executed: return QValidator::Invalid;
QValidator::Invalid;
never executed: return QValidator::Invalid;
0
262 }-
263-
264 if (buff.isEmpty()
buff.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
265 return
never executed: return QValidator::Intermediate;
QValidator::Intermediate;
never executed: return QValidator::Intermediate;
0
266-
267 if (q->b >= 0
q->b >= 0Description
TRUEnever evaluated
FALSEnever evaluated
&& buff.startsWith('-')
buff.startsWith('-')Description
TRUEnever evaluated
FALSEnever evaluated
)
0
268 return
never executed: return QValidator::Invalid;
QValidator::Invalid;
never executed: return QValidator::Invalid;
0
269-
270 if (q->t < 0
q->t < 0Description
TRUEnever evaluated
FALSEnever evaluated
&& buff.startsWith('+')
buff.startsWith('+')Description
TRUEnever evaluated
FALSEnever evaluated
)
0
271 return
never executed: return QValidator::Invalid;
QValidator::Invalid;
never executed: return QValidator::Invalid;
0
272-
273 bool ok, overflow;-
274 double i = QLocaleData::bytearrayToDouble(buff.constData(), &ok, &overflow);-
275 if (overflow
overflowDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
276 return
never executed: return QValidator::Invalid;
QValidator::Invalid;
never executed: return QValidator::Invalid;
0
277 if (!ok
!okDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
278 return
never executed: return QValidator::Intermediate;
QValidator::Intermediate;
never executed: return QValidator::Intermediate;
0
279-
280 if (i >= q->b
i >= q->bDescription
TRUEnever evaluated
FALSEnever evaluated
&& i <= q->t
i <= q->tDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
281 return
never executed: return QValidator::Acceptable;
QValidator::Acceptable;
never executed: return QValidator::Acceptable;
0
282-
283 if (notation == QDoubleValidator::StandardNotation
notation == QD...andardNotationDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
284 double max = qMax(qAbs(q->b), qAbs(q->t));-
285 if (max < 9223372036854775807LL
max < 9223372036854775807LLDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
286 qlonglong n = pow10(numDigits(qlonglong(max))) - 1;-
287 if (qAbs(i) > n
qAbs(i) > nDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
288 return
never executed: return QValidator::Invalid;
QValidator::Invalid;
never executed: return QValidator::Invalid;
0
289 }
never executed: end of block
0
290 }
never executed: end of block
0
291-
292 return
never executed: return QValidator::Intermediate;
QValidator::Intermediate;
never executed: return QValidator::Intermediate;
0
293}-
294void QDoubleValidator::setRange(double minimum, double maximum, int decimals)-
295{-
296 bool rangeChanged = false;-
297 if (b != minimum
b != minimumDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
298 b = minimum;-
299 rangeChanged = true;-
300 bottomChanged(b);-
301 }
never executed: end of block
0
302-
303 if (t != maximum
t != maximumDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
304 t = maximum;-
305 rangeChanged = true;-
306 topChanged(t);-
307 }
never executed: end of block
0
308-
309 if (dec != decimals
dec != decimalsDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
310 dec = decimals;-
311 rangeChanged = true;-
312 decimalsChanged(dec);-
313 }
never executed: end of block
0
314 if (rangeChanged
rangeChangedDescription
TRUEnever evaluated
FALSEnever evaluated
)
0
315 changed();
never executed: changed();
0
316}
never executed: end of block
0
317void QDoubleValidator::setBottom(double bottom)-
318{-
319 setRange(bottom, top(), decimals());-
320}
never executed: end of block
0
321void QDoubleValidator::setTop(double top)-
322{-
323 setRange(bottom(), top, decimals());-
324}
never executed: end of block
0
325void QDoubleValidator::setDecimals(int decimals)-
326{-
327 setRange(bottom(), top(), decimals);-
328}
never executed: end of block
0
329void QDoubleValidator::setNotation(Notation newNotation)-
330{-
331 QDoubleValidatorPrivate * const d = d_func();-
332 if (d->notation != newNotation
d->notation != newNotationDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
333 d->notation = newNotation;-
334 notationChanged(d->notation);-
335 changed();-
336 }
never executed: end of block
0
337}
never executed: end of block
0
338-
339QDoubleValidator::Notation QDoubleValidator::notation() const-
340{-
341 const QDoubleValidatorPrivate * const d = d_func();-
342 return
never executed: return d->notation;
d->notation;
never executed: return d->notation;
0
343}-
344QRegExpValidator::QRegExpValidator(QObject *parent)-
345 : QValidator(parent), r(QString::fromLatin1(".*"))-
346{-
347}
never executed: end of block
0
348QRegExpValidator::QRegExpValidator(const QRegExp& rx, QObject *parent)-
349 : QValidator(parent), r(rx)-
350{-
351}
never executed: end of block
0
352-
353-
354-
355-
356-
357-
358QRegExpValidator::~QRegExpValidator()-
359{-
360}-
361QValidator::State QRegExpValidator::validate(QString &input, int& pos) const-
362{-
363 QRegExp copy = r;-
364 if (copy.exactMatch(input)
copy.exactMatch(input)Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
365 return
never executed: return Acceptable;
Acceptable;
never executed: return Acceptable;
0
366 } else {-
367 if (copy.matchedLength() == input.size()
copy.matchedLe...= input.size()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
368 return
never executed: return Intermediate;
Intermediate;
never executed: return Intermediate;
0
369 } else {-
370 pos = input.size();-
371 return
never executed: return Invalid;
Invalid;
never executed: return Invalid;
0
372 }-
373 }-
374}-
375void QRegExpValidator::setRegExp(const QRegExp& rx)-
376{-
377 if (r != rx
r != rxDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
378 r = rx;-
379 regExpChanged(r);-
380 changed();-
381 }
never executed: end of block
0
382}
never executed: end of block
0
383class QRegularExpressionValidatorPrivate : public QValidatorPrivate-
384{-
385 inline QRegularExpressionValidator* q_func() { return static_cast<QRegularExpressionValidator *>(q_ptr); } inline const QRegularExpressionValidator* q_func() const { return static_cast<const QRegularExpressionValidator *>(q_ptr); } friend class QRegularExpressionValidator;-
386-
387public:-
388 QRegularExpression origRe;-
389 QRegularExpression usedRe;-
390 void setRegularExpression(const QRegularExpression &re);-
391};-
392-
393-
394-
395-
396-
397-
398QRegularExpressionValidator::QRegularExpressionValidator(QObject *parent)-
399 : QValidator(*new QRegularExpressionValidatorPrivate, parent)-
400{-
401-
402-
403}
never executed: end of block
0
404-
405-
406-
407-
408-
409-
410QRegularExpressionValidator::QRegularExpressionValidator(const QRegularExpression &re, QObject *parent)-
411 : QValidator(*new QRegularExpressionValidatorPrivate, parent)-
412{-
413 QRegularExpressionValidatorPrivate * const d = d_func();-
414 d->setRegularExpression(re);-
415}
never executed: end of block
0
416-
417-
418-
419-
420-
421-
422QRegularExpressionValidator::~QRegularExpressionValidator()-
423{-
424}-
425QValidator::State QRegularExpressionValidator::validate(QString &input, int &pos) const-
426{-
427 const QRegularExpressionValidatorPrivate * const d = d_func();-
428-
429-
430-
431-
432 if (d->origRe.pattern().isEmpty()
d->origRe.pattern().isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
)
0
433 return
never executed: return Acceptable;
Acceptable;
never executed: return Acceptable;
0
434-
435 const QRegularExpressionMatch m = d->usedRe.match(input, 0, QRegularExpression::PartialPreferCompleteMatch);-
436 if (m.hasMatch()
m.hasMatch()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
437 return
never executed: return Acceptable;
Acceptable;
never executed: return Acceptable;
0
438 } else if (input.isEmpty()
input.isEmpty()Description
TRUEnever evaluated
FALSEnever evaluated
|| m.hasPartialMatch()
m.hasPartialMatch()Description
TRUEnever evaluated
FALSEnever evaluated
) {
0
439 return
never executed: return Intermediate;
Intermediate;
never executed: return Intermediate;
0
440 } else {-
441 pos = input.size();-
442 return
never executed: return Invalid;
Invalid;
never executed: return Invalid;
0
443 }-
444}-
445QRegularExpression QRegularExpressionValidator::regularExpression() const-
446{-
447 const QRegularExpressionValidatorPrivate * const d = d_func();-
448 return
never executed: return d->origRe;
d->origRe;
never executed: return d->origRe;
0
449}-
450-
451void QRegularExpressionValidator::setRegularExpression(const QRegularExpression &re)-
452{-
453 QRegularExpressionValidatorPrivate * const d = d_func();-
454 d->setRegularExpression(re);-
455}
never executed: end of block
0
456-
457-
458-
459-
460-
461-
462-
463void QRegularExpressionValidatorPrivate::setRegularExpression(const QRegularExpression &re)-
464{-
465 QRegularExpressionValidator * const q = q_func();-
466-
467 if (origRe != re
origRe != reDescription
TRUEnever evaluated
FALSEnever evaluated
) {
0
468 usedRe = origRe = re;-
469 usedRe.setPattern(([]() -> QString { enum { Size = sizeof(u"" "\\A(?:")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" "\\A(?:" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return
never executed: return qstring_literal_temp;
qstring_literal_temp;
never executed: return qstring_literal_temp;
}()) + re.pattern() + ([]() -> QString { enum { Size = sizeof(u"" ")\\z")/2 - 1 }; static const QStaticStringData<Size> qstring_literal = { { { { -1 } }, Size, 0, 0, sizeof(QStringData) }, u"" ")\\z" }; QStringDataPtr holder = { qstring_literal.data_ptr() }; const QString qstring_literal_temp(holder); return
never executed: return qstring_literal_temp;
qstring_literal_temp;
never executed: return qstring_literal_temp;
}()));
0
470 q->regularExpressionChanged(re);-
471 q->changed();-
472 }
never executed: end of block
0
473}
never executed: end of block
0
474-
475-
476-
477-
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial 4.3.0-BETA-master-30-08-2018-4cb69e9