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

◆ GetBytesWithFallback() [2/3]

unsafe int System.Text.Encoding.GetBytesWithFallback ( char * pOriginalChars,
int originalCharCount,
byte * pOriginalBytes,
int originalByteCount,
int charsConsumedSoFar,
int bytesWrittenSoFar,
EncoderNLS encoder )
inlineprivateinherited

Definition at line 1240 of file Encoding.cs.

1241 {
1244 int charsConsumed;
1245 int bytesWritten;
1246 bool flag = encoder.TryDrainLeftoverDataForGetBytes(readOnlySpan, span, out charsConsumed, out bytesWritten);
1248 span = span.Slice(bytesWritten);
1249 if (!flag)
1250 {
1251 ThrowBytesOverflow(encoder, span.Length == originalByteCount);
1252 }
1253 else
1254 {
1255 bytesWritten = GetBytesFast((char*)Unsafe.AsPointer(ref MemoryMarshal.GetReference(readOnlySpan)), readOnlySpan.Length, (byte*)Unsafe.AsPointer(ref MemoryMarshal.GetReference(span)), span.Length, out charsConsumed);
1257 span = span.Slice(bytesWritten);
1258 if (!readOnlySpan.IsEmpty)
1259 {
1260 encoder._charsUsed = originalCharCount;
1261 return GetBytesWithFallback(readOnlySpan, originalCharCount, span, originalByteCount, encoder);
1262 }
1263 }
1264 encoder._charsUsed = originalCharCount - readOnlySpan.Length;
1265 return originalByteCount - span.Length;
1266 }
virtual unsafe int GetBytesFast(char *pChars, int charsLength, byte *pBytes, int bytesLength, out int charsConsumed)
Definition Encoding.cs:1229
unsafe int GetBytesWithFallback(char *pOriginalChars, int originalCharCount, byte *pOriginalBytes, int originalByteCount, int charsConsumedSoFar, int bytesWrittenSoFar)
Definition Encoding.cs:1235

References System.Runtime.Serialization.Dictionary, System.Text.Encoding.GetBytesFast(), System.Text.Encoding.GetBytesWithFallback(), System.Text.Encoding.ThrowBytesOverflow(), and System.Text.EncoderNLS.TryDrainLeftoverDataForGetBytes().