2005-01-31 Zoltan Varga <vargaz@freemail.hu>
[mono.git] / mcs / class / System.XML / System.Xml.Serialization / XmlTypeMapElementInfo.cs
index a188e83950c0216370b0081beae72c5cac35913b..35a72de7d51f85cd430169c933280746c765500d 100644 (file)
@@ -7,6 +7,27 @@
 // (C) 2002, 2003 Ximian, Inc.  http://www.ximian.com
 //
 
+//
+// 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.
+//
+
 using System;
 using System.Xml.Schema;
 using System.Collections;
@@ -19,7 +40,6 @@ namespace System.Xml.Serialization
        internal class XmlTypeMapElementInfo
        {
                string _elementName;
-               string _dataType;
                string _namespace = "";
                XmlSchemaForm _form;
                XmlTypeMapMember _member;
@@ -29,7 +49,7 @@ namespace System.Xml.Serialization
                XmlTypeMapping _mappedType;
                TypeData _type;
                bool _wrappedElement = true;
-
+               
                public XmlTypeMapElementInfo (XmlTypeMapMember member, TypeData type)
                {
                        _member = member;
@@ -60,18 +80,12 @@ namespace System.Xml.Serialization
                        set { _namespace = value; }
                }
 
-               public string DataType
-               {
-                       get { return _dataType; }
-                       set { _dataType = value; }
-               }
-
                public string DataTypeNamespace
                {
                        get 
                        { 
                                if (_mappedType == null) return XmlSchema.Namespace;
-                               else return _mappedType.Namespace;
+                               else return _mappedType.XmlTypeNamespace;
                        }
                }
 
@@ -125,15 +139,27 @@ namespace System.Xml.Serialization
                        set { _wrappedElement = value; }
                }
 
+               public bool IsTextElement
+               {
+                       get { return ElementName == "<text>"; }
+                       set { ElementName = "<text>"; Namespace = string.Empty; }
+               }
+
+               public bool IsUnnamedAnyElement
+               {
+                       get { return ElementName == string.Empty; }
+                       set { ElementName = string.Empty; Namespace = string.Empty; }
+               }
+
                public override bool Equals (object other)
                {
                        XmlTypeMapElementInfo oinfo = (XmlTypeMapElementInfo)other;
                        if (_elementName != oinfo._elementName) return false;
-                       if (_dataType != oinfo._dataType) return false;
+                       if (_type.XmlType != oinfo._type.XmlType) return false;
                        if (_namespace != oinfo._namespace) return false;
                        if (_form != oinfo._form) return false;
                        if (_choiceValue != oinfo._choiceValue) return false;
-                       if (_type.Type != oinfo._type.Type) return false;
+                       if (_type != oinfo._type) return false;
                        if (_isNullable != oinfo._isNullable) return false;
                        return true;
                }
@@ -146,6 +172,15 @@ namespace System.Xml.Serialization
 
        class XmlTypeMapElementInfoList: ArrayList
        {
+               public int IndexOfElement (string name, string namspace)
+               {
+                       for (int n=0; n<Count; n++) {
+                               XmlTypeMapElementInfo info = (XmlTypeMapElementInfo) base [n];
+                               if (info.ElementName == name && info.Namespace == namspace)
+                                       return n;
+                       }
+                       return -1;
+               }
        }
 }