5 // Copyright 2007 Novell (http://www.novell.com)
7 // Permission is hereby granted, free of charge, to any person obtaining
8 // a copy of this software and associated documentation files (the
9 // "Software"), to deal in the Software without restriction, including
10 // without limitation the rights to use, copy, modify, merge, publish,
11 // distribute, sublicense, and/or sell copies of the Software, and to
12 // permit persons to whom the Software is furnished to do so, subject to
13 // the following conditions:
15 // The above copyright notice and this permission notice shall be
16 // included in all copies or substantial portions of the Software.
18 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
19 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
20 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
21 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
22 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
23 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
24 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28 using System.Collections;
29 using System.Collections.Generic;
34 using XPI = System.Xml.Linq.XProcessingInstruction;
36 namespace System.Xml.Linq
38 internal static class XUtil
40 public const string XmlnsNamespace =
41 "http://www.w3.org/2000/xmlns/";
44 public static string ToString (object o)
47 throw new InvalidOperationException ("Attempt to get string from null");
53 public static bool ToBoolean (object o)
55 throw new NotImplementedException ();
58 public static Nullable <bool> ToNullableBoolean (object o)
60 throw new NotImplementedException ();
63 // FIXME: this method is not enough by design.
64 public static XNode ToNode (object o)
70 return new XText ((string) o);
72 throw new NotImplementedException ();
73 return new XText (o.ToString ());
76 public static object Clone (object o)
82 return new XElement ((XElement) o);
84 return new XCData (((XCData) o).Value);
86 return new XComment (((XComment) o).Value);
89 return new XPI (pi.Target, pi.Data);
90 XDeclaration xd = o as XDeclaration;
92 return new XDeclaration (xd.Version, xd.Encoding, xd.Standalone);
93 XDocumentType dtd = o as XDocumentType;
95 throw new NotImplementedException ();
96 throw new ArgumentException ();
99 public static IEnumerable<object> ShrinkArray (params object [] content)
101 if (content == null || content.Length == 0)
104 foreach (object o in content) {