2 // System.IO.TextWriter
\r
5 // Marcin Szczepanski (marcins@zipworld.com.au)
\r
6 // Miguel de Icaza (miguel@gnome.org)
\r
7 // Paolo Molaro (lupus@ximian.com)
\r
12 namespace System.IO {
\r
15 public abstract class TextWriter : MarshalByRefObject, IDisposable {
\r
17 protected TextWriter() {
\r
18 CoreNewLine = System.Environment.NewLine;
\r
21 protected TextWriter( IFormatProvider formatProvider ) {
\r
22 internalFormatProvider = formatProvider;
\r
25 protected string CoreNewLine;
\r
27 internal IFormatProvider internalFormatProvider;
\r
29 public static readonly TextWriter Null = new NullTextWriter ();
\r
31 public abstract Encoding Encoding { get; }
\r
33 public virtual IFormatProvider FormatProvider {
\r
35 return internalFormatProvider;
\r
39 public virtual string NewLine {
\r
45 CoreNewLine = value;
\r
49 public virtual void Close () {
\r
53 protected virtual void Dispose (bool disposing) { }
\r
55 void System.IDisposable.Dispose () {
\r
60 public virtual void Flush()
\r
65 public static TextWriter Synchronized (TextWriter writer)
\r
67 return Synchronized (writer, false);
\r
70 internal static TextWriter Synchronized (TextWriter writer, bool neverClose)
\r
73 throw new ArgumentNullException ("writer is null");
\r
75 if (writer is SynchronizedWriter)
\r
78 return new SynchronizedWriter (writer, neverClose);
\r
81 public virtual void Write (bool value)
\r
83 Write (value.ToString ());
\r
86 public virtual void Write (char value)
\r
91 public virtual void Write (char[] value)
\r
93 if (value != null) {
\r
94 for (int i = 0; i < value.Length; ++i)
\r
99 public virtual void Write (decimal value)
\r
101 Write (value.ToString (internalFormatProvider));
\r
104 public virtual void Write (double value)
\r
106 Write (value.ToString (internalFormatProvider));
\r
109 public virtual void Write (int value)
\r
111 Write (value.ToString (internalFormatProvider));
\r
114 public virtual void Write (long value)
\r
116 Write (value.ToString (internalFormatProvider));
\r
119 public virtual void Write (object value)
\r
122 Write (value.ToString ());
\r
125 public virtual void Write (float value)
\r
127 Write (value.ToString (internalFormatProvider));
\r
130 public virtual void Write (string value)
\r
133 Write (value.ToCharArray ());
\r
136 [CLSCompliant(false)]
\r
137 public virtual void Write (uint value)
\r
139 Write (value.ToString (internalFormatProvider));
\r
142 [CLSCompliant(false)]
\r
143 public virtual void Write (ulong value)
\r
145 Write (value.ToString (internalFormatProvider));
\r
148 public virtual void Write (string format, object arg0)
\r
150 Write (String.Format (format, arg0));
\r
153 public virtual void Write (string format, params object[] arg)
\r
155 Write (String.Format (format, arg));
\r
158 public virtual void Write (char[] buffer, int index, int count)
\r
160 if (buffer == null)
\r
161 throw new ArgumentNullException ("buffer");
\r
162 if (index < 0 || index > buffer.Length)
\r
163 throw new ArgumentOutOfRangeException ("index");
\r
164 if (count < 0 || (index + count) > buffer.Length)
\r
165 throw new ArgumentOutOfRangeException ("count");
\r
166 for (; count > 0; --count, ++index) {
\r
167 Write (buffer [index]);
\r
171 public virtual void Write (string format, object arg0, object arg1)
\r
173 Write (String.Format (format, arg0, arg1));
\r
176 public virtual void Write (string format, object arg0, object arg1, object arg2 )
\r
178 Write (String.Format (format, arg0, arg1, arg2));
\r
181 public virtual void WriteLine ()
\r
186 public virtual void WriteLine (bool value)
\r
192 public virtual void WriteLine (char value)
\r
198 public virtual void WriteLine (char[] value)
\r
204 public virtual void WriteLine (decimal value)
\r
210 public virtual void WriteLine (double value)
\r
216 public virtual void WriteLine (int value)
\r
222 public virtual void WriteLine (long value)
\r
228 public virtual void WriteLine (object value)
\r
234 public virtual void WriteLine (float value)
\r
240 public virtual void WriteLine (string value)
\r
246 [CLSCompliant(false)]
\r
247 public virtual void WriteLine (uint value)
\r
253 [CLSCompliant(false)]
\r
254 public virtual void WriteLine (ulong value)
\r
260 public virtual void WriteLine (string format, object arg0)
\r
262 Write (format, arg0);
\r
266 public virtual void WriteLine (string format, params object[] arg)
\r
268 Write (format, arg);
\r
272 public virtual void WriteLine (char[] buffer, int index, int count)
\r
274 Write (buffer, index, count);
\r
278 public virtual void WriteLine (string format, object arg0, object arg1)
\r
280 Write (format, arg0, arg1);
\r
284 public virtual void WriteLine (string format, object arg0, object arg1, object arg2)
\r
286 Write (format, arg0, arg1, arg2);
\r
291 // Null version of the TextWriter, for the `Null' instance variable
\r
293 sealed class NullTextWriter : TextWriter {
\r
294 public override Encoding Encoding {
\r
296 return Encoding.Default;
\r
300 public override void Write (string s)
\r
303 public override void Write (char value)
\r
306 public override void Write (char[] value, int index, int count)
\r
313 // Sychronized version of the TextWriter.
\r
316 internal class SynchronizedWriter : TextWriter {
\r
317 private TextWriter writer;
\r
318 private bool neverClose;
\r
320 public SynchronizedWriter (TextWriter writer)
\r
321 : this (writer, false)
\r
325 public SynchronizedWriter (TextWriter writer, bool neverClose)
\r
327 this.writer = writer;
\r
328 this.neverClose = neverClose;
\r
331 public override void Close ()
\r
340 public override void Flush ()
\r
347 #region Write methods
\r
348 public override void Write (bool value)
\r
351 writer.Write (value);
\r
355 public override void Write (char value)
\r
358 writer.Write (value);
\r
362 public override void Write (char [] value)
\r
365 writer.Write (value);
\r
369 public override void Write (Decimal value)
\r
372 writer.Write (value);
\r
376 public override void Write (int value)
\r
379 writer.Write (value);
\r
383 public override void Write (long value)
\r
386 writer.Write (value);
\r
390 public override void Write (object value)
\r
393 writer.Write (value);
\r
397 public override void Write (float value)
\r
400 writer.Write (value);
\r
404 public override void Write (string value)
\r
407 writer.Write (value);
\r
411 [CLSCompliant(false)]
\r
412 public override void Write (uint value)
\r
415 writer.Write (value);
\r
419 [CLSCompliant(false)]
\r
420 public override void Write (ulong value)
\r
423 writer.Write (value);
\r
427 public override void Write (string format, object value)
\r
430 writer.Write (format, value);
\r
434 public override void Write (string format, object [] value)
\r
437 writer.Write (format, value);
\r
441 public override void Write (char [] buffer, int index, int count)
\r
444 writer.Write (buffer, index, count);
\r
448 public override void Write (string format, object arg0, object arg1)
\r
451 writer.Write (format, arg0, arg1);
\r
455 public override void Write (string format, object arg0, object arg1, object arg2)
\r
458 writer.Write (format, arg0, arg1, arg2);
\r
462 #region WriteLine methods
\r
463 public override void WriteLine ()
\r
466 writer.WriteLine ();
\r
470 public override void WriteLine (bool value)
\r
473 writer.WriteLine (value);
\r
477 public override void WriteLine (char value)
\r
480 writer.WriteLine (value);
\r
484 public override void WriteLine (char [] value)
\r
487 writer.WriteLine (value);
\r
491 public override void WriteLine (Decimal value)
\r
494 writer.WriteLine (value);
\r
498 public override void WriteLine (double value)
\r
501 writer.WriteLine (value);
\r
505 public override void WriteLine (int value)
\r
508 writer.WriteLine (value);
\r
512 public override void WriteLine (long value)
\r
515 writer.WriteLine (value);
\r
519 public override void WriteLine (object value)
\r
522 writer.WriteLine (value);
\r
526 public override void WriteLine (float value)
\r
529 writer.WriteLine (value);
\r
533 public override void WriteLine (string value)
\r
536 writer.WriteLine (value);
\r
540 [CLSCompliant(false)]
\r
541 public override void WriteLine (uint value)
\r
544 writer.WriteLine (value);
\r
548 [CLSCompliant(false)]
\r
549 public override void WriteLine (ulong value)
\r
552 writer.WriteLine (value);
\r
556 public override void WriteLine (string format, object value)
\r
559 writer.WriteLine (format, value);
\r
563 public override void WriteLine (string format, object [] value)
\r
566 writer.WriteLine (format, value);
\r
570 public override void WriteLine (char [] buffer, int index, int count)
\r
573 writer.WriteLine (buffer, index, count);
\r
577 public override void WriteLine (string format, object arg0, object arg1)
\r
580 writer.WriteLine (format, arg0, arg1);
\r
584 public override void WriteLine (string format, object arg0, object arg1, object arg2)
\r
587 writer.WriteLine (format, arg0, arg1, arg2);
\r
592 public override Encoding Encoding {
\r
595 return writer.Encoding;
\r
600 public override IFormatProvider FormatProvider {
\r
603 return writer.FormatProvider;
\r
608 public override string NewLine {
\r
611 return writer.NewLine;
\r
617 writer.NewLine = value;
\r