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

◆ TryDrainLeftoverDataForGetBytes()

bool System.Text.EncoderNLS.TryDrainLeftoverDataForGetBytes ( ReadOnlySpan< char > chars,
Span< byte > bytes,
out int charsConsumed,
out int bytesWritten )
inlinepackageinherited

Definition at line 229 of file EncoderNLS.cs.

230 {
231 charsConsumed = 0;
232 bytesWritten = 0;
233 if (_charLeftOver != 0)
234 {
235 char c = '\0';
236 if (chars.IsEmpty)
237 {
238 if (!MustFlush)
239 {
240 charsConsumed = 0;
241 bytesWritten = 0;
242 return true;
243 }
244 }
245 else
246 {
247 c = chars[0];
248 }
250 _charLeftOver = '\0';
251 if (Rune.TryCreate(charLeftOver, c, out var result))
252 {
253 charsConsumed = 1;
254 switch (_encoding.EncodeRune(result, bytes, out bytesWritten))
255 {
256 case OperationStatus.Done:
257 return true;
258 case OperationStatus.DestinationTooSmall:
259 _encoding.ThrowBytesOverflow(this, nothingEncoded: true);
260 break;
261 case OperationStatus.InvalidData:
262 base.FallbackBuffer.Fallback(charLeftOver, c, -1);
263 break;
264 }
265 }
266 else
267 {
268 base.FallbackBuffer.Fallback(charLeftOver, -1);
269 }
270 }
271 if (_fallbackBuffer != null && _fallbackBuffer.Remaining > 0)
272 {
274 }
275 return true;
276 }
bool TryDrainRemainingDataForGetBytes(Span< byte > bytes, out int bytesWritten)
readonly Encoding _encoding
Definition EncoderNLS.cs:10
EncoderFallbackBuffer _fallbackBuffer
Definition Encoder.cs:9
virtual OperationStatus EncodeRune(Rune value, Span< byte > bytes, out int bytesWritten)
Definition Encoding.cs:1114

References System.Text.EncoderNLS._charLeftOver, System.Text.EncoderNLS._encoding, System.Text.Encoder._fallbackBuffer, System.bytes, System.Text.EncoderNLS.charLeftOver, System.chars, System.Text.Encoding.EncodeRune(), System.Text.EncoderNLS.MustFlush, System.Text.EncoderFallbackBuffer.Remaining, System.Text.Encoding.ThrowBytesOverflow(), System.Text.Rune.TryCreate(), and System.Text.EncoderFallbackBuffer.TryDrainRemainingDataForGetBytes().

Referenced by System.Text.Encoding.GetBytesWithFallback().