Merge pull request #129 from grumpydev/CryptoFixo
[mono.git] / mcs / class / System.XML / System.Xml.Serialization / XmlAttributeOverrides.cs
index 75c6112c794c0a72fb699aa4803e672a750592bc..84c16d72662f0ad15cd41269c8fca3c027ab8677 100644 (file)
@@ -7,54 +7,88 @@
 // (C) 2002 John Donagher
 //
 
-using System;\r
-using System.Collections;\r
-\r
-namespace System.Xml.Serialization\r
-{\r
-       /// <summary>\r
-       /// Summary description for XmlAttributeOverrides.\r
-       /// </summary>\r
-       public class XmlAttributeOverrides\r
-       {\r
-               \r
-               private Hashtable overrides;\r
-\r
-               public XmlAttributeOverrides ()\r
-               {\r
-                       overrides = new Hashtable();\r
-               }\r
-\r
-               public XmlAttributes this [Type type] \r
-               {\r
-                       get { return this [type, string.Empty]; }\r
-               }\r
-\r
-               public XmlAttributes this [Type type, string member]\r
-               {\r
-                       get \r
-                       {\r
-                               return (XmlAttributes) overrides[GetKey(type,member)];\r
-                       }\r
-               }\r
-\r
-               public void Add (Type type, XmlAttributes attributes) \r
-               {\r
-                       Add(type, string.Empty, attributes);\r
-               }\r
-\r
-               public void Add (Type type, string member, XmlAttributes attributes) \r
-               {\r
-                       if(overrides[GetKey(type, member)] != null)\r
-                               throw new Exception("The attributes for the given type and Member already exist in the collection");\r
-                       \r
-                       overrides.Add(GetKey(type,member), attributes);\r
-               }\r
-\r
-               private TypeMember GetKey(Type type, string member)\r
-               {\r
-                       return new TypeMember(type, member);\r
-               }\r
-\r
-       }\r
-}
\ No newline at end of file
+//
+// 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.Collections;
+using System.Globalization;
+
+namespace System.Xml.Serialization
+{
+       /// <summary>
+       /// Summary description for XmlAttributeOverrides.
+       /// </summary>
+       public class XmlAttributeOverrides
+       {
+               
+               private Hashtable overrides;
+
+               public XmlAttributeOverrides ()
+               {
+                       overrides = new Hashtable();
+               }
+
+               public XmlAttributes this [Type type] 
+               {
+                       get { return this [type, string.Empty]; }
+               }
+
+               public XmlAttributes this [Type type, string member]
+               {
+                       get 
+                       {
+                               return (XmlAttributes) overrides[GetKey(type,member)];
+                       }
+               }
+
+               public void Add (Type type, XmlAttributes attributes) 
+               {
+                       Add(type, string.Empty, attributes);
+               }
+
+               public void Add (Type type, string member, XmlAttributes attributes) 
+               {
+                       if(overrides[GetKey(type, member)] != null)
+                               throw new Exception("The attributes for the given type and Member already exist in the collection");
+                       
+                       overrides.Add(GetKey(type,member), attributes);
+               }
+
+               private TypeMember GetKey(Type type, string member)
+               {
+                       return new TypeMember(type, member);
+               }
+
+               internal void AddKeyHash (System.Text.StringBuilder sb)
+               {
+                       sb.Append ("XAO ");
+                       foreach (DictionaryEntry entry in overrides)
+                       {
+                               XmlAttributes val = (XmlAttributes) entry.Value;
+                               IFormattable keyFormattable = entry.Key as IFormattable;
+                               sb.Append (keyFormattable != null ? keyFormattable.ToString (null, CultureInfo.InvariantCulture) : entry.Key.ToString()).Append(' ');
+                               val.AddKeyHash (sb);
+                       }
+                       sb.Append ("|");
+               }
+       }
+}