static IEnumerable <ReadOnlySequence <byte> > MakeSequences(byte[] buffer) { if (buffer.Length == 0) { return(new[] { ReadOnlySequence <byte> .Empty }); } if (buffer.Length < 2) { return(new[] { new ReadOnlySequence <byte>(buffer) }); } var split = buffer.Length / 2; var left = buffer.Take(split).ToArray(); var right = buffer.Skip(split).ToArray(); var ret = new List <ReadOnlySequence <byte> >(); ret.Add(new ReadOnlySequence <byte>(buffer)); var start = new NaughtyStrings_ByteNode(left.AsMemory()); var end = start.Append(right.AsMemory()); ret.Add(new ReadOnlySequence <byte>(start, 0, end, end.Memory.Length)); return(ret); }
public NaughtyStrings_ByteNode Append(ReadOnlyMemory <byte> m) { var ret = new NaughtyStrings_ByteNode(m); ret.RunningIndex = this.Memory.Length; this.Next = ret; return(ret); }