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

◆ TryGetNumberMultiSegment()

bool System.Text.Json.Utf8JsonReader.TryGetNumberMultiSegment ( ReadOnlySpan< byte > data,
out int consumed )
inlineprivate

Definition at line 2813 of file Utf8JsonReader.cs.

2814 {
2815 PartialStateForRollback rollBackState = CaptureState();
2816 consumed = 0;
2817 int i = 0;
2819 if (consumeNumberResult == ConsumeNumberResult.NeedMoreData)
2820 {
2822 return false;
2823 }
2824 byte b = data[i];
2825 if (b == 48)
2826 {
2828 if (consumeNumberResult2 == ConsumeNumberResult.NeedMoreData)
2829 {
2831 return false;
2832 }
2833 if (consumeNumberResult2 != 0)
2834 {
2835 b = data[i];
2836 goto IL_00bf;
2837 }
2838 }
2839 else
2840 {
2842 if (consumeNumberResult3 == ConsumeNumberResult.NeedMoreData)
2843 {
2845 return false;
2846 }
2847 if (consumeNumberResult3 != 0)
2848 {
2849 b = data[i];
2850 if (b != 46 && b != 69 && b != 101)
2851 {
2853 ThrowHelper.ThrowJsonReaderException(ref this, ExceptionResource.ExpectedEndOfDigitNotFound, b);
2854 }
2855 goto IL_00bf;
2856 }
2857 }
2858 goto IL_01b1;
2859 IL_00bf:
2860 if (b == 46)
2861 {
2862 i++;
2865 if (consumeNumberResult4 == ConsumeNumberResult.NeedMoreData)
2866 {
2868 return false;
2869 }
2871 {
2872 goto IL_01b1;
2873 }
2874 b = data[i];
2875 if (b != 69 && b != 101)
2876 {
2878 ThrowHelper.ThrowJsonReaderException(ref this, ExceptionResource.ExpectedNextDigitEValueNotFound, b);
2879 }
2880 }
2881 i++;
2884 if (consumeNumberResult == ConsumeNumberResult.NeedMoreData)
2885 {
2887 return false;
2888 }
2889 i++;
2891 switch (ConsumeIntegerDigitsMultiSegment(ref data, ref i))
2892 {
2893 case ConsumeNumberResult.NeedMoreData:
2895 return false;
2896 default:
2898 ThrowHelper.ThrowJsonReaderException(ref this, ExceptionResource.ExpectedEndOfDigitNotFound, data[i]);
2899 break;
2900 case ConsumeNumberResult.Success:
2901 break;
2902 }
2903 goto IL_01b1;
2904 IL_01b1:
2905 if (HasValueSequence)
2906 {
2907 SequencePosition startPosition = rollBackState.GetStartPosition();
2908 SequencePosition end = new SequencePosition(_currentPosition.GetObject(), _currentPosition.GetInteger() + i);
2910 consumed = i;
2911 }
2912 else
2913 {
2914 ValueSpan = data.Slice(0, i);
2915 consumed = i;
2916 }
2917 return true;
2918 }
ReadOnlySequence< T > Slice(long start, long length)
ReadOnlySpan< T > Slice(int start)
ConsumeNumberResult ConsumeDecimalDigitsMultiSegment(ref ReadOnlySpan< byte > data, ref int i, in PartialStateForRollback rollBackState)
PartialStateForRollback CaptureState()
ConsumeNumberResult ConsumeNegativeSignMultiSegment(ref ReadOnlySpan< byte > data, ref int i, in PartialStateForRollback rollBackState)
ConsumeNumberResult ConsumeZeroMultiSegment(ref ReadOnlySpan< byte > data, ref int i, in PartialStateForRollback rollBackState)
readonly ReadOnlySequence< byte > _sequence
ConsumeNumberResult ConsumeIntegerDigitsMultiSegment(ref ReadOnlySpan< byte > data, ref int i)
void RollBackState(in PartialStateForRollback state, bool isError=false)
ReadOnlySequence< byte > ValueSequence
ConsumeNumberResult ConsumeSignMultiSegment(ref ReadOnlySpan< byte > data, ref int i, in PartialStateForRollback rollBackState)

References System.Text.Json.Utf8JsonReader._bytePositionInLine, System.Text.Json.Utf8JsonReader._currentPosition, System.Text.Json.Utf8JsonReader._sequence, System.Text.Json.Utf8JsonReader.CaptureState(), System.Text.Json.Utf8JsonReader.ConsumeDecimalDigitsMultiSegment(), System.Text.Json.Utf8JsonReader.ConsumeIntegerDigitsMultiSegment(), System.Text.Json.Utf8JsonReader.ConsumeNegativeSignMultiSegment(), System.Text.Json.Utf8JsonReader.ConsumeSignMultiSegment(), System.Text.Json.Utf8JsonReader.ConsumeZeroMultiSegment(), System.Text.Json.Dictionary, System.SequencePosition.GetInteger(), System.SequencePosition.GetObject(), System.Text.Json.Utf8JsonReader.HasValueSequence, System.Text.Json.Utf8JsonReader.RollBackState(), System.ReadOnlySpan< T >.Slice(), System.Buffers.ReadOnlySequence< T >.Slice(), System.Text.Json.ThrowHelper.ThrowJsonReaderException(), System.Text.Json.Utf8JsonReader.ValueSequence, and System.Text.Json.Utf8JsonReader.ValueSpan.

Referenced by System.Text.Json.Utf8JsonReader.ConsumeNumberMultiSegment(), and System.Text.Json.Utf8JsonReader.ReadFirstTokenMultiSegment().