Website Summary Files Commits Branches @commit @diff @stats
path: root / homework / 81709 / JSCompiler.Core / BaseInputStream.cs
diff options
context:
space:
mode:
1 files changed, 0 insertions, 91 deletions
-rw-r--r--homework/81709/JSCompiler.Core/BaseInputStream.cs91
diff --git a/homework/81709/JSCompiler.Core/BaseInputStream.cs b/homework/81709/JSCompiler.Core/BaseInputStream.cs
deleted file mode 100644
index 7145ce8..0000000
--- a/homework/81709/JSCompiler.Core/BaseInputStream.cs
+++ /dev/null
@@ -1,91 +0,0 @@
-using System;
-using System.IO;
-using System.Collections;
-using System.Collections.Generic;
-
-namespace JSCompiler.Core
-{
- public class BaseInputStream : IInputStream
- {
- private char[][] buffs;
-
- private int index;
-
- private int activeBuffer;
-
- private StreamReader reader;
-
- public BaseInputStream(Stream stream, int buffLength = 4096)
- {
- this.Line = 0;
- this.index = 0;
- this.activeBuffer = 0;
- this.buffs = new char[2][];
- this.buffs[0] = new char[buffLength];
- this.buffs[1] = new char[buffLength];
- this.reader = new StreamReader(stream);
-
- ReadStream(buffs[0], buffLength);
- }
-
- public BaseInputStream(string path, int buffLength = 4096)
- : this(new FileStream(path, FileMode.Open), buffLength) { }
-
- public int Line { get; private set; }
-
- public void Close()
- {
- reader.Close();
- }
-
- public bool IsEndOfStream()
- {
- return Peek() == 0;
- }
-
- public char Next()
- {
- if (IsEndOfStream()) throw new EndOfStreamException();
-
- char cur = Peek();
-
- if (cur == '\n')
- {
- Line++;
- }
-
- index++;
-
- if (index >= buffs[activeBuffer].Length)
- {
- SwitchBuffers();
- }
-
- return cur;
- }
-
- public char Peek()
- {
- return buffs[activeBuffer][index];
- }
-
- private void SwitchBuffers()
- {
- index = 0;
- activeBuffer = activeBuffer == 0 ? 1 : 0;
- ReadStream(buffs[activeBuffer], buffs[activeBuffer].Length);
- }
-
- private int ReadStream(char[] buffer, int length)
- {
- int bytesRead = reader.Read(buffer, 0, length);
-
- if (bytesRead < length)
- {
- buffer[bytesRead] = (char) 0;
- }
-
- return bytesRead;
- }
- }
-}