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

◆ EncodeCore() [1/2]

virtual OperationStatus System.Text.Encodings.Web.TextEncoder.EncodeCore ( ReadOnlySpan< char > source,
Span< char > destination,
out int charsConsumed,
out int charsWritten,
bool isFinalBlock )
inlineprotectedvirtualinherited

Reimplemented in System.Text.Encodings.Web.DefaultHtmlEncoder, System.Text.Encodings.Web.DefaultJavaScriptEncoder, and System.Text.Encodings.Web.DefaultUrlEncoder.

Definition at line 270 of file TextEncoder.cs.

271 {
272 int length = source.Length;
273 int length2 = destination.Length;
274 OperationStatus result2;
275 while (true)
276 {
277 if (!source.IsEmpty)
278 {
279 Rune result;
280 int charsConsumed2;
281 OperationStatus operationStatus = Rune.DecodeFromUtf16(source, out result, out charsConsumed2);
282 if (operationStatus != 0)
283 {
284 if (!isFinalBlock && operationStatus == OperationStatus.NeedMoreData)
285 {
286 result2 = OperationStatus.NeedMoreData;
287 break;
288 }
289 }
290 else if (!WillEncode(result.Value))
291 {
292 if (result.TryEncodeToUtf16(destination, out var _))
293 {
294 source = source.Slice(charsConsumed2);
295 destination = destination.Slice(charsConsumed2);
296 continue;
297 }
298 goto IL_00ad;
299 }
300 if (TryEncodeUnicodeScalar((uint)result.Value, destination, out var charsWritten3))
301 {
302 source = source.Slice(charsConsumed2);
303 destination = destination.Slice(charsWritten3);
304 continue;
305 }
306 goto IL_00ad;
307 }
308 result2 = OperationStatus.Done;
309 break;
310 IL_00ad:
311 result2 = OperationStatus.DestinationTooSmall;
312 break;
313 }
314 charsConsumed = length - source.Length;
315 charsWritten = length2 - destination.Length;
316 return result2;
317 }
bool WillEncode(int unicodeScalar)
unsafe bool TryEncodeUnicodeScalar(int unicodeScalar, char *buffer, int bufferLength, out int numberOfCharactersWritten)

References System.Text.Rune.DecodeFromUtf16(), System.destination, System.length, System.length2, System.source, System.Text.Rune.TryEncodeToUtf16(), System.Text.Encodings.Web.TextEncoder.TryEncodeUnicodeScalar(), System.Text.Rune.Value, and System.Text.Encodings.Web.TextEncoder.WillEncode().

Referenced by System.Text.Encodings.Web.TextEncoder.Encode(), System.Text.Encodings.Web.TextEncoder.Encode(), System.Text.Encodings.Web.TextEncoder.Encode(), System.Text.Encodings.Web.TextEncoder.EncodeCore(), and System.Text.Encodings.Web.TextEncoder.EncodeToNewString().