public CharBlock ReadChars(int length, Encoding encoding = null) { CharBlock block = CharBlock.Create(length); var len = ReadChars(block.Data, length, encoding); block.Count = len; return(block); }
public bool TryReadLine(out CharBlock value, Encoding encoding, bool returnEof = false) { if (encoding == null) { encoding = Encoding; } return(TryReadWith(encoding.GetBytes("\r\n"), out value, encoding, returnEof)); }
public static CharBlock Create(int count) { CharBlock result = new CharBlock(); result.Data = System.Buffers.ArrayPool <char> .Shared.Rent(count); result.Offset = 0; result.Count = count; return(result); }
public bool TryReadWith(byte[] eof, out CharBlock value, Encoding encoding, bool returnEof = false) { IndexOfResult result = IndexOf(eof); int length = result.Length; if (result.End != null) { if (returnEof) { value = ReadChars(length, encoding); } else { value = ReadChars(length - eof.Length, encoding); ReadFree(eof.Length); } return(true); } value = default; return(false); }