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

◆ EncodeToNewString()

string System.Text.Encodings.Web.TextEncoder.EncodeToNewString ( ReadOnlySpan< char > value,
int indexOfFirstCharToEncode )
inlineprivateinherited

Definition at line 82 of file TextEncoder.cs.

83 {
84 ReadOnlySpan<char> source = value.Slice(indexOfFirstCharToEncode);
85 Span<char> initialBuffer = stackalloc char[1024];
86 System.Text.ValueStringBuilder valueStringBuilder = new System.Text.ValueStringBuilder(initialBuffer);
87 int val = Math.Max(MaxOutputCharactersPerInputCharacter, 1024);
88 do
89 {
90 Span<char> destination = valueStringBuilder.AppendSpan(Math.Max(source.Length, val));
91 EncodeCore(source, destination, out var charsConsumed, out var charsWritten, isFinalBlock: true);
92 if (charsWritten == 0 || (uint)charsWritten > (uint)destination.Length)
93 {
95 }
96 source = source.Slice(charsConsumed);
97 valueStringBuilder.Length -= destination.Length - charsWritten;
98 }
99 while (!source.IsEmpty);
100 string result = string.Concat(value.Slice(0, indexOfFirstCharToEncode), valueStringBuilder.AsSpan());
101 valueStringBuilder.Dispose();
102 return result;
103 }
virtual OperationStatus EncodeCore(ReadOnlySpan< char > source, Span< char > destination, out int charsConsumed, out int charsWritten, bool isFinalBlock)
static void ThrowArgumentException_MaxOutputCharsPerInputChar()
ReadOnlySpan< char > AsSpan(bool terminate)
Span< char > AppendSpan(int length)

References System.Text.ValueStringBuilder.AppendSpan(), System.Text.ValueStringBuilder.AsSpan(), System.destination, System.Text.ValueStringBuilder.Dispose(), System.Text.Encodings.Web.TextEncoder.EncodeCore(), System.Math.Max(), System.Text.Encodings.Web.TextEncoder.MaxOutputCharactersPerInputCharacter, System.ReadOnlySpan< T >.Slice(), System.source, System.Text.Encodings.Web.TextEncoder.ThrowArgumentException_MaxOutputCharsPerInputChar(), and System.Text.Encodings.Web.value.

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