summaryrefslogtreecommitdiff
path: root/src/mscorlib/src/System/IO/StringReader.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/mscorlib/src/System/IO/StringReader.cs')
-rw-r--r--src/mscorlib/src/System/IO/StringReader.cs187
1 files changed, 0 insertions, 187 deletions
diff --git a/src/mscorlib/src/System/IO/StringReader.cs b/src/mscorlib/src/System/IO/StringReader.cs
deleted file mode 100644
index e5fa811453..0000000000
--- a/src/mscorlib/src/System/IO/StringReader.cs
+++ /dev/null
@@ -1,187 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-// See the LICENSE file in the project root for more information.
-
-/*============================================================
-**
-**
-**
-**
-** Purpose: For reading text from strings
-**
-**
-===========================================================*/
-
-using System;
-using System.Runtime.InteropServices;
-using System.Diagnostics.Contracts;
-using System.Security.Permissions;
-using System.Threading.Tasks;
-
-namespace System.IO {
- // This class implements a text reader that reads from a string.
- //
- [Serializable]
- [ComVisible(true)]
- public class StringReader : TextReader
- {
- private String _s;
- private int _pos;
- private int _length;
-
- public StringReader(String s) {
- if (s == null)
- throw new ArgumentNullException("s");
- Contract.EndContractBlock();
- _s = s;
- _length = s == null? 0: s.Length;
- }
-
- // Closes this StringReader. Following a call to this method, the String
- // Reader will throw an ObjectDisposedException.
- public override void Close() {
- Dispose(true);
- }
-
- protected override void Dispose(bool disposing) {
- _s = null;
- _pos = 0;
- _length = 0;
- base.Dispose(disposing);
- }
-
- // Returns the next available character without actually reading it from
- // the underlying string. The current position of the StringReader is not
- // changed by this operation. The returned value is -1 if no further
- // characters are available.
- //
- [Pure]
- public override int Peek() {
- if (_s == null)
- __Error.ReaderClosed();
- if (_pos == _length) return -1;
- return _s[_pos];
- }
-
- // Reads the next character from the underlying string. The returned value
- // is -1 if no further characters are available.
- //
- public override int Read() {
- if (_s == null)
- __Error.ReaderClosed();
- if (_pos == _length) return -1;
- return _s[_pos++];
- }
-
- // Reads a block of characters. This method will read up to count
- // characters from this StringReader into the buffer character
- // array starting at position index. Returns the actual number of
- // characters read, or zero if the end of the string is reached.
- //
- public override int Read([In, Out] char[] buffer, int index, int count) {
- if (buffer==null)
- throw new ArgumentNullException("buffer", Environment.GetResourceString("ArgumentNull_Buffer"));
- if (index < 0)
- throw new ArgumentOutOfRangeException("index", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum"));
- if (count < 0)
- throw new ArgumentOutOfRangeException("count", Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum"));
- if (buffer.Length - index < count)
- throw new ArgumentException(Environment.GetResourceString("Argument_InvalidOffLen"));
- Contract.EndContractBlock();
- if (_s == null)
- __Error.ReaderClosed();
-
- int n = _length - _pos;
- if (n > 0) {
- if (n > count) n = count;
- _s.CopyTo(_pos, buffer, index, n);
- _pos += n;
- }
- return n;
- }
-
- public override String ReadToEnd()
- {
- if (_s == null)
- __Error.ReaderClosed();
- String s;
- if (_pos==0)
- s = _s;
- else
- s = _s.Substring(_pos, _length - _pos);
- _pos = _length;
- return s;
- }
-
- // Reads a line. A line is defined as a sequence of characters followed by
- // a carriage return ('\r'), a line feed ('\n'), or a carriage return
- // immediately followed by a line feed. The resulting string does not
- // contain the terminating carriage return and/or line feed. The returned
- // value is null if the end of the underlying string has been reached.
- //
- public override String ReadLine() {
- if (_s == null)
- __Error.ReaderClosed();
- int i = _pos;
- while (i < _length) {
- char ch = _s[i];
- if (ch == '\r' || ch == '\n') {
- String result = _s.Substring(_pos, i - _pos);
- _pos = i + 1;
- if (ch == '\r' && _pos < _length && _s[_pos] == '\n') _pos++;
- return result;
- }
- i++;
- }
- if (i > _pos) {
- String result = _s.Substring(_pos, i - _pos);
- _pos = i;
- return result;
- }
- return null;
- }
-
- #region Task based Async APIs
- [ComVisible(false)]
- public override Task<String> ReadLineAsync()
- {
- return Task.FromResult(ReadLine());
- }
-
- [ComVisible(false)]
- public override Task<String> ReadToEndAsync()
- {
- return Task.FromResult(ReadToEnd());
- }
-
- [ComVisible(false)]
- public override Task<int> ReadBlockAsync(char[] buffer, int index, int count)
- {
- if (buffer==null)
- throw new ArgumentNullException("buffer", Environment.GetResourceString("ArgumentNull_Buffer"));
- if (index < 0 || count < 0)
- throw new ArgumentOutOfRangeException((index < 0 ? "index" : "count"), Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum"));
- if (buffer.Length - index < count)
- throw new ArgumentException(Environment.GetResourceString("Argument_InvalidOffLen"));
-
- Contract.EndContractBlock();
-
- return Task.FromResult(ReadBlock(buffer, index, count));
- }
-
- [ComVisible(false)]
- public override Task<int> ReadAsync(char[] buffer, int index, int count)
- {
- if (buffer==null)
- throw new ArgumentNullException("buffer", Environment.GetResourceString("ArgumentNull_Buffer"));
- if (index < 0 || count < 0)
- throw new ArgumentOutOfRangeException((index < 0 ? "index" : "count"), Environment.GetResourceString("ArgumentOutOfRange_NeedNonNegNum"));
- if (buffer.Length - index < count)
- throw new ArgumentException(Environment.GetResourceString("Argument_InvalidOffLen"));
- Contract.EndContractBlock();
-
- return Task.FromResult(Read(buffer, index, count));
- }
- #endregion
- }
-}