codecs/qtsciicodec.cpp

Source codeSwitch to Preprocessed file
LineSource CodeCoverage
1/**************************************************************************** -
2** -
3** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -
4** Contact: http://www.qt-project.org/legal -
5** -
6** This file is part of the QtCore module of the Qt Toolkit. -
7** -
8** $QT_BEGIN_LICENSE:LGPL$ -
9** Commercial License Usage -
10** Licensees holding valid commercial Qt licenses may use this file in -
11** accordance with the commercial license agreement provided with the -
12** Software or, alternatively, in accordance with the terms contained in -
13** a written agreement between you and Digia. For licensing terms and -
14** conditions see http://qt.digia.com/licensing. For further information -
15** use the contact form at http://qt.digia.com/contact-us. -
16** -
17** GNU Lesser General Public License Usage -
18** Alternatively, this file may be used under the terms of the GNU Lesser -
19** General Public License version 2.1 as published by the Free Software -
20** Foundation and appearing in the file LICENSE.LGPL included in the -
21** packaging of this file. Please review the following information to -
22** ensure the GNU Lesser General Public License version 2.1 requirements -
23** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -
24** -
25** In addition, as a special exception, Digia gives you certain additional -
26** rights. These rights are described in the Digia Qt LGPL Exception -
27** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -
28** -
29** GNU General Public License Usage -
30** Alternatively, this file may be used under the terms of the GNU -
31** General Public License version 3.0 as published by the Free Software -
32** Foundation and appearing in the file LICENSE.GPL included in the -
33** packaging of this file. Please review the following information to -
34** ensure the GNU General Public License version 3.0 requirements will be -
35** met: http://www.gnu.org/copyleft/gpl.html. -
36** -
37** -
38** $QT_END_LICENSE$ -
39** -
40****************************************************************************/ -
41 -
42// Most of the code here was originally written by Hans Petter Bieker, -
43// and is included in Qt with the author's permission, and the grateful -
44// thanks of the Qt team. -
45 -
46#include "qtsciicodec_p.h" -
47#include "qlist.h" -
48 -
49#ifndef QT_NO_CODECS -
50 -
51QT_BEGIN_NAMESPACE -
52 -
53static unsigned char qt_UnicodeToTSCII(ushort u1, ushort u2, ushort u3); -
54static unsigned int qt_TSCIIToUnicode(unsigned int code, uint *s); -
55 -
56#define IsTSCIIChar(c) (((c) >= 0x80) && ((c) <= 0xfd)) -
57 -
58/*! \class QTsciiCodec -
59 \inmodule QtCore -
60 \reentrant -
61 \internal -
62*/ -
63 -
64/*! -
65 Destroys the text codec object. -
66*/ -
67QTsciiCodec::~QTsciiCodec() -
68{ -
69} -
70 -
71/*! -
72 Converts the first \a len characters in \a uc from Unicode to this -
73 encoding, and returns the result in a byte array. The \a state contains -
74 some conversion flags, and is used by the codec to maintain state -
75 information. -
76*/ -
77QByteArray QTsciiCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const -
78{ -
79 char replacement = '?';
executed (the execution status of this line is deduced): char replacement = '?';
-
80 if (state) {
partially evaluated: state
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:3
0-3
81 if (state->flags & ConvertInvalidToNull)
never evaluated: state->flags & ConvertInvalidToNull
0
82 replacement = 0;
never executed: replacement = 0;
0
83 }
never executed: }
0
84 int invalid = 0;
executed (the execution status of this line is deduced): int invalid = 0;
-
85 -
86 QByteArray rstr(len, Qt::Uninitialized);
executed (the execution status of this line is deduced): QByteArray rstr(len, Qt::Uninitialized);
-
87 uchar* cursor = (uchar*)rstr.data();
executed (the execution status of this line is deduced): uchar* cursor = (uchar*)rstr.data();
-
88 for (int i = 0; i < len; i++) {
evaluated: i < len
TRUEFALSE
yes
Evaluation Count:12
yes
Evaluation Count:3
3-12
89 QChar ch = uc[i];
never executed (the execution status of this line is deduced): QChar ch = uc[i];
-
90 uchar j;
never executed (the execution status of this line is deduced): uchar j;
-
91 if (ch.row() == 0x00 && ch.cell() < 0x80) {
partially evaluated: ch.row() == 0x00
TRUEFALSE
yes
Evaluation Count:12
no
Evaluation Count:0
partially evaluated: ch.cell() < 0x80
TRUEFALSE
yes
Evaluation Count:12
no
Evaluation Count:0
0-12
92 // ASCII -
93 j = ch.cell();
executed (the execution status of this line is deduced): j = ch.cell();
-
94 } else if ((j = qt_UnicodeToTSCII(uc[i].unicode(),
executed: }
Execution Count:12
never evaluated: (j = qt_UnicodeToTSCII(uc[i].unicode(), uc[i + 1].unicode(), uc[i + 2].unicode()))
0-12
95 uc[i + 1].unicode(),
never evaluated: (j = qt_UnicodeToTSCII(uc[i].unicode(), uc[i + 1].unicode(), uc[i + 2].unicode()))
0
96 uc[i + 2].unicode()))) {
never evaluated: (j = qt_UnicodeToTSCII(uc[i].unicode(), uc[i + 1].unicode(), uc[i + 2].unicode()))
0
97 // We have to check the combined chars first! -
98 i += 2;
never executed (the execution status of this line is deduced): i += 2;
-
99 } else if ((j = qt_UnicodeToTSCII(uc[i].unicode(),
never executed: }
never evaluated: (j = qt_UnicodeToTSCII(uc[i].unicode(), uc[i + 1].unicode(), 0))
0
100 uc[i + 1].unicode(), 0))) {
never evaluated: (j = qt_UnicodeToTSCII(uc[i].unicode(), uc[i + 1].unicode(), 0))
0
101 i++;
never executed (the execution status of this line is deduced): i++;
-
102 } else if ((j = qt_UnicodeToTSCII(uc[i].unicode(), 0, 0))) {
never executed: }
never evaluated: (j = qt_UnicodeToTSCII(uc[i].unicode(), 0, 0))
0
103 } else {
never executed: }
0
104 // Error -
105 j = replacement;
never executed (the execution status of this line is deduced): j = replacement;
-
106 ++invalid;
never executed (the execution status of this line is deduced): ++invalid;
-
107 }
never executed: }
0
108 *cursor++ = j;
executed (the execution status of this line is deduced): *cursor++ = j;
-
109 }
executed: }
Execution Count:12
12
110 rstr.resize(cursor - (const uchar*)rstr.constData());
executed (the execution status of this line is deduced): rstr.resize(cursor - (const uchar*)rstr.constData());
-
111 -
112 if (state) {
partially evaluated: state
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:3
0-3
113 state->invalidChars += invalid;
never executed (the execution status of this line is deduced): state->invalidChars += invalid;
-
114 }
never executed: }
0
115 return rstr;
executed: return rstr;
Execution Count:3
3
116} -
117 -
118/*! -
119 Converts the first \a len characters in \a chars from this encoding -
120 to Unicode, and returns the result in a QString. The \a state contains -
121 some conversion flags, and is used by the codec to maintain state -
122 information. -
123*/ -
124QString QTsciiCodec::convertToUnicode(const char* chars, int len, ConverterState *state) const -
125{ -
126 QChar replacement = QChar::ReplacementCharacter;
executed (the execution status of this line is deduced): QChar replacement = QChar::ReplacementCharacter;
-
127 if (state) {
partially evaluated: state
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
0-2
128 if (state->flags & ConvertInvalidToNull)
never evaluated: state->flags & ConvertInvalidToNull
0
129 replacement = QChar::Null;
never executed: replacement = QChar::Null;
0
130 }
never executed: }
0
131 int invalid = 0;
executed (the execution status of this line is deduced): int invalid = 0;
-
132 -
133 QString result;
executed (the execution status of this line is deduced): QString result;
-
134 for (int i = 0; i < len; i++) {
evaluated: i < len
TRUEFALSE
yes
Evaluation Count:9
yes
Evaluation Count:2
2-9
135 uchar ch = chars[i];
never executed (the execution status of this line is deduced): uchar ch = chars[i];
-
136 if (ch < 0x80) {
partially evaluated: ch < 0x80
TRUEFALSE
yes
Evaluation Count:9
no
Evaluation Count:0
0-9
137 // ASCII -
138 result += QLatin1Char(ch);
executed (the execution status of this line is deduced): result += QLatin1Char(ch);
-
139 } else if (IsTSCIIChar(ch)) {
executed: }
Execution Count:9
never evaluated: ((ch) >= 0x80)
never evaluated: ((ch) <= 0xfd)
0-9
140 // TSCII -
141 uint s[3];
never executed (the execution status of this line is deduced): uint s[3];
-
142 uint u = qt_TSCIIToUnicode(ch, s);
never executed (the execution status of this line is deduced): uint u = qt_TSCIIToUnicode(ch, s);
-
143 uint *p = s;
never executed (the execution status of this line is deduced): uint *p = s;
-
144 while (u--) {
never evaluated: u--
0
145 uint c = *p++;
never executed (the execution status of this line is deduced): uint c = *p++;
-
146 if (c)
never evaluated: c
0
147 result += QChar(c);
never executed: result += QChar(c);
0
148 else { -
149 result += replacement;
never executed (the execution status of this line is deduced): result += replacement;
-
150 ++invalid;
never executed (the execution status of this line is deduced): ++invalid;
-
151 }
never executed: }
0
152 } -
153 } else {
never executed: }
0
154 // Invalid -
155 result += replacement;
never executed (the execution status of this line is deduced): result += replacement;
-
156 ++invalid;
never executed (the execution status of this line is deduced): ++invalid;
-
157 }
never executed: }
0
158 } -
159 -
160 if (state) {
partially evaluated: state
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
0-2
161 state->invalidChars += invalid;
never executed (the execution status of this line is deduced): state->invalidChars += invalid;
-
162 }
never executed: }
0
163 return result;
executed: return result;
Execution Count:2
2
164} -
165 -
166/*! -
167 Returns the official name for the encoding that is handled by the codec. -
168 -
169 \sa QTextCodec::name() -
170*/ -
171QByteArray QTsciiCodec::name() const -
172{ -
173 return "TSCII";
executed: return "TSCII";
Execution Count:21
21
174} -
175 -
176/*! -
177 Returns the MIB enum for the encoding. -
178 -
179 \sa QTextCodec::mibEnum() -
180*/ -
181int QTsciiCodec::mibEnum() const -
182{ -
183 return 2107;
executed: return 2107;
Execution Count:113
113
184} -
185 -
186static const int UnToTsLast = 124; // 125 items -- so the last will be 124 -
187static const ushort UnToTs [][4] = { -
188 // *Sorted* list of TSCII maping for unicode chars -
189 //FIRST SECOND THIRD TSCII -
190 {0x00A0, 0x0000, 0x0000, 0xA0}, -
191 {0x00A9, 0x0000, 0x0000, 0xA9}, -
192 {0x0B83, 0x0000, 0x0000, 0xB7}, -
193 {0x0B85, 0x0000, 0x0000, 0xAB}, -
194 {0x0B86, 0x0000, 0x0000, 0xAC}, -
195 {0x0B87, 0x0000, 0x0000, 0xAD}, -
196 {0x0B88, 0x0000, 0x0000, 0xAE}, -
197 {0x0B89, 0x0000, 0x0000, 0xAF}, -
198 {0x0B8A, 0x0000, 0x0000, 0xB0}, -
199 {0x0B8E, 0x0000, 0x0000, 0xB1}, -
200 {0x0B8F, 0x0000, 0x0000, 0xB2}, -
201 {0x0B90, 0x0000, 0x0000, 0xB3}, -
202 {0x0B92, 0x0000, 0x0000, 0xB4}, -
203 {0x0B93, 0x0000, 0x0000, 0xB5}, -
204 {0x0B94, 0x0000, 0x0000, 0xB6}, -
205 {0x0B95, 0x0000, 0x0000, 0xB8}, -
206 {0x0B95, 0x0B82, 0x0000, 0xEC}, -
207 {0x0B95, 0x0BC1, 0x0000, 0xCC}, -
208 {0x0B95, 0x0BC2, 0x0000, 0xDC}, -
209 {0x0B99, 0x0000, 0x0000, 0xB9}, -
210 {0x0B99, 0x0B82, 0x0000, 0xED}, -
211 {0x0B99, 0x0BC1, 0x0000, 0x99}, -
212 {0x0B99, 0x0BC2, 0x0000, 0x9B}, -
213 {0x0B9A, 0x0000, 0x0000, 0xBA}, -
214 {0x0B9A, 0x0B82, 0x0000, 0xEE}, -
215 {0x0B9A, 0x0BC1, 0x0000, 0xCD}, -
216 {0x0B9A, 0x0BC2, 0x0000, 0xDD}, -
217 {0x0B9C, 0x0000, 0x0000, 0x83}, -
218 {0x0B9C, 0x0B82, 0x0000, 0x88}, -
219 {0x0B9E, 0x0000, 0x0000, 0xBB}, -
220 {0x0B9E, 0x0B82, 0x0000, 0xEF}, -
221 {0x0B9E, 0x0BC1, 0x0000, 0x9A}, -
222 {0x0B9E, 0x0BC2, 0x0000, 0x9C}, -
223 {0x0B9F, 0x0000, 0x0000, 0xBC}, -
224 {0x0B9F, 0x0B82, 0x0000, 0xF0}, -
225 {0x0B9F, 0x0BBF, 0x0000, 0xCA}, -
226 {0x0B9F, 0x0BC0, 0x0000, 0xCB}, -
227 {0x0B9F, 0x0BC1, 0x0000, 0xCE}, -
228 {0x0B9F, 0x0BC2, 0x0000, 0xDE}, -
229 {0x0BA1, 0x0B82, 0x0000, 0xF2}, -
230 {0x0BA3, 0x0000, 0x0000, 0xBD}, -
231 {0x0BA3, 0x0B82, 0x0000, 0xF1}, -
232 {0x0BA3, 0x0BC1, 0x0000, 0xCF}, -
233 {0x0BA3, 0x0BC2, 0x0000, 0xDF}, -
234 {0x0BA4, 0x0000, 0x0000, 0xBE}, -
235 {0x0BA4, 0x0BC1, 0x0000, 0xD0}, -
236 {0x0BA4, 0x0BC2, 0x0000, 0xE0}, -
237 {0x0BA8, 0x0000, 0x0000, 0xBF}, -
238 {0x0BA8, 0x0B82, 0x0000, 0xF3}, -
239 {0x0BA8, 0x0BC1, 0x0000, 0xD1}, -
240 {0x0BA8, 0x0BC2, 0x0000, 0xE1}, -
241 {0x0BA9, 0x0000, 0x0000, 0xC9}, -
242 {0x0BA9, 0x0B82, 0x0000, 0xFD}, -
243 {0x0BA9, 0x0BC1, 0x0000, 0xDB}, -
244 {0x0BA9, 0x0BC2, 0x0000, 0xEB}, -
245 {0x0BAA, 0x0000, 0x0000, 0xC0}, -
246 {0x0BAA, 0x0B82, 0x0000, 0xF4}, -
247 {0x0BAA, 0x0BC1, 0x0000, 0xD2}, -
248 {0x0BAA, 0x0BC2, 0x0000, 0xE2}, -
249 {0x0BAE, 0x0000, 0x0000, 0xC1}, -
250 {0x0BAE, 0x0B82, 0x0000, 0xF5}, -
251 {0x0BAE, 0x0BC1, 0x0000, 0xD3}, -
252 {0x0BAE, 0x0BC2, 0x0000, 0xE3}, -
253 {0x0BAF, 0x0000, 0x0000, 0xC2}, -
254 {0x0BAF, 0x0B82, 0x0000, 0xF6}, -
255 {0x0BAF, 0x0BC1, 0x0000, 0xD4}, -
256 {0x0BAF, 0x0BC2, 0x0000, 0xE4}, -
257 {0x0BB0, 0x0000, 0x0000, 0xC3}, -
258 {0x0BB0, 0x0B82, 0x0000, 0xF7}, -
259 {0x0BB0, 0x0BC1, 0x0000, 0xD5}, -
260 {0x0BB0, 0x0BC2, 0x0000, 0xE5}, -
261 {0x0BB1, 0x0000, 0x0000, 0xC8}, -
262 {0x0BB1, 0x0B82, 0x0000, 0xFC}, -
263 {0x0BB1, 0x0BC1, 0x0000, 0xDA}, -
264 {0x0BB1, 0x0BC2, 0x0000, 0xEA}, -
265 {0x0BB2, 0x0000, 0x0000, 0xC4}, -
266 {0x0BB2, 0x0B82, 0x0000, 0xF8}, -
267 {0x0BB2, 0x0BC1, 0x0000, 0xD6}, -
268 {0x0BB2, 0x0BC2, 0x0000, 0xE6}, -
269 {0x0BB3, 0x0000, 0x0000, 0xC7}, -
270 {0x0BB3, 0x0B82, 0x0000, 0xFB}, -
271 {0x0BB3, 0x0BC1, 0x0000, 0xD9}, -
272 {0x0BB3, 0x0BC2, 0x0000, 0xE9}, -
273 {0x0BB4, 0x0000, 0x0000, 0xC6}, -
274 {0x0BB4, 0x0B82, 0x0000, 0xFA}, -
275 {0x0BB4, 0x0BC1, 0x0000, 0xD8}, -
276 {0x0BB4, 0x0BC2, 0x0000, 0xE8}, -
277 {0x0BB5, 0x0000, 0x0000, 0xC5}, -
278 {0x0BB5, 0x0B82, 0x0000, 0xF9}, -
279 {0x0BB5, 0x0BC1, 0x0000, 0xD7}, -
280 {0x0BB5, 0x0BC2, 0x0000, 0xE7}, -
281 {0x0BB7, 0x0000, 0x0000, 0x84}, -
282 {0x0BB7, 0x0B82, 0x0000, 0x89}, -
283 {0x0BB8, 0x0000, 0x0000, 0x85}, -
284 {0x0BB8, 0x0B82, 0x0000, 0x8A}, -
285 {0x0BB9, 0x0000, 0x0000, 0x86}, -
286 {0x0BB9, 0x0B82, 0x0000, 0x8B}, -
287 {0x0BBE, 0x0000, 0x0000, 0xA1}, -
288 {0x0BBF, 0x0000, 0x0000, 0xA2}, -
289 {0x0BC0, 0x0000, 0x0000, 0xA3}, -
290 {0x0BC1, 0x0000, 0x0000, 0xA4}, -
291 {0x0BC2, 0x0000, 0x0000, 0xA5}, -
292 {0x0BC6, 0x0000, 0x0000, 0xA6}, -
293 {0x0BC7, 0x0000, 0x0000, 0xA7}, -
294 {0x0BC8, 0x0000, 0x0000, 0xA8}, -
295 {0x0BCC, 0x0000, 0x0000, 0xAA}, -
296 {0x0BE6, 0x0000, 0x0000, 0x80}, -
297 {0x0BE7, 0x0000, 0x0000, 0x81}, -
298 {0x0BE7, 0x0BB7, 0x0000, 0x87}, -
299 {0x0BE7, 0x0BB7, 0x0B82, 0x8C}, -
300 {0x0BE8, 0x0000, 0x0000, 0x8D}, -
301 {0x0BE9, 0x0000, 0x0000, 0x8E}, -
302 {0x0BEA, 0x0000, 0x0000, 0x8F}, -
303 {0x0BEB, 0x0000, 0x0000, 0x90}, -
304 {0x0BEC, 0x0000, 0x0000, 0x95}, -
305 {0x0BED, 0x0000, 0x0000, 0x96}, -
306 {0x0BEE, 0x0000, 0x0000, 0x97}, -
307 {0x0BEF, 0x0000, 0x0000, 0x98}, -
308 {0x0BF0, 0x0000, 0x0000, 0x9D}, -
309 {0x0BF1, 0x0000, 0x0000, 0x9E}, -
310 {0x0BF2, 0x0000, 0x0000, 0x9F}, -
311 {0x2018, 0x0000, 0x0000, 0x91}, -
312 {0x2019, 0x0000, 0x0000, 0x92}, -
313 {0x201C, 0x0000, 0x0000, 0x93}, -
314 {0x201C, 0x0000, 0x0000, 0x94} -
315}; -
316 -
317static const ushort TsToUn [][3] = { -
318 // Starting at 0x80 -
319 {0x0BE6, 0x0000, 0x0000}, -
320 {0x0BE7, 0x0000, 0x0000}, -
321 {0x0000, 0x0000, 0x0000}, // unknown -
322 {0x0B9C, 0x0000, 0x0000}, -
323 {0x0BB7, 0x0000, 0x0000}, -
324 {0x0BB8, 0x0000, 0x0000}, -
325 {0x0BB9, 0x0000, 0x0000}, -
326 {0x0BE7, 0x0BB7, 0x0000}, -
327 {0x0B9C, 0x0B82, 0x0000}, -
328 {0x0BB7, 0x0B82, 0x0000}, -
329 {0x0BB8, 0x0B82, 0x0000}, -
330 {0x0BB9, 0x0B82, 0x0000}, -
331 {0x0BE7, 0x0BB7, 0x0B82}, -
332 {0x0BE8, 0x0000, 0x0000}, -
333 {0x0BE9, 0x0000, 0x0000}, -
334 {0x0BEA, 0x0000, 0x0000}, -
335 {0x0BEB, 0x0000, 0x0000}, -
336 {0x2018, 0x0000, 0x0000}, -
337 {0x2019, 0x0000, 0x0000}, -
338 {0x201C, 0x0000, 0x0000}, -
339 {0x201C, 0x0000, 0x0000}, // two of the same?? -
340 {0x0BEC, 0x0000, 0x0000}, -
341 {0x0BED, 0x0000, 0x0000}, -
342 {0x0BEE, 0x0000, 0x0000}, -
343 {0x0BEF, 0x0000, 0x0000}, -
344 {0x0B99, 0x0BC1, 0x0000}, -
345 {0x0B9E, 0x0BC1, 0x0000}, -
346 {0x0B99, 0x0BC2, 0x0000}, -
347 {0x0B9E, 0x0BC2, 0x0000}, -
348 {0x0BF0, 0x0000, 0x0000}, -
349 {0x0BF1, 0x0000, 0x0000}, -
350 {0x0BF2, 0x0000, 0x0000}, -
351 {0x00A0, 0x0000, 0x0000}, -
352 {0x0BBE, 0x0000, 0x0000}, -
353 {0x0BBF, 0x0000, 0x0000}, -
354 {0x0BC0, 0x0000, 0x0000}, -
355 {0x0BC1, 0x0000, 0x0000}, -
356 {0x0BC2, 0x0000, 0x0000}, -
357 {0x0BC6, 0x0000, 0x0000}, -
358 {0x0BC7, 0x0000, 0x0000}, -
359 {0x0BC8, 0x0000, 0x0000}, -
360 {0x00A9, 0x0000, 0x0000}, -
361 {0x0BCC, 0x0000, 0x0000}, -
362 {0x0B85, 0x0000, 0x0000}, -
363 {0x0B86, 0x0000, 0x0000}, -
364 {0x0B87, 0x0000, 0x0000}, -
365 {0x0B88, 0x0000, 0x0000}, -
366 {0x0B89, 0x0000, 0x0000}, -
367 {0x0B8A, 0x0000, 0x0000}, -
368 {0x0B8E, 0x0000, 0x0000}, -
369 {0x0B8F, 0x0000, 0x0000}, -
370 {0x0B90, 0x0000, 0x0000}, -
371 {0x0B92, 0x0000, 0x0000}, -
372 {0x0B93, 0x0000, 0x0000}, -
373 {0x0B94, 0x0000, 0x0000}, -
374 {0x0B83, 0x0000, 0x0000}, -
375 {0x0B95, 0x0000, 0x0000}, -
376 {0x0B99, 0x0000, 0x0000}, -
377 {0x0B9A, 0x0000, 0x0000}, -
378 {0x0B9E, 0x0000, 0x0000}, -
379 {0x0B9F, 0x0000, 0x0000}, -
380 {0x0BA3, 0x0000, 0x0000}, -
381 {0x0BA4, 0x0000, 0x0000}, -
382 {0x0BA8, 0x0000, 0x0000}, -
383 {0x0BAA, 0x0000, 0x0000}, -
384 {0x0BAE, 0x0000, 0x0000}, -
385 {0x0BAF, 0x0000, 0x0000}, -
386 {0x0BB0, 0x0000, 0x0000}, -
387 {0x0BB2, 0x0000, 0x0000}, -
388 {0x0BB5, 0x0000, 0x0000}, -
389 {0x0BB4, 0x0000, 0x0000}, -
390 {0x0BB3, 0x0000, 0x0000}, -
391 {0x0BB1, 0x0000, 0x0000}, -
392 {0x0BA9, 0x0000, 0x0000}, -
393 {0x0B9F, 0x0BBF, 0x0000}, -
394 {0x0B9F, 0x0BC0, 0x0000}, -
395 {0x0B95, 0x0BC1, 0x0000}, -
396 {0x0B9A, 0x0BC1, 0x0000}, -
397 {0x0B9F, 0x0BC1, 0x0000}, -
398 {0x0BA3, 0x0BC1, 0x0000}, -
399 {0x0BA4, 0x0BC1, 0x0000}, -
400 {0x0BA8, 0x0BC1, 0x0000}, -
401 {0x0BAA, 0x0BC1, 0x0000}, -
402 {0x0BAE, 0x0BC1, 0x0000}, -
403 {0x0BAF, 0x0BC1, 0x0000}, -
404 {0x0BB0, 0x0BC1, 0x0000}, -
405 {0x0BB2, 0x0BC1, 0x0000}, -
406 {0x0BB5, 0x0BC1, 0x0000}, -
407 {0x0BB4, 0x0BC1, 0x0000}, -
408 {0x0BB3, 0x0BC1, 0x0000}, -
409 {0x0BB1, 0x0BC1, 0x0000}, -
410 {0x0BA9, 0x0BC1, 0x0000}, -
411 {0x0B95, 0x0BC2, 0x0000}, -
412 {0x0B9A, 0x0BC2, 0x0000}, -
413 {0x0B9F, 0x0BC2, 0x0000}, -
414 {0x0BA3, 0x0BC2, 0x0000}, -
415 {0x0BA4, 0x0BC2, 0x0000}, -
416 {0x0BA8, 0x0BC2, 0x0000}, -
417 {0x0BAA, 0x0BC2, 0x0000}, -
418 {0x0BAE, 0x0BC2, 0x0000}, -
419 {0x0BAF, 0x0BC2, 0x0000}, -
420 {0x0BB0, 0x0BC2, 0x0000}, -
421 {0x0BB2, 0x0BC2, 0x0000}, -
422 {0x0BB5, 0x0BC2, 0x0000}, -
423 {0x0BB4, 0x0BC2, 0x0000}, -
424 {0x0BB3, 0x0BC2, 0x0000}, -
425 {0x0BB1, 0x0BC2, 0x0000}, -
426 {0x0BA9, 0x0BC2, 0x0000}, -
427 {0x0B95, 0x0B82, 0x0000}, -
428 {0x0B99, 0x0B82, 0x0000}, -
429 {0x0B9A, 0x0B82, 0x0000}, -
430 {0x0B9E, 0x0B82, 0x0000}, -
431 {0x0B9F, 0x0B82, 0x0000}, -
432 {0x0BA3, 0x0B82, 0x0000}, -
433 {0x0BA1, 0x0B82, 0x0000}, -
434 {0x0BA8, 0x0B82, 0x0000}, -
435 {0x0BAA, 0x0B82, 0x0000}, -
436 {0x0BAE, 0x0B82, 0x0000}, -
437 {0x0BAF, 0x0B82, 0x0000}, -
438 {0x0BB0, 0x0B82, 0x0000}, -
439 {0x0BB2, 0x0B82, 0x0000}, -
440 {0x0BB5, 0x0B82, 0x0000}, -
441 {0x0BB4, 0x0B82, 0x0000}, -
442 {0x0BB3, 0x0B82, 0x0000}, -
443 {0x0BB1, 0x0B82, 0x0000}, -
444 {0x0BA9, 0x0B82, 0x0000} -
445}; -
446 -
447static int cmp(const ushort *s1, const ushort *s2, size_t len) -
448{ -
449 int diff = 0;
never executed (the execution status of this line is deduced): int diff = 0;
-
450 -
451 while (len-- && (diff = *s1++ - *s2++) == 0)
never evaluated: len--
never evaluated: (diff = *s1++ - *s2++) == 0
0
452 ;
never executed: ;
0
453 -
454 return diff;
never executed: return diff;
0
455} -
456 -
457static unsigned char qt_UnicodeToTSCII(ushort u1, ushort u2, ushort u3) -
458{ -
459 ushort s[3];
never executed (the execution status of this line is deduced): ushort s[3];
-
460 s[0] = u1;
never executed (the execution status of this line is deduced): s[0] = u1;
-
461 s[1] = u2;
never executed (the execution status of this line is deduced): s[1] = u2;
-
462 s[2] = u3;
never executed (the execution status of this line is deduced): s[2] = u3;
-
463 -
464 int a = 0; // start pos
never executed (the execution status of this line is deduced): int a = 0;
-
465 int b = UnToTsLast; // end pos
never executed (the execution status of this line is deduced): int b = UnToTsLast;
-
466 -
467 // do a binary search for the composed unicode in the list -
468 while (a <= b) {
never evaluated: a <= b
0
469 int w = (a + b) / 2;
never executed (the execution status of this line is deduced): int w = (a + b) / 2;
-
470 int j = cmp(UnToTs[w], s, 3);
never executed (the execution status of this line is deduced): int j = cmp(UnToTs[w], s, 3);
-
471 -
472 if (j == 0)
never evaluated: j == 0
0
473 // found it -
474 return UnToTs[w][3];
never executed: return UnToTs[w][3];
0
475 -
476 if (j < 0)
never evaluated: j < 0
0
477 a = w + 1;
never executed: a = w + 1;
0
478 else -
479 b = w - 1;
never executed: b = w - 1;
0
480 } -
481 -
482 return 0;
never executed: return 0;
0
483} -
484 -
485static unsigned int qt_TSCIIToUnicode(uint code, uint *s) -
486{ -
487 int len = 0;
never executed (the execution status of this line is deduced): int len = 0;
-
488 for (int i = 0; i < 3; i++) {
never evaluated: i < 3
0
489 uint u = TsToUn[code & 0x7f][i];
never executed (the execution status of this line is deduced): uint u = TsToUn[code & 0x7f][i];
-
490 s[i] = u;
never executed (the execution status of this line is deduced): s[i] = u;
-
491 if (s[i]) len = i + 1;
never executed: len = i + 1;
never evaluated: s[i]
0
492 }
never executed: }
0
493 -
494 return len;
never executed: return len;
0
495} -
496 -
497QT_END_NAMESPACE -
498 -
499#endif // QT_NO_CODECS -
500 -
Source codeSwitch to Preprocessed file

Generated by Squish Coco Non-Commercial