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 static PRUint32 HZ_cls[ 256 / 8 ] = {
00040 PCK4BITS(1,0,0,0,0,0,0,0),
00041 PCK4BITS(0,0,0,0,0,0,0,0),
00042 PCK4BITS(0,0,0,0,0,0,0,0),
00043 PCK4BITS(0,0,0,1,0,0,0,0),
00044 PCK4BITS(0,0,0,0,0,0,0,0),
00045 PCK4BITS(0,0,0,0,0,0,0,0),
00046 PCK4BITS(0,0,0,0,0,0,0,0),
00047 PCK4BITS(0,0,0,0,0,0,0,0),
00048 PCK4BITS(0,0,0,0,0,0,0,0),
00049 PCK4BITS(0,0,0,0,0,0,0,0),
00050 PCK4BITS(0,0,0,0,0,0,0,0),
00051 PCK4BITS(0,0,0,0,0,0,0,0),
00052 PCK4BITS(0,0,0,0,0,0,0,0),
00053 PCK4BITS(0,0,0,0,0,0,0,0),
00054 PCK4BITS(0,0,0,0,0,0,0,0),
00055 PCK4BITS(0,0,0,4,0,5,2,0),
00056 PCK4BITS(1,1,1,1,1,1,1,1),
00057 PCK4BITS(1,1,1,1,1,1,1,1),
00058 PCK4BITS(1,1,1,1,1,1,1,1),
00059 PCK4BITS(1,1,1,1,1,1,1,1),
00060 PCK4BITS(1,1,1,1,1,1,1,1),
00061 PCK4BITS(1,1,1,1,1,1,1,1),
00062 PCK4BITS(1,1,1,1,1,1,1,1),
00063 PCK4BITS(1,1,1,1,1,1,1,1),
00064 PCK4BITS(1,1,1,1,1,1,1,1),
00065 PCK4BITS(1,1,1,1,1,1,1,1),
00066 PCK4BITS(1,1,1,1,1,1,1,1),
00067 PCK4BITS(1,1,1,1,1,1,1,1),
00068 PCK4BITS(1,1,1,1,1,1,1,1),
00069 PCK4BITS(1,1,1,1,1,1,1,1),
00070 PCK4BITS(1,1,1,1,1,1,1,1),
00071 PCK4BITS(1,1,1,1,1,1,1,1)
00072 };
00073
00074
00075 static PRUint32 HZ_st [ 6] = {
00076 PCK4BITS(eStart,eError, 3,eStart,eStart,eStart,eError,eError),
00077 PCK4BITS(eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe),
00078 PCK4BITS(eItsMe,eItsMe,eError,eError,eStart,eStart, 4,eError),
00079 PCK4BITS( 5,eError, 6,eError, 5, 5, 4,eError),
00080 PCK4BITS( 4,eError, 4, 4, 4,eError, 4,eError),
00081 PCK4BITS( 4,eItsMe,eStart,eStart,eStart,eStart,eStart,eStart)
00082 };
00083
00084 static const PRUint32 HZCharLenTable[] = {0, 0, 0, 0, 0, 0};
00085
00086 SMModel HZSMModel = {
00087 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, HZ_cls },
00088 6,
00089 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, HZ_st },
00090 HZCharLenTable,
00091 "HZ-GB-2312",
00092 };
00093
00094
00095 static PRUint32 ISO2022CN_cls [ 256 / 8 ] = {
00096 PCK4BITS(2,0,0,0,0,0,0,0),
00097 PCK4BITS(0,0,0,0,0,0,0,0),
00098 PCK4BITS(0,0,0,0,0,0,0,0),
00099 PCK4BITS(0,0,0,1,0,0,0,0),
00100 PCK4BITS(0,0,0,0,0,0,0,0),
00101 PCK4BITS(0,3,0,0,0,0,0,0),
00102 PCK4BITS(0,0,0,0,0,0,0,0),
00103 PCK4BITS(0,0,0,0,0,0,0,0),
00104 PCK4BITS(0,0,0,4,0,0,0,0),
00105 PCK4BITS(0,0,0,0,0,0,0,0),
00106 PCK4BITS(0,0,0,0,0,0,0,0),
00107 PCK4BITS(0,0,0,0,0,0,0,0),
00108 PCK4BITS(0,0,0,0,0,0,0,0),
00109 PCK4BITS(0,0,0,0,0,0,0,0),
00110 PCK4BITS(0,0,0,0,0,0,0,0),
00111 PCK4BITS(0,0,0,0,0,0,0,0),
00112 PCK4BITS(2,2,2,2,2,2,2,2),
00113 PCK4BITS(2,2,2,2,2,2,2,2),
00114 PCK4BITS(2,2,2,2,2,2,2,2),
00115 PCK4BITS(2,2,2,2,2,2,2,2),
00116 PCK4BITS(2,2,2,2,2,2,2,2),
00117 PCK4BITS(2,2,2,2,2,2,2,2),
00118 PCK4BITS(2,2,2,2,2,2,2,2),
00119 PCK4BITS(2,2,2,2,2,2,2,2),
00120 PCK4BITS(2,2,2,2,2,2,2,2),
00121 PCK4BITS(2,2,2,2,2,2,2,2),
00122 PCK4BITS(2,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 };
00129
00130
00131 static PRUint32 ISO2022CN_st [ 8] = {
00132 PCK4BITS(eStart, 3,eError,eStart,eStart,eStart,eStart,eStart),
00133 PCK4BITS(eStart,eError,eError,eError,eError,eError,eError,eError),
00134 PCK4BITS(eError,eError,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe),
00135 PCK4BITS(eItsMe,eItsMe,eItsMe,eError,eError,eError, 4,eError),
00136 PCK4BITS(eError,eError,eError,eItsMe,eError,eError,eError,eError),
00137 PCK4BITS( 5, 6,eError,eError,eError,eError,eError,eError),
00138 PCK4BITS(eError,eError,eError,eItsMe,eError,eError,eError,eError),
00139 PCK4BITS(eError,eError,eError,eError,eError,eItsMe,eError,eStart)
00140 };
00141
00142 static const PRUint32 ISO2022CNCharLenTable[] = {0, 0, 0, 0, 0, 0, 0, 0, 0};
00143
00144 SMModel ISO2022CNSMModel = {
00145 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, ISO2022CN_cls },
00146 9,
00147 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, ISO2022CN_st },
00148 ISO2022CNCharLenTable,
00149 "ISO-2022-CN",
00150 };
00151
00152 static PRUint32 ISO2022JP_cls [ 256 / 8 ] = {
00153 PCK4BITS(2,0,0,0,0,0,0,0),
00154 PCK4BITS(0,0,0,0,0,0,2,2),
00155 PCK4BITS(0,0,0,0,0,0,0,0),
00156 PCK4BITS(0,0,0,1,0,0,0,0),
00157 PCK4BITS(0,0,0,0,7,0,0,0),
00158 PCK4BITS(3,0,0,0,0,0,0,0),
00159 PCK4BITS(0,0,0,0,0,0,0,0),
00160 PCK4BITS(0,0,0,0,0,0,0,0),
00161 PCK4BITS(6,0,4,0,8,0,0,0),
00162 PCK4BITS(0,9,5,0,0,0,0,0),
00163 PCK4BITS(0,0,0,0,0,0,0,0),
00164 PCK4BITS(0,0,0,0,0,0,0,0),
00165 PCK4BITS(0,0,0,0,0,0,0,0),
00166 PCK4BITS(0,0,0,0,0,0,0,0),
00167 PCK4BITS(0,0,0,0,0,0,0,0),
00168 PCK4BITS(0,0,0,0,0,0,0,0),
00169 PCK4BITS(2,2,2,2,2,2,2,2),
00170 PCK4BITS(2,2,2,2,2,2,2,2),
00171 PCK4BITS(2,2,2,2,2,2,2,2),
00172 PCK4BITS(2,2,2,2,2,2,2,2),
00173 PCK4BITS(2,2,2,2,2,2,2,2),
00174 PCK4BITS(2,2,2,2,2,2,2,2),
00175 PCK4BITS(2,2,2,2,2,2,2,2),
00176 PCK4BITS(2,2,2,2,2,2,2,2),
00177 PCK4BITS(2,2,2,2,2,2,2,2),
00178 PCK4BITS(2,2,2,2,2,2,2,2),
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,2,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 };
00186
00187
00188 static PRUint32 ISO2022JP_st [ 9] = {
00189 PCK4BITS(eStart, 3,eError,eStart,eStart,eStart,eStart,eStart),
00190 PCK4BITS(eStart,eStart,eError,eError,eError,eError,eError,eError),
00191 PCK4BITS(eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe),
00192 PCK4BITS(eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eItsMe,eError,eError),
00193 PCK4BITS(eError, 5,eError,eError,eError, 4,eError,eError),
00194 PCK4BITS(eError,eError,eError, 6,eItsMe,eError,eItsMe,eError),
00195 PCK4BITS(eError,eError,eError,eError,eError,eError,eItsMe,eItsMe),
00196 PCK4BITS(eError,eError,eError,eItsMe,eError,eError,eError,eError),
00197 PCK4BITS(eError,eError,eError,eError,eItsMe,eError,eStart,eStart)
00198 };
00199
00200 static const PRUint32 ISO2022JPCharLenTable[] = {0, 0, 0, 0, 0, 0, 0, 0};
00201
00202 SMModel ISO2022JPSMModel = {
00203 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, ISO2022JP_cls },
00204 10,
00205 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, ISO2022JP_st },
00206 ISO2022JPCharLenTable,
00207 "ISO-2022-JP",
00208 };
00209
00210 static PRUint32 ISO2022KR_cls [ 256 / 8 ] = {
00211 PCK4BITS(2,0,0,0,0,0,0,0),
00212 PCK4BITS(0,0,0,0,0,0,0,0),
00213 PCK4BITS(0,0,0,0,0,0,0,0),
00214 PCK4BITS(0,0,0,1,0,0,0,0),
00215 PCK4BITS(0,0,0,0,3,0,0,0),
00216 PCK4BITS(0,4,0,0,0,0,0,0),
00217 PCK4BITS(0,0,0,0,0,0,0,0),
00218 PCK4BITS(0,0,0,0,0,0,0,0),
00219 PCK4BITS(0,0,0,5,0,0,0,0),
00220 PCK4BITS(0,0,0,0,0,0,0,0),
00221 PCK4BITS(0,0,0,0,0,0,0,0),
00222 PCK4BITS(0,0,0,0,0,0,0,0),
00223 PCK4BITS(0,0,0,0,0,0,0,0),
00224 PCK4BITS(0,0,0,0,0,0,0,0),
00225 PCK4BITS(0,0,0,0,0,0,0,0),
00226 PCK4BITS(0,0,0,0,0,0,0,0),
00227 PCK4BITS(2,2,2,2,2,2,2,2),
00228 PCK4BITS(2,2,2,2,2,2,2,2),
00229 PCK4BITS(2,2,2,2,2,2,2,2),
00230 PCK4BITS(2,2,2,2,2,2,2,2),
00231 PCK4BITS(2,2,2,2,2,2,2,2),
00232 PCK4BITS(2,2,2,2,2,2,2,2),
00233 PCK4BITS(2,2,2,2,2,2,2,2),
00234 PCK4BITS(2,2,2,2,2,2,2,2),
00235 PCK4BITS(2,2,2,2,2,2,2,2),
00236 PCK4BITS(2,2,2,2,2,2,2,2),
00237 PCK4BITS(2,2,2,2,2,2,2,2),
00238 PCK4BITS(2,2,2,2,2,2,2,2),
00239 PCK4BITS(2,2,2,2,2,2,2,2),
00240 PCK4BITS(2,2,2,2,2,2,2,2),
00241 PCK4BITS(2,2,2,2,2,2,2,2),
00242 PCK4BITS(2,2,2,2,2,2,2,2)
00243 };
00244
00245
00246 static PRUint32 ISO2022KR_st [ 5] = {
00247 PCK4BITS(eStart, 3,eError,eStart,eStart,eStart,eError,eError),
00248 PCK4BITS(eError,eError,eError,eError,eItsMe,eItsMe,eItsMe,eItsMe),
00249 PCK4BITS(eItsMe,eItsMe,eError,eError,eError, 4,eError,eError),
00250 PCK4BITS(eError,eError,eError,eError, 5,eError,eError,eError),
00251 PCK4BITS(eError,eError,eError,eItsMe,eStart,eStart,eStart,eStart)
00252 };
00253
00254 static const PRUint32 ISO2022KRCharLenTable[] = {0, 0, 0, 0, 0, 0};
00255
00256 SMModel ISO2022KRSMModel = {
00257 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, ISO2022KR_cls },
00258 6,
00259 {eIdxSft4bits, eSftMsk4bits, eBitSft4bits, eUnitMsk4bits, ISO2022KR_st },
00260 ISO2022KRCharLenTable,
00261 "ISO-2022-KR",
00262 };
00263