public void CopyTo(BinaryWriter bw) { var length = Length; var cc = new CodeClock(); cc.Start(); _bb.CopyTo(bw); cc.Stop(); Report(cc, "CopyTo(BinaryWriter)", length); }
protected internal override ReadOnlySpan <byte> _GetReadableSpan(int index, int count) { if (0u >= (uint)count) { return(ReadOnlySpan <byte> .Empty); } switch (_componentCount) { case 0: return(ReadOnlySpan <byte> .Empty); case 1: //ComponentEntry c = _components[0]; //return c.Buffer.GetReadableSpan(index, count); ComponentEntry c = _components[0]; IByteBuffer buf = c.Buffer; if (buf.IsSingleIoBuffer) { return(buf.GetReadableSpan(c.Idx(index), count)); } break; } var merged = new Memory <byte>(new byte[count]); var buffers = GetSequence(index, count); int offset = 0; foreach (var buf in buffers) { Debug.Assert(merged.Length - offset >= buf.Length); buf.CopyTo(merged.Slice(offset)); offset += buf.Length; } return(merged.Span); }