diff Implab/Formats/ReaderScanner.cs @ 192:f1da3afc3521 release v2.1

Слияние с v2
author cin
date Fri, 22 Apr 2016 13:10:34 +0300
parents 4f82e0f161c3
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Implab/Formats/ReaderScanner.cs	Fri Apr 22 13:10:34 2016 +0300
@@ -0,0 +1,30 @@
+using System;
+using System.IO;
+
+namespace Implab.Formats {
+    public class ReaderScanner: TextScanner {
+        const int CHUNK_SIZE = 1024*4;
+        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);
+        }
+    }
+}
+