102 while (
Sequence.TryGet(ref position, out memory))
170 if (memory.Length == 0)
286 int num = unreadSpan.
Length;
289 while (
Sequence.TryGet(ref position, out memory))
309 int num = unreadSpan.IndexOf(delimiter);
316 return TryReadToSlow(out span, delimiter, advancePastDelimiter);
333 int num = unreadSpan.IndexOf(delimiter);
334 if ((num > 0 && !unreadSpan[num - 1].Equals(delimiterEscape)) || num == 0)
336 span = unreadSpan.
Slice(0, num);
340 return TryReadToSlow(out span, delimiter, delimiterEscape, num, advancePastDelimiter);
363 if (!(
index == 0 && flag))
365 if (
index > 0 && span[
index - 1].Equals(delimiterEscape))
368 int num2 =
index - 2;
369 while (num2 >= 0 && span[num2].Equals(delimiterEscape))
373 if (num2 < 0 && flag)
377 num +=
index - 2 - num2;
378 if (((uint)num & (
true ? 1u : 0u)) != 0)
388 if (advancePastDelimiter)
403 int num4 = span.Length - 2;
404 while (num4 >= 0 && span[num4].Equals(delimiterEscape))
408 num3 += span.Length - 2 - num4;
409 flag = ((!(num4 < 0 && flag)) ? ((num3 & 1) != 0) : ((num3 & 1) == 0));
420 index = span.IndexOf(delimiter);
423 this = sequenceReader;
443 int num = span.IndexOf(delimiter);
451 if (advancePastDelimiter)
460 this = sequenceReader;
472 int num = span.IndexOf(delimiter);
475 if (!(num == 0 && flag))
477 if (num > 0 && span[num - 1].Equals(delimiterEscape))
481 while (num3 > 0 && span[num3 - 1].Equals(delimiterEscape))
486 if (num2 == num && flag)
491 if (((uint)num2 & (
true ? 1u : 0u)) != 0)
503 if (advancePastDelimiter)
517 while (num5 > 0 && span[num5 - 1].Equals(delimiterEscape))
522 if (flag && num4 == span.
Length)
526 flag = num4 % 2 != 0;
531 this = sequenceReader;
540 int num = ((delimiters.Length == 2) ? unreadSpan.IndexOfAny(delimiters[0], delimiters[1]) : unreadSpan.IndexOfAny(delimiters));
543 span = unreadSpan.
Slice(0, num);
544 Advance(num + (advancePastDelimiter ? 1 : 0));
576 int num = ((delimiters.Length == 2) ? span.IndexOfAny(delimiters[0], delimiters[1]) : span.IndexOfAny(delimiters));
584 if (advancePastDelimiter)
593 this = sequenceReader;
601 int num = unreadSpan.IndexOf(delimiter);
604 span = unreadSpan.
Slice(0, num);
608 return TryReadToSlow(out span, delimiter, advancePastDelimiter);
624 if (delimiter.
Length == 0)
633 if (!
TryReadTo(out sequence, delimiter[0], advancePastDelimiter:
false))
635 this = sequenceReader;
638 if (delimiter.
Length == 1)
640 if (advancePastDelimiter)
652 if (advancePastDelimiter)
661 this = sequenceReader;
666 public bool TryAdvanceTo(T delimiter,
bool advancePastDelimiter =
true)
669 int num = unreadSpan.IndexOf(delimiter);
672 Advance(advancePastDelimiter ? (num + 1) : num);
682 int num = unreadSpan.IndexOfAny(delimiters);
741 if (!val.Equals(value0) && !val.Equals(value1) && !val.Equals(value2) && !val.Equals(value3))
766 if (!val.Equals(value0) && !val.Equals(value1) && !val.Equals(value2))
791 if (!val.Equals(value0) && !val.Equals(value1))
821 public bool IsNext(T next,
bool advancePast =
false)
842 if (unreadSpan.StartsWith(next))
862 while (next.StartsWith(
value))
875 if (!
Sequence.TryGet(ref position, out memory))
880 while (memory.
Length <= 0);
static byte Min(byte val1, byte val2)
static void ThrowArgumentOutOfRangeException(System.ExceptionArgument argument)
static void ThrowArgumentOutOfRangeException_OffsetOutOfRange()
ReadOnlySequence< T > Slice(long start, long length)
ReadOnlySpan< T > GetFirstSpan()
ReadOnlySequence< T > Sequence
SequencePosition _nextPosition
bool TryReadToAny(out ReadOnlySequence< T > sequence, ReadOnlySpan< T > delimiters, bool advancePastDelimiter=true)
readonly ReadOnlySpan< T > UnreadSpan
long AdvancePastAny(T value0, T value1)
bool TryReadToAnySlow(out ReadOnlySpan< T > span, ReadOnlySpan< T > delimiters, bool advancePastDelimiter)
readonly bool TryCopyMultisegment(Span< T > destination)
ReadOnlySpan< T > CurrentSpan
bool TryReadToSlow(out ReadOnlySpan< T > span, T delimiter, bool advancePastDelimiter)
bool TryAdvanceTo(T delimiter, bool advancePastDelimiter=true)
bool TryReadTo(out ReadOnlySequence< T > sequence, T delimiter, bool advancePastDelimiter=true)
SequenceReader(ReadOnlySequence< T > sequence)
readonly bool TryCopyTo(Span< T > destination)
bool TryReadTo(out ReadOnlySpan< T > span, ReadOnlySpan< T > delimiter, bool advancePastDelimiter=true)
long AdvancePastAny(ReadOnlySpan< T > values)
bool TryReadToSlow(out ReadOnlySpan< T > span, ReadOnlySpan< T > delimiter, bool advancePastDelimiter)
readonly ReadOnlySequence< T > UnreadSequence
readonly SequencePosition Position
bool TryRead(out T value)
readonly bool TryPeek(out T value)
bool TryReadTo(out ReadOnlySequence< T > sequence, ReadOnlySpan< T > delimiter, bool advancePastDelimiter=true)
bool TryReadToSlow(out ReadOnlySpan< T > span, T delimiter, T delimiterEscape, int index, bool advancePastDelimiter)
bool TryReadToAny(out ReadOnlySpan< T > span, ReadOnlySpan< T > delimiters, bool advancePastDelimiter=true)
bool TryReadToSlow(out ReadOnlySequence< T > sequence, T delimiter, T delimiterEscape, int index, bool advancePastDelimiter)
bool IsNext(T next, bool advancePast=false)
long AdvancePast(T value)
void AdvanceToNextSpan(long count)
long AdvancePastAny(T value0, T value1, T value2, T value3)
long AdvancePastAny(T value0, T value1, T value2)
readonly bool TryPeek(long offset, out T value)
bool TryReadTo(out ReadOnlySpan< T > span, T delimiter, bool advancePastDelimiter=true)
SequencePosition _currentPosition
bool IsNextSlow(ReadOnlySpan< T > next, bool advancePast)
bool TryReadToAnyInternal(out ReadOnlySequence< T > sequence, ReadOnlySpan< T > delimiters, bool advancePastDelimiter, int skip=0)
bool TryReadTo(out ReadOnlySpan< T > span, T delimiter, T delimiterEscape, bool advancePastDelimiter=true)
bool TryReadToInternal(out ReadOnlySequence< T > sequence, T delimiter, bool advancePastDelimiter, int skip=0)
bool TryAdvanceToAny(ReadOnlySpan< T > delimiters, bool advancePastDelimiter=true)
bool TryReadTo(out ReadOnlySequence< T > sequence, T delimiter, T delimiterEscape, bool advancePastDelimiter=true)
void AdvanceCurrentSpan(long count)
void RetreatToPreviousSpan(long consumed)
bool IsNext(ReadOnlySpan< T > next, bool advancePast=false)
unsafe ReadOnlySpan< T > Span
void CopyTo(Span< T > destination)
override bool Equals(object? obj)
ReadOnlySpan< T > Slice(int start)