Updates referencesource to .NET 4.7
[mono.git] / mcs / class / referencesource / System.Data.SqlXml / System / Xml / Xsl / QIL / WhitespaceRule.cs
1 //------------------------------------------------------------------------------
2 // <copyright file="WhitespaceRule.cs" company="Microsoft">
3 //     Copyright (c) Microsoft Corporation.  All rights reserved.
4 // </copyright>
5 // <owner current="true" primary="true">Microsoft</owner>
6 // <owner current="false">Microsoft</owner>
7 //------------------------------------------------------------------------------
8
9 using System.Diagnostics;
10 using System.IO;
11 using System.Xml.Xsl.Runtime;
12
13 namespace System.Xml.Xsl.Qil {
14     /// <summary>
15     /// Data structure for storing whitespace rules generated by xsl:strip-space and xsl:preserve-space
16     /// </summary>
17     internal class WhitespaceRule {
18         private string  localName;
19         private string  namespaceName;
20         private bool    preserveSpace;
21
22         /// <summary>
23         /// Allow derived classes to construct empty whitespace rule.
24         /// </summary>
25         protected WhitespaceRule() {
26         }
27
28         /// <summary>
29         /// Construct new whitespace rule.
30         /// </summary>
31         public WhitespaceRule(string localName, string namespaceName, bool preserveSpace) {
32             Init(localName, namespaceName, preserveSpace);
33         }
34
35         /// <summary>
36         /// Initialize whitespace rule after it's been constructed.
37         /// </summary>
38         protected void Init(string localName, string namespaceName, bool preserveSpace) {
39             this.localName = localName;
40             this.namespaceName = namespaceName;
41             this.preserveSpace = preserveSpace;
42         }
43
44         /// <summary>
45         /// Local name of the element.
46         /// </summary>
47         public string LocalName {
48             get { return localName; }
49             set { localName = value; }
50         }
51
52         /// <summary>
53         /// Namespace name (uri) of the element.
54         /// </summary>
55         public string NamespaceName {
56             get { return namespaceName; }
57             set { namespaceName = value; }
58         }
59
60         /// <summary>
61         /// True, if this element is whitespace-preserving.
62         /// False, if this element is whitespace-stripping.
63         /// </summary>
64         public bool PreserveSpace {
65             get { return preserveSpace; }
66         }
67
68         /// <summary>
69         /// Serialize the object to BinaryWriter.
70         /// </summary>
71         public void GetObjectData(XmlQueryDataWriter writer) {
72             Debug.Assert(this.GetType() == typeof(WhitespaceRule), "Serialization of WhitespaceRule subclasses is not implemented");
73             // string localName;
74             writer.WriteStringQ(localName);
75             // string namespaceName;
76             writer.WriteStringQ(namespaceName);
77             // bool preserveSpace;
78             writer.Write(preserveSpace);
79         }
80
81         /// <summary>
82         /// Deserialize the object from BinaryReader.
83         /// </summary>
84         public WhitespaceRule(XmlQueryDataReader reader) {
85             // string localName;
86             this.localName = reader.ReadStringQ();
87             // string namespaceName;
88             this.namespaceName = reader.ReadStringQ();
89             // bool preserveSpace;
90             this.preserveSpace = reader.ReadBoolean();
91         }
92     }   
93 }