* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / class / System.XML / System.Xml.Schema / XmlSchemaDatatype.cs
old mode 100755 (executable)
new mode 100644 (file)
index 2c767a6..751560d
@@ -48,16 +48,66 @@ namespace System.Xml.Schema
                        get { return WhitespaceValue; }\r
                }\r
 \r
+#if NET_2_0\r
+               public virtual XmlTypeCode TypeCode {\r
+                       // Actually no way to verify default value, since\r
+                       // in .NET 2.0 it cannot be derived externally anymore.\r
+                       get { return XmlTypeCode.None; }\r
+               }\r
+\r
+               public virtual XmlSchemaDatatypeVariety Variety {\r
+                       get {\r
+                               return XmlSchemaDatatypeVariety.Atomic;\r
+                       }\r
+               }\r
+#endif\r
+\r
                public abstract XmlTokenizedType TokenizedType {  get; }\r
                public abstract Type ValueType {  get; }\r
 \r
                // Methods\r
+#if NET_2_0\r
+               [MonoTODO]\r
+               public virtual object ChangeType (object value, Type targetType)\r
+               {\r
+                       return ChangeType (value, targetType, null);\r
+               }\r
+\r
+               [MonoTODO]\r
+               public virtual object ChangeType (object value, Type targetType, IXmlNamespaceResolver nsResolver)\r
+               {\r
+                       throw new NotImplementedException ();\r
+               }\r
+\r
+               public virtual bool IsDerivedFrom (XmlSchemaDatatype datatype)\r
+               {\r
+                       // It is documented to return always false, but\r
+                       // actually returns true when the argument is for\r
+                       // the same type (and it does not check null argument).\r
+                       return this == datatype;\r
+               }\r
+#endif\r
+\r
+#if NET_2_0\r
                public abstract object ParseValue (string s, \r
-                       XmlNameTable nameTable, XmlNamespaceManager nsmgr);\r
+                       XmlNameTable nameTable, IXmlNamespaceResolver nsmgr);\r
 \r
-               internal abstract ValueType ParseValueType (string s,\r
+               internal virtual ValueType ParseValueType (string s,\r
+                       XmlNameTable nameTable, IXmlNamespaceResolver nsmgr)\r
+               {\r
+                       return null;\r
+               }\r
+#else\r
+               public abstract object ParseValue (string s, \r
                        XmlNameTable nameTable, XmlNamespaceManager nsmgr);\r
 \r
+               internal virtual ValueType ParseValueType (string s,\r
+                       XmlNameTable nameTable, XmlNamespaceManager nsmgr)\r
+               {\r
+                       return null;\r
+               }\r
+#endif\r
+\r
                static char [] wsChars = new char [] {' ', '\t', '\n', '\r'};\r
 \r
                StringBuilder sb = new StringBuilder ();\r
@@ -105,13 +155,33 @@ namespace System.Xml.Schema
 \r
                internal static XmlSchemaDatatype FromName (XmlQualifiedName qname)\r
                {\r
-                       if (qname.Namespace != XmlSchema.Namespace)\r
-                               throw new InvalidOperationException ("Namespace " + XmlSchema.Namespace + " is required.");\r
-                       return FromName (qname.Name);\r
+                       return FromName (qname.Name, qname.Namespace);\r
                }\r
 \r
-               internal static XmlSchemaDatatype FromName (string localName)\r
+               internal static XmlSchemaDatatype FromName (string localName, string ns)\r
                {\r
+                       switch (ns) {\r
+                       case XmlSchema.Namespace:\r
+                               break;\r
+#if NET_2_0\r
+                       case XmlSchema.XdtNamespace:\r
+                               switch (localName) {\r
+                               case "anyAtomicType":\r
+                                       return datatypeAnyAtomicType;\r
+                               case "untypedAtomic":\r
+                                       return datatypeUntypedAtomic;\r
+                               case "dayTimeDuration":\r
+                                       return datatypeDayTimeDuration;\r
+                               case "yearMonthDuration":\r
+                                       return datatypeYearMonthDuration;\r
+                               }\r
+                               return null;\r
+#endif\r
+                       default:\r
+                               // Maybe invalid name was specified. In such cases, let processors handle them.\r
+                               return null;\r
+                       }\r
+\r
                        switch (localName) {\r
                        case "anySimpleType":\r
                                return datatypeAnySimpleType;\r
@@ -254,5 +324,16 @@ namespace System.Xml.Schema
                static readonly XsdGYear datatypeGYear = new XsdGYear ();\r
                static readonly XsdGMonth datatypeGMonth = new XsdGMonth ();\r
                static readonly XsdGDay datatypeGDay = new XsdGDay ();\r
+#if NET_2_0\r
+               static readonly XdtAnyAtomicType datatypeAnyAtomicType\r
+                       = new XdtAnyAtomicType ();\r
+               static readonly XdtUntypedAtomic datatypeUntypedAtomic\r
+                       = new XdtUntypedAtomic ();\r
+               static readonly XdtDayTimeDuration datatypeDayTimeDuration\r
+                       = new XdtDayTimeDuration ();\r
+               static readonly XdtYearMonthDuration datatypeYearMonthDuration\r
+                       = new XdtYearMonthDuration ();\r
+#endif\r
+\r
        }\r
 }