-//\r
-// Commons.Xml.Relaxng.Derivative.RdpNameClasses.cs\r
-//\r
-// Author:\r
-// Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>\r
-//\r
-// 2003 Atsushi Enomoto "No rights reserved."\r
-//\r
-// Copyright (c) 2004 Novell Inc.\r
-// All rights reserved\r
-//\r
-\r
-//\r
-// Permission is hereby granted, free of charge, to any person obtaining\r
-// a copy of this software and associated documentation files (the\r
-// "Software"), to deal in the Software without restriction, including\r
-// without limitation the rights to use, copy, modify, merge, publish,\r
-// distribute, sublicense, and/or sell copies of the Software, and to\r
-// permit persons to whom the Software is furnished to do so, subject to\r
-// the following conditions:\r
-// \r
-// The above copyright notice and this permission notice shall be\r
-// included in all copies or substantial portions of the Software.\r
-// \r
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\r
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\r
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\r
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\r
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
-//\r
-\r
-using System;\r
-using System.Xml;\r
-\r
-namespace Commons.Xml.Relaxng.Derivative\r
-{\r
- public enum RdpNameClassType\r
- {\r
- None = 0,\r
- AnyName = 1,\r
- AnyNameExcept = 2,\r
- NsName = 3,\r
- NsNameExcept = 4,\r
- Name = 5,\r
- NameClassChoice = 6\r
- }\r
-\r
- public abstract class RdpNameClass\r
- {\r
- public abstract bool HasInfiniteName { get; }\r
- public abstract RdpNameClassType NameClassType { get; }\r
- public abstract bool Contains (string name, string ns);\r
- }\r
-\r
- public class RdpAnyName : RdpNameClass\r
- {\r
- static RdpAnyName instance;\r
- static RdpAnyName ()\r
- {\r
- instance = new RdpAnyName ();\r
- }\r
-\r
- public static RdpAnyName Instance {\r
- get { return instance; }\r
- }\r
-\r
- private RdpAnyName () {}\r
-\r
- public override bool HasInfiniteName {\r
- get { return true; }\r
- }\r
-\r
- public override RdpNameClassType NameClassType {\r
- get { return RdpNameClassType.AnyName; }\r
- }\r
-\r
- public override bool Contains (string name, string ns)\r
- {\r
- return true;\r
- }\r
- }\r
-\r
- public class RdpAnyNameExcept : RdpNameClass\r
- {\r
- RdpNameClass except;\r
-\r
- public RdpAnyNameExcept (RdpNameClass except)\r
- {\r
- this.except = except;\r
- }\r
-\r
- public override bool HasInfiniteName {\r
- get { return true; }\r
- }\r
-\r
- public override RdpNameClassType NameClassType {\r
- get { return RdpNameClassType.AnyNameExcept; }\r
- }\r
-\r
- public RdpNameClass ExceptNameClass {\r
- get { return except; }\r
- }\r
-\r
- public override bool Contains (string name, string ns)\r
- {\r
- return (except == null) || !except.Contains (name, ns);\r
- }\r
- }\r
-\r
- public class RdpNsName : RdpNameClass\r
- {\r
- string ns;\r
-\r
- public RdpNsName (string ns)\r
- {\r
- this.ns = ns;\r
- }\r
-\r
- public override bool HasInfiniteName {\r
- get { return true; }\r
- }\r
-\r
- public override RdpNameClassType NameClassType {\r
- get { return RdpNameClassType.NsName; }\r
- }\r
-\r
- public string NamespaceURI {\r
- get { return ns; }\r
- }\r
-\r
- public override bool Contains (string name, string ns)\r
- {\r
- return NamespaceURI == ns;\r
- }\r
- }\r
-\r
- public class RdpNsNameExcept : RdpNsName\r
- {\r
- string ns;\r
- RdpNameClass except;\r
-\r
- public RdpNsNameExcept (string ns, RdpNameClass except)\r
- : base (ns)\r
- {\r
- this.ns = ns;\r
- this.except = except;\r
- }\r
-\r
- public override bool HasInfiniteName {\r
- get { return true; }\r
- }\r
-\r
- public override RdpNameClassType NameClassType {\r
- get { return RdpNameClassType.NsNameExcept; }\r
- }\r
-\r
- public RdpNameClass ExceptNameClass {\r
- get { return except; }\r
- }\r
-\r
- public override bool Contains (string name, string ns)\r
- {\r
- return this.ns == ns &&\r
- (except == null || !except.Contains (name, ns));\r
- }\r
- }\r
-\r
- public class RdpName : RdpNameClass\r
- {\r
- string local;\r
- string ns;\r
-\r
- public RdpName (string local, string ns)\r
- {\r
- this.ns = ns;\r
- this.local = local;\r
- }\r
-\r
- public override bool HasInfiniteName {\r
- get { return false; }\r
- }\r
-\r
- public override RdpNameClassType NameClassType {\r
- get { return RdpNameClassType.Name; }\r
- }\r
-\r
- public string NamespaceURI {\r
- get { return ns; }\r
- }\r
-\r
- public string LocalName {\r
- get { return local; }\r
- }\r
-\r
- public override bool Contains (string name, string ns)\r
- {\r
- return this.ns == ns && this.local == name;\r
- }\r
- }\r
-\r
- public class RdpNameClassChoice : RdpNameClass\r
- {\r
- RdpNameClass l;\r
- RdpNameClass r;\r
-\r
- public RdpNameClassChoice (RdpNameClass l, RdpNameClass r)\r
- {\r
- this.l = l;\r
- this.r = r;\r
- }\r
-\r
- public override bool HasInfiniteName {\r
- get { return l.HasInfiniteName || r.HasInfiniteName; }\r
- }\r
-\r
- public override RdpNameClassType NameClassType {\r
- get { return RdpNameClassType.NameClassChoice; }\r
- }\r
-\r
- public RdpNameClass LValue {\r
- get { return l; }\r
- }\r
-\r
- public RdpNameClass RValue {\r
- get { return r; }\r
- }\r
-\r
- public override bool Contains (string name, string ns)\r
- {\r
- return l.Contains (name, ns) || r.Contains (name, ns);\r
- }\r
- }\r
-\r
-}\r
-\r
+//
+// Commons.Xml.Relaxng.Derivative.RdpNameClasses.cs
+//
+// Author:
+// Atsushi Enomoto <ginga@kit.hi-ho.ne.jp>
+//
+// 2003 Atsushi Enomoto "No rights reserved."
+//
+// Copyright (c) 2004 Novell Inc.
+// All rights reserved
+//
+
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+//
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System;
+using System.Xml;
+
+namespace Commons.Xml.Relaxng.Derivative
+{
+ public enum RdpNameClassType
+ {
+ None = 0,
+ AnyName = 1,
+ AnyNameExcept = 2,
+ NsName = 3,
+ NsNameExcept = 4,
+ Name = 5,
+ NameClassChoice = 6
+ }
+
+ public abstract class RdpNameClass
+ {
+ public abstract bool HasInfiniteName { get; }
+ public abstract RdpNameClassType NameClassType { get; }
+ public abstract bool Contains (string name, string ns);
+ }
+
+ public class RdpAnyName : RdpNameClass
+ {
+ static RdpAnyName instance;
+ static RdpAnyName ()
+ {
+ instance = new RdpAnyName ();
+ }
+
+ public static RdpAnyName Instance {
+ get { return instance; }
+ }
+
+ private RdpAnyName () {}
+
+ public override bool HasInfiniteName {
+ get { return true; }
+ }
+
+ public override RdpNameClassType NameClassType {
+ get { return RdpNameClassType.AnyName; }
+ }
+
+ public override bool Contains (string name, string ns)
+ {
+ return true;
+ }
+ }
+
+ public class RdpAnyNameExcept : RdpNameClass
+ {
+ RdpNameClass except;
+
+ public RdpAnyNameExcept (RdpNameClass except)
+ {
+ this.except = except;
+ }
+
+ public override bool HasInfiniteName {
+ get { return true; }
+ }
+
+ public override RdpNameClassType NameClassType {
+ get { return RdpNameClassType.AnyNameExcept; }
+ }
+
+ public RdpNameClass ExceptNameClass {
+ get { return except; }
+ }
+
+ public override bool Contains (string name, string ns)
+ {
+ return (except == null) || !except.Contains (name, ns);
+ }
+ }
+
+ public class RdpNsName : RdpNameClass
+ {
+ string ns;
+
+ public RdpNsName (string ns)
+ {
+ this.ns = ns;
+ }
+
+ public override bool HasInfiniteName {
+ get { return true; }
+ }
+
+ public override RdpNameClassType NameClassType {
+ get { return RdpNameClassType.NsName; }
+ }
+
+ public string NamespaceURI {
+ get { return ns; }
+ }
+
+ public override bool Contains (string name, string ns)
+ {
+ return NamespaceURI == ns;
+ }
+ }
+
+ public class RdpNsNameExcept : RdpNsName
+ {
+ string ns;
+ RdpNameClass except;
+
+ public RdpNsNameExcept (string ns, RdpNameClass except)
+ : base (ns)
+ {
+ this.ns = ns;
+ this.except = except;
+ }
+
+ public override bool HasInfiniteName {
+ get { return true; }
+ }
+
+ public override RdpNameClassType NameClassType {
+ get { return RdpNameClassType.NsNameExcept; }
+ }
+
+ public RdpNameClass ExceptNameClass {
+ get { return except; }
+ }
+
+ public override bool Contains (string name, string ns)
+ {
+ return this.ns == ns &&
+ (except == null || !except.Contains (name, ns));
+ }
+ }
+
+ public class RdpName : RdpNameClass
+ {
+ string local;
+ string ns;
+
+ public RdpName (string local, string ns)
+ {
+ this.ns = ns;
+ this.local = local;
+ }
+
+ public override bool HasInfiniteName {
+ get { return false; }
+ }
+
+ public override RdpNameClassType NameClassType {
+ get { return RdpNameClassType.Name; }
+ }
+
+ public string NamespaceURI {
+ get { return ns; }
+ }
+
+ public string LocalName {
+ get { return local; }
+ }
+
+ public override bool Contains (string name, string ns)
+ {
+ return this.ns == ns && this.local == name;
+ }
+ }
+
+ public class RdpNameClassChoice : RdpNameClass
+ {
+ RdpNameClass l;
+ RdpNameClass r;
+
+ public RdpNameClassChoice (RdpNameClass l, RdpNameClass r)
+ {
+ this.l = l;
+ this.r = r;
+ }
+
+ public override bool HasInfiniteName {
+ get { return l.HasInfiniteName || r.HasInfiniteName; }
+ }
+
+ public override RdpNameClassType NameClassType {
+ get { return RdpNameClassType.NameClassChoice; }
+ }
+
+ public RdpNameClass LValue {
+ get { return l; }
+ }
+
+ public RdpNameClass RValue {
+ get { return r; }
+ }
+
+ public override bool Contains (string name, string ns)
+ {
+ return l.Contains (name, ns) || r.Contains (name, ns);
+ }
+ }
+
+}
+