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

◆ TryDrainRemainingDataForGetBytes()

bool System.Text.EncoderFallbackBuffer.TryDrainRemainingDataForGetBytes ( Span< byte > bytes,
out int bytesWritten )
inlinepackageinherited

Definition at line 124 of file EncoderFallbackBuffer.cs.

125 {
126 int length = bytes.Length;
127 while (true)
128 {
129 Rune nextRune;
130 Rune rune = (nextRune = GetNextRune());
131 if (rune.Value == 0)
132 {
133 break;
134 }
135 int bytesWritten2;
136 switch (encoding.EncodeRune(nextRune, bytes, out bytesWritten2))
137 {
138 case OperationStatus.Done:
139 bytes = bytes.Slice(bytesWritten2);
140 break;
141 case OperationStatus.DestinationTooSmall:
142 {
143 for (int i = 0; i < nextRune.Utf16SequenceLength; i++)
144 {
145 MovePrevious();
146 }
147 bytesWritten = length - bytes.Length;
148 return false;
149 }
150 case OperationStatus.InvalidData:
151 ThrowLastCharRecursive(nextRune.Value);
152 break;
153 }
154 }
155 bytesWritten = length - bytes.Length;
156 return true;
157 }
static void ThrowLastCharRecursive(int charRecursive)
virtual OperationStatus EncodeRune(Rune value, Span< byte > bytes, out int bytesWritten)
Definition Encoding.cs:1114

References System.bytes, System.Text.Encoding.EncodeRune(), System.Text.EncoderFallbackBuffer.encoding, System.Text.EncoderFallbackBuffer.GetNextRune(), System.length, System.Text.EncoderFallbackBuffer.MovePrevious(), System.Text.EncoderFallbackBuffer.ThrowLastCharRecursive(), System.Text.Rune.Utf16SequenceLength, and System.Text.Rune.Value.

Referenced by System.Text.EncoderNLS.TryDrainLeftoverDataForGetBytes(), and System.Text.EncoderFallbackBuffer.TryInternalFallbackGetBytes().