2002-08-01 Miguel de Icaza <miguel@ximian.com>
[mono.git] / mcs / class / corlib / System.IO / StringWriter.cs
1 //\r
2 // System.IO.StringWriter\r
3 //\r
4 // Author: Marcin Szczepanski (marcins@zipworld.com.au)\r
5 //\r
6 \r
7 using System.Text;\r
8 \r
9 namespace System.IO {\r
10                 [Serializable]\r
11         public class StringWriter : TextWriter {\r
12                 \r
13                 private StringBuilder internalString;\r
14 \r
15                 public StringWriter() {\r
16                         internalString = new StringBuilder();\r
17                 }\r
18 \r
19                 public StringWriter( IFormatProvider formatProvider ) {\r
20                         internalFormatProvider = formatProvider;\r
21                 }\r
22 \r
23                 public StringWriter( StringBuilder sb ) {\r
24                         internalString = sb;\r
25                 }\r
26 \r
27                 public StringWriter( StringBuilder sb, IFormatProvider formatProvider ) {\r
28                         internalString = sb;\r
29                         internalFormatProvider = formatProvider;\r
30                 }\r
31 \r
32                 public override System.Text.Encoding Encoding {\r
33                         get {\r
34                                 // TODO: Implement\r
35                                 return null;\r
36                         }\r
37                 }\r
38 \r
39                 public override void Close() {\r
40                         Dispose( true );\r
41                 }\r
42 \r
43                 protected override void Dispose( bool disposing ) { }\r
44 \r
45                 public virtual StringBuilder GetStringBuilder() {\r
46                         return internalString;\r
47                 }\r
48 \r
49                 public override string ToString() {\r
50                         return internalString.ToString();\r
51                 }\r
52 \r
53                 public override void Write( char value ) {\r
54                         internalString.Append( value );\r
55                 }\r
56 \r
57                 public override void Write( string value ) {\r
58                         internalString.Append( value );\r
59                 }\r
60 \r
61                 public override void Write( char[] buffer, int index, int count ) {\r
62                         if( buffer == null ) {\r
63                                 throw new ArgumentNullException();\r
64                         } else if( index < 0 || count < 0 ) {\r
65                                 throw new ArgumentOutOfRangeException();\r
66                         } else if( index > buffer.Length || index + count > buffer.Length ) {\r
67                                 throw new ArgumentException();\r
68                         }\r
69                         \r
70                         char[] writeBuffer = new char[ count ];\r
71 \r
72                         Array.Copy( buffer, index, writeBuffer, 0, count );\r
73 \r
74                         internalString.Append( writeBuffer );\r
75                 }\r
76                           \r
77         }\r
78 }\r
79                         \r
80                         \r