indentedtextwriter.cs

来自「没的 没的 没的 没的 没的 没的 没的 没的 没的 没的 没的 没的 没的 没」· CS 代码 · 共 304 行

CS
304
字号
/* * IndentedTextWriter.cs - Implementation of the *		System.CodeDom.Compiler.IndentedTextWriter class. * * Copyright (C) 2002  Southern Storm Software, Pty Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA */namespace System.CodeDom.Compiler{#if CONFIG_CODEDOMusing System.IO;using System.Text;public class IndentedTextWriter : TextWriter{	// Internal state.	private TextWriter writer;	private String tabString;	private int indent;	private bool atLineStart;	// The default string to use for tabbing.	public const String DefaultTabString = "    ";	// Constructors.	public IndentedTextWriter(TextWriter writer)			: this(writer, DefaultTabString)			{				// Nothing to do here.			}	public IndentedTextWriter(TextWriter writer, String tabString)			{				this.writer = writer;				this.tabString = tabString;				this.indent = 0;				this.atLineStart = true;			}	// Get the encoding in use by the underlying text writer.	public override Encoding Encoding			{				get				{					return writer.Encoding;				}			}	// Get or set the current indent level.	public int Indent			{				get				{					return indent;				}				set				{					if(value >= 0)					{						indent = value;					}					else					{						indent = 0;					}				}			}	// Get the writer underlying this object.	public TextWriter InnerWriter			{				get				{					return writer;				}			}	// Get or set the newline string.	public override String NewLine			{				get				{					return writer.NewLine;				}				set				{					writer.NewLine = value;				}			}	// Close this writer.	public override void Close()			{				writer.Close();			}	// Flush this writer.	public override void Flush()			{				writer.Flush();			}	// Output tabs at the start of a line if necessary.	protected virtual void OutputTabs()			{				if(atLineStart)				{					int level = indent;					while(level > 0)					{						writer.Write(tabString);						--level;					}					atLineStart = false;				}			}	// Write values of various types.	public override void Write(bool value)			{				OutputTabs();				writer.Write(value);			}	public override void Write(char value)			{				OutputTabs();				writer.Write(value);			}	public override void Write(char[] value)			{				OutputTabs();				writer.Write(value);			}	public override void Write(double value)			{				OutputTabs();				writer.Write(value);			}	public override void Write(int value)			{				OutputTabs();				writer.Write(value);			}	public override void Write(long value)			{				OutputTabs();				writer.Write(value);			}	public override void Write(Object value)			{				OutputTabs();				writer.Write(value);			}	public override void Write(float value)			{				OutputTabs();				writer.Write(value);			}	public override void Write(String value)			{				OutputTabs();				writer.Write(value);			}	public override void Write(String value, Object arg0)			{				OutputTabs();				writer.Write(value, arg0);			}	public override void Write(String value, Object arg0, Object arg1)			{				OutputTabs();				writer.Write(value, arg0, arg1);			}	public override void Write(String value, params Object[] args)			{				OutputTabs();				writer.Write(value, args);			}	public override void Write(char[] value, int index, int count)			{				OutputTabs();				writer.Write(value, index, count);			}	// Write values of various types followed by a newline.	public override void WriteLine()			{				OutputTabs();				writer.WriteLine();				atLineStart = true;			}	public override void WriteLine(bool value)			{				OutputTabs();				writer.WriteLine(value);				atLineStart = true;			}	public override void WriteLine(char value)			{				OutputTabs();				writer.WriteLine(value);				atLineStart = true;			}	public override void WriteLine(char[] value)			{				OutputTabs();				writer.WriteLine(value);				atLineStart = true;			}	public override void WriteLine(double value)			{				OutputTabs();				writer.WriteLine(value);				atLineStart = true;			}	public override void WriteLine(int value)			{				OutputTabs();				writer.WriteLine(value);				atLineStart = true;			}	public override void WriteLine(long value)			{				OutputTabs();				writer.WriteLine(value);				atLineStart = true;			}	public override void WriteLine(Object value)			{				OutputTabs();				writer.WriteLine(value);				atLineStart = true;			}	public override void WriteLine(float value)			{				OutputTabs();				writer.WriteLine(value);				atLineStart = true;			}	public override void WriteLine(String value)			{				OutputTabs();				writer.WriteLine(value);				atLineStart = true;			}	public override void WriteLine(String value, Object arg0)			{				OutputTabs();				writer.WriteLine(value, arg0);				atLineStart = true;			}	public override void WriteLine(String value, Object arg0, Object arg1)			{				OutputTabs();				writer.WriteLine(value, arg0, arg1);				atLineStart = true;			}	public override void WriteLine(String value, params Object[] args)			{				OutputTabs();				writer.WriteLine(value, args);				atLineStart = true;			}	public override void WriteLine(char[] value, int index, int count)			{				OutputTabs();				writer.WriteLine(value, index, count);				atLineStart = true;			}	[CLSCompliant(false)]	public override void WriteLine(uint value)			{				OutputTabs();				writer.WriteLine(value);				atLineStart = true;			}	// Write a string with no tab processing.	public void WriteLineNoTabs(String s)			{				writer.WriteLine(s);			}}; // class IndentedTextWriter#endif // CONFIG_CODEDOM}; // namespace System.CodeDom.Compiler

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?