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

Last change on this file since 432 was 432, checked in by イグトランス (egtra), 16 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.