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

◆ DecodeLastFromUtf8()

static OperationStatus System.Text.Rune.DecodeLastFromUtf8 ( ReadOnlySpan< byte > source,
out Rune value,
out int bytesConsumed )
inlinestatic

Definition at line 321 of file Rune.cs.

322 {
323 int num = source.Length - 1;
324 if ((uint)num < (uint)source.Length)
325 {
326 uint num2 = source[num];
327 if (UnicodeUtility.IsAsciiCodePoint(num2))
328 {
329 bytesConsumed = 1;
330 value = UnsafeCreate(num2);
331 return OperationStatus.Done;
332 }
333 if (((byte)num2 & 0x40u) != 0)
334 {
335 return DecodeFromUtf8(source.Slice(num), out value, out bytesConsumed);
336 }
337 int num3 = 3;
338 OperationStatus result2;
339 Rune result;
340 int bytesConsumed2;
341 while (true)
342 {
343 if (num3 > 0)
344 {
345 num--;
346 if ((uint)num < (uint)source.Length)
347 {
348 if ((sbyte)source[num] < -64)
349 {
350 num3--;
351 continue;
352 }
353 source = source.Slice(num);
354 result2 = DecodeFromUtf8(source, out result, out bytesConsumed2);
355 if (bytesConsumed2 == source.Length)
356 {
357 break;
358 }
359 }
360 }
362 bytesConsumed = 1;
363 return OperationStatus.InvalidData;
364 }
365 bytesConsumed = bytesConsumed2;
366 value = result;
367 return result2;
368 }
370 bytesConsumed = 0;
371 return OperationStatus.NeedMoreData;
372 }
static Rune UnsafeCreate(uint scalarValue)
Definition Rune.cs:643
Rune(char ch)
Definition Rune.cs:61
static OperationStatus DecodeFromUtf8(ReadOnlySpan< byte > source, out Rune result, out int bytesConsumed)
Definition Rune.cs:202
static Rune ReplacementChar
Definition Rune.cs:53

References System.Text.Rune.DecodeFromUtf8(), System.Text.UnicodeUtility.IsAsciiCodePoint(), System.Text.Rune.ReplacementChar, System.source, System.Text.Rune.UnsafeCreate(), and System.value.