codecs/qicucodec.cpp

Switch to Source codePreprocessed file
LineSource CodeCoverage
1 -
2 -
3 -
4 -
5 -
6 -
7 -
8static void qIcuCodecStateFree(QTextCodec::ConverterState *state) -
9{ -
10 ucnv_close_44(static_cast<UConverter *>(state->d)); -
11}
executed: }
Execution Count:85171
85171
12 -
13bool qTextCodecNameMatch(const char *n, const char *h) -
14{ -
15 return ucnv_compareNames_44(n, h) == 0;
executed: return ucnv_compareNames_44(n, h) == 0;
Execution Count:484870
484870
16} -
17struct MibToName { -
18 short mib; -
19 short index; -
20}; -
21 -
22static MibToName mibToName[] = { -
23 { 3, 0 }, -
24 { 4, 9 }, -
25 { 5, 20 }, -
26 { 6, 31 }, -
27 { 7, 42 }, -
28 { 8, 53 }, -
29 { 9, 64 }, -
30 { 10, 75 }, -
31 { 11, 86 }, -
32 { 12, 97 }, -
33 { 13, 108 }, -
34 { 16, 120 }, -
35 { 17, 134 }, -
36 { 18, 144 }, -
37 { 30, 151 }, -
38 { 36, 160 }, -
39 { 37, 167 }, -
40 { 38, 179 }, -
41 { 39, 186 }, -
42 { 40, 198 }, -
43 { 57, 212 }, -
44 { 81, 223 }, -
45 { 82, 234 }, -
46 { 84, 245 }, -
47 { 85, 256 }, -
48 { 104, 267 }, -
49 { 105, 279 }, -
50 { 106, 295 }, -
51 { 109, 301 }, -
52 { 110, 313 }, -
53 { 111, 325 }, -
54 { 113, 337 }, -
55 { 114, 341 }, -
56 { 1000, 349 }, -
57 { 1001, 356 }, -
58 { 1011, 363 }, -
59 { 1012, 368 }, -
60 { 1013, 374 }, -
61 { 1014, 383 }, -
62 { 1015, 392 }, -
63 { 1016, 399 }, -
64 { 1017, 406 }, -
65 { 1018, 413 }, -
66 { 1019, 422 }, -
67 { 1020, 431 }, -
68 { 2004, 438 }, -
69 { 2005, 448 }, -
70 { 2009, 472 }, -
71 { 2013, 479 }, -
72 { 2016, 486 }, -
73 { 2024, 495 }, -
74 { 2025, 505 }, -
75 { 2026, 512 }, -
76 { 2027, 517 }, -
77 { 2028, 527 }, -
78 { 2030, 534 }, -
79 { 2033, 541 }, -
80 { 2034, 548 }, -
81 { 2035, 555 }, -
82 { 2037, 562 }, -
83 { 2038, 569 }, -
84 { 2039, 576 }, -
85 { 2040, 583 }, -
86 { 2041, 590 }, -
87 { 2043, 597 }, -
88 { 2011, 604 }, -
89 { 2044, 611 }, -
90 { 2045, 618 }, -
91 { 2010, 624 }, -
92 { 2046, 631 }, -
93 { 2047, 638 }, -
94 { 2048, 645 }, -
95 { 2049, 652 }, -
96 { 2050, 659 }, -
97 { 2051, 666 }, -
98 { 2052, 673 }, -
99 { 2053, 680 }, -
100 { 2054, 687 }, -
101 { 2055, 694 }, -
102 { 2056, 701 }, -
103 { 2062, 708 }, -
104 { 2063, 715 }, -
105 { 2084, 723 }, -
106 { 2085, 730 }, -
107 { 2086, 741 }, -
108 { 2087, 748 }, -
109 { 2088, 755 }, -
110 { 2089, 762 }, -
111 { 2091, 771 }, -
112 { 2092, 780 }, -
113 { 2093, 789 }, -
114 { 2094, 798 }, -
115 { 2095, 807 }, -
116 { 2096, 816 }, -
117 { 2097, 825 }, -
118 { 2098, 834 }, -
119 { 2099, 843 }, -
120 { 2100, 852 }, -
121 { 2101, 861 }, -
122 { 2102, 872 }, -
123 { 2250, 880 }, -
124 { 2251, 893 }, -
125 { 2252, 906 }, -
126 { 2253, 919 }, -
127 { 2254, 932 }, -
128 { 2255, 945 }, -
129 { 2256, 958 }, -
130 { 2257, 971 }, -
131 { 2258, 984 }, -
132 { 2259, 997 }, -
133}; -
134int mibToNameSize = sizeof(mibToName)/sizeof(MibToName); -
135 -
136static const char mibToNameTable[] = -
137 "US-ASCII\0" -
138 "ISO-8859-1\0" -
139 "ISO-8859-2\0" -
140 "ISO-8859-3\0" -
141 "ISO-8859-4\0" -
142 "ISO-8859-5\0" -
143 "ISO-8859-6\0" -
144 "ISO-8859-7\0" -
145 "ISO-8859-8\0" -
146 "ISO-8859-9\0" -
147 "ISO-8859-10\0" -
148 "ISO-2022-JP-1\0" -
149 "Shift_JIS\0" -
150 "EUC-JP\0" -
151 "US-ASCII\0" -
152 "EUC-KR\0" -
153 "ISO-2022-KR\0" -
154 "EUC-KR\0" -
155 "ISO-2022-JP\0" -
156 "ISO-2022-JP-2\0" -
157 "GB_2312-80\0" -
158 "ISO-8859-6\0" -
159 "ISO-8859-6\0" -
160 "ISO-8859-8\0" -
161 "ISO-8859-8\0" -
162 "ISO-2022-CN\0" -
163 "ISO-2022-CN-EXT\0" -
164 "UTF-8\0" -
165 "ISO-8859-13\0" -
166 "ISO-8859-14\0" -
167 "ISO-8859-15\0" -
168 "GBK\0" -
169 "GB18030\0" -
170 "UTF-16\0" -
171 "UTF-32\0" -
172 "SCSU\0" -
173 "UTF-7\0" -
174 "UTF-16BE\0" -
175 "UTF-16LE\0" -
176 "UTF-16\0" -
177 "CESU-8\0" -
178 "UTF-32\0" -
179 "UTF-32BE\0" -
180 "UTF-32LE\0" -
181 "BOCU-1\0" -
182 "hp-roman8\0" -
183 "Adobe-Standard-Encoding\0" -
184 "IBM850\0" -
185 "IBM862\0" -
186 "IBM-Thai\0" -
187 "Shift_JIS\0" -
188 "GB2312\0" -
189 "Big5\0" -
190 "macintosh\0" -
191 "IBM037\0" -
192 "IBM273\0" -
193 "IBM277\0" -
194 "IBM278\0" -
195 "IBM280\0" -
196 "IBM284\0" -
197 "IBM285\0" -
198 "IBM290\0" -
199 "IBM297\0" -
200 "IBM420\0" -
201 "IBM424\0" -
202 "IBM437\0" -
203 "IBM500\0" -
204 "cp851\0" -
205 "IBM852\0" -
206 "IBM855\0" -
207 "IBM857\0" -
208 "IBM860\0" -
209 "IBM861\0" -
210 "IBM863\0" -
211 "IBM864\0" -
212 "IBM865\0" -
213 "IBM868\0" -
214 "IBM869\0" -
215 "IBM870\0" -
216 "IBM871\0" -
217 "IBM918\0" -
218 "IBM1026\0" -
219 "KOI8-R\0" -
220 "HZ-GB-2312\0" -
221 "IBM866\0" -
222 "IBM775\0" -
223 "KOI8-U\0" -
224 "IBM00858\0" -
225 "IBM01140\0" -
226 "IBM01141\0" -
227 "IBM01142\0" -
228 "IBM01143\0" -
229 "IBM01144\0" -
230 "IBM01145\0" -
231 "IBM01146\0" -
232 "IBM01147\0" -
233 "IBM01148\0" -
234 "IBM01149\0" -
235 "Big5-HKSCS\0" -
236 "IBM1047\0" -
237 "windows-1250\0" -
238 "windows-1251\0" -
239 "windows-1252\0" -
240 "windows-1253\0" -
241 "windows-1254\0" -
242 "windows-1255\0" -
243 "windows-1256\0" -
244 "windows-1257\0" -
245 "windows-1258\0" -
246 "TIS-620\0"; -
247 -
248static QTextCodec *loadQtCodec(const char *name) -
249{ -
250 if (!strcmp(name, "UTF-8"))
evaluated: !strcmp(name, "UTF-8")
TRUEFALSE
yes
Evaluation Count:117
yes
Evaluation Count:149
117-149
251 return new QUtf8Codec;
executed: return new QUtf8Codec;
Execution Count:117
117
252 if (!strcmp(name, "UTF-16"))
evaluated: !strcmp(name, "UTF-16")
TRUEFALSE
yes
Evaluation Count:7
yes
Evaluation Count:142
7-142
253 return new QUtf16Codec;
executed: return new QUtf16Codec;
Execution Count:7
7
254 if (!strcmp(name, "ISO-8859-1"))
evaluated: !strcmp(name, "ISO-8859-1")
TRUEFALSE
yes
Evaluation Count:5
yes
Evaluation Count:137
5-137
255 return new QLatin1Codec;
executed: return new QLatin1Codec;
Execution Count:5
5
256 if (!strcmp(name, "UTF-16BE"))
evaluated: !strcmp(name, "UTF-16BE")
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:133
4-133
257 return new QUtf16BECodec;
executed: return new QUtf16BECodec;
Execution Count:4
4
258 if (!strcmp(name, "UTF-16LE"))
evaluated: !strcmp(name, "UTF-16LE")
TRUEFALSE
yes
Evaluation Count:5
yes
Evaluation Count:128
5-128
259 return new QUtf16LECodec;
executed: return new QUtf16LECodec;
Execution Count:5
5
260 if (!strcmp(name, "UTF-32"))
evaluated: !strcmp(name, "UTF-32")
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:126
2-126
261 return new QUtf32Codec;
executed: return new QUtf32Codec;
Execution Count:2
2
262 if (!strcmp(name, "UTF-32BE"))
evaluated: !strcmp(name, "UTF-32BE")
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:124
2-124
263 return new QUtf32BECodec;
executed: return new QUtf32BECodec;
Execution Count:2
2
264 if (!strcmp(name, "UTF-32LE"))
evaluated: !strcmp(name, "UTF-32LE")
TRUEFALSE
yes
Evaluation Count:3
yes
Evaluation Count:121
3-121
265 return new QUtf32LECodec;
executed: return new QUtf32LECodec;
Execution Count:3
3
266 -
267 if (!strcmp(name, "TSCII"))
evaluated: !strcmp(name, "TSCII")
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:120
1-120
268 return new QTsciiCodec;
executed: return new QTsciiCodec;
Execution Count:1
1
269 if (!qstrnicmp(name, "iscii", 5))
evaluated: !qstrnicmp(name, "iscii", 5)
TRUEFALSE
yes
Evaluation Count:9
yes
Evaluation Count:111
9-111
270 return QIsciiCodec::create(name);
executed: return QIsciiCodec::create(name);
Execution Count:9
9
271 -
272 -
273 return 0;
executed: return 0;
Execution Count:111
111
274} -
275 -
276 -
277QList<QByteArray> QIcuCodec::availableCodecs() -
278{ -
279 QList<QByteArray> codecs; -
280 int n = ucnv_countAvailable_44(); -
281 for (int i = 0; i < n; ++i) {
evaluated: i < n
TRUEFALSE
yes
Evaluation Count:450
yes
Evaluation Count:2
2-450
282 const char *name = ucnv_getAvailableName_44(i); -
283 -
284 UErrorCode error = U_ZERO_ERROR; -
285 const char *standardName = ucnv_getStandardName_44(name, "MIME", &error); -
286 if (U_FAILURE(error) || !standardName) {
partially evaluated: U_FAILURE(error)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:450
evaluated: !standardName
TRUEFALSE
yes
Evaluation Count:352
yes
Evaluation Count:98
0-450
287 error = U_ZERO_ERROR; -
288 standardName = ucnv_getStandardName_44(name, "IANA", &error); -
289 }
executed: }
Execution Count:352
352
290 if (U_FAILURE(error))
partially evaluated: U_FAILURE(error)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:450
0-450
291 continue;
never executed: continue;
0
292 -
293 error = U_ZERO_ERROR; -
294 int ac = ucnv_countAliases_44(standardName, &error); -
295 if (U_FAILURE(error))
evaluated: U_FAILURE(error)
TRUEFALSE
yes
Evaluation Count:238
yes
Evaluation Count:212
212-238
296 continue;
executed: continue;
Execution Count:238
238
297 for (int j = 0; j < ac; ++j) {
evaluated: j < ac
TRUEFALSE
yes
Evaluation Count:1542
yes
Evaluation Count:212
212-1542
298 error = U_ZERO_ERROR; -
299 const char *alias = ucnv_getAlias_44(standardName, j, &error); -
300 if (!U_SUCCESS(error))
partially evaluated: !U_SUCCESS(error)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:1542
0-1542
301 continue;
never executed: continue;
0
302 codecs += alias; -
303 }
executed: }
Execution Count:1542
1542
304 }
executed: }
Execution Count:212
212
305 -
306 -
307 codecs += "TSCII"; -
308 -
309 return codecs;
executed: return codecs;
Execution Count:2
2
310} -
311 -
312 -
313QList<int> QIcuCodec::availableMibs() -
314{ -
315 QList<int> mibs; -
316 for (int i = 0; i < mibToNameSize; ++i)
evaluated: i < mibToNameSize
TRUEFALSE
yes
Evaluation Count:220
yes
Evaluation Count:2
2-220
317 mibs += mibToName[i].mib;
executed: mibs += mibToName[i].mib;
Execution Count:220
220
318 -
319 -
320 mibs += 2107; -
321 -
322 return mibs;
executed: return mibs;
Execution Count:2
2
323} -
324 -
325QTextCodec *QIcuCodec::defaultCodecUnlocked() -
326{ -
327 QCoreGlobalData *globalData = QCoreGlobalData::instance(); -
328 if (!globalData)
partially evaluated: !globalData
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:127
0-127
329 return 0;
never executed: return 0;
0
330 QTextCodec *c = globalData->codecForLocale.loadAcquire(); -
331 if (c)
evaluated: c
TRUEFALSE
yes
Evaluation Count:10
yes
Evaluation Count:117
10-117
332 return c;
executed: return c;
Execution Count:10
10
333 -
334 -
335 -
336 -
337 const char *name = ucnv_getDefaultName_44(); -
338 -
339 c = codecForNameUnlocked(name); -
340 globalData->codecForLocale.storeRelease(c); -
341 return c;
executed: return c;
Execution Count:117
117
342} -
343 -
344 -
345QTextCodec *QIcuCodec::codecForNameUnlocked(const char *name) -
346{ -
347 -
348 if (!qstrcmp(name, "CP949"))
evaluated: !qstrcmp(name, "CP949")
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:11296
1-11296
349 name = "windows-949";
executed: name = "windows-949";
Execution Count:1
1
350 -
351 if (!qstrcmp(name, "windows-874-2000")
evaluated: !qstrcmp(name, "windows-874-2000")
TRUEFALSE
yes
Evaluation Count:7
yes
Evaluation Count:11290
7-11290
352 || !qstrcmp(name, "windows-874")
evaluated: !qstrcmp(name, "windows-874")
TRUEFALSE
yes
Evaluation Count:7
yes
Evaluation Count:11283
7-11283
353 || !qstrcmp(name, "MS874")
evaluated: !qstrcmp(name, "MS874")
TRUEFALSE
yes
Evaluation Count:7
yes
Evaluation Count:11276
7-11276
354 || !qstrcmp(name, "x-windows-874"))
partially evaluated: !qstrcmp(name, "x-windows-874")
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:11276
0-11276
355 name = "TIS-620";
executed: name = "TIS-620";
Execution Count:21
21
356 -
357 UErrorCode error = U_ZERO_ERROR; -
358 -
359 const char *standardName = ucnv_getStandardName_44(name, "MIME", &error); -
360 if (U_FAILURE(error) || !standardName) {
evaluated: U_FAILURE(error)
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:11296
evaluated: !standardName
TRUEFALSE
yes
Evaluation Count:3469
yes
Evaluation Count:7827
1-11296
361 error = U_ZERO_ERROR; -
362 standardName = ucnv_getStandardName_44(name, "IANA", &error); -
363 }
executed: }
Execution Count:3470
3470
364 bool qt_only = false; -
365 if (U_FAILURE(error) || !standardName) {
evaluated: U_FAILURE(error)
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:11296
evaluated: !standardName
TRUEFALSE
yes
Evaluation Count:74
yes
Evaluation Count:11222
1-11296
366 standardName = name; -
367 qt_only = true; -
368 } else {
executed: }
Execution Count:75
75
369 -
370 -
371 -
372 -
373 if (qstrcmp(standardName, "GB2312") == 0 || qstrcmp(standardName, "GB_2312-80") == 0)
evaluated: qstrcmp(standardName, "GB2312") == 0
TRUEFALSE
yes
Evaluation Count:32
yes
Evaluation Count:11190
evaluated: qstrcmp(standardName, "GB_2312-80") == 0
TRUEFALSE
yes
Evaluation Count:25
yes
Evaluation Count:11165
25-11190
374 standardName = "GBK";
executed: standardName = "GBK";
Execution Count:57
57
375 else if (qstrcmp(standardName, "KSC_5601") == 0 || qstrcmp(standardName, "EUC-KR") == 0 || qstrcmp(standardName, "cp1363") == 0)
partially evaluated: qstrcmp(standardName, "KSC_5601") == 0
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:11165
evaluated: qstrcmp(standardName, "EUC-KR") == 0
TRUEFALSE
yes
Evaluation Count:99
yes
Evaluation Count:11066
evaluated: qstrcmp(standardName, "cp1363") == 0
TRUEFALSE
yes
Evaluation Count:157
yes
Evaluation Count:10909
0-11165
376 standardName = "windows-949";
executed: standardName = "windows-949";
Execution Count:256
256
377 } -
378 -
379 QCoreGlobalData *globalData = QCoreGlobalData::instance(); -
380 QTextCodecCache *cache = &globalData->codecCache; -
381 -
382 QTextCodec *codec; -
383 if (cache) {
partially evaluated: cache
TRUEFALSE
yes
Evaluation Count:11297
no
Evaluation Count:0
0-11297
384 codec = cache->value(standardName); -
385 if (codec)
evaluated: codec
TRUEFALSE
yes
Evaluation Count:10998
yes
Evaluation Count:299
299-10998
386 return codec;
executed: return codec;
Execution Count:10998
10998
387 }
executed: }
Execution Count:299
299
388 -
389 for (int i = 0; i < globalData->allCodecs.size(); ++i) {
evaluated: i < globalData->allCodecs.size()
TRUEFALSE
yes
Evaluation Count:7533
yes
Evaluation Count:266
266-7533
390 QTextCodec *cursor = globalData->allCodecs.at(i); -
391 if (qTextCodecNameMatch(cursor->name(), standardName)) {
evaluated: qTextCodecNameMatch(cursor->name(), standardName)
TRUEFALSE
yes
Evaluation Count:31
yes
Evaluation Count:7502
31-7502
392 if (cache)
partially evaluated: cache
TRUEFALSE
yes
Evaluation Count:31
no
Evaluation Count:0
0-31
393 cache->insert(standardName, cursor);
executed: cache->insert(standardName, cursor);
Execution Count:31
31
394 return cursor;
executed: return cursor;
Execution Count:31
31
395 } -
396 QList<QByteArray> aliases = cursor->aliases(); -
397 for (int y = 0; y < aliases.size(); ++y)
evaluated: y < aliases.size()
TRUEFALSE
yes
Evaluation Count:39694
yes
Evaluation Count:7500
7500-39694
398 if (qTextCodecNameMatch(aliases.at(y), standardName)) {
evaluated: qTextCodecNameMatch(aliases.at(y), standardName)
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:39692
2-39692
399 if (cache)
partially evaluated: cache
TRUEFALSE
yes
Evaluation Count:2
no
Evaluation Count:0
0-2
400 cache->insert(standardName, cursor);
executed: cache->insert(standardName, cursor);
Execution Count:2
2
401 return cursor;
executed: return cursor;
Execution Count:2
2
402 } -
403 }
executed: }
Execution Count:7500
7500
404 -
405 QTextCodec *c = loadQtCodec(standardName); -
406 if (c)
evaluated: c
TRUEFALSE
yes
Evaluation Count:155
yes
Evaluation Count:111
111-155
407 return c;
executed: return c;
Execution Count:155
155
408 -
409 if (qt_only)
evaluated: qt_only
TRUEFALSE
yes
Evaluation Count:10
yes
Evaluation Count:101
10-101
410 return 0;
executed: return 0;
Execution Count:10
10
411 -
412 -
413 UConverter *conv = ucnv_open_44(standardName, &error); -
414 if (!conv) {
partially evaluated: !conv
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:101
0-101
415 QMessageLogger("codecs/qicucodec.cpp", 521, __PRETTY_FUNCTION__).debug() << "codecForName: ucnv_open failed" << standardName << u_errorName_44(error); -
416 return 0;
never executed: return 0;
0
417 } -
418 -
419 ucnv_close_44(conv); -
420 -
421 -
422 c = new QIcuCodec(standardName); -
423 if (cache)
partially evaluated: cache
TRUEFALSE
yes
Evaluation Count:101
no
Evaluation Count:0
0-101
424 cache->insert(standardName, c);
executed: cache->insert(standardName, c);
Execution Count:101
101
425 return c;
executed: return c;
Execution Count:101
101
426} -
427 -
428 -
429QTextCodec *QIcuCodec::codecForMibUnlocked(int mib) -
430{ -
431 for (int i = 0; i < mibToNameSize; ++i) {
partially evaluated: i < mibToNameSize
TRUEFALSE
yes
Evaluation Count:903
no
Evaluation Count:0
0-903
432 if (mibToName[i].mib == mib)
evaluated: mibToName[i].mib == mib
TRUEFALSE
yes
Evaluation Count:27
yes
Evaluation Count:876
27-876
433 return codecForNameUnlocked(mibToNameTable + mibToName[i].index);
executed: return codecForNameUnlocked(mibToNameTable + mibToName[i].index);
Execution Count:27
27
434 }
executed: }
Execution Count:876
876
435 -
436 if (mib == 2107)
never evaluated: mib == 2107
0
437 return codecForNameUnlocked("TSCII");
never executed: return codecForNameUnlocked("TSCII");
0
438 -
439 return 0;
never executed: return 0;
0
440} -
441 -
442 -
443QIcuCodec::QIcuCodec(const char *name) -
444 : m_name(name) -
445{ -
446}
executed: }
Execution Count:101
101
447 -
448QIcuCodec::~QIcuCodec() -
449{ -
450} -
451 -
452UConverter *QIcuCodec::getConverter(QTextCodec::ConverterState *state) const -
453{ -
454 UConverter *conv = 0; -
455 if (state) {
evaluated: state
TRUEFALSE
yes
Evaluation Count:88922
yes
Evaluation Count:6855
6855-88922
456 if (!state->d) {
evaluated: !state->d
TRUEFALSE
yes
Evaluation Count:85171
yes
Evaluation Count:3751
3751-85171
457 -
458 state->flags |= QTextCodec::FreeFunction; -
459 QTextCodecUnalignedPointer::encode(state->state_data, qIcuCodecStateFree); -
460 UErrorCode error = U_ZERO_ERROR; -
461 state->d = ucnv_open_44(m_name, &error); -
462 ucnv_setSubstChars_44(static_cast<UConverter *>(state->d), -
463 state->flags & QTextCodec::ConvertInvalidToNull ? "\0" : "?", 1, &error); -
464 if (U_FAILURE(error))
partially evaluated: U_FAILURE(error)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:85171
0-85171
465 QMessageLogger("codecs/qicucodec.cpp", 571, __PRETTY_FUNCTION__).debug() << "getConverter(state) ucnv_open failed" << m_name << u_errorName_44(error);
never executed: QMessageLogger("codecs/qicucodec.cpp", 571, __PRETTY_FUNCTION__).debug() << "getConverter(state) ucnv_open failed" << m_name << u_errorName_44(error);
0
466 }
executed: }
Execution Count:85171
85171
467 conv = static_cast<UConverter *>(state->d); -
468 }
executed: }
Execution Count:88922
88922
469 if (!conv) {
evaluated: !conv
TRUEFALSE
yes
Evaluation Count:6856
yes
Evaluation Count:88922
6856-88922
470 -
471 UErrorCode error = U_ZERO_ERROR; -
472 conv = ucnv_open_44(m_name, &error); -
473 ucnv_setSubstChars_44(conv, "?", 1, &error); -
474 if (U_FAILURE(error))
partially evaluated: U_FAILURE(error)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:6854
0-6854
475 QMessageLogger("codecs/qicucodec.cpp", 581, __PRETTY_FUNCTION__).debug() << "getConverter(no state) ucnv_open failed" << m_name << u_errorName_44(error);
never executed: QMessageLogger("codecs/qicucodec.cpp", 581, __PRETTY_FUNCTION__).debug() << "getConverter(no state) ucnv_open failed" << m_name << u_errorName_44(error);
0
476 }
executed: }
Execution Count:6855
6855
477 return conv;
executed: return conv;
Execution Count:95777
95777
478} -
479 -
480QString QIcuCodec::convertToUnicode(const char *chars, int length, QTextCodec::ConverterState *state) const -
481{ -
482 UConverter *conv = getConverter(state); -
483 -
484 QString string(length + 2, Qt::Uninitialized); -
485 -
486 const char *end = chars + length; -
487 int convertedChars = 0; -
488 while (1) {
partially evaluated: 1
TRUEFALSE
yes
Evaluation Count:4867
no
Evaluation Count:0
0-4867
489 UChar *uc = (UChar *)string.data(); -
490 UChar *ucEnd = uc + string.length(); -
491 uc += convertedChars; -
492 UErrorCode error = U_ZERO_ERROR; -
493 ucnv_toUnicode_44(conv, -
494 &uc, ucEnd, -
495 &chars, end, -
496 0, false, &error); -
497 if (!U_SUCCESS(error) && error != U_BUFFER_OVERFLOW_ERROR) {
partially evaluated: !U_SUCCESS(error)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:4867
never evaluated: error != U_BUFFER_OVERFLOW_ERROR
0-4867
498 QMessageLogger("codecs/qicucodec.cpp", 604, __PRETTY_FUNCTION__).debug() << "convertToUnicode failed:" << u_errorName_44(error); -
499 break;
never executed: break;
0
500 } -
501 -
502 convertedChars = uc - (UChar *)string.data(); -
503 if (chars >= end)
partially evaluated: chars >= end
TRUEFALSE
yes
Evaluation Count:4867
no
Evaluation Count:0
0-4867
504 break;
executed: break;
Execution Count:4867
4867
505 string.resize(string.length()*2); -
506 }
never executed: }
0
507 string.resize(convertedChars); -
508 -
509 if (!state)
evaluated: !state
TRUEFALSE
yes
Evaluation Count:3992
yes
Evaluation Count:875
875-3992
510 ucnv_close_44(conv);
executed: ucnv_close_44(conv);
Execution Count:3992
3992
511 return string;
executed: return string;
Execution Count:4867
4867
512} -
513 -
514 -
515QByteArray QIcuCodec::convertFromUnicode(const QChar *unicode, int length, QTextCodec::ConverterState *state) const -
516{ -
517 UConverter *conv = getConverter(state); -
518 -
519 int requiredLength = (((int32_t)(length)+10)*(int32_t)(ucnv_getMaxCharSize_44(conv))); -
520 QByteArray string(requiredLength, Qt::Uninitialized); -
521 -
522 const UChar *uc = (const UChar *)unicode; -
523 const UChar *end = uc + length; -
524 int convertedChars = 0; -
525 while (1) {
partially evaluated: 1
TRUEFALSE
yes
Evaluation Count:90909
no
Evaluation Count:0
0-90909
526 char *ch = (char *)string.data(); -
527 char *chEnd = ch + string.length(); -
528 ch += convertedChars; -
529 UErrorCode error = U_ZERO_ERROR; -
530 ucnv_fromUnicode_44(conv, -
531 &ch, chEnd, -
532 &uc, end, -
533 0, false, &error); -
534 if (!U_SUCCESS(error))
partially evaluated: !U_SUCCESS(error)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:90911
0-90911
535 QMessageLogger("codecs/qicucodec.cpp", 641, __PRETTY_FUNCTION__).debug() << "convertFromUnicode failed:" << u_errorName_44(error);
never executed: QMessageLogger("codecs/qicucodec.cpp", 641, __PRETTY_FUNCTION__).debug() << "convertFromUnicode failed:" << u_errorName_44(error);
0
536 convertedChars = ch - string.data(); -
537 if (uc >= end)
partially evaluated: uc >= end
TRUEFALSE
yes
Evaluation Count:90911
no
Evaluation Count:0
0-90911
538 break;
executed: break;
Execution Count:90911
90911
539 string.resize(string.length()*2); -
540 }
never executed: }
0
541 string.resize(convertedChars); -
542 -
543 if (!state)
evaluated: !state
TRUEFALSE
yes
Evaluation Count:2861
yes
Evaluation Count:88047
2861-88047
544 ucnv_close_44(conv);
executed: ucnv_close_44(conv);
Execution Count:2862
2862
545 -
546 return string;
executed: return string;
Execution Count:90911
90911
547} -
548 -
549 -
550QByteArray QIcuCodec::name() const -
551{ -
552 return m_name;
executed: return m_name;
Execution Count:7049
7049
553} -
554 -
555 -
556QList<QByteArray> QIcuCodec::aliases() const -
557{ -
558 UErrorCode error = U_ZERO_ERROR; -
559 -
560 int n = ucnv_countAliases_44(m_name, &error); -
561 -
562 QList<QByteArray> aliases; -
563 for (int i = 0; i < n; ++i) {
evaluated: i < n
TRUEFALSE
yes
Evaluation Count:51121
yes
Evaluation Count:7033
7033-51121
564 const char *a = ucnv_getAlias_44(m_name, i, &error); -
565 -
566 if (!a || !qstrcmp(a, m_name))
partially evaluated: !a
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:51121
evaluated: !qstrcmp(a, m_name)
TRUEFALSE
yes
Evaluation Count:7033
yes
Evaluation Count:44088
0-51121
567 continue;
executed: continue;
Execution Count:7033
7033
568 aliases += a; -
569 }
executed: }
Execution Count:44088
44088
570 -
571 return aliases;
executed: return aliases;
Execution Count:7033
7033
572} -
573 -
574 -
575int QIcuCodec::mibEnum() const -
576{ -
577 for (int i = 0; i < mibToNameSize; ++i) {
evaluated: i < mibToNameSize
TRUEFALSE
yes
Evaluation Count:437598
yes
Evaluation Count:336
336-437598
578 if (qTextCodecNameMatch(m_name, (mibToNameTable + mibToName[i].index)))
evaluated: qTextCodecNameMatch(m_name, (mibToNameTable + mibToName[i].index))
TRUEFALSE
yes
Evaluation Count:5918
yes
Evaluation Count:431680
5918-431680
579 return mibToName[i].mib;
executed: return mibToName[i].mib;
Execution Count:5918
5918
580 }
executed: }
Execution Count:431680
431680
581 -
582 return 0;
executed: return 0;
Execution Count:336
336
583} -
584 -
585 -
586 -
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial