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

◆ ConsumeZeroMultiSegment()

ConsumeNumberResult System.Text.Json.Utf8JsonReader.ConsumeZeroMultiSegment ( ref ReadOnlySpan< byte > data,
ref int i,
in PartialStateForRollback rollBackState )
inlineprivate

Definition at line 2958 of file Utf8JsonReader.cs.

2959 {
2960 i++;
2962 byte value;
2963 if (i < data.Length)
2964 {
2965 value = data[i];
2966 if (JsonConstants.Delimiters.IndexOf(value) >= 0)
2967 {
2968 return ConsumeNumberResult.Success;
2969 }
2970 }
2971 else
2972 {
2973 if (IsLastSpan)
2974 {
2975 return ConsumeNumberResult.Success;
2976 }
2977 if (!GetNextSpan())
2978 {
2979 if (IsLastSpan)
2980 {
2981 return ConsumeNumberResult.Success;
2982 }
2983 return ConsumeNumberResult.NeedMoreData;
2984 }
2985 _totalConsumed += i;
2986 HasValueSequence = true;
2987 i = 0;
2988 data = _buffer;
2989 value = data[i];
2990 if (JsonConstants.Delimiters.IndexOf(value) >= 0)
2991 {
2992 return ConsumeNumberResult.Success;
2993 }
2994 }
2995 value = data[i];
2996 if (value != 46 && value != 69 && value != 101)
2997 {
2999 ThrowHelper.ThrowJsonReaderException(ref this, JsonHelpers.IsInRangeInclusive(value, 48, 57) ? ExceptionResource.InvalidLeadingZeroInNumber : ExceptionResource.ExpectedEndOfDigitNotFound, value);
3000 }
3001 return ConsumeNumberResult.OperationIncomplete;
3002 }
void RollBackState(in PartialStateForRollback state, bool isError=false)

References System.Text.Json.Utf8JsonReader._buffer, System.Text.Json.Utf8JsonReader._bytePositionInLine, System.Text.Json.Utf8JsonReader._totalConsumed, System.Text.Json.JsonConstants.Delimiters, System.Text.Json.Dictionary, System.Text.Json.Utf8JsonReader.GetNextSpan(), System.Text.Json.Utf8JsonReader.HasValueSequence, System.Text.Json.JsonHelpers.IsInRangeInclusive(), System.Text.Json.Utf8JsonReader.IsLastSpan, System.Text.Json.Utf8JsonReader.RollBackState(), System.Text.Json.ThrowHelper.ThrowJsonReaderException(), and System.value.

Referenced by System.Text.Json.Utf8JsonReader.TryGetNumberMultiSegment().