Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ GetByteCount() [2/7]

unsafe override int System.Text.SBCSCodePageEncoding.GetByteCount ( char * chars,
int count,
System::Text::EncoderNLS encoder )
inlinevirtual

Reimplemented from System.Text.EncodingNLS.

Definition at line 247 of file SBCSCodePageEncoding.cs.

248 {
250 EncoderReplacementFallback encoderReplacementFallback = null;
251 char c = '\0';
252 if (encoder != null)
253 {
254 c = encoder.charLeftOver;
255 encoderReplacementFallback = encoder.Fallback as EncoderReplacementFallback;
256 }
257 else
258 {
259 encoderReplacementFallback = base.EncoderFallback as EncoderReplacementFallback;
260 }
261 if (encoderReplacementFallback != null && encoderReplacementFallback.MaxCharCount == 1)
262 {
263 if (c > '\0')
264 {
265 count++;
266 }
267 return count;
268 }
269 EncoderFallbackBuffer encoderFallbackBuffer = null;
270 int num = 0;
271 char* ptr = chars + count;
272 EncoderFallbackBufferHelper encoderFallbackBufferHelper = new EncoderFallbackBufferHelper(encoderFallbackBuffer);
273 if (c > '\0')
274 {
275 encoderFallbackBuffer = encoder.FallbackBuffer;
276 encoderFallbackBufferHelper = new EncoderFallbackBufferHelper(encoderFallbackBuffer);
277 encoderFallbackBufferHelper.InternalInitialize(chars, ptr, encoder, _setEncoder: false);
278 encoderFallbackBufferHelper.InternalFallback(c, ref chars);
279 }
280 char c2;
281 while ((c2 = ((encoderFallbackBuffer != null) ? encoderFallbackBufferHelper.InternalGetNextChar() : '\0')) != 0 || chars < ptr)
282 {
283 if (c2 == '\0')
284 {
285 c2 = *chars;
286 chars++;
287 }
288 if (_mapUnicodeToBytes[(int)c2] == 0 && c2 != 0)
289 {
290 if (encoderFallbackBuffer == null)
291 {
292 encoderFallbackBuffer = ((encoder != null) ? encoder.FallbackBuffer : base.EncoderFallback.CreateFallbackBuffer());
293 encoderFallbackBufferHelper = new EncoderFallbackBufferHelper(encoderFallbackBuffer);
294 encoderFallbackBufferHelper.InternalInitialize(ptr - count, ptr, encoder, _setEncoder: false);
295 }
296 encoderFallbackBufferHelper.InternalFallback(c2, ref chars);
297 }
298 else
299 {
300 num++;
301 }
302 }
303 return num;
304 }
new EncoderFallbackBuffer FallbackBuffer
Definition EncoderNLS.cs:26
EncoderFallback EncoderFallback
Definition Encoding.cs:460

References System.Text.SBCSCodePageEncoding._mapUnicodeToBytes, System.chars, System.Text.BaseCodePageEncoding.CheckMemorySection(), System.count, System.Text.EncoderFallbackBufferHelper.InternalFallback(), System.Text.EncoderFallbackBufferHelper.InternalGetNextChar(), System.Text.EncoderFallbackBufferHelper.InternalInitialize(), and System.Text.EncoderReplacementFallback.MaxCharCount.