ISCIIEncoding
using System.Runtime.Serialization;
namespace System.Text
{
internal sealed class ISCIIEncoding : EncodingNLS, ISerializable
{
internal sealed class ISCIIEncoder : System.Text.EncoderNLS
{
internal int defaultCodePage;
internal int currentCodePage;
internal bool bLastVirama;
internal override bool HasState {
get {
if (charLeftOver == ' ')
return currentCodePage != defaultCodePage;
return true;
}
}
public ISCIIEncoder(EncodingNLS encoding)
: base(encoding)
{
currentCodePage = (defaultCodePage = encoding.CodePage - 57000);
}
public override void Reset()
{
bLastVirama = false;
charLeftOver = ' ';
if (m_fallbackBuffer != null)
m_fallbackBuffer.Reset();
}
}
internal sealed class ISCIIDecoder : System.Text.DecoderNLS
{
internal int currentCodePage;
internal bool bLastATR;
internal bool bLastVirama;
internal bool bLastDevenagariStressAbbr;
internal char cLastCharForNextNukta;
internal char cLastCharForNoNextNukta;
internal override bool HasState {
get {
if (cLastCharForNextNukta == ' ' && cLastCharForNoNextNukta == ' ' && !bLastATR)
return bLastDevenagariStressAbbr;
return true;
}
}
public ISCIIDecoder(EncodingNLS encoding)
: base(encoding)
{
currentCodePage = encoding.CodePage - 57000;
}
public override void Reset()
{
bLastATR = false;
bLastVirama = false;
bLastDevenagariStressAbbr = false;
cLastCharForNextNukta = ' ';
cLastCharForNoNextNukta = ' ';
if (m_fallbackBuffer != null)
m_fallbackBuffer.Reset();
}
}
private const int CodeDevanagari = 2;
private const int CodePunjabi = 11;
private const int MultiByteBegin = 160;
private const int IndicBegin = 2305;
private const int IndicEnd = 3439;
private const byte ControlATR = 239;
private const byte ControlCodePageStart = 64;
private const byte Virama = 232;
private const byte Nukta = 233;
private const byte DevenagariExt = 240;
private const char ZWNJ = 'โ';
private const char ZWJ = 'โ';
private readonly int _defaultCodePage;
private static readonly int[] s_UnicodeToIndicChar = new int[1135] {
673,
674,
675,
0,
676,
677,
678,
679,
680,
681,
682,
4774,
686,
683,
684,
685,
690,
687,
688,
689,
691,
692,
693,
694,
695,
696,
697,
698,
699,
700,
701,
702,
703,
704,
705,
706,
707,
708,
709,
710,
711,
712,
713,
714,
715,
716,
717,
719,
720,
721,
722,
723,
724,
725,
726,
727,
728,
0,
0,
745,
4842,
730,
731,
732,
733,
734,
735,
4831,
739,
736,
737,
738,
743,
740,
741,
742,
744,
0,
0,
4769,
0,
8944,
0,
0,
0,
0,
0,
4787,
4788,
4789,
4794,
4799,
4800,
4809,
718,
4778,
4775,
4827,
4828,
746,
0,
753,
754,
755,
756,
757,
758,
759,
760,
761,
762,
13040,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
929,
930,
931,
0,
932,
933,
934,
935,
936,
937,
938,
5030,
0,
0,
939,
941,
0,
0,
943,
945,
947,
948,
949,
950,
951,
952,
953,
954,
955,
956,
957,
958,
959,
960,
961,
962,
963,
964,
965,
966,
0,
968,
969,
970,
971,
972,
973,
975,
0,
977,
0,
0,
0,
981,
982,
983,
984,
0,
0,
1001,
0,
986,
987,
988,
989,
990,
991,
5087,
0,
0,
992,
994,
0,
0,
996,
998,
1000,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
5055,
5056,
0,
974,
5034,
5031,
5083,
5084,
0,
0,
1009,
1010,
1011,
1012,
1013,
1014,
1015,
1016,
1017,
1018,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2978,
0,
0,
2980,
2981,
2982,
2983,
2984,
2985,
0,
0,
0,
0,
2987,
2989,
0,
0,
2992,
2993,
2995,
2996,
2997,
2998,
2999,
3000,
3001,
3002,
3003,
3004,
3005,
3006,
3007,
3008,
3009,
3010,
3011,
3012,
3013,
3014,
0,
3016,
3017,
3018,
3019,
3020,
3021,
3023,
0,
3025,
3026,
0,
3028,
3029,
0,
3031,
3032,
0,
0,
3049,
0,
3034,
3035,
3036,
3037,
3038,
0,
0,
0,
0,
3040,
3042,
0,
0,
3044,
3046,
3048,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
7092,
7093,
7098,
7104,
0,
7113,
0,
0,
0,
0,
0,
0,
0,
3057,
3058,
3059,
3060,
3061,
3062,
3063,
3064,
3065,
3066,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2721,
2722,
2723,
0,
2724,
2725,
2726,
2727,
2728,
2729,
2730,
0,
2734,
0,
2731,
2733,
2738,
0,
2736,
2737,
2739,
2740,
2741,
2742,
2743,
2744,
2745,
2746,
2747,
2748,
2749,
2750,
2751,
2752,
2753,
2754,
2755,
2756,
2757,
2758,
0,
2760,
2761,
2762,
2763,
2764,
2765,
2767,
0,
2769,
2770,
0,
2772,
2773,
2774,
2775,
2776,
0,
0,
2793,
6890,
2778,
2779,
2780,
2781,
2782,
2783,
6879,
2787,
0,
2784,
2786,
2791,
0,
2788,
2790,
2792,
0,
0,
6817,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
6826,
0,
0,
0,
0,
0,
2801,
2802,
2803,
2804,
2805,
2806,
2807,
2808,
2809,
2810,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1953,
1954,
1955,
0,
1956,
1957,
1958,
1959,
1960,
1961,
1962,
6054,
0,
0,
1963,
1965,
0,
0,
1968,
1969,
1971,
1972,
1973,
1974,
1975,
1976,
1977,
1978,
1979,
1980,
1981,
1982,
1983,
1984,
1985,
1986,
1987,
1988,
1989,
1990,
0,
1992,
1993,
1994,
1995,
1996,
1997,
1999,
0,
2001,
2002,
0,
0,
2005,
2006,
2007,
2008,
0,
0,
2025,
6122,
2010,
2011,
2012,
2013,
2014,
2015,
0,
0,
0,
2016,
2018,
0,
0,
2020,
2022,
2024,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
6079,
6080,
0,
1998,
6058,
6055,
0,
0,
0,
0,
2033,
2034,
2035,
2036,
2037,
2038,
2039,
2040,
2041,
2042,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1186,
1187,
0,
1188,
1189,
1190,
1191,
1192,
1193,
0,
0,
0,
0,
1195,
1197,
0,
1199,
1200,
1201,
1203,
0,
0,
0,
1207,
1208,
0,
1210,
0,
1212,
1213,
0,
0,
0,
1217,
1218,
0,
0,
0,
1222,
1223,
1224,
0,
0,
0,
1228,
1229,
1231,
1232,
1233,
1234,
1235,
1236,
0,
1237,
1239,
1240,
0,
0,
0,
0,
1242,
1243,
1244,
1245,
1246,
0,
0,
0,
1248,
1249,
1250,
0,
1252,
1253,
1254,
1256,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1266,
1267,
1268,
1269,
1270,
1271,
1272,
1273,
1274,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
1441,
1442,
1443,
0,
1444,
1445,
1446,
1447,
1448,
1449,
1450,
5542,
0,
1451,
1452,
1453,
0,
1455,
1456,
1457,
1459,
1460,
1461,
1462,
1463,
1464,
1465,
1466,
1467,
1468,
1469,
1470,
1471,
1472,
1473,
1474,
1475,
1476,
1477,
1478,
0,
1480,
1481,
1482,
1483,
1484,
1485,
1487,
1488,
1489,
1490,
0,
1492,
1493,
1494,
1495,
1496,
0,
0,
0,
0,
1498,
1499,
1500,
1501,
1502,
1503,
5599,
0,
1504,
1505,
1506,
0,
1508,
1509,
1510,
1512,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
5546,
5543,
0,
0,
0,
0,
1521,
1522,
1523,
1524,
1525,
1526,
1527,
1528,
1529,
1530,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2210,
2211,
0,
2212,
2213,
2214,
2215,
2216,
2217,
2218,
6310,
0,
2219,
2220,
2221,
0,
2223,
2224,
2225,
2227,
2228,
2229,
2230,
2231,
2232,
2233,
2234,
2235,
2236,
2237,
2238,
2239,
2240,
2241,
2242,
2243,
2244,
2245,
2246,
0,
2248,
2249,
2250,
2251,
2252,
2253,
2255,
2256,
2257,
2258,
0,
2260,
2261,
2262,
2263,
2264,
0,
0,
0,
0,
2266,
2267,
2268,
2269,
2270,
2271,
6367,
0,
2272,
2273,
2274,
0,
2276,
2277,
2278,
2280,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
6345,
0,
6314,
6311,
0,
0,
0,
0,
2289,
2290,
2291,
2292,
2293,
2294,
2295,
2296,
2297,
2298,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
2466,
2467,
0,
2468,
2469,
2470,
2471,
2472,
2473,
2474,
6566,
0,
2475,
2476,
2477,
0,
2479,
2480,
2481,
2483,
2484,
2485,
2486,
2487,
2488,
2489,
2490,
2491,
2492,
2493,
2494,
2495,
2496,
2497,
2498,
2499,
2500,
2501,
2502,
0,
2504,
2505,
2506,
2507,
2508,
2509,
2511,
2512,
2513,
2514,
2515,
2516,
2517,
2518,
2519,
2520,
0,
0,
0,
0,
2522,
2523,
2524,
2525,
2526,
2527,
0,
0,
2528,
2529,
2530,
0,
2532,
2533,
2534,
2536,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
6570,
6567,
0,
0,
0,
0,
2545,
2546,
2547,
2548,
2549,
2550,
2551,
2552,
2553,
2554
};
private static readonly byte[] s_SecondIndicByte = new byte[4] {
0,
233,
184,
191
};
private static readonly int[] s_IndicMappingIndex = new int[12] {
-1,
-1,
0,
1,
2,
3,
1,
4,
5,
6,
7,
8
};
private static readonly char[,,] s_IndicMapping = new char[9, 2, 96] {
{
{
' ',
'เค',
'เค',
'เค',
'เค
',
'เค',
'เค',
'เค',
'เค',
'เค',
'เค',
'เค',
'เค',
'เค',
'เค',
'เค',
'เค',
'เค',
'เค',
'เค',
'เค',
'เค',
'เค',
'เค',
'เค',
'เค',
'เค',
'เค',
'เค',
'เค',
'เค ',
'เคก',
'เคข',
'เคฃ',
'เคค',
'เคฅ',
'เคฆ',
'เคง',
'เคจ',
'เคฉ',
'เคช',
'เคซ',
'เคฌ',
'เคญ',
'เคฎ',
'เคฏ',
'เฅ',
'เคฐ',
'เคฑ',
'เคฒ',
'เคณ',
'เคด',
'เคต',
'เคถ',
'เคท',
'เคธ',
'เคน',
' ',
'เคพ',
'เคฟ',
'เฅ',
'เฅ',
'เฅ',
'เฅ',
'เฅ',
'เฅ',
'เฅ',
'เฅ
',
'เฅ',
'เฅ',
'เฅ',
'เฅ',
'เฅ',
'เคผ',
'เฅค',
' ',
' ',
' ',
' ',
' ',
' ',
'เฅฆ',
'เฅง',
'เฅจ',
'เฅฉ',
'เฅช',
'เฅซ',
'เฅฌ',
'เฅญ',
'เฅฎ',
'เฅฏ',
' ',
' ',
' ',
' ',
' '
},
{
' ',
'เฅ',
' ',
' ',
' ',
' ',
'เค',
'เฅก',
' ',
' ',
'เฅ ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
'เฅ',
'เฅ',
'เฅ',
' ',
' ',
' ',
' ',
'เฅ',
' ',
' ',
' ',
' ',
'เฅ',
'เฅ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
'เฅ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
'เฅข',
'เฅฃ',
' ',
' ',
'เฅ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
'โ',
'โ',
'เคฝ',
' ',
' ',
' ',
' ',
' ',
'๋ขฟ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' '
}
},
{
{
' ',
'เฆ',
'เฆ',
'เฆ',
'เฆ
',
'เฆ',
'เฆ',
'เฆ',
'เฆ',
'เฆ',
'เฆ',
'เฆ',
'เฆ',
'เฆ',
'เฆ',
'เฆ',
'เฆ',
'เฆ',
'เฆ',
'เฆ',
'เฆ',
'เฆ',
'เฆ',
'เฆ',
'เฆ',
'เฆ',
'เฆ',
'เฆ',
'เฆ',
'เฆ',
'เฆ ',
'เฆก',
'เฆข',
'เฆฃ',
'เฆค',
'เฆฅ',
'เฆฆ',
'เฆง',
'เฆจ',
'เฆจ',
'เฆช',
'เฆซ',
'เฆฌ',
'เฆญ',
'เฆฎ',
'เฆฏ',
'เง',
'เฆฐ',
'เฆฐ',
'เฆฒ',
'เฆฒ',
'เฆฒ',
'เฆฌ',
'เฆถ',
'เฆท',
'เฆธ',
'เฆน',
' ',
'เฆพ',
'เฆฟ',
'เง',
'เง',
'เง',
'เง',
'เง',
'เง',
'เง',
'เง',
'เง',
'เง',
'เง',
'เง',
'เง',
'เฆผ',
'.',
' ',
' ',
' ',
' ',
' ',
' ',
'เงฆ',
'เงง',
'เงจ',
'เงฉ',
'เงช',
'เงซ',
'เงฌ',
'เงญ',
'เงฎ',
'เงฏ',
' ',
' ',
' ',
' ',
' '
},
{
' ',
' ',
' ',
' ',
' ',
' ',
'เฆ',
'เงก',
' ',
' ',
'เง ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
'เง',
'เง',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
'เงข',
'เงฃ',
' ',
' ',
'เง',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
'โ',
'โ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' '
}
},
{
{
' ',
' ',
'เฎ',
'เฎ',
'เฎ
',
'เฎ',
'เฎ',
'เฎ',
'เฎ',
'เฎ',
' ',
'เฎ',
'เฎ',
'เฎ',
'เฎ',
'เฎ',
'เฎ',
'เฎ',
'เฎ',
'เฎ',
'เฎ',
'เฎ',
'เฎ',
'เฎ',
'เฎ',
'เฎ',
'เฎ',
'เฎ',
'เฎ',
'เฎ',
'เฎ',
'เฎ',
'เฎ',
'เฎฃ',
'เฎค',
'เฎค',
'เฎค',
'เฎค',
'เฎจ',
'เฎฉ',
'เฎช',
'เฎช',
'เฎช',
'เฎช',
'เฎฎ',
'เฎฏ',
'เฎฏ',
'เฎฐ',
'เฎฑ',
'เฎฒ',
'เฎณ',
'เฎด',
'เฎต',
'เฎท',
'เฎท',
'เฎธ',
'เฎน',
' ',
'เฎพ',
'เฎฟ',
'เฏ',
'เฏ',
'เฏ',
' ',
'เฏ',
'เฏ',
'เฏ',
'เฏ',
'เฏ',
'เฏ',
'เฏ',
'เฏ',
'เฏ',
' ',
'.',
' ',
' ',
' ',
' ',
' ',
' ',
'0',
'เฏง',
'เฏจ',
'เฏฉ',
'เฏช',
'เฏซ',
'เฏฌ',
'เฏญ',
'เฏฎ',
'เฏฏ',
' ',
' ',
' ',
' ',
' '
},
{
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
'โ',
'โ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' '
}
},
{
{
' ',
'เฐ',
'เฐ',
'เฐ',
'เฐ
',
'เฐ',
'เฐ',
'เฐ',
'เฐ',
'เฐ',
'เฐ',
'เฐ',
'เฐ',
'เฐ',
'เฐ',
'เฐ',
'เฐ',
'เฐ',
'เฐ',
'เฐ',
'เฐ',
'เฐ',
'เฐ',
'เฐ',
'เฐ',
'เฐ',
'เฐ',
'เฐ',
'เฐ',
'เฐ',
'เฐ ',
'เฐก',
'เฐข',
'เฐฃ',
'เฐค',
'เฐฅ',
'เฐฆ',
'เฐง',
'เฐจ',
'เฐจ',
'เฐช',
'เฐซ',
'เฐฌ',
'เฐญ',
'เฐฎ',
'เฐฏ',
'เฐฏ',
'เฐฐ',
'เฐฑ',
'เฐฒ',
'เฐณ',
'เฐณ',
'เฐต',
'เฐถ',
'เฐท',
'เฐธ',
'เฐน',
' ',
'เฐพ',
'เฐฟ',
'เฑ',
'เฑ',
'เฑ',
'เฑ',
'เฑ',
'เฑ',
'เฑ',
'เฑ',
'เฑ',
'เฑ',
'เฑ',
'เฑ',
'เฑ',
' ',
'.',
' ',
' ',
' ',
' ',
' ',
' ',
'เฑฆ',
'เฑง',
'เฑจ',
'เฑฉ',
'เฑช',
'เฑซ',
'เฑฌ',
'เฑญ',
'เฑฎ',
'เฑฏ',
' ',
' ',
' ',
' ',
' '
},
{
' ',
' ',
' ',
' ',
' ',
' ',
'เฐ',
'เฑก',
' ',
' ',
'เฑ ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
'เฑ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
'โ',
'โ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' '
}
},
{
{
' ',
'เฌ',
'เฌ',
'เฌ',
'เฌ
',
'เฌ',
'เฌ',
'เฌ',
'เฌ',
'เฌ',
'เฌ',
'เฌ',
'เฌ',
'เฌ',
'เฌ',
'เฌ',
'เฌ',
'เฌ',
'เฌ',
'เฌ',
'เฌ',
'เฌ',
'เฌ',
'เฌ',
'เฌ',
'เฌ',
'เฌ',
'เฌ',
'เฌ',
'เฌ',
'เฌ ',
'เฌก',
'เฌข',
'เฌฃ',
'เฌค',
'เฌฅ',
'เฌฆ',
'เฌง',
'เฌจ',
'เฌจ',
'เฌช',
'เฌซ',
'เฌฌ',
'เฌญ',
'เฌฎ',
'เฌฏ',
'เญ',
'เฌฐ',
'เฌฐ',
'เฌฒ',
'เฌณ',
'เฌณ',
'เฌฌ',
'เฌถ',
'เฌท',
'เฌธ',
'เฌน',
' ',
'เฌพ',
'เฌฟ',
'เญ',
'เญ',
'เญ',
'เญ',
'เญ',
'เญ',
'เญ',
'เญ',
'เญ',
'เญ',
'เญ',
'เญ',
'เญ',
'เฌผ',
'.',
' ',
' ',
' ',
' ',
' ',
' ',
'เญฆ',
'เญง',
'เญจ',
'เญฉ',
'เญช',
'เญซ',
'เญฌ',
'เญญ',
'เญฎ',
'เญฏ',
' ',
' ',
' ',
' ',
' '
},
{
' ',
' ',
' ',
' ',
' ',
' ',
'เฐ',
'เฑก',
' ',
' ',
'เฑ ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
'เญ',
'เญ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
'เฑ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
'โ',
'โ',
'เฌฝ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' '
}
},
{
{
' ',
' ',
'เฒ',
'เฒ',
'เฒ
',
'เฒ',
'เฒ',
'เฒ',
'เฒ',
'เฒ',
'เฒ',
'เฒ',
'เฒ',
'เฒ',
'เฒ',
'เฒ',
'เฒ',
'เฒ',
'เฒ',
'เฒ',
'เฒ',
'เฒ',
'เฒ',
'เฒ',
'เฒ',
'เฒ',
'เฒ',
'เฒ',
'เฒ',
'เฒ',
'เฒ ',
'เฒก',
'เฒข',
'เฒฃ',
'เฒค',
'เฒฅ',
'เฒฆ',
'เฒง',
'เฒจ',
'เฒจ',
'เฒช',
'เฒซ',
'เฒฌ',
'เฒญ',
'เฒฎ',
'เฒฏ',
'เฒฏ',
'เฒฐ',
'เฒฑ',
'เฒฒ',
'เฒณ',
'เฒณ',
'เฒต',
'เฒถ',
'เฒท',
'เฒธ',
'เฒน',
' ',
'เฒพ',
'เฒฟ',
'เณ',
'เณ',
'เณ',
'เณ',
'เณ',
'เณ',
'เณ',
'เณ',
'เณ',
'เณ',
'เณ',
'เณ',
'เณ',
' ',
'.',
' ',
' ',
' ',
' ',
' ',
' ',
'เณฆ',
'เณง',
'เณจ',
'เณฉ',
'เณช',
'เณซ',
'เณฌ',
'เณญ',
'เณฎ',
'เณฏ',
' ',
' ',
' ',
' ',
' '
},
{
' ',
' ',
' ',
' ',
' ',
' ',
'เฒ',
'เณก',
' ',
' ',
'เณ ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
'เณ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
'เณ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
'โ',
'โ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' '
}
},
{
{
' ',
' ',
'เด',
'เด',
'เด
',
'เด',
'เด',
'เด',
'เด',
'เด',
'เด',
'เด',
'เด',
'เด',
'เด',
'เด',
'เด',
'เด',
'เด',
'เด',
'เด',
'เด',
'เด',
'เด',
'เด',
'เด',
'เด',
'เด',
'เด',
'เด',
'เด ',
'เดก',
'เดข',
'เดฃ',
'เดค',
'เดฅ',
'เดฆ',
'เดง',
'เดจ',
'เดจ',
'เดช',
'เดซ',
'เดฌ',
'เดญ',
'เดฎ',
'เดฏ',
'เดฏ',
'เดฐ',
'เดฑ',
'เดฒ',
'เดณ',
'เดด',
'เดต',
'เดถ',
'เดท',
'เดธ',
'เดน',
' ',
'เดพ',
'เดฟ',
'เต',
'เต',
'เต',
'เต',
'เต',
'เต',
'เต',
'เต',
'เต',
'เต',
'เต',
'เต',
'เต',
' ',
'.',
' ',
' ',
' ',
' ',
' ',
' ',
'เตฆ',
'เตง',
'เตจ',
'เตฉ',
'เตช',
'เตซ',
'เตฌ',
'เตญ',
'เตฎ',
'เตฏ',
' ',
' ',
' ',
' ',
' '
},
{
' ',
' ',
' ',
' ',
' ',
' ',
'เด',
'เตก',
' ',
' ',
'เต ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
'โ',
'โ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' '
}
},
{
{
' ',
'เช',
'เช',
'เช',
'เช
',
'เช',
'เช',
'เช',
'เช',
'เช',
'เช',
'เช',
'เช',
'เช',
'เช',
'เช',
'เช',
'เช',
'เช',
'เช',
'เช',
'เช',
'เช',
'เช',
'เช',
'เช',
'เช',
'เช',
'เช',
'เช',
'เช ',
'เชก',
'เชข',
'เชฃ',
'เชค',
'เชฅ',
'เชฆ',
'เชง',
'เชจ',
'เชจ',
'เชช',
'เชซ',
'เชฌ',
'เชญ',
'เชฎ',
'เชฏ',
'เชฏ',
'เชฐ',
'เชฐ',
'เชฒ',
'เชณ',
'เชณ',
'เชต',
'เชถ',
'เชท',
'เชธ',
'เชน',
' ',
'เชพ',
'เชฟ',
'เซ',
'เซ',
'เซ',
'เซ',
'เซ',
'เซ',
'เซ',
'เซ
',
'เซ',
'เซ',
'เซ',
'เซ',
'เซ',
'เชผ',
'.',
' ',
' ',
' ',
' ',
' ',
' ',
'เซฆ',
'เซง',
'เซจ',
'เซฉ',
'เซช',
'เซซ',
'เซฌ',
'เซญ',
'เซฎ',
'เซฏ',
' ',
' ',
' ',
' ',
' '
},
{
' ',
'เซ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
'เซ ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
'เซ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
'โ',
'โ',
'เชฝ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' '
}
},
{
{
' ',
' ',
'เจ',
' ',
'เจ
',
'เจ',
'เจ',
'เจ',
'เจ',
'เจ',
' ',
'เจ',
'เจ',
'เจ',
'เจ',
'เจ',
'เจ',
'เจ',
'เจ',
'เจ',
'เจ',
'เจ',
'เจ',
'เจ',
'เจ',
'เจ',
'เจ',
'เจ',
'เจ',
'เจ',
'เจ ',
'เจก',
'เจข',
'เจฃ',
'เจค',
'เจฅ',
'เจฆ',
'เจง',
'เจจ',
'เจจ',
'เจช',
'เจซ',
'เจฌ',
'เจญ',
'เจฎ',
'เจฏ',
'เจฏ',
'เจฐ',
'เจฐ',
'เจฒ',
'เจณ',
'เจณ',
'เจต',
'เจถ',
'เจถ',
'เจธ',
'เจน',
' ',
'เจพ',
'เจฟ',
'เฉ',
'เฉ',
'เฉ',
' ',
'เฉ',
'เฉ',
'เฉ',
'เฉ',
'เฉ',
'เฉ',
'เฉ',
'เฉ',
'เฉ',
'เจผ',
'.',
' ',
' ',
' ',
' ',
' ',
' ',
'เฉฆ',
'เฉง',
'เฉจ',
'เฉฉ',
'เฉช',
'เฉซ',
'เฉฌ',
'เฉญ',
'เฉฎ',
'เฉฏ',
' ',
' ',
' ',
' ',
' '
},
{
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
'เฉ',
'เฉ',
' ',
' ',
' ',
' ',
'เฉ',
' ',
' ',
' ',
' ',
' ',
'เฉ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
'เฉ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
'โ',
'โ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' ',
' '
}
}
};
public ISCIIEncoding(int codePage)
: base(codePage)
{
_defaultCodePage = codePage - 57000;
if (_defaultCodePage < 2 || _defaultCodePage > 11)
throw new ArgumentException(System.SR.Format(System.SR.Argument_CodepageNotSupported, codePage), "codePage");
}
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
{
throw new PlatformNotSupportedException();
}
public override int GetMaxByteCount(int charCount)
{
if (charCount < 0)
throw new ArgumentOutOfRangeException("charCount", System.SR.ArgumentOutOfRange_NeedNonNegNum);
long num = (long)charCount + 1;
if (base.EncoderFallback.MaxCharCount > 1)
num *= base.EncoderFallback.MaxCharCount;
num *= 4;
if (num > 2147483647)
throw new ArgumentOutOfRangeException("charCount", System.SR.ArgumentOutOfRange_GetByteCountOverflow);
return (int)num;
}
public override int GetMaxCharCount(int byteCount)
{
if (byteCount < 0)
throw new ArgumentOutOfRangeException("byteCount", System.SR.ArgumentOutOfRange_NeedNonNegNum);
long num = (long)byteCount + 1;
if (base.DecoderFallback.MaxCharCount > 1)
num *= base.DecoderFallback.MaxCharCount;
if (num > 2147483647)
throw new ArgumentOutOfRangeException("byteCount", System.SR.ArgumentOutOfRange_GetCharCountOverflow);
return (int)num;
}
public unsafe override int GetByteCount(char* chars, int count, System.Text.EncoderNLS baseEncoder)
{
return GetBytes(chars, count, null, 0, baseEncoder);
}
public unsafe override int GetBytes(char* chars, int charCount, byte* bytes, int byteCount, System.Text.EncoderNLS baseEncoder)
{
ISCIIEncoder iSCIIEncoder = (ISCIIEncoder)baseEncoder;
EncodingByteBuffer encodingByteBuffer = new EncodingByteBuffer(this, iSCIIEncoder, bytes, byteCount, chars, charCount);
int num = _defaultCodePage;
bool flag = false;
if (iSCIIEncoder != null) {
num = iSCIIEncoder.currentCodePage;
flag = iSCIIEncoder.bLastVirama;
if (iSCIIEncoder.charLeftOver > ' ') {
encodingByteBuffer.Fallback(iSCIIEncoder.charLeftOver);
flag = false;
}
}
while (encodingByteBuffer.MoreData) {
char nextChar = encodingByteBuffer.GetNextChar();
if (nextChar < 'ย ') {
if (!encodingByteBuffer.AddByte((byte)nextChar))
break;
flag = false;
} else if (nextChar < 'เค' || nextChar > 'เตฏ') {
if (flag && (nextChar == 'โ' || nextChar == 'โ')) {
if (nextChar == 'โ') {
if (!encodingByteBuffer.AddByte(232))
break;
} else if (!encodingByteBuffer.AddByte(233)) {
break;
}
flag = false;
} else {
encodingByteBuffer.Fallback(nextChar);
flag = false;
}
} else {
int num2 = s_UnicodeToIndicChar[nextChar - 2305];
byte b = (byte)num2;
int num3 = 15 & (num2 >> 8);
int num4 = 61440 & num2;
if (num2 == 0) {
encodingByteBuffer.Fallback(nextChar);
flag = false;
} else {
if (num3 != num) {
if (!encodingByteBuffer.AddByte(239, (byte)(num3 | 64)))
break;
num = num3;
}
if (!encodingByteBuffer.AddByte(b, (num4 != 0) ? 1 : 0))
break;
flag = (b == 232);
if (num4 != 0 && !encodingByteBuffer.AddByte(s_SecondIndicByte[num4 >> 12]))
break;
}
}
}
if (num != _defaultCodePage && (iSCIIEncoder == null || iSCIIEncoder.MustFlush)) {
if (encodingByteBuffer.AddByte(239, (byte)(_defaultCodePage | 64)))
num = _defaultCodePage;
else
encodingByteBuffer.GetNextChar();
flag = false;
}
if (iSCIIEncoder != null && bytes != null) {
if (!encodingByteBuffer.fallbackBufferHelper.bUsedEncoder)
iSCIIEncoder.charLeftOver = ' ';
iSCIIEncoder.currentCodePage = num;
iSCIIEncoder.bLastVirama = flag;
iSCIIEncoder.m_charsUsed = encodingByteBuffer.CharsUsed;
}
return encodingByteBuffer.Count;
}
public unsafe override int GetCharCount(byte* bytes, int count, System.Text.DecoderNLS baseDecoder)
{
return GetChars(bytes, count, null, 0, baseDecoder);
}
public unsafe override int GetChars(byte* bytes, int byteCount, char* chars, int charCount, System.Text.DecoderNLS baseDecoder)
{
ISCIIDecoder iSCIIDecoder = (ISCIIDecoder)baseDecoder;
EncodingCharBuffer encodingCharBuffer = new EncodingCharBuffer(this, iSCIIDecoder, chars, charCount, bytes, byteCount);
int num = _defaultCodePage;
bool flag = false;
bool flag2 = false;
bool flag3 = false;
char c = ' ';
char c2 = ' ';
if (iSCIIDecoder != null) {
num = iSCIIDecoder.currentCodePage;
flag = iSCIIDecoder.bLastATR;
flag2 = iSCIIDecoder.bLastVirama;
flag3 = iSCIIDecoder.bLastDevenagariStressAbbr;
c = iSCIIDecoder.cLastCharForNextNukta;
c2 = iSCIIDecoder.cLastCharForNoNextNukta;
}
bool flag4 = flag2 | flag | flag3 | (c != ' ');
int num2 = -1;
if (num >= 2 && num <= 11)
num2 = s_IndicMappingIndex[num];
while (encodingCharBuffer.MoreData) {
byte nextByte = encodingCharBuffer.GetNextByte();
if (flag4) {
flag4 = false;
if (flag) {
if (nextByte >= 66 && nextByte <= 75) {
num = (nextByte & 15);
num2 = s_IndicMappingIndex[num];
flag = false;
} else {
switch (nextByte) {
case 64:
break;
case 65:
goto IL_00f3;
default:
goto IL_0116;
}
num = _defaultCodePage;
num2 = -1;
if (num >= 2 && num <= 11)
num2 = s_IndicMappingIndex[num];
flag = false;
}
continue;
}
if (flag2) {
switch (nextByte) {
case 232:
break;
case 233:
goto IL_015b;
default:
goto IL_0173;
}
if (!encodingCharBuffer.AddChar('โ'))
break;
flag2 = false;
continue;
}
if (flag3) {
switch (nextByte) {
case 184:
break;
case 191:
goto IL_01a9;
default:
goto IL_01c1;
}
if (!encodingCharBuffer.AddChar('เฅ'))
break;
flag3 = false;
continue;
}
if (nextByte == 233) {
if (!encodingCharBuffer.AddChar(c))
break;
c = (c2 = ' ');
continue;
}
if (!encodingCharBuffer.AddChar(c2))
break;
c = (c2 = ' ');
}
goto IL_020a;
IL_01a9:
if (!encodingCharBuffer.AddChar('เฅฐ'))
break;
flag3 = false;
continue;
IL_01c1:
if (!encodingCharBuffer.Fallback(240))
break;
flag3 = false;
goto IL_020a;
IL_0298:
char c3;
if (!encodingCharBuffer.AddChar(c3))
break;
flag2 = (flag4 = true);
continue;
IL_015b:
if (!encodingCharBuffer.AddChar('โ'))
break;
flag2 = false;
continue;
IL_02aa:
char c4;
if ((c4 & 61440) == 0) {
flag4 = true;
c = c4;
c2 = c3;
} else
flag3 = (flag4 = true);
continue;
IL_0173:
flag2 = false;
goto IL_020a;
IL_0116:
if (!encodingCharBuffer.Fallback(239))
break;
flag = false;
goto IL_020a;
IL_020a:
if (nextByte < 160) {
if (!encodingCharBuffer.AddChar((char)nextByte))
break;
} else if (nextByte == 239) {
flag = (flag4 = true);
} else {
c3 = s_IndicMapping[num2, 0, nextByte - 160];
c4 = s_IndicMapping[num2, 1, nextByte - 160];
if (c4 != 0) {
switch (nextByte) {
case 233:
break;
case 232:
goto IL_0298;
default:
goto IL_02aa;
}
}
if (c3 == ' ') {
if (!encodingCharBuffer.Fallback(nextByte))
break;
} else if (!encodingCharBuffer.AddChar(c3)) {
break;
}
}
continue;
IL_00f3:
num = _defaultCodePage;
num2 = -1;
if (num >= 2 && num <= 11)
num2 = s_IndicMappingIndex[num];
flag = false;
}
if (iSCIIDecoder == null || iSCIIDecoder.MustFlush) {
if (flag) {
if (encodingCharBuffer.Fallback(239))
flag = false;
else
encodingCharBuffer.GetNextByte();
} else if (flag3) {
if (encodingCharBuffer.Fallback(240))
flag3 = false;
else
encodingCharBuffer.GetNextByte();
} else if (c2 != 0) {
if (encodingCharBuffer.AddChar(c2))
c2 = (c = ' ');
else
encodingCharBuffer.GetNextByte();
}
}
if (iSCIIDecoder != null && chars != null) {
if ((!iSCIIDecoder.MustFlush || c2 != ' ') | flag | flag3) {
iSCIIDecoder.currentCodePage = num;
iSCIIDecoder.bLastVirama = flag2;
iSCIIDecoder.bLastATR = flag;
iSCIIDecoder.bLastDevenagariStressAbbr = flag3;
iSCIIDecoder.cLastCharForNextNukta = c;
iSCIIDecoder.cLastCharForNoNextNukta = c2;
} else {
iSCIIDecoder.currentCodePage = _defaultCodePage;
iSCIIDecoder.bLastVirama = false;
iSCIIDecoder.bLastATR = false;
iSCIIDecoder.bLastDevenagariStressAbbr = false;
iSCIIDecoder.cLastCharForNextNukta = ' ';
iSCIIDecoder.cLastCharForNoNextNukta = ' ';
}
iSCIIDecoder.m_bytesUsed = encodingCharBuffer.BytesUsed;
}
return encodingCharBuffer.Count;
}
public override Decoder GetDecoder()
{
return new ISCIIDecoder(this);
}
public override Encoder GetEncoder()
{
return new ISCIIEncoder(this);
}
public override int GetHashCode()
{
return _defaultCodePage + base.EncoderFallback.GetHashCode() + base.DecoderFallback.GetHashCode();
}
}
}