source: branch/egtra-stream-without-en_dec/Classes/System/IO/TextWriter.ab@ 673

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

Encoder/Decoderを排除した実装(UTF8Encodingは修正していません)。

File size: 2.9 KB
RevLine 
[468]1'Classes/System/IO/TextWriter.ab
2
3Namespace System
4Namespace IO
5
6/*
7@brief テキスト書き込みの抽象基底クラス
8@date 2007/03/05
9@auther Egtra
10*/
11Class TextWriter
[653]12 Implements System.IDisposable
[468]13Public
14 Virtual Sub ~TextWriter()
15 Dispose(False)
16 End Sub
17
18' Static Null = StreamWriter.Null As StreamWriter
19
20Public
21 Sub Close()
22 Dispose(True)
23 End Sub
24
25 Sub Dispose()
26 Dispose(True)
27 End Sub
28
[473]29 Virtual Sub Flush()
30 End Sub
31
[653]32 'これ以外全てのWrite/WriteLineは、最終的にこのWriteを呼ぶ。
33 Sub Write(x As String)
34 buf.Append(x)
35 If buf.Length >= 4096 Then
36 Flush()
37 End If
[468]38 End Sub
39
[653]40 Sub Write(x As Boolean)
41 buf.Append(x)
[468]42 End Sub
[653]43
44 Sub Write(x As SByte)
45 buf.Append(x)
46 End Sub
[468]47
[653]48 Sub Write(x As Byte)
49 buf.Append(x)
[468]50 End Sub
[653]51
52 Sub Write(x As Word)
53 buf.Append(x)
[468]54 End Sub
[653]55
56 Sub Write(x As Integer)
57 buf.Append(x)
[468]58 End Sub
59
[653]60 Sub Write(x As DWord)
61 buf.Append(x)
[468]62 End Sub
63
[653]64 Sub Write(x As Long)
65 buf.Append(x)
[468]66 End Sub
67
[653]68 Sub Write(x As QWord)
69 buf.Append(x)
[468]70 End Sub
71
[653]72 Sub Write(x As Int64)
73 buf.Append(x)
[468]74 End Sub
75
[653]76 Sub Write(x As Single)
77 buf.Append(x)
[468]78 End Sub
79
[653]80 Sub Write(x As Double)
81 buf.Append(x)
[468]82 End Sub
83
[653]84 Sub Write(x As Object)
85 buf.Append(x)
[468]86 End Sub
87
[673]88 Virtual Sub WriteLine()
[653]89 Write(Environment.NewLine)
[468]90 End Sub
91
[653]92 Sub WriteLine(x As String)
93 Write(x)
[468]94 WriteLine()
95 End Sub
96
97 Sub WriteLine(x As Boolean)
[653]98 Write(x)
[468]99 WriteLine()
100 End Sub
101
102 Sub WriteLine(x As Byte)
[653]103 Write(x)
[468]104 WriteLine()
105 End Sub
[653]106
[468]107 Sub WriteLine(x As SByte)
[653]108 Write(x)
[468]109 WriteLine()
110 End Sub
[653]111
[468]112 Sub WriteLine(x As Word)
[653]113 Write(x)
[468]114 WriteLine()
115 End Sub
[653]116
[468]117 Sub WriteLine(x As Integer)
[653]118 Write(x)
[468]119 WriteLine()
120 End Sub
121
122 Sub WriteLine(x As DWord)
[653]123 Write(x)
[468]124 WriteLine()
125 End Sub
126
127 Sub WriteLine(x As Long)
[653]128 Write(x)
[468]129 WriteLine()
130 End Sub
131
132 Sub WriteLine(x As QWord)
[653]133 Write(x)
[468]134 WriteLine()
135 End Sub
136
137 Sub WriteLine(x As Int64)
[653]138 Write(x)
[468]139 WriteLine()
140 End Sub
141
142 Sub WriteLine(x As Single)
[653]143 Write(x)
[468]144 WriteLine()
145 End Sub
146
147 Sub WriteLine(x As Double)
[653]148 Write(x)
[468]149 WriteLine()
150 End Sub
151
152 Sub WriteLine(x As Object)
[653]153 Write(x)
[468]154 WriteLine()
155 End Sub
156
[523]157 Static Function Synchronized(writer As TextWriter) As TextWriter
[522]158 ' TODO: 実装。とりあえずそのまま返却
[523]159 Return writer
[522]160 End Function
[653]161
[468]162Protected
[653]163 Sub TextWriter()
164 buf = New Text.StringBuilder
165 End Sub
166
167 Sub TextWriter(buffer As Text.StringBuilder)
168 If ActiveBasic.IsNothing(buffer) Then
169 Throw New ArgumentNullException("buffer")
170 End If
171 buf = buffer
172 End Sub
173
[665]174 /*!
175 @brief 内部バッファを返す
176 @date 2008/12/27
177 @auther Egtra
178 @return 内部バッファ
179 */
[653]180 Function Buffer() As Text.StringBuilder
181 Buffer = buf
182 End Function
183
[468]184 Virtual Sub Dispose(disposing As Boolean)
[653]185 If disposing Then
186 Flush()
187 buf = Nothing
188 End If
[468]189 End Sub
190
191Private
[653]192 buf As Text.StringBuilder
[468]193End Class
194
[522]195
[468]196End Namespace
[653]197End Namespace
Note: See TracBrowser for help on using the repository browser.