Update Reference Sources to .NET Framework 4.6.1
[mono.git] / mcs / class / referencesource / System.Xml / System / Xml / Serialization / indentedWriter.cs
1 //------------------------------------------------------------------------------
2 // <copyright file="IndentedWriter.cs" company="Microsoft">
3 //     Copyright (c) Microsoft Corporation.  All rights reserved.
4 // </copyright>
5 // <owner current="true" primary="true">[....]</owner>                                                                
6 //------------------------------------------------------------------------------
7
8 namespace System.Xml.Serialization {
9
10     using System.IO;
11     
12     /// <include file='doc\IndentedWriter.uex' path='docs/doc[@for="IndentedWriter"]/*' />
13     /// <devdoc>
14     ///     This class will write to a stream and manage indentation.
15     /// </devdoc>
16     internal class IndentedWriter {
17         TextWriter writer;
18         bool needIndent;
19         int indentLevel;
20         bool compact;
21         
22         internal IndentedWriter(TextWriter writer, bool compact) {
23             this.writer = writer;
24             this.compact = compact;
25         }
26
27         internal int Indent {
28             get {
29                 return indentLevel;
30             }
31             set {
32                 indentLevel = value;
33             }
34         }
35         
36         internal void Write(string s) {
37             if (needIndent) WriteIndent();
38             writer.Write(s);
39         }
40         
41         internal void Write(char c) {
42             if (needIndent) WriteIndent();
43             writer.Write(c);
44         }
45         
46         internal void WriteLine(string s) {
47             if (needIndent) WriteIndent();
48             writer.WriteLine(s);
49             needIndent = true;
50         }
51         
52         internal void WriteLine() {
53             writer.WriteLine();
54             needIndent = true;
55         }
56
57         internal void WriteIndent() {
58             needIndent = false;
59             if (!compact) {
60                 for (int i = 0; i < indentLevel; i++) {
61                     writer.Write("    ");
62                 }
63             }
64         }
65     }
66 }