Skip to content

Add TextReader and TextWriter Span/Buffer-based APIs #22840

@stephentoub

Description

@stephentoub

Separated out of https://github.com/dotnet/corefx/issues/21281 for tracking purposes.

  • Implement in System.Runtime.Extensions
  • Expose from System.Runtime.Extensions contract
  • Add tests to System.Runtime.Extensions.Tests
namespace System.IO
{
    public class TextReader
    {
        public virtual int Read(Span<char> destination);
        public virtual ValueTask<int> ReadAsync(Buffer<char> destination, CancellationToken cancellationToken = default(CancellationToken));
        public virtual int ReadBlock(Span<char> destination);
        public virtual ValueTask<int> ReadBlockAsync(Buffer<char> destination, CancellationToken cancellationToken = default(CancellationToken));}

    public class TextWriter
    {
        public virtual void Write(ReadOnlySpan<char> source);
        public virtual Task WriteAsync(ReadOnlyBuffer<char> source, CancellationToken cancellationToken = default(CancellationToken));
        public virtual void WriteLine(ReadOnlySpan<char> source);
        public virtual Task WriteLineAsync(ReadOnlyBuffer<char> source, CancellationToken cancellationToken = default(CancellationToken));}
}

EDIT 7/25/2017: Updated with CancellationTokens per API review.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions