2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / Commons.Xml.Relaxng / Commons.Xml.Relaxng / RelaxngPattern.cs
index 4a896af2628c4046625b010137fda6ed26964f67..99f5892a50d37e5a61ea467030c17a71009cc1cf 100644 (file)
@@ -36,6 +36,13 @@ using System.Collections;
 using System.IO;\r
 using System.Xml;\r
 using Commons.Xml.Relaxng.Derivative;\r
+using Commons.Xml.Relaxng.Rnc;\r
+\r
+#if NET_2_0\r
+using NSResolver = System.Xml.IXmlNamespaceResolver;\r
+#else\r
+using NSResolver = System.Xml.XmlNamespaceManager;\r
+#endif\r
 \r
 namespace Commons.Xml.Relaxng\r
 {\r
@@ -66,7 +73,9 @@ namespace Commons.Xml.Relaxng
                        set { baseUri = value; }\r
                }\r
 \r
-               public abstract void Write (XmlWriter write);\r
+               public abstract void Write (XmlWriter writer);\r
+\r
+               internal abstract void WriteRnc (RncWriter writer);\r
        }\r
 \r
        public abstract class RelaxngSingleContentPattern : RelaxngPattern\r
@@ -177,6 +186,11 @@ namespace Commons.Xml.Relaxng
                        writer.WriteEndElement ();\r
                }\r
 \r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteStart (this);\r
+               }\r
+\r
                internal RdpPattern Compile (RelaxngGrammar grammar)\r
                {\r
                        return p.Compile (grammar);\r
@@ -218,6 +232,11 @@ namespace Commons.Xml.Relaxng
                        writer.WriteEndElement ();\r
                }\r
 \r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteDefine (this);\r
+               }\r
+\r
                internal RdpPattern Compile (RelaxngGrammar grammar)\r
                {\r
                        return makeSingle (grammar);\r
@@ -286,6 +305,11 @@ namespace Commons.Xml.Relaxng
                        writer.WriteEndElement ();\r
                }\r
 \r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteInclude (this);\r
+               }\r
+\r
                // compile into div\r
                internal RelaxngDiv Compile (RelaxngGrammar grammar)\r
                {\r
@@ -399,6 +423,11 @@ namespace Commons.Xml.Relaxng
                        writer.WriteEndElement ();\r
                }\r
 \r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteDiv (this);\r
+               }\r
+\r
                internal void Compile (RelaxngGrammar grammar)\r
                {\r
                        foreach (RelaxngDiv div in divs)\r
@@ -481,6 +510,15 @@ namespace Commons.Xml.Relaxng
                        this.IsCompiled = true;\r
                }\r
 \r
+               public void WriteCompact (TextWriter writer)\r
+               {\r
+                       WriteRnc (new RncWriter (writer));\r
+               }\r
+\r
+               public void WriteCompact (TextWriter writer, NSResolver res)\r
+               {\r
+                       WriteRnc (new RncWriter (writer, res));\r
+               }\r
 \r
                // Internal\r
                internal XmlResolver Resolver {\r
@@ -577,6 +615,11 @@ namespace Commons.Xml.Relaxng
                        writer.WriteEndElement ();\r
                }\r
 \r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteNotAllowed (this);\r
+               }\r
+\r
                internal override RdpPattern Compile (RelaxngGrammar grammar)\r
                {\r
                        return RdpNotAllowed.Instance;\r
@@ -604,6 +647,11 @@ namespace Commons.Xml.Relaxng
                        writer.WriteEndElement ();\r
                }\r
 \r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteEmpty (this);\r
+               }\r
+\r
                internal override RdpPattern Compile (RelaxngGrammar grammar)\r
                {\r
                        return RdpEmpty.Instance;\r
@@ -631,6 +679,11 @@ namespace Commons.Xml.Relaxng
                        writer.WriteEndElement ();\r
                }\r
 \r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteText (this);\r
+               }\r
+\r
                internal override RdpPattern Compile (RelaxngGrammar grammar)\r
                {\r
                        return RdpText.Instance;\r
@@ -703,6 +756,11 @@ namespace Commons.Xml.Relaxng
                        writer.WriteEndElement ();\r
                }\r
 \r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteData (this);\r
+               }\r
+\r
                internal override RdpPattern Compile (RelaxngGrammar grammar)\r
                {\r
 //                     RdpParamList rdpl = new RdpParamList ();\r
@@ -758,6 +816,11 @@ namespace Commons.Xml.Relaxng
                        writer.WriteEndElement ();\r
                }\r
 \r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteValue (this);\r
+               }\r
+\r
                internal override RdpPattern Compile (RelaxngGrammar grammar)\r
                {\r
                        IsCompiled = true;\r
@@ -789,6 +852,11 @@ namespace Commons.Xml.Relaxng
                        writer.WriteEndElement ();\r
                }\r
 \r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteList (this);\r
+               }\r
+\r
                internal override RdpPattern Compile (RelaxngGrammar grammar)\r
                {\r
 \r
@@ -828,6 +896,11 @@ namespace Commons.Xml.Relaxng
                        writer.WriteEndElement ();\r
                }\r
 \r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteElement (this);\r
+               }\r
+\r
                internal override RdpPattern Compile (RelaxngGrammar grammar)\r
                {\r
                        return new RdpElement (\r
@@ -875,6 +948,11 @@ namespace Commons.Xml.Relaxng
                        writer.WriteEndElement ();\r
                }\r
 \r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteAttribute (this);\r
+               }\r
+\r
                private void checkInvalidAttrNameClass (RdpNameClass nc)\r
                {\r
                        string xmlnsNS = "http://www.w3.org/2000/xmlns";\r
@@ -1027,6 +1105,11 @@ namespace Commons.Xml.Relaxng
                        writer.WriteEndElement ();\r
                }\r
 \r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteRef (this);\r
+               }\r
+\r
                internal override RdpPattern Compile (RelaxngGrammar grammar)\r
                {\r
                        // Important!! This compile method only generates stub.\r
@@ -1064,6 +1147,11 @@ namespace Commons.Xml.Relaxng
                        writer.WriteEndElement ();\r
                }\r
 \r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteParentRef (this);\r
+               }\r
+\r
                internal override RdpPattern Compile (RelaxngGrammar grammar)\r
                {\r
                        IsCompiled = false;\r
@@ -1106,6 +1194,11 @@ namespace Commons.Xml.Relaxng
                        writer.WriteEndElement ();\r
                }\r
 \r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteExternalRef (this);\r
+               }\r
+\r
                internal override RdpPattern Compile (RelaxngGrammar grammar)\r
                {\r
                        grammar.CheckIncludeRecursion (Href);\r
@@ -1157,6 +1250,11 @@ namespace Commons.Xml.Relaxng
                        writer.WriteEndElement ();\r
                }\r
 \r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteOneOrMore (this);\r
+               }\r
+\r
                internal override RdpPattern Compile (RelaxngGrammar grammar)\r
                {\r
                        IsCompiled = true;\r
@@ -1182,6 +1280,11 @@ namespace Commons.Xml.Relaxng
                        writer.WriteEndElement ();\r
                }\r
 \r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteZeroOrMore (this);\r
+               }\r
+\r
                internal override RdpPattern Compile (RelaxngGrammar grammar)\r
                {\r
                        IsCompiled = true;\r
@@ -1209,6 +1312,11 @@ namespace Commons.Xml.Relaxng
                        writer.WriteEndElement ();\r
                }\r
 \r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteOptional (this);\r
+               }\r
+\r
                internal override RdpPattern Compile (RelaxngGrammar grammar)\r
                {\r
                        IsCompiled = true;\r
@@ -1235,6 +1343,11 @@ namespace Commons.Xml.Relaxng
                        writer.WriteEndElement ();\r
                }\r
 \r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteMixed (this);\r
+               }\r
+\r
                internal override RdpPattern Compile (RelaxngGrammar grammar)\r
                {\r
                        IsCompiled = true;\r
@@ -1260,6 +1373,11 @@ namespace Commons.Xml.Relaxng
                        writer.WriteEndElement ();\r
                }\r
 \r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteChoice (this);\r
+               }\r
+\r
                internal override RdpPattern Compile (RelaxngGrammar grammar)\r
                {\r
                        IsCompiled = true;\r
@@ -1285,6 +1403,11 @@ namespace Commons.Xml.Relaxng
                        writer.WriteEndElement ();\r
                }\r
 \r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteGroup (this);\r
+               }\r
+\r
                internal override RdpPattern Compile (RelaxngGrammar grammar)\r
                {\r
                        IsCompiled = true;\r
@@ -1310,6 +1433,11 @@ namespace Commons.Xml.Relaxng
                        writer.WriteEndElement ();\r
                }\r
 \r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteInterleave (this);\r
+               }\r
+\r
                internal override RdpPattern Compile (RelaxngGrammar grammar)\r
                {\r
                        IsCompiled = true;\r
@@ -1350,6 +1478,11 @@ namespace Commons.Xml.Relaxng
                        writer.WriteEndElement ();\r
                }\r
 \r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteParam (this);\r
+               }\r
+\r
                internal RdpParam Compile (RelaxngGrammar grammar)\r
                {\r
                        IsCompiled = true;\r
@@ -1403,6 +1536,11 @@ namespace Commons.Xml.Relaxng
                                p.Write (writer);\r
                        writer.WriteEndElement ();\r
                }\r
+\r
+               internal override void WriteRnc (RncWriter writer)\r
+               {\r
+                       writer.WriteDataExcept (this);\r
+               }\r
        }\r
 \r
        internal class RelaxngRefPattern\r