Example #1
0
        public void BasicsWork()
        {
            var ints = new Multispan<int>();
            Assert.Equal(0, ints.Count);

            int index1 = ints.AppendNewSegment(10);
            Assert.Equal(1, ints.Count);
            Assert.Equal(0, index1);
            Span<int> segment1 = ints[index1];
            Assert.True(segment1.Length >= 10);

            int index2 = ints.AppendNewSegment(1000);
            Assert.Equal(2, ints.Count);
            Assert.Equal(1, index2);
            Span<int> segment2 = ints[index2];
            Assert.True(segment2.Length >= 1000);

            var totalSize = segment1.Length + segment2.Length;
            var computedSize = ints.TotalItemCount();
            Assert.Equal(totalSize, computedSize);

            ints.ResizeSegment(0, 20);
            ints.ResizeSegment(1, 100);
            segment1 = ints[0];
            segment2 = ints[1];
            Assert.True(segment1.Length >= 20);
            Assert.True(segment2.Length >= 100);

            ints.Dispose();
            Assert.Equal(0, ints.Count);
        }
Example #2
0
        void IFormatter.ResizeBuffer()
        {
            var index = _buffer.AppendNewSegment(_segmentSize);

            _lastFull = _buffer.Last;
            _buffer.ResizeSegment(index, 0);
        }
Example #3
0
        private static void Initialize(ref Multispan <byte> ms)
        {
            Assert.Equal(0, ms.TotalItemCount());

            ms.AppendNewSegment(10);
            ms.ResizeSegment(0, 10);
            ms.AppendNewSegment(20);
            ms.ResizeSegment(1, 20);
            ms.AppendNewSegment(30);
            ms.ResizeSegment(2, 30);
            Assert.Equal(60, ms.TotalItemCount());
        }
Example #4
0
        private static void Initialize(ref Multispan<byte> ms)
        {
            Assert.Equal(0, ms.TotalItemCount());

            ms.AppendNewSegment(10);
            ms.ResizeSegment(0, 10);
            ms.AppendNewSegment(20);
            ms.ResizeSegment(1, 20);
            ms.AppendNewSegment(30);
            ms.ResizeSegment(2, 30);
            Assert.Equal(60, ms.TotalItemCount());
        }
Example #5
0
        void IFormatter.ResizeBuffer(int desiredFreeBytesHint)
        {
            var newSize = _segmentSize;

            if (desiredFreeBytesHint != -1)
            {
                newSize = desiredFreeBytesHint;
            }
            var index = _buffer.AppendNewSegment(newSize);

            _lastFull = _buffer.Last;
            _buffer.ResizeSegment(index, 0);
        }
Example #6
0
 public MultispanFormatter(Multispan<byte> buffer, int segmentSize, FormattingData formattingData)
 {
     _formattingData = formattingData;
     _segmentSize = segmentSize;
     _buffer = buffer;
     int index = _buffer.AppendNewSegment(_segmentSize); // TODO: is this the right thing to do? Should Multispan be resilient to empty segment list?
     _lastFull = _buffer.Last;
     _buffer.ResizeSegment(index, 0);
 }
Example #7
0
        public MultispanFormatter(Multispan <byte> buffer, int segmentSize, EncodingData encoding)
        {
            _encoding    = encoding;
            _segmentSize = segmentSize;
            _buffer      = buffer;
            int index = _buffer.AppendNewSegment(_segmentSize); // TODO: is this the right thing to do? Should Multispan be resilient to empty segment list?

            _lastFull = _buffer.Last;
            _buffer.ResizeSegment(index, 0);
        }
Example #8
0
        public static Multispan <byte> ToMultispan(params string[] sections)
        {
            var result = new Multispan <byte>();

            for (int i = 0; i < sections.Length; i++)
            {
                var bytes = new Utf8String(sections[i]).Bytes.CreateArray();
                result.AppendNewSegment(bytes.Length);
                result.Last.Set(bytes);
                result.ResizeSegment(i, bytes.Length);
            }
            return(result);
        }
        public static Multispan <byte> ToMultispan(params string[] sections)
        {
            var result = new Multispan <byte>();

            for (int i = 0; i < sections.Length; i++)
            {
                var bytes = Encoding.UTF8.GetBytes(sections[i]);
                result.AppendNewSegment(bytes.Length);
                result.Last.Set(bytes);
                result.ResizeSegment(i, bytes.Length);
            }
            return(result);
        }
Example #10
0
        public void BasicsWork()
        {
            var ints = new Multispan <int>();

            Assert.Equal(0, ints.Count);

            int index1 = ints.AppendNewSegment(10);

            Assert.Equal(1, ints.Count);
            Assert.Equal(0, index1);
            Span <int> segment1 = ints[index1];

            Assert.True(segment1.Length >= 10);

            int index2 = ints.AppendNewSegment(1000);

            Assert.Equal(2, ints.Count);
            Assert.Equal(1, index2);
            Span <int> segment2 = ints[index2];

            Assert.True(segment2.Length >= 1000);

            var totalSize    = segment1.Length + segment2.Length;
            var computedSize = ints.TotalItemCount();

            Assert.Equal(totalSize, computedSize);

            ints.ResizeSegment(0, 20);
            ints.ResizeSegment(1, 100);
            segment1 = ints[0];
            segment2 = ints[1];
            Assert.True(segment1.Length >= 20);
            Assert.True(segment2.Length >= 100);

            ints.Dispose();
            Assert.Equal(0, ints.Count);
        }
Example #11
0
 public static Multispan<byte> ToMultispan(params string[] sections)
 {
     var result = new Multispan<byte>();
     for (int i = 0; i < sections.Length; i++) {
         var bytes = Encoding.UTF8.GetBytes(sections[i]);
         result.AppendNewSegment(bytes.Length);
         result.Last.Set(bytes);
         result.ResizeSegment(i, bytes.Length);
     }
     return result;
 }