49 object value =
new object();
57 : this(codePage, codePage)
62 : base(codePage, dataCodePage)
67 : base(codePage, dataCodePage, enc, dec)
71 internal unsafe
static char ReadChar(
char* pChar)
111 fixed (
byte* ptr3 =
array)
113 char* ptr4 = (
char*)ptr3;
213 fixed (
byte* ptr =
array)
215 char* ptr2 = (
char*)ptr;
321 char[] array2 =
new char[num2 * 2];
379 array2[num2++] = (char)bytes2;
387 for (
int i = 0; i < array2.Length - 2; i += 2)
391 for (
int j = i + 2; j < array2.Length; j += 2)
401 char c5 = array2[num3];
402 array2[num3] = array2[i];
404 c5 = array2[num3 + 1];
405 array2[num3 + 1] = array2[i + 1];
463 array2 =
new char[num2 * 2];
515 array2[num2++] = (char)num4;
532 c = encoder.charLeftOver;
533 if (encoder.InternalHasFallbackBuffer && encoder.FallbackBuffer.Remaining > 0)
544 encoderFallbackBuffer = encoder.FallbackBuffer;
550 while ((c2 = ((encoderFallbackBuffer !=
null) ? encoderFallbackBufferHelper.
InternalGetNextChar() :
'\0')) != 0 ||
chars < ptr)
558 if (num2 == 0 && c2 != 0)
560 if (encoderFallbackBuffer ==
null)
562 encoderFallbackBuffer = ((encoder !=
null) ? encoder.FallbackBuffer : base.EncoderFallback.CreateFallbackBuffer());
592 c = encoder.charLeftOver;
593 encoderFallbackBuffer = encoder.FallbackBuffer;
596 if (encoder.m_throwOnOverflow && encoderFallbackBuffer.
Remaining > 0)
606 while ((c2 = ((encoderFallbackBuffer !=
null) ? encoderFallbackBufferHelper.
InternalGetNextChar() :
'\0')) != 0 ||
chars < ptr)
614 if (num == 0 && c2 != 0)
616 if (encoderFallbackBuffer ==
null)
618 encoderFallbackBuffer = base.EncoderFallback.CreateFallbackBuffer();
627 if (
bytes + 1 >= ptr4)
629 if (encoderFallbackBuffer ==
null || !encoderFallbackBufferHelper.
bFallingBack)
640 *
bytes = (byte)(num >> 8);
643 else if (
bytes >= ptr4)
645 if (encoderFallbackBuffer ==
null || !encoderFallbackBufferHelper.
bFallingBack)
656 *
bytes = (byte)(num & 0xFFu);
661 if (encoderFallbackBuffer !=
null && !encoderFallbackBufferHelper.
bUsedEncoder)
663 encoder.charLeftOver =
'\0';
665 encoder.m_charsUsed = (int)(
chars - ptr2);
667 return (
int)(
bytes - ptr3);
678 if (dBCSDecoder !=
null && dBCSDecoder.
bLeftOver > 0)
689 byte[] bytes2 =
new byte[1] { dBCSDecoder.bLeftOver };
692 int num2 = dBCSDecoder.bLeftOver << 8;
701 byte[] bytes3 =
new byte[2]
726 if (dBCSDecoder !=
null && !dBCSDecoder.
MustFlush)
734 if (c ==
'\0' && num3 != 0)
736 if (decoderFallbackBuffer ==
null)
738 decoderFallbackBuffer = ((dBCSDecoder !=
null) ? dBCSDecoder.
FallbackBuffer : base.DecoderFallback.CreateFallbackBuffer());
743 byte[] bytes4 = ((num3 >= 256) ?
new byte[2]
747 } :
new byte[1] { (byte)num3 });
765 if (dBCSDecoder !=
null && dBCSDecoder.
bLeftOver > 0)
776 byte[] bytes2 =
new byte[1] { dBCSDecoder.bLeftOver };
781 dBCSDecoder.bLeftOver = 0;
782 return (
int)(
chars - ptr3);
784 int num = dBCSDecoder.bLeftOver << 8;
788 if (c ==
'\0' && num != 0)
793 byte[] bytes3 =
new byte[2]
828 if (dBCSDecoder !=
null && !dBCSDecoder.
MustFlush)
831 dBCSDecoder.bLeftOver = (byte)num2;
837 if (c2 ==
'\0' && num2 != 0)
839 if (decoderFallbackBuffer ==
null)
841 decoderFallbackBuffer = ((dBCSDecoder !=
null) ? dBCSDecoder.
FallbackBuffer : base.DecoderFallback.CreateFallbackBuffer());
845 byte[]
array = ((num2 >= 256) ?
new byte[2]
849 } :
new byte[1] { (byte)num2 });
871 if (dBCSDecoder !=
null)
875 dBCSDecoder.bLeftOver = 0;
877 dBCSDecoder.m_bytesUsed = (int)(
bytes - ptr);
879 return (
int)(
chars - ptr3);
889 if (base.EncoderFallback.MaxCharCount > 1)
891 num *= base.EncoderFallback.MaxCharCount;
894 if (num >
int.MaxValue)
908 if (base.DecoderFallback.MaxCharCount > 1)
910 num *= base.DecoderFallback.MaxCharCount;
912 if (num >
int.MaxValue)
static readonly bool IsLittleEndian
static sbyte ReverseEndianness(sbyte value)
static unsafe void InitBlockUnaligned(void *startAddress, byte value, uint byteCount)
static string NotSupported_NoCodepageData
static string Argument_EncoderFallbackNotEmpty
static string ArgumentOutOfRange_GetCharCountOverflow
static string ArgumentOutOfRange_GetByteCountOverflow
static string Format(string resourceFormat, object p1)
static string ArgumentOutOfRange_NeedNonNegNum
void CheckMemorySection()
int m_firstDataWordOffset
unsafe byte * GetNativeMemory(int iSize)
char[] arrayUnicodeBestFit
static readonly object s_streamLock
static Stream s_codePagesEncodingDataStream
DBCSDecoder(DBCSCodePageEncoding encoding)
unsafe override int GetBytes(char *chars, int charCount, byte *bytes, int byteCount, System.Text.EncoderNLS encoder)
unsafe override void ReadBestFitTable()
override Decoder GetDecoder()
unsafe override void LoadManagedCodePage()
unsafe override int GetByteCount(char *chars, int count, System.Text.EncoderNLS encoder)
DBCSCodePageEncoding(int codePage)
static unsafe char ReadChar(char *pChar)
virtual bool CleanUpBytes(ref int bytes)
static object s_InternalSyncObject
virtual unsafe void CleanUpEndBytes(char *chars)
unsafe DBCSCodePageEncoding(int codePage, int dataCodePage, EncoderFallback enc, DecoderFallback dec)
unsafe DBCSCodePageEncoding(int codePage, int dataCodePage)
override int GetMaxCharCount(int byteCount)
override int GetMaxByteCount(int charCount)
unsafe char * mapBytesToUnicode
unsafe override int GetCharCount(byte *bytes, int count, System.Text.DecoderNLS baseDecoder)
static object InternalSyncObject
unsafe ushort * mapUnicodeToBytes
unsafe override int GetChars(byte *bytes, int byteCount, char *chars, int charCount, System.Text.DecoderNLS baseDecoder)
DecoderFallbackBuffer m_fallbackBuffer
new DecoderFallbackBuffer FallbackBuffer
void ThrowBytesOverflow()
void ThrowCharsOverflow()
override string EncodingName
static int CompareExchange(ref int location1, int value, int comparand)
unsafe bool InternalFallback(byte[] bytes, byte *pBytes, ref char *chars)
unsafe void InternalReset()
unsafe void InternalInitialize(byte *_byteStart, char *_charEnd)
unsafe void InternalInitialize(char *_charStart, char *_charEnd, System.Text.EncoderNLS _encoder, bool _setEncoder)
char InternalGetNextChar()
unsafe bool InternalFallback(char ch, ref char *chars)