Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
EncoderLatin1BestFitFallbackBuffer.cs
Go to the documentation of this file.
1namespace System.Text;
2
4{
5 private char _cBestFit;
6
7 private int _iCount = -1;
8
9 private int _iSize;
10
11 private static readonly char[] s_arrayCharBestFit = new char[604]
12 {
13 'Ā', 'A', 'ā', 'a', 'Ă', 'A', 'ă', 'a', 'Ą', 'A',
14 'ą', 'a', 'Ć', 'C', 'ć', 'c', 'Ĉ', 'C', 'ĉ', 'c',
15 'Ċ', 'C', 'ċ', 'c', 'Č', 'C', 'č', 'c', 'Ď', 'D',
16 'ď', 'd', 'Đ', 'D', 'đ', 'd', 'Ē', 'E', 'ē', 'e',
17 'Ĕ', 'E', 'ĕ', 'e', 'Ė', 'E', 'ė', 'e', 'Ę', 'E',
18 'ę', 'e', 'Ě', 'E', 'ě', 'e', 'Ĝ', 'G', 'ĝ', 'g',
19 'Ğ', 'G', 'ğ', 'g', 'Ġ', 'G', 'ġ', 'g', 'Ģ', 'G',
20 'ģ', 'g', 'Ĥ', 'H', 'ĥ', 'h', 'Ħ', 'H', 'ħ', 'h',
21 'Ĩ', 'I', 'ĩ', 'i', 'Ī', 'I', 'ī', 'i', 'Ĭ', 'I',
22 'ĭ', 'i', 'Į', 'I', 'į', 'i', 'İ', 'I', 'ı', 'i',
23 'Ĵ', 'J', 'ĵ', 'j', 'Ķ', 'K', 'ķ', 'k', 'Ĺ', 'L',
24 'ĺ', 'l', 'Ļ', 'L', 'ļ', 'l', 'Ľ', 'L', 'ľ', 'l',
25 'Ł', 'L', 'ł', 'l', 'Ń', 'N', 'ń', 'n', 'Ņ', 'N',
26 'ņ', 'n', 'Ň', 'N', 'ň', 'n', 'Ō', 'O', 'ō', 'o',
27 'Ŏ', 'O', 'ŏ', 'o', 'Ő', 'O', 'ő', 'o', 'Œ', 'O',
28 'œ', 'o', 'Ŕ', 'R', 'ŕ', 'r', 'Ŗ', 'R', 'ŗ', 'r',
29 'Ř', 'R', 'ř', 'r', 'Ś', 'S', 'ś', 's', 'Ŝ', 'S',
30 'ŝ', 's', 'Ş', 'S', 'ş', 's', 'Š', 'S', 'š', 's',
31 'Ţ', 'T', 'ţ', 't', 'Ť', 'T', 'ť', 't', 'Ŧ', 'T',
32 'ŧ', 't', 'Ũ', 'U', 'ũ', 'u', 'Ū', 'U', 'ū', 'u',
33 'Ŭ', 'U', 'ŭ', 'u', 'Ů', 'U', 'ů', 'u', 'Ű', 'U',
34 'ű', 'u', 'Ų', 'U', 'ų', 'u', 'Ŵ', 'W', 'ŵ', 'w',
35 'Ŷ', 'Y', 'ŷ', 'y', 'Ÿ', 'Y', 'Ź', 'Z', 'ź', 'z',
36 'Ż', 'Z', 'ż', 'z', 'Ž', 'Z', 'ž', 'z', 'ƀ', 'b',
37 'Ɖ', 'D', 'Ƒ', 'F', 'ƒ', 'f', 'Ɨ', 'I', 'ƚ', 'l',
38 'Ɵ', 'O', 'Ơ', 'O', 'ơ', 'o', 'ƫ', 't', 'Ʈ', 'T',
39 'Ư', 'U', 'ư', 'u', 'ƶ', 'z', 'Ǎ', 'A', 'ǎ', 'a',
40 'Ǐ', 'I', 'ǐ', 'i', 'Ǒ', 'O', 'ǒ', 'o', 'Ǔ', 'U',
41 'ǔ', 'u', 'Ǖ', 'U', 'ǖ', 'u', 'Ǘ', 'U', 'ǘ', 'u',
42 'Ǚ', 'U', 'ǚ', 'u', 'Ǜ', 'U', 'ǜ', 'u', 'Ǟ', 'A',
43 'ǟ', 'a', 'Ǥ', 'G', 'ǥ', 'g', 'Ǧ', 'G', 'ǧ', 'g',
44 'Ǩ', 'K', 'ǩ', 'k', 'Ǫ', 'O', 'ǫ', 'o', 'Ǭ', 'O',
45 'ǭ', 'o', 'ǰ', 'j', 'ɡ', 'g', 'ʹ', '\'', 'ʺ', '"',
46 'ʼ', '\'', '\u02c4', '^', 'ˆ', '^', 'ˈ', '\'', 'ˉ', '?',
47 'ˊ', '?', 'ˋ', '`', 'ˍ', '_', '\u02da', '?', '\u02dc', '~',
48 '\u0300', '`', '\u0302', '^', '\u0303', '~', '\u030e', '"', '\u0331', '_',
49 '\u0332', '_', '\u2000', ' ', '\u2001', ' ', '\u2002', ' ', '\u2003', ' ',
50 '\u2004', ' ', '\u2005', ' ', '\u2006', ' ', '‐', '-', '‑', '-',
51 '–', '-', '—', '-', '‘', '\'', '’', '\'', '‚', ',',
52 '“', '"', '”', '"', '„', '"', '†', '?', '‡', '?',
53 '•', '.', '…', '.', '‰', '?', '′', '\'', '‵', '`',
54 '‹', '<', '›', '>', '™', 'T', '!', '!', '"', '"',
55 '#', '#', '$', '$', '%', '%', '&', '&', ''', '\'',
56 '(', '(', ')', ')', '*', '*', '+', '+', ',', ',',
57 '-', '-', '.', '.', '/', '/', '0', '0', '1', '1',
58 '2', '2', '3', '3', '4', '4', '5', '5', '6', '6',
59 '7', '7', '8', '8', '9', '9', ':', ':', ';', ';',
60 '<', '<', '=', '=', '>', '>', '?', '?', '@', '@',
61 'A', 'A', 'B', 'B', 'C', 'C', 'D', 'D', 'E', 'E',
62 'F', 'F', 'G', 'G', 'H', 'H', 'I', 'I', 'J', 'J',
63 'K', 'K', 'L', 'L', 'M', 'M', 'N', 'N', 'O', 'O',
64 'P', 'P', 'Q', 'Q', 'R', 'R', 'S', 'S', 'T', 'T',
65 'U', 'U', 'V', 'V', 'W', 'W', 'X', 'X', 'Y', 'Y',
66 'Z', 'Z', '[', '[', '\', '\\', ']', ']', '\uff3e', '^',
67 '\uff3f', '_', '\uff40', '`', 'a', 'a', 'b', 'b', 'c', 'c',
68 'd', 'd', 'e', 'e', 'f', 'f', 'g', 'g', 'h', 'h',
69 'i', 'i', 'j', 'j', 'k', 'k', 'l', 'l', 'm', 'm',
70 'n', 'n', 'o', 'o', 'p', 'p', 'q', 'q', 'r', 'r',
71 's', 's', 't', 't', 'u', 'u', 'v', 'v', 'w', 'w',
72 'x', 'x', 'y', 'y', 'z', 'z', '{', '{', '|', '|',
73 '}', '}', '~', '~'
74 };
75
76 public override int Remaining
77 {
78 get
79 {
80 if (_iCount <= 0)
81 {
82 return 0;
83 }
84 return _iCount;
85 }
86 }
87
88 public override bool Fallback(char charUnknown, int index)
89 {
90 _iCount = (_iSize = 1);
91 _cBestFit = TryBestFit(charUnknown);
92 if (_cBestFit == '\0')
93 {
94 _cBestFit = '?';
95 }
96 return true;
97 }
98
99 public override bool Fallback(char charUnknownHigh, char charUnknownLow, int index)
100 {
101 if (!char.IsHighSurrogate(charUnknownHigh))
102 {
103 throw new ArgumentOutOfRangeException("charUnknownHigh", SR.Format(SR.ArgumentOutOfRange_Range, 55296, 56319));
104 }
105 if (!char.IsLowSurrogate(charUnknownLow))
106 {
107 throw new ArgumentOutOfRangeException("charUnknownLow", SR.Format(SR.ArgumentOutOfRange_Range, 56320, 57343));
108 }
109 _cBestFit = '?';
110 _iCount = (_iSize = 2);
111 return true;
112 }
113
114 public override char GetNextChar()
115 {
116 _iCount--;
117 if (_iCount < 0)
118 {
119 return '\0';
120 }
121 if (_iCount == int.MaxValue)
122 {
123 _iCount = -1;
124 return '\0';
125 }
126 return _cBestFit;
127 }
128
129 public override bool MovePrevious()
130 {
131 if (_iCount >= 0)
132 {
133 _iCount++;
134 }
135 if (_iCount >= 0)
136 {
137 return _iCount <= _iSize;
138 }
139 return false;
140 }
141
142 public unsafe override void Reset()
143 {
144 _iCount = -1;
145 charStart = null;
146 bFallingBack = false;
147 }
148
149 private static char TryBestFit(char cUnknown)
150 {
151 int num = 0;
152 int num2 = s_arrayCharBestFit.Length;
153 int num3;
154 while ((num3 = num2 - num) > 6)
155 {
156 int num4 = (num3 / 2 + num) & 0xFFFE;
157 char c = s_arrayCharBestFit[num4];
158 if (c == cUnknown)
159 {
160 return s_arrayCharBestFit[num4 + 1];
161 }
162 if (c < cUnknown)
163 {
164 num = num4;
165 }
166 else
167 {
168 num2 = num4;
169 }
170 }
171 for (int num4 = num; num4 < num2; num4 += 2)
172 {
173 if (s_arrayCharBestFit[num4] == cUnknown)
174 {
175 return s_arrayCharBestFit[num4 + 1];
176 }
177 }
178 return '\0';
179 }
180}
static string ArgumentOutOfRange_Range
Definition SR.cs:1096
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
Definition SR.cs:7
override bool Fallback(char charUnknownHigh, char charUnknownLow, int index)