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 | |
---|
3 | Namespace System |
---|
4 | Namespace IO |
---|
5 | |
---|
6 | /* |
---|
7 | @brief Stringから読み込みを行うTextReaderの実装。 |
---|
8 | @date 2008/02/26 |
---|
9 | @auther Egtra |
---|
10 | */ |
---|
11 | Class StringReader |
---|
12 | Inherits TextReader |
---|
13 | Public |
---|
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 | |
---|
63 | Protected |
---|
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 | |
---|
82 | Private |
---|
83 | s As String |
---|
84 | i As Long |
---|
85 | End Class |
---|
86 | |
---|
87 | End Namespace |
---|
88 | End Namespace |
---|
Note: See
TracBrowser
for help on using the repository browser.