public void RunJisStateMachine(byte bt) { var jc = FEData.JisCharClass[bt]; stateJisEsc = FEData.JisEscNextState[(int) stateJisEsc, (int) jc]; if ((stateJisEsc & FEData.JS.CNTA) == FEData.JS.S0) return; if (stateJisEsc == FEData.JS.CNTA) { if (countSo != byte.MaxValue) ++countSo; } else if (stateJisEsc == FEData.JS.CNTJ) { if (countJapaneseEsc != byte.MaxValue) ++countJapaneseEsc; } else if (stateJisEsc == FEData.JS.CNTK && countKoreanDesignator != byte.MaxValue) ++countKoreanDesignator; stateJisEsc = FEData.JS.S0; }
// Note: this type is marked as 'beforefieldinit'. static FEData() { FEData.ST[,] array = new FEData.ST[2, 20]; array[0, 3] = FEData.ST.ERR; array[0, 4] = FEData.ST.ST1; array[0, 5] = FEData.ST.ST1; array[0, 6] = FEData.ST.ST1; array[0, 7] = FEData.ST.ST1; array[0, 8] = FEData.ST.ERR; array[0, 12] = FEData.ST.ST1; array[0, 13] = FEData.ST.ST1; array[0, 14] = FEData.ST.ST1; array[0, 15] = FEData.ST.ST1; array[0, 16] = FEData.ST.ST1; array[0, 17] = FEData.ST.ERR; array[0, 18] = FEData.ST.ERR; array[1, 0] = FEData.ST.ERR; array[1, 1] = FEData.ST.ERR; array[1, 17] = FEData.ST.ERR; array[1, 18] = FEData.ST.ERR; array[1, 19] = FEData.ST.ERR; FEData.SJisNextState = array; FEData.ST[,] array2 = new FEData.ST[4, 20]; array2[0, 3] = FEData.ST.ERR; array2[0, 4] = FEData.ST.ERR; array2[0, 5] = FEData.ST.ST2; array2[0, 6] = FEData.ST.ST3; array2[0, 7] = FEData.ST.ERR; array2[0, 8] = FEData.ST.ERR; array2[0, 9] = FEData.ST.ST1; array2[0, 10] = FEData.ST.ST1; array2[0, 11] = FEData.ST.ST1; array2[0, 12] = FEData.ST.ST1; array2[0, 13] = FEData.ST.ST1; array2[0, 14] = FEData.ST.ST1; array2[0, 15] = FEData.ST.ST1; array2[0, 16] = FEData.ST.ST1; array2[0, 17] = FEData.ST.ST1; array2[0, 18] = FEData.ST.ERR; array2[1, 0] = FEData.ST.ERR; array2[1, 1] = FEData.ST.ERR; array2[1, 2] = FEData.ST.ERR; array2[1, 3] = FEData.ST.ERR; array2[1, 4] = FEData.ST.ERR; array2[1, 5] = FEData.ST.ERR; array2[1, 6] = FEData.ST.ERR; array2[1, 7] = FEData.ST.ERR; array2[1, 8] = FEData.ST.ERR; array2[1, 18] = FEData.ST.ERR; array2[1, 19] = FEData.ST.ERR; array2[2, 0] = FEData.ST.ERR; array2[2, 1] = FEData.ST.ERR; array2[2, 2] = FEData.ST.ERR; array2[2, 3] = FEData.ST.ERR; array2[2, 4] = FEData.ST.ERR; array2[2, 5] = FEData.ST.ERR; array2[2, 6] = FEData.ST.ERR; array2[2, 7] = FEData.ST.ERR; array2[2, 8] = FEData.ST.ERR; array2[2, 12] = FEData.ST.ERR; array2[2, 13] = FEData.ST.ERR; array2[2, 14] = FEData.ST.ERR; array2[2, 15] = FEData.ST.ERR; array2[2, 16] = FEData.ST.ERR; array2[2, 17] = FEData.ST.ERR; array2[2, 18] = FEData.ST.ERR; array2[2, 19] = FEData.ST.ERR; array2[3, 0] = FEData.ST.ERR; array2[3, 1] = FEData.ST.ERR; array2[3, 2] = FEData.ST.ERR; array2[3, 3] = FEData.ST.ERR; array2[3, 4] = FEData.ST.ERR; array2[3, 5] = FEData.ST.ERR; array2[3, 6] = FEData.ST.ERR; array2[3, 7] = FEData.ST.ERR; array2[3, 8] = FEData.ST.ERR; array2[3, 9] = FEData.ST.ST1; array2[3, 10] = FEData.ST.ST1; array2[3, 11] = FEData.ST.ST1; array2[3, 12] = FEData.ST.ST1; array2[3, 13] = FEData.ST.ST1; array2[3, 14] = FEData.ST.ST1; array2[3, 15] = FEData.ST.ST1; array2[3, 16] = FEData.ST.ST1; array2[3, 17] = FEData.ST.ST1; array2[3, 18] = FEData.ST.ERR; array2[3, 19] = FEData.ST.ERR; FEData.EucJpNextState = array2; FEData.ST[,] array3 = new FEData.ST[2, 20]; array3[0, 3] = FEData.ST.ERR; array3[0, 4] = FEData.ST.ST1; array3[0, 5] = FEData.ST.ST1; array3[0, 6] = FEData.ST.ST1; array3[0, 7] = FEData.ST.ST1; array3[0, 8] = FEData.ST.ST1; array3[0, 9] = FEData.ST.ST1; array3[0, 10] = FEData.ST.ST1; array3[0, 11] = FEData.ST.ST1; array3[0, 12] = FEData.ST.ST1; array3[0, 13] = FEData.ST.ST1; array3[0, 14] = FEData.ST.ST1; array3[0, 15] = FEData.ST.ST1; array3[0, 16] = FEData.ST.ST1; array3[0, 17] = FEData.ST.ST1; array3[0, 18] = FEData.ST.ERR; array3[1, 0] = FEData.ST.ERR; array3[1, 1] = FEData.ST.ERR; array3[1, 18] = FEData.ST.ERR; array3[1, 19] = FEData.ST.ERR; FEData.GbkWanNextState = array3; FEData.ST[,] array4 = new FEData.ST[2, 20]; array4[0, 3] = FEData.ST.ERR; array4[0, 4] = FEData.ST.ERR; array4[0, 5] = FEData.ST.ERR; array4[0, 6] = FEData.ST.ERR; array4[0, 7] = FEData.ST.ERR; array4[0, 8] = FEData.ST.ERR; array4[0, 9] = FEData.ST.ST1; array4[0, 10] = FEData.ST.ST1; array4[0, 11] = FEData.ST.ST1; array4[0, 12] = FEData.ST.ST1; array4[0, 13] = FEData.ST.ST1; array4[0, 14] = FEData.ST.ST1; array4[0, 15] = FEData.ST.ST1; array4[0, 16] = FEData.ST.ST1; array4[0, 17] = FEData.ST.ST1; array4[0, 18] = FEData.ST.ERR; array4[1, 0] = FEData.ST.ERR; array4[1, 1] = FEData.ST.ERR; array4[1, 2] = FEData.ST.ERR; array4[1, 3] = FEData.ST.ERR; array4[1, 4] = FEData.ST.ERR; array4[1, 5] = FEData.ST.ERR; array4[1, 6] = FEData.ST.ERR; array4[1, 7] = FEData.ST.ERR; array4[1, 8] = FEData.ST.ERR; array4[1, 18] = FEData.ST.ERR; array4[1, 19] = FEData.ST.ERR; FEData.EucKrCnNextState = array4; FEData.ST[,] array5 = new FEData.ST[2, 20]; array5[0, 3] = FEData.ST.ERR; array5[0, 4] = FEData.ST.ST1; array5[0, 5] = FEData.ST.ST1; array5[0, 6] = FEData.ST.ST1; array5[0, 7] = FEData.ST.ST1; array5[0, 8] = FEData.ST.ST1; array5[0, 9] = FEData.ST.ST1; array5[0, 10] = FEData.ST.ST1; array5[0, 11] = FEData.ST.ST1; array5[0, 12] = FEData.ST.ST1; array5[0, 13] = FEData.ST.ST1; array5[0, 14] = FEData.ST.ST1; array5[0, 15] = FEData.ST.ST1; array5[0, 16] = FEData.ST.ST1; array5[0, 17] = FEData.ST.ST1; array5[0, 18] = FEData.ST.ERR; array5[1, 0] = FEData.ST.ERR; array5[1, 1] = FEData.ST.ERR; array5[1, 3] = FEData.ST.ERR; array5[1, 4] = FEData.ST.ERR; array5[1, 5] = FEData.ST.ERR; array5[1, 6] = FEData.ST.ERR; array5[1, 7] = FEData.ST.ERR; array5[1, 8] = FEData.ST.ERR; array5[1, 18] = FEData.ST.ERR; array5[1, 19] = FEData.ST.ERR; FEData.Big5NextState = array5; FEData.ST[,] array6 = new FEData.ST[6, 20]; array6[0, 3] = FEData.ST.ERR; array6[0, 4] = FEData.ST.ERR; array6[0, 5] = FEData.ST.ERR; array6[0, 6] = FEData.ST.ERR; array6[0, 7] = FEData.ST.ERR; array6[0, 8] = FEData.ST.ERR; array6[0, 9] = FEData.ST.ERR; array6[0, 10] = FEData.ST.ERR; array6[0, 11] = FEData.ST.ST1; array6[0, 12] = FEData.ST.ST4; array6[0, 13] = FEData.ST.ST2; array6[0, 14] = FEData.ST.ST5; array6[0, 15] = FEData.ST.ST3; array6[0, 16] = FEData.ST.ERR; array6[0, 17] = FEData.ST.ERR; array6[0, 18] = FEData.ST.ERR; array6[1, 0] = FEData.ST.ERR; array6[1, 1] = FEData.ST.ERR; array6[1, 2] = FEData.ST.ERR; array6[1, 10] = FEData.ST.ERR; array6[1, 11] = FEData.ST.ERR; array6[1, 12] = FEData.ST.ERR; array6[1, 13] = FEData.ST.ERR; array6[1, 14] = FEData.ST.ERR; array6[1, 15] = FEData.ST.ERR; array6[1, 16] = FEData.ST.ERR; array6[1, 17] = FEData.ST.ERR; array6[1, 18] = FEData.ST.ERR; array6[1, 19] = FEData.ST.ERR; array6[2, 0] = FEData.ST.ERR; array6[2, 1] = FEData.ST.ERR; array6[2, 2] = FEData.ST.ERR; array6[2, 3] = FEData.ST.ST1; array6[2, 4] = FEData.ST.ST1; array6[2, 5] = FEData.ST.ST1; array6[2, 6] = FEData.ST.ST1; array6[2, 7] = FEData.ST.ST1; array6[2, 8] = FEData.ST.ST1; array6[2, 9] = FEData.ST.ST1; array6[2, 10] = FEData.ST.ERR; array6[2, 11] = FEData.ST.ERR; array6[2, 12] = FEData.ST.ERR; array6[2, 13] = FEData.ST.ERR; array6[2, 14] = FEData.ST.ERR; array6[2, 15] = FEData.ST.ERR; array6[2, 16] = FEData.ST.ERR; array6[2, 17] = FEData.ST.ERR; array6[2, 18] = FEData.ST.ERR; array6[2, 19] = FEData.ST.ERR; array6[3, 0] = FEData.ST.ERR; array6[3, 1] = FEData.ST.ERR; array6[3, 2] = FEData.ST.ERR; array6[3, 3] = FEData.ST.ST2; array6[3, 4] = FEData.ST.ST2; array6[3, 5] = FEData.ST.ST2; array6[3, 6] = FEData.ST.ST2; array6[3, 7] = FEData.ST.ST2; array6[3, 8] = FEData.ST.ST2; array6[3, 9] = FEData.ST.ST2; array6[3, 10] = FEData.ST.ERR; array6[3, 11] = FEData.ST.ERR; array6[3, 12] = FEData.ST.ERR; array6[3, 13] = FEData.ST.ERR; array6[3, 14] = FEData.ST.ERR; array6[3, 15] = FEData.ST.ERR; array6[3, 16] = FEData.ST.ERR; array6[3, 17] = FEData.ST.ERR; array6[3, 18] = FEData.ST.ERR; array6[3, 19] = FEData.ST.ERR; array6[4, 0] = FEData.ST.ERR; array6[4, 1] = FEData.ST.ERR; array6[4, 2] = FEData.ST.ERR; array6[4, 3] = FEData.ST.ERR; array6[4, 4] = FEData.ST.ERR; array6[4, 5] = FEData.ST.ERR; array6[4, 6] = FEData.ST.ERR; array6[4, 7] = FEData.ST.ERR; array6[4, 8] = FEData.ST.ST1; array6[4, 9] = FEData.ST.ST1; array6[4, 10] = FEData.ST.ERR; array6[4, 11] = FEData.ST.ERR; array6[4, 12] = FEData.ST.ERR; array6[4, 13] = FEData.ST.ERR; array6[4, 14] = FEData.ST.ERR; array6[4, 15] = FEData.ST.ERR; array6[4, 16] = FEData.ST.ERR; array6[4, 17] = FEData.ST.ERR; array6[4, 18] = FEData.ST.ERR; array6[4, 19] = FEData.ST.ERR; array6[5, 0] = FEData.ST.ERR; array6[5, 1] = FEData.ST.ERR; array6[5, 2] = FEData.ST.ERR; array6[5, 3] = FEData.ST.ERR; array6[5, 4] = FEData.ST.ERR; array6[5, 5] = FEData.ST.ERR; array6[5, 6] = FEData.ST.ERR; array6[5, 7] = FEData.ST.ST2; array6[5, 8] = FEData.ST.ST2; array6[5, 9] = FEData.ST.ST2; array6[5, 10] = FEData.ST.ERR; array6[5, 11] = FEData.ST.ERR; array6[5, 12] = FEData.ST.ERR; array6[5, 13] = FEData.ST.ERR; array6[5, 14] = FEData.ST.ERR; array6[5, 15] = FEData.ST.ERR; array6[5, 16] = FEData.ST.ERR; array6[5, 17] = FEData.ST.ERR; array6[5, 18] = FEData.ST.ERR; array6[5, 19] = FEData.ST.ERR; FEData.Utf8NextState = array6; FEData.JC[] array7 = new FEData.JC[128]; array7[14] = FEData.JC.so; array7[15] = FEData.JC.si; array7[27] = FEData.JC.esc; array7[36] = FEData.JC.dlr; array7[38] = FEData.JC.amp; array7[40] = FEData.JC.opr; array7[41] = FEData.JC.cpr; array7[64] = FEData.JC.at; array7[66] = FEData.JC.tkB; array7[67] = FEData.JC.tkC; array7[68] = FEData.JC.tkD; array7[72] = FEData.JC.tkH; array7[73] = FEData.JC.tkI; array7[74] = FEData.JC.tkJ; FEData.JisCharClass = array7; FEData.JS[,] array8 = new FEData.JS[7, 15]; array8[0, 1] = FEData.JS.CNTA; array8[0, 3] = FEData.JS.S1; array8[1, 4] = FEData.JS.S2; array8[1, 5] = FEData.JS.S6; array8[1, 6] = FEData.JS.S5; array8[2, 6] = FEData.JS.S3; array8[2, 7] = FEData.JS.S4; array8[2, 8] = FEData.JS.CNTJ; array8[2, 9] = FEData.JS.CNTJ; array8[3, 11] = FEData.JS.CNTJ; array8[4, 10] = FEData.JS.CNTK; array8[5, 9] = FEData.JS.CNTJ; array8[5, 12] = FEData.JS.CNTJ; array8[5, 13] = FEData.JS.CNTJ; array8[5, 14] = FEData.JS.CNTJ; array8[6, 8] = FEData.JS.CNTJ; FEData.JisEscNextState = array8; }
public FeInboundCharsetDetector(int defaultCodePage, bool strongDefault, bool enableIsoDetection, bool enableUtf8Detection, bool enableDbcsDetection) { this.defaultCodePage = (ushort) defaultCodePage; this.strongDefault = strongDefault; stateIso = FEData.ST.ERR; stateUtf8 = FEData.ST.ERR; stateGbkWan = FEData.ST.ERR; stateEucKrCn = FEData.ST.ERR; stateEucJp = FEData.ST.ERR; stateSJis = FEData.ST.ERR; stateBig5 = FEData.ST.ERR; stateJisEsc = FEData.JS.S0; countJapaneseEsc = 0; countKoreanDesignator = 0; countSo = 0; count8bit = 0; if (enableDbcsDetection) { switch (defaultCodePage) { case 52936: case 54936: case 51936: case 50227: case 20936: case 936: stateGbkWan = FEData.ST.ST0; stateEucKrCn = FEData.ST.ST0; break; case 51949: case 20949: case 50225: case 949: case 1361: stateGbkWan = FEData.ST.ST0; stateEucKrCn = FEData.ST.ST0; break; case 50220: case 50221: case 50222: case 51932: case 20932: case 932: stateSJis = FEData.ST.ST0; stateEucJp = FEData.ST.ST0; break; case 950: stateBig5 = FEData.ST.ST0; stateGbkWan = FEData.ST.ST0; break; case 0: stateSJis = FEData.ST.ST0; stateEucJp = FEData.ST.ST0; stateGbkWan = FEData.ST.ST0; stateEucKrCn = FEData.ST.ST0; stateBig5 = FEData.ST.ST0; break; } } if (enableIsoDetection) stateIso = FEData.ST.ST0; if (!enableUtf8Detection) return; stateUtf8 = FEData.ST.ST0; }