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

◆ TryGetBuffer()

bool System.Buffers.ReadOnlySequence< T >.TryGetBuffer ( in SequencePosition position,
out ReadOnlyMemory< T > memory,
out SequencePosition next )
inlinepackage

Definition at line 494 of file ReadOnlySequence.cs.

495 {
496 object @object = position.GetObject();
497 next = default(SequencePosition);
498 if (@object == null)
499 {
500 memory = default(ReadOnlyMemory<T>);
501 return false;
502 }
503 SequenceType sequenceType = GetSequenceType();
504 object endObject = _endObject;
505 int integer = position.GetInteger();
507 if (sequenceType == SequenceType.MultiSegment)
508 {
509 ReadOnlySequenceSegment<T> readOnlySequenceSegment = (ReadOnlySequenceSegment<T>)@object;
510 if (readOnlySequenceSegment != endObject)
511 {
512 ReadOnlySequenceSegment<T> next2 = readOnlySequenceSegment.Next;
513 if (next2 == null)
514 {
516 }
517 next = new SequencePosition(next2, 0);
518 memory = readOnlySequenceSegment.Memory.Slice(integer);
519 }
520 else
521 {
522 memory = readOnlySequenceSegment.Memory.Slice(integer, index - integer);
523 }
524 }
525 else
526 {
527 if (@object != endObject)
528 {
530 }
531 if (sequenceType == SequenceType.Array)
532 {
533 memory = new ReadOnlyMemory<T>((T[])@object, integer, index - integer);
534 }
535 else if (typeof(T) == typeof(char) && sequenceType == SequenceType.String)
536 {
537 memory = (ReadOnlyMemory<T>)(object)((string)@object).AsMemory(integer, index - integer);
538 }
539 else
540 {
541 memory = ((MemoryManager<T>)@object).Memory.Slice(integer, index - integer);
542 }
543 }
544 return true;
545 }
SequenceType
static void ThrowInvalidOperationException_EndPositionNotReached()
static int GetIndex(int Integer)

References System.Buffers.ReadOnlySequence< T >._endInteger, System.Buffers.ReadOnlySequence< T >._endObject, System.Buffers.ReadOnlySequence< T >.GetIndex(), System.Buffers.ReadOnlySequence< T >.GetSequenceType(), System.index, System.Buffers.ReadOnlySequenceSegment< T >.Memory, System.Buffers.ReadOnlySequenceSegment< T >.Next, and System.ThrowHelper.ThrowInvalidOperationException_EndPositionNotReached().

Referenced by System.Buffers.ReadOnlySequence< T >.TryGet().