2 // System.IO.StringWriter
\r
4 // Author: Marcin Szczepanski (marcins@zipworld.com.au)
\r
9 namespace System.IO {
\r
11 public class StringWriter : TextWriter {
\r
13 private StringBuilder internalString;
\r
15 public StringWriter() {
\r
16 internalString = new StringBuilder();
\r
19 public StringWriter( IFormatProvider formatProvider ) {
\r
20 internalFormatProvider = formatProvider;
\r
23 public StringWriter( StringBuilder sb ) {
\r
24 internalString = sb;
\r
27 public StringWriter( StringBuilder sb, IFormatProvider formatProvider ) {
\r
28 internalString = sb;
\r
29 internalFormatProvider = formatProvider;
\r
32 public override System.Text.Encoding Encoding {
\r
39 public override void Close() {
\r
43 protected override void Dispose( bool disposing ) { }
\r
45 public virtual StringBuilder GetStringBuilder() {
\r
46 return internalString;
\r
49 public override string ToString() {
\r
50 return internalString.ToString();
\r
53 public override void Write( char value ) {
\r
54 internalString.Append( value );
\r
57 public override void Write( string value ) {
\r
58 internalString.Append( value );
\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
70 char[] writeBuffer = new char[ count ];
\r
72 Array.Copy( buffer, index, writeBuffer, 0, count );
\r
74 internalString.Append( writeBuffer );
\r