Add licensing info
[mono.git] / mcs / class / Commons.Xml.Relaxng / Commons.Xml.Relaxng.Derivative / RdpObjects.cs
1 //\r
2 // Commons.Xml.Relaxng.Derivative.RdpObjects.cs\r
3 //\r
4 // Author:\r
5 //      Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>\r
6 //\r
7 // 2003 Atsushi Enomoto "No rights reserved."\r
8 //\r
9
10 //
11 // Permission is hereby granted, free of charge, to any person obtaining
12 // a copy of this software and associated documentation files (the
13 // "Software"), to deal in the Software without restriction, including
14 // without limitation the rights to use, copy, modify, merge, publish,
15 // distribute, sublicense, and/or sell copies of the Software, and to
16 // permit persons to whom the Software is furnished to do so, subject to
17 // the following conditions:
18 // 
19 // The above copyright notice and this permission notice shall be
20 // included in all copies or substantial portions of the Software.
21 // 
22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29 //
30 \r
31 using System;\r
32 using System.Collections;\r
33 using System.Collections.Specialized;\r
34 using System.Xml;\r
35 \r
36 namespace Commons.Xml.Relaxng.Derivative\r
37 {\r
38         ///\r
39         /// Datatype Related Classes\r
40         ///\r
41         public class RdpParamList : ArrayList\r
42         {\r
43                 public RdpParamList () : base ()\r
44                 {\r
45                 }\r
46         }\r
47 \r
48         public class RdpParam\r
49         {\r
50                 public RdpParam (string localName, string value)\r
51                 {\r
52                         this.localName = localName;\r
53                         this.value = value;\r
54                 }\r
55 \r
56                 string value;\r
57                 public string Value {\r
58                         get { return this.value; }\r
59                 }\r
60 \r
61                 string localName;\r
62                 public string LocalName {\r
63                         get { return localName; }\r
64                 }\r
65         }\r
66 \r
67         public class RdpDatatype\r
68         {\r
69                 RelaxngDatatypeProvider provider;\r
70                 string localName;\r
71                 string ns;\r
72                 RelaxngDatatype datatype;\r
73 \r
74                 public RdpDatatype (string ns, string localName, RelaxngParamList parameters, RelaxngDatatypeProvider provider)\r
75                 {\r
76                         this.ns = ns;\r
77                         this.localName = localName;\r
78                         this.provider = provider;\r
79                         if (provider == null)\r
80                                 provider = RelaxngMergedProvider.DefaultProvider;\r
81                         datatype = provider.GetDatatype (localName, ns, parameters);\r
82                         if (datatype == null) {\r
83                                 throw new RelaxngException ("Invalid datatype was found.");\r
84 //                              datatype = RelaxngString.Instance;\r
85                         }\r
86                 }\r
87 \r
88                 public string NamespaceURI {\r
89                         get { return ns; }\r
90                 }\r
91 \r
92                 public string LocalName {\r
93                         get { return localName; }\r
94                 }\r
95 \r
96                 public virtual bool IsAllowed (string value, XmlReader reader)\r
97                 {\r
98                         return datatype.IsValid (value, reader);\r
99                 }\r
100 \r
101                 static char [] wsChars = new char [] {' ', '\n', '\r', '\t'};\r
102 \r
103                 public virtual bool IsTypeEqual (string s1, string s2, XmlReader reader)\r
104                 {\r
105                         return datatype.CompareString (s1, s2, reader);\r
106                 }\r
107         }\r
108 \r
109         /*\r
110 \r
111         ///\r
112         /// ChildNode Classes\r
113         ///\r
114         public abstract class RdpChildNode\r
115         {\r
116                 // Strip\r
117                 public virtual bool IsNonWhitespaceText {\r
118                         get { return false; }\r
119                 }\r
120         }\r
121 \r
122         public class RdpTextChild : RdpChildNode\r
123         {\r
124                 public RdpTextChild (string text)\r
125                 {\r
126                         this.text = text;\r
127                 }\r
128 \r
129                 string text;\r
130                 public string Text {\r
131                         get { return text; }\r
132                 }\r
133 \r
134                 public override bool IsNonWhitespaceText {\r
135                         get { return RdpUtil.Whitespace (text); }\r
136                 }\r
137         }\r
138 \r
139         public class RdpElementChild : RdpChildNode\r
140         {\r
141                 public RdpElementChild (string name, string ns, RdpContext ctx, RdpAttributes attributes, RdpChildNodes childNodes)\r
142                 {\r
143                         this.name = name;\r
144                         this.ns = ns;\r
145                         this.ctx = ctx;\r
146                         this.attributes = attributes;\r
147                         this.childNodes = childNodes;\r
148                 }\r
149 \r
150                 string name;\r
151                 public string LocalName {\r
152                         get { return name; }\r
153                 }\r
154 \r
155                 string ns;\r
156                 public string NamespaceURI {\r
157                         get { return ns; }\r
158                 }\r
159 \r
160                 RdpContext ctx;\r
161                 public RdpContext Context {\r
162                         get { return ctx; }\r
163                 }\r
164 \r
165                 RdpAttributes attributes;\r
166                 public RdpAttributes Attributes {\r
167                         get { return attributes; }\r
168                 }\r
169 \r
170                 RdpChildNodes childNodes;\r
171                 public RdpChildNodes ChildNodes {\r
172                         get { return childNodes; }\r
173                 }\r
174         }\r
175         */\r
176 \r
177         /*\r
178         public class RdpChildNodes : ArrayList\r
179         {\r
180                 public RdpChildNodes () : base ()\r
181                 {\r
182                 }\r
183         }\r
184 \r
185         public class RdpAttributes : ArrayList\r
186         {\r
187                 public RdpAttributes () : base ()\r
188                 {\r
189                 }\r
190         }\r
191 \r
192         public class RdpAttributeNode : RdpChildNode\r
193         {\r
194                 public RdpAttributeNode (string name, string ns, string value) : base ()\r
195                 {\r
196                         this.name = name;\r
197                         this.ns = ns;\r
198                         this.value = value;\r
199                 }\r
200 \r
201                 string value;\r
202                 public string Value {\r
203                         get { return value; }\r
204                 }\r
205 \r
206                 string name;\r
207                 public string LocalName {\r
208                         get { return name; }\r
209                 }\r
210 \r
211                 string ns;\r
212                 public string NamespaceURI {\r
213                         get { return ns; }\r
214                 }\r
215         }\r
216         */\r
217 }\r
218 \r