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

◆ TryReadToSlow() [1/4]

bool System.Buffers.SequenceReader< T >.TryReadToSlow ( out ReadOnlySequence< T > sequence,
T delimiter,
T delimiterEscape,
int index,
bool advancePastDelimiter )
inlineprivate

Definition at line 354 of file SequenceReader.cs.

355 {
356 SequenceReader<T> sequenceReader = this;
357 ReadOnlySpan<T> span = UnreadSpan;
358 bool flag = false;
359 do
360 {
361 if (index >= 0)
362 {
363 if (!(index == 0 && flag))
364 {
365 if (index > 0 && span[index - 1].Equals(delimiterEscape))
366 {
367 int num = 1;
368 int num2 = index - 2;
369 while (num2 >= 0 && span[num2].Equals(delimiterEscape))
370 {
371 num2--;
372 }
373 if (num2 < 0 && flag)
374 {
375 num++;
376 }
377 num += index - 2 - num2;
378 if (((uint)num & (true ? 1u : 0u)) != 0)
379 {
380 Advance(index + 1);
381 flag = false;
382 span = UnreadSpan;
383 goto IL_01bd;
384 }
385 }
387 sequence = Sequence.Slice(sequenceReader.Position, Position);
388 if (advancePastDelimiter)
389 {
390 Advance(1L);
391 }
392 return true;
393 }
394 flag = false;
395 Advance(index + 1);
396 span = UnreadSpan;
397 }
398 else
399 {
400 if (span.Length > 0 && span[span.Length - 1].Equals(delimiterEscape))
401 {
402 int num3 = 1;
403 int num4 = span.Length - 2;
404 while (num4 >= 0 && span[num4].Equals(delimiterEscape))
405 {
406 num4--;
407 }
408 num3 += span.Length - 2 - num4;
409 flag = ((!(num4 < 0 && flag)) ? ((num3 & 1) != 0) : ((num3 & 1) == 0));
410 }
411 else
412 {
413 flag = false;
414 }
415 AdvanceCurrentSpan(span.Length);
416 span = CurrentSpan;
417 }
418 goto IL_01bd;
419 IL_01bd:
420 index = span.IndexOf(delimiter);
421 }
422 while (!End);
423 this = sequenceReader;
424 sequence = default(ReadOnlySequence<T>);
425 return false;
426 }
ReadOnlySequence< T > Sequence
readonly ReadOnlySpan< T > UnreadSpan
void AdvanceCurrentSpan(long count)

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