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

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

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

File size: 2.2 KB
RevLine 
[420]1NameSpace System
2NameSpace IO
3
4Class TextReader
5 Implements System.IDisposable
6
7Public
[426]8'Protected
9 Sub TextReader()
10 End Sub
11Public
12 Virtual Sub ~TextReader()
13 Dispose(False)
14 End Sub
[420]15
[426]16' Static Null = StreamReader.Null As TextReader
[420]17
18Public
[426]19 Sub Close()
20 Dispose(True)
[420]21 End Sub
[426]22
23 Sub Dispose()
24 Dispose(True)
25 End Sub
26
[420]27 Abstract Function Peek() As Long
28 Abstract Function Read() As Long
[432]29 /*
30 @date 2008/02/26
31 @auther Egtra
32 */
33 Function Read(buffer As *StrChar, index As Long, count As Long) As Long
34 If buffer = 0 Then
35 ElseIf index < 0 Then
36 ElseIf count < 0 Then
37 End If
[426]38 End Function
[432]39
40 /*
41 @date 2008/02/26
42 @auther Egtra
43 @retval Nothing EOFに達しているとき
44 @retval 有効なStringインスタンス 読み取った1行
45 */
46 Virtual Function ReadLine() As String
47 If Peek() = -1 Then
48 Exit Function
49 End If
50 Dim sb = New Text.StringBuilder(256)
51 Do
52 Dim ch = Read()
53 If ch = &h0D Then
54 If Peek() = &h0A Then
55 Read() 'CR LFの場合
56 End If
57 Exit Do
58 End If
59 Select Case ch
60 Case -1 'EOF
61 Exit Do
62 Case &h0A 'LF
63 Exit Do
64 Case &h0B 'VT
65 Exit Do
66 Case &h0C 'FF
67 Exit Do
68 Case &h0D 'CR
69 Exit Do
70' Case &h85 'NEL
71' Exit Do
72' Case &h2028 'LS
73' Exit Do
74' Case &h2029 'PS
75' Exit Do
76 End Select
77 sb.Append(ch As StrChar) 'ToDo キャスト不要にすべきというチケットを書くこと
78 Loop
79 ReadLine = sb.ToString
80 End Function
81 /*
82 @date 2008/02/26
83 @auther Egtra
84 */
85 Virtual Function ReadToEnd() As String
86 Dim sb = New Text.StringBuilder(8192)
87 Do
88 Dim ch = Read()
89 If ch = -1 Then
90 ReadToEnd = sb.ToString
91 Exit Function
92 End If
93 sb.Append(ch As StrChar)
94 Loop
95 End Function
96
97Protected
98 Abstract Sub Dispose(disposing As Boolean)
99
100 /*
101 @date 2008/02/26
102 @auther Egtra
103 */
104 Virtual Function ReadImpl(buffer As *StrChar, index As Long, count As Long) As Long
105 Dim i As Long
106 Dim p = VarPtr(buffer[index])
107 For i = 0 To ELM(count)
108 Dim c = Read()
109 If c = -1 Then
110 ReadImpl = i - 1
111 Exit Function
112 Else
113 p[i] = c As StrChar
114 End If
115 Next
116 ReadImpl = i - 1
117 End Function
[420]118End Class
119
120End NameSpace
121End NameSpace
Note: See TracBrowser for help on using the repository browser.