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

◆ Slice() [4/9]

ReadOnlySequence< T > System.Buffers.ReadOnlySequence< T >.Slice ( long start,
long length )
inline

Definition at line 179 of file ReadOnlySequence.cs.

180 {
181 if (start < 0 || length < 0)
182 {
184 }
187 object startObject = _startObject;
188 object endObject = _endObject;
189 SequencePosition start2;
190 SequencePosition end;
191 if (startObject != endObject)
192 {
193 ReadOnlySequenceSegment<T> readOnlySequenceSegment = (ReadOnlySequenceSegment<T>)startObject;
194 int num = readOnlySequenceSegment.Memory.Length - index;
195 if (num > start)
196 {
197 index += (int)start;
198 start2 = new SequencePosition(startObject, index);
199 end = GetEndPosition(readOnlySequenceSegment, startObject, index, endObject, index2, length);
200 }
201 else
202 {
203 if (num < 0)
204 {
206 }
207 start2 = SeekMultiSegment(readOnlySequenceSegment.Next, endObject, index2, start - num, System.ExceptionArgument.start);
208 int integer = start2.GetInteger();
209 object @object = start2.GetObject();
210 if (@object != endObject)
211 {
212 end = GetEndPosition((ReadOnlySequenceSegment<T>)@object, @object, integer, endObject, index2, length);
213 }
214 else
215 {
216 if (index2 - integer < length)
217 {
219 }
220 end = new SequencePosition(@object, integer + (int)length);
221 }
222 }
223 }
224 else
225 {
226 if (index2 - index < start)
227 {
229 }
230 index += (int)start;
231 start2 = new SequencePosition(startObject, index);
232 if (index2 - index < length)
233 {
235 }
236 end = new SequencePosition(startObject, index + (int)length);
237 }
238 return SliceImpl(in start2, in end);
239 }
static void ThrowArgumentOutOfRangeException_PositionOutOfRange()
static void ThrowStartOrEndArgumentValidationException(long start)
static SequencePosition SeekMultiSegment(ReadOnlySequenceSegment< T > currentSegment, object endObject, int endIndex, long offset, System.ExceptionArgument argument)
ReadOnlySequence< T > SliceImpl(in SequencePosition start, in SequencePosition end)
static SequencePosition GetEndPosition(ReadOnlySequenceSegment< T > startSegment, object startObject, int startIndex, object endObject, int endIndex, long length)
static int GetIndex(int Integer)

References System.Buffers.ReadOnlySequence< T >._endInteger, System.Buffers.ReadOnlySequence< T >._endObject, System.Buffers.ReadOnlySequence< T >._startInteger, System.Buffers.ReadOnlySequence< T >._startObject, System.Buffers.ReadOnlySequence< T >.GetEndPosition(), System.Buffers.ReadOnlySequence< T >.GetIndex(), System.SequencePosition.GetInteger(), System.SequencePosition.GetObject(), System.index, System.index2, System.L, System.length, System.Buffers.ReadOnlySequenceSegment< T >.Next, System.Buffers.ReadOnlySequence< T >.SeekMultiSegment(), System.Buffers.ReadOnlySequence< T >.SliceImpl(), System.start, System.ThrowHelper.ThrowArgumentOutOfRangeException_PositionOutOfRange(), and System.ThrowHelper.ThrowStartOrEndArgumentValidationException().

Referenced by System.Text.Json.Utf8JsonReader.CheckLiteralMultiSegment(), System.Text.Json.Utf8JsonReader.ConsumeStringAndValidateMultiSegment(), System.Text.Json.Utf8JsonReader.ConsumeStringNextSegment(), System.Text.Json.Utf8JsonReader.SkipOrConsumeCommentMultiSegmentWithRollback(), System.Buffers.ReadOnlySequence< T >.Slice(), System.Buffers.ReadOnlySequence< T >.Slice(), System.Buffers.ReadOnlySequence< T >.Slice(), System.Text.Json.Utf8JsonReader.TryGetDateTimeCore(), System.Text.Json.Utf8JsonReader.TryGetDateTimeOffsetCore(), System.Text.Json.Utf8JsonReader.TryGetGuidCore(), System.Text.Json.Utf8JsonReader.TryGetNumberMultiSegment(), and System.Text.Json.JsonDocument.TryParseValue().