2010-07-12 Astushi Enomoto <atsushi@ximian.com>
[mono.git] / mcs / class / System.XML / System.Xml.Serialization / SoapAttributeOverrides.cs
index 8f937bf8ca92ccf012605e73b4e2735e9d2fe54b..17dc09328748cd4247aa3df5d108d79a9cb16aec 100644 (file)
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
-using System;\r
-using System.Collections;\r
-\r
-namespace System.Xml.Serialization\r
-{\r
-       /// <summary>\r
-       /// \r
-       /// </summary>\r
-       public class SoapAttributeOverrides\r
-       {\r
-               /// <summary>\r
-               /// This class requires to store SoapAttrributes indexed by a key containg\r
-               /// both Type and Member Name. There are 3 approaches to this IMO.\r
-               /// 1. Make the key as "FullTypeName..MemberName", with ".." seperating Type and Member.\r
-               /// 2. Use a jagged 2D hashtable. The main hashtable is indexed by Type and each value \r
-               ///    contains another hashtable which is indexed by member names. (Too many hashtables)\r
-               /// 3. Use a new class which emcompasses the Type and MemberName. An implementation is there\r
-               ///    in TypeMember class in this namespace. (Too many instantiations of the class needed)\r
-               ///    \r
-               /// Method 1 is the most elegent, but I am not sure if the seperator is language insensitive.\r
-               /// What if someone writes a language which allows . in the member names.\r
-               /// </summary>\r
-               /// \r
-               private Hashtable overrides;\r
-\r
-               public SoapAttributeOverrides ()\r
-               {\r
-                       overrides = new Hashtable();\r
-               }\r
-\r
-               public SoapAttributes this [Type type] \r
-               {\r
-                       get { return this [type, string.Empty]; }\r
-               }\r
-\r
-               public SoapAttributes this [Type type, string member]\r
-               {\r
-                       get \r
-                       {\r
-                               return (SoapAttributes) overrides[GetKey(type,member)];\r
-                       }\r
-               }\r
-\r
-               public void Add (Type type, SoapAttributes attributes) \r
-               {\r
-                       Add(type, string.Empty, attributes);\r
-               }\r
-\r
-               public void Add (Type type, string member, SoapAttributes 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
-               internal void AddKeyHash (System.Text.StringBuilder sb)\r
-               {\r
-                       sb.Append ("SAO ");\r
-                       foreach (DictionaryEntry entry in overrides)\r
-                       {\r
-                               SoapAttributes val = (SoapAttributes) overrides [entry.Key];\r
-                               sb.Append (entry.Key.ToString()).Append(' ');\r
-                               val.AddKeyHash (sb);\r
-                       }\r
-                       sb.Append ("|");\r
-               }\r
-       }\r
-}\r
+using System;
+using System.Collections;
+
+namespace System.Xml.Serialization
+{
+       /// <summary>
+       /// 
+       /// </summary>
+       public class SoapAttributeOverrides
+       {
+               /// <summary>
+               /// This class requires to store SoapAttrributes indexed by a key containg
+               /// both Type and Member Name. There are 3 approaches to this IMO.
+               /// 1. Make the key as "FullTypeName..MemberName", with ".." seperating Type and Member.
+               /// 2. Use a jagged 2D hashtable. The main hashtable is indexed by Type and each value 
+               ///    contains another hashtable which is indexed by member names. (Too many hashtables)
+               /// 3. Use a new class which emcompasses the Type and MemberName. An implementation is there
+               ///    in TypeMember class in this namespace. (Too many instantiations of the class needed)
+               ///    
+               /// Method 1 is the most elegent, but I am not sure if the seperator is language insensitive.
+               /// What if someone writes a language which allows . in the member names.
+               /// </summary>
+               /// 
+               private Hashtable overrides;
+
+               public SoapAttributeOverrides ()
+               {
+                       overrides = new Hashtable();
+               }
+
+               public SoapAttributes this [Type type] 
+               {
+                       get { return this [type, string.Empty]; }
+               }
+
+               public SoapAttributes this [Type type, string member]
+               {
+                       get 
+                       {
+                               return (SoapAttributes) overrides[GetKey(type,member)];
+                       }
+               }
+
+               public void Add (Type type, SoapAttributes attributes) 
+               {
+                       Add(type, string.Empty, attributes);
+               }
+
+               public void Add (Type type, string member, SoapAttributes 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 ("SAO ");
+                       foreach (DictionaryEntry entry in overrides)
+                       {
+                               SoapAttributes val = (SoapAttributes) overrides [entry.Key];
+                               sb.Append (entry.Key.ToString()).Append(' ');
+                               val.AddKeyHash (sb);
+                       }
+                       sb.Append ("|");
+               }
+       }
+}