2 // System.CodeDom.Compiler IndentedTextWriter class
5 // Daniel Stodden (stodden@in.tum.de)
7 // (C) 2002 Ximian, Inc.
8 // Copyright (C) 2005 Novell, Inc (http://www.novell.com)
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 using System.Security.Permissions;
34 namespace System.CodeDom.Compiler {
36 [PermissionSet (SecurityAction.LinkDemand, Unrestricted = true)]
37 [PermissionSet (SecurityAction.InheritanceDemand, Unrestricted = true)]
38 public class IndentedTextWriter
41 private TextWriter writer;
42 private string tabString;
49 public IndentedTextWriter( TextWriter writer )
52 this.tabString = DefaultTabString;
56 public IndentedTextWriter( TextWriter writer, string tabString )
59 this.tabString = tabString;
67 public const string DefaultTabString = " ";
72 public override Encoding Encoding {
74 return writer.Encoding;
87 public TextWriter InnerWriter {
93 public override string NewLine {
95 return writer.NewLine;
98 writer.NewLine = value;
105 public override void Close()
110 public override void Flush()
115 public override void Write( bool value )
118 writer.Write( value );
121 public override void Write( char value )
124 writer.Write( value );
127 public override void Write( char[] value )
130 writer.Write( value );
133 public override void Write( double value )
136 writer.Write( value );
139 public override void Write( int value )
142 writer.Write( value );
145 public override void Write( long value )
148 writer.Write( value );
151 public override void Write( object value )
154 writer.Write( value );
157 public override void Write( float value )
160 writer.Write( value );
163 public override void Write( string value )
166 writer.Write( value );
169 public override void Write( string format, object arg )
172 writer.Write( format, arg );
175 public override void Write( string format, params object[] args )
178 writer.Write( format, args );
181 public override void Write( char[] buffer, int index, int count )
184 writer.Write( buffer, index, count );
187 public override void Write( string format, object arg0, object arg1 )
190 writer.Write( format, arg0, arg1 );
194 public override void WriteLine()
201 public override void WriteLine( bool value )
204 writer.WriteLine( value );
208 public override void WriteLine( char value )
211 writer.WriteLine( value );
215 public override void WriteLine( char[] value )
218 writer.WriteLine( value );
222 public override void WriteLine( double value )
225 writer.WriteLine( value );
229 public override void WriteLine( int value )
232 writer.WriteLine( value );
236 public override void WriteLine( long value )
239 writer.WriteLine( value );
243 public override void WriteLine( object value )
246 writer.WriteLine( value );
250 public override void WriteLine( float value )
253 writer.WriteLine( value );
257 public override void WriteLine( string value )
260 writer.WriteLine( value );
264 [CLSCompliant(false)]
265 public override void WriteLine( uint value )
268 writer.WriteLine( value );
272 public override void WriteLine( string format, object arg )
275 writer.WriteLine( format, arg );
279 public override void WriteLine( string format, params object[] args )
282 writer.WriteLine( format, args );
286 public override void WriteLine( char[] buffer, int index, int count )
289 writer.WriteLine( buffer, index, count );
293 public override void WriteLine( string format, object arg0, object arg1 )
296 writer.WriteLine( format, arg0, arg1 );
301 public void WriteLineNoTabs( string value )
303 writer.WriteLine( value );
308 protected virtual void OutputTabs()
311 for ( int i = 0; i < indent; ++i )
312 writer.Write( tabString );