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:485712
485712
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:116
yes
Evaluation Count:150
116-150
251 return new QUtf8Codec;
executed: return new QUtf8Codec;
Execution Count:116
116
252 if (!strcmp(name, "UTF-16"))
evaluated: !strcmp(name, "UTF-16")
TRUEFALSE
yes
Evaluation Count:7
yes
Evaluation Count:143
7-143
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:138
5-138
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:134
4-134
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:129
5-129
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:127
2-127
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:125
2-125
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:122
3-122
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:121
1-121
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:112
9-112
270 return QIsciiCodec::create(name);
executed: return QIsciiCodec::create(name);
Execution Count:9
9
271 -
272 -
273 return 0;
executed: return 0;
Execution Count:112
112
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:126
0-126
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:116
10-116
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:116
116
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:11247
1-11247
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:11241
7-11241
352 name = "TIS-620";
executed: name = "TIS-620";
Execution Count:7
7
353 -
354 UErrorCode error = U_ZERO_ERROR; -
355 -
356 const char *standardName = ucnv_getStandardName_44(name, "MIME", &error); -
357 if (U_FAILURE(error) || !standardName) {
evaluated: U_FAILURE(error)
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:11247
evaluated: !standardName
TRUEFALSE
yes
Evaluation Count:3469
yes
Evaluation Count:7778
1-11247
358 error = U_ZERO_ERROR; -
359 standardName = ucnv_getStandardName_44(name, "IANA", &error); -
360 }
executed: }
Execution Count:3470
3470
361 bool qt_only = false; -
362 if (U_FAILURE(error) || !standardName) {
evaluated: U_FAILURE(error)
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:11247
evaluated: !standardName
TRUEFALSE
yes
Evaluation Count:88
yes
Evaluation Count:11159
1-11247
363 standardName = name; -
364 qt_only = true; -
365 } else {
executed: }
Execution Count:89
89
366 -
367 -
368 -
369 -
370 if (qstrcmp(standardName, "GB2312") == 0 || qstrcmp(standardName, "GB_2312-80") == 0)
evaluated: qstrcmp(standardName, "GB2312") == 0
TRUEFALSE
yes
Evaluation Count:32
yes
Evaluation Count:11127
evaluated: qstrcmp(standardName, "GB_2312-80") == 0
TRUEFALSE
yes
Evaluation Count:25
yes
Evaluation Count:11102
25-11127
371 standardName = "GBK";
executed: standardName = "GBK";
Execution Count:57
57
372 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:11102
evaluated: qstrcmp(standardName, "EUC-KR") == 0
TRUEFALSE
yes
Evaluation Count:99
yes
Evaluation Count:11003
evaluated: qstrcmp(standardName, "cp1363") == 0
TRUEFALSE
yes
Evaluation Count:157
yes
Evaluation Count:10846
0-11102
373 standardName = "windows-949";
executed: standardName = "windows-949";
Execution Count:256
256
374 } -
375 -
376 QCoreGlobalData *globalData = QCoreGlobalData::instance(); -
377 QTextCodecCache *cache = &globalData->codecCache; -
378 -
379 QTextCodec *codec; -
380 if (cache) {
partially evaluated: cache
TRUEFALSE
yes
Evaluation Count:11248
no
Evaluation Count:0
0-11248
381 codec = cache->value(standardName); -
382 if (codec)
evaluated: codec
TRUEFALSE
yes
Evaluation Count:10950
yes
Evaluation Count:298
298-10950
383 return codec;
executed: return codec;
Execution Count:10950
10950
384 }
executed: }
Execution Count:298
298
385 -
386 for (int i = 0; i < globalData->allCodecs.size(); ++i) {
evaluated: i < globalData->allCodecs.size()
TRUEFALSE
yes
Evaluation Count:7642
yes
Evaluation Count:266
266-7642
387 QTextCodec *cursor = globalData->allCodecs.at(i); -
388 if (qTextCodecNameMatch(cursor->name(), standardName)) {
evaluated: qTextCodecNameMatch(cursor->name(), standardName)
TRUEFALSE
yes
Evaluation Count:28
yes
Evaluation Count:7614
28-7614
389 if (cache)
partially evaluated: cache
TRUEFALSE
yes
Evaluation Count:28
no
Evaluation Count:0
0-28
390 cache->insert(standardName, cursor);
executed: cache->insert(standardName, cursor);
Execution Count:28
28
391 return cursor;
executed: return cursor;
Execution Count:28
28
392 } -
393 QList<QByteArray> aliases = cursor->aliases(); -
394 for (int y = 0; y < aliases.size(); ++y)
evaluated: y < aliases.size()
TRUEFALSE
yes
Evaluation Count:40250
yes
Evaluation Count:7610
7610-40250
395 if (qTextCodecNameMatch(aliases.at(y), standardName)) {
evaluated: qTextCodecNameMatch(aliases.at(y), standardName)
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:40246
4-40246
396 if (cache)
partially evaluated: cache
TRUEFALSE
yes
Evaluation Count:4
no
Evaluation Count:0
0-4
397 cache->insert(standardName, cursor);
executed: cache->insert(standardName, cursor);
Execution Count:4
4
398 return cursor;
executed: return cursor;
Execution Count:4
4
399 } -
400 }
executed: }
Execution Count:7610
7610
401 -
402 QTextCodec *c = loadQtCodec(standardName); -
403 if (c)
evaluated: c
TRUEFALSE
yes
Evaluation Count:154
yes
Evaluation Count:112
112-154
404 return c;
executed: return c;
Execution Count:154
154
405 -
406 if (qt_only)
evaluated: qt_only
TRUEFALSE
yes
Evaluation Count:11
yes
Evaluation Count:101
11-101
407 return 0;
executed: return 0;
Execution Count:11
11
408 -
409 -
410 UConverter *conv = ucnv_open_44(standardName, &error); -
411 if (!conv) {
partially evaluated: !conv
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:101
0-101
412 QMessageLogger("codecs/qicucodec.cpp", 518, __PRETTY_FUNCTION__).debug() << "codecForName: ucnv_open failed" << standardName << u_errorName_44(error); -
413 return 0;
never executed: return 0;
0
414 } -
415 -
416 ucnv_close_44(conv); -
417 -
418 -
419 c = new QIcuCodec(standardName); -
420 if (cache)
partially evaluated: cache
TRUEFALSE
yes
Evaluation Count:101
no
Evaluation Count:0
0-101
421 cache->insert(standardName, c);
executed: cache->insert(standardName, c);
Execution Count:101
101
422 return c;
executed: return c;
Execution Count:101
101
423} -
424 -
425 -
426QTextCodec *QIcuCodec::codecForMibUnlocked(int mib) -
427{ -
428 for (int i = 0; i < mibToNameSize; ++i) {
partially evaluated: i < mibToNameSize
TRUEFALSE
yes
Evaluation Count:903
no
Evaluation Count:0
0-903
429 if (mibToName[i].mib == mib)
evaluated: mibToName[i].mib == mib
TRUEFALSE
yes
Evaluation Count:27
yes
Evaluation Count:876
27-876
430 return codecForNameUnlocked(mibToNameTable + mibToName[i].index);
executed: return codecForNameUnlocked(mibToNameTable + mibToName[i].index);
Execution Count:27
27
431 }
executed: }
Execution Count:876
876
432 -
433 if (mib == 2107)
never evaluated: mib == 2107
0
434 return codecForNameUnlocked("TSCII");
never executed: return codecForNameUnlocked("TSCII");
0
435 -
436 return 0;
never executed: return 0;
0
437} -
438 -
439 -
440QIcuCodec::QIcuCodec(const char *name) -
441 : m_name(name) -
442{ -
443}
executed: }
Execution Count:101
101
444 -
445QIcuCodec::~QIcuCodec() -
446{ -
447} -
448 -
449UConverter *QIcuCodec::getConverter(QTextCodec::ConverterState *state) const -
450{ -
451 UConverter *conv = 0; -
452 if (state) {
evaluated: state
TRUEFALSE
yes
Evaluation Count:88922
yes
Evaluation Count:6850
6850-88922
453 if (!state->d) {
evaluated: !state->d
TRUEFALSE
yes
Evaluation Count:85171
yes
Evaluation Count:3751
3751-85171
454 -
455 state->flags |= QTextCodec::FreeFunction; -
456 QTextCodecUnalignedPointer::encode(state->state_data, qIcuCodecStateFree); -
457 UErrorCode error = U_ZERO_ERROR; -
458 state->d = ucnv_open_44(m_name, &error); -
459 ucnv_setSubstChars_44(static_cast<UConverter *>(state->d), -
460 state->flags & QTextCodec::ConvertInvalidToNull ? "\0" : "?", 1, &error); -
461 if (U_FAILURE(error))
partially evaluated: U_FAILURE(error)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:85171
0-85171
462 QMessageLogger("codecs/qicucodec.cpp", 568, __PRETTY_FUNCTION__).debug() << "getConverter(state) ucnv_open failed" << m_name << u_errorName_44(error);
never executed: QMessageLogger("codecs/qicucodec.cpp", 568, __PRETTY_FUNCTION__).debug() << "getConverter(state) ucnv_open failed" << m_name << u_errorName_44(error);
0
463 }
executed: }
Execution Count:85171
85171
464 conv = static_cast<UConverter *>(state->d); -
465 }
executed: }
Execution Count:88922
88922
466 if (!conv) {
evaluated: !conv
TRUEFALSE
yes
Evaluation Count:6850
yes
Evaluation Count:88922
6850-88922
467 -
468 UErrorCode error = U_ZERO_ERROR; -
469 conv = ucnv_open_44(m_name, &error); -
470 ucnv_setSubstChars_44(conv, "?", 1, &error); -
471 if (U_FAILURE(error))
partially evaluated: U_FAILURE(error)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:6850
0-6850
472 QMessageLogger("codecs/qicucodec.cpp", 578, __PRETTY_FUNCTION__).debug() << "getConverter(no state) ucnv_open failed" << m_name << u_errorName_44(error);
never executed: QMessageLogger("codecs/qicucodec.cpp", 578, __PRETTY_FUNCTION__).debug() << "getConverter(no state) ucnv_open failed" << m_name << u_errorName_44(error);
0
473 }
executed: }
Execution Count:6848
6848
474 return conv;
executed: return conv;
Execution Count:95769
95769
475} -
476 -
477QString QIcuCodec::convertToUnicode(const char *chars, int length, QTextCodec::ConverterState *state) const -
478{ -
479 UConverter *conv = getConverter(state); -
480 -
481 QString string(length + 2, Qt::Uninitialized); -
482 -
483 const char *end = chars + length; -
484 int convertedChars = 0; -
485 while (1) {
partially evaluated: 1
TRUEFALSE
yes
Evaluation Count:4865
no
Evaluation Count:0
0-4865
486 UChar *uc = (UChar *)string.data(); -
487 UChar *ucEnd = uc + string.length(); -
488 uc += convertedChars; -
489 UErrorCode error = U_ZERO_ERROR; -
490 ucnv_toUnicode_44(conv, -
491 &uc, ucEnd, -
492 &chars, end, -
493 0, false, &error); -
494 if (!U_SUCCESS(error) && error != U_BUFFER_OVERFLOW_ERROR) {
partially evaluated: !U_SUCCESS(error)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:4864
never evaluated: error != U_BUFFER_OVERFLOW_ERROR
0-4864
495 QMessageLogger("codecs/qicucodec.cpp", 601, __PRETTY_FUNCTION__).debug() << "convertToUnicode failed:" << u_errorName_44(error); -
496 break;
never executed: break;
0
497 } -
498 -
499 convertedChars = uc - (UChar *)string.data(); -
500 if (chars >= end)
partially evaluated: chars >= end
TRUEFALSE
yes
Evaluation Count:4864
no
Evaluation Count:0
0-4864
501 break;
executed: break;
Execution Count:4864
4864
502 string.resize(string.length()*2); -
503 }
never executed: }
0
504 string.resize(convertedChars); -
505 -
506 if (!state)
evaluated: !state
TRUEFALSE
yes
Evaluation Count:3988
yes
Evaluation Count:875
875-3988
507 ucnv_close_44(conv);
executed: ucnv_close_44(conv);
Execution Count:3988
3988
508 return string;
executed: return string;
Execution Count:4866
4866
509} -
510 -
511 -
512QByteArray QIcuCodec::convertFromUnicode(const QChar *unicode, int length, QTextCodec::ConverterState *state) const -
513{ -
514 UConverter *conv = getConverter(state); -
515 -
516 int requiredLength = (((int32_t)(length)+10)*(int32_t)(ucnv_getMaxCharSize_44(conv))); -
517 QByteArray string(requiredLength, Qt::Uninitialized); -
518 -
519 const UChar *uc = (const UChar *)unicode; -
520 const UChar *end = uc + length; -
521 int convertedChars = 0; -
522 while (1) {
partially evaluated: 1
TRUEFALSE
yes
Evaluation Count:90908
no
Evaluation Count:0
0-90908
523 char *ch = (char *)string.data(); -
524 char *chEnd = ch + string.length(); -
525 ch += convertedChars; -
526 UErrorCode error = U_ZERO_ERROR; -
527 ucnv_fromUnicode_44(conv, -
528 &ch, chEnd, -
529 &uc, end, -
530 0, false, &error); -
531 if (!U_SUCCESS(error))
partially evaluated: !U_SUCCESS(error)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:90909
0-90909
532 QMessageLogger("codecs/qicucodec.cpp", 638, __PRETTY_FUNCTION__).debug() << "convertFromUnicode failed:" << u_errorName_44(error);
never executed: QMessageLogger("codecs/qicucodec.cpp", 638, __PRETTY_FUNCTION__).debug() << "convertFromUnicode failed:" << u_errorName_44(error);
0
533 convertedChars = ch - string.data(); -
534 if (uc >= end)
partially evaluated: uc >= end
TRUEFALSE
yes
Evaluation Count:90908
no
Evaluation Count:0
0-90908
535 break;
executed: break;
Execution Count:90908
90908
536 string.resize(string.length()*2); -
537 }
never executed: }
0
538 string.resize(convertedChars); -
539 -
540 if (!state)
evaluated: !state
TRUEFALSE
yes
Evaluation Count:2861
yes
Evaluation Count:88047
2861-88047
541 ucnv_close_44(conv);
executed: ucnv_close_44(conv);
Execution Count:2861
2861
542 -
543 return string;
executed: return string;
Execution Count:90909
90909
544} -
545 -
546 -
547QByteArray QIcuCodec::name() const -
548{ -
549 return m_name;
executed: return m_name;
Execution Count:7145
7145
550} -
551 -
552 -
553QList<QByteArray> QIcuCodec::aliases() const -
554{ -
555 UErrorCode error = U_ZERO_ERROR; -
556 -
557 int n = ucnv_countAliases_44(m_name, &error); -
558 -
559 QList<QByteArray> aliases; -
560 for (int i = 0; i < n; ++i) {
evaluated: i < n
TRUEFALSE
yes
Evaluation Count:51774
yes
Evaluation Count:7129
7129-51774
561 const char *a = ucnv_getAlias_44(m_name, i, &error); -
562 -
563 if (!a || !qstrcmp(a, m_name))
partially evaluated: !a
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:51774
evaluated: !qstrcmp(a, m_name)
TRUEFALSE
yes
Evaluation Count:7129
yes
Evaluation Count:44645
0-51774
564 continue;
executed: continue;
Execution Count:7129
7129
565 aliases += a; -
566 }
executed: }
Execution Count:44645
44645
567 -
568 return aliases;
executed: return aliases;
Execution Count:7129
7129
569} -
570 -
571 -
572int QIcuCodec::mibEnum() const -
573{ -
574 for (int i = 0; i < mibToNameSize; ++i) {
evaluated: i < mibToNameSize
TRUEFALSE
yes
Evaluation Count:437775
yes
Evaluation Count:335
335-437775
575 if (qTextCodecNameMatch(m_name, (mibToNameTable + mibToName[i].index)))
evaluated: qTextCodecNameMatch(m_name, (mibToNameTable + mibToName[i].index))
TRUEFALSE
yes
Evaluation Count:5917
yes
Evaluation Count:431858
5917-431858
576 return mibToName[i].mib;
executed: return mibToName[i].mib;
Execution Count:5917
5917
577 }
executed: }
Execution Count:431858
431858
578 -
579 return 0;
executed: return 0;
Execution Count:335
335
580} -
581 -
582 -
583 -
Switch to Source codePreprocessed file

Generated by Squish Coco Non-Commercial