tools/qdatetime.cpp

Switch to Source codePreprocessed file
LineSource CodeCoverage
1 -
2 -
3 -
4 -
5 -
6 -
7 -
8enum { -
9 SECS_PER_DAY = 86400, -
10 MSECS_PER_DAY = 86400000, -
11 SECS_PER_HOUR = 3600, -
12 MSECS_PER_HOUR = 3600000, -
13 SECS_PER_MIN = 60, -
14 MSECS_PER_MIN = 60000, -
15 JULIAN_DAY_FOR_EPOCH = 2440588 -
16}; -
17 -
18static inline QDate fixedDate(int y, int m, int d) -
19{ -
20 QDate result(y, m, 1); -
21 result.setDate(y, m, qMin(d, result.daysInMonth())); -
22 return result;
executed: return result;
Execution Count:202
202
23} -
24 -
25static inline qint64 floordiv(qint64 a, qint64 b) -
26{ -
27 return (a - (a < 0 ? b-1 : 0)) / b;
never executed: return (a - (a < 0 ? b-1 : 0)) / b;
0
28} -
29 -
30static inline qint64 floordiv(qint64 a, int b) -
31{ -
32 return (a - (a < 0 ? b-1 : 0)) / b;
executed: return (a - (a < 0 ? b-1 : 0)) / b;
Execution Count:5889632
5889632
33} -
34 -
35static inline int floordiv(int a, int b) -
36{ -
37 return (a - (a < 0 ? b-1 : 0)) / b;
executed: return (a - (a < 0 ? b-1 : 0)) / b;
Execution Count:12825904
12825904
38} -
39 -
40static inline qint64 julianDayFromDate(int year, int month, int day) -
41{ -
42 -
43 if (year < 0)
evaluated: year < 0
TRUEFALSE
yes
Evaluation Count:239346
yes
Evaluation Count:452510
239346-452510
44 ++year;
executed: ++year;
Execution Count:239346
239346
45 -
46 -
47 -
48 -
49 -
50 -
51 int a = floordiv(14 - month, 12); -
52 qint64 y = (qint64)year + 4800 - a; -
53 int m = month + 12 * a - 3; -
54 return day + floordiv(153 * m + 2, 5) + 365 * y + floordiv(y, 4) - floordiv(y, 100) + floordiv(y, 400) - 32045;
executed: return day + floordiv(153 * m + 2, 5) + 365 * y + floordiv(y, 4) - floordiv(y, 100) + floordiv(y, 400) - 32045;
Execution Count:691856
691856
55} -
56 -
57static void getDateFromJulianDay(qint64 julianDay, int *yearp, int *monthp, int *dayp) -
58{ -
59 -
60 -
61 -
62 -
63 -
64 qint64 a = julianDay + 32044; -
65 qint64 b = floordiv(4 * a + 3, 146097); -
66 int c = a - floordiv(146097 * b, 4); -
67 -
68 int d = floordiv(4 * c + 3, 1461); -
69 int e = c - floordiv(1461 * d, 4); -
70 int m = floordiv(5 * e + 2, 153); -
71 -
72 int day = e - floordiv(153 * m + 2, 5) + 1; -
73 int month = m + 3 - 12 * floordiv(m, 10); -
74 int year = 100 * b + d - 4800 + floordiv(m, 10); -
75 -
76 -
77 if (year <= 0)
evaluated: year <= 0
TRUEFALSE
yes
Evaluation Count:715383
yes
Evaluation Count:1191649
715383-1191649
78 --year ;
executed: --year ;
Execution Count:715383
715383
79 -
80 if (yearp)
evaluated: yearp
TRUEFALSE
yes
Evaluation Count:642258
yes
Evaluation Count:1264774
642258-1264774
81 *yearp = year;
executed: *yearp = year;
Execution Count:642258
642258
82 if (monthp)
evaluated: monthp
TRUEFALSE
yes
Evaluation Count:622584
yes
Evaluation Count:1284448
622584-1284448
83 *monthp = month;
executed: *monthp = month;
Execution Count:622584
622584
84 if (dayp)
evaluated: dayp
TRUEFALSE
yes
Evaluation Count:655271
yes
Evaluation Count:1251761
655271-1251761
85 *dayp = day;
executed: *dayp = day;
Execution Count:655271
655271
86}
executed: }
Execution Count:1907032
1907032
87 -
88 -
89static const char monthDays[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; -
90 -
91 -
92static const char * const qt_shortMonthNames[] = { -
93 "Jan", "Feb", "Mar", "Apr", "May", "Jun", -
94 "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; -
95 -
96 -
97static QString fmtDateTime(const QString& f, const QTime* dt = 0, const QDate* dd = 0); -
98QDate::QDate(int y, int m, int d) -
99{ -
100 setDate(y, m, d); -
101}
executed: }
Execution Count:124858
124858
102int QDate::year() const -
103{ -
104 if (isNull())
evaluated: isNull()
TRUEFALSE
yes
Evaluation Count:25
yes
Evaluation Count:634305
25-634305
105 return 0;
executed: return 0;
Execution Count:25
25
106 -
107 int y; -
108 getDateFromJulianDay(jd, &y, 0, 0); -
109 return y;
executed: return y;
Execution Count:634305
634305
110} -
111int QDate::month() const -
112{ -
113 if (isNull())
evaluated: isNull()
TRUEFALSE
yes
Evaluation Count:24
yes
Evaluation Count:614635
24-614635
114 return 0;
executed: return 0;
Execution Count:24
24
115 -
116 int m; -
117 getDateFromJulianDay(jd, 0, &m, 0); -
118 return m;
executed: return m;
Execution Count:614635
614635
119} -
120int QDate::day() const -
121{ -
122 if (isNull())
evaluated: isNull()
TRUEFALSE
yes
Evaluation Count:24
yes
Evaluation Count:650137
24-650137
123 return 0;
executed: return 0;
Execution Count:24
24
124 -
125 int d; -
126 getDateFromJulianDay(jd, 0, 0, &d); -
127 return d;
executed: return d;
Execution Count:650137
650137
128} -
129int QDate::dayOfWeek() const -
130{ -
131 if (isNull())
evaluated: isNull()
TRUEFALSE
yes
Evaluation Count:39
yes
Evaluation Count:27918
39-27918
132 return 0;
executed: return 0;
Execution Count:39
39
133 -
134 if (jd >= 0)
evaluated: jd >= 0
TRUEFALSE
yes
Evaluation Count:27910
yes
Evaluation Count:8
8-27910
135 return (jd % 7) + 1;
executed: return (jd % 7) + 1;
Execution Count:27910
27910
136 else -
137 return ((jd + 1) % 7) + 7;
executed: return ((jd + 1) % 7) + 7;
Execution Count:8
8
138} -
139int QDate::dayOfYear() const -
140{ -
141 if (isNull())
evaluated: isNull()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:292
1-292
142 return 0;
executed: return 0;
Execution Count:1
1
143 -
144 return jd - julianDayFromDate(year(), 1, 1) + 1;
executed: return jd - julianDayFromDate(year(), 1, 1) + 1;
Execution Count:292
292
145} -
146int QDate::daysInMonth() const -
147{ -
148 if (isNull())
evaluated: isNull()
TRUEFALSE
yes
Evaluation Count:41
yes
Evaluation Count:2815
41-2815
149 return 0;
executed: return 0;
Execution Count:41
41
150 -
151 int y, m; -
152 getDateFromJulianDay(jd, &y, &m, 0); -
153 if (m == 2 && isLeapYear(y))
evaluated: m == 2
TRUEFALSE
yes
Evaluation Count:111
yes
Evaluation Count:2704
evaluated: isLeapYear(y)
TRUEFALSE
yes
Evaluation Count:55
yes
Evaluation Count:56
55-2704
154 return 29;
executed: return 29;
Execution Count:55
55
155 else -
156 return monthDays[m];
executed: return monthDays[m];
Execution Count:2760
2760
157} -
158int QDate::daysInYear() const -
159{ -
160 if (isNull())
evaluated: isNull()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:4
1-4
161 return 0;
executed: return 0;
Execution Count:1
1
162 -
163 int y; -
164 getDateFromJulianDay(jd, &y, 0, 0); -
165 return isLeapYear(y) ? 366 : 365;
executed: return isLeapYear(y) ? 366 : 365;
Execution Count:4
4
166} -
167int QDate::weekNumber(int *yearNumber) const -
168{ -
169 if (!isValid())
evaluated: !isValid()
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:279
3-279
170 return 0;
executed: return 0;
Execution Count:3
3
171 -
172 int year = QDate::year(); -
173 int yday = dayOfYear() - 1; -
174 int wday = dayOfWeek(); -
175 if (wday == 7)
evaluated: wday == 7
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:278
1-278
176 wday = 0;
executed: wday = 0;
Execution Count:1
1
177 int w; -
178 -
179 for (;;) { -
180 int len; -
181 int bot; -
182 int top; -
183 -
184 len = isLeapYear(year) ? 366 : 365;
evaluated: isLeapYear(year)
TRUEFALSE
yes
Evaluation Count:40
yes
Evaluation Count:241
40-241
185 -
186 -
187 -
188 -
189 bot = ((yday + 11 - wday) % 7) - 3; -
190 -
191 -
192 -
193 -
194 top = bot - (len % 7); -
195 if (top < -3)
evaluated: top < -3
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:279
2-279
196 top += 7;
executed: top += 7;
Execution Count:2
2
197 top += len; -
198 if (yday >= top) {
evaluated: yday >= top
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:277
4-277
199 ++year; -
200 w = 1; -
201 break;
executed: break;
Execution Count:4
4
202 } -
203 if (yday >= bot) {
evaluated: yday >= bot
TRUEFALSE
yes
Evaluation Count:275
yes
Evaluation Count:2
2-275
204 w = 1 + ((yday - bot) / 7); -
205 break;
executed: break;
Execution Count:275
275
206 } -
207 --year; -
208 yday += isLeapYear(year) ? 366 : 365;
evaluated: isLeapYear(year)
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:1
1
209 }
executed: }
Execution Count:2
2
210 if (yearNumber != 0)
evaluated: yearNumber != 0
TRUEFALSE
yes
Evaluation Count:9
yes
Evaluation Count:270
9-270
211 *yearNumber = year;
executed: *yearNumber = year;
Execution Count:9
9
212 return w;
executed: return w;
Execution Count:279
279
213} -
214QString QDate::shortMonthName(int month, QDate::MonthNameType type) -
215{ -
216 if (month < 1 || month > 12)
evaluated: month < 1
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:282
evaluated: month > 12
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:280
2-282
217 return QString();
executed: return QString();
Execution Count:4
4
218 -
219 switch (type) { -
220 case QDate::DateFormat: -
221 return QLocale::system().monthName(month, QLocale::ShortFormat);
executed: return QLocale::system().monthName(month, QLocale::ShortFormat);
Execution Count:268
268
222 case QDate::StandaloneFormat: -
223 return QLocale::system().standaloneMonthName(month, QLocale::ShortFormat);
executed: return QLocale::system().standaloneMonthName(month, QLocale::ShortFormat);
Execution Count:12
12
224 default: -
225 break;
never executed: break;
0
226 } -
227 return QString();
never executed: return QString();
0
228} -
229QString QDate::longMonthName(int month, MonthNameType type) -
230{ -
231 if (month < 1 || month > 12)
evaluated: month < 1
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:39
evaluated: month > 12
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:37
2-39
232 return QString();
executed: return QString();
Execution Count:4
4
233 -
234 switch (type) { -
235 case QDate::DateFormat: -
236 return QLocale::system().monthName(month, QLocale::LongFormat);
executed: return QLocale::system().monthName(month, QLocale::LongFormat);
Execution Count:25
25
237 case QDate::StandaloneFormat: -
238 return QLocale::system().standaloneMonthName(month, QLocale::LongFormat);
executed: return QLocale::system().standaloneMonthName(month, QLocale::LongFormat);
Execution Count:12
12
239 default: -
240 break;
never executed: break;
0
241 } -
242 return QString();
never executed: return QString();
0
243} -
244QString QDate::shortDayName(int weekday, MonthNameType type) -
245{ -
246 if (weekday < 1 || weekday > 7)
evaluated: weekday < 1
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:80
evaluated: weekday > 7
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:78
2-80
247 return QString();
executed: return QString();
Execution Count:4
4
248 -
249 switch (type) { -
250 case QDate::DateFormat: -
251 return QLocale::system().dayName(weekday, QLocale::ShortFormat);
executed: return QLocale::system().dayName(weekday, QLocale::ShortFormat);
Execution Count:71
71
252 case QDate::StandaloneFormat: -
253 return QLocale::system().standaloneDayName(weekday, QLocale::ShortFormat);
executed: return QLocale::system().standaloneDayName(weekday, QLocale::ShortFormat);
Execution Count:7
7
254 default: -
255 break;
never executed: break;
0
256 } -
257 return QString();
never executed: return QString();
0
258} -
259QString QDate::longDayName(int weekday, MonthNameType type) -
260{ -
261 if (weekday < 1 || weekday > 7)
evaluated: weekday < 1
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:24
evaluated: weekday > 7
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:22
2-24
262 return QString();
executed: return QString();
Execution Count:4
4
263 -
264 switch (type) { -
265 case QDate::DateFormat: -
266 return QLocale::system().dayName(weekday, QLocale::LongFormat);
executed: return QLocale::system().dayName(weekday, QLocale::LongFormat);
Execution Count:15
15
267 case QDate::StandaloneFormat: -
268 return QLocale::system().standaloneDayName(weekday, QLocale::LongFormat);
executed: return QLocale::system().standaloneDayName(weekday, QLocale::LongFormat);
Execution Count:7
7
269 default: -
270 break;
never executed: break;
0
271 } -
272 return QLocale::system().dayName(weekday, QLocale::LongFormat);
never executed: return QLocale::system().dayName(weekday, QLocale::LongFormat);
0
273} -
274QString QDate::toString(Qt::DateFormat f) const -
275{ -
276 if (!isValid())
evaluated: !isValid()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:1598
1-1598
277 return QString();
executed: return QString();
Execution Count:1
1
278 int y, m, d; -
279 getDateFromJulianDay(jd, &y, &m, &d); -
280 switch (f) { -
281 case Qt::SystemLocaleDate: -
282 case Qt::SystemLocaleShortDate: -
283 case Qt::SystemLocaleLongDate: -
284 return QLocale::system().toString(*this, f == Qt::SystemLocaleLongDate ? QLocale::LongFormat 1543
285 : QLocale::ShortFormat);
executed: return QLocale::system().toString(*this, f == Qt::SystemLocaleLongDate ? QLocale::LongFormat : QLocale::ShortFormat);
Execution Count:1543
1543
286 case Qt::LocaleDate: -
287 case Qt::DefaultLocaleShortDate: -
288 case Qt::DefaultLocaleLongDate: -
289 return QLocale().toString(*this, f == Qt::DefaultLocaleLongDate ? QLocale::LongFormat 15
290 : QLocale::ShortFormat);
executed: return QLocale().toString(*this, f == Qt::DefaultLocaleLongDate ? QLocale::LongFormat : QLocale::ShortFormat);
Execution Count:15
15
291 default: -
292 -
293 case Qt::TextDate: -
294 { -
295 return QString::fromLatin1("%0 %1 %2 %3") 2
296 .arg(shortDayName(dayOfWeek())) 2
297 .arg(shortMonthName(m)) 2
298 .arg(d) 2
299 .arg(y);
executed: return QString::fromLatin1("%0 %1 %2 %3") .arg(shortDayName(dayOfWeek())) .arg(shortMonthName(m)) .arg(d) .arg(y);
Execution Count:2
2
300 } -
301 -
302 case Qt::ISODate: -
303 { -
304 if (year() < 0 || year() > 9999)
evaluated: year() < 0
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:35
partially evaluated: year() > 9999
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:35
0-35
305 return QString();
executed: return QString();
Execution Count:3
3
306 QString year(QString::number(y).rightJustified(4, QLatin1Char('0'))); -
307 QString month(QString::number(m).rightJustified(2, QLatin1Char('0'))); -
308 QString day(QString::number(d).rightJustified(2, QLatin1Char('0'))); -
309 return year + QLatin1Char('-') + month + QLatin1Char('-') + day;
executed: return year + QLatin1Char('-') + month + QLatin1Char('-') + day;
Execution Count:35
35
310 } -
311 } -
312}
never executed: }
0
313QString QDate::toString(const QString& format) const -
314{ -
315 if (year() > 9999)
evaluated: year() > 9999
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:13126
2-13126
316 return QString();
executed: return QString();
Execution Count:2
2
317 return fmtDateTime(format, 0, this);
executed: return fmtDateTime(format, 0, this);
Execution Count:13126
13126
318} -
319bool QDate::setDate(int year, int month, int day) -
320{ -
321 if (isValid(year, month, day))
evaluated: isValid(year, month, day)
TRUEFALSE
yes
Evaluation Count:681888
yes
Evaluation Count:11328
11328-681888
322 jd = julianDayFromDate(year, month, day);
executed: jd = julianDayFromDate(year, month, day);
Execution Count:681888
681888
323 else -
324 jd = nullJd();
executed: jd = nullJd();
Execution Count:11328
11328
325 -
326 return isValid();
executed: return isValid();
Execution Count:693216
693216
327} -
328void QDate::getDate(int *year, int *month, int *day) -
329{ -
330 if (isValid()) {
evaluated: isValid()
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:3
3-4
331 getDateFromJulianDay(jd, year, month, day); -
332 } else {
executed: }
Execution Count:4
4
333 if (year)
evaluated: year
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:1
1-2
334 *year = 0;
executed: *year = 0;
Execution Count:2
2
335 if (month)
evaluated: month
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:1
1-2
336 *month = 0;
executed: *month = 0;
Execution Count:2
2
337 if (day)
evaluated: day
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:1
1-2
338 *day = 0;
executed: *day = 0;
Execution Count:2
2
339 }
executed: }
Execution Count:3
3
340} -
341QDate QDate::addDays(qint64 ndays) const -
342{ -
343 if (isNull())
evaluated: isNull()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:615837
1-615837
344 return QDate();
executed: return QDate();
Execution Count:1
1
345 -
346 -
347 -
348 return fromJulianDay(jd + ndays);
executed: return fromJulianDay(jd + ndays);
Execution Count:615837
615837
349} -
350QDate QDate::addMonths(int nmonths) const -
351{ -
352 if (!isValid())
evaluated: !isValid()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:123
1-123
353 return QDate();
executed: return QDate();
Execution Count:1
1
354 if (!nmonths)
evaluated: !nmonths
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:120
3-120
355 return *this;
executed: return *this;
Execution Count:3
3
356 -
357 int old_y, y, m, d; -
358 getDateFromJulianDay(jd, &y, &m, &d); -
359 old_y = y; -
360 -
361 bool increasing = nmonths > 0; -
362 -
363 while (nmonths != 0) {
evaluated: nmonths != 0
TRUEFALSE
yes
Evaluation Count:134
yes
Evaluation Count:120
120-134
364 if (nmonths < 0 && nmonths + 12 <= 0) {
evaluated: nmonths < 0
TRUEFALSE
yes
Evaluation Count:73
yes
Evaluation Count:61
evaluated: nmonths + 12 <= 0
TRUEFALSE
yes
Evaluation Count:11
yes
Evaluation Count:62
11-73
365 y--; -
366 nmonths+=12; -
367 } else if (nmonths < 0) {
evaluated: nmonths < 0
TRUEFALSE
yes
Evaluation Count:62
yes
Evaluation Count:61
executed: }
Execution Count:11
11-62
368 m+= nmonths; -
369 nmonths = 0; -
370 if (m <= 0) {
evaluated: m <= 0
TRUEFALSE
yes
Evaluation Count:37
yes
Evaluation Count:25
25-37
371 --y; -
372 m += 12; -
373 }
executed: }
Execution Count:37
37
374 } else if (nmonths - 12 >= 0) {
evaluated: nmonths - 12 >= 0
TRUEFALSE
yes
Evaluation Count:12
yes
Evaluation Count:49
executed: }
Execution Count:62
12-62
375 y++; -
376 nmonths -= 12; -
377 } else if (m == 12) {
evaluated: m == 12
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:47
executed: }
Execution Count:12
2-47
378 y++; -
379 m = 0; -
380 } else {
executed: }
Execution Count:2
2
381 m += nmonths; -
382 nmonths = 0; -
383 if (m > 12) {
evaluated: m > 12
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:46
1-46
384 ++y; -
385 m -= 12; -
386 }
executed: }
Execution Count:1
1
387 }
executed: }
Execution Count:47
47
388 } -
389 -
390 -
391 if ((old_y > 0 && y <= 0) ||
evaluated: old_y > 0
TRUEFALSE
yes
Evaluation Count:117
yes
Evaluation Count:3
evaluated: y <= 0
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:115
2-117
392 (old_y < 0 && y >= 0))
evaluated: old_y < 0
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:115
evaluated: y >= 0
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:1
1-115
393 -
394 y += increasing ? +1 : -1;
evaluated: increasing
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:2
executed: y += increasing ? +1 : -1;
Execution Count:4
2-4
395 -
396 return fixedDate(y, m, d);
executed: return fixedDate(y, m, d);
Execution Count:120
120
397} -
398QDate QDate::addYears(int nyears) const -
399{ -
400 if (!isValid())
evaluated: !isValid()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:82
1-82
401 return QDate();
executed: return QDate();
Execution Count:1
1
402 -
403 int y, m, d; -
404 getDateFromJulianDay(jd, &y, &m, &d); -
405 -
406 int old_y = y; -
407 y += nyears; -
408 -
409 -
410 if ((old_y > 0 && y <= 0) ||
evaluated: old_y > 0
TRUEFALSE
yes
Evaluation Count:67
yes
Evaluation Count:15
evaluated: y <= 0
TRUEFALSE
yes
Evaluation Count:6
yes
Evaluation Count:61
6-67
411 (old_y < 0 && y >= 0))
evaluated: old_y < 0
TRUEFALSE
yes
Evaluation Count:15
yes
Evaluation Count:61
evaluated: y >= 0
TRUEFALSE
yes
Evaluation Count:6
yes
Evaluation Count:9
6-61
412 -
413 y += nyears > 0 ? +1 : -1;
evaluated: nyears > 0
TRUEFALSE
yes
Evaluation Count:6
yes
Evaluation Count:6
executed: y += nyears > 0 ? +1 : -1;
Execution Count:12
6-12
414 -
415 return fixedDate(y, m, d);
executed: return fixedDate(y, m, d);
Execution Count:82
82
416} -
417qint64 QDate::daysTo(const QDate &d) const -
418{ -
419 if (isNull() || d.isNull())
evaluated: isNull()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:29483
evaluated: d.isNull()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:29482
1-29483
420 return 0;
executed: return 0;
Execution Count:2
2
421 -
422 -
423 return d.jd - jd;
executed: return d.jd - jd;
Execution Count:29482
29482
424} -
425QDate QDate::fromString(const QString& s, Qt::DateFormat f) -
426{ -
427 if (s.isEmpty())
evaluated: s.isEmpty()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:76
1-76
428 return QDate();
executed: return QDate();
Execution Count:1
1
429 -
430 switch (f) { -
431 case Qt::ISODate: -
432 { -
433 int year(s.mid(0, 4).toInt()); -
434 int month(s.mid(5, 2).toInt()); -
435 int day(s.mid(8, 2).toInt()); -
436 if (year && month && day)
evaluated: year
TRUEFALSE
yes
Evaluation Count:50
yes
Evaluation Count:12
partially evaluated: month
TRUEFALSE
yes
Evaluation Count:50
no
Evaluation Count:0
partially evaluated: day
TRUEFALSE
yes
Evaluation Count:50
no
Evaluation Count:0
0-50
437 return QDate(year, month, day);
executed: return QDate(year, month, day);
Execution Count:50
50
438 } -
439 break;
executed: break;
Execution Count:12
12
440 case Qt::SystemLocaleDate: -
441 case Qt::SystemLocaleShortDate: -
442 case Qt::SystemLocaleLongDate: -
443 return fromString(s, QLocale::system().dateFormat(f == Qt::SystemLocaleLongDate ? QLocale::LongFormat 0
444 : QLocale::ShortFormat));
never executed: return fromString(s, QLocale::system().dateFormat(f == Qt::SystemLocaleLongDate ? QLocale::LongFormat : QLocale::ShortFormat));
0
445 case Qt::LocaleDate: -
446 case Qt::DefaultLocaleShortDate: -
447 case Qt::DefaultLocaleLongDate: -
448 return fromString(s, QLocale().dateFormat(f == Qt::DefaultLocaleLongDate ? QLocale::LongFormat 0
449 : QLocale::ShortFormat));
never executed: return fromString(s, QLocale().dateFormat(f == Qt::DefaultLocaleLongDate ? QLocale::LongFormat : QLocale::ShortFormat));
0
450 default: -
451 -
452 case Qt::TextDate: { -
453 QStringList parts = s.split(QLatin1Char(' '), QString::SkipEmptyParts); -
454 -
455 if (parts.count() != 4) {
evaluated: parts.count() != 4
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:13
1-13
456 return QDate();
executed: return QDate();
Execution Count:1
1
457 } -
458 -
459 QString monthName = parts.at(1); -
460 int month = -1; -
461 -
462 for (int i = 0; i < 12; ++i) {
evaluated: i < 12
TRUEFALSE
yes
Evaluation Count:68
yes
Evaluation Count:1
1-68
463 if (monthName == QLatin1String(qt_shortMonthNames[i])) {
evaluated: monthName == QLatin1String(qt_shortMonthNames[i])
TRUEFALSE
yes
Evaluation Count:12
yes
Evaluation Count:56
12-56
464 month = i + 1; -
465 break;
executed: break;
Execution Count:12
12
466 } -
467 }
executed: }
Execution Count:56
56
468 -
469 if (month == -1) {
evaluated: month == -1
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:12
1-12
470 for (int i = 1; i <= 12; ++i) {
evaluated: i <= 12
TRUEFALSE
yes
Evaluation Count:12
yes
Evaluation Count:1
1-12
471 if (monthName == QDate::shortMonthName(i)) {
partially evaluated: monthName == QDate::shortMonthName(i)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:12
0-12
472 month = i; -
473 break;
never executed: break;
0
474 } -
475 }
executed: }
Execution Count:12
12
476 if (month == -1) {
partially evaluated: month == -1
TRUEFALSE
yes
Evaluation Count:1
no
Evaluation Count:0
0-1
477 -
478 return QDate();
executed: return QDate();
Execution Count:1
1
479 } -
480 }
never executed: }
0
481 -
482 bool ok; -
483 int day = parts.at(2).toInt(&ok); -
484 if (!ok) {
evaluated: !ok
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:11
1-11
485 return QDate();
executed: return QDate();
Execution Count:1
1
486 } -
487 -
488 int year = parts.at(3).toInt(&ok); -
489 if (!ok) {
evaluated: !ok
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:10
1-10
490 return QDate();
executed: return QDate();
Execution Count:1
1
491 } -
492 -
493 return QDate(year, month, day);
executed: return QDate(year, month, day);
Execution Count:10
10
494 } -
495 -
496 -
497 -
498 } -
499 return QDate();
executed: return QDate();
Execution Count:12
12
500} -
501QDate QDate::fromString(const QString &string, const QString &format) -
502{ -
503 QDate date; -
504 -
505 QDateTimeParser dt(QVariant::Date, QDateTimeParser::FromString); -
506 if (dt.parseFormat(format))
partially evaluated: dt.parseFormat(format)
TRUEFALSE
yes
Evaluation Count:44
no
Evaluation Count:0
0-44
507 dt.fromString(string, &date, 0);
executed: dt.fromString(string, &date, 0);
Execution Count:44
44
508 -
509 -
510 -
511 -
512 return date;
executed: return date;
Execution Count:44
44
513} -
514bool QDate::isValid(int year, int month, int day) -
515{ -
516 -
517 if (year == 0)
evaluated: year == 0
TRUEFALSE
yes
Evaluation Count:139
yes
Evaluation Count:699032
139-699032
518 return false;
executed: return false;
Execution Count:139
139
519 -
520 return (day > 0 && month > 0 && month <= 12) && 699032
521 (day <= monthDays[month] || (day == 29 && month == 2 && isLeapYear(year)));
executed: return (day > 0 && month > 0 && month <= 12) && (day <= monthDays[month] || (day == 29 && month == 2 && isLeapYear(year)));
Execution Count:699032
699032
522} -
523bool QDate::isLeapYear(int y) -
524{ -
525 -
526 if ( y < 1)
evaluated: y < 1
TRUEFALSE
yes
Evaluation Count:9596
yes
Evaluation Count:27033
9596-27033
527 ++y;
executed: ++y;
Execution Count:9596
9596
528 -
529 return (y % 4 == 0 && y % 100 != 0) || y % 400 == 0;
executed: return (y % 4 == 0 && y % 100 != 0) || y % 400 == 0;
Execution Count:36629
36629
530} -
531QTime::QTime(int h, int m, int s, int ms) -
532{ -
533 setHMS(h, m, s, ms); -
534}
executed: }
Execution Count:55825
55825
535bool QTime::isValid() const -
536{ -
537 return mds > NullTime && mds < MSECS_PER_DAY;
executed: return mds > NullTime && mds < MSECS_PER_DAY;
Execution Count:28510594
28510594
538} -
539int QTime::hour() const -
540{ -
541 if (!isValid())
evaluated: !isValid()
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:43913
2-43913
542 return -1;
executed: return -1;
Execution Count:2
2
543 -
544 return ds() / MSECS_PER_HOUR;
executed: return ds() / MSECS_PER_HOUR;
Execution Count:43913
43913
545} -
546int QTime::minute() const -
547{ -
548 if (!isValid())
evaluated: !isValid()
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:39892
2-39892
549 return -1;
executed: return -1;
Execution Count:2
2
550 -
551 return (ds() % MSECS_PER_HOUR) / MSECS_PER_MIN;
executed: return (ds() % MSECS_PER_HOUR) / MSECS_PER_MIN;
Execution Count:39892
39892
552} -
553int QTime::second() const -
554{ -
555 if (!isValid())
evaluated: !isValid()
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:38290
2-38290
556 return -1;
executed: return -1;
Execution Count:2
2
557 -
558 return (ds() / 1000)%SECS_PER_MIN;
executed: return (ds() / 1000)%SECS_PER_MIN;
Execution Count:38290
38290
559} -
560int QTime::msec() const -
561{ -
562 if (!isValid())
evaluated: !isValid()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:41462
1-41462
563 return -1;
executed: return -1;
Execution Count:1
1
564 -
565 return ds() % 1000;
executed: return ds() % 1000;
Execution Count:41462
41462
566} -
567QString QTime::toString(Qt::DateFormat format) const -
568{ -
569 if (!isValid())
evaluated: !isValid()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:1634
1-1634
570 return QString();
executed: return QString();
Execution Count:1
1
571 -
572 switch (format) { -
573 case Qt::SystemLocaleDate: -
574 case Qt::SystemLocaleShortDate: -
575 case Qt::SystemLocaleLongDate: -
576 return QLocale::system().toString(*this, format == Qt::SystemLocaleLongDate ? QLocale::LongFormat 1533
577 : QLocale::ShortFormat);
executed: return QLocale::system().toString(*this, format == Qt::SystemLocaleLongDate ? QLocale::LongFormat : QLocale::ShortFormat);
Execution Count:1533
1533
578 case Qt::LocaleDate: -
579 case Qt::DefaultLocaleShortDate: -
580 case Qt::DefaultLocaleLongDate: -
581 return QLocale().toString(*this, format == Qt::DefaultLocaleLongDate ? QLocale::LongFormat 5
582 : QLocale::ShortFormat);
executed: return QLocale().toString(*this, format == Qt::DefaultLocaleLongDate ? QLocale::LongFormat : QLocale::ShortFormat);
Execution Count:5
5
583 -
584 default: -
585 case Qt::ISODate: -
586 case Qt::TextDate: -
587 return QString::fromLatin1("%1:%2:%3") 96
588 .arg(hour(), 2, 10, QLatin1Char('0')) 96
589 .arg(minute(), 2, 10, QLatin1Char('0')) 96
590 .arg(second(), 2, 10, QLatin1Char('0'));
executed: return QString::fromLatin1("%1:%2:%3") .arg(hour(), 2, 10, QLatin1Char('0')) .arg(minute(), 2, 10, QLatin1Char('0')) .arg(second(), 2, 10, QLatin1Char('0'));
Execution Count:96
96
591 } -
592}
never executed: }
0
593QString QTime::toString(const QString& format) const -
594{ -
595 return fmtDateTime(format, this, 0);
executed: return fmtDateTime(format, this, 0);
Execution Count:13400
13400
596} -
597bool QTime::setHMS(int h, int m, int s, int ms) -
598{ -
599 -
600 -
601 -
602 if (!isValid(h,m,s,ms)) {
evaluated: !isValid(h,m,s,ms)
TRUEFALSE
yes
Evaluation Count:90
yes
Evaluation Count:55745
90-55745
603 mds = NullTime; -
604 return false;
executed: return false;
Execution Count:90
90
605 } -
606 mds = (h*SECS_PER_HOUR + m*SECS_PER_MIN + s)*1000 + ms; -
607 return true;
executed: return true;
Execution Count:55745
55745
608} -
609QTime QTime::addSecs(int s) const -
610{ -
611 return addMSecs(s * 1000);
executed: return addMSecs(s * 1000);
Execution Count:4562
4562
612} -
613int QTime::secsTo(const QTime &t) const -
614{ -
615 if (!isValid() || !t.isValid())
evaluated: !isValid()
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:5796
evaluated: !t.isValid()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:5795
1-5796
616 return 0;
executed: return 0;
Execution Count:3
3
617 -
618 -
619 int ourSeconds = ds() / 1000; -
620 int theirSeconds = t.ds() / 1000; -
621 return theirSeconds - ourSeconds;
executed: return theirSeconds - ourSeconds;
Execution Count:5795
5795
622} -
623QTime QTime::addMSecs(int ms) const -
624{ -
625 QTime t; -
626 if (isValid()) {
evaluated: isValid()
TRUEFALSE
yes
Evaluation Count:6685
yes
Evaluation Count:1
1-6685
627 if (ms < 0) {
evaluated: ms < 0
TRUEFALSE
yes
Evaluation Count:38
yes
Evaluation Count:6647
38-6647
628 -
629 int negdays = (MSECS_PER_DAY - ms) / MSECS_PER_DAY; -
630 t.mds = (ds() + ms + negdays * MSECS_PER_DAY) % MSECS_PER_DAY; -
631 } else {
executed: }
Execution Count:38
38
632 t.mds = (ds() + ms) % MSECS_PER_DAY; -
633 }
executed: }
Execution Count:6647
6647
634 } -
635 -
636 -
637 -
638 -
639 return t;
executed: return t;
Execution Count:6686
6686
640} -
641int QTime::msecsTo(const QTime &t) const -
642{ -
643 if (!isValid() || !t.isValid())
evaluated: !isValid()
TRUEFALSE
yes
Evaluation Count:5
yes
Evaluation Count:14115207
evaluated: !t.isValid()
TRUEFALSE
yes
Evaluation Count:1438
yes
Evaluation Count:14113642
5-14115207
644 return 0;
executed: return 0;
Execution Count:1443
1443
645 -
646 -
647 -
648 -
649 -
650 -
651 return t.ds() - ds();
executed: return t.ds() - ds();
Execution Count:14113644
14113644
652} -
653namespace { -
654inline bool isMidnight(int hour, int minute, int second, int msec) -
655{ -
656 return hour == 24 && minute == 0 && second == 0 && msec == 0;
executed: return hour == 24 && minute == 0 && second == 0 && msec == 0;
Execution Count:51
51
657} -
658 -
659QTime fromStringImpl(const QString &s, Qt::DateFormat f, bool &isMidnight24) -
660{ -
661 if (s.isEmpty()) {
evaluated: s.isEmpty()
TRUEFALSE
yes
Evaluation Count:5
yes
Evaluation Count:76
5-76
662 -
663 return QTime();
executed: return QTime();
Execution Count:5
5
664 } -
665 -
666 switch (f) { -
667 case Qt::SystemLocaleDate: -
668 case Qt::SystemLocaleShortDate: -
669 case Qt::SystemLocaleLongDate: -
670 { -
671 QLocale::FormatType formatType(Qt::SystemLocaleLongDate ? QLocale::LongFormat : QLocale::ShortFormat); -
672 return QTime::fromString(s, QLocale::system().timeFormat(formatType));
never executed: return QTime::fromString(s, QLocale::system().timeFormat(formatType));
0
673 } -
674 case Qt::LocaleDate: -
675 case Qt::DefaultLocaleShortDate: -
676 case Qt::DefaultLocaleLongDate: -
677 { -
678 QLocale::FormatType formatType(f == Qt::DefaultLocaleLongDate ? QLocale::LongFormat : QLocale::ShortFormat); -
679 return QTime::fromString(s, QLocale().timeFormat(formatType));
never executed: return QTime::fromString(s, QLocale().timeFormat(formatType));
0
680 } -
681 case Qt::TextDate: -
682 case Qt::ISODate: -
683 { -
684 bool ok = true; -
685 const int hour(s.mid(0, 2).toInt(&ok)); -
686 if (!ok)
evaluated: !ok
TRUEFALSE
yes
Evaluation Count:8
yes
Evaluation Count:68
8-68
687 return QTime();
executed: return QTime();
Execution Count:8
8
688 const int minute(s.mid(3, 2).toInt(&ok)); -
689 if (!ok)
evaluated: !ok
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:66
2-66
690 return QTime();
executed: return QTime();
Execution Count:2
2
691 if (f == Qt::ISODate) {
evaluated: f == Qt::ISODate
TRUEFALSE
yes
Evaluation Count:60
yes
Evaluation Count:6
6-60
692 if (s.size() == 5) {
evaluated: s.size() == 5
TRUEFALSE
yes
Evaluation Count:5
yes
Evaluation Count:55
5-55
693 -
694 return QTime(hour, minute, 0, 0);
executed: return QTime(hour, minute, 0, 0);
Execution Count:5
5
695 } else if ((s.size() > 6) && (s[5] == QLatin1Char(',') || s[5] == QLatin1Char('.'))) {
evaluated: (s.size() > 6)
TRUEFALSE
yes
Evaluation Count:54
yes
Evaluation Count:1
evaluated: s[5] == QLatin1Char(',')
TRUEFALSE
yes
Evaluation Count:5
yes
Evaluation Count:49
evaluated: s[5] == QLatin1Char('.')
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:46
1-54
696 const QString minuteFractionStr(QLatin1String("0.") + s.mid(6, 5)); -
697 const float minuteFraction = minuteFractionStr.toFloat(&ok); -
698 if (!ok)
evaluated: !ok
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:7
1-7
699 return QTime();
executed: return QTime();
Execution Count:1
1
700 const float secondWithMs = minuteFraction * 60; -
701 const float second = std::floor(secondWithMs); -
702 const float millisecond = 1000 * (secondWithMs - second); -
703 const int millisecondRounded = qMin(qRound(millisecond), 999); -
704 -
705 if (isMidnight(hour, minute, second, millisecondRounded)) {
evaluated: isMidnight(hour, minute, second, millisecondRounded)
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:6
1-6
706 isMidnight24 = true; -
707 return QTime(0, 0, 0, 0);
executed: return QTime(0, 0, 0, 0);
Execution Count:1
1
708 } -
709 -
710 return QTime(hour, minute, second, millisecondRounded);
executed: return QTime(hour, minute, second, millisecondRounded);
Execution Count:6
6
711 } -
712 } -
713 -
714 const int second(s.mid(6, 2).toInt(&ok)); -
715 if (!ok)
evaluated: !ok
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:50
3-50
716 return QTime();
executed: return QTime();
Execution Count:3
3
717 const QString msec_s(QLatin1String("0.") + s.mid(9, 4)); -
718 const double msec(msec_s.toDouble(&ok)); -
719 if (!ok)
evaluated: !ok
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:48
2-48
720 return QTime(hour, minute, second, 0);
executed: return QTime(hour, minute, second, 0);
Execution Count:2
2
721 -
722 if (f == Qt::ISODate) {
evaluated: f == Qt::ISODate
TRUEFALSE
yes
Evaluation Count:44
yes
Evaluation Count:4
4-44
723 if (isMidnight(hour, minute, second, msec)) {
evaluated: isMidnight(hour, minute, second, msec)
TRUEFALSE
yes
Evaluation Count:5
yes
Evaluation Count:39
5-39
724 isMidnight24 = true; -
725 return QTime(0, 0, 0, 0);
executed: return QTime(0, 0, 0, 0);
Execution Count:5
5
726 } -
727 }
executed: }
Execution Count:39
39
728 return QTime(hour, minute, second, qMin(qRound(msec * 1000.0), 999));
executed: return QTime(hour, minute, second, qMin(qRound(msec * 1000.0), 999));
Execution Count:43
43
729 } -
730 } -
731 qt_noop(); -
732 return QTime();
never executed: return QTime();
0
733} -
734} -
735QTime QTime::fromString(const QString& s, Qt::DateFormat f) -
736{ -
737 bool unused; -
738 return fromStringImpl(s, f, unused);
executed: return fromStringImpl(s, f, unused);
Execution Count:29
29
739} -
740QTime QTime::fromString(const QString &string, const QString &format) -
741{ -
742 QTime time; -
743 -
744 QDateTimeParser dt(QVariant::Time, QDateTimeParser::FromString); -
745 if (dt.parseFormat(format))
partially evaluated: dt.parseFormat(format)
TRUEFALSE
yes
Evaluation Count:12
no
Evaluation Count:0
0-12
746 dt.fromString(string, 0, &time);
executed: dt.fromString(string, 0, &time);
Execution Count:12
12
747 -
748 -
749 -
750 -
751 return time;
executed: return time;
Execution Count:12
12
752} -
753bool QTime::isValid(int h, int m, int s, int ms) -
754{ -
755 return (uint)h < 24 && (uint)m < 60 && (uint)s < 60 && (uint)ms < 1000;
executed: return (uint)h < 24 && (uint)m < 60 && (uint)s < 60 && (uint)ms < 1000;
Execution Count:58419
58419
756} -
757void QTime::start() -
758{ -
759 *this = currentTime(); -
760}
executed: }
Execution Count:1136
1136
761int QTime::restart() -
762{ -
763 QTime t = currentTime(); -
764 int n = msecsTo(t); -
765 if (n < 0)
partially evaluated: n < 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:202
0-202
766 n += 86400*1000;
never executed: n += 86400*1000;
0
767 *this = t; -
768 return n;
executed: return n;
Execution Count:202
202
769} -
770int QTime::elapsed() const -
771{ -
772 int n = msecsTo(currentTime()); -
773 if (n < 0)
partially evaluated: n < 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:14105714
0-14105714
774 n += 86400 * 1000;
never executed: n += 86400 * 1000;
0
775 return n;
executed: return n;
Execution Count:14105728
14105728
776} -
777QDateTime::QDateTime() -
778 : d(new QDateTimePrivate) -
779{ -
780}
executed: }
Execution Count:378789
378789
781 -
782 -
783 -
784 -
785 -
786 -
787 -
788QDateTime::QDateTime(const QDate &date) -
789 : d(new QDateTimePrivate) -
790{ -
791 d->date = date; -
792 d->time = QTime(0, 0, 0); -
793}
executed: }
Execution Count:6
6
794QDateTime::QDateTime(const QDate &date, const QTime &time, Qt::TimeSpec spec) -
795 : d(new QDateTimePrivate) -
796{ -
797 d->date = date; -
798 d->time = date.isValid() && !time.isValid() ? QTime(0, 0, 0) : time;
evaluated: date.isValid()
TRUEFALSE
yes
Evaluation Count:20555
yes
Evaluation Count:105
evaluated: !time.isValid()
TRUEFALSE
yes
Evaluation Count:852
yes
Evaluation Count:19703
105-20555
799 d->spec = (spec == Qt::UTC) ? QDateTimePrivate::UTC : QDateTimePrivate::LocalUnknown;
evaluated: (spec == Qt::UTC)
TRUEFALSE
yes
Evaluation Count:3459
yes
Evaluation Count:17201
3459-17201
800}
executed: }
Execution Count:20660
20660
801 -
802 -
803 -
804 -
805 -
806QDateTime::QDateTime(const QDateTime &other) -
807 : d(other.d) -
808{ -
809}
executed: }
Execution Count:180991
180991
810 -
811 -
812 -
813 -
814QDateTime::~QDateTime() -
815{ -
816} -
817 -
818 -
819 -
820 -
821 -
822 -
823QDateTime &QDateTime::operator=(const QDateTime &other) -
824{ -
825 d = other.d; -
826 return *this;
executed: return *this;
Execution Count:23526
23526
827} -
828bool QDateTime::isNull() const -
829{ -
830 return d->date.isNull() && d->time.isNull();
executed: return d->date.isNull() && d->time.isNull();
Execution Count:3944
3944
831} -
832bool QDateTime::isValid() const -
833{ -
834 return d->date.isValid() && d->time.isValid();
executed: return d->date.isValid() && d->time.isValid();
Execution Count:30962
30962
835} -
836 -
837 -
838 -
839 -
840 -
841 -
842 -
843QDate QDateTime::date() const -
844{ -
845 return d->date;
executed: return d->date;
Execution Count:54417
54417
846} -
847 -
848 -
849 -
850 -
851 -
852 -
853 -
854QTime QDateTime::time() const -
855{ -
856 return d->time;
executed: return d->time;
Execution Count:45440
45440
857} -
858 -
859 -
860 -
861 -
862 -
863 -
864 -
865Qt::TimeSpec QDateTime::timeSpec() const -
866{ -
867 switch(d->spec) -
868 { -
869 case QDateTimePrivate::UTC: -
870 return Qt::UTC;
executed: return Qt::UTC;
Execution Count:1860
1860
871 case QDateTimePrivate::OffsetFromUTC: -
872 return Qt::OffsetFromUTC;
executed: return Qt::OffsetFromUTC;
Execution Count:7
7
873 default: -
874 return Qt::LocalTime;
executed: return Qt::LocalTime;
Execution Count:8049
8049
875 } -
876}
never executed: }
0
877void QDateTime::setDate(const QDate &date) -
878{ -
879 detach(); -
880 d->date = date; -
881 if (d->spec == QDateTimePrivate::LocalStandard
evaluated: d->spec == QDateTimePrivate::LocalStandard
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:12
1-12
882 || d->spec == QDateTimePrivate::LocalDST)
partially evaluated: d->spec == QDateTimePrivate::LocalDST
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:12
0-12
883 d->spec = QDateTimePrivate::LocalUnknown;
executed: d->spec = QDateTimePrivate::LocalUnknown;
Execution Count:1
1
884 if (date.isValid() && !d->time.isValid())
evaluated: date.isValid()
TRUEFALSE
yes
Evaluation Count:10
yes
Evaluation Count:3
evaluated: !d->time.isValid()
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:8
2-10
885 d->time = QTime(0, 0, 0);
executed: d->time = QTime(0, 0, 0);
Execution Count:2
2
886}
executed: }
Execution Count:13
13
887 -
888 -
889 -
890 -
891 -
892 -
893 -
894void QDateTime::setTime(const QTime &time) -
895{ -
896 detach(); -
897 if (d->spec == QDateTimePrivate::LocalStandard
evaluated: d->spec == QDateTimePrivate::LocalStandard
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:133
1-133
898 || d->spec == QDateTimePrivate::LocalDST)
partially evaluated: d->spec == QDateTimePrivate::LocalDST
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:133
0-133
899 d->spec = QDateTimePrivate::LocalUnknown;
executed: d->spec = QDateTimePrivate::LocalUnknown;
Execution Count:1
1
900 d->time = time; -
901}
executed: }
Execution Count:134
134
902void QDateTime::setTimeSpec(Qt::TimeSpec spec) -
903{ -
904 detach(); -
905 -
906 switch(spec) -
907 { -
908 case Qt::UTC: -
909 d->spec = QDateTimePrivate::UTC; -
910 break;
executed: break;
Execution Count:1599
1599
911 case Qt::OffsetFromUTC: -
912 d->spec = QDateTimePrivate::OffsetFromUTC; -
913 break;
executed: break;
Execution Count:1
1
914 default: -
915 d->spec = QDateTimePrivate::LocalUnknown; -
916 break;
executed: break;
Execution Count:10
10
917 } -
918}
executed: }
Execution Count:1610
1610
919 -
920qint64 toMSecsSinceEpoch_helper(qint64 jd, int msecs) -
921{ -
922 qint64 days = jd - JULIAN_DAY_FOR_EPOCH; -
923 qint64 retval = (days * MSECS_PER_DAY) + msecs; -
924 return retval;
executed: return retval;
Execution Count:7111
7111
925} -
926qint64 QDateTime::toMSecsSinceEpoch() const -
927{ -
928 QDate utcDate; -
929 QTime utcTime; -
930 d->getUTC(utcDate, utcTime); -
931 -
932 return toMSecsSinceEpoch_helper(utcDate.toJulianDay(), QTime(0, 0, 0).msecsTo(utcTime));
executed: return toMSecsSinceEpoch_helper(utcDate.toJulianDay(), QTime(0, 0, 0).msecsTo(utcTime));
Execution Count:1561
1561
933} -
934uint QDateTime::toTime_t() const -
935{ -
936 qint64 retval = toMSecsSinceEpoch() / 1000; -
937 if (quint64(retval) >= static_cast<unsigned long long>(0xFFFFFFFFULL))
evaluated: quint64(retval) >= static_cast<unsigned long long>(0xFFFFFFFFULL)
TRUEFALSE
yes
Evaluation Count:1438
yes
Evaluation Count:89
89-1438
938 return uint(-1);
executed: return uint(-1);
Execution Count:1438
1438
939 return uint(retval);
executed: return uint(retval);
Execution Count:89
89
940} -
941void QDateTime::setMSecsSinceEpoch(qint64 msecs) -
942{ -
943 detach(); -
944 -
945 QDateTimePrivate::Spec oldSpec = d->spec; -
946 -
947 qint64 ddays = msecs / MSECS_PER_DAY; -
948 msecs %= MSECS_PER_DAY; -
949 if (msecs < 0) {
evaluated: msecs < 0
TRUEFALSE
yes
Evaluation Count:6
yes
Evaluation Count:18
6-18
950 -
951 --ddays; -
952 msecs += MSECS_PER_DAY; -
953 }
executed: }
Execution Count:6
6
954 -
955 d->date = QDate(1970, 1, 1).addDays(ddays); -
956 d->time = QTime(0, 0, 0).addMSecs(msecs); -
957 d->spec = QDateTimePrivate::UTC; -
958 -
959 if (oldSpec != QDateTimePrivate::UTC)
evaluated: oldSpec != QDateTimePrivate::UTC
TRUEFALSE
yes
Evaluation Count:16
yes
Evaluation Count:8
8-16
960 d->spec = d->getLocal(d->date, d->time);
executed: d->spec = d->getLocal(d->date, d->time);
Execution Count:16
16
961}
executed: }
Execution Count:24
24
962void QDateTime::setTime_t(uint secsSince1Jan1970UTC) -
963{ -
964 detach(); -
965 -
966 QDateTimePrivate::Spec oldSpec = d->spec; -
967 -
968 d->date = QDate(1970, 1, 1).addDays(secsSince1Jan1970UTC / SECS_PER_DAY); -
969 d->time = QTime(0, 0, 0).addSecs(secsSince1Jan1970UTC % SECS_PER_DAY); -
970 d->spec = QDateTimePrivate::UTC; -
971 -
972 if (oldSpec != QDateTimePrivate::UTC)
evaluated: oldSpec != QDateTimePrivate::UTC
TRUEFALSE
yes
Evaluation Count:4555
yes
Evaluation Count:5
5-4555
973 d->spec = d->getLocal(d->date, d->time);
executed: d->spec = d->getLocal(d->date, d->time);
Execution Count:4555
4555
974}
executed: }
Execution Count:4560
4560
975QString QDateTime::toString(Qt::DateFormat f) const -
976{ -
977 QString buf; -
978 if (!isValid())
evaluated: !isValid()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:1617
1-1617
979 return buf;
executed: return buf;
Execution Count:1
1
980 -
981 if (f == Qt::ISODate) {
evaluated: f == Qt::ISODate
TRUEFALSE
yes
Evaluation Count:26
yes
Evaluation Count:1591
26-1591
982 buf = d->date.toString(Qt::ISODate); -
983 if (buf.isEmpty())
evaluated: buf.isEmpty()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:25
1-25
984 return QString();
executed: return QString();
Execution Count:1
1
985 buf += QLatin1Char('T'); -
986 buf += d->time.toString(Qt::ISODate); -
987 switch (d->spec) { -
988 case QDateTimePrivate::UTC: -
989 buf += QLatin1Char('Z'); -
990 break;
executed: break;
Execution Count:9
9
991 case QDateTimePrivate::OffsetFromUTC: { -
992 int sign = d->utcOffset >= 0 ? 1: -1;
evaluated: d->utcOffset >= 0
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:1
1
993 buf += QString::fromLatin1("%1%2:%3"). -
994 arg(sign == 1 ? QLatin1Char('+') : QLatin1Char('-')). -
995 arg(d->utcOffset * sign / SECS_PER_HOUR, 2, 10, QLatin1Char('0')). -
996 arg((d->utcOffset / 60) % 60, 2, 10, QLatin1Char('0')); -
997 break;
executed: break;
Execution Count:2
2
998 } -
999 default: -
1000 break;
executed: break;
Execution Count:14
14
1001 } -
1002 }
executed: }
Execution Count:25
25
1003 -
1004 else if (f == Qt::TextDate) {
evaluated: f == Qt::TextDate
TRUEFALSE
yes
Evaluation Count:57
yes
Evaluation Count:1534
57-1534
1005 -
1006 buf = d->date.shortDayName(d->date.dayOfWeek()); -
1007 buf += QLatin1Char(' '); -
1008 buf += d->date.shortMonthName(d->date.month()); -
1009 buf += QLatin1Char(' '); -
1010 buf += QString::number(d->date.day()); -
1011 buf += QLatin1Char(' '); -
1012 buf += d->time.toString(); -
1013 buf += QLatin1Char(' '); -
1014 buf += QString::number(d->date.year()); -
1015 }
executed: }
Execution Count:57
57
1016 -
1017 else { -
1018 buf = d->date.toString(f); -
1019 if (buf.isEmpty())
partially evaluated: buf.isEmpty()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:1534
0-1534
1020 return QString();
never executed: return QString();
0
1021 buf += QLatin1Char(' '); -
1022 buf += d->time.toString(f); -
1023 }
executed: }
Execution Count:1534
1534
1024 -
1025 return buf;
executed: return buf;
Execution Count:1616
1616
1026} -
1027QString QDateTime::toString(const QString& format) const -
1028{ -
1029 return fmtDateTime(format, &d->time, &d->date);
executed: return fmtDateTime(format, &d->time, &d->date);
Execution Count:1352
1352
1030} -
1031QDateTime QDateTime::addDays(qint64 ndays) const -
1032{ -
1033 return QDateTime(d->date.addDays(ndays), d->time, timeSpec());
executed: return QDateTime(d->date.addDays(ndays), d->time, timeSpec());
Execution Count:6263
6263
1034} -
1035QDateTime QDateTime::addMonths(int nmonths) const -
1036{ -
1037 return QDateTime(d->date.addMonths(nmonths), d->time, timeSpec());
executed: return QDateTime(d->date.addMonths(nmonths), d->time, timeSpec());
Execution Count:70
70
1038} -
1039QDateTime QDateTime::addYears(int nyears) const -
1040{ -
1041 return QDateTime(d->date.addYears(nyears), d->time, timeSpec());
executed: return QDateTime(d->date.addYears(nyears), d->time, timeSpec());
Execution Count:57
57
1042} -
1043 -
1044QDateTime QDateTimePrivate::addMSecs(const QDateTime &dt, qint64 msecs) -
1045{ -
1046 if (!dt.isValid())
evaluated: !dt.isValid()
TRUEFALSE
yes
Evaluation Count:5
yes
Evaluation Count:1871
5-1871
1047 return QDateTime();
executed: return QDateTime();
Execution Count:5
5
1048 -
1049 QDate utcDate; -
1050 QTime utcTime; -
1051 dt.d->getUTC(utcDate, utcTime); -
1052 -
1053 addMSecs(utcDate, utcTime, msecs); -
1054 -
1055 return QDateTime(utcDate, utcTime, Qt::UTC).toTimeSpec(dt.timeSpec());
executed: return QDateTime(utcDate, utcTime, Qt::UTC).toTimeSpec(dt.timeSpec());
Execution Count:1871
1871
1056} -
1057void QDateTimePrivate::addMSecs(QDate &utcDate, QTime &utcTime, qint64 msecs) -
1058{ -
1059 qint64 dd = utcDate.toJulianDay(); -
1060 int tt = QTime(0, 0, 0).msecsTo(utcTime); -
1061 int sign = 1; -
1062 if (msecs < 0) {
evaluated: msecs < 0
TRUEFALSE
yes
Evaluation Count:84
yes
Evaluation Count:1818
84-1818
1063 msecs = -msecs; -
1064 sign = -1; -
1065 }
executed: }
Execution Count:84
84
1066 if (msecs >= int(MSECS_PER_DAY)) {
evaluated: msecs >= int(MSECS_PER_DAY)
TRUEFALSE
yes
Evaluation Count:89
yes
Evaluation Count:1813
89-1813
1067 dd += sign * (msecs / MSECS_PER_DAY); -
1068 msecs %= MSECS_PER_DAY; -
1069 }
executed: }
Execution Count:89
89
1070 -
1071 tt += sign * msecs; -
1072 if (tt < 0) {
evaluated: tt < 0
TRUEFALSE
yes
Evaluation Count:15
yes
Evaluation Count:1887
15-1887
1073 tt = MSECS_PER_DAY - tt - 1; -
1074 dd -= tt / MSECS_PER_DAY; -
1075 tt = tt % MSECS_PER_DAY; -
1076 tt = MSECS_PER_DAY - tt - 1; -
1077 } else if (tt >= int(MSECS_PER_DAY)) {
executed: }
Execution Count:15
evaluated: tt >= int(MSECS_PER_DAY)
TRUEFALSE
yes
Evaluation Count:19
yes
Evaluation Count:1868
15-1868
1078 dd += tt / MSECS_PER_DAY; -
1079 tt = tt % MSECS_PER_DAY; -
1080 }
executed: }
Execution Count:19
19
1081 -
1082 utcDate = QDate::fromJulianDay(dd); -
1083 utcTime = QTime(0, 0, 0).addMSecs(tt); -
1084}
executed: }
Execution Count:1902
1902
1085QDateTime QDateTime::addSecs(qint64 s) const -
1086{ -
1087 return d->addMSecs(*this, s * 1000);
executed: return d->addMSecs(*this, s * 1000);
Execution Count:1812
1812
1088} -
1089QDateTime QDateTime::addMSecs(qint64 msecs) const -
1090{ -
1091 return d->addMSecs(*this, msecs);
executed: return d->addMSecs(*this, msecs);
Execution Count:64
64
1092} -
1093qint64 QDateTime::daysTo(const QDateTime &other) const -
1094{ -
1095 return d->date.daysTo(other.d->date);
executed: return d->date.daysTo(other.d->date);
Execution Count:114
114
1096} -
1097qint64 QDateTime::secsTo(const QDateTime &other) const -
1098{ -
1099 if (!isValid() || !other.isValid())
evaluated: !isValid()
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:5791
evaluated: !other.isValid()
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:5787
2-5791
1100 return 0;
executed: return 0;
Execution Count:6
6
1101 -
1102 QDate date1, date2; -
1103 QTime time1, time2; -
1104 -
1105 d->getUTC(date1, time1); -
1106 other.d->getUTC(date2, time2); -
1107 -
1108 return (date1.daysTo(date2) * SECS_PER_DAY) + time1.secsTo(time2);
executed: return (date1.daysTo(date2) * SECS_PER_DAY) + time1.secsTo(time2);
Execution Count:5787
5787
1109} -
1110qint64 QDateTime::msecsTo(const QDateTime &other) const -
1111{ -
1112 if (!isValid() || !other.isValid())
evaluated: !isValid()
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:45
partially evaluated: !other.isValid()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:45
0-45
1113 return 0;
executed: return 0;
Execution Count:2
2
1114 -
1115 QDate selfDate; -
1116 QDate otherDate; -
1117 QTime selfTime; -
1118 QTime otherTime; -
1119 -
1120 d->getUTC(selfDate, selfTime); -
1121 other.d->getUTC(otherDate, otherTime); -
1122 -
1123 return (static_cast<qint64>(selfDate.daysTo(otherDate)) * static_cast<qint64>(MSECS_PER_DAY)) 45
1124 + static_cast<qint64>(selfTime.msecsTo(otherTime));
executed: return (static_cast<qint64>(selfDate.daysTo(otherDate)) * static_cast<qint64>(MSECS_PER_DAY)) + static_cast<qint64>(selfTime.msecsTo(otherTime));
Execution Count:45
45
1125} -
1126QDateTime QDateTime::toTimeSpec(Qt::TimeSpec spec) const -
1127{ -
1128 if ((d->spec == QDateTimePrivate::UTC) == (spec == Qt::UTC))
evaluated: (d->spec == QDateTimePrivate::UTC) == (spec == Qt::UTC)
TRUEFALSE
yes
Evaluation Count:14433
yes
Evaluation Count:2680
2680-14433
1129 return *this;
executed: return *this;
Execution Count:14433
14433
1130 -
1131 QDateTime ret; -
1132 if (spec == Qt::UTC) {
evaluated: spec == Qt::UTC
TRUEFALSE
yes
Evaluation Count:1701
yes
Evaluation Count:979
979-1701
1133 d->getUTC(ret.d->date, ret.d->time); -
1134 ret.d->spec = QDateTimePrivate::UTC; -
1135 } else {
executed: }
Execution Count:1701
1701
1136 ret.d->spec = d->getLocal(ret.d->date, ret.d->time); -
1137 }
executed: }
Execution Count:979
979
1138 return ret;
executed: return ret;
Execution Count:2680
2680
1139} -
1140bool QDateTime::operator==(const QDateTime &other) const -
1141{ -
1142 if (d->spec == other.d->spec && d->utcOffset == other.d->utcOffset)
evaluated: d->spec == other.d->spec
TRUEFALSE
yes
Evaluation Count:46488
yes
Evaluation Count:319
evaluated: d->utcOffset == other.d->utcOffset
TRUEFALSE
yes
Evaluation Count:46484
yes
Evaluation Count:4
4-46488
1143 return d->time == other.d->time && d->date == other.d->date;
executed: return d->time == other.d->time && d->date == other.d->date;
Execution Count:46484
46484
1144 else { -
1145 QDate date1, date2; -
1146 QTime time1, time2; -
1147 -
1148 d->getUTC(date1, time1); -
1149 other.d->getUTC(date2, time2); -
1150 return time1 == time2 && date1 == date2;
executed: return time1 == time2 && date1 == date2;
Execution Count:323
323
1151 } -
1152} -
1153bool QDateTime::operator<(const QDateTime &other) const -
1154{ -
1155 if (d->spec == other.d->spec && d->spec != QDateTimePrivate::OffsetFromUTC) {
evaluated: d->spec == other.d->spec
TRUEFALSE
yes
Evaluation Count:29129
yes
Evaluation Count:2035
evaluated: d->spec != QDateTimePrivate::OffsetFromUTC
TRUEFALSE
yes
Evaluation Count:29127
yes
Evaluation Count:2
2-29129
1156 if (d->date != other.d->date)
evaluated: d->date != other.d->date
TRUEFALSE
yes
Evaluation Count:13776
yes
Evaluation Count:15351
13776-15351
1157 return d->date < other.d->date;
executed: return d->date < other.d->date;
Execution Count:13776
13776
1158 return d->time < other.d->time;
executed: return d->time < other.d->time;
Execution Count:15351
15351
1159 } else { -
1160 QDate date1, date2; -
1161 QTime time1, time2; -
1162 d->getUTC(date1, time1); -
1163 other.d->getUTC(date2, time2); -
1164 if (date1 != date2)
evaluated: date1 != date2
TRUEFALSE
yes
Evaluation Count:2012
yes
Evaluation Count:25
25-2012
1165 return date1 < date2;
executed: return date1 < date2;
Execution Count:2012
2012
1166 return time1 < time2;
executed: return time1 < time2;
Execution Count:25
25
1167 } -
1168} -
1169static inline uint msecsFromDecomposed(int hour, int minute, int sec, int msec = 0) -
1170{ -
1171 return MSECS_PER_HOUR * hour + MSECS_PER_MIN * minute + 1000 * sec + msec;
executed: return MSECS_PER_HOUR * hour + MSECS_PER_MIN * minute + 1000 * sec + msec;
Execution Count:14116959
14116959
1172} -
1173QDate QDate::currentDate() -
1174{ -
1175 QDate d; -
1176 -
1177 time_t ltime; -
1178 time(&ltime); -
1179 struct tm *t = 0; -
1180 -
1181 -
1182 -
1183 tzset(); -
1184 struct tm res; -
1185 t = localtime_r(&ltime, &res); -
1186 -
1187 -
1188 -
1189 -
1190 d.jd = julianDayFromDate(t->tm_year + 1900, t->tm_mon + 1, t->tm_mday); -
1191 return d;
executed: return d;
Execution Count:70
70
1192} -
1193 -
1194QTime QTime::currentTime() -
1195{ -
1196 QTime ct; -
1197 -
1198 struct timeval tv; -
1199 gettimeofday(&tv, 0); -
1200 time_t ltime = tv.tv_sec; -
1201 struct tm *t = 0; -
1202 -
1203 -
1204 -
1205 tzset(); -
1206 struct tm res; -
1207 t = localtime_r(&ltime, &res); -
1208 -
1209 -
1210 -
1211 do { if (!(t)) qBadAlloc(); } while (0);
partially evaluated: 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:14107447
never executed: qBadAlloc();
executed: }
Execution Count:14107405
partially evaluated: !(t)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:14107432
0-14107447
1212 -
1213 ct.mds = msecsFromDecomposed(t->tm_hour, t->tm_min, t->tm_sec, tv.tv_usec / 1000); -
1214 return ct;
executed: return ct;
Execution Count:14107388
14107388
1215} -
1216 -
1217QDateTime QDateTime::currentDateTime() -
1218{ -
1219 -
1220 -
1221 struct timeval tv; -
1222 gettimeofday(&tv, 0); -
1223 time_t ltime = tv.tv_sec; -
1224 struct tm *t = 0; -
1225 -
1226 -
1227 -
1228 tzset(); -
1229 struct tm res; -
1230 t = localtime_r(&ltime, &res); -
1231 -
1232 -
1233 -
1234 -
1235 QDateTime dt; -
1236 dt.d->time.mds = msecsFromDecomposed(t->tm_hour, t->tm_min, t->tm_sec, tv.tv_usec / 1000); -
1237 -
1238 dt.d->date.jd = julianDayFromDate(t->tm_year + 1900, t->tm_mon + 1, t->tm_mday); -
1239 dt.d->spec = t->tm_isdst > 0 ? QDateTimePrivate::LocalDST :
partially evaluated: t->tm_isdst > 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:9602
0-9602
1240 t->tm_isdst == 0 ? QDateTimePrivate::LocalStandard : -
1241 QDateTimePrivate::LocalUnknown; -
1242 return dt;
executed: return dt;
Execution Count:9602
9602
1243} -
1244 -
1245QDateTime QDateTime::currentDateTimeUtc() -
1246{ -
1247 -
1248 -
1249 struct timeval tv; -
1250 gettimeofday(&tv, 0); -
1251 time_t ltime = tv.tv_sec; -
1252 struct tm *t = 0; -
1253 -
1254 -
1255 -
1256 struct tm res; -
1257 t = gmtime_r(&ltime, &res); -
1258 -
1259 -
1260 -
1261 -
1262 QDateTime dt; -
1263 dt.d->time.mds = msecsFromDecomposed(t->tm_hour, t->tm_min, t->tm_sec, tv.tv_usec / 1000); -
1264 -
1265 dt.d->date.jd = julianDayFromDate(t->tm_year + 1900, t->tm_mon + 1, t->tm_mday); -
1266 dt.d->spec = QDateTimePrivate::UTC; -
1267 return dt;
executed: return dt;
Execution Count:4
4
1268} -
1269 -
1270qint64 QDateTime::currentMSecsSinceEpoch() -
1271{ -
1272 -
1273 -
1274 struct timeval tv; -
1275 gettimeofday(&tv, 0); -
1276 return qint64(tv.tv_sec) * static_cast<long long>(1000LL) + tv.tv_usec / 1000;
executed: return qint64(tv.tv_sec) * static_cast<long long>(1000LL) + tv.tv_usec / 1000;
Execution Count:1
1
1277} -
1278QDateTime QDateTime::fromTime_t(uint seconds) -
1279{ -
1280 QDateTime d; -
1281 d.setTime_t(seconds); -
1282 return d;
executed: return d;
Execution Count:4542
4542
1283} -
1284QDateTime QDateTime::fromMSecsSinceEpoch(qint64 msecs) -
1285{ -
1286 QDateTime d; -
1287 d.setMSecsSinceEpoch(msecs); -
1288 return d;
executed: return d;
Execution Count:8
8
1289} -
1290void QDateTime::setUtcOffset(int seconds) -
1291{ -
1292 detach(); -
1293 -
1294 -
1295 -
1296 -
1297 if(seconds == 0)
evaluated: seconds == 0
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:15
1-15
1298 d->spec = QDateTimePrivate::UTC;
executed: d->spec = QDateTimePrivate::UTC;
Execution Count:1
1
1299 else -
1300 d->spec = QDateTimePrivate::OffsetFromUTC;
executed: d->spec = QDateTimePrivate::OffsetFromUTC;
Execution Count:15
15
1301 -
1302 -
1303 d->utcOffset = seconds; -
1304}
executed: }
Execution Count:16
16
1305int QDateTime::utcOffset() const -
1306{ -
1307 if(isValid() && d->spec == QDateTimePrivate::OffsetFromUTC)
evaluated: isValid()
TRUEFALSE
yes
Evaluation Count:7
yes
Evaluation Count:1
evaluated: d->spec == QDateTimePrivate::OffsetFromUTC
TRUEFALSE
yes
Evaluation Count:5
yes
Evaluation Count:2
1-7
1308 return d->utcOffset;
executed: return d->utcOffset;
Execution Count:5
5
1309 else -
1310 return 0;
executed: return 0;
Execution Count:3
3
1311} -
1312 -
1313 -
1314 -
1315static int fromShortMonthName(const QString &monthName) -
1316{ -
1317 -
1318 for (int i = 0; i < 12; ++i) {
evaluated: i < 12
TRUEFALSE
yes
Evaluation Count:246
yes
Evaluation Count:15
15-246
1319 if (monthName == QLatin1String(qt_shortMonthNames[i]))
evaluated: monthName == QLatin1String(qt_shortMonthNames[i])
TRUEFALSE
yes
Evaluation Count:34
yes
Evaluation Count:212
34-212
1320 return i + 1;
executed: return i + 1;
Execution Count:34
34
1321 }
executed: }
Execution Count:212
212
1322 -
1323 for (int i = 1; i <= 12; ++i) {
evaluated: i <= 12
TRUEFALSE
yes
Evaluation Count:180
yes
Evaluation Count:15
15-180
1324 if (monthName == QDate::shortMonthName(i))
partially evaluated: monthName == QDate::shortMonthName(i)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:180
0-180
1325 return i;
never executed: return i;
0
1326 }
executed: }
Execution Count:180
180
1327 return -1;
executed: return -1;
Execution Count:15
15
1328} -
1329QDateTime QDateTime::fromString(const QString& s, Qt::DateFormat f) -
1330{ -
1331 if (s.isEmpty()) {
evaluated: s.isEmpty()
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:98
2-98
1332 return QDateTime();
executed: return QDateTime();
Execution Count:2
2
1333 } -
1334 -
1335 switch (f) { -
1336 case Qt::ISODate: { -
1337 QString tmp = s; -
1338 Qt::TimeSpec ts = Qt::LocalTime; -
1339 QDate date = QDate::fromString(tmp.left(10), Qt::ISODate); -
1340 if (tmp.size() == 10)
evaluated: tmp.size() == 10
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:54
1-54
1341 return QDateTime(date);
executed: return QDateTime(date);
Execution Count:1
1
1342 -
1343 tmp = tmp.mid(11); -
1344 -
1345 -
1346 if (tmp.endsWith(QLatin1Char('Z'))) {
evaluated: tmp.endsWith(QLatin1Char('Z'))
TRUEFALSE
yes
Evaluation Count:5
yes
Evaluation Count:49
5-49
1347 ts = Qt::UTC; -
1348 tmp.chop(1); -
1349 }
executed: }
Execution Count:5
5
1350 -
1351 -
1352 QRegExp rx(QLatin1String("[+-]")); -
1353 if (tmp.contains(rx)) {
evaluated: tmp.contains(rx)
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:50
4-50
1354 int idx = tmp.indexOf(rx); -
1355 QString tmp2 = tmp.mid(idx); -
1356 tmp = tmp.left(idx); -
1357 bool ok = true; -
1358 int ntzhour = 1; -
1359 int ntzminute = 3; -
1360 if ( tmp2.indexOf(QLatin1Char(':')) == 3 )
evaluated: tmp2.indexOf(QLatin1Char(':')) == 3
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:1
1-3
1361 ntzminute = 4;
executed: ntzminute = 4;
Execution Count:3
3
1362 const int tzhour(tmp2.mid(ntzhour, 2).toInt(&ok)); -
1363 const int tzminute(tmp2.mid(ntzminute, 2).toInt(&ok)); -
1364 QTime tzt(tzhour, tzminute); -
1365 int utcOffset = (tzt.hour() * 60 + tzt.minute()) * 60; -
1366 if ( utcOffset != 0 ) {
evaluated: utcOffset != 0
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:2
2
1367 ts = Qt::OffsetFromUTC; -
1368 QDateTime dt(date, QTime::fromString(tmp, Qt::ISODate), ts); -
1369 dt.setUtcOffset( utcOffset * (tmp2.startsWith(QLatin1Char('-')) ? -1 : 1) ); -
1370 return dt;
executed: return dt;
Execution Count:2
2
1371 } -
1372 }
executed: }
Execution Count:2
2
1373 -
1374 bool isMidnight24 = false; -
1375 -
1376 QTime time(fromStringImpl(tmp, Qt::ISODate, isMidnight24)); -
1377 if (isMidnight24) {
evaluated: isMidnight24
TRUEFALSE
yes
Evaluation Count:5
yes
Evaluation Count:47
5-47
1378 -
1379 date = date.addDays(1); -
1380 }
executed: }
Execution Count:5
5
1381 -
1382 return QDateTime(date, time, ts);
executed: return QDateTime(date, time, ts);
Execution Count:52
52
1383 } -
1384 case Qt::SystemLocaleDate: -
1385 case Qt::SystemLocaleShortDate: -
1386 case Qt::SystemLocaleLongDate: -
1387 return fromString(s, QLocale::system().dateTimeFormat(f == Qt::SystemLocaleLongDate ? QLocale::LongFormat 3
1388 : QLocale::ShortFormat));
executed: return fromString(s, QLocale::system().dateTimeFormat(f == Qt::SystemLocaleLongDate ? QLocale::LongFormat : QLocale::ShortFormat));
Execution Count:3
3
1389 case Qt::LocaleDate: -
1390 case Qt::DefaultLocaleShortDate: -
1391 case Qt::DefaultLocaleLongDate: -
1392 return fromString(s, QLocale().dateTimeFormat(f == Qt::DefaultLocaleLongDate ? QLocale::LongFormat 3
1393 : QLocale::ShortFormat));
executed: return fromString(s, QLocale().dateTimeFormat(f == Qt::DefaultLocaleLongDate ? QLocale::LongFormat : QLocale::ShortFormat));
Execution Count:3
3
1394 -
1395 case Qt::TextDate: { -
1396 QStringList parts = s.split(QLatin1Char(' '), QString::SkipEmptyParts); -
1397 -
1398 if ((parts.count() < 5) || (parts.count() > 6)) {
evaluated: (parts.count() < 5)
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:36
evaluated: (parts.count() > 6)
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:35
1-36
1399 return QDateTime();
executed: return QDateTime();
Execution Count:2
2
1400 } -
1401 -
1402 -
1403 int month = -1, day = -1; -
1404 bool ok; -
1405 -
1406 month = fromShortMonthName(parts.at(1)); -
1407 if (month != -1) {
evaluated: month != -1
TRUEFALSE
yes
Evaluation Count:22
yes
Evaluation Count:13
13-22
1408 day = parts.at(2).toInt(&ok); -
1409 if (!ok)
evaluated: !ok
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:21
1-21
1410 day = -1;
executed: day = -1;
Execution Count:1
1
1411 }
executed: }
Execution Count:22
22
1412 -
1413 if (month == -1 || day == -1) {
evaluated: month == -1
TRUEFALSE
yes
Evaluation Count:13
yes
Evaluation Count:22
evaluated: day == -1
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:21
1-22
1414 -
1415 month = fromShortMonthName(parts.at(2)); -
1416 if (month != -1) {
evaluated: month != -1
TRUEFALSE
yes
Evaluation Count:12
yes
Evaluation Count:2
2-12
1417 QString dayStr = parts.at(1); -
1418 if (dayStr.endsWith(QLatin1Char('.'))) {
evaluated: dayStr.endsWith(QLatin1Char('.'))
TRUEFALSE
yes
Evaluation Count:11
yes
Evaluation Count:1
1-11
1419 dayStr.chop(1); -
1420 day = dayStr.toInt(&ok); -
1421 if (!ok)
evaluated: !ok
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:10
1-10
1422 day = -1;
executed: day = -1;
Execution Count:1
1
1423 } else {
executed: }
Execution Count:11
11
1424 day = -1; -
1425 }
executed: }
Execution Count:1
1
1426 } -
1427 }
executed: }
Execution Count:14
14
1428 -
1429 if (month == -1 || day == -1) {
evaluated: month == -1
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:33
evaluated: day == -1
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:31
2-33
1430 -
1431 return QDateTime();
executed: return QDateTime();
Execution Count:4
4
1432 } -
1433 -
1434 int year; -
1435 QStringList timeParts = parts.at(3).split(QLatin1Char(':')); -
1436 if ((timeParts.count() == 3) || (timeParts.count() == 2)) {
evaluated: (timeParts.count() == 3)
TRUEFALSE
yes
Evaluation Count:17
yes
Evaluation Count:14
evaluated: (timeParts.count() == 2)
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:13
1-17
1437 -
1438 year = parts.at(4).toInt(&ok); -
1439 if (!ok)
evaluated: !ok
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:17
1-17
1440 return QDateTime();
executed: return QDateTime();
Execution Count:1
1
1441 } else {
executed: }
Execution Count:17
17
1442 timeParts = parts.at(4).split(QLatin1Char(':')); -
1443 if ((timeParts.count() != 3) && (timeParts.count() != 2))
evaluated: (timeParts.count() != 3)
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:11
partially evaluated: (timeParts.count() != 2)
TRUEFALSE
yes
Evaluation Count:2
no
Evaluation Count:0
0-11
1444 return QDateTime();
executed: return QDateTime();
Execution Count:2
2
1445 year = parts.at(3).toInt(&ok); -
1446 if (!ok)
evaluated: !ok
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:10
1-10
1447 return QDateTime();
executed: return QDateTime();
Execution Count:1
1
1448 }
executed: }
Execution Count:10
10
1449 -
1450 int hour = timeParts.at(0).toInt(&ok); -
1451 if (!ok) {
evaluated: !ok
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:26
1-26
1452 return QDateTime();
executed: return QDateTime();
Execution Count:1
1
1453 } -
1454 -
1455 int minute = timeParts.at(1).toInt(&ok); -
1456 if (!ok) {
evaluated: !ok
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:25
1-25
1457 return QDateTime();
executed: return QDateTime();
Execution Count:1
1
1458 } -
1459 -
1460 int second = (timeParts.count() > 2) ? timeParts.at(2).toInt(&ok) : 0;
evaluated: (timeParts.count() > 2)
TRUEFALSE
yes
Evaluation Count:24
yes
Evaluation Count:1
1-24
1461 if (!ok) {
evaluated: !ok
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:24
1-24
1462 return QDateTime();
executed: return QDateTime();
Execution Count:1
1
1463 } -
1464 -
1465 QDate date(year, month, day); -
1466 QTime time(hour, minute, second); -
1467 -
1468 if (parts.count() == 5)
evaluated: parts.count() == 5
TRUEFALSE
yes
Evaluation Count:14
yes
Evaluation Count:10
10-14
1469 return QDateTime(date, time, Qt::LocalTime);
executed: return QDateTime(date, time, Qt::LocalTime);
Execution Count:14
14
1470 -
1471 QString tz = parts.at(5); -
1472 if (!tz.startsWith(QLatin1String("GMT"), Qt::CaseInsensitive))
evaluated: !tz.startsWith(QLatin1String("GMT"), Qt::CaseInsensitive)
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:9
1-9
1473 return QDateTime();
executed: return QDateTime();
Execution Count:1
1
1474 QDateTime dt(date, time, Qt::UTC); -
1475 if (tz.length() > 3) {
evaluated: tz.length() > 3
TRUEFALSE
yes
Evaluation Count:7
yes
Evaluation Count:2
2-7
1476 int tzoffset = 0; -
1477 QChar sign = tz.at(3); -
1478 if ((sign != QLatin1Char('+'))
evaluated: (sign != QLatin1Char('+'))
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:5
2-5
1479 && (sign != QLatin1Char('-'))) {
evaluated: (sign != QLatin1Char('-'))
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:1
1
1480 return QDateTime();
executed: return QDateTime();
Execution Count:1
1
1481 } -
1482 int tzhour = tz.mid(4, 2).toInt(&ok); -
1483 if (!ok)
evaluated: !ok
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:4
2-4
1484 return QDateTime();
executed: return QDateTime();
Execution Count:2
2
1485 int tzminute = tz.mid(6).toInt(&ok); -
1486 if (!ok)
evaluated: !ok
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:3
1-3
1487 return QDateTime();
executed: return QDateTime();
Execution Count:1
1
1488 tzoffset = (tzhour*60 + tzminute) * 60; -
1489 if (sign == QLatin1Char('-'))
evaluated: sign == QLatin1Char('-')
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:2
1-2
1490 tzoffset = -tzoffset;
executed: tzoffset = -tzoffset;
Execution Count:1
1
1491 dt.setUtcOffset(tzoffset); -
1492 }
executed: }
Execution Count:3
3
1493 return dt.toLocalTime();
executed: return dt.toLocalTime();
Execution Count:5
5
1494 } -
1495 -
1496 } -
1497 -
1498 return QDateTime();
never executed: return QDateTime();
0
1499} -
1500QDateTime QDateTime::fromString(const QString &string, const QString &format) -
1501{ -
1502 -
1503 QTime time; -
1504 QDate date; -
1505 -
1506 QDateTimeParser dt(QVariant::DateTime, QDateTimeParser::FromString); -
1507 if (dt.parseFormat(format) && dt.fromString(string, &date, &time))
partially evaluated: dt.parseFormat(format)
TRUEFALSE
yes
Evaluation Count:47
no
Evaluation Count:0
evaluated: dt.fromString(string, &date, &time)
TRUEFALSE
yes
Evaluation Count:38
yes
Evaluation Count:9
0-47
1508 return QDateTime(date, time);
executed: return QDateTime(date, time);
Execution Count:38
38
1509 -
1510 -
1511 -
1512 -
1513 return QDateTime(QDate(), QTime(-1, -1, -1));
executed: return QDateTime(QDate(), QTime(-1, -1, -1));
Execution Count:9
9
1514} -
1515void QDateTime::detach() -
1516{ -
1517 d.detach(); -
1518}
executed: }
Execution Count:6676
6676
1519QDataStream &operator<<(QDataStream &out, const QDate &date) -
1520{ -
1521 if (out.version() < QDataStream::Qt_5_0)
evaluated: out.version() < QDataStream::Qt_5_0
TRUEFALSE
yes
Evaluation Count:158
yes
Evaluation Count:387
158-387
1522 return out << quint32(date.jd);
executed: return out << quint32(date.jd);
Execution Count:158
158
1523 else -
1524 return out << qint64(date.jd);
executed: return out << qint64(date.jd);
Execution Count:387
387
1525} -
1526QDataStream &operator>>(QDataStream &in, QDate &date) -
1527{ -
1528 if (in.version() < QDataStream::Qt_5_0) {
evaluated: in.version() < QDataStream::Qt_5_0
TRUEFALSE
yes
Evaluation Count:160
yes
Evaluation Count:381
160-381
1529 quint32 jd; -
1530 in >> jd; -
1531 -
1532 date.jd = (jd != 0 ? jd : QDate::nullJd());
evaluated: jd != 0
TRUEFALSE
yes
Evaluation Count:144
yes
Evaluation Count:16
16-144
1533 } else {
executed: }
Execution Count:160
160
1534 qint64 jd; -
1535 in >> jd; -
1536 date.jd = jd; -
1537 }
executed: }
Execution Count:381
381
1538 -
1539 return in;
executed: return in;
Execution Count:541
541
1540} -
1541QDataStream &operator<<(QDataStream &out, const QTime &time) -
1542{ -
1543 return out << quint32(time.mds);
executed: return out << quint32(time.mds);
Execution Count:744
744
1544} -
1545QDataStream &operator>>(QDataStream &in, QTime &time) -
1546{ -
1547 quint32 ds; -
1548 in >> ds; -
1549 time.mds = int(ds); -
1550 return in;
executed: return in;
Execution Count:740
740
1551} -
1552QDataStream &operator<<(QDataStream &out, const QDateTime &dateTime) -
1553{ -
1554 if (out.version() >= 13) {
evaluated: out.version() >= 13
TRUEFALSE
yes
Evaluation Count:282
yes
Evaluation Count:97
97-282
1555 if (dateTime.isValid()) {
evaluated: dateTime.isValid()
TRUEFALSE
yes
Evaluation Count:170
yes
Evaluation Count:112
112-170
1556 QDateTime asUTC = dateTime.toUTC(); -
1557 out << asUTC.d->date << asUTC.d->time; -
1558 } else {
executed: }
Execution Count:170
170
1559 out << dateTime.d->date << dateTime.d->time; -
1560 }
executed: }
Execution Count:112
112
1561 out << (qint8)dateTime.timeSpec(); -
1562 } else {
executed: }
Execution Count:282
282
1563 out << dateTime.d->date << dateTime.d->time; -
1564 if (out.version() >= 7)
evaluated: out.version() >= 7
TRUEFALSE
yes
Evaluation Count:49
yes
Evaluation Count:48
48-49
1565 out << (qint8)dateTime.d->spec;
executed: out << (qint8)dateTime.d->spec;
Execution Count:49
49
1566 }
executed: }
Execution Count:97
97
1567 return out;
executed: return out;
Execution Count:379
379
1568} -
1569QDataStream &operator>>(QDataStream &in, QDateTime &dateTime) -
1570{ -
1571 dateTime.detach(); -
1572 -
1573 in >> dateTime.d->date >> dateTime.d->time; -
1574 -
1575 if (in.version() >= 13) {
evaluated: in.version() >= 13
TRUEFALSE
yes
Evaluation Count:269
yes
Evaluation Count:50
50-269
1576 qint8 ts = 0; -
1577 in >> ts; -
1578 if (dateTime.isValid()) {
evaluated: dateTime.isValid()
TRUEFALSE
yes
Evaluation Count:179
yes
Evaluation Count:90
90-179
1579 -
1580 dateTime.d->spec = QDateTimePrivate::UTC; -
1581 dateTime = dateTime.toTimeSpec(static_cast<Qt::TimeSpec>(ts)); -
1582 }
executed: }
Execution Count:179
179
1583 } else {
executed: }
Execution Count:269
269
1584 qint8 ts = (qint8)QDateTimePrivate::LocalUnknown; -
1585 if (in.version() >= 7)
evaluated: in.version() >= 7
TRUEFALSE
yes
Evaluation Count:26
yes
Evaluation Count:24
24-26
1586 in >> ts;
executed: in >> ts;
Execution Count:26
26
1587 dateTime.d->spec = (QDateTimePrivate::Spec)ts; -
1588 }
executed: }
Execution Count:50
50
1589 return in;
executed: return in;
Execution Count:319
319
1590} -
1591 -
1592 -
1593 -
1594 -
1595 -
1596static bool hasUnquotedAP(const QString &f) -
1597{ -
1598 const QLatin1Char quote('\''); -
1599 bool inquote = false; -
1600 const int max = f.size(); -
1601 for (int i=0; i<max; ++i) {
evaluated: i<max
TRUEFALSE
yes
Evaluation Count:322291
yes
Evaluation Count:27866
27866-322291
1602 if (f.at(i) == quote) {
evaluated: f.at(i) == quote
TRUEFALSE
yes
Evaluation Count:24
yes
Evaluation Count:322267
24-322267
1603 inquote = !inquote; -
1604 } else if (!inquote && f.at(i).toUpper() == QLatin1Char('A')
evaluated: !inquote
TRUEFALSE
yes
Evaluation Count:322244
yes
Evaluation Count:23
evaluated: f.at(i).toUpper() == QLatin1Char('A')
TRUEFALSE
yes
Evaluation Count:16
yes
Evaluation Count:322228
executed: }
Execution Count:24
16-322244
1605 && i + 1 < max && f.at(i + 1).toUpper() == QLatin1Char('P')) {
evaluated: i + 1 < max
TRUEFALSE
yes
Evaluation Count:15
yes
Evaluation Count:1
evaluated: f.at(i + 1).toUpper() == QLatin1Char('P')
TRUEFALSE
yes
Evaluation Count:8
yes
Evaluation Count:7
1-15
1606 return true;
executed: return true;
Execution Count:8
8
1607 } -
1608 } -
1609 return false;
executed: return false;
Execution Count:27866
27866
1610} -
1611 -
1612 -
1613 -
1614 -
1615 -
1616 -
1617 -
1618static QString getFmtString(const QString& f, const QTime* dt = 0, const QDate* dd = 0, bool am_pm = false) -
1619{ -
1620 if (f.isEmpty())
evaluated: f.isEmpty()
TRUEFALSE
yes
Evaluation Count:102193
yes
Evaluation Count:102203
102193-102203
1621 return QString();
executed: return QString();
Execution Count:102193
102193
1622 -
1623 QString buf = f; -
1624 int removed = 0; -
1625 -
1626 if (dt) {
evaluated: dt
TRUEFALSE
yes
Evaluation Count:62837
yes
Evaluation Count:39366
39366-62837
1627 if (f.startsWith(QLatin1String("hh")) || f.startsWith(QLatin1String("HH"))) {
evaluated: f.startsWith(QLatin1String("hh"))
TRUEFALSE
yes
Evaluation Count:14719
yes
Evaluation Count:48118
evaluated: f.startsWith(QLatin1String("HH"))
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:48116
2-48118
1628 const bool hour12 = f.at(0) == QLatin1Char('h') && am_pm;
evaluated: f.at(0) == QLatin1Char('h')
TRUEFALSE
yes
Evaluation Count:14719
yes
Evaluation Count:2
evaluated: am_pm
TRUEFALSE
yes
Evaluation Count:7
yes
Evaluation Count:14712
2-14719
1629 if (hour12 && dt->hour() > 12)
evaluated: hour12
TRUEFALSE
yes
Evaluation Count:7
yes
Evaluation Count:14714
evaluated: dt->hour() > 12
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:3
3-14714
1630 buf = QString::number(dt->hour() - 12).rightJustified(2, QLatin1Char('0'), true);
executed: buf = QString::number(dt->hour() - 12).rightJustified(2, QLatin1Char('0'), true);
Execution Count:4
4
1631 else if (hour12 && dt->hour() == 0)
evaluated: hour12
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:14714
evaluated: dt->hour() == 0
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:2
1-14714
1632 buf = QLatin1String("12");
executed: buf = QLatin1String("12");
Execution Count:1
1
1633 else -
1634 buf = QString::number(dt->hour()).rightJustified(2, QLatin1Char('0'), true);
executed: buf = QString::number(dt->hour()).rightJustified(2, QLatin1Char('0'), true);
Execution Count:14716
14716
1635 removed = 2; -
1636 } else if (f.at(0) == QLatin1Char('h') || f.at(0) == QLatin1Char('H')) {
evaluated: f.at(0) == QLatin1Char('h')
TRUEFALSE
yes
Evaluation Count:6
yes
Evaluation Count:48110
evaluated: f.at(0) == QLatin1Char('H')
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:48108
executed: }
Execution Count:14721
2-48110
1637 const bool hour12 = f.at(0) == QLatin1Char('h') && am_pm;
evaluated: f.at(0) == QLatin1Char('h')
TRUEFALSE
yes
Evaluation Count:6
yes
Evaluation Count:2
evaluated: am_pm
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:3
2-6
1638 if (hour12 && dt->hour() > 12)
evaluated: hour12
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:5
evaluated: dt->hour() > 12
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:2
1-5
1639 buf = QString::number(dt->hour() - 12);
executed: buf = QString::number(dt->hour() - 12);
Execution Count:1
1
1640 else if (hour12 && dt->hour() == 0)
evaluated: hour12
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:5
evaluated: dt->hour() == 0
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:1
1-5
1641 buf = QLatin1String("12");
executed: buf = QLatin1String("12");
Execution Count:1
1
1642 else -
1643 buf = QString::number(dt->hour());
executed: buf = QString::number(dt->hour());
Execution Count:6
6
1644 removed = 1; -
1645 } else if (f.startsWith(QLatin1String("mm"))) {
evaluated: f.startsWith(QLatin1String("mm"))
TRUEFALSE
yes
Evaluation Count:14706
yes
Evaluation Count:33402
executed: }
Execution Count:8
8-33402
1646 buf = QString::number(dt->minute()).rightJustified(2, QLatin1Char('0'), true); -
1647 removed = 2; -
1648 } else if (f.at(0) == (QLatin1Char('m'))) {
evaluated: f.at(0) == (QLatin1Char('m'))
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:33400
executed: }
Execution Count:14706
2-33400
1649 buf = QString::number(dt->minute()); -
1650 removed = 1; -
1651 } else if (f.startsWith(QLatin1String("ss"))) {
evaluated: f.startsWith(QLatin1String("ss"))
TRUEFALSE
yes
Evaluation Count:14708
yes
Evaluation Count:18692
executed: }
Execution Count:2
2-18692
1652 buf = QString::number(dt->second()).rightJustified(2, QLatin1Char('0'), true); -
1653 removed = 2; -
1654 } else if (f.at(0) == QLatin1Char('s')) {
evaluated: f.at(0) == QLatin1Char('s')
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:18691
executed: }
Execution Count:14708
1-18691
1655 buf = QString::number(dt->second()); -
1656 } else if (f.startsWith(QLatin1String("zzz"))) {
evaluated: f.startsWith(QLatin1String("zzz"))
TRUEFALSE
yes
Evaluation Count:14722
yes
Evaluation Count:3969
executed: }
Execution Count:1
1-14722
1657 buf = QString::number(dt->msec()).rightJustified(3, QLatin1Char('0'), true); -
1658 removed = 3; -
1659 } else if (f.at(0) == QLatin1Char('z')) {
evaluated: f.at(0) == QLatin1Char('z')
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:3967
executed: }
Execution Count:14722
2-14722
1660 buf = QString::number(dt->msec()); -
1661 removed = 1; -
1662 } else if (f.at(0).toUpper() == QLatin1Char('A')) {
executed: }
Execution Count:2
evaluated: f.at(0).toUpper() == QLatin1Char('A')
TRUEFALSE
yes
Evaluation Count:14
yes
Evaluation Count:3953
2-3953
1663 const bool upper = f.at(0) == QLatin1Char('A'); -
1664 buf = dt->hour() < 12 ? QLatin1String("am") : QLatin1String("pm");
evaluated: dt->hour() < 12
TRUEFALSE
yes
Evaluation Count:7
yes
Evaluation Count:7
7
1665 if (upper)
evaluated: upper
TRUEFALSE
yes
Evaluation Count:8
yes
Evaluation Count:6
6-8
1666 buf = buf.toUpper();
executed: buf = buf.toUpper();
Execution Count:8
8
1667 if (f.size() > 1 && f.at(1).toUpper() == QLatin1Char('P') &&
evaluated: f.size() > 1
TRUEFALSE
yes
Evaluation Count:9
yes
Evaluation Count:5
partially evaluated: f.at(1).toUpper() == QLatin1Char('P')
TRUEFALSE
yes
Evaluation Count:9
no
Evaluation Count:0
0-9
1668 f.at(0).isUpper() == f.at(1).isUpper()) {
partially evaluated: f.at(0).isUpper() == f.at(1).isUpper()
TRUEFALSE
yes
Evaluation Count:9
no
Evaluation Count:0
0-9
1669 removed = 2; -
1670 } else {
executed: }
Execution Count:9
9
1671 removed = 1; -
1672 }
executed: }
Execution Count:5
5
1673 } -
1674 } -
1675 -
1676 if (dd) {
evaluated: dd
TRUEFALSE
yes
Evaluation Count:48609
yes
Evaluation Count:53594
48609-53594
1677 if (f.startsWith(QLatin1String("dddd"))) {
evaluated: f.startsWith(QLatin1String("dddd"))
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:48608
1-48608
1678 buf = dd->longDayName(dd->dayOfWeek()); -
1679 removed = 4; -
1680 } else if (f.startsWith(QLatin1String("ddd"))) {
evaluated: f.startsWith(QLatin1String("ddd"))
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:48607
executed: }
Execution Count:1
1-48607
1681 buf = dd->shortDayName(dd->dayOfWeek()); -
1682 removed = 3; -
1683 } else if (f.startsWith(QLatin1String("dd"))) {
evaluated: f.startsWith(QLatin1String("dd"))
TRUEFALSE
yes
Evaluation Count:14435
yes
Evaluation Count:34172
executed: }
Execution Count:1
1-34172
1684 buf = QString::number(dd->day()).rightJustified(2, QLatin1Char('0'), true); -
1685 removed = 2; -
1686 } else if (f.at(0) == QLatin1Char('d')) {
evaluated: f.at(0) == QLatin1Char('d')
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:34170
executed: }
Execution Count:14435
2-34170
1687 buf = QString::number(dd->day()); -
1688 removed = 1; -
1689 } else if (f.startsWith(QLatin1String("MMMM"))) {
evaluated: f.startsWith(QLatin1String("MMMM"))
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:34169
executed: }
Execution Count:2
1-34169
1690 buf = dd->longMonthName(dd->month()); -
1691 removed = 4; -
1692 } else if (f.startsWith(QLatin1String("MMM"))) {
evaluated: f.startsWith(QLatin1String("MMM"))
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:34168
executed: }
Execution Count:1
1-34168
1693 buf = dd->shortMonthName(dd->month()); -
1694 removed = 3; -
1695 } else if (f.startsWith(QLatin1String("MM"))) {
evaluated: f.startsWith(QLatin1String("MM"))
TRUEFALSE
yes
Evaluation Count:14434
yes
Evaluation Count:19734
executed: }
Execution Count:1
1-19734
1696 buf = QString::number(dd->month()).rightJustified(2, QLatin1Char('0'), true); -
1697 removed = 2; -
1698 } else if (f.at(0) == QLatin1Char('M')) {
evaluated: f.at(0) == QLatin1Char('M')
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:19732
executed: }
Execution Count:14434
2-19732
1699 buf = QString::number(dd->month()); -
1700 removed = 1; -
1701 } else if (f.startsWith(QLatin1String("yyyy"))) {
evaluated: f.startsWith(QLatin1String("yyyy"))
TRUEFALSE
yes
Evaluation Count:14438
yes
Evaluation Count:5294
executed: }
Execution Count:2
2-14438
1702 const int year = dd->year(); -
1703 buf = QString::number(qAbs(year)).rightJustified(4, QLatin1Char('0')); -
1704 if(year > 0)
evaluated: year > 0
TRUEFALSE
yes
Evaluation Count:14240
yes
Evaluation Count:198
198-14240
1705 removed = 4;
executed: removed = 4;
Execution Count:14240
14240
1706 else -
1707 { -
1708 buf.prepend(QLatin1Char('-')); -
1709 removed = 5; -
1710 }
executed: }
Execution Count:198
198
1711 -
1712 } else if (f.startsWith(QLatin1String("yy"))) {
evaluated: f.startsWith(QLatin1String("yy"))
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:5290
4-5290
1713 buf = QString::number(dd->year()).right(2).rightJustified(2, QLatin1Char('0')); -
1714 removed = 2; -
1715 }
executed: }
Execution Count:4
4
1716 } -
1717 if (removed == 0 || removed >= f.size()) {
evaluated: removed == 0
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:102202
evaluated: removed >= f.size()
TRUEFALSE
yes
Evaluation Count:102194
yes
Evaluation Count:8
1-102202
1718 return buf;
executed: return buf;
Execution Count:102195
102195
1719 } -
1720 -
1721 return buf + getFmtString(f.mid(removed), dt, dd, am_pm);
executed: return buf + getFmtString(f.mid(removed), dt, dd, am_pm);
Execution Count:8
8
1722} -
1723 -
1724 -
1725static QString fmtDateTime(const QString& f, const QTime* dt, const QDate* dd) -
1726{ -
1727 QString buf; -
1728 -
1729 if (f.isEmpty())
evaluated: f.isEmpty()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:27877
1-27877
1730 return buf;
executed: return buf;
Execution Count:1
1
1731 if (dt && !dt->isValid())
evaluated: dt
TRUEFALSE
yes
Evaluation Count:14751
yes
Evaluation Count:13126
evaluated: !dt->isValid()
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:14749
2-14751
1732 return buf;
executed: return buf;
Execution Count:2
2
1733 if (dd && !dd->isValid())
evaluated: dd
TRUEFALSE
yes
Evaluation Count:14476
yes
Evaluation Count:13399
evaluated: !dd->isValid()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:14475
1-14476
1734 return buf;
executed: return buf;
Execution Count:1
1
1735 -
1736 const bool ap = hasUnquotedAP(f); -
1737 -
1738 QString frm; -
1739 uint status = '0'; -
1740 -
1741 for (int i = 0, n = f.length(); i < n; ++i) {
evaluated: i < n
TRUEFALSE
yes
Evaluation Count:322353
yes
Evaluation Count:27874
27874-322353
1742 const QChar c = f.at(i); -
1743 const uint cc = c.unicode(); -
1744 if (cc == '\'') {
evaluated: cc == '\''
TRUEFALSE
yes
Evaluation Count:26
yes
Evaluation Count:322327
26-322327
1745 if (status == cc) {
evaluated: status == cc
TRUEFALSE
yes
Evaluation Count:12
yes
Evaluation Count:14
12-14
1746 if (i > 0 && f.at(i - 1).unicode() == cc)
partially evaluated: i > 0
TRUEFALSE
yes
Evaluation Count:12
no
Evaluation Count:0
evaluated: f.at(i - 1).unicode() == cc
TRUEFALSE
yes
Evaluation Count:5
yes
Evaluation Count:7
0-12
1747 buf += c;
executed: buf += c;
Execution Count:5
5
1748 status = '0'; -
1749 } else {
executed: }
Execution Count:12
12
1750 if (!frm.isEmpty()) {
evaluated: !frm.isEmpty()
TRUEFALSE
yes
Evaluation Count:5
yes
Evaluation Count:9
5-9
1751 buf += getFmtString(frm, dt, dd, ap); -
1752 frm.clear(); -
1753 }
executed: }
Execution Count:5
5
1754 status = cc; -
1755 }
executed: }
Execution Count:14
14
1756 } else if (status == '\'') {
evaluated: status == '\''
TRUEFALSE
yes
Evaluation Count:25
yes
Evaluation Count:322302
25-322302
1757 buf += c; -
1758 } else if (c == status) {
evaluated: c == status
TRUEFALSE
yes
Evaluation Count:145793
yes
Evaluation Count:176509
executed: }
Execution Count:25
25-176509
1759 if (ap && (cc == 'P' || cc == 'p'))
evaluated: ap
TRUEFALSE
yes
Evaluation Count:43
yes
Evaluation Count:145750
evaluated: cc == 'P'
TRUEFALSE
yes
Evaluation Count:5
yes
Evaluation Count:38
evaluated: cc == 'p'
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:34
4-145750
1760 status = '0';
executed: status = '0';
Execution Count:9
9
1761 frm += c; -
1762 } else {
executed: }
Execution Count:145793
145793
1763 buf += getFmtString(frm, dt, dd, ap); -
1764 frm.clear(); -
1765 if (cc == 'h' || cc == 'm' || cc == 'H' || cc == 's' || cc == 'z') {
evaluated: cc == 'h'
TRUEFALSE
yes
Evaluation Count:14719
yes
Evaluation Count:161790
evaluated: cc == 'm'
TRUEFALSE
yes
Evaluation Count:14708
yes
Evaluation Count:147082
evaluated: cc == 'H'
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:147080
evaluated: cc == 's'
TRUEFALSE
yes
Evaluation Count:14709
yes
Evaluation Count:132371
evaluated: cc == 'z'
TRUEFALSE
yes
Evaluation Count:14724
yes
Evaluation Count:117647
2-161790
1766 status = cc; -
1767 frm += c; -
1768 } else if (cc == 'd' || cc == 'M' || cc == 'y') {
evaluated: cc == 'd'
TRUEFALSE
yes
Evaluation Count:14439
yes
Evaluation Count:103208
evaluated: cc == 'M'
TRUEFALSE
yes
Evaluation Count:14438
yes
Evaluation Count:88770
evaluated: cc == 'y'
TRUEFALSE
yes
Evaluation Count:14442
yes
Evaluation Count:74328
executed: }
Execution Count:58862
14438-103208
1769 status = cc; -
1770 frm += c; -
1771 } else if (ap && cc == 'A') {
evaluated: ap
TRUEFALSE
yes
Evaluation Count:31
yes
Evaluation Count:74297
evaluated: cc == 'A'
TRUEFALSE
yes
Evaluation Count:8
yes
Evaluation Count:23
executed: }
Execution Count:43319
8-74297
1772 status = 'P'; -
1773 frm += c; -
1774 } else if (ap && cc == 'a') {
evaluated: ap
TRUEFALSE
yes
Evaluation Count:23
yes
Evaluation Count:74297
evaluated: cc == 'a'
TRUEFALSE
yes
Evaluation Count:6
yes
Evaluation Count:17
executed: }
Execution Count:8
6-74297
1775 status = 'p'; -
1776 frm += c; -
1777 } else {
executed: }
Execution Count:6
6
1778 buf += c; -
1779 status = '0'; -
1780 }
executed: }
Execution Count:74314
74314
1781 } -
1782 } -
1783 -
1784 buf += getFmtString(frm, dt, dd, ap); -
1785 -
1786 return buf;
executed: return buf;
Execution Count:27874
27874
1787} -
1788 -
1789 -
1790 -
1791 -
1792 -
1793static const int LowerYear = 1970; -
1794 -
1795static const int UpperYear = 2037; -
1796 -
1797static QDate adjustDate(QDate date) -
1798{ -
1799 QDate lowerLimit(LowerYear, 1, 2); -
1800 QDate upperLimit(UpperYear, 12, 30); -
1801 -
1802 if (date > lowerLimit && date < upperLimit)
evaluated: date > lowerLimit
TRUEFALSE
yes
Evaluation Count:19984
yes
Evaluation Count:397
evaluated: date < upperLimit
TRUEFALSE
yes
Evaluation Count:19774
yes
Evaluation Count:210
210-19984
1803 return date;
executed: return date;
Execution Count:19774
19774
1804 -
1805 int month = date.month(); -
1806 int day = date.day(); -
1807 -
1808 -
1809 if (month == 2 && day == 29)
evaluated: month == 2
TRUEFALSE
yes
Evaluation Count:46
yes
Evaluation Count:561
evaluated: day == 29
TRUEFALSE
yes
Evaluation Count:32
yes
Evaluation Count:14
14-561
1810 --day;
executed: --day;
Execution Count:32
32
1811 -
1812 if (date < lowerLimit)
evaluated: date < lowerLimit
TRUEFALSE
yes
Evaluation Count:382
yes
Evaluation Count:225
225-382
1813 date.setDate(LowerYear, month, day);
executed: date.setDate(LowerYear, month, day);
Execution Count:382
382
1814 else -
1815 date.setDate(UpperYear, month, day);
executed: date.setDate(UpperYear, month, day);
Execution Count:225
225
1816 -
1817 return date;
executed: return date;
Execution Count:607
607
1818} -
1819 -
1820static QDateTimePrivate::Spec utcToLocal(QDate &date, QTime &time) -
1821{ -
1822 QDate fakeDate = adjustDate(date); -
1823 -
1824 -
1825 time_t secsSince1Jan1970UTC = toMSecsSinceEpoch_helper(fakeDate.toJulianDay(), QTime(0, 0, 0).msecsTo(time)) / 1000; -
1826 tm *brokenDown = 0; -
1827 tzset(); -
1828 tm res; -
1829 brokenDown = localtime_r(&secsSince1Jan1970UTC, &res); -
1830 -
1831 -
1832 -
1833 -
1834 -
1835 -
1836 -
1837 if (!brokenDown) {
partially evaluated: !brokenDown
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:5550
0-5550
1838 date = QDate(1970, 1, 1); -
1839 time = QTime(); -
1840 return QDateTimePrivate::LocalUnknown;
never executed: return QDateTimePrivate::LocalUnknown;
0
1841 } else { -
1842 int deltaDays = fakeDate.daysTo(date); -
1843 date = QDate(brokenDown->tm_year + 1900, brokenDown->tm_mon + 1, brokenDown->tm_mday); -
1844 time = QTime(brokenDown->tm_hour, brokenDown->tm_min, brokenDown->tm_sec, time.msec()); -
1845 date = date.addDays(deltaDays); -
1846 if (brokenDown->tm_isdst > 0)
evaluated: brokenDown->tm_isdst > 0
TRUEFALSE
yes
Evaluation Count:378
yes
Evaluation Count:5172
378-5172
1847 return QDateTimePrivate::LocalDST;
executed: return QDateTimePrivate::LocalDST;
Execution Count:378
378
1848 else if (brokenDown->tm_isdst < 0)
partially evaluated: brokenDown->tm_isdst < 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:5172
0-5172
1849 return QDateTimePrivate::LocalUnknown;
never executed: return QDateTimePrivate::LocalUnknown;
0
1850 else -
1851 return QDateTimePrivate::LocalStandard;
executed: return QDateTimePrivate::LocalStandard;
Execution Count:5172
5172
1852 } -
1853} -
1854 -
1855static void localToUtc(QDate &date, QTime &time, int isdst) -
1856{ -
1857 if (!date.isValid())
evaluated: !date.isValid()
TRUEFALSE
yes
Evaluation Count:1953
yes
Evaluation Count:14831
1953-14831
1858 return;
executed: return;
Execution Count:1953
1953
1859 -
1860 QDate fakeDate = adjustDate(date); -
1861 -
1862 tm localTM; -
1863 localTM.tm_sec = time.second(); -
1864 localTM.tm_min = time.minute(); -
1865 localTM.tm_hour = time.hour(); -
1866 localTM.tm_mday = fakeDate.day(); -
1867 localTM.tm_mon = fakeDate.month() - 1; -
1868 localTM.tm_year = fakeDate.year() - 1900; -
1869 localTM.tm_isdst = (int)isdst; -
1870 -
1871 -
1872 -
1873 -
1874 -
1875 -
1876 time_t secsSince1Jan1970UTC = mktime(&localTM); -
1877 -
1878 tm *brokenDown = 0; -
1879 tm res; -
1880 brokenDown = gmtime_r(&secsSince1Jan1970UTC, &res); -
1881 -
1882 -
1883 -
1884 -
1885 -
1886 -
1887 -
1888 if (!brokenDown) {
partially evaluated: !brokenDown
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:14831
0-14831
1889 date = QDate(1970, 1, 1); -
1890 time = QTime(); -
1891 } else {
never executed: }
0
1892 int deltaDays = fakeDate.daysTo(date); -
1893 date = QDate(brokenDown->tm_year + 1900, brokenDown->tm_mon + 1, brokenDown->tm_mday); -
1894 time = QTime(brokenDown->tm_hour, brokenDown->tm_min, brokenDown->tm_sec, time.msec()); -
1895 date = date.addDays(deltaDays); -
1896 }
executed: }
Execution Count:14830
14830
1897} -
1898 -
1899QDateTimePrivate::Spec QDateTimePrivate::getLocal(QDate &outDate, QTime &outTime) const -
1900{ -
1901 outDate = date; -
1902 outTime = time; -
1903 if (spec == QDateTimePrivate::UTC)
partially evaluated: spec == QDateTimePrivate::UTC
TRUEFALSE
yes
Evaluation Count:5550
no
Evaluation Count:0
0-5550
1904 return utcToLocal(outDate, outTime);
executed: return utcToLocal(outDate, outTime);
Execution Count:5550
5550
1905 return spec;
never executed: return spec;
0
1906} -
1907 -
1908void QDateTimePrivate::getUTC(QDate &outDate, QTime &outTime) const -
1909{ -
1910 outDate = date; -
1911 outTime = time; -
1912 const bool isOffset = spec == QDateTimePrivate::OffsetFromUTC; -
1913 -
1914 if (spec != QDateTimePrivate::UTC && !isOffset)
evaluated: spec != QDateTimePrivate::UTC
TRUEFALSE
yes
Evaluation Count:16815
yes
Evaluation Count:4702
evaluated: !isOffset
TRUEFALSE
yes
Evaluation Count:16784
yes
Evaluation Count:31
31-16815
1915 localToUtc(outDate, outTime, (int)spec);
executed: localToUtc(outDate, outTime, (int)spec);
Execution Count:16784
16784
1916 -
1917 if (isOffset)
evaluated: isOffset
TRUEFALSE
yes
Evaluation Count:31
yes
Evaluation Count:21485
31-21485
1918 addMSecs(outDate, outTime, -(qint64(utcOffset) * 1000));
executed: addMSecs(outDate, outTime, -(qint64(utcOffset) * 1000));
Execution Count:31
31
1919}
executed: }
Execution Count:21516
21516
1920 -
1921 -
1922QDebug operator<<(QDebug dbg, const QDate &date) -
1923{ -
1924 dbg.nospace() << "QDate(" << date.toString() << ')'; -
1925 return dbg.space();
executed: return dbg.space();
Execution Count:1
1
1926} -
1927 -
1928QDebug operator<<(QDebug dbg, const QTime &time) -
1929{ -
1930 dbg.nospace() << "QTime(" << time.toString() << ')'; -
1931 return dbg.space();
executed: return dbg.space();
Execution Count:1
1
1932} -
1933 -
1934QDebug operator<<(QDebug dbg, const QDateTime &date) -
1935{ -
1936 dbg.nospace() << "QDateTime(" << date.toString() << ')'; -
1937 return dbg.space();
executed: return dbg.space();
Execution Count:2
2
1938} -
1939uint qHash(const QDateTime &key, uint seed) -
1940{ -
1941 -
1942 -
1943 -
1944 -
1945 return qHash(key.toMSecsSinceEpoch(), seed);
executed: return qHash(key.toMSecsSinceEpoch(), seed);
Execution Count:16
16
1946} -
1947 -
1948 -
1949 -
1950 -
1951 -
1952 -
1953 -
1954uint qHash(const QDate &key, uint seed) -
1955{ -
1956 return qHash(key.toJulianDay(), seed);
executed: return qHash(key.toJulianDay(), seed);
Execution Count:6
6
1957} -
1958 -
1959 -
1960 -
1961 -
1962 -
1963 -
1964 -
1965uint qHash(const QTime &key, uint seed) -
1966{ -
1967 return qHash(QTime(0, 0, 0, 0).msecsTo(key), seed);
executed: return qHash(QTime(0, 0, 0, 0).msecsTo(key), seed);
Execution Count:4
4
1968} -
1969int QDateTimeParser::getDigit(const QDateTime &t, int index) const -
1970{ -
1971 if (index < 0 || index >= sectionNodes.size()) {
partially evaluated: index < 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2130
partially evaluated: index >= sectionNodes.size()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2130
0-2130
1972 -
1973 QMessageLogger("tools/qdatetime.cpp", 4187, __PRETTY_FUNCTION__).warning("QDateTimeParser::getDigit() Internal error (%s %d)", -
1974 QString(t.toString()).toLocal8Bit().constData(), index); -
1975 -
1976 -
1977 -
1978 return -1;
never executed: return -1;
0
1979 } -
1980 const SectionNode &node = sectionNodes.at(index); -
1981 switch (node.type) { -
1982 case Hour24Section: case Hour12Section: return t.time().hour();
executed: return t.time().hour();
Execution Count:716
716
1983 case MinuteSection: return t.time().minute();
executed: return t.time().minute();
Execution Count:316
316
1984 case SecondSection: return t.time().second();
executed: return t.time().second();
Execution Count:299
299
1985 case MSecSection: return t.time().msec();
never executed: return t.time().msec();
0
1986 case YearSection2Digits: -
1987 case YearSection: return t.date().year();
executed: return t.date().year();
Execution Count:661
661
1988 case MonthSection: return t.date().month();
executed: return t.date().month();
Execution Count:34
34
1989 case DaySection: return t.date().day();
executed: return t.date().day();
Execution Count:95
95
1990 case DayOfWeekSectionShort: -
1991 case DayOfWeekSectionLong: return t.date().day();
executed: return t.date().day();
Execution Count:3
3
1992 case AmPmSection: return t.time().hour() > 11 ? 1 : 0;
executed: return t.time().hour() > 11 ? 1 : 0;
Execution Count:6
6
1993 -
1994 default: break;
never executed: break;
0
1995 } -
1996 -
1997 -
1998 QMessageLogger("tools/qdatetime.cpp", 4212, __PRETTY_FUNCTION__).warning("QDateTimeParser::getDigit() Internal error 2 (%s %d)", -
1999 QString(t.toString()).toLocal8Bit().constData(), index); -
2000 -
2001 -
2002 -
2003 return -1;
never executed: return -1;
0
2004} -
2005bool QDateTimeParser::setDigit(QDateTime &v, int index, int newVal) const -
2006{ -
2007 if (index < 0 || index >= sectionNodes.size()) {
partially evaluated: index < 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2623
partially evaluated: index >= sectionNodes.size()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2623
0-2623
2008 -
2009 QMessageLogger("tools/qdatetime.cpp", 4236, __PRETTY_FUNCTION__).warning("QDateTimeParser::setDigit() Internal error (%s %d %d)", -
2010 QString(v.toString()).toLocal8Bit().constData(), index, newVal); -
2011 -
2012 -
2013 -
2014 return false;
never executed: return false;
0
2015 } -
2016 const SectionNode &node = sectionNodes.at(index); -
2017 -
2018 int year, month, day, hour, minute, second, msec; -
2019 year = v.date().year(); -
2020 month = v.date().month(); -
2021 day = v.date().day(); -
2022 hour = v.time().hour(); -
2023 minute = v.time().minute(); -
2024 second = v.time().second(); -
2025 msec = v.time().msec(); -
2026 -
2027 switch (node.type) { -
2028 case Hour24Section: case Hour12Section: hour = newVal; break;
executed: break;
Execution Count:848
848
2029 case MinuteSection: minute = newVal; break;
executed: break;
Execution Count:470
470
2030 case SecondSection: second = newVal; break;
executed: break;
Execution Count:434
434
2031 case MSecSection: msec = newVal; break;
executed: break;
Execution Count:36
36
2032 case YearSection2Digits: -
2033 case YearSection: year = newVal; break;
executed: break;
Execution Count:631
631
2034 case MonthSection: month = newVal; break;
executed: break;
Execution Count:36
36
2035 case DaySection: -
2036 case DayOfWeekSectionShort: -
2037 case DayOfWeekSectionLong: -
2038 if (newVal > 31) {
partially evaluated: newVal > 31
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:162
0-162
2039 -
2040 -
2041 -
2042 return false;
never executed: return false;
0
2043 } -
2044 day = newVal; -
2045 break;
executed: break;
Execution Count:162
162
2046 case AmPmSection: hour = (newVal == 0 ? hour % 12 : (hour % 12) + 12); break;
evaluated: newVal == 0
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:4
executed: break;
Execution Count:6
2-6
2047 default: -
2048 QMessageLogger("tools/qdatetime.cpp", 4275, __PRETTY_FUNCTION__).warning("QDateTimeParser::setDigit() Internal error (%s)", -
2049 QString(sectionName(node.type)).toLocal8Bit().constData()); -
2050 break;
never executed: break;
0
2051 } -
2052 -
2053 if (!(node.type & (DaySection|DayOfWeekSectionShort|DayOfWeekSectionLong))) {
evaluated: !(node.type & (DaySection|DayOfWeekSectionShort|DayOfWeekSectionLong))
TRUEFALSE
yes
Evaluation Count:2461
yes
Evaluation Count:162
162-2461
2054 if (day < cachedDay)
evaluated: day < cachedDay
TRUEFALSE
yes
Evaluation Count:9
yes
Evaluation Count:2452
9-2452
2055 day = cachedDay;
executed: day = cachedDay;
Execution Count:9
9
2056 const int max = QDate(year, month, 1).daysInMonth(); -
2057 if (day > max) {
evaluated: day > max
TRUEFALSE
yes
Evaluation Count:48
yes
Evaluation Count:2413
48-2413
2058 day = max; -
2059 }
executed: }
Execution Count:48
48
2060 }
executed: }
Execution Count:2461
2461
2061 if (QDate::isValid(year, month, day) && QTime::isValid(hour, minute, second, msec)) {
evaluated: QDate::isValid(year, month, day)
TRUEFALSE
yes
Evaluation Count:2584
yes
Evaluation Count:39
partially evaluated: QTime::isValid(hour, minute, second, msec)
TRUEFALSE
yes
Evaluation Count:2584
no
Evaluation Count:0
0-2584
2062 v = QDateTime(QDate(year, month, day), QTime(hour, minute, second, msec), spec); -
2063 return true;
executed: return true;
Execution Count:2584
2584
2064 } -
2065 return false;
executed: return false;
Execution Count:39
39
2066} -
2067int QDateTimeParser::absoluteMax(int s, const QDateTime &cur) const -
2068{ -
2069 const SectionNode &sn = sectionNode(s); -
2070 switch (sn.type) { -
2071 case Hour24Section: -
2072 case Hour12Section: return 23;
executed: return 23;
Execution Count:2684
2684
2073 -
2074 -
2075 case MinuteSection: -
2076 case SecondSection: return 59;
executed: return 59;
Execution Count:4197
4197
2077 case MSecSection: return 999;
executed: return 999;
Execution Count:241
241
2078 case YearSection2Digits: -
2079 case YearSection: return 9999;
executed: return 9999;
Execution Count:2205
2205
2080 -
2081 -
2082 -
2083 case MonthSection: return 12;
executed: return 12;
Execution Count:1024
1024
2084 case DaySection: -
2085 case DayOfWeekSectionShort: -
2086 case DayOfWeekSectionLong: return cur.isValid() ? cur.date().daysInMonth() : 31;
executed: return cur.isValid() ? cur.date().daysInMonth() : 31;
Execution Count:1819
1819
2087 case AmPmSection: return 1;
executed: return 1;
Execution Count:6
6
2088 default: break;
never executed: break;
0
2089 } -
2090 QMessageLogger("tools/qdatetime.cpp", 4326, __PRETTY_FUNCTION__).warning("QDateTimeParser::absoluteMax() Internal error (%s)", -
2091 QString(sectionName(sn.type)).toLocal8Bit().constData()); -
2092 return -1;
never executed: return -1;
0
2093} -
2094 -
2095 -
2096 -
2097 -
2098 -
2099 -
2100 -
2101int QDateTimeParser::absoluteMin(int s) const -
2102{ -
2103 const SectionNode &sn = sectionNode(s); -
2104 switch (sn.type) { -
2105 case Hour24Section: -
2106 case Hour12Section: -
2107 case MinuteSection: -
2108 case SecondSection: -
2109 case MSecSection: -
2110 case YearSection2Digits: -
2111 case YearSection: return 0;
executed: return 0;
Execution Count:9301
9301
2112 case MonthSection: -
2113 case DaySection: -
2114 case DayOfWeekSectionShort: -
2115 case DayOfWeekSectionLong: return 1;
executed: return 1;
Execution Count:2815
2815
2116 case AmPmSection: return 0;
executed: return 0;
Execution Count:6
6
2117 default: break;
never executed: break;
0
2118 } -
2119 QMessageLogger("tools/qdatetime.cpp", 4355, __PRETTY_FUNCTION__).warning("QDateTimeParser::absoluteMin() Internal error (%s, %0x)", -
2120 QString(sectionName(sn.type)).toLocal8Bit().constData(), sn.type); -
2121 return -1;
never executed: return -1;
0
2122} -
2123 -
2124 -
2125 -
2126 -
2127 -
2128 -
2129 -
2130const QDateTimeParser::SectionNode &QDateTimeParser::sectionNode(int sectionIndex) const -
2131{ -
2132 if (sectionIndex < 0) {
evaluated: sectionIndex < 0
TRUEFALSE
yes
Evaluation Count:223
yes
Evaluation Count:107949
223-107949
2133 switch (sectionIndex) { -
2134 case FirstSectionIndex: -
2135 return first;
executed: return first;
Execution Count:108
108
2136 case LastSectionIndex: -
2137 return last;
executed: return last;
Execution Count:4
4
2138 case NoSectionIndex: -
2139 return none;
executed: return none;
Execution Count:111
111
2140 } -
2141 } else if (sectionIndex < sectionNodes.size()) {
never executed: }
partially evaluated: sectionIndex < sectionNodes.size()
TRUEFALSE
yes
Evaluation Count:107949
no
Evaluation Count:0
0-107949
2142 return sectionNodes.at(sectionIndex);
executed: return sectionNodes.at(sectionIndex);
Execution Count:107949
107949
2143 } -
2144 -
2145 QMessageLogger("tools/qdatetime.cpp", 4381, __PRETTY_FUNCTION__).warning("QDateTimeParser::sectionNode() Internal error (%d)", -
2146 sectionIndex); -
2147 return none;
never executed: return none;
0
2148} -
2149 -
2150QDateTimeParser::Section QDateTimeParser::sectionType(int sectionIndex) const -
2151{ -
2152 return sectionNode(sectionIndex).type;
executed: return sectionNode(sectionIndex).type;
Execution Count:4736
4736
2153} -
2154int QDateTimeParser::sectionPos(int sectionIndex) const -
2155{ -
2156 return sectionPos(sectionNode(sectionIndex));
executed: return sectionPos(sectionNode(sectionIndex));
Execution Count:37069
37069
2157} -
2158 -
2159int QDateTimeParser::sectionPos(const SectionNode &sn) const -
2160{ -
2161 switch (sn.type) { -
2162 case FirstSection: return 0;
executed: return 0;
Execution Count:55
55
2163 case LastSection: return displayText().size() - 1;
never executed: return displayText().size() - 1;
0
2164 default: break;
executed: break;
Execution Count:38899
38899
2165 } -
2166 if (sn.pos == -1) {
partially evaluated: sn.pos == -1
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:38899
0-38899
2167 QMessageLogger("tools/qdatetime.cpp", 4411, __PRETTY_FUNCTION__).warning("QDateTimeParser::sectionPos Internal error (%s)", QString(sectionName(sn.type)).toLocal8Bit().constData()); -
2168 return -1;
never executed: return -1;
0
2169 } -
2170 return sn.pos;
executed: return sn.pos;
Execution Count:38899
38899
2171} -
2172static QString unquote(const QString &str) -
2173{ -
2174 const QChar quote(QLatin1Char('\'')); -
2175 const QChar slash(QLatin1Char('\\')); -
2176 const QChar zero(QLatin1Char('0')); -
2177 QString ret; -
2178 QChar status(zero); -
2179 const int max = str.size(); -
2180 for (int i=0; i<max; ++i) {
evaluated: i<max
TRUEFALSE
yes
Evaluation Count:460
yes
Evaluation Count:411
411-460
2181 if (str.at(i) == quote) {
evaluated: str.at(i) == quote
TRUEFALSE
yes
Evaluation Count:47
yes
Evaluation Count:413
47-413
2182 if (status != quote) {
evaluated: status != quote
TRUEFALSE
yes
Evaluation Count:24
yes
Evaluation Count:23
23-24
2183 status = quote; -
2184 } else if (!ret.isEmpty() && str.at(i - 1) == slash) {
evaluated: !ret.isEmpty()
TRUEFALSE
yes
Evaluation Count:22
yes
Evaluation Count:1
partially evaluated: str.at(i - 1) == slash
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:22
executed: }
Execution Count:24
0-24
2185 ret[ret.size() - 1] = quote; -
2186 } else {
never executed: }
0
2187 status = zero; -
2188 }
executed: }
Execution Count:23
23
2189 } else { -
2190 ret += str.at(i); -
2191 }
executed: }
Execution Count:413
413
2192 } -
2193 return ret;
executed: return ret;
Execution Count:411
411
2194} -
2195static inline int countRepeat(const QString &str, int index, int maxCount) -
2196{ -
2197 int count = 1; -
2198 const QChar ch(str.at(index)); -
2199 const int max = qMin(index + maxCount, str.size()); -
2200 while (index + count < max && str.at(index + count) == ch) {
evaluated: index + count < max
TRUEFALSE
yes
Evaluation Count:3465
yes
Evaluation Count:1190
evaluated: str.at(index + count) == ch
TRUEFALSE
yes
Evaluation Count:2651
yes
Evaluation Count:814
814-3465
2201 ++count; -
2202 }
executed: }
Execution Count:2651
2651
2203 return count;
executed: return count;
Execution Count:2004
2004
2204} -
2205 -
2206static inline void appendSeparator(QStringList *list, const QString &string, int from, int size, int lastQuote) -
2207{ -
2208 QString str(string.mid(from, size)); -
2209 if (lastQuote >= from)
evaluated: lastQuote >= from
TRUEFALSE
yes
Evaluation Count:21
yes
Evaluation Count:1693
21-1693
2210 str = unquote(str);
executed: str = unquote(str);
Execution Count:21
21
2211 list->append(str); -
2212}
executed: }
Execution Count:1714
1714
2213 -
2214 -
2215bool QDateTimeParser::parseFormat(const QString &newFormat) -
2216{ -
2217 const QLatin1Char quote('\''); -
2218 const QLatin1Char slash('\\'); -
2219 const QLatin1Char zero('0'); -
2220 if (newFormat == displayFormat && !newFormat.isEmpty()) {
evaluated: newFormat == displayFormat
TRUEFALSE
yes
Evaluation Count:124
yes
Evaluation Count:553
evaluated: !newFormat.isEmpty()
TRUEFALSE
yes
Evaluation Count:122
yes
Evaluation Count:2
2-553
2221 return true;
executed: return true;
Execution Count:122
122
2222 } -
2223 -
2224 if (false) QMessageLogger("tools/qdatetime.cpp", 4486, __PRETTY_FUNCTION__).debug("parseFormat: %s", newFormat.toLatin1().constData());
never executed: QMessageLogger("tools/qdatetime.cpp", 4486, __PRETTY_FUNCTION__).debug("parseFormat: %s", newFormat.toLatin1().constData());
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:555
0-555
2225 -
2226 QVector<SectionNode> newSectionNodes; -
2227 Sections newDisplay = 0; -
2228 QStringList newSeparators; -
2229 int i, index = 0; -
2230 int add = 0; -
2231 QChar status(zero); -
2232 const int max = newFormat.size(); -
2233 int lastQuote = -1; -
2234 for (i = 0; i<max; ++i) {
evaluated: i<max
TRUEFALSE
yes
Evaluation Count:3665
yes
Evaluation Count:555
555-3665
2235 if (newFormat.at(i) == quote) {
evaluated: newFormat.at(i) == quote
TRUEFALSE
yes
Evaluation Count:47
yes
Evaluation Count:3618
47-3618
2236 lastQuote = i; -
2237 ++add; -
2238 if (status != quote) {
evaluated: status != quote
TRUEFALSE
yes
Evaluation Count:24
yes
Evaluation Count:23
23-24
2239 status = quote; -
2240 } else if (newFormat.at(i - 1) != slash) {
executed: }
Execution Count:24
partially evaluated: newFormat.at(i - 1) != slash
TRUEFALSE
yes
Evaluation Count:23
no
Evaluation Count:0
0-24
2241 status = zero; -
2242 }
executed: }
Execution Count:23
23
2243 } else if (status != quote) {
evaluated: status != quote
TRUEFALSE
yes
Evaluation Count:3554
yes
Evaluation Count:64
64-3554
2244 const char sect = newFormat.at(i).toLatin1(); -
2245 switch (sect) { -
2246 case 'H': -
2247 case 'h': -
2248 if (parserType != QVariant::Date) {
evaluated: parserType != QVariant::Date
TRUEFALSE
yes
Evaluation Count:272
yes
Evaluation Count:3
3-272
2249 const Section hour = (sect == 'h') ? Hour12Section : Hour24Section;
evaluated: (sect == 'h')
TRUEFALSE
yes
Evaluation Count:201
yes
Evaluation Count:71
71-201
2250 const SectionNode sn = { hour, i - add, countRepeat(newFormat, i, 2), 0 }; -
2251 newSectionNodes.append(sn); -
2252 appendSeparator(&newSeparators, newFormat, index, i - index, lastQuote); -
2253 i += sn.count - 1; -
2254 index = i + 1; -
2255 newDisplay |= hour; -
2256 }
executed: }
Execution Count:272
272
2257 break;
executed: break;
Execution Count:275
275
2258 case 'm': -
2259 if (parserType != QVariant::Date) {
partially evaluated: parserType != QVariant::Date
TRUEFALSE
yes
Evaluation Count:252
no
Evaluation Count:0
0-252
2260 const SectionNode sn = { MinuteSection, i - add, countRepeat(newFormat, i, 2), 0 }; -
2261 newSectionNodes.append(sn); -
2262 appendSeparator(&newSeparators, newFormat, index, i - index, lastQuote); -
2263 i += sn.count - 1; -
2264 index = i + 1; -
2265 newDisplay |= MinuteSection; -
2266 }
executed: }
Execution Count:252
252
2267 break;
executed: break;
Execution Count:252
252
2268 case 's': -
2269 if (parserType != QVariant::Date) {
partially evaluated: parserType != QVariant::Date
TRUEFALSE
yes
Evaluation Count:236
no
Evaluation Count:0
0-236
2270 const SectionNode sn = { SecondSection, i - add, countRepeat(newFormat, i, 2), 0 }; -
2271 newSectionNodes.append(sn); -
2272 appendSeparator(&newSeparators, newFormat, index, i - index, lastQuote); -
2273 i += sn.count - 1; -
2274 index = i + 1; -
2275 newDisplay |= SecondSection; -
2276 }
executed: }
Execution Count:236
236
2277 break;
executed: break;
Execution Count:236
236
2278 -
2279 case 'z': -
2280 if (parserType != QVariant::Date) {
partially evaluated: parserType != QVariant::Date
TRUEFALSE
yes
Evaluation Count:51
no
Evaluation Count:0
0-51
2281 const SectionNode sn = { MSecSection, i - add, countRepeat(newFormat, i, 3) < 3 ? 1 : 3, 0 }; -
2282 newSectionNodes.append(sn); -
2283 appendSeparator(&newSeparators, newFormat, index, i - index, lastQuote); -
2284 i += sn.count - 1; -
2285 index = i + 1; -
2286 newDisplay |= MSecSection; -
2287 }
executed: }
Execution Count:51
51
2288 break;
executed: break;
Execution Count:51
51
2289 case 'A': -
2290 case 'a': -
2291 if (parserType != QVariant::Date) {
evaluated: parserType != QVariant::Date
TRUEFALSE
yes
Evaluation Count:89
yes
Evaluation Count:2
2-89
2292 const bool cap = (sect == 'A'); -
2293 const SectionNode sn = { AmPmSection, i - add, (cap ? 1 : 0), 0 }; -
2294 newSectionNodes.append(sn); -
2295 appendSeparator(&newSeparators, newFormat, index, i - index, lastQuote); -
2296 newDisplay |= AmPmSection; -
2297 if (i + 1 < newFormat.size()
evaluated: i + 1 < newFormat.size()
TRUEFALSE
yes
Evaluation Count:88
yes
Evaluation Count:1
1-88
2298 && newFormat.at(i+1) == (cap ? QLatin1Char('P') : QLatin1Char('p'))) {
partially evaluated: newFormat.at(i+1) == (cap ? QLatin1Char('P') : QLatin1Char('p'))
TRUEFALSE
yes
Evaluation Count:88
no
Evaluation Count:0
evaluated: cap
TRUEFALSE
yes
Evaluation Count:12
yes
Evaluation Count:76
0-88
2299 ++i; -
2300 }
executed: }
Execution Count:88
88
2301 index = i + 1; -
2302 }
executed: }
Execution Count:89
89
2303 break;
executed: break;
Execution Count:91
91
2304 case 'y': -
2305 if (parserType != QVariant::Time) {
evaluated: parserType != QVariant::Time
TRUEFALSE
yes
Evaluation Count:391
yes
Evaluation Count:4
4-391
2306 const int repeat = countRepeat(newFormat, i, 4); -
2307 if (repeat >= 2) {
evaluated: repeat >= 2
TRUEFALSE
yes
Evaluation Count:384
yes
Evaluation Count:7
7-384
2308 const SectionNode sn = { repeat == 4 ? YearSection : YearSection2Digits, -
2309 i - add, repeat == 4 ? 4 : 2, 0 }; -
2310 newSectionNodes.append(sn); -
2311 appendSeparator(&newSeparators, newFormat, index, i - index, lastQuote); -
2312 i += sn.count - 1; -
2313 index = i + 1; -
2314 newDisplay |= sn.type; -
2315 }
executed: }
Execution Count:384
384
2316 }
executed: }
Execution Count:391
391
2317 break;
executed: break;
Execution Count:395
395
2318 case 'M': -
2319 if (parserType != QVariant::Time) {
partially evaluated: parserType != QVariant::Time
TRUEFALSE
yes
Evaluation Count:390
no
Evaluation Count:0
0-390
2320 const SectionNode sn = { MonthSection, i - add, countRepeat(newFormat, i, 4), 0 }; -
2321 newSectionNodes.append(sn); -
2322 newSeparators.append(unquote(newFormat.mid(index, i - index))); -
2323 i += sn.count - 1; -
2324 index = i + 1; -
2325 newDisplay |= MonthSection; -
2326 }
executed: }
Execution Count:390
390
2327 break;
executed: break;
Execution Count:390
390
2328 case 'd': -
2329 if (parserType != QVariant::Time) {
partially evaluated: parserType != QVariant::Time
TRUEFALSE
yes
Evaluation Count:412
no
Evaluation Count:0
0-412
2330 const int repeat = countRepeat(newFormat, i, 4); -
2331 const Section sectionType = (repeat == 4 ? DayOfWeekSectionLong
evaluated: repeat == 4
TRUEFALSE
yes
Evaluation Count:21
yes
Evaluation Count:391
21-391
2332 : (repeat == 3 ? DayOfWeekSectionShort : DaySection)); -
2333 const SectionNode sn = { sectionType, i - add, repeat, 0 }; -
2334 newSectionNodes.append(sn); -
2335 appendSeparator(&newSeparators, newFormat, index, i - index, lastQuote); -
2336 i += sn.count - 1; -
2337 index = i + 1; -
2338 newDisplay |= sn.type; -
2339 }
executed: }
Execution Count:412
412
2340 break;
executed: break;
Execution Count:412
412
2341 -
2342 default: -
2343 break;
executed: break;
Execution Count:1452
1452
2344 } -
2345 }
executed: }
Execution Count:3554
3554
2346 } -
2347 if (newSectionNodes.isEmpty() && context == DateTimeEdit) {
evaluated: newSectionNodes.isEmpty()
TRUEFALSE
yes
Evaluation Count:11
yes
Evaluation Count:544
evaluated: context == DateTimeEdit
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:9
2-544
2348 return false;
executed: return false;
Execution Count:2
2
2349 } -
2350 -
2351 if ((newDisplay & (AmPmSection|Hour12Section)) == Hour12Section) {
evaluated: (newDisplay & (AmPmSection|Hour12Section)) == Hour12Section
TRUEFALSE
yes
Evaluation Count:105
yes
Evaluation Count:448
105-448
2352 const int max = newSectionNodes.size(); -
2353 for (int i=0; i<max; ++i) {
evaluated: i<max
TRUEFALSE
yes
Evaluation Count:435
yes
Evaluation Count:105
105-435
2354 SectionNode &node = newSectionNodes[i]; -
2355 if (node.type == Hour12Section)
evaluated: node.type == Hour12Section
TRUEFALSE
yes
Evaluation Count:118
yes
Evaluation Count:317
118-317
2356 node.type = Hour24Section;
executed: node.type = Hour24Section;
Execution Count:118
118
2357 }
executed: }
Execution Count:435
435
2358 }
executed: }
Execution Count:105
105
2359 -
2360 if (index < newFormat.size()) {
evaluated: index < newFormat.size()
TRUEFALSE
yes
Evaluation Count:18
yes
Evaluation Count:535
18-535
2361 appendSeparator(&newSeparators, newFormat, index, index - max, lastQuote); -
2362 } else {
executed: }
Execution Count:18
18
2363 newSeparators.append(QString()); -
2364 }
executed: }
Execution Count:535
535
2365 -
2366 displayFormat = newFormat; -
2367 separators = newSeparators; -
2368 sectionNodes = newSectionNodes; -
2369 display = newDisplay; -
2370 last.pos = -1; -
2371 -
2372 -
2373 -
2374 -
2375 -
2376 if (false) QMessageLogger("tools/qdatetime.cpp", 4638, __PRETTY_FUNCTION__).debug() << newFormat << displayFormat;
never executed: QMessageLogger("tools/qdatetime.cpp", 4638, __PRETTY_FUNCTION__).debug() << newFormat << displayFormat;
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:553
0-553
2377 if (false) QMessageLogger("tools/qdatetime.cpp", 4639, __PRETTY_FUNCTION__).debug("separators:\n'%s'", separators.join(QLatin1String("\n")).toLatin1().constData());
never executed: QMessageLogger("tools/qdatetime.cpp", 4639, __PRETTY_FUNCTION__).debug("separators:\n'%s'", separators.join(QLatin1String("\n")).toLatin1().constData());
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:553
0-553
2378 -
2379 return true;
executed: return true;
Execution Count:553
553
2380} -
2381 -
2382 -
2383 -
2384 -
2385 -
2386 -
2387 -
2388int QDateTimeParser::sectionSize(int sectionIndex) const -
2389{ -
2390 if (sectionIndex < 0)
partially evaluated: sectionIndex < 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:14077
0-14077
2391 return 0;
never executed: return 0;
0
2392 -
2393 if (sectionIndex >= sectionNodes.size()) {
partially evaluated: sectionIndex >= sectionNodes.size()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:14077
0-14077
2394 QMessageLogger("tools/qdatetime.cpp", 4656, __PRETTY_FUNCTION__).warning("QDateTimeParser::sectionSize Internal error (%d)", sectionIndex); -
2395 return -1;
never executed: return -1;
0
2396 } -
2397 -
2398 if (sectionIndex == sectionNodes.size() - 1) {
evaluated: sectionIndex == sectionNodes.size() - 1
TRUEFALSE
yes
Evaluation Count:3539
yes
Evaluation Count:10538
3539-10538
2399 -
2400 -
2401 -
2402 -
2403 int sizeAdjustment = 0; -
2404 if (displayText().size() != text.size()) {
evaluated: displayText().size() != text.size()
TRUEFALSE
yes
Evaluation Count:15
yes
Evaluation Count:3524
15-3524
2405 -
2406 int preceedingZeroesAdded = 0; -
2407 if (sectionNodes.size() > 1 && context == DateTimeEdit) {
partially evaluated: sectionNodes.size() > 1
TRUEFALSE
yes
Evaluation Count:15
no
Evaluation Count:0
partially evaluated: context == DateTimeEdit
TRUEFALSE
yes
Evaluation Count:15
no
Evaluation Count:0
0-15
2408 for (QVector<SectionNode>::ConstIterator sectionIt = sectionNodes.constBegin(); -
2409 sectionIt != sectionNodes.constBegin() + sectionIndex; ++sectionIt) {
evaluated: sectionIt != sectionNodes.constBegin() + sectionIndex
TRUEFALSE
yes
Evaluation Count:24
yes
Evaluation Count:15
15-24
2410 preceedingZeroesAdded += sectionIt->zeroesAdded; -
2411 }
executed: }
Execution Count:24
24
2412 }
executed: }
Execution Count:15
15
2413 sizeAdjustment = preceedingZeroesAdded; -
2414 }
executed: }
Execution Count:15
15
2415 -
2416 return displayText().size() + sizeAdjustment - sectionPos(sectionIndex) - separators.last().size();
executed: return displayText().size() + sizeAdjustment - sectionPos(sectionIndex) - separators.last().size();
Execution Count:3539
3539
2417 } else { -
2418 return sectionPos(sectionIndex + 1) - sectionPos(sectionIndex) 10538
2419 - separators.at(sectionIndex + 1).size();
executed: return sectionPos(sectionIndex + 1) - sectionPos(sectionIndex) - separators.at(sectionIndex + 1).size();
Execution Count:10538
10538
2420 } -
2421} -
2422 -
2423 -
2424int QDateTimeParser::sectionMaxSize(Section s, int count) const -
2425{ -
2426 -
2427 int mcount = 12; -
2428 -
2429 -
2430 switch (s) { -
2431 case FirstSection: -
2432 case NoSection: -
2433 case LastSection: return 0;
never executed: return 0;
0
2434 -
2435 case AmPmSection: { -
2436 const int lowerMax = qMin(getAmPmText(AmText, LowerCase).size(), -
2437 getAmPmText(PmText, LowerCase).size()); -
2438 const int upperMax = qMin(getAmPmText(AmText, UpperCase).size(), -
2439 getAmPmText(PmText, UpperCase).size()); -
2440 return qMin(4, qMin(lowerMax, upperMax));
executed: return qMin(4, qMin(lowerMax, upperMax));
Execution Count:1702
1702
2441 } -
2442 -
2443 case Hour24Section: -
2444 case Hour12Section: -
2445 case MinuteSection: -
2446 case SecondSection: -
2447 case DaySection: return 2;
executed: return 2;
Execution Count:7884
7884
2448 case DayOfWeekSectionShort: -
2449 case DayOfWeekSectionLong: -
2450 -
2451 -
2452 -
2453 mcount = 7; -
2454 -
2455 -
2456 case MonthSection:
code before this statement executed: case MonthSection:
Execution Count:29
29
2457 if (count <= 2)
evaluated: count <= 2
TRUEFALSE
yes
Evaluation Count:1046
yes
Evaluation Count:816
816-1046
2458 return 2;
executed: return 2;
Execution Count:1046
1046
2459 -
2460 -
2461 -
2462 -
2463 { -
2464 int ret = 0; -
2465 const QLocale l = locale(); -
2466 for (int i=1; i<=mcount; ++i) {
evaluated: i<=mcount
TRUEFALSE
yes
Evaluation Count:9647
yes
Evaluation Count:816
816-9647
2467 const QString str = (s == MonthSection
evaluated: s == MonthSection
TRUEFALSE
yes
Evaluation Count:9444
yes
Evaluation Count:203
203-9444
2468 ? l.monthName(i, count == 4 ? QLocale::LongFormat : QLocale::ShortFormat) -
2469 : l.dayName(i, count == 4 ? QLocale::LongFormat : QLocale::ShortFormat)); -
2470 ret = qMax(str.size(), ret); -
2471 }
executed: }
Execution Count:9647
9647
2472 return ret;
executed: return ret;
Execution Count:816
816
2473 } -
2474 -
2475 case MSecSection: return 3;
executed: return 3;
Execution Count:269
269
2476 case YearSection: return 4;
executed: return 4;
Execution Count:1200
1200
2477 case YearSection2Digits: return 2;
executed: return 2;
Execution Count:655
655
2478 -
2479 case CalendarPopupSection: -
2480 case Internal: -
2481 case TimeSectionMask: -
2482 case DateSectionMask: -
2483 QMessageLogger("tools/qdatetime.cpp", 4745, __PRETTY_FUNCTION__).warning("QDateTimeParser::sectionMaxSize: Invalid section %s", -
2484 sectionName(s).toLatin1().constData()); -
2485 -
2486 case NoSectionIndex: -
2487 case FirstSectionIndex: -
2488 case LastSectionIndex: -
2489 case CalendarPopupIndex: -
2490 -
2491 break;
never executed: break;
0
2492 } -
2493 return -1;
never executed: return -1;
0
2494} -
2495 -
2496 -
2497int QDateTimeParser::sectionMaxSize(int index) const -
2498{ -
2499 const SectionNode &sn = sectionNode(index); -
2500 return sectionMaxSize(sn.type, sn.count);
executed: return sectionMaxSize(sn.type, sn.count);
Execution Count:13572
13572
2501} -
2502QString QDateTimeParser::sectionText(const QString &text, int sectionIndex, int index) const -
2503{ -
2504 const SectionNode &sn = sectionNode(sectionIndex); -
2505 switch (sn.type) { -
2506 case NoSectionIndex: -
2507 case FirstSectionIndex: -
2508 case LastSectionIndex: -
2509 return QString();
never executed: return QString();
0
2510 default: break;
executed: break;
Execution Count:129
129
2511 } -
2512 -
2513 return text.mid(index, sectionSize(sectionIndex));
executed: return text.mid(index, sectionSize(sectionIndex));
Execution Count:129
129
2514} -
2515 -
2516QString QDateTimeParser::sectionText(int sectionIndex) const -
2517{ -
2518 const SectionNode &sn = sectionNode(sectionIndex); -
2519 switch (sn.type) { -
2520 case NoSectionIndex: -
2521 case FirstSectionIndex: -
2522 case LastSectionIndex: -
2523 return QString();
never executed: return QString();
0
2524 default: break;
executed: break;
Execution Count:24
24
2525 } -
2526 -
2527 return displayText().mid(sn.pos, sectionSize(sectionIndex));
executed: return displayText().mid(sn.pos, sectionSize(sectionIndex));
Execution Count:24
24
2528} -
2529int QDateTimeParser::parseSection(const QDateTime &currentValue, int sectionIndex, -
2530 QString &text, int &cursorPosition, int index, -
2531 State &state, int *usedptr) const -
2532{ -
2533 state = Invalid; -
2534 int num = 0; -
2535 const SectionNode &sn = sectionNode(sectionIndex); -
2536 if ((sn.type & Internal) == Internal) {
partially evaluated: (sn.type & Internal) == Internal
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:11594
0-11594
2537 QMessageLogger("tools/qdatetime.cpp", 4819, __PRETTY_FUNCTION__).warning("QDateTimeParser::parseSection Internal error (%s %d)", -
2538 QString(sectionName(sn.type)).toLocal8Bit().constData(), sectionIndex); -
2539 return -1;
never executed: return -1;
0
2540 } -
2541 -
2542 const int sectionmaxsize = sectionMaxSize(sectionIndex); -
2543 QString sectiontext = text.mid(index, sectionmaxsize); -
2544 int sectiontextSize = sectiontext.size(); -
2545 -
2546 if (false) QMessageLogger("tools/qdatetime.cpp", 4828, __PRETTY_FUNCTION__).debug() << "sectionValue for" << sectionName(sn.type)
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:11594
0-11594
2547 << "with text" << text << "and st" << sectiontext 0
2548 << text.mid(index, sectionmaxsize) 0
2549 << index;
never executed: QMessageLogger("tools/qdatetime.cpp", 4828, __PRETTY_FUNCTION__).debug() << "sectionValue for" << sectionName(sn.type) << "with text" << text << "and st" << sectiontext << text.mid(index, sectionmaxsize) << index;
0
2550 -
2551 int used = 0; -
2552 switch (sn.type) { -
2553 case AmPmSection: { -
2554 const int ampm = findAmPm(sectiontext, sectionIndex, &used); -
2555 switch (ampm) { -
2556 case AM: -
2557 case PM: -
2558 num = ampm; -
2559 state = Acceptable; -
2560 break;
executed: break;
Execution Count:849
849
2561 case PossibleAM: -
2562 case PossiblePM: -
2563 num = ampm - 2; -
2564 state = Intermediate; -
2565 break;
never executed: break;
0
2566 case PossibleBoth: -
2567 num = 0; -
2568 state = Intermediate; -
2569 break;
never executed: break;
0
2570 case Neither: -
2571 state = Invalid; -
2572 if (false) QMessageLogger("tools/qdatetime.cpp", 4854, __PRETTY_FUNCTION__).debug() << "invalid because findAmPm(" << sectiontext << ") returned -1";
never executed: QMessageLogger("tools/qdatetime.cpp", 4854, __PRETTY_FUNCTION__).debug() << "invalid because findAmPm(" << sectiontext << ") returned -1";
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
0-2
2573 break;
executed: break;
Execution Count:2
2
2574 default: -
2575 if (false) QMessageLogger("tools/qdatetime.cpp", 4857, __PRETTY_FUNCTION__).debug("This should never happen (findAmPm returned %d)", ampm);
never executed: QMessageLogger("tools/qdatetime.cpp", 4857, __PRETTY_FUNCTION__).debug("This should never happen (findAmPm returned %d)", ampm);
never evaluated: false
0
2576 break;
never executed: break;
0
2577 } -
2578 if (state != Invalid) {
evaluated: state != Invalid
TRUEFALSE
yes
Evaluation Count:849
yes
Evaluation Count:2
2-849
2579 QString str = text; -
2580 text.replace(index, used, sectiontext.left(used)); -
2581 }
executed: }
Execution Count:849
849
2582 break; }
executed: break;
Execution Count:851
851
2583 case MonthSection: -
2584 case DayOfWeekSectionShort: -
2585 case DayOfWeekSectionLong: -
2586 if (sn.count >= 3) {
evaluated: sn.count >= 3
TRUEFALSE
yes
Evaluation Count:813
yes
Evaluation Count:994
813-994
2587 if (sn.type == MonthSection) {
evaluated: sn.type == MonthSection
TRUEFALSE
yes
Evaluation Count:784
yes
Evaluation Count:29
29-784
2588 int min = 1; -
2589 const QDate minDate = getMinimum().date(); -
2590 if (currentValue.date().year() == minDate.year()) {
evaluated: currentValue.date().year() == minDate.year()
TRUEFALSE
yes
Evaluation Count:17
yes
Evaluation Count:767
17-767
2591 min = minDate.month(); -
2592 }
executed: }
Execution Count:17
17
2593 num = findMonth(sectiontext.toLower(), min, sectionIndex, &sectiontext, &used); -
2594 } else {
executed: }
Execution Count:784
784
2595 num = findDay(sectiontext.toLower(), 1, sectionIndex, &sectiontext, &used); -
2596 }
executed: }
Execution Count:29
29
2597 -
2598 if (num != -1) {
evaluated: num != -1
TRUEFALSE
yes
Evaluation Count:807
yes
Evaluation Count:6
6-807
2599 state = (used == sectiontext.size() ? Acceptable : Intermediate);
evaluated: used == sectiontext.size()
TRUEFALSE
yes
Evaluation Count:700
yes
Evaluation Count:107
107-700
2600 QString str = text; -
2601 text.replace(index, used, sectiontext.left(used)); -
2602 } else {
executed: }
Execution Count:807
807
2603 state = Intermediate; -
2604 }
executed: }
Execution Count:6
6
2605 break; }
executed: break;
Execution Count:813
813
2606 -
2607 case DaySection: -
2608 case YearSection: -
2609 case YearSection2Digits: -
2610 case Hour12Section: -
2611 case Hour24Section: -
2612 case MinuteSection: -
2613 case SecondSection: -
2614 case MSecSection: { -
2615 if (sectiontextSize == 0) {
evaluated: sectiontextSize == 0
TRUEFALSE
yes
Evaluation Count:17
yes
Evaluation Count:9913
17-9913
2616 num = 0; -
2617 used = 0; -
2618 state = Intermediate; -
2619 } else {
executed: }
Execution Count:17
17
2620 const int absMax = absoluteMax(sectionIndex); -
2621 QLocale loc; -
2622 bool ok = true; -
2623 int last = -1; -
2624 used = -1; -
2625 -
2626 QString digitsStr(sectiontext); -
2627 for (int i = 0; i < sectiontextSize; ++i) {
evaluated: i < sectiontextSize
TRUEFALSE
yes
Evaluation Count:21774
yes
Evaluation Count:9785
9785-21774
2628 if (digitsStr.at(i).isSpace()) {
evaluated: digitsStr.at(i).isSpace()
TRUEFALSE
yes
Evaluation Count:128
yes
Evaluation Count:21646
128-21646
2629 sectiontextSize = i; -
2630 break;
executed: break;
Execution Count:128
128
2631 } -
2632 }
executed: }
Execution Count:21646
21646
2633 -
2634 const int max = qMin(sectionmaxsize, sectiontextSize); -
2635 for (int digits = max; digits >= 1; --digits) {
evaluated: digits >= 1
TRUEFALSE
yes
Evaluation Count:10541
yes
Evaluation Count:40
40-10541
2636 digitsStr.truncate(digits); -
2637 int tmp = (int)loc.toUInt(digitsStr, &ok); -
2638 if (ok && sn.type == Hour12Section) {
evaluated: ok
TRUEFALSE
yes
Evaluation Count:9881
yes
Evaluation Count:660
evaluated: sn.type == Hour12Section
TRUEFALSE
yes
Evaluation Count:810
yes
Evaluation Count:9071
660-9881
2639 if (tmp > 12) {
evaluated: tmp > 12
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:808
2-808
2640 tmp = -1; -
2641 ok = false; -
2642 } else if (tmp == 12) {
executed: }
Execution Count:2
evaluated: tmp == 12
TRUEFALSE
yes
Evaluation Count:95
yes
Evaluation Count:713
2-713
2643 tmp = 0; -
2644 }
executed: }
Execution Count:95
95
2645 } -
2646 if (ok && tmp <= absMax) {
evaluated: ok
TRUEFALSE
yes
Evaluation Count:9879
yes
Evaluation Count:662
evaluated: tmp <= absMax
TRUEFALSE
yes
Evaluation Count:9873
yes
Evaluation Count:6
6-9879
2647 if (false) QMessageLogger("tools/qdatetime.cpp", 4929, __PRETTY_FUNCTION__).debug() << sectiontext.left(digits) << tmp << digits;
never executed: QMessageLogger("tools/qdatetime.cpp", 4929, __PRETTY_FUNCTION__).debug() << sectiontext.left(digits) << tmp << digits;
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:9873
0-9873
2648 last = tmp; -
2649 used = digits; -
2650 break;
executed: break;
Execution Count:9873
9873
2651 } -
2652 }
executed: }
Execution Count:668
668
2653 -
2654 if (last == -1) {
evaluated: last == -1
TRUEFALSE
yes
Evaluation Count:40
yes
Evaluation Count:9873
40-9873
2655 QChar first(sectiontext.at(0)); -
2656 if (separators.at(sectionIndex + 1).startsWith(first)) {
evaluated: separators.at(sectionIndex + 1).startsWith(first)
TRUEFALSE
yes
Evaluation Count:38
yes
Evaluation Count:2
2-38
2657 used = 0; -
2658 state = Intermediate; -
2659 } else {
executed: }
Execution Count:38
38
2660 state = Invalid; -
2661 if (false) QMessageLogger("tools/qdatetime.cpp", 4943, __PRETTY_FUNCTION__).debug() << "invalid because" << sectiontext << "can't become a uint" << last << ok;
never executed: QMessageLogger("tools/qdatetime.cpp", 4943, __PRETTY_FUNCTION__).debug() << "invalid because" << sectiontext << "can't become a uint" << last << ok;
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
0-2
2662 }
executed: }
Execution Count:2
2
2663 } else { -
2664 num += last; -
2665 const FieldInfo fi = fieldInfo(sectionIndex); -
2666 const bool done = (used == sectionmaxsize); -
2667 if (!done && fi & Fraction) {
evaluated: !done
TRUEFALSE
yes
Evaluation Count:873
yes
Evaluation Count:9000
evaluated: fi & Fraction
TRUEFALSE
yes
Evaluation Count:80
yes
Evaluation Count:793
80-9000
2668 for (int i=used; i<sectionmaxsize; ++i) {
evaluated: i<sectionmaxsize
TRUEFALSE
yes
Evaluation Count:152
yes
Evaluation Count:80
80-152
2669 num *= 10; -
2670 }
executed: }
Execution Count:152
152
2671 }
executed: }
Execution Count:80
80
2672 const int absMin = absoluteMin(sectionIndex); -
2673 if (num < absMin) {
evaluated: num < absMin
TRUEFALSE
yes
Evaluation Count:25
yes
Evaluation Count:9848
25-9848
2674 state = done ? Invalid : Intermediate;
evaluated: done
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:22
3-22
2675 if (done)
evaluated: done
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:22
3-22
2676 if (false) QMessageLogger("tools/qdatetime.cpp", 4958, __PRETTY_FUNCTION__).debug() << "invalid because" << num << "is less than absoluteMin" << absMin;
never executed: QMessageLogger("tools/qdatetime.cpp", 4958, __PRETTY_FUNCTION__).debug() << "invalid because" << num << "is less than absoluteMin" << absMin;
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:3
0-3
2677 } else if (num > absMax) {
partially evaluated: num > absMax
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:9848
executed: }
Execution Count:25
0-9848
2678 state = Intermediate; -
2679 } else if (!done && (fi & (FixedWidth|Numeric)) == (FixedWidth|Numeric)) {
evaluated: !done
TRUEFALSE
yes
Evaluation Count:851
yes
Evaluation Count:8997
evaluated: (fi & (FixedWidth|Numeric)) == (FixedWidth|Numeric)
TRUEFALSE
yes
Evaluation Count:322
yes
Evaluation Count:529
never executed: }
0-8997
2680 if (skipToNextSection(sectionIndex, currentValue, digitsStr)) {
evaluated: skipToNextSection(sectionIndex, currentValue, digitsStr)
TRUEFALSE
yes
Evaluation Count:9
yes
Evaluation Count:313
9-313
2681 state = Acceptable; -
2682 const int missingZeroes = sectionmaxsize - digitsStr.size(); -
2683 text.insert(index, QString().fill(QLatin1Char('0'), missingZeroes)); -
2684 used = sectionmaxsize; -
2685 cursorPosition += missingZeroes; -
2686 ++(const_cast<QDateTimeParser*>(this)->sectionNodes[sectionIndex].zeroesAdded); -
2687 } else {
executed: }
Execution Count:9
9
2688 state = Intermediate;; -
2689 }
executed: }
Execution Count:313
313
2690 } else { -
2691 state = Acceptable; -
2692 }
executed: }
Execution Count:9526
9526
2693 } -
2694 } -
2695 break; }
executed: break;
Execution Count:9930
9930
2696 default: -
2697 QMessageLogger("tools/qdatetime.cpp", 4979, __PRETTY_FUNCTION__).warning("QDateTimeParser::parseSection Internal error (%s %d)", -
2698 QString(sectionName(sn.type)).toLocal8Bit().constData(), sectionIndex); -
2699 return -1;
never executed: return -1;
0
2700 } -
2701 -
2702 if (usedptr)
partially evaluated: usedptr
TRUEFALSE
yes
Evaluation Count:11594
no
Evaluation Count:0
0-11594
2703 *usedptr = used;
executed: *usedptr = used;
Execution Count:11594
11594
2704 -
2705 return (state != Invalid ? num : -1);
executed: return (state != Invalid ? num : -1);
Execution Count:11594
11594
2706} -
2707 -
2708 -
2709 -
2710 -
2711 -
2712 -
2713 -
2714QDateTimeParser::StateNode QDateTimeParser::parse(QString &input, int &cursorPosition, -
2715 const QDateTime &currentValue, bool fixup) const -
2716{ -
2717 const QDateTime minimum = getMinimum(); -
2718 const QDateTime maximum = getMaximum(); -
2719 -
2720 State state = Acceptable; -
2721 -
2722 QDateTime newCurrentValue; -
2723 int pos = 0; -
2724 bool conflicts = false; -
2725 const int sectionNodesCount = sectionNodes.size(); -
2726 -
2727 if (false) QMessageLogger("tools/qdatetime.cpp", 5009, __PRETTY_FUNCTION__).debug() << "parse" << input;
never executed: QMessageLogger("tools/qdatetime.cpp", 5009, __PRETTY_FUNCTION__).debug() << "parse" << input;
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:3332
0-3332
2728 { -
2729 int year, month, day, hour12, hour, minute, second, msec, ampm, dayofweek, year2digits; -
2730 getDateFromJulianDay(currentValue.date().toJulianDay(), &year, &month, &day); -
2731 year2digits = year % 100; -
2732 hour = currentValue.time().hour(); -
2733 hour12 = -1; -
2734 minute = currentValue.time().minute(); -
2735 second = currentValue.time().second(); -
2736 msec = currentValue.time().msec(); -
2737 dayofweek = currentValue.date().dayOfWeek(); -
2738 -
2739 ampm = -1; -
2740 Sections isSet = NoSection; -
2741 int num; -
2742 State tmpstate; -
2743 -
2744 for (int index=0; state != Invalid && index<sectionNodesCount; ++index) {
evaluated: state != Invalid
TRUEFALSE
yes
Evaluation Count:14914
yes
Evaluation Count:7
evaluated: index<sectionNodesCount
TRUEFALSE
yes
Evaluation Count:11600
yes
Evaluation Count:3314
7-14914
2745 if (QStringRef(&input, pos, separators.at(index).size()) != separators.at(index)) {
evaluated: QStringRef(&input, pos, separators.at(index).size()) != separators.at(index)
TRUEFALSE
yes
Evaluation Count:6
yes
Evaluation Count:11594
6-11594
2746 if (false) QMessageLogger("tools/qdatetime.cpp", 5028, __PRETTY_FUNCTION__).debug() << "invalid because" << input.mid(pos, separators.at(index).size())
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:6
0-6
2747 << "!=" << separators.at(index) 0
2748 << index << pos << currentSectionIndex;
never executed: QMessageLogger("tools/qdatetime.cpp", 5028, __PRETTY_FUNCTION__).debug() << "invalid because" << input.mid(pos, separators.at(index).size()) << "!=" << separators.at(index) << index << pos << currentSectionIndex;
0
2749 state = Invalid; -
2750 goto end;
executed: goto end;
Execution Count:6
6
2751 } -
2752 pos += separators.at(index).size(); -
2753 sectionNodes[index].pos = pos; -
2754 int *current = 0; -
2755 const SectionNode sn = sectionNodes.at(index); -
2756 int used; -
2757 -
2758 num = parseSection(currentValue, index, input, cursorPosition, pos, tmpstate, &used); -
2759 if (false) QMessageLogger("tools/qdatetime.cpp", 5041, __PRETTY_FUNCTION__).debug() << "sectionValue" << sectionName(sectionType(index)) << input
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:11594
0-11594
2760 << "pos" << pos << "used" << used << stateName(tmpstate);
never executed: QMessageLogger("tools/qdatetime.cpp", 5041, __PRETTY_FUNCTION__).debug() << "sectionValue" << sectionName(sectionType(index)) << input << "pos" << pos << "used" << used << stateName(tmpstate);
0
2761 if (fixup && tmpstate == Intermediate && used < sn.count) {
evaluated: fixup
TRUEFALSE
yes
Evaluation Count:70
yes
Evaluation Count:11524
evaluated: tmpstate == Intermediate
TRUEFALSE
yes
Evaluation Count:20
yes
Evaluation Count:50
evaluated: used < sn.count
TRUEFALSE
yes
Evaluation Count:19
yes
Evaluation Count:1
1-11524
2762 const FieldInfo fi = fieldInfo(index); -
2763 if ((fi & (Numeric|FixedWidth)) == (Numeric|FixedWidth)) {
evaluated: (fi & (Numeric|FixedWidth)) == (Numeric|FixedWidth)
TRUEFALSE
yes
Evaluation Count:16
yes
Evaluation Count:3
3-16
2764 const QString newText = QString::fromLatin1("%1").arg(num, sn.count, 10, QLatin1Char('0')); -
2765 input.replace(pos, used, newText); -
2766 used = sn.count; -
2767 }
executed: }
Execution Count:16
16
2768 }
executed: }
Execution Count:19
19
2769 pos += qMax(0, used); -
2770 -
2771 state = qMin<State>(state, tmpstate); -
2772 if (state == Intermediate && context == FromString) {
evaluated: state == Intermediate
TRUEFALSE
yes
Evaluation Count:1088
yes
Evaluation Count:10506
evaluated: context == FromString
TRUEFALSE
yes
Evaluation Count:5
yes
Evaluation Count:1083
5-10506
2773 state = Invalid; -
2774 break;
executed: break;
Execution Count:5
5
2775 } -
2776 -
2777 if (false) QMessageLogger("tools/qdatetime.cpp", 5059, __PRETTY_FUNCTION__).debug() << index << sectionName(sectionType(index)) << "is set to"
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:11589
0-11589
2778 << pos << "state is" << stateName(state);
never executed: QMessageLogger("tools/qdatetime.cpp", 5059, __PRETTY_FUNCTION__).debug() << index << sectionName(sectionType(index)) << "is set to" << pos << "state is" << stateName(state);
0
2779 -
2780 -
2781 if (state != Invalid) {
evaluated: state != Invalid
TRUEFALSE
yes
Evaluation Count:11582
yes
Evaluation Count:7
7-11582
2782 switch (sn.type) { -
2783 case Hour24Section: current = &hour; break;
executed: break;
Execution Count:1127
1127
2784 case Hour12Section: current = &hour12; break;
executed: break;
Execution Count:808
808
2785 case MinuteSection: current = &minute; break;
executed: break;
Execution Count:1753
1753
2786 case SecondSection: current = &second; break;
executed: break;
Execution Count:1702
1702
2787 case MSecSection: current = &msec; break;
executed: break;
Execution Count:223
223
2788 case YearSection: current = &year; break;
executed: break;
Execution Count:1000
1000
2789 case YearSection2Digits: current = &year2digits; break;
executed: break;
Execution Count:631
631
2790 case MonthSection: current = &month; break;
executed: break;
Execution Count:1775
1775
2791 case DayOfWeekSectionShort: -
2792 case DayOfWeekSectionLong: current = &dayofweek; break;
executed: break;
Execution Count:28
28
2793 case DaySection: current = &day; num = qMax<int>(1, num); break;
executed: break;
Execution Count:1686
1686
2794 case AmPmSection: current = &ampm; break;
executed: break;
Execution Count:849
849
2795 default: -
2796 QMessageLogger("tools/qdatetime.cpp", 5078, __PRETTY_FUNCTION__).warning("QDateTimeParser::parse Internal error (%s)", -
2797 QString(sectionName(sn.type)).toLocal8Bit().constData()); -
2798 break;
never executed: break;
0
2799 } -
2800 if (!current) {
partially evaluated: !current
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:11582
0-11582
2801 QMessageLogger("tools/qdatetime.cpp", 5083, __PRETTY_FUNCTION__).warning("QDateTimeParser::parse Internal error 2"); -
2802 return StateNode();
never executed: return StateNode();
0
2803 } -
2804 if (isSet & sn.type && *current != num) {
evaluated: isSet & sn.type
TRUEFALSE
yes
Evaluation Count:531
yes
Evaluation Count:11051
evaluated: *current != num
TRUEFALSE
yes
Evaluation Count:101
yes
Evaluation Count:430
101-11051
2805 if (false) QMessageLogger("tools/qdatetime.cpp", 5087, __PRETTY_FUNCTION__).debug() << "CONFLICT " << sectionName(sn.type) << *current << num;
never executed: QMessageLogger("tools/qdatetime.cpp", 5087, __PRETTY_FUNCTION__).debug() << "CONFLICT " << sectionName(sn.type) << *current << num;
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:101
0-101
2806 conflicts = true; -
2807 if (index != currentSectionIndex || num == -1) {
evaluated: index != currentSectionIndex
TRUEFALSE
yes
Evaluation Count:96
yes
Evaluation Count:5
partially evaluated: num == -1
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:5
0-96
2808 continue;
executed: continue;
Execution Count:96
96
2809 } -
2810 }
executed: }
Execution Count:5
5
2811 if (num != -1)
evaluated: num != -1
TRUEFALSE
yes
Evaluation Count:11481
yes
Evaluation Count:5
5-11481
2812 *current = num;
executed: *current = num;
Execution Count:11481
11481
2813 isSet |= sn.type; -
2814 }
executed: }
Execution Count:11486
11486
2815 }
executed: }
Execution Count:11493
11493
2816 -
2817 if (state != Invalid && QStringRef(&input, pos, input.size() - pos) != separators.last()) {
evaluated: state != Invalid
TRUEFALSE
yes
Evaluation Count:3314
yes
Evaluation Count:12
evaluated: QStringRef(&input, pos, input.size() - pos) != separators.last()
TRUEFALSE
yes
Evaluation Count:14
yes
Evaluation Count:3300
12-3314
2818 if (false) QMessageLogger("tools/qdatetime.cpp", 5100, __PRETTY_FUNCTION__).debug() << "invalid because" << input.mid(pos)
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:14
0-14
2819 << "!=" << separators.last() << pos;
never executed: QMessageLogger("tools/qdatetime.cpp", 5100, __PRETTY_FUNCTION__).debug() << "invalid because" << input.mid(pos) << "!=" << separators.last() << pos;
0
2820 state = Invalid; -
2821 }
executed: }
Execution Count:14
14
2822 -
2823 if (state != Invalid) {
evaluated: state != Invalid
TRUEFALSE
yes
Evaluation Count:3300
yes
Evaluation Count:26
26-3300
2824 if (parserType != QVariant::Time) {
evaluated: parserType != QVariant::Time
TRUEFALSE
yes
Evaluation Count:3284
yes
Evaluation Count:16
16-3284
2825 if (year % 100 != year2digits) {
evaluated: year % 100 != year2digits
TRUEFALSE
yes
Evaluation Count:115
yes
Evaluation Count:3169
115-3169
2826 switch (isSet & (YearSection2Digits|YearSection)) { -
2827 case YearSection2Digits: -
2828 year = (year / 100) * 100; -
2829 year += year2digits; -
2830 break;
executed: break;
Execution Count:31
31
2831 case ((uint)YearSection2Digits|(uint)YearSection): { -
2832 conflicts = true; -
2833 const SectionNode &sn = sectionNode(currentSectionIndex); -
2834 if (sn.type == YearSection2Digits) {
never evaluated: sn.type == YearSection2Digits
0
2835 year = (year / 100) * 100; -
2836 year += year2digits; -
2837 }
never executed: }
0
2838 break; }
never executed: break;
0
2839 default: -
2840 break;
executed: break;
Execution Count:84
84
2841 } -
2842 }
executed: }
Execution Count:115
115
2843 -
2844 const QDate date(year, month, day); -
2845 const int diff = dayofweek - date.dayOfWeek(); -
2846 if (diff != 0 && state == Acceptable && isSet & (DayOfWeekSectionShort|DayOfWeekSectionLong)) {
evaluated: diff != 0
TRUEFALSE
yes
Evaluation Count:161
yes
Evaluation Count:3123
evaluated: state == Acceptable
TRUEFALSE
yes
Evaluation Count:70
yes
Evaluation Count:91
evaluated: isSet & (DayOfWeekSectionShort|DayOfWeekSectionLong)
TRUEFALSE
yes
Evaluation Count:13
yes
Evaluation Count:57
13-3123
2847 conflicts = isSet & DaySection; -
2848 const SectionNode &sn = sectionNode(currentSectionIndex); -
2849 if (sn.type & (DayOfWeekSectionShort|DayOfWeekSectionLong) || currentSectionIndex == -1) {
partially evaluated: sn.type & (DayOfWeekSectionShort|DayOfWeekSectionLong)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:13
partially evaluated: currentSectionIndex == -1
TRUEFALSE
yes
Evaluation Count:13
no
Evaluation Count:0
0-13
2850 -
2851 day += diff; -
2852 if (day <= 0) {
evaluated: day <= 0
TRUEFALSE
yes
Evaluation Count:7
yes
Evaluation Count:6
6-7
2853 day += 7; -
2854 } else if (day > date.daysInMonth()) {
executed: }
Execution Count:7
partially evaluated: day > date.daysInMonth()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:6
0-7
2855 day -= 7; -
2856 }
never executed: }
0
2857 if (false) QMessageLogger("tools/qdatetime.cpp", 5139, __PRETTY_FUNCTION__).debug() << year << month << day << dayofweek
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:13
0-13
2858 << diff << QDate(year, month, day).dayOfWeek();
never executed: QMessageLogger("tools/qdatetime.cpp", 5139, __PRETTY_FUNCTION__).debug() << year << month << day << dayofweek << diff << QDate(year, month, day).dayOfWeek();
0
2859 }
executed: }
Execution Count:13
13
2860 }
executed: }
Execution Count:13
13
2861 bool needfixday = false; -
2862 if (sectionType(currentSectionIndex) & (DaySection|DayOfWeekSectionShort|DayOfWeekSectionLong)) {
evaluated: sectionType(currentSectionIndex) & (DaySection|DayOfWeekSectionShort|DayOfWeekSectionLong)
TRUEFALSE
yes
Evaluation Count:562
yes
Evaluation Count:2722
562-2722
2863 cachedDay = day; -
2864 } else if (cachedDay > day) {
executed: }
Execution Count:562
evaluated: cachedDay > day
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:2719
3-2719
2865 day = cachedDay; -
2866 needfixday = true; -
2867 }
executed: }
Execution Count:3
3
2868 -
2869 if (!QDate::isValid(year, month, day)) {
evaluated: !QDate::isValid(year, month, day)
TRUEFALSE
yes
Evaluation Count:41
yes
Evaluation Count:3243
41-3243
2870 if (day < 32) {
partially evaluated: day < 32
TRUEFALSE
yes
Evaluation Count:41
no
Evaluation Count:0
0-41
2871 cachedDay = day; -
2872 }
executed: }
Execution Count:41
41
2873 if (day > 28 && QDate::isValid(year, month, 1)) {
evaluated: day > 28
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:37
partially evaluated: QDate::isValid(year, month, 1)
TRUEFALSE
yes
Evaluation Count:4
no
Evaluation Count:0
0-37
2874 needfixday = true; -
2875 }
executed: }
Execution Count:4
4
2876 }
executed: }
Execution Count:41
41
2877 if (needfixday) {
evaluated: needfixday
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:3280
4-3280
2878 if (context == FromString) {
evaluated: context == FromString
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:3
1-3
2879 state = Invalid; -
2880 goto end;
executed: goto end;
Execution Count:1
1
2881 } -
2882 if (state == Acceptable && fixday) {
partially evaluated: state == Acceptable
TRUEFALSE
yes
Evaluation Count:3
no
Evaluation Count:0
partially evaluated: fixday
TRUEFALSE
yes
Evaluation Count:3
no
Evaluation Count:0
0-3
2883 day = qMin<int>(day, QDate(year, month, 1).daysInMonth()); -
2884 -
2885 const QLocale loc = locale(); -
2886 for (int i=0; i<sectionNodesCount; ++i) {
evaluated: i<sectionNodesCount
TRUEFALSE
yes
Evaluation Count:6
yes
Evaluation Count:3
3-6
2887 const Section thisSectionType = sectionType(i); -
2888 if (thisSectionType & (DaySection)) {
evaluated: thisSectionType & (DaySection)
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:3
3
2889 input.replace(sectionPos(i), sectionSize(i), loc.toString(day)); -
2890 } else if (thisSectionType & (DayOfWeekSectionShort|DayOfWeekSectionLong)) {
executed: }
Execution Count:3
partially evaluated: thisSectionType & (DayOfWeekSectionShort|DayOfWeekSectionLong)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:3
0-3
2891 const int dayOfWeek = QDate(year, month, day).dayOfWeek(); -
2892 const QLocale::FormatType dayFormat = (thisSectionType == DayOfWeekSectionShort
never evaluated: thisSectionType == DayOfWeekSectionShort
0
2893 ? QLocale::ShortFormat : QLocale::LongFormat); -
2894 const QString dayName(loc.dayName(dayOfWeek, dayFormat)); -
2895 input.replace(sectionPos(i), sectionSize(i), dayName); -
2896 }
never executed: }
0
2897 } -
2898 } else {
executed: }
Execution Count:3
3
2899 state = qMin(Intermediate, state); -
2900 }
never executed: }
0
2901 } -
2902 }
executed: }
Execution Count:3283
3283
2903 -
2904 if (parserType != QVariant::Date) {
evaluated: parserType != QVariant::Date
TRUEFALSE
yes
Evaluation Count:3255
yes
Evaluation Count:44
44-3255
2905 if (isSet & Hour12Section) {
evaluated: isSet & Hour12Section
TRUEFALSE
yes
Evaluation Count:796
yes
Evaluation Count:2459
796-2459
2906 const bool hasHour = isSet & Hour24Section; -
2907 if (ampm == -1) {
partially evaluated: ampm == -1
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:796
0-796
2908 if (hasHour) {
never evaluated: hasHour
0
2909 ampm = (hour < 12 ? 0 : 1);
never evaluated: hour < 12
0
2910 } else {
never executed: }
0
2911 ampm = 0; -
2912 }
never executed: }
0
2913 } -
2914 hour12 = (ampm == 0 ? hour12 % 12 : (hour12 % 12) + 12);
evaluated: ampm == 0
TRUEFALSE
yes
Evaluation Count:718
yes
Evaluation Count:78
78-718
2915 if (!hasHour) {
evaluated: !hasHour
TRUEFALSE
yes
Evaluation Count:794
yes
Evaluation Count:2
2-794
2916 hour = hour12; -
2917 } else if (hour != hour12) {
executed: }
Execution Count:794
partially evaluated: hour != hour12
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
0-794
2918 conflicts = true; -
2919 }
never executed: }
0
2920 } else if (ampm != -1) {
evaluated: ampm != -1
TRUEFALSE
yes
Evaluation Count:51
yes
Evaluation Count:2408
51-2408
2921 if (!(isSet & (Hour24Section))) {
evaluated: !(isSet & (Hour24Section))
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:48
3-48
2922 hour = (12 * ampm); -
2923 } else if ((ampm == 0) != (hour < 12)) {
partially evaluated: (ampm == 0) != (hour < 12)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:48
executed: }
Execution Count:3
0-48
2924 conflicts = true; -
2925 }
never executed: }
0
2926 } -
2927 -
2928 } -
2929 -
2930 newCurrentValue = QDateTime(QDate(year, month, day), QTime(hour, minute, second, msec), spec); -
2931 if (false) QMessageLogger("tools/qdatetime.cpp", 5213, __PRETTY_FUNCTION__).debug() << year << month << day << hour << minute << second << msec;
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:3299
never executed: QMessageLogger("tools/qdatetime.cpp", 5213, __PRETTY_FUNCTION__).debug() << year << month << day << hour << minute << second << msec;
0-3299
2932 }
executed: }
Execution Count:3299
3299
2933 if (false) QMessageLogger("tools/qdatetime.cpp", 5215, __PRETTY_FUNCTION__).debug("'%s' => '%s'(%s)", input.toLatin1().constData(),
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:3325
0-3325
2934 newCurrentValue.toString(QLatin1String("yyyy/MM/dd hh:mm:ss.zzz")).toLatin1().constData(), 0
2935 stateName(state).toLatin1().constData());
never executed: QMessageLogger("tools/qdatetime.cpp", 5215, __PRETTY_FUNCTION__).debug("'%s' => '%s'(%s)", input.toLatin1().constData(), newCurrentValue.toString(QLatin1String("yyyy/MM/dd hh:mm:ss.zzz")).toLatin1().constData(), stateName(state).toLatin1().constData());
0
2936 } -
2937end:
code before this statement executed: end:
Execution Count:3325
3325
2938 if (newCurrentValue.isValid()) {
evaluated: newCurrentValue.isValid()
TRUEFALSE
yes
Evaluation Count:3262
yes
Evaluation Count:70
70-3262
2939 if (context != FromString && state != Invalid && newCurrentValue < minimum) {
evaluated: context != FromString
TRUEFALSE
yes
Evaluation Count:3157
yes
Evaluation Count:105
partially evaluated: state != Invalid
TRUEFALSE
yes
Evaluation Count:3157
no
Evaluation Count:0
evaluated: newCurrentValue < minimum
TRUEFALSE
yes
Evaluation Count:53
yes
Evaluation Count:3104
0-3157
2940 const QLatin1Char space(' '); -
2941 if (newCurrentValue >= minimum)
partially evaluated: newCurrentValue >= minimum
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:53
0-53
2942 QMessageLogger("tools/qdatetime.cpp", 5224, __PRETTY_FUNCTION__).warning("QDateTimeParser::parse Internal error 3 (%s %s)", 0
2943 QString(newCurrentValue.toString()).toLocal8Bit().constData(), QString(minimum.toString()).toLocal8Bit().constData());
never executed: QMessageLogger("tools/qdatetime.cpp", 5224, __PRETTY_FUNCTION__).warning("QDateTimeParser::parse Internal error 3 (%s %s)", QString(newCurrentValue.toString()).toLocal8Bit().constData(), QString(minimum.toString()).toLocal8Bit().constData());
0
2944 -
2945 bool done = false; -
2946 state = Invalid; -
2947 for (int i=0; i<sectionNodesCount && !done; ++i) {
evaluated: i<sectionNodesCount
TRUEFALSE
yes
Evaluation Count:138
yes
Evaluation Count:44
evaluated: !done
TRUEFALSE
yes
Evaluation Count:129
yes
Evaluation Count:9
9-138
2948 const SectionNode &sn = sectionNodes.at(i); -
2949 QString t = sectionText(input, i, sn.pos).toLower(); -
2950 if ((t.size() < sectionMaxSize(i) && (((int)fieldInfo(i) & (FixedWidth|Numeric)) != Numeric))
evaluated: t.size() < sectionMaxSize(i)
TRUEFALSE
yes
Evaluation Count:55
yes
Evaluation Count:74
partially evaluated: (((int)fieldInfo(i) & (FixedWidth|Numeric)) != Numeric)
TRUEFALSE
yes
Evaluation Count:55
no
Evaluation Count:0
0-74
2951 || t.contains(space)) {
partially evaluated: t.contains(space)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:74
0-74
2952 switch (sn.type) { -
2953 case AmPmSection: -
2954 switch (findAmPm(t, i)) { -
2955 case AM: -
2956 case PM: -
2957 state = Acceptable; -
2958 done = true; -
2959 break;
never executed: break;
0
2960 case Neither: -
2961 state = Invalid; -
2962 done = true; -
2963 break;
never executed: break;
0
2964 case PossibleAM: -
2965 case PossiblePM: -
2966 case PossibleBoth: { -
2967 const QDateTime copy(newCurrentValue.addSecs(12 * 60 * 60)); -
2968 if (copy >= minimum && copy <= maximum) {
never evaluated: copy >= minimum
never evaluated: copy <= maximum
0
2969 state = Intermediate; -
2970 done = true; -
2971 }
never executed: }
0
2972 break; }
never executed: break;
0
2973 } -
2974 case MonthSection:
code before this statement never executed: case MonthSection:
0
2975 if (sn.count >= 3) {
partially evaluated: sn.count >= 3
TRUEFALSE
yes
Evaluation Count:3
no
Evaluation Count:0
0-3
2976 int tmp = newCurrentValue.date().month(); -
2977 -
2978 while ((tmp = findMonth(t, tmp + 1, i)) != -1) {
evaluated: (tmp = findMonth(t, tmp + 1, i)) != -1
TRUEFALSE
yes
Evaluation Count:6
yes
Evaluation Count:3
3-6
2979 const QDateTime copy(newCurrentValue.addMonths(tmp - newCurrentValue.date().month())); -
2980 if (copy >= minimum && copy <= maximum)
partially evaluated: copy >= minimum
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:6
never evaluated: copy <= maximum
0-6
2981 break;
never executed: break;
0
2982 }
executed: }
Execution Count:6
6
2983 if (tmp == -1) {
partially evaluated: tmp == -1
TRUEFALSE
yes
Evaluation Count:3
no
Evaluation Count:0
0-3
2984 break;
executed: break;
Execution Count:3
3
2985 } -
2986 state = Intermediate; -
2987 done = true; -
2988 break;
never executed: break;
0
2989 } -
2990 -
2991 default: { -
2992 int toMin; -
2993 int toMax; -
2994 -
2995 if (sn.type & TimeSectionMask) {
evaluated: sn.type & TimeSectionMask
TRUEFALSE
yes
Evaluation Count:20
yes
Evaluation Count:32
20-32
2996 if (newCurrentValue.daysTo(minimum) != 0) {
partially evaluated: newCurrentValue.daysTo(minimum) != 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:20
0-20
2997 break;
never executed: break;
0
2998 } -
2999 toMin = newCurrentValue.time().msecsTo(minimum.time()); -
3000 if (newCurrentValue.daysTo(maximum) > 0) {
partially evaluated: newCurrentValue.daysTo(maximum) > 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:20
0-20
3001 toMax = -1; -
3002 } else {
never executed: }
0
3003 toMax = newCurrentValue.time().msecsTo(maximum.time()); -
3004 }
executed: }
Execution Count:20
20
3005 } else { -
3006 toMin = newCurrentValue.daysTo(minimum); -
3007 toMax = newCurrentValue.daysTo(maximum); -
3008 }
executed: }
Execution Count:32
32
3009 const int maxChange = QDateTimeParser::maxChange(i); -
3010 if (toMin > maxChange) {
partially evaluated: toMin > maxChange
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:52
0-52
3011 if (false) QMessageLogger("tools/qdatetime.cpp", 5293, __PRETTY_FUNCTION__).debug() << "invalid because toMin > maxChange" << toMin
never evaluated: false
0
3012 << maxChange << t << newCurrentValue << minimum;
never executed: QMessageLogger("tools/qdatetime.cpp", 5293, __PRETTY_FUNCTION__).debug() << "invalid because toMin > maxChange" << toMin << maxChange << t << newCurrentValue << minimum;
0
3013 state = Invalid; -
3014 done = true; -
3015 break;
never executed: break;
0
3016 } else if (toMax > maxChange) {
evaluated: toMax > maxChange
TRUEFALSE
yes
Evaluation Count:14
yes
Evaluation Count:38
14-38
3017 toMax = -1; -
3018 }
executed: }
Execution Count:14
14
3019 -
3020 const int min = getDigit(minimum, i); -
3021 if (min == -1) {
partially evaluated: min == -1
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:52
0-52
3022 QMessageLogger("tools/qdatetime.cpp", 5304, __PRETTY_FUNCTION__).warning("QDateTimeParser::parse Internal error 4 (%s)", -
3023 QString(sectionName(sn.type)).toLocal8Bit().constData()); -
3024 state = Invalid; -
3025 done = true; -
3026 break;
never executed: break;
0
3027 } -
3028 -
3029 int max = toMax != -1 ? getDigit(maximum, i) : absoluteMax(i, newCurrentValue);
evaluated: toMax != -1
TRUEFALSE
yes
Evaluation Count:38
yes
Evaluation Count:14
14-38
3030 int pos = cursorPosition - sn.pos; -
3031 if (pos < 0 || pos >= t.size())
evaluated: pos < 0
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:48
evaluated: pos >= t.size()
TRUEFALSE
yes
Evaluation Count:41
yes
Evaluation Count:7
4-48
3032 pos = -1;
executed: pos = -1;
Execution Count:45
45
3033 if (!potentialValue(t.simplified(), min, max, i, newCurrentValue, pos)) {
evaluated: !potentialValue(t.simplified(), min, max, i, newCurrentValue, pos)
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:50
2-50
3034 if (false) QMessageLogger("tools/qdatetime.cpp", 5316, __PRETTY_FUNCTION__).debug() << "invalid because potentialValue(" << t.simplified() << min << max
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
0-2
3035 << sectionName(sn.type) << "returned" << toMax << toMin << pos;
never executed: QMessageLogger("tools/qdatetime.cpp", 5316, __PRETTY_FUNCTION__).debug() << "invalid because potentialValue(" << t.simplified() << min << max << sectionName(sn.type) << "returned" << toMax << toMin << pos;
0
3036 state = Invalid; -
3037 done = true; -
3038 break;
executed: break;
Execution Count:2
2
3039 } -
3040 state = Intermediate; -
3041 done = true; -
3042 break; }
executed: break;
Execution Count:50
50
3043 } -
3044 }
executed: }
Execution Count:55
55
3045 }
executed: }
Execution Count:129
129
3046 } else {
executed: }
Execution Count:53
53
3047 if (context == FromString) {
evaluated: context == FromString
TRUEFALSE
yes
Evaluation Count:105
yes
Evaluation Count:3104
105-3104
3048 -
3049 qt_noop(); -
3050 if (newCurrentValue.date().toJulianDay() > 4642999)
partially evaluated: newCurrentValue.date().toJulianDay() > 4642999
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:105
0-105
3051 state = Invalid;
never executed: state = Invalid;
0
3052 } else {
executed: }
Execution Count:105
105
3053 if (newCurrentValue > getMaximum())
evaluated: newCurrentValue > getMaximum()
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:3103
1-3103
3054 state = Invalid;
executed: state = Invalid;
Execution Count:1
1
3055 }
executed: }
Execution Count:3104
3104
3056 -
3057 if (false) QMessageLogger("tools/qdatetime.cpp", 5339, __PRETTY_FUNCTION__).debug() << "not checking intermediate because newCurrentValue is" << newCurrentValue << getMinimum() << getMaximum();
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:3209
never executed: QMessageLogger("tools/qdatetime.cpp", 5339, __PRETTY_FUNCTION__).debug() << "not checking intermediate because newCurrentValue is" << newCurrentValue << getMinimum() << getMaximum();
0-3209
3058 }
executed: }
Execution Count:3209
3209
3059 } -
3060 StateNode node; -
3061 node.input = input; -
3062 node.state = state; -
3063 node.conflicts = conflicts; -
3064 node.value = newCurrentValue.toTimeSpec(spec); -
3065 text = input; -
3066 return node;
executed: return node;
Execution Count:3332
3332
3067} -
3068int QDateTimeParser::findMonth(const QString &str1, int startMonth, int sectionIndex, -
3069 QString *usedMonth, int *used) const -
3070{ -
3071 int bestMatch = -1; -
3072 int bestCount = 0; -
3073 if (!str1.isEmpty()) {
partially evaluated: !str1.isEmpty()
TRUEFALSE
yes
Evaluation Count:793
no
Evaluation Count:0
0-793
3074 const SectionNode &sn = sectionNode(sectionIndex); -
3075 if (sn.type != MonthSection) {
partially evaluated: sn.type != MonthSection
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:793
0-793
3076 QMessageLogger("tools/qdatetime.cpp", 5367, __PRETTY_FUNCTION__).warning("QDateTimeParser::findMonth Internal error"); -
3077 return -1;
never executed: return -1;
0
3078 } -
3079 -
3080 QLocale::FormatType type = sn.count == 3 ? QLocale::ShortFormat : QLocale::LongFormat;
evaluated: sn.count == 3
TRUEFALSE
yes
Evaluation Count:612
yes
Evaluation Count:181
181-612
3081 QLocale l = locale(); -
3082 -
3083 for (int month=startMonth; month<=12; ++month) {
evaluated: month<=12
TRUEFALSE
yes
Evaluation Count:2410
yes
Evaluation Count:118
118-2410
3084 QString str2 = l.monthName(month, type).toLower(); -
3085 -
3086 if (str1.startsWith(str2)) {
evaluated: str1.startsWith(str2)
TRUEFALSE
yes
Evaluation Count:672
yes
Evaluation Count:1738
672-1738
3087 if (used) {
partially evaluated: used
TRUEFALSE
yes
Evaluation Count:672
no
Evaluation Count:0
0-672
3088 if (false) QMessageLogger("tools/qdatetime.cpp", 5379, __PRETTY_FUNCTION__).debug() << "used is set to" << str2.size();
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:672
never executed: QMessageLogger("tools/qdatetime.cpp", 5379, __PRETTY_FUNCTION__).debug() << "used is set to" << str2.size();
0-672
3089 *used = str2.size(); -
3090 }
executed: }
Execution Count:672
672
3091 if (usedMonth)
partially evaluated: usedMonth
TRUEFALSE
yes
Evaluation Count:672
no
Evaluation Count:0
0-672
3092 *usedMonth = l.monthName(month, type);
executed: *usedMonth = l.monthName(month, type);
Execution Count:672
672
3093 -
3094 return month;
executed: return month;
Execution Count:672
672
3095 } -
3096 if (context == FromString)
evaluated: context == FromString
TRUEFALSE
yes
Evaluation Count:148
yes
Evaluation Count:1590
148-1590
3097 continue;
executed: continue;
Execution Count:148
148
3098 -
3099 const int limit = qMin(str1.size(), str2.size()); -
3100 -
3101 if (false) QMessageLogger("tools/qdatetime.cpp", 5392, __PRETTY_FUNCTION__).debug() << "limit is" << limit << str1 << str2;
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:1590
never executed: QMessageLogger("tools/qdatetime.cpp", 5392, __PRETTY_FUNCTION__).debug() << "limit is" << limit << str1 << str2;
0-1590
3102 bool equal = true; -
3103 for (int i=0; i<limit; ++i) {
evaluated: i<limit
TRUEFALSE
yes
Evaluation Count:2254
yes
Evaluation Count:3
3-2254
3104 if (str1.at(i) != str2.at(i)) {
evaluated: str1.at(i) != str2.at(i)
TRUEFALSE
yes
Evaluation Count:1587
yes
Evaluation Count:667
667-1587
3105 equal = false; -
3106 if (i > bestCount) {
evaluated: i > bestCount
TRUEFALSE
yes
Evaluation Count:177
yes
Evaluation Count:1410
177-1410
3107 bestCount = i; -
3108 bestMatch = month; -
3109 }
executed: }
Execution Count:177
177
3110 break;
executed: break;
Execution Count:1587
1587
3111 } -
3112 }
executed: }
Execution Count:667
667
3113 if (equal) {
evaluated: equal
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:1587
3-1587
3114 if (used)
partially evaluated: used
TRUEFALSE
yes
Evaluation Count:3
no
Evaluation Count:0
0-3
3115 *used = limit;
executed: *used = limit;
Execution Count:3
3
3116 if (usedMonth)
partially evaluated: usedMonth
TRUEFALSE
yes
Evaluation Count:3
no
Evaluation Count:0
0-3
3117 *usedMonth = l.monthName(month, type);
executed: *usedMonth = l.monthName(month, type);
Execution Count:3
3
3118 return month;
executed: return month;
Execution Count:3
3
3119 } -
3120 }
executed: }
Execution Count:1587
1587
3121 if (usedMonth && bestMatch != -1)
evaluated: usedMonth
TRUEFALSE
yes
Evaluation Count:109
yes
Evaluation Count:9
evaluated: bestMatch != -1
TRUEFALSE
yes
Evaluation Count:104
yes
Evaluation Count:5
5-109
3122 *usedMonth = l.monthName(bestMatch, type);
executed: *usedMonth = l.monthName(bestMatch, type);
Execution Count:104
104
3123 }
executed: }
Execution Count:118
118
3124 if (used) {
evaluated: used
TRUEFALSE
yes
Evaluation Count:109
yes
Evaluation Count:9
9-109
3125 if (false) QMessageLogger("tools/qdatetime.cpp", 5416, __PRETTY_FUNCTION__).debug() << "used is set to" << bestCount;
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:109
never executed: QMessageLogger("tools/qdatetime.cpp", 5416, __PRETTY_FUNCTION__).debug() << "used is set to" << bestCount;
0-109
3126 *used = bestCount; -
3127 }
executed: }
Execution Count:109
109
3128 return bestMatch;
executed: return bestMatch;
Execution Count:118
118
3129} -
3130 -
3131int QDateTimeParser::findDay(const QString &str1, int startDay, int sectionIndex, QString *usedDay, int *used) const -
3132{ -
3133 int bestMatch = -1; -
3134 int bestCount = 0; -
3135 if (!str1.isEmpty()) {
partially evaluated: !str1.isEmpty()
TRUEFALSE
yes
Evaluation Count:29
no
Evaluation Count:0
0-29
3136 const SectionNode &sn = sectionNode(sectionIndex); -
3137 if (!(sn.type & (DaySection|DayOfWeekSectionShort|DayOfWeekSectionLong))) {
partially evaluated: !(sn.type & (DaySection|DayOfWeekSectionShort|DayOfWeekSectionLong))
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:29
0-29
3138 QMessageLogger("tools/qdatetime.cpp", 5429, __PRETTY_FUNCTION__).warning("QDateTimeParser::findDay Internal error"); -
3139 return -1;
never executed: return -1;
0
3140 } -
3141 const QLocale l = locale(); -
3142 for (int day=startDay; day<=7; ++day) {
evaluated: day<=7
TRUEFALSE
yes
Evaluation Count:97
yes
Evaluation Count:1
1-97
3143 const QString str2 = l.dayName(day, sn.count == 4 ? QLocale::LongFormat : QLocale::ShortFormat); -
3144 -
3145 if (str1.startsWith(str2.toLower())) {
evaluated: str1.startsWith(str2.toLower())
TRUEFALSE
yes
Evaluation Count:28
yes
Evaluation Count:69
28-69
3146 if (used)
partially evaluated: used
TRUEFALSE
yes
Evaluation Count:28
no
Evaluation Count:0
0-28
3147 *used = str2.size();
executed: *used = str2.size();
Execution Count:28
28
3148 if (usedDay) {
partially evaluated: usedDay
TRUEFALSE
yes
Evaluation Count:28
no
Evaluation Count:0
0-28
3149 *usedDay = str2; -
3150 }
executed: }
Execution Count:28
28
3151 return day;
executed: return day;
Execution Count:28
28
3152 } -
3153 if (context == FromString)
evaluated: context == FromString
TRUEFALSE
yes
Evaluation Count:60
yes
Evaluation Count:9
9-60
3154 continue;
executed: continue;
Execution Count:60
60
3155 -
3156 const int limit = qMin(str1.size(), str2.size()); -
3157 bool found = true; -
3158 for (int i=0; i<limit; ++i) {
partially evaluated: i<limit
TRUEFALSE
yes
Evaluation Count:9
no
Evaluation Count:0
0-9
3159 if (str1.at(i) != str2.at(i) && !str1.at(i).isSpace()) {
partially evaluated: str1.at(i) != str2.at(i)
TRUEFALSE
yes
Evaluation Count:9
no
Evaluation Count:0
partially evaluated: !str1.at(i).isSpace()
TRUEFALSE
yes
Evaluation Count:9
no
Evaluation Count:0
0-9
3160 if (i > bestCount) {
partially evaluated: i > bestCount
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:9
0-9
3161 bestCount = i; -
3162 bestMatch = day; -
3163 }
never executed: }
0
3164 found = false; -
3165 break;
executed: break;
Execution Count:9
9
3166 } -
3167 -
3168 }
never executed: }
0
3169 if (found) {
partially evaluated: found
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:9
0-9
3170 if (used)
never evaluated: used
0
3171 *used = limit;
never executed: *used = limit;
0
3172 if (usedDay)
never evaluated: usedDay
0
3173 *usedDay = str2;
never executed: *usedDay = str2;
0
3174 -
3175 return day;
never executed: return day;
0
3176 } -
3177 }
executed: }
Execution Count:9
9
3178 if (usedDay && bestMatch != -1) {
partially evaluated: usedDay
TRUEFALSE
yes
Evaluation Count:1
no
Evaluation Count:0
partially evaluated: bestMatch != -1
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:1
0-1
3179 *usedDay = l.dayName(bestMatch, sn.count == 4 ? QLocale::LongFormat : QLocale::ShortFormat); -
3180 }
never executed: }
0
3181 }
executed: }
Execution Count:1
1
3182 if (used)
partially evaluated: used
TRUEFALSE
yes
Evaluation Count:1
no
Evaluation Count:0
0-1
3183 *used = bestCount;
executed: *used = bestCount;
Execution Count:1
1
3184 -
3185 return bestMatch;
executed: return bestMatch;
Execution Count:1
1
3186} -
3187int QDateTimeParser::findAmPm(QString &str, int index, int *used) const -
3188{ -
3189 const SectionNode &s = sectionNode(index); -
3190 if (s.type != AmPmSection) {
partially evaluated: s.type != AmPmSection
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:851
0-851
3191 QMessageLogger("tools/qdatetime.cpp", 5497, __PRETTY_FUNCTION__).warning("QDateTimeParser::findAmPm Internal error"); -
3192 return -1;
never executed: return -1;
0
3193 } -
3194 if (used)
partially evaluated: used
TRUEFALSE
yes
Evaluation Count:851
no
Evaluation Count:0
0-851
3195 *used = str.size();
executed: *used = str.size();
Execution Count:851
851
3196 if (str.trimmed().isEmpty()) {
partially evaluated: str.trimmed().isEmpty()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:851
0-851
3197 return PossibleBoth;
never executed: return PossibleBoth;
0
3198 } -
3199 const QLatin1Char space(' '); -
3200 int size = sectionMaxSize(index); -
3201 -
3202 enum { -
3203 amindex = 0, -
3204 pmindex = 1 -
3205 }; -
3206 QString ampm[2]; -
3207 ampm[amindex] = getAmPmText(AmText, s.count == 1 ? UpperCase : LowerCase); -
3208 ampm[pmindex] = getAmPmText(PmText, s.count == 1 ? UpperCase : LowerCase); -
3209 for (int i=0; i<2; ++i)
evaluated: i<2
TRUEFALSE
yes
Evaluation Count:1702
yes
Evaluation Count:851
851-1702
3210 ampm[i].truncate(size);
executed: ampm[i].truncate(size);
Execution Count:1702
1702
3211 -
3212 if (false) QMessageLogger("tools/qdatetime.cpp", 5518, __PRETTY_FUNCTION__).debug() << "findAmPm" << str << ampm[0] << ampm[1];
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:851
never executed: QMessageLogger("tools/qdatetime.cpp", 5518, __PRETTY_FUNCTION__).debug() << "findAmPm" << str << ampm[0] << ampm[1];
0-851
3213 -
3214 if (str.indexOf(ampm[amindex], 0, Qt::CaseInsensitive) == 0) {
evaluated: str.indexOf(ampm[amindex], 0, Qt::CaseInsensitive) == 0
TRUEFALSE
yes
Evaluation Count:746
yes
Evaluation Count:105
105-746
3215 str = ampm[amindex]; -
3216 return AM;
executed: return AM;
Execution Count:746
746
3217 } else if (str.indexOf(ampm[pmindex], 0, Qt::CaseInsensitive) == 0) {
evaluated: str.indexOf(ampm[pmindex], 0, Qt::CaseInsensitive) == 0
TRUEFALSE
yes
Evaluation Count:103
yes
Evaluation Count:2
2-103
3218 str = ampm[pmindex]; -
3219 return PM;
executed: return PM;
Execution Count:103
103
3220 } else if (context == FromString || (str.count(space) == 0 && str.size() >= size)) {
evaluated: context == FromString
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:1
partially evaluated: str.count(space) == 0
TRUEFALSE
yes
Evaluation Count:1
no
Evaluation Count:0
partially evaluated: str.size() >= size
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:1
0-1
3221 return Neither;
executed: return Neither;
Execution Count:1
1
3222 } -
3223 size = qMin(size, str.size()); -
3224 -
3225 bool broken[2] = {false, false}; -
3226 for (int i=0; i<size; ++i) {
partially evaluated: i<size
TRUEFALSE
yes
Evaluation Count:1
no
Evaluation Count:0
0-1
3227 if (str.at(i) != space) {
partially evaluated: str.at(i) != space
TRUEFALSE
yes
Evaluation Count:1
no
Evaluation Count:0
0-1
3228 for (int j=0; j<2; ++j) {
partially evaluated: j<2
TRUEFALSE
yes
Evaluation Count:2
no
Evaluation Count:0
0-2
3229 if (!broken[j]) {
partially evaluated: !broken[j]
TRUEFALSE
yes
Evaluation Count:2
no
Evaluation Count:0
0-2
3230 int index = ampm[j].indexOf(str.at(i)); -
3231 if (false) QMessageLogger("tools/qdatetime.cpp", 5537, __PRETTY_FUNCTION__).debug() << "looking for" << str.at(i)
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
0-2
3232 << "in" << ampm[j] << "and got" << index;
never executed: QMessageLogger("tools/qdatetime.cpp", 5537, __PRETTY_FUNCTION__).debug() << "looking for" << str.at(i) << "in" << ampm[j] << "and got" << index;
0
3233 if (index == -1) {
partially evaluated: index == -1
TRUEFALSE
yes
Evaluation Count:2
no
Evaluation Count:0
0-2
3234 if (str.at(i).category() == QChar::Letter_Uppercase) {
partially evaluated: str.at(i).category() == QChar::Letter_Uppercase
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
0-2
3235 index = ampm[j].indexOf(str.at(i).toLower()); -
3236 if (false) QMessageLogger("tools/qdatetime.cpp", 5542, __PRETTY_FUNCTION__).debug() << "trying with" << str.at(i).toLower()
never evaluated: false
0
3237 << "in" << ampm[j] << "and got" << index;
never executed: QMessageLogger("tools/qdatetime.cpp", 5542, __PRETTY_FUNCTION__).debug() << "trying with" << str.at(i).toLower() << "in" << ampm[j] << "and got" << index;
0
3238 } else if (str.at(i).category() == QChar::Letter_Lowercase) {
partially evaluated: str.at(i).category() == QChar::Letter_Lowercase
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
never executed: }
0-2
3239 index = ampm[j].indexOf(str.at(i).toUpper()); -
3240 if (false) QMessageLogger("tools/qdatetime.cpp", 5546, __PRETTY_FUNCTION__).debug() << "trying with" << str.at(i).toUpper()
never evaluated: false
0
3241 << "in" << ampm[j] << "and got" << index;
never executed: QMessageLogger("tools/qdatetime.cpp", 5546, __PRETTY_FUNCTION__).debug() << "trying with" << str.at(i).toUpper() << "in" << ampm[j] << "and got" << index;
0
3242 }
never executed: }
0
3243 if (index == -1) {
partially evaluated: index == -1
TRUEFALSE
yes
Evaluation Count:2
no
Evaluation Count:0
0-2
3244 broken[j] = true; -
3245 if (broken[amindex] && broken[pmindex]) {
partially evaluated: broken[amindex]
TRUEFALSE
yes
Evaluation Count:2
no
Evaluation Count:0
evaluated: broken[pmindex]
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:1
0-2
3246 if (false) QMessageLogger("tools/qdatetime.cpp", 5552, __PRETTY_FUNCTION__).debug() << str << "didn't make it";
partially evaluated: false
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:1
never executed: QMessageLogger("tools/qdatetime.cpp", 5552, __PRETTY_FUNCTION__).debug() << str << "didn't make it";
0-1
3247 return Neither;
executed: return Neither;
Execution Count:1
1
3248 } -
3249 continue;
executed: continue;
Execution Count:1
1
3250 } else { -
3251 str[i] = ampm[j].at(index); -
3252 }
never executed: }
0
3253 } -
3254 ampm[j].remove(index, 1); -
3255 }
never executed: }
0
3256 }
never executed: }
0
3257 }
never executed: }
0
3258 }
never executed: }
0
3259 if (!broken[pmindex] && !broken[amindex])
never evaluated: !broken[pmindex]
never evaluated: !broken[amindex]
0
3260 return PossibleBoth;
never executed: return PossibleBoth;
0
3261 return (!broken[amindex] ? PossibleAM : PossiblePM);
never executed: return (!broken[amindex] ? PossibleAM : PossiblePM);
0
3262} -
3263 -
3264 -
3265 -
3266 -
3267 -
3268 -
3269int QDateTimeParser::maxChange(int index) const -
3270{ -
3271 const SectionNode &sn = sectionNode(index); -
3272 switch (sn.type) { -
3273 -
3274 case MSecSection: return 999;
never executed: return 999;
0
3275 case SecondSection: return 59 * 1000;
never executed: return 59 * 1000;
0
3276 case MinuteSection: return 59 * 60 * 1000;
executed: return 59 * 60 * 1000;
Execution Count:11
11
3277 case Hour24Section: case Hour12Section: return 59 * 60 * 60 * 1000;
executed: return 59 * 60 * 60 * 1000;
Execution Count:9
9
3278 -
3279 -
3280 case DayOfWeekSectionShort: -
3281 case DayOfWeekSectionLong: return 7;
never executed: return 7;
0
3282 case DaySection: return 30;
never executed: return 30;
0
3283 case MonthSection: return 365 - 31;
never executed: return 365 - 31;
0
3284 case YearSection: return 9999 * 365;
executed: return 9999 * 365;
Execution Count:29
29
3285 case YearSection2Digits: return 100 * 365;
executed: return 100 * 365;
Execution Count:3
3
3286 default: -
3287 QMessageLogger("tools/qdatetime.cpp", 5593, __PRETTY_FUNCTION__).warning("QDateTimeParser::maxChange() Internal error (%s)", -
3288 QString(sectionName(sectionType(index))).toLocal8Bit().constData()); -
3289 }
never executed: }
0
3290 -
3291 return -1;
never executed: return -1;
0
3292} -
3293 -
3294QDateTimeParser::FieldInfo QDateTimeParser::fieldInfo(int index) const -
3295{ -
3296 FieldInfo ret = 0; -
3297 const SectionNode &sn = sectionNode(index); -
3298 const Section s = sn.type; -
3299 switch (s) { -
3300 case MSecSection: -
3301 ret |= Fraction; -
3302 -
3303 case SecondSection:
code before this statement executed: case SecondSection:
Execution Count:225
225
3304 case MinuteSection: -
3305 case Hour24Section: -
3306 case Hour12Section: -
3307 case YearSection: -
3308 case YearSection2Digits: -
3309 ret |= Numeric; -
3310 if (s != YearSection) {
evaluated: s != YearSection
TRUEFALSE
yes
Evaluation Count:6331
yes
Evaluation Count:1019
1019-6331
3311 ret |= AllowPartial; -
3312 }
executed: }
Execution Count:6331
6331
3313 if (sn.count != 1) {
evaluated: sn.count != 1
TRUEFALSE
yes
Evaluation Count:7030
yes
Evaluation Count:320
320-7030
3314 ret |= FixedWidth; -
3315 }
executed: }
Execution Count:7030
7030
3316 break;
executed: break;
Execution Count:7350
7350
3317 case MonthSection: -
3318 case DaySection: -
3319 switch (sn.count) { -
3320 case 2: -
3321 ret |= FixedWidth; -
3322 -
3323 case 1:
code before this statement executed: case 1:
Execution Count:2281
2281
3324 ret |= (Numeric|AllowPartial); -
3325 break;
executed: break;
Execution Count:2693
2693
3326 } -
3327 break;
executed: break;
Execution Count:2713
2713
3328 case DayOfWeekSectionShort: -
3329 case DayOfWeekSectionLong: -
3330 if (sn.count == 3)
never evaluated: sn.count == 3
0
3331 ret |= FixedWidth;
never executed: ret |= FixedWidth;
0
3332 break;
never executed: break;
0
3333 case AmPmSection: -
3334 ret |= FixedWidth; -
3335 break;
never executed: break;
0
3336 default: -
3337 QMessageLogger("tools/qdatetime.cpp", 5643, __PRETTY_FUNCTION__).warning("QDateTimeParser::fieldInfo Internal error 2 (%d %s %d)", -
3338 index, QString(sectionName(sn.type)).toLocal8Bit().constData(), sn.count); -
3339 break;
never executed: break;
0
3340 } -
3341 return ret;
executed: return ret;
Execution Count:10063
10063
3342} -
3343QString QDateTimeParser::sectionFormat(int index) const -
3344{ -
3345 const SectionNode &sn = sectionNode(index); -
3346 return sectionFormat(sn.type, sn.count);
executed: return sectionFormat(sn.type, sn.count);
Execution Count:6
6
3347} -
3348 -
3349QString QDateTimeParser::sectionFormat(Section s, int count) const -
3350{ -
3351 QChar fillChar; -
3352 switch (s) { -
3353 case AmPmSection: return count == 1 ? QLatin1String("AP") : QLatin1String("ap");
never executed: return count == 1 ? QLatin1String("AP") : QLatin1String("ap");
0
3354 case MSecSection: fillChar = QLatin1Char('z'); break;
never executed: break;
0
3355 case SecondSection: fillChar = QLatin1Char('s'); break;
never executed: break;
0
3356 case MinuteSection: fillChar = QLatin1Char('m'); break;
never executed: break;
0
3357 case Hour24Section: fillChar = QLatin1Char('H'); break;
never executed: break;
0
3358 case Hour12Section: fillChar = QLatin1Char('h'); break;
never executed: break;
0
3359 case DayOfWeekSectionShort: -
3360 case DayOfWeekSectionLong: -
3361 case DaySection: fillChar = QLatin1Char('d'); break;
executed: break;
Execution Count:2
2
3362 case MonthSection: fillChar = QLatin1Char('M'); break;
executed: break;
Execution Count:2
2
3363 case YearSection2Digits: -
3364 case YearSection: fillChar = QLatin1Char('y'); break;
executed: break;
Execution Count:2
2
3365 default: -
3366 QMessageLogger("tools/qdatetime.cpp", 5681, __PRETTY_FUNCTION__).warning("QDateTimeParser::sectionFormat Internal error (%s)", -
3367 QString(sectionName(s)).toLocal8Bit().constData()); -
3368 return QString();
never executed: return QString();
0
3369 } -
3370 if (fillChar.isNull()) {
partially evaluated: fillChar.isNull()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:6
0-6
3371 QMessageLogger("tools/qdatetime.cpp", 5686, __PRETTY_FUNCTION__).warning("QDateTimeParser::sectionFormat Internal error 2"); -
3372 return QString();
never executed: return QString();
0
3373 } -
3374 -
3375 QString str; -
3376 str.fill(fillChar, count); -
3377 return str;
executed: return str;
Execution Count:6
6
3378} -
3379bool QDateTimeParser::potentialValue(const QString &str, int min, int max, int index, -
3380 const QDateTime &currentValue, int insert) const -
3381{ -
3382 if (str.isEmpty()) {
evaluated: str.isEmpty()
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:992
3-992
3383 return true;
executed: return true;
Execution Count:3
3
3384 } -
3385 const int size = sectionMaxSize(index); -
3386 int val = (int)locale().toUInt(str); -
3387 const SectionNode &sn = sectionNode(index); -
3388 if (sn.type == YearSection2Digits) {
evaluated: sn.type == YearSection2Digits
TRUEFALSE
yes
Evaluation Count:20
yes
Evaluation Count:972
20-972
3389 val += currentValue.date().year() - (currentValue.date().year() % 100); -
3390 }
executed: }
Execution Count:20
20
3391 if (val >= min && val <= max && str.size() == size) {
evaluated: val >= min
TRUEFALSE
yes
Evaluation Count:791
yes
Evaluation Count:201
evaluated: val <= max
TRUEFALSE
yes
Evaluation Count:701
yes
Evaluation Count:90
evaluated: str.size() == size
TRUEFALSE
yes
Evaluation Count:362
yes
Evaluation Count:339
90-791
3392 return true;
executed: return true;
Execution Count:362
362
3393 } else if (val > max) {
evaluated: val > max
TRUEFALSE
yes
Evaluation Count:90
yes
Evaluation Count:540
90-540
3394 return false;
executed: return false;
Execution Count:90
90
3395 } else if (str.size() == size && val < min) {
evaluated: str.size() == size
TRUEFALSE
yes
Evaluation Count:115
yes
Evaluation Count:425
partially evaluated: val < min
TRUEFALSE
yes
Evaluation Count:115
no
Evaluation Count:0
0-425
3396 return false;
executed: return false;
Execution Count:115
115
3397 } -
3398 -
3399 const int len = size - str.size(); -
3400 for (int i=0; i<len; ++i) {
evaluated: i<len
TRUEFALSE
yes
Evaluation Count:425
yes
Evaluation Count:13
13-425
3401 for (int j=0; j<10; ++j) {
evaluated: j<10
TRUEFALSE
yes
Evaluation Count:608
yes
Evaluation Count:13
13-608
3402 if (potentialValue(str + QLatin1Char('0' + j), min, max, index, currentValue, insert)) {
evaluated: potentialValue(str + QLatin1Char('0' + j), min, max, index, currentValue, insert)
TRUEFALSE
yes
Evaluation Count:409
yes
Evaluation Count:199
199-409
3403 return true;
executed: return true;
Execution Count:409
409
3404 } else if (insert >= 0) {
evaluated: insert >= 0
TRUEFALSE
yes
Evaluation Count:9
yes
Evaluation Count:190
9-190
3405 QString tmp = str; -
3406 tmp.insert(insert, QLatin1Char('0' + j)); -
3407 if (potentialValue(tmp, min, max, index, currentValue, insert))
evaluated: potentialValue(tmp, min, max, index, currentValue, insert)
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:6
3-6
3408 return true;
executed: return true;
Execution Count:3
3
3409 }
executed: }
Execution Count:6
6
3410 } -
3411 }
executed: }
Execution Count:13
13
3412 -
3413 return false;
executed: return false;
Execution Count:13
13
3414} -
3415 -
3416bool QDateTimeParser::skipToNextSection(int index, const QDateTime &current, const QString &text) const -
3417{ -
3418 qt_noop(); -
3419 -
3420 const SectionNode &node = sectionNode(index); -
3421 qt_noop(); -
3422 -
3423 const QDateTime maximum = getMaximum(); -
3424 const QDateTime minimum = getMinimum(); -
3425 QDateTime tmp = current; -
3426 int min = absoluteMin(index); -
3427 setDigit(tmp, index, min); -
3428 if (tmp < minimum) {
evaluated: tmp < minimum
TRUEFALSE
yes
Evaluation Count:17
yes
Evaluation Count:309
17-309
3429 min = getDigit(minimum, index); -
3430 }
executed: }
Execution Count:17
17
3431 -
3432 int max = absoluteMax(index, current); -
3433 setDigit(tmp, index, max); -
3434 if (tmp > maximum) {
evaluated: tmp > maximum
TRUEFALSE
yes
Evaluation Count:33
yes
Evaluation Count:293
33-293
3435 max = getDigit(maximum, index); -
3436 }
executed: }
Execution Count:33
33
3437 int pos = cursorPosition() - node.pos; -
3438 if (pos < 0 || pos >= text.size())
evaluated: pos < 0
TRUEFALSE
yes
Evaluation Count:7
yes
Evaluation Count:319
evaluated: pos >= text.size()
TRUEFALSE
yes
Evaluation Count:312
yes
Evaluation Count:7
7-319
3439 pos = -1;
executed: pos = -1;
Execution Count:319
319
3440 -
3441 const bool potential = potentialValue(text, min, max, index, current, pos); -
3442 return !potential;
executed: return !potential;
Execution Count:326
326
3443 -
3444 -
3445 -
3446 -
3447 -
3448 -
3449} -
3450 -
3451 -
3452 -
3453 -
3454 -
3455 -
3456QString QDateTimeParser::sectionName(int s) const -
3457{ -
3458 switch (s) { -
3459 case QDateTimeParser::AmPmSection: return QLatin1String("AmPmSection");
never executed: return QLatin1String("AmPmSection");
0
3460 case QDateTimeParser::DaySection: return QLatin1String("DaySection");
never executed: return QLatin1String("DaySection");
0
3461 case QDateTimeParser::DayOfWeekSectionShort: return QLatin1String("DayOfWeekSectionShort");
never executed: return QLatin1String("DayOfWeekSectionShort");
0
3462 case QDateTimeParser::DayOfWeekSectionLong: return QLatin1String("DayOfWeekSectionLong");
never executed: return QLatin1String("DayOfWeekSectionLong");
0
3463 case QDateTimeParser::Hour24Section: return QLatin1String("Hour24Section");
never executed: return QLatin1String("Hour24Section");
0
3464 case QDateTimeParser::Hour12Section: return QLatin1String("Hour12Section");
never executed: return QLatin1String("Hour12Section");
0
3465 case QDateTimeParser::MSecSection: return QLatin1String("MSecSection");
never executed: return QLatin1String("MSecSection");
0
3466 case QDateTimeParser::MinuteSection: return QLatin1String("MinuteSection");
never executed: return QLatin1String("MinuteSection");
0
3467 case QDateTimeParser::MonthSection: return QLatin1String("MonthSection");
never executed: return QLatin1String("MonthSection");
0
3468 case QDateTimeParser::SecondSection: return QLatin1String("SecondSection");
never executed: return QLatin1String("SecondSection");
0
3469 case QDateTimeParser::YearSection: return QLatin1String("YearSection");
never executed: return QLatin1String("YearSection");
0
3470 case QDateTimeParser::YearSection2Digits: return QLatin1String("YearSection2Digits");
never executed: return QLatin1String("YearSection2Digits");
0
3471 case QDateTimeParser::NoSection: return QLatin1String("NoSection");
never executed: return QLatin1String("NoSection");
0
3472 case QDateTimeParser::FirstSection: return QLatin1String("FirstSection");
never executed: return QLatin1String("FirstSection");
0
3473 case QDateTimeParser::LastSection: return QLatin1String("LastSection");
never executed: return QLatin1String("LastSection");
0
3474 default: return QLatin1String("Unknown section ") + QString::number(s);
never executed: return QLatin1String("Unknown section ") + QString::number(s);
0
3475 } -
3476}
never executed: }
0
3477 -
3478 -
3479 -
3480 -
3481 -
3482 -
3483QString QDateTimeParser::stateName(int s) const -
3484{ -
3485 switch (s) { -
3486 case Invalid: return QLatin1String("Invalid");
never executed: return QLatin1String("Invalid");
0
3487 case Intermediate: return QLatin1String("Intermediate");
never executed: return QLatin1String("Intermediate");
0
3488 case Acceptable: return QLatin1String("Acceptable");
never executed: return QLatin1String("Acceptable");
0
3489 default: return QLatin1String("Unknown state ") + QString::number(s);
never executed: return QLatin1String("Unknown state ") + QString::number(s);
0
3490 } -
3491}
never executed: }
0
3492 -
3493 -
3494bool QDateTimeParser::fromString(const QString &t, QDate *date, QTime *time) const -
3495{ -
3496 QDateTime val(QDate(1900, 1, 1), QTime(0, 0, 0, 0)); -
3497 QString text = t; -
3498 int copy = -1; -
3499 const StateNode tmp = parse(text, copy, val, false); -
3500 if (tmp.state != Acceptable || tmp.conflicts) {
evaluated: tmp.state != Acceptable
TRUEFALSE
yes
Evaluation Count:19
yes
Evaluation Count:105
evaluated: tmp.conflicts
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:101
4-105
3501 return false;
executed: return false;
Execution Count:23
23
3502 } -
3503 if (time) {
evaluated: time
TRUEFALSE
yes
Evaluation Count:65
yes
Evaluation Count:36
36-65
3504 const QTime t = tmp.value.time(); -
3505 if (!t.isValid()) {
partially evaluated: !t.isValid()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:65
0-65
3506 return false;
never executed: return false;
0
3507 } -
3508 *time = t; -
3509 }
executed: }
Execution Count:65
65
3510 -
3511 if (date) {
evaluated: date
TRUEFALSE
yes
Evaluation Count:95
yes
Evaluation Count:6
6-95
3512 const QDate d = tmp.value.date(); -
3513 if (!d.isValid()) {
partially evaluated: !d.isValid()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:95
0-95
3514 return false;
never executed: return false;
0
3515 } -
3516 *date = d; -
3517 }
executed: }
Execution Count:95
95
3518 return true;
executed: return true;
Execution Count:101
101
3519} -
3520 -
3521 -
3522QDateTime QDateTimeParser::getMinimum() const -
3523{ -
3524 return QDateTime(QDate(100, 1, 1), QTime(0, 0, 0, 0), spec);
executed: return QDateTime(QDate(100, 1, 1), QTime(0, 0, 0, 0), spec);
Execution Count:147
147
3525} -
3526 -
3527QDateTime QDateTimeParser::getMaximum() const -
3528{ -
3529 return QDateTime(QDate(7999, 12, 31), QTime(23, 59, 59, 999), spec);
executed: return QDateTime(QDate(7999, 12, 31), QTime(23, 59, 59, 999), spec);
Execution Count:127
127
3530} -
3531 -
3532QString QDateTimeParser::getAmPmText(AmPm ap, Case cs) const -
3533{ -
3534 if (ap == AmText) {
evaluated: ap == AmText
TRUEFALSE
yes
Evaluation Count:65
yes
Evaluation Count:65
65
3535 return (cs == UpperCase ? QLatin1String("AM") : QLatin1String("am"));
executed: return (cs == UpperCase ? QLatin1String("AM") : QLatin1String("am"));
Execution Count:65
65
3536 } else { -
3537 return (cs == UpperCase ? QLatin1String("PM") : QLatin1String("pm"));
executed: return (cs == UpperCase ? QLatin1String("PM") : QLatin1String("pm"));
Execution Count:65
65
3538 } -
3539} -
3540 -
3541 -
3542 -
3543 -
3544 -
3545 -
3546 -
3547bool operator==(const QDateTimeParser::SectionNode &s1, const QDateTimeParser::SectionNode &s2) -
3548{ -
3549 return (s1.type == s2.type) && (s1.pos == s2.pos) && (s1.count == s2.count);
never executed: return (s1.type == s2.type) && (s1.pos == s2.pos) && (s1.count == s2.count);
0
3550} -
3551 -
3552 -
3553 -
3554 -
3555 -
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial