Mercurial > pub > ImplabNet
view Implab/Formats/Json/JsonTextScanner.cs @ 255:b00441e04738 v3
Adde workaround to the behaviour of the logical operations stack in conjuction
with async/await methods
author | cin |
---|---|
date | Wed, 04 Apr 2018 15:38:48 +0300 |
parents | 3e26338eb977 |
children |
line wrap: on
line source
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Implab.Formats.Json { public class JsonTextScanner : JsonScanner { const int _bufferSize = 16*4096; readonly TextReader m_reader; JsonTextScanner(TextReader reader, char[] buffer) : base(buffer, 0, 0) { m_reader = reader; } protected override int Read(char[] buffer, int offset, int size) { return m_reader.Read(buffer, offset, size); } public static JsonTextScanner Create(string file, Encoding encoding) { return new JsonTextScanner(new StreamReader(file, encoding), new char[_bufferSize]); } public static JsonTextScanner Create(string file) { return new JsonTextScanner(new StreamReader(file), new char[_bufferSize]); } public static JsonTextScanner Create(Stream stream, Encoding encoding) { return new JsonTextScanner(new StreamReader(stream, encoding), new char[_bufferSize]); } public static JsonTextScanner Create(Stream stream) { return new JsonTextScanner(new StreamReader(stream), new char[_bufferSize]); } public static JsonTextScanner Create(TextReader reader) { Safe.ArgumentNotNull(reader, nameof(reader)); return new JsonTextScanner(reader, new char[_bufferSize]); } protected override void Dispose(bool disposing) { if (disposing) Safe.Dispose(m_reader); base.Dispose(disposing); } } }