IndentTextWriter.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / CompMod / System / CodeDOM / Compiler / IndentTextWriter.cs / 1 / IndentTextWriter.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

namespace System.CodeDom.Compiler { 
 
    using System.Diagnostics;
    using System; 
    using System.IO;
    using System.Text;
    using System.Security.Permissions;
    using System.Globalization; 

    ///  
    ///    Provides a text writer that can indent new lines by a tabString token. 
    /// 
    [PermissionSet(SecurityAction.LinkDemand, Name="FullTrust")] 
    [PermissionSet(SecurityAction.InheritanceDemand, Name="FullTrust")]
    public class IndentedTextWriter : TextWriter {
        private TextWriter writer;
        private int indentLevel; 
        private bool tabsPending;
        private string tabString; 
 
        /// 
        ///    [To be supplied.] 
        /// 
        public const string DefaultTabString = "    ";

        ///  
        ///    
        ///       Initializes a new instance of  using the specified 
        ///       text writer and default tab string. 
        ///    
        ///  
        public IndentedTextWriter(TextWriter writer) : this(writer, DefaultTabString) {
        }

        ///  
        ///    
        ///       Initializes a new instance of  using the specified 
        ///       text writer and tab string. 
        ///    
        ///  
        public IndentedTextWriter(TextWriter writer, string tabString): base(CultureInfo.InvariantCulture) {
            this.writer = writer;
            this.tabString = tabString;
            indentLevel = 0; 
            tabsPending = false;
        } 
 
        /// 
        ///    [To be supplied.] 
        /// 
        public override Encoding Encoding {
            get {
                return writer.Encoding; 
            }
        } 
 
        /// 
        ///     
        ///       Gets or sets the new line character to use.
        ///    
        /// 
        public override string NewLine { 
            get {
                return writer.NewLine; 
            } 

            set { 
                writer.NewLine = value;
            }
        }
 
        /// 
        ///     
        ///       Gets or sets the number of spaces to indent. 
        ///    
        ///  
        public int Indent {
            get {
                return indentLevel;
            } 
            set {
                Debug.Assert(value >= 0, "Bogus Indent... probably caused by mismatched Indent++ and Indent--"); 
                if (value < 0) { 
                    value = 0;
                } 
                indentLevel = value;
            }
        }
 
        /// 
        ///     
        ///       Gets or sets the TextWriter to use. 
        ///    
        ///  
        public TextWriter InnerWriter {
            get {
                return writer;
            } 
        }
 
        internal string TabString { 
            get { return tabString; }
        } 

        /// 
        ///    
        ///       Closes the document being written to. 
        ///    
        ///  
        public override void Close() { 
            writer.Close();
        } 

        /// 
        ///    [To be supplied.]
        ///  
        public override void Flush() {
            writer.Flush(); 
        } 

        ///  
        ///    [To be supplied.]
        /// 
        protected virtual void OutputTabs() {
            if (tabsPending) { 
                for (int i=0; i < indentLevel; i++) {
                    writer.Write(tabString); 
                } 
                tabsPending = false;
            } 
        }

        /// 
        ///     
        ///       Writes a string
        ///       to the text stream. 
        ///     
        /// 
        public override void Write(string s) { 
            OutputTabs();
            writer.Write(s);
        }
 
        /// 
        ///     
        ///       Writes the text representation of a Boolean value to the text stream. 
        ///    
        ///  
        public override void Write(bool value) {
            OutputTabs();
            writer.Write(value);
        } 

        ///  
        ///     
        ///       Writes a character to the text stream.
        ///     
        /// 
        public override void Write(char value) {
            OutputTabs();
            writer.Write(value); 
        }
 
        ///  
        ///    
        ///       Writes a 
        ///       character array to the text stream.
        ///    
        /// 
        public override void Write(char[] buffer) { 
            OutputTabs();
            writer.Write(buffer); 
        } 

        ///  
        ///    
        ///       Writes a subarray
        ///       of characters to the text stream.
        ///     
        /// 
        public override void Write(char[] buffer, int index, int count) { 
            OutputTabs(); 
            writer.Write(buffer, index, count);
        } 

        /// 
        ///    
        ///       Writes the text representation of a Double to the text stream. 
        ///    
        ///  
        public override void Write(double value) { 
            OutputTabs();
            writer.Write(value); 
        }

        /// 
        ///     
        ///       Writes the text representation of
        ///       a Single to the text 
        ///       stream. 
        ///    
        ///  
        public override void Write(float value) {
            OutputTabs();
            writer.Write(value);
        } 

        ///  
        ///     
        ///       Writes the text representation of an integer to the text stream.
        ///     
        /// 
        public override void Write(int value) {
            OutputTabs();
            writer.Write(value); 
        }
 
        ///  
        ///    
        ///       Writes the text representation of an 8-byte integer to the text stream. 
        ///    
        /// 
        public override void Write(long value) {
            OutputTabs(); 
            writer.Write(value);
        } 
 
        /// 
        ///     
        ///       Writes the text representation of an object
        ///       to the text stream.
        ///    
        ///  
        public override void Write(object value) {
            OutputTabs(); 
            writer.Write(value); 
        }
 
        /// 
        ///    
        ///       Writes out a formatted string, using the same semantics as specified.
        ///     
        /// 
        public override void Write(string format, object arg0) { 
            OutputTabs(); 
            writer.Write(format, arg0);
        } 

        /// 
        ///    
        ///       Writes out a formatted string, 
        ///       using the same semantics as specified.
        ///     
        ///  
        public override void Write(string format, object arg0, object arg1) {
            OutputTabs(); 
            writer.Write(format, arg0, arg1);
        }

        ///  
        ///    
        ///       Writes out a formatted string, 
        ///       using the same semantics as specified. 
        ///    
        ///  
        public override void Write(string format, params object[] arg) {
            OutputTabs();
            writer.Write(format, arg);
        } 

        ///  
        ///     
        ///       Writes the specified
        ///       string to a line without tabs. 
        ///    
        /// 
        public void WriteLineNoTabs(string s) {
            writer.WriteLine(s); 
        }
 
        ///  
        ///    
        ///       Writes the specified string followed by 
        ///       a line terminator to the text stream.
        ///    
        /// 
        public override void WriteLine(string s) { 
            OutputTabs();
            writer.WriteLine(s); 
            tabsPending = true; 
        }
 
        /// 
        ///    
        ///       Writes a line terminator.
        ///     
        /// 
        public override void WriteLine() { 
            OutputTabs(); 
            writer.WriteLine();
            tabsPending = true; 
        }

        /// 
        ///     
        ///       Writes the text representation of a Boolean followed by a line terminator to
        ///       the text stream. 
        ///     
        /// 
        public override void WriteLine(bool value) { 
            OutputTabs();
            writer.WriteLine(value);
            tabsPending = true;
        } 

        ///  
        ///    [To be supplied.] 
        /// 
        public override void WriteLine(char value) { 
            OutputTabs();
            writer.WriteLine(value);
            tabsPending = true;
        } 

        ///  
        ///    [To be supplied.] 
        /// 
        public override void WriteLine(char[] buffer) { 
            OutputTabs();
            writer.WriteLine(buffer);
            tabsPending = true;
        } 

        ///  
        ///    [To be supplied.] 
        /// 
        public override void WriteLine(char[] buffer, int index, int count) { 
            OutputTabs();
            writer.WriteLine(buffer, index, count);
            tabsPending = true;
        } 

        ///  
        ///    [To be supplied.] 
        /// 
        public override void WriteLine(double value) { 
            OutputTabs();
            writer.WriteLine(value);
            tabsPending = true;
        } 

        ///  
        ///    [To be supplied.] 
        /// 
        public override void WriteLine(float value) { 
            OutputTabs();
            writer.WriteLine(value);
            tabsPending = true;
        } 

        ///  
        ///    [To be supplied.] 
        /// 
        public override void WriteLine(int value) { 
            OutputTabs();
            writer.WriteLine(value);
            tabsPending = true;
        } 

        ///  
        ///    [To be supplied.] 
        /// 
        public override void WriteLine(long value) { 
            OutputTabs();
            writer.WriteLine(value);
            tabsPending = true;
        } 

        ///  
        ///    [To be supplied.] 
        /// 
        public override void WriteLine(object value) { 
            OutputTabs();
            writer.WriteLine(value);
            tabsPending = true;
        } 

        ///  
        ///    [To be supplied.] 
        /// 
        public override void WriteLine(string format, object arg0) { 
            OutputTabs();
            writer.WriteLine(format, arg0);
            tabsPending = true;
        } 

        ///  
        ///    [To be supplied.] 
        /// 
        public override void WriteLine(string format, object arg0, object arg1) { 
            OutputTabs();
            writer.WriteLine(format, arg0, arg1);
            tabsPending = true;
        } 

        ///  
        ///    [To be supplied.] 
        /// 
        public override void WriteLine(string format, params object[] arg) { 
            OutputTabs();
            writer.WriteLine(format, arg);
            tabsPending = true;
        } 

        ///  
        ///    [To be supplied.] 
        /// 
        [CLSCompliant(false)] 
        public override void WriteLine(UInt32 value) {
            OutputTabs();
            writer.WriteLine(value);
            tabsPending = true; 
        }
 
        internal void InternalOutputTabs() { 
            for (int i=0; i < indentLevel; i++) {
                writer.Write(tabString); 
            }
        }
    }
 
    internal class Indentation {
        private IndentedTextWriter writer; 
        private int indent; 
        private string s;
 
        internal Indentation(IndentedTextWriter writer, int indent) {
            this.writer = writer;
            this.indent = indent;
            s = null; 
        }
 
        internal string IndentationString { 
            get {
                if ( s == null) { 
                    string tabString = writer.TabString;
                    StringBuilder sb = new StringBuilder(indent * tabString.Length);
                    for( int i = 0; i < indent; i++) {
                        sb.Append(tabString); 
                    }
                    s = sb.ToString(); 
                } 
                return s;
            } 
        }
    }
}
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK