2002-04-12 Duncan Mak <duncan@ximian.com>
[mono.git] / mcs / class / System.XML / System.Xml / XmlDocumentFragment.cs
index 24717d7a03ceaf307fd944b5a50ededb5d1343c7..8bc9aa4aac3a568710db528572e5447fa0d44b64 100644 (file)
@@ -1,96 +1,84 @@
-// -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-\r
 //\r
 // System.Xml.XmlDocumentFragment\r
 //\r
 // Author:\r
-//   Daniel Weber (daniel-weber@austin.rr.com)\r
+//   Duncan Mak  (duncan@ximian.com)\r
+//\r
+// (C), Ximian, Inc\r
 //\r
-// (C) 2001 Daniel Weber\r
 using System;\r
 \r
 namespace System.Xml\r
 {\r
-       /// <summary>\r
-       /// \r
-       /// </summary>\r
        public class XmlDocumentFragment : XmlNode\r
        {\r
-               // Private data members\r
+               #region Constructor\r
 \r
-               // public properties\r
-               //===========================================================================\r
-               /// <summary>\r
-               /// Returns the local name of the node with.  For document fragments, it returns "#document-fragment"\r
-               /// </summary>\r
-               public override string LocalName \r
+               protected internal XmlDocumentFragment (XmlDocument doc)\r
+                       : base (doc)\r
                {\r
-                       get\r
-                       {\r
-                               return "#document-fragment";\r
-                       }\r
+               }\r
+               \r
+               #endregion\r
+               #region Properties\r
+\r
+               [MonoTODO]\r
+               public override string InnerXml {\r
+                       set { throw new NotImplementedException (); }\r
+                       get { throw new NotImplementedException (); }\r
+               }\r
+               \r
+               public override string LocalName {\r
+                       get { return "#document-fragment"; }\r
                }\r
 \r
 \r
-               /// <summary>\r
-               /// Get the node name.  Document fragments return "#document-fragment".\r
-               /// </summary>\r
-               public override string Name \r
-               { \r
-                       get\r
-                       {\r
-                               return "#document-fragment";\r
-                       }\r
+               public override string Name { \r
+                       get { return "#document-fragment"; }\r
                }\r
 \r
-               /// <summary>\r
-               /// Overridden.  Returns XmlNodeType.DocumentFragment.\r
-               /// </summary>\r
-               public override XmlNodeType NodeType \r
-               {\r
-                       get\r
-                       {\r
-                               return XmlNodeType.DocumentFragment;\r
-                       }\r
+               public override XmlNodeType NodeType {\r
+                       get { return XmlNodeType.DocumentFragment; }\r
                }\r
-               \r
-               // Public Methods\r
-               //===========================================================================\r
-               /// <summary>\r
-               /// Return a clone of the node\r
-               /// </summary>\r
-               /// <param name="deep">Make copy of all children</param>\r
-               /// <returns>Cloned node</returns>\r
-               public override XmlNode CloneNode( bool deep)\r
-               {\r
-                       // TODO - implement CloneNode()\r
-                       throw new NotImplementedException();\r
+\r
+               public override XmlDocument OwnerDocument {\r
+                       get { return base.OwnerDocument; }\r
+               }\r
+\r
+               public override XmlNode ParentNode {\r
+                       get { return null; } // it's always null here.\r
                }\r
 \r
-               /// <summary>\r
-               /// Saves all children of the current node to the passed writer\r
-               /// </summary>\r
-               /// <param name="w"></param>\r
-               public override void WriteContentTo(XmlWriter w)\r
+               #endregion\r
+\r
+               #region Methods         \r
+               public override XmlNode CloneNode (bool deep)\r
                {\r
-                       // TODO - implement WriteContentsTo(XmlWriter)\r
-                       throw new NotImplementedException();\r
+                       if (deep) { // clone document + child nodes\r
+                               XmlNode node = FirstChild;\r
+\r
+                               while ((node != null) && (node.HasChildNodes)) {\r
+                                       AppendChild (node.NextSibling.CloneNode (false));\r
+                                       node = node.NextSibling;\r
+                               }\r
+\r
+                               return node;\r
+                       } else\r
+                               return new XmlDocumentFragment (OwnerDocument);\r
                }\r
 \r
-               /// <summary>\r
-               /// Saves the current node to writer w\r
-               /// </summary>\r
-               /// <param name="w"></param>\r
-               public override void WriteTo(XmlWriter w)\r
+               [MonoTODO]\r
+               public override void WriteContentTo (XmlWriter w)\r
                {\r
-                       // TODO - implement WriteTo(XmlWriter)\r
-                       throw new NotImplementedException();\r
+                       throw new NotImplementedException ();\r
                }\r
 \r
-               // Constructors\r
-               //===========================================================================\r
-               internal XmlDocumentFragment ( XmlDocument aOwner ) : base (aOwner)\r
+               [MonoTODO]\r
+               public override void WriteTo (XmlWriter w)\r
                {\r
+                       throw new NotImplementedException ();\r
                }\r
 \r
+               #endregion\r
        }\r
 }\r