source: trunk/Include/Classes/System/IO/StringReader.ab @ 435

Last change on this file since 435 was 432, checked in by イグトランス (egtra), 15 years ago

StreamReaderの完成。StringReaderの追加。
Consoleの追加(現在入力関係の一部のみ)。

File size: 1.6 KB
Line 
1'Classes/System/IO/StringReader.ab
2
3Namespace System
4Namespace IO
5
6/*
7@brief Stringから読み込みを行うTextReaderの実装。
8@date 2008/02/26
9@auther Egtra
10*/
11Class StringReader
12    Inherits TextReader
13Public
14    /*
15    @brief コンストラクタ
16    @date 2008/02/26
17    @auther Egtra
18    @param str 読み取る基となる文字列。
19    @exception ArgumentNullException strがNothingのとき。
20    */
21    Sub StringReader(str As String)
22        If ActiveBasic.IsNothing(str) Then
23            Throw New ArgumentNullException("str")
24        End If
25        s = str
26        i = 0
27    End Sub
28
29    /*
30    @date 2008/02/26
31    @auther Egtra
32    */
33    Override Function Peek() As Long
34        If i = s.Length Then
35            Peek = -1
36        Else
37            Peek = s[i]
38        End If
39    End Function
40
41    /*
42    @date 2008/02/26
43    @auther Egtra
44    */
45    Override Function Read() As Long
46        If i = s.Length Then
47            Read = -1
48        Else
49            Read = s[i]
50            i++
51        End If
52    End Function
53
54    /*
55    @date 2008/02/26
56    @auther Egtra
57    */
58    Override Function ReadToEnd() As String
59        ReadToEnd = s.Substring(i)
60        i = s.Length
61    End Function
62
63Protected
64    /*
65    @date 2008/02/26
66    @auther Egtra
67    */
68    Override Sub Dispose(disposing As Boolean)
69        s = Nothing
70        i = 0
71    End Sub
72
73    /*
74    @date 2008/02/26
75    @auther Egtra
76    */
77    Override Function ReadImpl(buffer As *StrChar, index As Long, count As Long) As Long
78        ReadImpl = Math.Min(count, s.Length - i)
79        ActiveBasic.Strings.ChrCopy(VarPtr(buffer[index]) As *StrChar, (StrPtr(s) + i * SizeOf (StrChar)) As *StrChar, ReadImpl As SIZE_T) 'ToDo: ポインタに対する+演算
80    End Function
81
82Private
83    s As String
84    i As Long
85End Class
86
87End Namespace
88End Namespace
Note: See TracBrowser for help on using the repository browser.