diff Implab/Formats/Json/JsonTextScanner.cs @ 235:b49969a7043c v2

Слияние
author cin
date Thu, 05 Oct 2017 09:24:49 +0300
parents 3e26338eb977
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Implab/Formats/Json/JsonTextScanner.cs	Thu Oct 05 09:24:49 2017 +0300
@@ -0,0 +1,49 @@
+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);
+        }
+    }
+}