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

◆ TryEncodeUnicodeScalarUtf8()

bool System.Text.Encodings.Web.TextEncoder.TryEncodeUnicodeScalarUtf8 ( uint unicodeScalar,
Span< char > utf16ScratchBuffer,
Span< byte > utf8Destination,
out int bytesWritten )
inlineprivateinherited

Definition at line 29 of file TextEncoder.cs.

30 {
31 if (!TryEncodeUnicodeScalar(unicodeScalar, utf16ScratchBuffer, out var charsWritten))
32 {
34 }
35 utf16ScratchBuffer = utf16ScratchBuffer.Slice(0, charsWritten);
36 int num = 0;
37 while (!utf16ScratchBuffer.IsEmpty)
38 {
39 if (Rune.DecodeFromUtf16(utf16ScratchBuffer, out var result, out var charsConsumed) != 0)
40 {
42 }
43 uint num2 = (uint)UnicodeHelpers.GetUtf8RepresentationForScalarValue((uint)result.Value);
44 do
45 {
46 if (SpanUtility.IsValidIndex(utf8Destination, num))
47 {
48 utf8Destination[num++] = (byte)num2;
49 continue;
50 }
51 bytesWritten = 0;
52 return false;
53 }
54 while ((num2 >>= 8) != 0);
55 utf16ScratchBuffer = utf16ScratchBuffer.Slice(charsConsumed);
56 }
57 bytesWritten = num;
58 return true;
59 }
static void ThrowArgumentException_MaxOutputCharsPerInputChar()
unsafe bool TryEncodeUnicodeScalar(int unicodeScalar, char *buffer, int bufferLength, out int numberOfCharactersWritten)
static int GetUtf8RepresentationForScalarValue(uint scalar)
bool IsEmpty
Definition Span.cs:79
Span< T > Slice(int start)
Definition Span.cs:271

References System.Text.Rune.DecodeFromUtf16(), System.Text.Unicode.UnicodeHelpers.GetUtf8RepresentationForScalarValue(), System.Span< T >.IsEmpty, System.Span< T >.Slice(), System.Text.Encodings.Web.TextEncoder.ThrowArgumentException_MaxOutputCharsPerInputChar(), and System.Text.Encodings.Web.TextEncoder.TryEncodeUnicodeScalar().

Referenced by System.Text.Encodings.Web.TextEncoder.EncodeUtf8Core().