File: System\Buffers\ReadOnlySequenceDebugView.cs
Web Access
Project: src\src\libraries\System.Memory\src\System.Memory.csproj (System.Memory)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Diagnostics;
 
namespace System.Buffers
{
    internal sealed class ReadOnlySequenceDebugView<T>
    {
        private readonly T[] _array;
 
        private readonly ReadOnlySequenceDebugViewSegments _segments;
 
        public ReadOnlySequenceDebugView(ReadOnlySequence<T> sequence)
        {
            _array = sequence.ToArray();
 
            var segmentCount = 0;
            foreach (var _ in sequence)
            {
                segmentCount++;
            }
 
            var segments = new ReadOnlyMemory<T>[segmentCount];
            int i = 0;
            foreach (ReadOnlyMemory<T> readOnlyMemory in sequence)
            {
                segments[i] = readOnlyMemory;
                i++;
            }
            _segments = new ReadOnlySequenceDebugViewSegments()
            {
                Segments = segments
            };
        }
 
        public ReadOnlySequenceDebugViewSegments BufferSegments => _segments;
 
        [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
        public T[] Items => _array;
 
        [DebuggerDisplay("Count = {Segments.Length}", Name = "Segments")]
        public struct ReadOnlySequenceDebugViewSegments
        {
            [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
            public ReadOnlyMemory<T>[] Segments { get; set; }
        }
    }
}