view Implab/Formats/ReaderScanner.cs @ 180:c32688129f14 ref20160224

refactoring complete, JSONParser rewritten
author cin
date Thu, 24 Mar 2016 02:30:46 +0300
parents 0c3c69fe225b
children 4f82e0f161c3
line wrap: on
line source

using System;
using System.IO;

namespace Implab.Formats {
    public class ReaderScanner: TextScanner {
        const int CHUNK_SIZE = 1024;
        const int BUFFER_MAX = CHUNK_SIZE*1024;

        readonly TextReader m_reader;

        public ReaderScanner(TextReader reader, int limit, int chunk) : base(limit, chunk) {
            Safe.ArgumentNotNull(reader, "reader");
            m_reader = reader;
        }

        public ReaderScanner(TextReader reader) : this(reader, BUFFER_MAX, CHUNK_SIZE) {
        }

        protected override int Read(char[] buffer, int offset, int size) {
            return m_reader.Read(buffer, offset, size);
        }

        protected override void Dispose(bool disposing) {
            if (disposing)
                Safe.Dispose(m_reader);
            base.Dispose(disposing);
        }
    }
}