* roottypes.cs: Rename from tree.cs.
[mono.git] / mcs / class / System.XML / System.Xml.Schema / XmlSchemaType.cs
old mode 100755 (executable)
new mode 100644 (file)
index fb8ad10..0ce5b5f
@@ -46,9 +46,7 @@ namespace System.Xml.Schema
                private bool isMixed;\r
                private string name;\r
                bool recursed;\r
-#if NET_2_0\r
-               private XmlTypeCode typeCodeForPredefinedTypes;\r
-#endif\r
+\r
                internal XmlQualifiedName BaseSchemaTypeName;\r
                internal XmlSchemaType BaseXmlSchemaTypeInternal;\r
                internal XmlSchemaDatatype DatatypeInternal;\r
@@ -136,37 +134,69 @@ namespace System.Xml.Schema
                }\r
 \r
 #if NET_2_0\r
-               [MonoTODO]\r
                // LAMESPEC: for IDREFS it returns Idref. for ENTITIES \r
                // it returns Entity. for NMTOKENS it returns NmToken.\r
+               [XmlIgnore]\r
                public XmlTypeCode TypeCode {\r
                        get {\r
-                               if (typeCodeForPredefinedTypes != XmlTypeCode.None) // anySimpleType, anyType etc.\r
-                                       return typeCodeForPredefinedTypes;\r
-                               if (DatatypeInternal != null)\r
-                                       return DatatypeInternal.TypeCode;\r
+                               if (this == XmlSchemaComplexType.AnyType)\r
+                                       return XmlTypeCode.Item;\r
                                if (DatatypeInternal == XmlSchemaSimpleType.AnySimpleType)\r
                                        return XmlTypeCode.AnyAtomicType;\r
-                               if (this == XmlSchemaComplexType.AnyType)\r
-                                       return XmlTypeCode.None;\r
+                               if (this == XmlSchemaSimpleType.XsIDRefs)\r
+                                       return XmlTypeCode.Idref;\r
+                               if (this == XmlSchemaSimpleType.XsEntities)\r
+                                       return XmlTypeCode.Entity;\r
+                               if (this == XmlSchemaSimpleType.XsNMTokens)\r
+                                       return XmlTypeCode.NmToken;\r
+                               if (DatatypeInternal != null)\r
+                                       return DatatypeInternal.TypeCode;\r
                                return BaseXmlSchemaType.TypeCode;\r
                        }\r
                }\r
 #endif\r
                #endregion\r
 \r
+#if NET_2_0\r
+               internal static XmlSchemaType GetBuiltInType (XmlQualifiedName qualifiedName)\r
+               {\r
+                       XmlSchemaType t = GetBuiltInSimpleType (qualifiedName);\r
+                       if (t == null)\r
+                               t = GetBuiltInComplexType (qualifiedName);\r
+                       return t;\r
+               }\r
+\r
+               internal static XmlSchemaType GetBuiltInType (XmlTypeCode typecode)\r
+               {\r
+                       if (typecode == XmlTypeCode.Item)\r
+                               return XmlSchemaComplexType.AnyType;\r
+                       return GetBuiltInSimpleType (typecode);\r
+               }\r
+#endif\r
+\r
 #if NET_2_0\r
                public static XmlSchemaComplexType GetBuiltInComplexType (XmlQualifiedName qualifiedName)\r
 #else\r
                internal static XmlSchemaComplexType GetBuiltInComplexType (XmlQualifiedName qualifiedName)\r
 #endif\r
                {\r
-                       if (qualifiedName == XmlSchemaComplexType.AnyType.QualifiedName)\r
+                       if (qualifiedName.Name == "anyType" && qualifiedName.Namespace == XmlSchema.Namespace)\r
                                return XmlSchemaComplexType.AnyType;\r
 \r
                        return null;\r
                }\r
 \r
+#if NET_2_0\r
+               public static XmlSchemaComplexType GetBuiltInComplexType (XmlTypeCode type)\r
+               {\r
+                       switch (type) {\r
+                       case XmlTypeCode.Item:\r
+                               return XmlSchemaComplexType.AnyType;\r
+                       }\r
+                       return null;\r
+               }\r
+#endif\r
+\r
 #if NET_2_0\r
                [MonoTODO]\r
                public static XmlSchemaSimpleType GetBuiltInSimpleType (XmlQualifiedName qualifiedName)\r
@@ -273,7 +303,7 @@ namespace System.Xml.Schema
                                return XmlSchemaSimpleType.XsUnsignedLong;\r
                        case "unsignedInt":\r
                                return XmlSchemaSimpleType.XsUnsignedInt;\r
-                       case "unsingedShort":\r
+                       case "unsignedShort":\r
                                return XmlSchemaSimpleType.XsUnsignedShort;\r
                        case "unsignedByte":\r
                                return XmlSchemaSimpleType.XsUnsignedByte;\r
@@ -403,10 +433,16 @@ namespace System.Xml.Schema
                        return null;\r
                }\r
 \r
-               [MonoTODO]\r
                public static bool IsDerivedFrom (XmlSchemaType derivedType, XmlSchemaType baseType, XmlSchemaDerivationMethod except)\r
                {\r
-                       throw new NotImplementedException ();\r
+                       if (derivedType.BaseXmlSchemaType == null)\r
+                               return false;\r
+                       if ((derivedType.DerivedBy & except) != 0)\r
+                               return false;\r
+                       if (derivedType.BaseXmlSchemaType == baseType)\r
+                               return true;\r
+                       return IsDerivedFrom (derivedType.BaseXmlSchemaType,\r
+                               baseType, except);\r
                }\r
 #endif\r
 \r