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

◆ TryParseTimeSpanBigG()

static bool System.Buffers.Text.Utf8Parser.TryParseTimeSpanBigG ( ReadOnlySpan< byte > source,
out TimeSpan value,
out int bytesConsumed )
inlinestaticprivate

Definition at line 3604 of file Utf8Parser.cs.

3605 {
3606 int i = 0;
3607 byte b = 0;
3608 for (; i != source.Length; i++)
3609 {
3610 b = source[i];
3611 if (b != 32 && b != 9)
3612 {
3613 break;
3614 }
3615 }
3616 if (i == source.Length)
3617 {
3618 value = default(TimeSpan);
3619 bytesConsumed = 0;
3620 return false;
3621 }
3622 bool isNegative = false;
3623 if (b == 45)
3624 {
3625 isNegative = true;
3626 i++;
3627 if (i == source.Length)
3628 {
3629 value = default(TimeSpan);
3630 bytesConsumed = 0;
3631 return false;
3632 }
3633 }
3634 if (!TryParseUInt32D(source.Slice(i), out var value2, out var bytesConsumed2))
3635 {
3636 value = default(TimeSpan);
3637 bytesConsumed = 0;
3638 return false;
3639 }
3640 i += bytesConsumed2;
3641 if (i == source.Length || source[i++] != 58)
3642 {
3643 value = default(TimeSpan);
3644 bytesConsumed = 0;
3645 return false;
3646 }
3647 if (!TryParseUInt32D(source.Slice(i), out var value3, out bytesConsumed2))
3648 {
3649 value = default(TimeSpan);
3650 bytesConsumed = 0;
3651 return false;
3652 }
3653 i += bytesConsumed2;
3654 if (i == source.Length || source[i++] != 58)
3655 {
3656 value = default(TimeSpan);
3657 bytesConsumed = 0;
3658 return false;
3659 }
3660 if (!TryParseUInt32D(source.Slice(i), out var value4, out bytesConsumed2))
3661 {
3662 value = default(TimeSpan);
3663 bytesConsumed = 0;
3664 return false;
3665 }
3666 i += bytesConsumed2;
3667 if (i == source.Length || source[i++] != 58)
3668 {
3669 value = default(TimeSpan);
3670 bytesConsumed = 0;
3671 return false;
3672 }
3673 if (!TryParseUInt32D(source.Slice(i), out var value5, out bytesConsumed2))
3674 {
3675 value = default(TimeSpan);
3676 bytesConsumed = 0;
3677 return false;
3678 }
3679 i += bytesConsumed2;
3680 if (i == source.Length || source[i++] != 46)
3681 {
3682 value = default(TimeSpan);
3683 bytesConsumed = 0;
3684 return false;
3685 }
3686 if (!TryParseTimeSpanFraction(source.Slice(i), out var value6, out bytesConsumed2))
3687 {
3688 value = default(TimeSpan);
3689 bytesConsumed = 0;
3690 return false;
3691 }
3692 i += bytesConsumed2;
3693 if (!TryCreateTimeSpan(isNegative, value2, value3, value4, value5, value6, out value))
3694 {
3695 value = default(TimeSpan);
3696 bytesConsumed = 0;
3697 return false;
3698 }
3699 if (i != source.Length && (source[i] == 46 || source[i] == 58))
3700 {
3701 value = default(TimeSpan);
3702 bytesConsumed = 0;
3703 return false;
3704 }
3705 bytesConsumed = i;
3706 return true;
3707 }
static bool TryCreateTimeSpan(bool isNegative, uint days, uint hours, uint minutes, uint seconds, uint fraction, out TimeSpan timeSpan)
static bool TryParseTimeSpanFraction(ReadOnlySpan< byte > source, out uint value, out int bytesConsumed)
static bool TryParseUInt32D(ReadOnlySpan< byte > source, out uint value, out int bytesConsumed)

References System.source, System.Buffers.Text.Utf8Parser.TryCreateTimeSpan(), System.Buffers.Text.Utf8Parser.TryParseTimeSpanFraction(), System.Buffers.Text.Utf8Parser.TryParseUInt32D(), and System.value.

Referenced by System.Buffers.Text.Utf8Parser.TryParse().