ISCIIEncoding
using System.Runtime.Serialization;
namespace System.Text
{
internal class ISCIIEncoding : EncodingNLS, ISerializable
{
internal 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 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 CodeDefault = 0;
private const int CodeRoman = 1;
private const int CodeDevanagari = 2;
private const int CodeBengali = 3;
private const int CodeTamil = 4;
private const int CodeTelugu = 5;
private const int CodeAssamese = 6;
private const int CodeOriya = 7;
private const int CodeKannada = 8;
private const int CodeMalayalam = 9;
private const int CodeGujarati = 10;
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 int _defaultCodePage;
private static 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 byte[] s_SecondIndicByte = new byte[4] {
0,
233,
184,
191
};
private static int[] s_IndicMappingIndex = new int[12] {
-1,
-1,
0,
1,
2,
3,
1,
4,
5,
6,
7,
8
};
private static 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();
}
}
}