35 utf16ScratchBuffer = utf16ScratchBuffer.
Slice(0, charsWritten);
37 while (!utf16ScratchBuffer.
IsEmpty)
48 utf8Destination[num++] = (byte)num2;
54 while ((num2 >>= 8) != 0);
55 utf16ScratchBuffer = utf16ScratchBuffer.
Slice(charsConsumed);
85 Span<char> initialBuffer = stackalloc
char[1024];
92 if (charsWritten == 0 || (uint)charsWritten > (uint)
destination.Length)
97 valueStringBuilder.Length -= destination.Length - charsWritten;
100 string result =
string.Concat(
value.Slice(0, indexOfFirstCharToEncode), valueStringBuilder.
AsSpan());
124 num = characterCount;
127 if (num != characterCount)
147 num = characterCount;
150 if (num != characterCount)
161 utf8Text = utf8Source.
Slice(0, utf8Destination.
Length);
168 utf8Source.
Slice(0, num).CopyTo(utf8Destination);
169 if (num == utf8Source.
Length)
171 bytesConsumed = utf8Source.
Length;
172 bytesWritten = utf8Source.
Length;
178 bytesConsumed = num + bytesConsumed2;
179 bytesWritten = num + bytesWritten2;
187 Span<char> utf16ScratchBuffer = stackalloc
char[24];
197 if (operationStatus != 0)
209 while ((uint)num2 < (uint)utf8Destination.
Length)
211 utf8Destination[num2++] = (byte)num;
212 if ((num >>= 8) != 0)
222 utf8Source = utf8Source.
Slice(bytesConsumed2);
223 utf8Destination = utf8Destination.Slice(bytesWritten2);
231 utf8Source = utf8Source.
Slice(bytesConsumed2);
232 utf8Destination = utf8Destination.
Slice(num2);
258 charsConsumed =
source.Length;
259 charsWritten =
source.Length;
265 charsConsumed = num + charsConsumed2;
266 charsWritten = num + charsWritten2;
282 if (operationStatus != 0)
327 if (charsWritten == 0 || (uint)charsWritten > (uint)
destination.Length)
334 while (!
value.IsEmpty);
354 utf8Text = utf8Text.
Slice(bytesConsumed);
365 if (startIndex < 0 || startIndex > actualInputLength)
369 if (characterCount < 0 || characterCount > actualInputLength -
startIndex)
static ArrayPool< T > Shared
virtual void Write(char value)
static byte Max(byte val1, byte val2)
static string TextEncoderDoesNotImplementMaxOutputCharsPerInputChar
string EncodeToNewString(ReadOnlySpan< char > value, int indexOfFirstCharToEncode)
void EncodeCore(TextWriter output, ReadOnlySpan< char > value)
int MaxOutputCharactersPerInputCharacter
virtual OperationStatus EncodeUtf8Core(ReadOnlySpan< byte > utf8Source, Span< byte > utf8Destination, out int bytesConsumed, out int bytesWritten, bool isFinalBlock)
virtual unsafe int FindFirstCharacterToEncode(ReadOnlySpan< char > text)
bool TryEncodeUnicodeScalarUtf8(uint unicodeScalar, Span< char > utf16ScratchBuffer, Span< byte > utf8Destination, out int bytesWritten)
bool WillEncode(int unicodeScalar)
virtual OperationStatus EncodeUtf8(ReadOnlySpan< byte > utf8Source, Span< byte > utf8Destination, out int bytesConsumed, out int bytesWritten, bool isFinalBlock=true)
virtual void Encode(TextWriter output, string value, int startIndex, int characterCount)
virtual OperationStatus EncodeCore(ReadOnlySpan< char > source, Span< char > destination, out int charsConsumed, out int charsWritten, bool isFinalBlock)
virtual OperationStatus Encode(ReadOnlySpan< char > source, Span< char > destination, out int charsConsumed, out int charsWritten, bool isFinalBlock=true)
virtual int FindFirstCharacterToEncodeUtf8(ReadOnlySpan< byte > utf8Text)
virtual string Encode(string value)
unsafe bool TryEncodeUnicodeScalar(uint unicodeScalar, Span< char > buffer, out int charsWritten)
virtual void Encode(TextWriter output, char[] value, int startIndex, int characterCount)
static void ThrowArgumentException_MaxOutputCharsPerInputChar()
unsafe int FindFirstCharacterToEncode(char *text, int textLength)
static void ValidateRanges(int startIndex, int characterCount, int actualInputLength)
void Encode(TextWriter output, string value)
unsafe bool TryEncodeUnicodeScalar(int unicodeScalar, char *buffer, int bufferLength, out int numberOfCharactersWritten)
static void ThrowArgumentNullException(ExceptionArgument argument)
static int GetUtf8RepresentationForScalarValue(uint scalar)
ReadOnlySpan< T > Slice(int start)
Span< T > Slice(int start)
static OperationStatus DecodeFromUtf16(ReadOnlySpan< char > source, out Rune result, out int charsConsumed)
static OperationStatus DecodeFromUtf8(ReadOnlySpan< byte > source, out Rune result, out int bytesConsumed)
bool TryEncodeToUtf16(Span< char > destination, out int charsWritten)
ReadOnlySpan< char > AsSpan(bool terminate)
Span< char > AppendSpan(int length)