00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 #include "nsCodingStateMachine.h"
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047 static PRUint32 BIG5_cls [ 256 / 8 ] = {
00048
00049 PCK4BITS(1,1,1,1,1,1,1,1),
00050 PCK4BITS(1,1,1,1,1,1,0,0),
00051 PCK4BITS(1,1,1,1,1,1,1,1),
00052 PCK4BITS(1,1,1,0,1,1,1,1),
00053 PCK4BITS(1,1,1,1,1,1,1,1),
00054 PCK4BITS(1,1,1,1,1,1,1,1),
00055 PCK4BITS(1,1,1,1,1,1,1,1),
00056 PCK4BITS(1,1,1,1,1,1,1,1),
00057 PCK4BITS(2,2,2,2,2,2,2,2),
00058 PCK4BITS(2,2,2,2,2,2,2,2),
00059 PCK4BITS(2,2,2,2,2,2,2,2),
00060 PCK4BITS(2,2,2,2,2,2,2,2),
00061 PCK4BITS(2,2,2,2,2,2,2,2),
00062 PCK4BITS(2,2,2,2,2,2,2,2),
00063 PCK4BITS(2,2,2,2,2,2,2,2),
00064 PCK4BITS(2,2,2,2,2,2,2,1),
00065 PCK4BITS(4,4,4,4,4,4,4,4),
00066 PCK4BITS(4,4,4,4,4,4,4,4),
00067 PCK4BITS(4,4,4,4,4,4,4,4),
00068 PCK4BITS(4,4,4,4,4,4,4,4),
00069 PCK4BITS(4,3,3,3,3,3,3,3),
00070 PCK4BITS(3,3,3,3,3,3,3,3),
00071 PCK4BITS(3,3,3,3,3,3,3,3),
00072 PCK4BITS(3,3,3,3,3,3,3,3),
00073 PCK4BITS(3,3,3,3,3,3,3,3),
00074 PCK4BITS(3,3,3,3,3,3,3,3),
00075 PCK4BITS(3,3,3,3,3,3,3,3),
00076 PCK4BITS(3,3,3,3,3,3,3,3),
00077 PCK4BITS(3,3,3,3,3,3,3,3),
00078 PCK4BITS(3,3,3,3,3,3,3,3),
00079 PCK4BITS(3,3,3,3,3,3,3,3),
00080 PCK4BITS(3,3,3,3,3,3,3,0)
00081 };
00082
00083
00084 static PRUint32 BIG5_st [ 3] = {
00085 PCK4BITS(eError,eStart,eStart, 3,eError,eError,eError,eError),
00086 PCK4BITS(eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eError),
00087 PCK4BITS(eError,eStart,eStart,eStart,eStart,eStart,eStart,eStart)
00088 };
00089
00090 static const PRUint32 Big5CharLenTable[] = {0, 1, 1, 2, 0};
00091
00092 SMModel Big5SMModel = {
00093 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, BIG5_cls },
00094 5,
00095 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, BIG5_st },
00096 Big5CharLenTable,
00097 "Big5",
00098 };
00099
00100 static PRUint32 EUCJP_cls [ 256 / 8 ] = {
00101
00102 PCK4BITS(4,4,4,4,4,4,4,4),
00103 PCK4BITS(4,4,4,4,4,4,5,5),
00104 PCK4BITS(4,4,4,4,4,4,4,4),
00105 PCK4BITS(4,4,4,5,4,4,4,4),
00106 PCK4BITS(4,4,4,4,4,4,4,4),
00107 PCK4BITS(4,4,4,4,4,4,4,4),
00108 PCK4BITS(4,4,4,4,4,4,4,4),
00109 PCK4BITS(4,4,4,4,4,4,4,4),
00110 PCK4BITS(4,4,4,4,4,4,4,4),
00111 PCK4BITS(4,4,4,4,4,4,4,4),
00112 PCK4BITS(4,4,4,4,4,4,4,4),
00113 PCK4BITS(4,4,4,4,4,4,4,4),
00114 PCK4BITS(4,4,4,4,4,4,4,4),
00115 PCK4BITS(4,4,4,4,4,4,4,4),
00116 PCK4BITS(4,4,4,4,4,4,4,4),
00117 PCK4BITS(4,4,4,4,4,4,4,4),
00118 PCK4BITS(5,5,5,5,5,5,5,5),
00119 PCK4BITS(5,5,5,5,5,5,1,3),
00120 PCK4BITS(5,5,5,5,5,5,5,5),
00121 PCK4BITS(5,5,5,5,5,5,5,5),
00122 PCK4BITS(5,2,2,2,2,2,2,2),
00123 PCK4BITS(2,2,2,2,2,2,2,2),
00124 PCK4BITS(2,2,2,2,2,2,2,2),
00125 PCK4BITS(2,2,2,2,2,2,2,2),
00126 PCK4BITS(2,2,2,2,2,2,2,2),
00127 PCK4BITS(2,2,2,2,2,2,2,2),
00128 PCK4BITS(2,2,2,2,2,2,2,2),
00129 PCK4BITS(2,2,2,2,2,2,2,2),
00130 PCK4BITS(0,0,0,0,0,0,0,0),
00131 PCK4BITS(0,0,0,0,0,0,0,0),
00132 PCK4BITS(0,0,0,0,0,0,0,0),
00133 PCK4BITS(0,0,0,0,0,0,0,5)
00134 };
00135
00136
00137 static PRUint32 EUCJP_st [ 5] = {
00138 PCK4BITS( 3, 4, 3, 5,eStart,eError,eError,eError),
00139 PCK4BITS(eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe),
00140 PCK4BITS(eItsMe,eItsMe,eStart,eError,eStart,eError,eError,eError),
00141 PCK4BITS(eError,eError,eStart,eError,eError,eError, 3,eError),
00142 PCK4BITS( 3,eError,eError,eError,eStart,eStart,eStart,eStart)
00143 };
00144
00145 static const PRUint32 EUCJPCharLenTable[] = {2, 2, 2, 3, 1, 0};
00146
00147 SMModel EUCJPSMModel = {
00148 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, EUCJP_cls },
00149 6,
00150 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, EUCJP_st },
00151 EUCJPCharLenTable,
00152 "EUC-JP",
00153 };
00154
00155 static PRUint32 EUCKR_cls [ 256 / 8 ] = {
00156
00157 PCK4BITS(1,1,1,1,1,1,1,1),
00158 PCK4BITS(1,1,1,1,1,1,0,0),
00159 PCK4BITS(1,1,1,1,1,1,1,1),
00160 PCK4BITS(1,1,1,0,1,1,1,1),
00161 PCK4BITS(1,1,1,1,1,1,1,1),
00162 PCK4BITS(1,1,1,1,1,1,1,1),
00163 PCK4BITS(1,1,1,1,1,1,1,1),
00164 PCK4BITS(1,1,1,1,1,1,1,1),
00165 PCK4BITS(1,1,1,1,1,1,1,1),
00166 PCK4BITS(1,1,1,1,1,1,1,1),
00167 PCK4BITS(1,1,1,1,1,1,1,1),
00168 PCK4BITS(1,1,1,1,1,1,1,1),
00169 PCK4BITS(1,1,1,1,1,1,1,1),
00170 PCK4BITS(1,1,1,1,1,1,1,1),
00171 PCK4BITS(1,1,1,1,1,1,1,1),
00172 PCK4BITS(1,1,1,1,1,1,1,1),
00173 PCK4BITS(0,0,0,0,0,0,0,0),
00174 PCK4BITS(0,0,0,0,0,0,0,0),
00175 PCK4BITS(0,0,0,0,0,0,0,0),
00176 PCK4BITS(0,0,0,0,0,0,0,0),
00177 PCK4BITS(0,2,2,2,2,2,2,2),
00178 PCK4BITS(2,2,2,2,2,3,3,3),
00179 PCK4BITS(2,2,2,2,2,2,2,2),
00180 PCK4BITS(2,2,2,2,2,2,2,2),
00181 PCK4BITS(2,2,2,2,2,2,2,2),
00182 PCK4BITS(2,3,2,2,2,2,2,2),
00183 PCK4BITS(2,2,2,2,2,2,2,2),
00184 PCK4BITS(2,2,2,2,2,2,2,2),
00185 PCK4BITS(2,2,2,2,2,2,2,2),
00186 PCK4BITS(2,2,2,2,2,2,2,2),
00187 PCK4BITS(2,2,2,2,2,2,2,2),
00188 PCK4BITS(2,2,2,2,2,2,2,0)
00189 };
00190
00191
00192 static PRUint32 EUCKR_st [ 2] = {
00193 PCK4BITS(eError,eStart, 3,eError,eError,eError,eError,eError),
00194 PCK4BITS(eItsMe,eItsMe,eItsMe,eItsMe,eError,eError,eStart,eStart)
00195 };
00196
00197 static const PRUint32 EUCKRCharLenTable[] = {0, 1, 2, 0};
00198
00199 SMModel EUCKRSMModel = {
00200 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, EUCKR_cls },
00201 4,
00202 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, EUCKR_st },
00203 EUCKRCharLenTable,
00204 "EUC-KR",
00205 };
00206
00207 static PRUint32 EUCTW_cls [ 256 / 8 ] = {
00208
00209 PCK4BITS(2,2,2,2,2,2,2,2),
00210 PCK4BITS(2,2,2,2,2,2,0,0),
00211 PCK4BITS(2,2,2,2,2,2,2,2),
00212 PCK4BITS(2,2,2,0,2,2,2,2),
00213 PCK4BITS(2,2,2,2,2,2,2,2),
00214 PCK4BITS(2,2,2,2,2,2,2,2),
00215 PCK4BITS(2,2,2,2,2,2,2,2),
00216 PCK4BITS(2,2,2,2,2,2,2,2),
00217 PCK4BITS(2,2,2,2,2,2,2,2),
00218 PCK4BITS(2,2,2,2,2,2,2,2),
00219 PCK4BITS(2,2,2,2,2,2,2,2),
00220 PCK4BITS(2,2,2,2,2,2,2,2),
00221 PCK4BITS(2,2,2,2,2,2,2,2),
00222 PCK4BITS(2,2,2,2,2,2,2,2),
00223 PCK4BITS(2,2,2,2,2,2,2,2),
00224 PCK4BITS(2,2,2,2,2,2,2,2),
00225 PCK4BITS(0,0,0,0,0,0,0,0),
00226 PCK4BITS(0,0,0,0,0,0,6,0),
00227 PCK4BITS(0,0,0,0,0,0,0,0),
00228 PCK4BITS(0,0,0,0,0,0,0,0),
00229 PCK4BITS(0,3,4,4,4,4,4,4),
00230 PCK4BITS(5,5,1,1,1,1,1,1),
00231 PCK4BITS(1,1,1,1,1,1,1,1),
00232 PCK4BITS(1,1,1,1,1,1,1,1),
00233 PCK4BITS(1,1,3,1,3,3,3,3),
00234 PCK4BITS(3,3,3,3,3,3,3,3),
00235 PCK4BITS(3,3,3,3,3,3,3,3),
00236 PCK4BITS(3,3,3,3,3,3,3,3),
00237 PCK4BITS(3,3,3,3,3,3,3,3),
00238 PCK4BITS(3,3,3,3,3,3,3,3),
00239 PCK4BITS(3,3,3,3,3,3,3,3),
00240 PCK4BITS(3,3,3,3,3,3,3,0)
00241 };
00242
00243
00244 static PRUint32 EUCTW_st [ 6] = {
00245 PCK4BITS(eError,eError,eStart, 3, 3, 3, 4,eError),
00246 PCK4BITS(eError,eError,eError,eError,eError,eError,eItsMe,eItsMe),
00247 PCK4BITS(eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eError,eStart,eError),
00248 PCK4BITS(eStart,eStart,eStart,eError,eError,eError,eError,eError),
00249 PCK4BITS( 5,eError,eError,eError,eStart,eError,eStart,eStart),
00250 PCK4BITS(eStart,eError,eStart,eStart,eStart,eStart,eStart,eStart)
00251 };
00252
00253 static const PRUint32 EUCTWCharLenTable[] = {0, 0, 1, 2, 2, 2, 3};
00254
00255 SMModel EUCTWSMModel = {
00256 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, EUCTW_cls },
00257 7,
00258 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, EUCTW_st },
00259 EUCTWCharLenTable,
00260 "x-euc-tw",
00261 };
00262
00263
00264
00265
00266
00267
00268
00269
00270
00271
00272
00273
00274
00275
00276
00277
00278
00279
00280
00281
00282
00283
00284
00285
00286
00287
00288
00289
00290
00291
00292
00293
00294
00295
00296
00297
00298
00299
00300
00301
00302
00303
00304
00305
00306
00307
00308
00309
00310
00311
00312
00313
00314
00315
00316
00317
00318
00319 static PRUint32 GB18030_cls [ 256 / 8 ] = {
00320 PCK4BITS(1,1,1,1,1,1,1,1),
00321 PCK4BITS(1,1,1,1,1,1,0,0),
00322 PCK4BITS(1,1,1,1,1,1,1,1),
00323 PCK4BITS(1,1,1,0,1,1,1,1),
00324 PCK4BITS(1,1,1,1,1,1,1,1),
00325 PCK4BITS(1,1,1,1,1,1,1,1),
00326 PCK4BITS(3,3,3,3,3,3,3,3),
00327 PCK4BITS(3,3,1,1,1,1,1,1),
00328 PCK4BITS(2,2,2,2,2,2,2,2),
00329 PCK4BITS(2,2,2,2,2,2,2,2),
00330 PCK4BITS(2,2,2,2,2,2,2,2),
00331 PCK4BITS(2,2,2,2,2,2,2,2),
00332 PCK4BITS(2,2,2,2,2,2,2,2),
00333 PCK4BITS(2,2,2,2,2,2,2,2),
00334 PCK4BITS(2,2,2,2,2,2,2,2),
00335 PCK4BITS(2,2,2,2,2,2,2,4),
00336 PCK4BITS(5,6,6,6,6,6,6,6),
00337 PCK4BITS(6,6,6,6,6,6,6,6),
00338 PCK4BITS(6,6,6,6,6,6,6,6),
00339 PCK4BITS(6,6,6,6,6,6,6,6),
00340 PCK4BITS(6,6,6,6,6,6,6,6),
00341 PCK4BITS(6,6,6,6,6,6,6,6),
00342 PCK4BITS(6,6,6,6,6,6,6,6),
00343 PCK4BITS(6,6,6,6,6,6,6,6),
00344 PCK4BITS(6,6,6,6,6,6,6,6),
00345 PCK4BITS(6,6,6,6,6,6,6,6),
00346 PCK4BITS(6,6,6,6,6,6,6,6),
00347 PCK4BITS(6,6,6,6,6,6,6,6),
00348 PCK4BITS(6,6,6,6,6,6,6,6),
00349 PCK4BITS(6,6,6,6,6,6,6,6),
00350 PCK4BITS(6,6,6,6,6,6,6,6),
00351 PCK4BITS(6,6,6,6,6,6,6,0)
00352 };
00353
00354
00355 static PRUint32 GB18030_st [ 6] = {
00356 PCK4BITS(eError,eStart,eStart,eStart,eStart,eStart, 3,eError),
00357 PCK4BITS(eError,eError,eError,eError,eError,eError,eItsMe,eItsMe),
00358 PCK4BITS(eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eError,eError,eStart),
00359 PCK4BITS( 4,eError,eStart,eStart,eError,eError,eError,eError),
00360 PCK4BITS(eError,eError, 5,eError,eError,eError,eItsMe,eError),
00361 PCK4BITS(eError,eError,eStart,eStart,eStart,eStart,eStart,eStart)
00362 };
00363
00364
00365
00366
00367
00368
00369 static const PRUint32 GB18030CharLenTable[] = {0, 1, 1, 1, 1, 1, 2};
00370
00371 SMModel GB18030SMModel = {
00372 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, GB18030_cls },
00373 7,
00374 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, GB18030_st },
00375 GB18030CharLenTable,
00376 "GB18030",
00377 };
00378
00379
00380
00381 static PRUint32 SJIS_cls [ 256 / 8 ] = {
00382
00383 PCK4BITS(1,1,1,1,1,1,1,1),
00384 PCK4BITS(1,1,1,1,1,1,0,0),
00385 PCK4BITS(1,1,1,1,1,1,1,1),
00386 PCK4BITS(1,1,1,0,1,1,1,1),
00387 PCK4BITS(1,1,1,1,1,1,1,1),
00388 PCK4BITS(1,1,1,1,1,1,1,1),
00389 PCK4BITS(1,1,1,1,1,1,1,1),
00390 PCK4BITS(1,1,1,1,1,1,1,1),
00391 PCK4BITS(2,2,2,2,2,2,2,2),
00392 PCK4BITS(2,2,2,2,2,2,2,2),
00393 PCK4BITS(2,2,2,2,2,2,2,2),
00394 PCK4BITS(2,2,2,2,2,2,2,2),
00395 PCK4BITS(2,2,2,2,2,2,2,2),
00396 PCK4BITS(2,2,2,2,2,2,2,2),
00397 PCK4BITS(2,2,2,2,2,2,2,2),
00398 PCK4BITS(2,2,2,2,2,2,2,1),
00399 PCK4BITS(3,3,3,3,3,3,3,3),
00400 PCK4BITS(3,3,3,3,3,3,3,3),
00401 PCK4BITS(3,3,3,3,3,3,3,3),
00402 PCK4BITS(3,3,3,3,3,3,3,3),
00403
00404
00405 PCK4BITS(2,2,2,2,2,2,2,2),
00406 PCK4BITS(2,2,2,2,2,2,2,2),
00407 PCK4BITS(2,2,2,2,2,2,2,2),
00408 PCK4BITS(2,2,2,2,2,2,2,2),
00409 PCK4BITS(2,2,2,2,2,2,2,2),
00410 PCK4BITS(2,2,2,2,2,2,2,2),
00411 PCK4BITS(2,2,2,2,2,2,2,2),
00412 PCK4BITS(2,2,2,2,2,2,2,2),
00413 PCK4BITS(3,3,3,3,3,3,3,3),
00414 PCK4BITS(3,3,3,3,3,4,4,4),
00415 PCK4BITS(4,4,4,4,4,4,4,4),
00416 PCK4BITS(4,4,4,4,4,0,0,0)
00417 };
00418
00419
00420 static PRUint32 SJIS_st [ 3] = {
00421 PCK4BITS(eError,eStart,eStart, 3,eError,eError,eError,eError),
00422 PCK4BITS(eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe),
00423 PCK4BITS(eItsMe,eItsMe,eError,eError,eStart,eStart,eStart,eStart)
00424 };
00425
00426 static const PRUint32 SJISCharLenTable[] = {0, 1, 1, 2, 0, 0};
00427
00428 SMModel SJISSMModel = {
00429 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, SJIS_cls },
00430 6,
00431 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, SJIS_st },
00432 SJISCharLenTable,
00433 "Shift_JIS",
00434 };
00435
00436
00437 static PRUint32 UCS2BE_cls [ 256 / 8 ] = {
00438 PCK4BITS(0,0,0,0,0,0,0,0),
00439 PCK4BITS(0,0,1,0,0,2,0,0),
00440 PCK4BITS(0,0,0,0,0,0,0,0),
00441 PCK4BITS(0,0,0,3,0,0,0,0),
00442 PCK4BITS(0,0,0,0,0,0,0,0),
00443 PCK4BITS(0,3,3,3,3,3,0,0),
00444 PCK4BITS(0,0,0,0,0,0,0,0),
00445 PCK4BITS(0,0,0,0,0,0,0,0),
00446 PCK4BITS(0,0,0,0,0,0,0,0),
00447 PCK4BITS(0,0,0,0,0,0,0,0),
00448 PCK4BITS(0,0,0,0,0,0,0,0),
00449 PCK4BITS(0,0,0,0,0,0,0,0),
00450 PCK4BITS(0,0,0,0,0,0,0,0),
00451 PCK4BITS(0,0,0,0,0,0,0,0),
00452 PCK4BITS(0,0,0,0,0,0,0,0),
00453 PCK4BITS(0,0,0,0,0,0,0,0),
00454 PCK4BITS(0,0,0,0,0,0,0,0),
00455 PCK4BITS(0,0,0,0,0,0,0,0),
00456 PCK4BITS(0,0,0,0,0,0,0,0),
00457 PCK4BITS(0,0,0,0,0,0,0,0),
00458 PCK4BITS(0,0,0,0,0,0,0,0),
00459 PCK4BITS(0,0,0,0,0,0,0,0),
00460 PCK4BITS(0,0,0,0,0,0,0,0),
00461 PCK4BITS(0,0,0,0,0,0,0,0),
00462 PCK4BITS(0,0,0,0,0,0,0,0),
00463 PCK4BITS(0,0,0,0,0,0,0,0),
00464 PCK4BITS(0,0,0,0,0,0,0,0),
00465 PCK4BITS(0,0,0,0,0,0,0,0),
00466 PCK4BITS(0,0,0,0,0,0,0,0),
00467 PCK4BITS(0,0,0,0,0,0,0,0),
00468 PCK4BITS(0,0,0,0,0,0,0,0),
00469 PCK4BITS(0,0,0,0,0,0,4,5)
00470 };
00471
00472
00473 static PRUint32 UCS2BE_st [ 7] = {
00474 PCK4BITS( 5, 7, 7,eError, 4, 3,eError,eError),
00475 PCK4BITS(eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe),
00476 PCK4BITS(eItsMe,eItsMe, 6, 6, 6, 6,eError,eError),
00477 PCK4BITS( 6, 6, 6, 6, 6,eItsMe, 6, 6),
00478 PCK4BITS( 6, 6, 6, 6, 5, 7, 7,eError),
00479 PCK4BITS( 5, 8, 6, 6,eError, 6, 6, 6),
00480 PCK4BITS( 6, 6, 6, 6,eError,eError,eStart,eStart)
00481 };
00482
00483 static const PRUint32 UCS2BECharLenTable[] = {2, 2, 2, 0, 2, 2};
00484
00485 SMModel UCS2BESMModel = {
00486 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, UCS2BE_cls },
00487 6,
00488 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, UCS2BE_st },
00489 UCS2BECharLenTable,
00490 "UTF-16BE",
00491 };
00492
00493 static PRUint32 UCS2LE_cls [ 256 / 8 ] = {
00494 PCK4BITS(0,0,0,0,0,0,0,0),
00495 PCK4BITS(0,0,1,0,0,2,0,0),
00496 PCK4BITS(0,0,0,0,0,0,0,0),
00497 PCK4BITS(0,0,0,3,0,0,0,0),
00498 PCK4BITS(0,0,0,0,0,0,0,0),
00499 PCK4BITS(0,3,3,3,3,3,0,0),
00500 PCK4BITS(0,0,0,0,0,0,0,0),
00501 PCK4BITS(0,0,0,0,0,0,0,0),
00502 PCK4BITS(0,0,0,0,0,0,0,0),
00503 PCK4BITS(0,0,0,0,0,0,0,0),
00504 PCK4BITS(0,0,0,0,0,0,0,0),
00505 PCK4BITS(0,0,0,0,0,0,0,0),
00506 PCK4BITS(0,0,0,0,0,0,0,0),
00507 PCK4BITS(0,0,0,0,0,0,0,0),
00508 PCK4BITS(0,0,0,0,0,0,0,0),
00509 PCK4BITS(0,0,0,0,0,0,0,0),
00510 PCK4BITS(0,0,0,0,0,0,0,0),
00511 PCK4BITS(0,0,0,0,0,0,0,0),
00512 PCK4BITS(0,0,0,0,0,0,0,0),
00513 PCK4BITS(0,0,0,0,0,0,0,0),
00514 PCK4BITS(0,0,0,0,0,0,0,0),
00515 PCK4BITS(0,0,0,0,0,0,0,0),
00516 PCK4BITS(0,0,0,0,0,0,0,0),
00517 PCK4BITS(0,0,0,0,0,0,0,0),
00518 PCK4BITS(0,0,0,0,0,0,0,0),
00519 PCK4BITS(0,0,0,0,0,0,0,0),
00520 PCK4BITS(0,0,0,0,0,0,0,0),
00521 PCK4BITS(0,0,0,0,0,0,0,0),
00522 PCK4BITS(0,0,0,0,0,0,0,0),
00523 PCK4BITS(0,0,0,0,0,0,0,0),
00524 PCK4BITS(0,0,0,0,0,0,0,0),
00525 PCK4BITS(0,0,0,0,0,0,4,5)
00526 };
00527
00528
00529 static PRUint32 UCS2LE_st [ 7] = {
00530 PCK4BITS( 6, 6, 7, 6, 4, 3,eError,eError),
00531 PCK4BITS(eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe),
00532 PCK4BITS(eItsMe,eItsMe, 5, 5, 5,eError,eItsMe,eError),
00533 PCK4BITS( 5, 5, 5,eError, 5,eError, 6, 6),
00534 PCK4BITS( 7, 6, 8, 8, 5, 5, 5,eError),
00535 PCK4BITS( 5, 5, 5,eError,eError,eError, 5, 5),
00536 PCK4BITS( 5, 5, 5,eError, 5,eError,eStart,eStart)
00537 };
00538
00539 static const PRUint32 UCS2LECharLenTable[] = {2, 2, 2, 2, 2, 2};
00540
00541 SMModel UCS2LESMModel = {
00542 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, UCS2LE_cls },
00543 6,
00544 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, UCS2LE_st },
00545 UCS2LECharLenTable,
00546 "UTF-16LE",
00547 };
00548
00549
00550 static PRUint32 UTF8_cls [ 256 / 8 ] = {
00551
00552 PCK4BITS(1,1,1,1,1,1,1,1),
00553 PCK4BITS(1,1,1,1,1,1,0,0),
00554 PCK4BITS(1,1,1,1,1,1,1,1),
00555 PCK4BITS(1,1,1,0,1,1,1,1),
00556 PCK4BITS(1,1,1,1,1,1,1,1),
00557 PCK4BITS(1,1,1,1,1,1,1,1),
00558 PCK4BITS(1,1,1,1,1,1,1,1),
00559 PCK4BITS(1,1,1,1,1,1,1,1),
00560 PCK4BITS(1,1,1,1,1,1,1,1),
00561 PCK4BITS(1,1,1,1,1,1,1,1),
00562 PCK4BITS(1,1,1,1,1,1,1,1),
00563 PCK4BITS(1,1,1,1,1,1,1,1),
00564 PCK4BITS(1,1,1,1,1,1,1,1),
00565 PCK4BITS(1,1,1,1,1,1,1,1),
00566 PCK4BITS(1,1,1,1,1,1,1,1),
00567 PCK4BITS(1,1,1,1,1,1,1,1),
00568 PCK4BITS(2,2,2,2,3,3,3,3),
00569 PCK4BITS(4,4,4,4,4,4,4,4),
00570 PCK4BITS(4,4,4,4,4,4,4,4),
00571 PCK4BITS(4,4,4,4,4,4,4,4),
00572 PCK4BITS(5,5,5,5,5,5,5,5),
00573 PCK4BITS(5,5,5,5,5,5,5,5),
00574 PCK4BITS(5,5,5,5,5,5,5,5),
00575 PCK4BITS(5,5,5,5,5,5,5,5),
00576 PCK4BITS(0,0,6,6,6,6,6,6),
00577 PCK4BITS(6,6,6,6,6,6,6,6),
00578 PCK4BITS(6,6,6,6,6,6,6,6),
00579 PCK4BITS(6,6,6,6,6,6,6,6),
00580 PCK4BITS(7,8,8,8,8,8,8,8),
00581 PCK4BITS(8,8,8,8,8,9,8,8),
00582 PCK4BITS(10,11,11,11,11,11,11,11),
00583 PCK4BITS(12,13,13,13,14,15,0,0)
00584 };
00585
00586
00587 static PRUint32 UTF8_st [ 26] = {
00588 PCK4BITS(eError,eStart,eError,eError,eError,eError, 12, 10),
00589 PCK4BITS( 9, 11, 8, 7, 6, 5, 4, 3),
00590 PCK4BITS(eError,eError,eError,eError,eError,eError,eError,eError),
00591 PCK4BITS(eError,eError,eError,eError,eError,eError,eError,eError),
00592 PCK4BITS(eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe),
00593 PCK4BITS(eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe),
00594 PCK4BITS(eError,eError, 5, 5, 5, 5,eError,eError),
00595 PCK4BITS(eError,eError,eError,eError,eError,eError,eError,eError),
00596 PCK4BITS(eError,eError,eError, 5, 5, 5,eError,eError),
00597 PCK4BITS(eError,eError,eError,eError,eError,eError,eError,eError),
00598 PCK4BITS(eError,eError, 7, 7, 7, 7,eError,eError),
00599 PCK4BITS(eError,eError,eError,eError,eError,eError,eError,eError),
00600 PCK4BITS(eError,eError,eError,eError, 7, 7,eError,eError),
00601 PCK4BITS(eError,eError,eError,eError,eError,eError,eError,eError),
00602 PCK4BITS(eError,eError, 9, 9, 9, 9,eError,eError),
00603 PCK4BITS(eError,eError,eError,eError,eError,eError,eError,eError),
00604 PCK4BITS(eError,eError,eError,eError,eError, 9,eError,eError),
00605 PCK4BITS(eError,eError,eError,eError,eError,eError,eError,eError),
00606 PCK4BITS(eError,eError, 12, 12, 12, 12,eError,eError),
00607 PCK4BITS(eError,eError,eError,eError,eError,eError,eError,eError),
00608 PCK4BITS(eError,eError,eError,eError,eError, 12,eError,eError),
00609 PCK4BITS(eError,eError,eError,eError,eError,eError,eError,eError),
00610 PCK4BITS(eError,eError, 12, 12, 12,eError,eError,eError),
00611 PCK4BITS(eError,eError,eError,eError,eError,eError,eError,eError),
00612 PCK4BITS(eError,eError,eStart,eStart,eStart,eStart,eError,eError),
00613 PCK4BITS(eError,eError,eError,eError,eError,eError,eError,eError)
00614 };
00615
00616 static const PRUint32 UTF8CharLenTable[] = {0, 1, 0, 0, 0, 0, 2, 3,
00617 3, 3, 4, 4, 5, 5, 6, 6 };
00618
00619 SMModel UTF8SMModel = {
00620 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, UTF8_cls },
00621 16,
00622 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, UTF8_st },
00623 UTF8CharLenTable,
00624 "UTF-8",
00625 };
00626