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

◆ GetByteCount() [2/7]

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

Reimplemented from System.Text.Encoding.

Reimplemented in System.Text.ISO2022Encoding, and System.Text.GB18030Encoding.

Definition at line 526 of file DBCSCodePageEncoding.cs.

527 {
529 char c = '\0';
530 if (encoder != null)
531 {
532 c = encoder.charLeftOver;
533 if (encoder.InternalHasFallbackBuffer && encoder.FallbackBuffer.Remaining > 0)
534 {
536 }
537 }
538 int num = 0;
539 char* ptr = chars + count;
540 EncoderFallbackBuffer encoderFallbackBuffer = null;
541 EncoderFallbackBufferHelper encoderFallbackBufferHelper = new EncoderFallbackBufferHelper(encoderFallbackBuffer);
542 if (c > '\0')
543 {
544 encoderFallbackBuffer = encoder.FallbackBuffer;
545 encoderFallbackBufferHelper = new EncoderFallbackBufferHelper(encoderFallbackBuffer);
546 encoderFallbackBufferHelper.InternalInitialize(chars, ptr, encoder, _setEncoder: false);
547 encoderFallbackBufferHelper.InternalFallback(c, ref chars);
548 }
549 char c2;
550 while ((c2 = ((encoderFallbackBuffer != null) ? encoderFallbackBufferHelper.InternalGetNextChar() : '\0')) != 0 || chars < ptr)
551 {
552 if (c2 == '\0')
553 {
554 c2 = *chars;
555 chars++;
556 }
557 ushort num2 = mapUnicodeToBytes[(int)c2];
558 if (num2 == 0 && c2 != 0)
559 {
560 if (encoderFallbackBuffer == null)
561 {
562 encoderFallbackBuffer = ((encoder != null) ? encoder.FallbackBuffer : base.EncoderFallback.CreateFallbackBuffer());
563 encoderFallbackBufferHelper = new EncoderFallbackBufferHelper(encoderFallbackBuffer);
564 encoderFallbackBufferHelper.InternalInitialize(ptr - count, ptr, encoder, _setEncoder: false);
565 }
566 encoderFallbackBufferHelper.InternalFallback(c2, ref chars);
567 }
568 else
569 {
570 num++;
571 if (num2 >= 256)
572 {
573 num++;
574 }
575 }
576 }
577 return num;
578 }
static string Argument_EncoderFallbackNotEmpty
Definition SR.cs:590
static string Format(string resourceFormat, object p1)
Definition SR.cs:118
Definition SR.cs:7
new EncoderFallback Fallback
Definition EncoderNLS.cs:21
new EncoderFallbackBuffer FallbackBuffer
Definition EncoderNLS.cs:26
override string EncodingName
EncoderFallback EncoderFallback
Definition Encoding.cs:460

References System.SR.Argument_EncoderFallbackNotEmpty, System.chars, System.Text.BaseCodePageEncoding.CheckMemorySection(), System.count, System.Text.EncodingNLS.EncodingName, System.SR.Format(), System.Text.EncoderFallbackBufferHelper.InternalFallback(), System.Text.EncoderFallbackBufferHelper.InternalGetNextChar(), System.Text.EncoderFallbackBufferHelper.InternalInitialize(), and System.Text.DBCSCodePageEncoding.mapUnicodeToBytes.