SortedSet: Enable set comparision operations on views, and improve performance
[mono.git] / mcs / class / System / System.Configuration / NameValueSectionHandler.cs
index 4f4cc9a1f7f0dbc7948eb8359b99b9278924c8ea..f9c49d45fb083c8f12417e30f873900a392ae9d8 100644 (file)
@@ -4,10 +4,36 @@
 // Author:
 //   Christopher Podurgiel (cpodurgiel@msn.com)
 //
-// (C) Ximian, Inc.  http://www.ximian.com
+// (C) Chris Podurgiel
+//
+
+//
+// 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.Specialized;
+#if (XML_DEP)
 using System.Xml;
+#else
+using XmlNode = System.Object;
+#endif
 
 namespace System.Configuration
 {
@@ -16,55 +42,44 @@ namespace System.Configuration
        /// </summary>
        public class NameValueSectionHandler : IConfigurationSectionHandler
        {
-
-               private static string _stringKey;
-               private static string _stringValue;
-
-               /// <summary>
-               ///             NameValueSectionHandler Constructor
-               /// </summary>
-               public NameValueSectionHandler()
-               {
-                       _stringKey = "key";
-                       _stringValue = "value";
-               }
-
                /// <summary>
                ///             Creates a new configuration handler and adds the specified configuration object to the collection.
                /// </summary>
                /// <param name="parent">Composed from the configuration settings in a corresponding parent configuration section.</param>
-               /// <param name="configContext">Provides access to the virtual path for which the configuration section handler computes configuration values. Normally this parameter is reserved and is null.</param>
+               /// <param name="context">Provides access to the virtual path for which the configuration section handler computes configuration values. Normally this parameter is reserved and is null.</param>
                /// <param name="section">The XML node that contains the configuration information to be handled. section provides direct access to the XML contents of the configuration section.</param>
                /// <returns></returns>
                public object Create(object parent, object context, XmlNode section)
                {
-                       //FIXME: Add Implemetation code here.\r
+#if (XML_DEP)                  
+                       return ConfigHelper.GetNameValueCollection (parent as NameValueCollection, section,
+                                                                   KeyAttributeName, ValueAttributeName);
+#else
                        return null;
+#endif
                }
 
                /// <summary>
-               ///             Gets the name of the key in the key-value pair.
+               /// Gets the name of the key attribute tag. This property is overidden by derived classes to change 
+               /// the name of the key attribute tag. The default is "key".
                /// </summary>
                protected virtual string KeyAttributeName
                {
-                       get
-                       {
-                               return _stringKey;
+                       get {
+                               return "key";
                        }
                }
 
                /// <summary>
-               ///             Gets the value for the key in the key-value pair.
+               /// Gets the name of the value tag. This property may be overidden by derived classes to change
+               /// the name of the value tag. The default is "value".
                /// </summary>
-               protected virtual string ValueAttributeName
+               protected virtual string ValueAttributeName 
                {
-                       get
-                       {
-                               return _stringValue;
+                       get {
+                               return "value";
                        }
                }
 
        }
 }
-
-