2002-09-16 Miguel de Icaza <miguel@ximian.com>
[mono.git] / mcs / class / corlib / System.IO / TextWriter.cs
1 //\r
2 // System.IO.TextWriter\r
3 //\r
4 // Author: Marcin Szczepanski (marcins@zipworld.com.au)\r
5 //\r
6 // TODO: Implement the Thread Safe stuff\r
7 \r
8 using System.Text;\r
9 \r
10 namespace System.IO {\r
11 \r
12         [Serializable]\r
13         public abstract class TextWriter : MarshalByRefObject, IDisposable {\r
14                 \r
15                 protected TextWriter() {\r
16                         CoreNewLine = "\n".ToCharArray ();\r
17                 }\r
18                 \r
19                 protected TextWriter( IFormatProvider formatProvider ) {\r
20                         internalFormatProvider = formatProvider;\r
21                 }\r
22 \r
23                 protected char[] CoreNewLine;\r
24 \r
25                 internal IFormatProvider internalFormatProvider;\r
26 \r
27                 public static readonly TextWriter Null = new NullTextWriter ();\r
28 \r
29                 public abstract Encoding Encoding { get; }\r
30 \r
31                 public virtual IFormatProvider FormatProvider { \r
32                         get {\r
33                                 return internalFormatProvider;\r
34                         } \r
35                 }\r
36 \r
37                 public virtual string NewLine { \r
38                         get {\r
39                                 return new String(CoreNewLine);\r
40                         }\r
41                         \r
42                         set {\r
43                                 CoreNewLine = value.ToCharArray();\r
44                         }\r
45                 }\r
46 \r
47                 public virtual void Close () { \r
48                         Dispose (true);\r
49                 }\r
50 \r
51                 protected virtual void Dispose (bool disposing) { }\r
52                 \r
53                 void System.IDisposable.Dispose () {\r
54                         Dispose (true);\r
55                 }\r
56 \r
57 \r
58                 public virtual void Flush()\r
59                 {\r
60                         // do nothing\r
61                 }\r
62 \r
63                 [MonoTODO]\r
64                 public static TextWriter Synchronized (TextWriter writer)\r
65                 {\r
66                         // TODO: Implement.\r
67 \r
68                         return Null;\r
69                 }\r
70 \r
71                 public virtual void Write (bool value)\r
72                 {\r
73                         Write (value.ToString ());\r
74                 }\r
75                 \r
76                 public virtual void Write (char value)\r
77                 {\r
78                         Write (value.ToString (internalFormatProvider));\r
79                 }\r
80 \r
81                 public virtual void Write (char[] value)\r
82                 {\r
83                         if (value != null)\r
84                                 Write (new String (value));\r
85                 }\r
86                 \r
87                 public virtual void Write (decimal value)\r
88                 {\r
89                         Write (value.ToString (internalFormatProvider));\r
90                 }\r
91                 \r
92                 public virtual void Write (double value)\r
93                 {\r
94                         Write (value.ToString (internalFormatProvider));\r
95                 }\r
96 \r
97                 public virtual void Write (int value)\r
98                 {\r
99                         Write (value.ToString (internalFormatProvider));\r
100                 }\r
101                 \r
102                 public virtual void Write (long value)\r
103                 {\r
104                         Write (value.ToString (internalFormatProvider));\r
105                 }\r
106                 \r
107                 public virtual void Write (object value)\r
108                 {\r
109                         if (value != null)\r
110                                 Write (value.ToString ());\r
111                 }\r
112                 \r
113                 public virtual void Write (float value)\r
114                 {\r
115                         Write (value.ToString (internalFormatProvider));\r
116                 }\r
117                 \r
118                 public virtual void Write (string value)\r
119                 {\r
120                         // do nothing\r
121                 }\r
122                 \r
123                 [CLSCompliant(false)]\r
124                 public virtual void Write (uint value)\r
125                 {\r
126                         Write (value.ToString (internalFormatProvider));\r
127                 }\r
128                 \r
129                 [CLSCompliant(false)]\r
130                 public virtual void Write (ulong value)\r
131                 {\r
132                         Write (value.ToString (internalFormatProvider));\r
133                 }\r
134                 \r
135                 public virtual void Write (string format, object arg0)\r
136                 {\r
137                         Write (String.Format (format, arg0));\r
138                 }\r
139                 \r
140                 public virtual void Write (string format, params object[] arg)\r
141                 {\r
142                         Write (String.Format (format, arg));\r
143                 }\r
144                 \r
145                 public virtual void Write (char[] buffer, int index, int count)\r
146                 {\r
147                         Write (new String (buffer, index, count));\r
148                 }\r
149                 \r
150                 public virtual void Write (string format, object arg0, object arg1)\r
151                 {\r
152                         Write (String.Format (format, arg0, arg1));\r
153                 }\r
154                 \r
155                 public virtual void Write (string format, object arg0, object arg1, object arg2 )\r
156                 {\r
157                         Write (String.Format (format, arg0, arg1, arg2));\r
158                 }\r
159                 \r
160                 public virtual void WriteLine ()\r
161                 {\r
162                         Write (NewLine);\r
163                 }\r
164                 \r
165                 public virtual void WriteLine (bool value)\r
166                 {\r
167                         Write (value);\r
168                         WriteLine();\r
169                 }\r
170                 \r
171                 public virtual void WriteLine (char value)\r
172                 {\r
173                         Write (value);\r
174                         WriteLine();\r
175                 }\r
176                 \r
177                 public virtual void WriteLine (char[] value)\r
178                 {\r
179                         Write (value);\r
180                         WriteLine();\r
181                 }\r
182                 \r
183                 public virtual void WriteLine (decimal value)\r
184                 {\r
185                         Write (value);\r
186                         WriteLine();\r
187                 }\r
188                 \r
189                 public virtual void WriteLine (double value)\r
190                 {\r
191                         Write (value);\r
192                         WriteLine();\r
193                 }\r
194                 \r
195                 public virtual void WriteLine (int value)\r
196                 {\r
197                         Write (value);\r
198                         WriteLine();\r
199                 }\r
200                 \r
201                 public virtual void WriteLine (long value)\r
202                 {\r
203                         Write (value);\r
204                         WriteLine();\r
205                 }\r
206                 \r
207                 public virtual void WriteLine (object value)\r
208                 {\r
209                         Write (value);\r
210                         WriteLine();\r
211                 }\r
212                 \r
213                 public virtual void WriteLine (float value)\r
214                 {\r
215                         Write (value);\r
216                         WriteLine();\r
217                 }\r
218                 \r
219                 public virtual void WriteLine (string value)\r
220                 {\r
221                         Write (value);\r
222                         WriteLine();\r
223                 }\r
224                 \r
225                 [CLSCompliant(false)]\r
226                 public virtual void WriteLine (uint value)\r
227                 {\r
228                         Write (value);\r
229                         WriteLine();\r
230                 }\r
231                 \r
232                 [CLSCompliant(false)]\r
233                 public virtual void WriteLine (ulong value)\r
234                 {\r
235                         Write (value);\r
236                         WriteLine();\r
237                 }\r
238                 \r
239                 public virtual void WriteLine (string format, object arg0)\r
240                 {\r
241                         Write (format, arg0);\r
242                         WriteLine();\r
243                 }\r
244                 \r
245                 public virtual void WriteLine (string format, params object[] arg)\r
246                 {\r
247                         Write (format, arg);\r
248                         WriteLine();\r
249                 }\r
250                 \r
251                 public virtual void WriteLine (char[] buffer, int index, int count)\r
252                 {\r
253                         Write (buffer, index, count);\r
254                         WriteLine();\r
255                 }\r
256                 \r
257                 public virtual void WriteLine (string format, object arg0, object arg1)\r
258                 {\r
259                         Write (format, arg0, arg1);\r
260                         WriteLine();\r
261                 }\r
262                 \r
263                 public virtual void WriteLine (string format, object arg0, object arg1, object arg2)\r
264                 {\r
265                         Write (format, arg0, arg1, arg2);\r
266                         WriteLine();\r
267                 }\r
268 \r
269                 //\r
270                 // Null version of the TextWriter, for the `Null' instance variable\r
271                 //\r
272                 sealed class NullTextWriter : TextWriter {\r
273                         public override Encoding Encoding {\r
274                                 get {\r
275                                         return Encoding.Default;\r
276                                 }\r
277                         }\r
278                         \r
279                         public override void Write (string s)\r
280                         {\r
281                         }\r
282                 }\r
283         }\r
284 }\r
285 \r
286 \r
287 \r
288 \r
289 \r