Jelajahi Sumber

2005-12-08 Atsushi Enomoto <[email protected]>

	* XPathDocument2.cs, XPathDocument2Editable.cs,
	  XPathDocument2Navigator.cs : garbage cleanup.


svn path=/trunk/mcs/; revision=54101
Atsushi Eno 20 tahun lalu
induk
melakukan
fff797f63f

+ 5 - 0
mcs/class/System.XML/Mono.Xml.XPath/ChangeLog

@@ -1,3 +1,8 @@
+2005-12-08  Atsushi Enomoto  <[email protected]>
+
+	* XPathDocument2.cs, XPathDocument2Editable.cs,
+	  XPathDocument2Navigator.cs : garbage cleanup.
+
 2005-08-05  Atsushi Enomoto  <[email protected]>
 
 	* Pattern.cs, IdPattern.cs, LocationPathPattern.cs, UnionPattern.cs :

+ 0 - 1188
mcs/class/System.XML/Mono.Xml.XPath/XPathDocument2.cs

@@ -1,1188 +0,0 @@
-//
-// Mono.Xml.XPath.XPathDocument2.cs
-//
-// Author:
-//	Atsushi Enomoto <[email protected]>
-//
-// (C)2004 Novell Inc.
-//
-// Another Document tree model.
-//
-
-//
-// 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.
-//
-#if NET_2_0
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-using System.IO;
-using System.Text;
-using System.Xml;
-using System.Xml.XPath;
-
-namespace Mono.Xml.XPath
-{
-
-/*
-	public class Driver
-	{
-		public static void Main ()
-		{
-			try {
-				DateTime start = DateTime.Now;
-				Console.WriteLine (DateTime.Now.Ticks);
-#if false
-				XmlDocument doc = new XmlDocument ();
-				doc.PreserveWhitespace = true;
-				doc.Load (new XmlTextReader ("../TestResult.xml"));
-#else
-				XPathDocument2 doc = new XPathDocument2 ();
-				doc.Load (new XmlTextReader ("../TestResult.xml"));
-//				XPathDocument doc = new XPathDocument ("../TestResult.xml", XmlSpace.Preserve);
-//				XPathDocument doc = new XPathDocument ("test.xml", XmlSpace.Preserve);
-#endif
-//				doc.Load (new XmlTextReader ("test.xml"));
-
-//				doc.WriteTo (new XmlTextWriter (Console.Out));
-//return;
-				Console.WriteLine (DateTime.Now.Ticks);
-
-				XPathNavigator nav = doc.CreateNavigator ();
-//Console.WriteLine (nav.MoveToFirstChild ());
-//Console.WriteLine (nav.LocalName + nav.NodeType);
-//Console.WriteLine (nav.MoveToNext ());
-//Console.WriteLine (nav.LocalName + nav.NodeType);
-//Console.WriteLine (nav.MoveToNext ());
-//Console.WriteLine (nav.LocalName + nav.NodeType);
-//Console.WriteLine (nav.MoveToNext ());
-//Console.WriteLine (nav.LocalName + nav.NodeType);
-//nav.MoveToRoot ();
-
-
-				XmlReader reader = nav.ReadSubtree ();
-				XmlTextWriter w = new XmlTextWriter (new StringWriter ());
-//				XmlTextWriter w = new XmlTextWriter (Console.Out);
-				w.WriteNode (reader, false);
-				Console.WriteLine (DateTime.Now.Ticks);
-				Console.WriteLine (DateTime.Now.Ticks - start.Ticks);
-			} catch (Exception ex) {
-				Console.WriteLine (ex);
-			}
-		}
-	}
-*/
-
-	// Wrapper
-
-	public class XPathDocument2 : IXPathNavigable
-	{
-		XomRoot root;
-
-		public XPathDocument2 ()
-			: this (new NameTable ())
-		{
-		}
-		
-		public XPathDocument2 (XmlNameTable nameTable)
-		{
-			root = new XomRoot (nameTable);
-		}
-
-		public XmlNameTable NameTable {
-			get { return root.NameTable; }
-		}
-
-		public void LoadXml (string xml)
-		{
-			Load (new XmlTextReader (xml, XmlNodeType.Document, null));
-		}
-
-		public void Load (TextReader reader)
-		{
-			Load (new XmlTextReader (reader));
-		}
-
-		public void Load (XmlReader reader)
-		{
-			Load (reader, XmlSpace.None);
-		}
-
-		public void Load (XmlReader reader, XmlSpace space)
-		{
-			root.Load (reader, space);
-		}
-
-		public void Save (TextWriter writer)
-		{
-			XmlTextWriter xtw = new XmlTextWriter (writer);
-			xtw.Formatting = Formatting.Indented;
-			WriteTo (xtw);
-		}
-
-		public void Save (XmlWriter writer)
-		{
-			WriteTo (writer);
-		}
-
-		public void WriteTo (XmlWriter writer)
-		{
-			root.WriteTo (writer);
-		}
-
-		public XPathNavigator CreateNavigator ()
-		{
-			return new XomNavigator (root);
-		}
-	}
-
-	// Xom part
-
-	public struct XmlName
-	{
-		public string Prefix;
-		public string LocalName;
-		public string Namespace;
-		string fullName;
-
-		public XmlName (string prefix, string name, string ns)
-		{
-			this.Prefix = prefix == null ? "" : prefix;
-			this.LocalName = name;
-			this.Namespace = ns == null ? "" : ns;
-			fullName = null;
-		}
-
-		public override bool Equals (object o)
-		{
-			if ( !(o is XmlName))
-				return false;
-			XmlName other = (XmlName) o;
-			return LocalName == other.LocalName && Namespace == other.Namespace;
-		}
-
-		public static bool operator == (XmlName n1, XmlName n2)
-		{
-			return n1.LocalName == n2.LocalName && n1.Namespace == n2.Namespace;
-		}
-
-		public static bool operator != (XmlName n1, XmlName n2)
-		{
-			return n1.LocalName != n2.LocalName || n1.Namespace != n2.Namespace;
-		}
-
-		public override int GetHashCode ()
-		{
-			if (fullName == null)
-				fullName = String.Concat (LocalName, "/", Namespace);
-			return fullName.GetHashCode ();
-		}
-
-		public override string ToString ()
-		{
-			if (fullName == null)
-				fullName = String.Concat (LocalName, "/", Namespace);
-			return fullName;
-		}
-	}
-
-	public abstract class XomNode
-	{
-		XomParentNode parent;
-		string prefixedName;
-		XomNode previousSibling;
-		XomNode nextSibling;
-
-		public XomRoot Root {
-			get {
-				XomNode n = this;
-				while (n.parent != null)
-					n = n.parent;
-				return (XomRoot) n;
-			}
-		}
-
-		public string PrefixedName {
-			get {
-				if (prefixedName == null) {
-					if (Prefix.Length > 0)
-						prefixedName = Prefix + ':' + LocalName;
-					else
-						prefixedName = LocalName;
-				}
-				return prefixedName;
-			}
-		}
-
-		public virtual string BaseURI {
-			get { return Root.BaseURI; }
-		}
-
-		public virtual string XmlLang {
-			get { return String.Empty; }
-		}
-
-		public XomParentNode Parent {
-			get { return parent; }
-		}
-
-		public XomNode PreviousSibling {
-			get { return previousSibling; }
-		}
-
-		public XomNode NextSibling {
-			get { return nextSibling; }
-		}
-
-		internal void SetParent (XomParentNode parent)
-		{
-			this.parent = parent;
-		}
-
-		internal void SetPreviousSibling (XomNode previous)
-		{
-			if (previous.parent != parent || this == previous)
-				throw new InvalidOperationException ();
-			nextSibling = previous.nextSibling;
-			previousSibling = previous;
-			previous.nextSibling = this;
-		}
-
-		internal void SetNextSibling (XomNode next)
-		{
-			if (next.parent != parent || this == next)
-				throw new InvalidOperationException ();
-			previousSibling = next.previousSibling;
-			nextSibling = next;
-			next.previousSibling = this;
-		}
-
-		internal void RemoveItself ()
-		{
-			if (previousSibling != null)
-				previousSibling.nextSibling = nextSibling;
-			if (nextSibling != null)
-				nextSibling.previousSibling = previousSibling;
-			parent = null;
-		}
-
-		public string LookupPrefix (string ns)
-		{
-			XomElement n = this as XomElement;
-			if (n == null)
-				n = Parent as XomElement;
-			while (n != null) {
-				int len = n.NamespaceCount;
-				for (int i = 0; i < len; i++) {
-					XomNamespace nn = n.GetLocalNamespace (i);
-					if (nn.Value == ns)
-						return nn.LocalName;
-				}
-			}
-			return null;
-		}
-
-		public string LookupNamespace (string ns)
-		{
-			XomElement n = this as XomElement;
-			if (n == null)
-				n = Parent as XomElement;
-			while (n != null) {
-				int len = n.NamespaceCount;
-				for (int i = 0; i < len; i++) {
-					XomNamespace nn = n.GetLocalNamespace (i);
-					if (nn.Namespace== ns)
-						return nn.Prefix;
-				}
-			}
-			return null;
-		}
-
-		public virtual bool IsEmptyElement {
-			get { return false; }
-		}
-
-		public abstract string LocalName { get; }
-
-		public abstract string Namespace { get; }
-
-		public abstract string Prefix { get; }
-
-		public abstract string Value { get; set; }
-
-		public abstract XPathNodeType NodeType { get; }
-
-		public abstract int ChildCount { get; }
-
-		public virtual XomNode FirstChild { get { return null; } }
-
-		public virtual XomNode LastChild { get { return null; } }
-
-		internal abstract void BuildValue (StringBuilder sb);
-
-		public string OuterXml {
-			get {
-				StringWriter sw = new StringWriter ();
-				XmlTextWriter xtw = new XmlTextWriter (sw);
-				WriteTo (xtw);
-				return sw.ToString ();
-			}
-		}
-
-		public string InnerXml {
-			get {
-				StringWriter sw = new StringWriter ();
-				XmlTextWriter xtw = new XmlTextWriter (sw);
-				for (XomNode n = FirstChild; n != null; n = n.NextSibling)
-					n.WriteTo (xtw);
-				return sw.ToString ();
-			}
-		}
-
-		public abstract void WriteTo (XmlWriter writer);
-	}
-
-	public interface IHasXomNode
-	{
-		XomNode GetNode ();
-	}
-
-	public abstract class XomParentNode : XomNode
-	{
-		XomNode firstChild;
-		XomNode lastChild;
-		int childCount;
-
-		public void ReadNode (XmlReader reader, XmlSpace space)
-		{
-			switch (reader.ReadState) {
-			case ReadState.Initial:
-				reader.Read ();
-				break;
-			case ReadState.Error:
-			case ReadState.Closed:
-			case ReadState.EndOfFile:
-				throw new ArgumentException ("Argument XmlReader is not readable.");
-			}
-
-			switch (reader.NodeType) {
-			case XmlNodeType.Element:
-				XomElement el = new XomElement (reader.Prefix, reader.LocalName, reader.NamespaceURI, this);
-				if (reader.MoveToFirstAttribute ()) {
-					do {
-						new XomAttribute (reader.Prefix, reader.LocalName, reader.NamespaceURI, reader.Value, el);
-					} while (reader.MoveToNextAttribute ());
-					reader.MoveToContent ();
-				}
-				if (reader.IsEmptyElement) {
-					el.SetIsEmpty (true);
-					reader.Read ();
-				}
-				else {
-					reader.Read ();
-					while (reader.NodeType != XmlNodeType.EndElement)
-						el.ReadNode (reader, space);
-					reader.ReadEndElement ();
-				}
-				return;
-			case XmlNodeType.Text:
-			case XmlNodeType.CDATA:
-				XomText text = new XomText (reader.Value, this);
-				reader.Read ();
-				return;
-			case XmlNodeType.SignificantWhitespace:
-				XomSignificantWhitespace sws = new XomSignificantWhitespace (reader.Value, this);
-				reader.Read ();
-				return;
-			case XmlNodeType.Whitespace:
-				if (space == XmlSpace.Default) {
-					reader.Skip ();
-					return;
-				}
-				XomWhitespace ws = new XomWhitespace (reader.Value, this);
-				reader.Read ();
-				return;
-			case XmlNodeType.ProcessingInstruction:
-				XomPI pi = new XomPI (reader.LocalName, reader.Value, this);
-				reader.Read ();
-				return;
-			case XmlNodeType.Comment:
-				XomComment comment = new XomComment (reader.Value, this);
-				reader.Read ();
-				return;
-			default:
-				reader.Skip ();
-				return;
-			}
-		}
-
-		public void AppendChild (XomNode child)
-		{
-			InsertBefore (child, null);
-		}
-
-		public void InsertBefore (XomNode child, XomNode nextNode)
-		{
-			if (child.Parent != null)
-				throw new InvalidOperationException ("The child already has a parent.");
-			if (nextNode == null) {
-				child.SetParent (this);
-				if (firstChild == null)
-					firstChild = lastChild = child;
-				else {
-					child.SetPreviousSibling (lastChild);
-					lastChild = child;
-				}
-			} else {
-				if (nextNode.Parent != this)
-					throw new ArgumentException ("Argument nextNode is not a child of this node.");
-				child.SetNextSibling (nextNode);
-			}
-			childCount++;
-		}
-
-		public abstract void Clear ();
-
-		public override XomNode FirstChild {
-			get { return firstChild; }
-		}
-
-		public override XomNode LastChild {
-			get { return lastChild; }
-		}
-
-		public override int ChildCount {
-			get { return childCount; }
-		}
-
-		internal void ClearChildren ()
-		{
-			firstChild = lastChild = null;
-			childCount = 0;
-		}
-
-		public void RemoveChild (XomNode child)
-		{
-			if (child == firstChild)
-				firstChild = child.NextSibling;
-			if (child == lastChild)
-				lastChild = child.PreviousSibling;
-			child.RemoveItself ();
-			childCount--;
-		}
-
-		public override string Value {
-			get {
-				StringBuilder sb = new StringBuilder ();
-				BuildValue (sb);
-				return sb.ToString ();
-			}
-			set {
-				ClearChildren ();
-				AppendChild (new XomText (value));
-			}
-		}
-
-		internal override void BuildValue (StringBuilder sb)
-		{
-			for (XomNode n = FirstChild; n != null; n = n.NextSibling)
-				n.BuildValue (sb);
-		}
-	}
-
-	public class XomRoot : XomParentNode
-	{
-		XmlNameTable nameTable;
-		Hashtable identicalElements;
-		string baseUri;
-
-		public XomRoot (XmlNameTable nameTable)
-		{
-			this.nameTable = nameTable;
-			identicalElements = new Hashtable ();
-		}
-
-		public override string BaseURI {
-			get { return baseUri; }
-		}
-
-		public void Load (XmlReader reader)
-		{
-			Load (reader, XmlSpace.None);
-		}
-
-		public void Load (XmlReader reader, XmlSpace space)
-		{
-			baseUri = reader.BaseURI;
-			while (!reader.EOF)
-				ReadNode (reader, space);
-		}
-
-		public XmlNameTable NameTable {
-			get { return nameTable; }
-		}
-
-		public override string Prefix {
-			get { return ""; }
-		}
-
-		public override string LocalName {
-			get { return ""; }
-		}
-
-		public override string Namespace {
-			get { return ""; }
-		}
-
-		public override XPathNodeType NodeType {
-			get { return XPathNodeType.Root; }
-		}
-
-		public override void Clear ()
-		{
-			ClearChildren ();
-		}
-
-		public override void WriteTo (XmlWriter writer)
-		{
-			for (XomNode n = FirstChild; n != null; n = n.NextSibling)
-				n.WriteTo (writer);
-		}
-
-		public XomElement GetIdenticalNode (string id)
-		{
-			return identicalElements [id] as XomElement;
-		}
-
-		internal void GetIdenticalNode (string id, XomElement element)
-		{
-			identicalElements.Add (id, element);
-		}
-	}
-
-	public class XomElement : XomParentNode
-	{
-		XmlName qname;
-		bool isEmptyElement;
-
-		ArrayList attributes;
-		ArrayList namespaces;
-
-		public XomElement (string name)
-			: this ("", name, "", null)
-		{
-		}
-
-		public XomElement (string name, XomRoot root)
-			: this ("", name, "", root)
-		{
-		}
-
-		public XomElement (string name, string ns)
-			: this ("", name, ns, null)
-		{
-		}
-
-		public XomElement (string name, string ns, XomRoot root)
-			: this ("", name, ns, root)
-		{
-		}
-
-		public XomElement (string prefix, string name, string ns)
-			: this (prefix, name, ns, null)
-		{
-		}
-
-		public XomElement (string prefix, string name, string ns, XomParentNode parent)
-		{
-			qname.LocalName = name;
-			qname.Namespace = ns == null ? "" : ns;
-			qname.Prefix = prefix == null ? "" : prefix;
-			if (parent != null)
-				parent.AppendChild (this);
-		}
-
-		public override bool IsEmptyElement {
-			get { return isEmptyElement; }
-		}
-
-		internal void SetIsEmpty (bool value)
-		{
-			isEmptyElement = value;
-		}
-
-		public override string Prefix {
-			get { return qname.Prefix; }
-		}
-
-		public override string LocalName {
-			get { return qname.LocalName; }
-		}
-
-		public override string Namespace {
-			get { return qname.Namespace; }
-		}
-
-		public override XPathNodeType NodeType {
-			get { return XPathNodeType.Element; }
-		}
-
-		public override void Clear ()
-		{
-			if (attributes != null)
-				attributes.Clear ();
-			if (namespaces != null)
-				namespaces.Clear ();
-			ClearChildren ();
-		}
-
-		public void AppendAttribute (XomAttribute attr)
-		{
-			if (attr.Parent != null)
-				throw new InvalidOperationException ("The argument attribute already have another element owner.");
-			attr.SetParent (this);
-			if (attributes == null)
-				attributes = new ArrayList ();
-			attributes.Add (attr);
-		}
-
-/*
-		public void UpdateAttribute (XomAttribute attr)
-		{
-			if (attr.Parent != null)
-				throw new InvalidOperationException ("The argument attribute already have another element owner.");
-			XomAttribute existing = GetAttribute (attr.LocalName, attr.Namespace);
-			if (existing != null)
-				RemoveAttribute (existing);
-			if (attributes == null)
-				attributes = new ArrayList ();
-			attr.SetParent (this);
-			attributes.Add (attr);
-		}
-*/
-
-		public XomAttribute GetAttribute (int index)
-		{
-			return attributes == null ? null : attributes [index] as XomAttribute;
-		}
-
-		public XomAttribute GetAttribute (string name, string ns)
-		{
-			if (attributes == null)
-				return null;
-			for (int i = 0; i < attributes.Count; i++) {
-				XomAttribute a = attributes [i] as XomAttribute;
-				if (a.LocalName == name && a.Namespace == ns)
-					return a;
-			}
-			return null;
-		}
-
-		public XomAttribute GetNextAttribute (XomAttribute attr)
-		{
-			if (attributes == null || attributes.Count == 0)
-				return null;
-			if (attributes [attributes.Count - 1] == attr)
-				return null;
-			// It is not efficient, but usually there won't be so many attributes in an element.
-			int index = attributes.IndexOf (attr);
-			if (index < 0)
-				return null;
-			return attributes [index + 1] as XomAttribute;
-		}
-
-		public int AttributeCount {
-			get { return attributes == null ? 0 : attributes.Count; }
-		}
-
-		public void RemoveAttribute (XomAttribute attr)
-		{
-			if (attributes == null)
-				return;
-			attributes.Remove (attr);
-			attr.SetParent (null);
-		}
-
-		public void AppendNamespace (string prefix, string ns)
-		{
-			if (namespaces == null)
-				namespaces = new ArrayList ();
-			namespaces.Add (new XomNamespace (prefix, ns));
-		}
-
-		public XomNamespace GetLocalNamespace (int index)
-		{
-			if (namespaces == null || namespaces.Count <= index)
-				return null;
-			return namespaces [index] as XomNamespace;
-		}
-
-		public XomNamespace GetLocalNamespace (string prefix)
-		{
-			if (namespaces == null)
-				return null;
-			for (int i = 0; i < namespaces.Count; i++) {
-				XomNamespace qname = namespaces [i] as XomNamespace;
-				if (qname.LocalName == prefix)
-					return qname;
-			}
-			return null;
-		}
-
-		public XomNamespace GetNextLocalNamespace (XomNamespace n)
-		{
-			if (namespaces == null || namespaces.Count == 0)
-				return null;
-			if (namespaces [namespaces.Count - 1] == n)
-				return null;
-			// It is not efficient, but usually there won't be so many attributes in an element.
-			int index = namespaces.IndexOf (n);
-			if (index < 0)
-				return null;
-			return namespaces [index + 1] as XomNamespace;
-		}
-
-		public int NamespaceCount {
-			get { return namespaces == null ? 0 : namespaces.Count; }
-		}
-
-		public void RemoveNamespace (string prefix)
-		{
-			if (namespaces == null)
-				return;
-			for (int i = 0; i < namespaces.Count; i++) {
-				XomNamespace qname = namespaces [i] as XomNamespace;
-				if (qname.LocalName == prefix) {
-					namespaces.RemoveAt (i);
-					return;
-				}
-			}
-		}
-
-		public override void WriteTo (XmlWriter writer)
-		{
-			writer.WriteStartElement (Prefix, LocalName, Namespace);
-			if (namespaces != null) {
-				foreach (XomNamespace n in namespaces)
-					n.WriteTo (writer);
-			}
-			if (attributes != null) {
-				foreach (XomAttribute a in attributes)
-					a.WriteTo (writer);
-			}
-
-			for (XomNode n = FirstChild; n != null; n = n.NextSibling)
-				n.WriteTo (writer);
-
-			writer.WriteEndElement ();
-		}
-	}
-
-	public class XomAttribute : XomNode
-	{
-		XmlName qname;
-		string value;
-
-		public XomAttribute (string name, string value)
-			: this ("", name, "", value, null)
-		{
-		}
-
-		public XomAttribute (string name, string value, XomElement owner)
-			: this ("", name, "", value, owner)
-		{
-		}
-
-		public XomAttribute (string name, string ns, string value)
-			: this ("", name, ns, value, null)
-		{
-		}
-
-		public XomAttribute (string name, string ns, string value, XomElement owner)
-			: this ("", name, ns, value, owner)
-		{
-		}
-
-		public XomAttribute (string prefix, string name, string ns, string value)
-			: this ("", name, ns, value, null)
-		{
-		}
-
-		public XomAttribute (string prefix, string name, string ns, string value, XomElement owner)
-		{
-			qname.LocalName = name;
-			qname.Namespace = ns;
-			qname.Prefix = prefix;
-			this.value = value;
-			if (owner != null)
-				owner.AppendAttribute (this);
-		}
-
-		public override string Prefix {
-			get { return qname.Prefix; }
-		}
-
-		public override string LocalName {
-			get { return qname.LocalName; }
-		}
-
-		public override string Namespace {
-			get { return qname.Namespace; }
-		}
-
-		public override XPathNodeType NodeType {
-			get { return XPathNodeType.Attribute; }
-		}
-
-		public override int ChildCount { get { return 0; } }
-
-		public override string Value {
-			get { return value; }
-			set { this.value = value; }
-		}
-
-		internal override void BuildValue (StringBuilder sb)
-		{
-			sb.Append (value);
-		}
-
-		public override void WriteTo (XmlWriter writer)
-		{
-			writer.WriteAttributeString (Prefix, LocalName, Namespace, Value);
-		}
-	}
-
-	public class XomNamespace : XomNode
-	{
-		#region static members
-		static XomNamespace xml;
-
-		static XomNamespace ()
-		{
-			xml = new XomNamespace ("xml", "http://www.w3.org/XML/1998/namespace");
-		}
-
-		public static XomNamespace Xml {
-			get { return xml; }
-		}
-		#endregion
-
-		XmlName qname;
-
-		public XomNamespace (string prefix, string ns)
-		{
-			qname.LocalName = prefix;
-			qname.Namespace = ns;
-		}
-
-		public override int ChildCount {
-			get { return 0; }
-		}
-
-		public override string LocalName {
-			get { return qname.LocalName; }
-		}
-
-		public override string Prefix {
-			get { return LocalName; }
-		}
-
-		public override string Namespace {
-			get { return Value; }
-		}
-
-		public override string Value {
-			get { return qname.Namespace; }
-			set { qname.Namespace = value; }
-		}
-
-		public override XPathNodeType NodeType {
-			get { return XPathNodeType.Namespace; }
-		}
-
-		public override void WriteTo (XmlWriter writer)
-		{
-			if (LocalName != "")
-				writer.WriteAttributeString ("xmlns", LocalName, "http://www.w3.org/2000/xmlns/", Namespace);
-			else
-				writer.WriteAttributeString ("", "xmlns", "http://www.w3.org/2000/xmlns/", Namespace);
-		}
-
-		internal override void BuildValue (StringBuilder sb)
-		{
-			sb.Append (Value);
-		}
-	}
-
-	public class XomComment : XomNode
-	{
-		string value;
-
-		public XomComment (string value)
-			: this (value, null)
-		{
-		}
-
-		public XomComment (string value, XomParentNode parent)
-		{
-			this.value = value;
-			if (parent != null)
-				parent.AppendChild (this);
-		}
-
-		public override string Prefix {
-			get { return ""; }
-		}
-
-		public override string LocalName {
-			get { return ""; }
-		}
-
-		public override string Namespace {
-			get { return ""; }
-		}
-
-		public override XPathNodeType NodeType {
-			get { return XPathNodeType.Comment; }
-		}
-
-		public override string Value {
-			get { return value; }
-			set { this.value += value; }
-		}
-
-		internal override void BuildValue (StringBuilder sb)
-		{
-			sb.Append (value);
-		}
-
-		public override int ChildCount { get { return 0; } }
-
-		public override void WriteTo (XmlWriter writer)
-		{
-			writer.WriteComment (Value);
-		}
-	}
-
-	public class XomPI : XomNode
-	{
-		string value;
-		string name;
-
-		public XomPI (string name, string value)
-			: this (name, value, null)
-		{
-		}
-
-		public XomPI (string name, string value, XomParentNode parent)
-		{
-			this.name = name;
-			if (value == null)
-				value = "";
-			this.value = value;
-			if (parent != null)
-				parent.AppendChild (this);
-		}
-
-		public override string Prefix {
-			get { return ""; }
-		}
-
-		public override string LocalName {
-			get { return name; }
-		}
-
-		public override string Namespace {
-			get { return ""; }
-		}
-
-		public override XPathNodeType NodeType {
-			get { return XPathNodeType.ProcessingInstruction; }
-		}
-
-		public override string Value {
-			get { return value; }
-			set { this.value += value; }
-		}
-
-		internal override void BuildValue (StringBuilder sb)
-		{
-			sb.Append (value);
-		}
-
-		public override int ChildCount { get { return 0; } }
-
-		public override void WriteTo (XmlWriter writer)
-		{
-			writer.WriteProcessingInstruction (LocalName, Value);
-		}
-	}
-
-	public class XomText : XomNode
-	{
-		string value;
-
-		public XomText (string value)
-			: this (value, null)
-		{
-		}
-
-		public XomText (string value, XomParentNode parent)
-		{
-			this.value = value;
-			if (parent != null)
-				parent.AppendChild (this);
-		}
-
-		public override string Prefix {
-			get { return ""; }
-		}
-
-		public override string LocalName {
-			get { return ""; }
-		}
-
-		public override string Namespace {
-			get { return ""; }
-		}
-
-		public override string Value {
-			get { return value; }
-			set { this.value += value; }
-		}
-
-		public override XPathNodeType NodeType {
-			get { return XPathNodeType.Text; }
-		}
-
-		internal override void BuildValue (StringBuilder sb)
-		{
-			sb.Append (value);
-		}
-
-		public override int ChildCount { get { return 0; } }
-
-		public override void WriteTo (XmlWriter writer)
-		{
-			writer.WriteString (Value);
-		}
-	}
-
-	public class XomWhitespace : XomNode
-	{
-		string value;
-
-		public XomWhitespace (string value)
-			: this (value, null)
-		{
-		}
-
-		public XomWhitespace (string value, XomParentNode parent)
-		{
-			this.value = value;
-			if (parent != null)
-				parent.AppendChild (this);
-		}
-
-		public override string Prefix {
-			get { return ""; }
-		}
-
-		public override string LocalName {
-			get { return ""; }
-		}
-
-		public override string Namespace {
-			get { return ""; }
-		}
-
-		public override string Value {
-			get { return value; }
-			set { this.value += value; }
-		}
-
-		public override XPathNodeType NodeType {
-			get { return XPathNodeType.Whitespace; }
-		}
-
-		internal override void BuildValue (StringBuilder sb)
-		{
-			sb.Append (value);
-		}
-
-		public override int ChildCount { get { return 0; } }
-
-		public override void WriteTo (XmlWriter writer)
-		{
-			writer.WriteString (Value);
-		}
-	}
-
-	public class XomSignificantWhitespace : XomNode
-	{
-		string value;
-
-		public XomSignificantWhitespace (string value)
-			: this (value, null)
-		{
-		}
-
-		public XomSignificantWhitespace (string value, XomParentNode parent)
-		{
-			this.value = value;
-			if (parent != null)
-				parent.AppendChild (this);
-		}
-
-		public override string Prefix {
-			get { return ""; }
-		}
-
-		public override string LocalName {
-			get { return ""; }
-		}
-
-		public override string Namespace {
-			get { return ""; }
-		}
-
-		public override string Value {
-			get { return value; }
-			set { this.value += value; }
-		}
-
-		public override XPathNodeType NodeType {
-			get { return XPathNodeType.SignificantWhitespace; }
-		}
-
-		internal override void BuildValue (StringBuilder sb)
-		{
-			sb.Append (value);
-		}
-
-		public override int ChildCount { get { return 0; } }
-
-		public override void WriteTo (XmlWriter writer)
-		{
-			writer.WriteString (Value);
-		}
-	}
-}
-#endif

+ 0 - 839
mcs/class/System.XML/Mono.Xml.XPath/XPathDocument2Editable.cs

@@ -1,839 +0,0 @@
-//
-// Mono.Xml.XPath.XPathDocument2Editable
-//
-// Author:
-//	Atsushi Enomoto <[email protected]>
-//
-// (C)2004 Novell Inc.
-//
-// Yet another implementation of XPathEditableNavigator.
-// (Even runnable under MS.NET 2.0)
-//
-
-//
-// 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.
-//
-#if NET_2_0
-
-using System;
-using System.Collections;
-using System.ComponentModel;
-using System.IO;
-using System.Xml;
-using System.Xml.Schema;
-using System.Xml.XPath;
-using System.Xml.Serialization;
-
-namespace Mono.Xml.XPath
-{
-/*
-	public class Driver
-	{
-		public static void Main ()
-		{
-			try {
-#if true
-				XPathDocument2 doc = new XPathDocument2 ();
-				XPathDocument2Editable pd = new XPathDocument2Editable (doc);
-				XPathEditableNavigator nav = pd.CreateEditor ();
-				IChangeTracking xp = pd;
-#else
-				XPathDocument doc = new XPathDocument ();
-				XPathEditableNavigator nav = doc.CreateEditor ();
-				IChangeTracking xp = doc;
-#endif
-				doc.LoadXml ("<root/>");
-				nav.MoveToFirstChild (); // root
-				XmlWriter w = nav.AppendChild ();
-				Console.WriteLine (((IChangeTracking) xp).IsChanged);
-				w.WriteElementString ("foo", "foo_text");
-				w.WriteElementString ("bar", "bar_text");
-				w.WriteStartElement ("hoge");
-				w.WriteAttributeString ("fuga", "fugafuga");
-				w.WriteAttributeString ("unya", "unyaunya");
-				w.WriteFullEndElement ();
-				w.Close ();
-
-				w = nav.CreateAttributes ();
-				w.WriteStartAttribute ("namara");
-				w.WriteString ("mokera");
-				w.WriteEndAttribute ();
-				w.WriteAttributeString ("beccho", "giccho");
-				w.Close ();
-
-				nav.MoveToRoot ();
-				nav.MoveToFirstChild ();
-				nav.MoveToFirstChild ();
-				nav.DeleteCurrent (); // delete foo
-				Console.WriteLine (nav.Name);
-				nav.MoveToNext ();
-				Console.WriteLine (nav.Name);
-				Console.WriteLine (nav.MoveToFirstAttribute ());
-				nav.DeleteCurrent (); // delete fuga
-
-				doc.Save (Console.Out);
-			} catch (Exception ex) {
-				Console.WriteLine (ex);
-			}
-		}
-	}
-*/
-
-	public class XPathDocument2Editable
-		: IXPathNavigable, IXPathEditable,
-		IRevertibleChangeTracking, IChangeTracking, IXmlSerializable
-	{
-
-		XPathDocument2 document;
-
-		ArrayList changes = new ArrayList ();
-		bool enableChangeTracking;
-
-		public XPathDocument2Editable (XPathDocument2 doc)
-		{
-			document = doc;
-		}
-
-#region Events
-
-		public event NodeChangedEventHandler ChangeRejected;
-
-		public event NodeChangedEventHandler ItemUpdated;
-
-		public event NodeChangedEventHandler ItemUpdating;
-
-		public event NodeChangedEventHandler ItemInserted;
-
-		public event NodeChangedEventHandler ItemInserting;
-
-		public event NodeChangedEventHandler ItemDeleted;
-
-		public event NodeChangedEventHandler ItemDeleting;
-
-		public event NodeChangedEventHandler RejectingChange;
-
-#endregion // Events
-
-		public XmlNameTable NameTable {
-			get { return document.NameTable; }
-		}
-
-		public XPathNavigator CreateNavigator ()
-		{
-			return document.CreateNavigator ();
-		}
-
-		public XPathEditableNavigator CreateEditor ()
-		{
-			return new XomEditableNavigator (this);
-		}
-
-		public XmlWriter CreateWriter ()
-		{
-			return CreateEditor ().AppendChild ();
-		}
-
-		public bool HasChanges ()
-		{
-			return IsChanged;
-		}
-
-		public bool EnableChangeTracking {
-			get { return enableChangeTracking; }
-			set { enableChangeTracking = value; }
-		}
-
-		#region IRevertibleChangeTracking/IChangeTracking
-		public bool IsChanged {
-			get { return changes.Count != 0; }
-		}
-
-		public void AcceptChanges ()
-		{
-			changes.Clear ();
-		}
-
-		public void RejectChanges ()
-		{
-			for (int i = changes.Count - 1; i >= 0; i--) {
-				Insertion2 ins = changes [i] as Insertion2;
-				if (ins != null) {
-					ins.ParentNode.RemoveChild (ins.InsertedNode);
-					continue;
-				}
-				
-				Removal2 rem = changes [i] as Removal2;
-				if (rem != null) {
-					if (rem.RemovedNode.NodeType == XPathNodeType.Attribute) {
-						XomElement el = (XomElement) rem.OwnerNode;
-						el.AppendAttribute ((XomAttribute) rem.RemovedNode);
-					}
-					else
-						rem.OwnerNode.InsertBefore (rem.RemovedNode, rem.NextSibling);
-					continue;
-				}
-				AttributeUpdate2 au = changes [i] as AttributeUpdate2;
-				if (au != null) {
-					au.Element.RemoveAttribute (au.NewAttribute);
-					if (au.OldAttribute != null)
-						au.Element.AppendAttribute (au.OldAttribute);
-					continue;
-				}
-			}
-			changes.Clear ();
-		}
-		#endregion
-
-		#region IXmlSerializable
-		public void WriteXml (XmlWriter writer)
-		{
-			throw new NotImplementedException ();
-		}
-
-		public void ReadXml (XmlReader reader)
-		{
-			throw new NotImplementedException ();
-		}
-
-		public XmlSchema GetSchema ()
-		{
-			throw new NotImplementedException ();
-		}
-		#endregion
-
-		internal bool DeleteNode (XomNode node)
-		{
-			Removal2 rem = new Removal2 ();
-			if (node.NodeType == XPathNodeType.Attribute) {
-				XomAttribute attr = node as XomAttribute;
-				rem.OwnerNode = attr.Parent;
-				rem.RemovedNode = node;
-				((XomElement) attr.Parent).RemoveAttribute (attr);
-				return false;
-			} else {
-				rem.OwnerNode = node.Parent;
-				rem.NextSibling = node.NextSibling;
-				rem.RemovedNode = node;
-				node.Parent.RemoveChild (node);
-				return rem.NextSibling != null;
-			}
-		}
-
-		internal XmlWriter CreateInsertionWriter (XomNode owner, XomNode previousSibling)
-		{
-			return new XPathDocument2InsertionWriter (owner, previousSibling, this);
-		}
-
-		internal XmlWriter CreateAttributesWriter (XomNode owner)
-		{
-			return new XPathDocument2AttributeWriter (owner, this);
-		}
-
-		internal void AttributeUpdate2 (XomElement element, XomAttribute oldAttr, XomAttribute newAttr)
-		{
-			AttributeUpdate2 au = new AttributeUpdate2 ();
-			au.Element = element;
-			au.OldAttribute = oldAttr;
-			au.NewAttribute = newAttr;
-			changes.Add (au);
-		}
-		
-		internal void AppendChild (XomParentNode parent, XomNode child)
-		{
-			Insertion2 ins = new Insertion2 ();
-			ins.ParentNode = parent;
-			ins.InsertedNode = child;
-			changes.Add (ins);
-		}
-	}
-
-	public class XPathDocument2InsertionWriter : XmlWriter
-	{
-		XomNode current;
-		XomNode previousSibling;
-		XPathDocument2Editable document;
-		Stack nodeStack = new Stack ();
-
-		public XPathDocument2InsertionWriter (XomNode owner, XomNode previousSibling, XPathDocument2Editable doc)
-		{
-			this.current = (XomNode) owner;
-			if (current == null)
-				throw new InvalidOperationException ();
-			this.previousSibling = previousSibling;
-			this.document = doc;
-			state = WriteState.Content;
-		}
-
-		WriteState state;
-		XomAttribute attribute;
-
-		public override WriteState WriteState {
-			get { return state; }
-		}
-
-		public override void Close ()
-		{
-		}
-
-		public override void Flush ()
-		{
-		}
-
-		public override string LookupPrefix (string ns)
-		{
-			return current.LookupPrefix (ns);
-		}
-
-		public override void WriteStartAttribute (string prefix, string name, string ns)
-		{
-			if (state != WriteState.Content)
-				throw new InvalidOperationException ("Current state is not inside element. Cannot start attribute.");
-			attribute = new XomAttribute (prefix, name, ns, String.Empty);
-			state = WriteState.Attribute;
-		}
-
-		public override void WriteProcessingInstruction (string name, string value)
-		{
-			XomParentNode p = current as XomParentNode;
-			if (p == null)
-				throw new InvalidOperationException ("Current writer node cannot have a child.");
-			XomPI pi = new XomPI (name, value);
-			p.AppendChild (pi);
-			document.AppendChild (p, pi);
-		}
-
-		public override void WriteComment (string text)
-		{
-			XomParentNode p = current as XomParentNode;
-			if (p == null)
-				throw new InvalidOperationException ("Current writer node cannot have a child.");
-			XomComment comment = new XomComment (text);
-			p.AppendChild (comment);
-			document.AppendChild (p, comment);
-		}
-
-		public override void WriteCData (string text)
-		{
-			if (attribute != null)
-				throw new InvalidOperationException ("Current writer node is attribute. It cannot accept CDATA section.");
-			/*
-			XomParentNode p = current as XomParentNode;
-			if (p == null)
-				throw new InvalidOperationException ("Current writer node cannot have a child.");
-			XomText cdata = new XomText (text);
-			p.AppendChild (cdata);
-			document.AppendChild (p, cdata);
-			*/
-			WriteString (text);
-		}
-
-		public override void WriteStartElement (string prefix, string name, string ns)
-		{
-			XomParentNode p = current as XomParentNode;
-			if (p == null)
-				throw new InvalidOperationException ("Current writer node cannot have a child.");
-			XomElement el = new XomElement (prefix, name, ns);
-			p.AppendChild (el);
-			document.AppendChild (p, el);
-			nodeStack.Push (current);
-			current = el;
-		}
-
-		public override void WriteEndElement ()
-		{
-			WriteFullEndElement ();
-			XomElement el = current as XomElement;
-			if (el != null && el.ChildCount == 0)
-				el.SetIsEmpty (true);
-		}
-
-		public override void WriteFullEndElement ()
-		{
-			if (nodeStack.Count == 0)
-				throw new InvalidOperationException ("No element is opened.");
-			current = nodeStack.Pop () as XomNode;
-		}
-
-		public override void WriteDocType (string name, string pubid, string systemId, string intsubset)
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteStartDocument ()
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteStartDocument (bool standalone)
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteEndDocument ()
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteBase64 (byte [] data, int start, int length)
-		{
-			WriteString (Convert.ToBase64String (data, start, length));
-		}
-
-		public override void WriteRaw (char [] raw, int start, int length)
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteRaw (string raw)
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteSurrogateCharEntity (char msb, char lsb)
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteCharEntity (char c)
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteEntityRef (string entname)
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteChars (char [] data, int start, int length)
-		{
-			WriteString (new string (data, start, length));
-		}
-
-		public override void WriteString (string text)
-		{
-			if (attribute != null)
-				attribute.Value += text;
-			else {
-				XomParentNode p = current as XomParentNode;
-				if (p == null)
-					throw new InvalidOperationException ("Current writer node cannot have a child.");
-
-				XomText xt = new XomText (text);
-				p.AppendChild (xt);
-				document.AppendChild (p, xt);
-			}
-		}
-
-		public override void WriteWhitespace (string text)
-		{
-			if (attribute != null)
-				attribute.Value += text;
-			else {
-				XomParentNode p = current as XomParentNode;
-				if (p == null)
-					throw new InvalidOperationException ("Current writer node cannot have a child.");
-
-				XomWhitespace ws = new XomWhitespace (text);
-				p.AppendChild (ws);
-				document.AppendChild (p, ws);
-			}
-		}
-
-		public override void WriteEndAttribute ()
-		{
-			XomElement element = current as XomElement;
-			if (state != WriteState.Attribute || element == null)
-				throw new InvalidOperationException ("Current state is not inside attribute. Cannot close attribute.");
-			XomAttribute old = element.GetAttribute (attribute.LocalName, attribute.Namespace);
-			element.AppendAttribute (attribute);
-			document.AttributeUpdate2 (element, old, attribute);
-			attribute = null;
-			state = WriteState.Content;
-		}
-	}
-
-	public class XPathDocument2AttributeWriter : XmlWriter
-	{
-		XomElement element;
-		XPathDocument2Editable document;
-
-		public XPathDocument2AttributeWriter (XomNode owner, XPathDocument2Editable doc)
-		{
-			element = owner as XomElement;
-			if (element == null)
-				throw new ArgumentException ("To write attributes, current node must be an element.");
-			state = WriteState.Content;
-			document = doc;
-		}
-
-		WriteState state;
-		XomAttribute attribute;
-
-		public override WriteState WriteState {
-			get { return state; }
-		}
-
-		public override void Close ()
-		{
-		}
-
-		public override void Flush ()
-		{
-		}
-
-		public override string LookupPrefix (string ns)
-		{
-			return element.LookupPrefix (ns);
-		}
-
-		public override void WriteStartAttribute (string prefix, string name, string ns)
-		{
-			if (state != WriteState.Content)
-				throw new InvalidOperationException ("Current state is not inside element. Cannot start attribute.");
-			attribute = new XomAttribute (prefix, name, ns, String.Empty);
-			state = WriteState.Attribute;
-		}
-
-		public override void WriteProcessingInstruction (string name, string value)
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteComment (string text)
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteCData (string text)
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteStartElement (string prefix, string name, string ns)
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteEndElement ()
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteFullEndElement ()
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteDocType (string name, string pubid, string systemId, string intsubset)
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteStartDocument ()
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteStartDocument (bool standalone)
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteEndDocument ()
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteBase64 (byte [] data, int start, int length)
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteRaw (char [] raw, int start, int length)
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteRaw (string raw)
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteSurrogateCharEntity (char msb, char lsb)
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteCharEntity (char c)
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteEntityRef (string entname)
-		{
-			throw new NotSupportedException ();
-		}
-
-		public override void WriteChars (char [] data, int start, int length)
-		{
-			WriteString (new string (data, start, length));
-		}
-
-		public override void WriteString (string text)
-		{
-			if (state != WriteState.Attribute)
-				throw new InvalidOperationException ("Current state is not inside attribute. Cannot write attribute value.");
-			attribute.Value += text;
-		}
-
-		public override void WriteWhitespace (string text)
-		{
-			if (state != WriteState.Attribute)
-				throw new InvalidOperationException ("Current state is not inside attribute. Cannot write attribute value.");
-			else
-				attribute.Value += text;
-		}
-
-		public override void WriteEndAttribute ()
-		{
-			if (state != WriteState.Attribute)
-				throw new InvalidOperationException ("Current state is not inside attribute. Cannot close attribute.");
-			XomAttribute old = element.GetAttribute (attribute.LocalName, attribute.Namespace);
-			element.AppendAttribute (attribute);
-			document.AttributeUpdate2 (element, old, attribute);
-			attribute = null;
-			state = WriteState.Content;
-		}
-	}
-
-	public class Insertion2
-	{
-		// AppendChild : last child / true
-		// InsertBefore : current node / false
-		// InsertAfter : current node / true
-		// PrependChild : first child / false
-		public XomParentNode ParentNode;
-		public XomNode InsertedNode;
-		public bool Afterward;
-	}
-
-	public class Removal2
-	{
-		public XomParentNode OwnerNode;
-		public XomNode NextSibling;
-		public XomNode RemovedNode;
-	}
-
-	public class AttributeUpdate2
-	{
-		public XomElement Element;
-		public XomAttribute NewAttribute;
-		public XomAttribute OldAttribute;
-	}
-
-	public class XomEditableNavigator : XPathEditableNavigator, IHasXomNode
-	{
-		XPathDocument2Editable document;
-		XPathNavigator navigator;
-
-		public XomEditableNavigator (XPathDocument2Editable doc)
-		{
-			document = doc;
-			navigator = doc.CreateNavigator ();
-		}
-
-		public XomEditableNavigator (XomEditableNavigator nav)
-		{
-			document = nav.document;
-			navigator = nav.navigator.Clone ();
-		}
-
-		public override string BaseURI {
-			get { return navigator.BaseURI; }
-		}
-
-		public override bool IsEmptyElement {
-			get { return navigator.IsEmptyElement; }
-		}
-
-		public override string LocalName {
-			get { return navigator.LocalName; }
-		}
-
-		public override XmlNameTable NameTable {
-			get { return navigator.NameTable; }
-		}
-
-		public override string Name {
-			get { return navigator.Name; }
-		}
-
-		public override string NamespaceURI {
-			get { return navigator.NamespaceURI; }
-		}
-
-		public override XPathNodeType NodeType {
-			get { return navigator.NodeType; }
-		}
-
-		public override string Prefix {
-			get { return navigator.Prefix; }
-		}
-
-		public override string Value {
-			get { return navigator.Value; }
-		}
-
-		public override XPathNavigator Clone ()
-		{
-			return new XomEditableNavigator (this);
-		}
-
-		public override XPathNavigator CreateNavigator ()
-		{
-			return navigator.Clone ();
-		}
-
-		public XomNode GetNode ()
-		{
-			return ((IHasXomNode) navigator).GetNode ();
-		}
-
-		public override bool IsSamePosition (XPathNavigator other)
-		{
-			XomEditableNavigator nav = other as XomEditableNavigator;
-			if (nav != null)
-				return navigator.IsSamePosition (nav.navigator);
-			else
-				return navigator.IsSamePosition (nav);
-		}
-
-		public override bool MoveTo (XPathNavigator other)
-		{
-			XomEditableNavigator nav = other as XomEditableNavigator;
-			if (nav != null)
-				return navigator.MoveTo (nav.navigator);
-			else
-				return navigator.MoveTo (nav);
-		}
-
-		public override bool MoveToFirstAttribute ()
-		{
-			return navigator.MoveToFirstAttribute ();
-		}
-
-		public override bool MoveToFirstChild ()
-		{
-			return navigator.MoveToFirstChild ();
-		}
-
-		public override bool MoveToFirstNamespace (XPathNamespaceScope scope)
-		{
-			return navigator.MoveToFirstNamespace (scope);
-		}
-
-		public override bool MoveToId (string id)
-		{
-			return navigator.MoveToId (id);
-		}
-
-		public override bool MoveToNext ()
-		{
-			return navigator.MoveToNext ();
-		}
-
-		public override bool MoveToNextAttribute ()
-		{
-			return navigator.MoveToNextAttribute ();
-		}
-
-		public override bool MoveToNextNamespace (XPathNamespaceScope scope)
-		{
-			return navigator.MoveToNextNamespace (scope);
-		}
-
-		public override bool MoveToParent ()
-		{
-			return navigator.MoveToParent ();
-		}
-
-		public override bool MoveToPrevious ()
-		{
-			return navigator.MoveToPrevious ();
-		}
-
-		public override void Validate (XmlSchemaSet schemas, ValidationEventHandler handler)
-		{
-			throw new NotImplementedException ();
-/*
-			// FIXME: use handler
-			XmlReaderSettings settings = new XmlReaderSettings ();
-			settings.Schemas.Add (schemas);
-			settings.NameTable = this.NameTable;
-			settings.XsdValidate = true;
-			settings.DtdValidate = false;
-			XmlReader xvr = XmlReader.Create (new XPathNavigatorReader (this), settings);
-			while (!xvr.EOF)
-				xvr.Read ();
-*/
-		}
-
-		public override XmlWriter AppendChild ()
-		{
-			XomNode n = ((IHasXomNode) navigator).GetNode ();
-			if (n == null)
-				throw new InvalidOperationException ("Should not happen.");
-			return document.CreateInsertionWriter (n, null);
-		}
-
-		public override XmlWriter InsertBefore ()
-		{
-			XomNode n = ((IHasXomNode) navigator).GetNode ();
-			return document.CreateInsertionWriter (n.Parent, n.PreviousSibling);
-		}
-
-		public override XmlWriter CreateAttributes ()
-		{
-			XomNode n = ((IHasXomNode) navigator).GetNode ();
-			return document.CreateAttributesWriter (n);
-		}
-
-		public override bool DeleteCurrent ()
-		{
-			XomNode n = ((IHasXomNode) navigator).GetNode ();
-			if (!navigator.MoveToNext ())
-				navigator.MoveToParent ();
-			return document.DeleteNode (n);
-		}
-
-		public override void SetValue (object value)
-		{
-			XomNode n = ((IHasXomNode) navigator).GetNode ();
-			int count = n.ChildCount;
-			while (n.FirstChild != null)
-				document.DeleteNode (n.FirstChild);
-			XmlWriter w = document.CreateInsertionWriter (n, null);
-			w.WriteValue (value);
-			w.Close ();
-		}
-	}
-}
-
-#endif

+ 0 - 429
mcs/class/System.XML/Mono.Xml.XPath/XPathDocument2Navigator.cs

@@ -1,429 +0,0 @@
-//
-// Mono.Xml.XPath.XPathDocument2Navigator.cs
-//
-// Author:
-//	Atsushi Enomoto <[email protected]>
-//
-// (C)2004 Novell Inc.
-//
-// read-only XPathNavigator for editable XPathDocument.
-//
-
-//
-// 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.
-//
-#if NET_2_0
-using System;
-using System.Collections;
-using System.Collections.Specialized;
-using System.IO;
-using System.Text;
-using System.Xml;
-using System.Xml.XPath;
-
-namespace Mono.Xml.XPath
-{
-	public class XomNavigator : XPathNavigator, IHasXomNode
-	{
-		XomRoot root;
-		XomNode current;
-		XomNamespace currentNS;
-
-		public XomNavigator (XomRoot root)
-		{
-			this.root = root;
-			current = root;
-		}
-
-		public override string BaseURI {
-			get { return current.BaseURI; }
-		}
-
-		public override bool IsEmptyElement {
-			get { return currentNS == null && current.IsEmptyElement; }
-		}
-
-		public override bool HasChildren {
-			get { return currentNS == null && current.ChildCount != 0; }
-		}
-
-		public override bool HasAttributes {
-			get {
-				if (currentNS != null || current.NodeType != XPathNodeType.Element)
-					return false;
-				XomElement el = current as XomElement;
-				return el.AttributeCount != 0;
-			}
-		}
-
-		XomNode IHasXomNode.GetNode ()
-		{
-			return currentNS != null ? currentNS : current;
-		}
-
-		public override string GetAttribute (string name, string ns)
-		{
-			if (currentNS != null || current.NodeType != XPathNodeType.Element)
-				return String.Empty;
-			XomElement el = current as XomElement;
-			XomAttribute attr = el.GetAttribute (name, ns);
-			return attr != null ? attr.Value : String.Empty;
-		}
-
-		public override XmlNameTable NameTable {
-			get { return current.Root.NameTable; }
-		}
-
-		public override string LocalName {
-			get { return current.LocalName; }
-		}
-
-		public override string Name {
-			get { return current.PrefixedName; }
-		}
-
-		public override string NamespaceURI {
-			get { return current.Namespace; }
-		}
-
-		public override string Prefix {
-			get { return current.Prefix; }
-		}
-
-		public override string Value {
-			get {
-				switch (NodeType) {
-				case XPathNodeType.Attribute:
-				case XPathNodeType.Comment:
-				case XPathNodeType.ProcessingInstruction:
-					return current.Value;
-				case XPathNodeType.Text:
-				case XPathNodeType.Whitespace:
-				case XPathNodeType.SignificantWhitespace:
-					string value = current.Value;
-					for (XomNode n = current.NextSibling; n != null; n = n.NextSibling) {
-						switch (n.NodeType) {
-						case XPathNodeType.Text:
-						case XPathNodeType.Whitespace:
-						case XPathNodeType.SignificantWhitespace:
-							value += n.Value;
-							continue;
-						}
-						break;
-					}
-					return value;
-				case XPathNodeType.Element:
-				case XPathNodeType.Root:
-					return current.Value;
-				case XPathNodeType.Namespace:
-					return currentNS.Value;
-				}
-				return String.Empty;
-			}
-		}
-
-		public override string XmlLang {
-			get { return current.XmlLang; }
-		}
-
-		public override XPathNodeType NodeType {
-			get { return current.NodeType; }
-		}
-
-		public override XPathNavigator Clone ()
-		{
-			XomNavigator n = new XomNavigator (root);
-			n.current = current;
-			n.currentNS = currentNS;
-			return n;
-		}
-
-		public override void MoveToRoot ()
-		{
-			current = root;
-			currentNS = null;
-		}
-
-		public override bool MoveToParent ()
-		{
-			if (currentNS != null) {
-				currentNS = null;
-				return true;
-			}
-			XomParentNode parent = current.Parent;
-			if (parent == null)
-				return false;
-			current = parent;
-			return true;
-		}
-
-		public override bool MoveToFirstChild ()
-		{
-			if (currentNS != null || current.NodeType == XPathNodeType.Attribute || current.ChildCount == 0)
-				return false;
-			current = current.FirstChild;
-			return true;
-		}
-
-		public override bool MoveToFirst ()
-		{
-			if (currentNS != null || current.NodeType == XPathNodeType.Attribute)
-				return false;
-			XomParentNode pn = current.Parent;
-			if (pn == null)
-				return false;
-			XomNode n = pn.FirstChild;
-			if (n == current)
-				return false;
-			current = n;
-			return true;
-		}
-
-		public override bool MoveToFirstAttribute ()
-		{
-			if (currentNS != null)
-				return false;
-			XomElement el = current as XomElement;
-			if (el == null)
-				return false;
-			if (el.AttributeCount == 0)
-				return false;
-			current = el.GetAttribute (0);
-			return true;
-		}
-
-		public override bool MoveToNextAttribute ()
-		{
-			XomAttribute attr = current as XomAttribute;
-			if (attr == null)
-				return false;
-			XomElement owner = attr.Parent as XomElement;
-			if (owner == null)
-				return false;
-			XomAttribute next = owner.GetNextAttribute (attr);
-			if (next == null)
-				return false;
-			current = next;
-			return true;
-		}
-
-		public override bool MoveToAttribute (string name, string ns)
-		{
-			if (currentNS != null || current.NodeType != XPathNodeType.Element)
-				return false;
-			XomElement el = current as XomElement;
-			XomAttribute attr = el.GetAttribute (name, ns);
-			if (attr == null)
-				return false;
-			current = attr;
-			return true;
-		}
-
-		public override string GetNamespace (string prefix)
-		{
-			if (currentNS != null)
-				return String.Empty;
-			XomNamespace n = GetXomNamespace (prefix);
-			if (n == null)
-				return String.Empty;
-			else
-				return n.Namespace;
-		}
-		
-		private XomNamespace GetXomNamespace (string prefix)
-		{
-			if (current.NodeType != XPathNodeType.Element)
-				return null;
-			if (prefix == "xml")
-				return XomNamespace.Xml;
-			XomElement el = current as XomElement;
-			do {
-				XomNamespace n = el.GetLocalNamespace (prefix);
-				if (n != null)
-					return n;
-				el = el.Parent as XomElement;
-			} while (el != null);
-			return null;
-		}
-
-		public override bool MoveToNamespace (string prefix)
-		{
-			if (currentNS != null)
-				return false;
-			XomNamespace n = GetXomNamespace (prefix);
-			if (n == null)
-				return false;
-			currentNS = n;
-			return true;
-		}
-
-		public override bool MoveToFirstNamespace (XPathNamespaceScope scope)
-		{
-			if (currentNS != null || current.NodeType != XPathNodeType.Element)
-				return false;
-			XomElement el = current as XomElement;
-			XomNamespace n = null;
-			switch (scope) {
-			case XPathNamespaceScope.Local:
-				if (el.NamespaceCount > 0)
-					n = el.GetLocalNamespace (0);
-				break;
-			default:
-				do {
-					if (el.NamespaceCount > 0) {
-						n = el.GetLocalNamespace (0);
-						break;
-					}
-					el = el.Parent as XomElement;
-				} while (el != null);
-				break;
-			}
-			if (n != null) {
-				currentNS = n;
-				return true;
-			}
-			else if (scope == XPathNamespaceScope.All) {
-				currentNS = XomNamespace.Xml;
-				return true;
-			}
-			return false;
-		}
-
-		public override bool MoveToNextNamespace (XPathNamespaceScope scope)
-		{
-			if (currentNS == null || currentNS == XomNamespace.Xml)
-				return false;
-			XomElement el = currentNS.Parent as XomElement;
-			XomNamespace n = el.GetNextLocalNamespace (currentNS);
-			if (n != null) {
-				currentNS = n;
-				return true;
-			}
-			switch (scope) {
-			case XPathNamespaceScope.Local:
-				return false;
-			default:
-				el = el.Parent as XomElement;
-				while (el != null) {
-					if (el.NamespaceCount > 0) {
-						n = el.GetLocalNamespace (0);
-						break;
-					}
-					el = el.Parent as XomElement;
-				}
-				break;
-			}
-			if (n != null) {
-				currentNS = n;
-				return true;
-			}
-			else if (scope == XPathNamespaceScope.All) {
-				currentNS = XomNamespace.Xml;
-				return true;
-			}
-			return false;
-		}
-
-		public override bool MoveToNext ()
-		{
-			if (currentNS != null)
-				return false;
-			switch (NodeType) {
-			case XPathNodeType.Text:
-			case XPathNodeType.SignificantWhitespace:
-			case XPathNodeType.Whitespace:
-				for (XomNode t = current.NextSibling; t != null; t = t.NextSibling) {
-					switch (t.NodeType) {
-					case XPathNodeType.Text:
-					case XPathNodeType.SignificantWhitespace:
-					case XPathNodeType.Whitespace:
-						continue;
-					}
-					current = t;
-					return true;
-				}
-				return false;
-			default:
-				XomNode n = current.NextSibling;
-				if (n == null)
-					return false;
-				current = n;
-				return true;
-			}
-		}
-
-		public override bool MoveToPrevious ()
-		{
-			if (currentNS != null)
-				return false;
-			XomNode n = current.PreviousSibling;
-			if (n == null)
-				return false;
-			current = n;
-
-			switch (NodeType) {
-			case XPathNodeType.Text:
-			case XPathNodeType.SignificantWhitespace:
-			case XPathNodeType.Whitespace:
-				for (XomNode t = current.PreviousSibling; t != null; t = t.NextSibling) {
-					switch (t.NodeType) {
-					case XPathNodeType.Text:
-					case XPathNodeType.SignificantWhitespace:
-					case XPathNodeType.Whitespace:
-						current = t;
-						continue;
-					}
-					break;
-				}
-				break;
-			}
-
-			return true;
-		}
-
-		public override bool IsSamePosition (XPathNavigator other)
-		{
-			XomNavigator xom = other as XomNavigator;
-			if (xom == null || root != xom.root)
-				return false;
-			return current == xom.current && currentNS == xom.currentNS;
-		}
-
-		public override bool MoveTo (XPathNavigator other)
-		{
-			XomNavigator xom = other as XomNavigator;
-			if (xom == null)
-				return false;
-			current = xom.current;
-			currentNS = xom.currentNS;
-			return true;
-		}
-
-		public override bool MoveToId (string id)
-		{
-			XomElement el = root.GetIdenticalNode (id);
-			if (el == null)
-				return false;
-			current = el;
-			return true;
-		}
-	}
-}
-#endif