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

◆ TryReadTo() [3/6]

bool System.Buffers.SequenceReader< T >.TryReadTo ( out ReadOnlySequence< T > sequence,
T delimiter,
T delimiterEscape,
bool advancePastDelimiter = true )
inline

Definition at line 465 of file SequenceReader.cs.

466 {
467 SequenceReader<T> sequenceReader = this;
468 ReadOnlySpan<T> span = UnreadSpan;
469 bool flag = false;
470 while (_moreData)
471 {
472 int num = span.IndexOf(delimiter);
473 if (num != -1)
474 {
475 if (!(num == 0 && flag))
476 {
477 if (num > 0 && span[num - 1].Equals(delimiterEscape))
478 {
479 int num2 = 0;
480 int num3 = num;
481 while (num3 > 0 && span[num3 - 1].Equals(delimiterEscape))
482 {
483 num3--;
484 num2++;
485 }
486 if (num2 == num && flag)
487 {
488 num2++;
489 }
490 flag = false;
491 if (((uint)num2 & (true ? 1u : 0u)) != 0)
492 {
493 Advance(num + 1);
494 span = UnreadSpan;
495 continue;
496 }
497 }
498 if (num > 0)
499 {
500 Advance(num);
501 }
502 sequence = Sequence.Slice(sequenceReader.Position, Position);
503 if (advancePastDelimiter)
504 {
505 Advance(1L);
506 }
507 return true;
508 }
509 flag = false;
510 Advance(num + 1);
511 span = UnreadSpan;
512 }
513 else
514 {
515 int num4 = 0;
516 int num5 = span.Length;
517 while (num5 > 0 && span[num5 - 1].Equals(delimiterEscape))
518 {
519 num5--;
520 num4++;
521 }
522 if (flag && num4 == span.Length)
523 {
524 num4++;
525 }
526 flag = num4 % 2 != 0;
527 Advance(span.Length);
528 span = CurrentSpan;
529 }
530 }
531 this = sequenceReader;
532 sequence = default(ReadOnlySequence<T>);
533 return false;
534 }
ReadOnlySequence< T > Sequence
readonly ReadOnlySpan< T > UnreadSpan

References System.Buffers.SequenceReader< T >._moreData, System.Buffers.SequenceReader< T >.Advance(), System.Buffers.SequenceReader< T >.CurrentSpan, System.L, System.ReadOnlySpan< T >.Length, System.Buffers.SequenceReader< T >.Position, System.Buffers.SequenceReader< T >.Sequence, and System.Buffers.SequenceReader< T >.UnreadSpan.