Merge pull request #103 from XTZGZoReX/master
[mono.git] / mcs / class / System.XML / System.Xml.Serialization / XmlSerializationWriter.cs
index a5bc7b29fa4a50cd639d996fbc2a84bb2caa72a1..890d22022d9c65b8267d1676f96756e8ae277d19 100644 (file)
@@ -31,6 +31,7 @@
 
 using System;
 using System.Collections;
+using System.Collections.Generic;
 using System.Globalization;
 using System.Text;
 using System.Xml;
@@ -54,7 +55,11 @@ namespace System.Xml.Serialization
 
                ArrayList namespaces;
                XmlWriter writer;
+#if MOONLIGHT
+               Queue<object> referencedElements;
+#else
                Queue referencedElements;
+#endif
                Hashtable callbacks;
                Hashtable serializedObjects;
                const string xmlNamespace = "http://www.w3.org/2000/xmlns/";
@@ -87,10 +92,17 @@ namespace System.Xml.Serialization
 
                #region Properties
 
+#if MOONLIGHT
+               protected IList XmlNamespaces {
+                       get { return namespaces; }
+                       set { namespaces = (value as ArrayList); }
+               }
+#else
                protected ArrayList Namespaces {
                        get { return namespaces; }
                        set { namespaces = value; }
                }
+#endif
 
                protected XmlWriter Writer {
                        get { return writer; }
@@ -297,6 +309,7 @@ namespace System.Xml.Serialization
                        Writer.WriteAttributeString (prefix, localName, ns, value);
                }
 
+#if !MOONLIGHT
                void WriteXmlNode (XmlNode node)
                {
                        if (node is XmlDocument)
@@ -344,6 +357,7 @@ namespace System.Xml.Serialization
                        else
                                WriteXmlNode (node);
                }
+#endif
 
                protected void WriteElementQualifiedName (string localName, XmlQualifiedName value)
                {
@@ -490,8 +504,11 @@ namespace System.Xml.Serialization
                {
                        if (ns == null)
                                return;
-
+#if MOONLIGHT
+                       IEnumerable<XmlQualifiedName> namespaces = ns.GetNamespaces ();
+#else
                        ICollection namespaces = ns.Namespaces.Values;
+#endif
                        foreach (XmlQualifiedName qn in namespaces) {
                                if (qn.Namespace != String.Empty && Writer.LookupPrefix (qn.Namespace) != qn.Name)
                                        WriteAttribute ("xmlns", qn.Name, xmlNamespace, qn.Namespace);
@@ -743,7 +760,11 @@ namespace System.Xml.Serialization
                {
                        if (referencedElements == null)  
                        {
+#if MOONLIGHT
+                               referencedElements = new Queue<object> ();
+#else
                                referencedElements = new Queue ();
+#endif
                                InitCallbacks ();
                        }
                }
@@ -910,6 +931,7 @@ namespace System.Xml.Serialization
                                Writer.WriteString (value);
                }
 
+#if !MOONLIGHT
                protected void WriteXmlAttribute (XmlNode node)
                {
                        WriteXmlAttribute (node, null);
@@ -935,6 +957,7 @@ namespace System.Xml.Serialization
                        
                        WriteAttribute (attr.Prefix, attr.LocalName, attr.NamespaceURI, attr.Value);
                }
+#endif
 
                protected void WriteXsiType (string name, string ns)
                {