nicko       2005/01/31 14:56:49

  Modified:    src/Util AppenderAttachedImpl.cs CompositeProperties.cs
                        ContextPropertiesBase.cs CountingQuietTextWriter.cs
                        CyclicBuffer.cs EmptyCollection.cs
                        EmptyDictionary.cs FormattingInfo.cs
                        GlobalContextProperties.cs LevelMapping.cs
                        LevelMappingEntry.cs LogLog.cs
                        LogicalThreadContextProperties.cs NativeError.cs
                        NullDictionaryEnumerator.cs NullEnumerator.cs
                        NullSecurityContext.cs OnlyOnceErrorHandler.cs
                        OptionConverter.cs PatternConverter.cs
                        PatternParser.cs PatternString.cs
  Log:
  Tidied up doc comments
  
  Revision  Changes    Path
  1.6       +38 -3     logging-log4net/src/Util/AppenderAttachedImpl.cs
  
  Index: AppenderAttachedImpl.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/AppenderAttachedImpl.cs,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- AppenderAttachedImpl.cs   28 Jan 2005 20:51:06 -0000      1.5
  +++ AppenderAttachedImpl.cs   31 Jan 2005 22:56:49 -0000      1.6
  @@ -26,6 +26,13 @@
        /// <summary>
        /// A straightforward implementation of the <see 
cref="IAppenderAttachable"/> interface.
        /// </summary>
  +     /// <remarks>
  +     /// <para>
  +     /// This is the default implementation of the <see 
cref="IAppenderAttachable"/>
  +     /// interface. Implementors of the <see cref="IAppenderAttachable"/> 
interface
  +     /// should aggregate an instance of this type.
  +     /// </para>
  +     /// </remarks>
        /// <author>Nicko Cadell</author>
        /// <author>Gert Driesen</author>
        public class AppenderAttachedImpl : IAppenderAttachable
  @@ -33,8 +40,13 @@
                #region Public Instance Constructors
   
                /// <summary>
  -             /// Initializes a new instance of the <see 
cref="AppenderAttachedImpl"/> class.
  +             /// Constructor
                /// </summary>
  +             /// <remarks>
  +             /// <para>
  +             /// Initializes a new instance of the <see 
cref="AppenderAttachedImpl"/> class.
  +             /// </para>
  +             /// </remarks>
                public AppenderAttachedImpl()
                {
                }
  @@ -44,11 +56,16 @@
                #region Public Instance Methods
   
                /// <summary>
  -             /// Calls the <see cref="IAppender.DoAppend" /> method on all 
  -             /// attached appenders.
  +             /// Append on on all attached appenders.
                /// </summary>
                /// <param name="loggingEvent">The event being logged.</param>
                /// <returns>The number of appenders called.</returns>
  +             /// <remarks>
  +             /// <para>
  +             /// Calls the <see cref="IAppender.DoAppend" /> method on all 
  +             /// attached appenders.
  +             /// </para>
  +             /// </remarks>
                public int AppendLoopOnAppenders(LoggingEvent loggingEvent) 
                {
                        if (loggingEvent == null)
  @@ -90,7 +107,9 @@
                /// </summary>
                /// <param name="newAppender">The appender to add.</param>
                /// <remarks>
  +             /// <para>
                /// If the appender is already in the list it won't be added 
again.
  +             /// </para>
                /// </remarks>
                public void AddAppender(IAppender newAppender) 
                {
  @@ -118,6 +137,11 @@
                /// A collection of attached appenders, or <c>null</c> if there
                /// are no attached appenders.
                /// </returns>
  +             /// <remarks>
  +             /// <para>
  +             /// The read only collection of all currently attached 
appenders.
  +             /// </para>
  +             /// </remarks>
                public AppenderCollection Appenders 
                {
                        get
  @@ -142,6 +166,11 @@
                /// The appender with the name specified, or <c>null</c> if no 
appender with the
                /// specified name is found.
                /// </returns>
  +             /// <remarks>
  +             /// <para>
  +             /// Lookup an attached appender by name.
  +             /// </para>
  +             /// </remarks>
                public IAppender GetAppender(string name) 
                {
                        if (m_appenderList != null && name != null)
  @@ -161,7 +190,9 @@
                /// Removes all attached appenders.
                /// </summary>
                /// <remarks>
  +             /// <para>
                /// Removes and closes all attached appenders
  +             /// </para>
                /// </remarks>
                public void RemoveAllAppenders() 
                {
  @@ -189,9 +220,11 @@
                /// <param name="appender">The appender to remove.</param>
                /// <returns>The appender removed from the list</returns>
                /// <remarks>
  +             /// <para>
                /// The appender removed is not closed.
                /// If you are discarding the appender you must call
                /// <see cref="IAppender.Close"/> on the appender removed.
  +             /// </para>
                /// </remarks>
                public IAppender RemoveAppender(IAppender appender) 
                {
  @@ -213,9 +246,11 @@
                /// <param name="name">The name of the appender to 
remove.</param>
                /// <returns>The appender removed from the list</returns>
                /// <remarks>
  +             /// <para>
                /// The appender removed is not closed.
                /// If you are discarding the appender you must call
                /// <see cref="IAppender.Close"/> on the appender removed.
  +             /// </para>
                /// </remarks>
                public IAppender RemoveAppender(string name) 
                {
  
  
  
  1.3       +31 -1     logging-log4net/src/Util/CompositeProperties.cs
  
  Index: CompositeProperties.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/CompositeProperties.cs,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- CompositeProperties.cs    17 Jan 2005 20:18:47 -0000      1.2
  +++ CompositeProperties.cs    31 Jan 2005 22:56:49 -0000      1.3
  @@ -24,6 +24,12 @@
        /// <summary>
        /// This class aggregates several PropertiesDictionary collections 
together.
        /// </summary>
  +     /// <remarks>
  +     /// <para>
  +     /// Provides a dictionary style lookup over an ordered list of
  +     /// <see cref="PropertiesDictionary"/> collections.
  +     /// </para>
  +     /// </remarks>
        /// <author>Nicko Cadell</author>
        public sealed class CompositeProperties
        {
  @@ -37,8 +43,13 @@
                #region Public Instance Constructors
   
                /// <summary>
  -             /// Initializes a new instance of the <see 
cref="CompositeProperties" /> class.
  +             /// Constructor
                /// </summary>
  +             /// <remarks>
  +             /// <para>
  +             /// Initializes a new instance of the <see 
cref="CompositeProperties" /> class.
  +             /// </para>
  +             /// </remarks>
                internal CompositeProperties()
                {
                }
  @@ -53,6 +64,19 @@
                /// <value>
                /// The value for the property with the specified key
                /// </value>
  +             /// <remarks>
  +             /// <para>
  +             /// Looks up the value for the <paramref name="key" /> 
specified.
  +             /// The <see cref="PropertiesDictionary"/> collections are 
searched
  +             /// in the order in which they were added to this collection. 
The value
  +             /// returned is the value held by the first collection that 
contains
  +             /// the specified key.
  +             /// </para>
  +             /// <para>
  +             /// If none of the collections contain the specified key then
  +             /// <c>null</c> is returned.
  +             /// </para>
  +             /// </remarks>
                public object this[string key]
                {
                        get 
  @@ -99,6 +123,12 @@
                /// Flatten this composite collection into a single properties 
dictionary
                /// </summary>
                /// <returns>the flattened dictionary</returns>
  +             /// <remarks>
  +             /// <para>
  +             /// Reduces the collection of ordered dictionaries to a single 
dictionary
  +             /// containing the resultant values for the keys.
  +             /// </para>
  +             /// </remarks>
                public PropertiesDictionary Flatten()
                {
                        if (m_flattened == null)
  
  
  
  1.3       +5 -0      logging-log4net/src/Util/ContextPropertiesBase.cs
  
  Index: ContextPropertiesBase.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/ContextPropertiesBase.cs,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ContextPropertiesBase.cs  17 Jan 2005 20:18:47 -0000      1.2
  +++ ContextPropertiesBase.cs  31 Jan 2005 22:56:49 -0000      1.3
  @@ -38,6 +38,11 @@
                /// <value>
                /// The value for the property with the specified key
                /// </value>
  +             /// <remarks>
  +             /// <para>
  +             /// Gets or sets the value of a property
  +             /// </para>
  +             /// </remarks>
                public abstract object this[string key] { get; set; }
        }
   }
  
  
  
  1.5       +21 -2     logging-log4net/src/Util/CountingQuietTextWriter.cs
  
  Index: CountingQuietTextWriter.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/CountingQuietTextWriter.cs,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- CountingQuietTextWriter.cs        17 Jan 2005 20:18:47 -0000      1.4
  +++ CountingQuietTextWriter.cs        31 Jan 2005 22:56:49 -0000      1.5
  @@ -27,6 +27,11 @@
        /// Subclass of <see cref="QuietTextWriter"/> that maintains a count of 
        /// the number of bytes written.
        /// </summary>
  +     /// <remarks>
  +     /// <para>
  +     /// This writer counts the number of bytes written.
  +     /// </para>
  +     /// </remarks>
        /// <author>Nicko Cadell</author>
        /// <author>Gert Driesen</author>
        public class CountingQuietTextWriter : QuietTextWriter 
  @@ -34,11 +39,16 @@
                #region Public Instance Constructors
   
                /// <summary>
  -             /// Creates a new instance of the <see 
cref="CountingQuietTextWriter" /> class 
  -             /// with the specified <see cref="TextWriter" /> and <see 
cref="IErrorHandler" />.
  +             /// Constructor
                /// </summary>
                /// <param name="writer">The <see cref="TextWriter" /> to 
actually write to.</param>
                /// <param name="errorHandler">The <see cref="IErrorHandler" /> 
to report errors to.</param>
  +             /// <remarks>
  +             /// <para>
  +             /// Creates a new instance of the <see 
cref="CountingQuietTextWriter" /> class 
  +             /// with the specified <see cref="TextWriter" /> and <see 
cref="IErrorHandler" />.
  +             /// </para>
  +             /// </remarks>
                public CountingQuietTextWriter(TextWriter writer, IErrorHandler 
errorHandler) : base(writer, errorHandler)
                {
                        m_countBytes = 0;
  @@ -52,6 +62,10 @@
                /// Writes a string to the output and counts the number of 
bytes written.
                /// </summary>
                /// <param name="str">The string data to write to the 
output.</param>
  +             /// <remarks>
  +             /// Overrides implementation of <see cref="QuietTextWriter"/>. 
Counts
  +             /// the number of bytes written.
  +             /// </remarks>
                override public void Write(string str) 
                {
                        if (str != null && str.Length > 0)
  @@ -81,6 +95,11 @@
                /// <value>
                /// The total number of bytes written.
                /// </value>
  +             /// <remarks>
  +             /// <para>
  +             /// Gets or sets the total number of bytes written.
  +             /// </para>
  +             /// </remarks>
                public long Count 
                {
                        get { return m_countBytes; }
  
  
  
  1.8       +60 -7     logging-log4net/src/Util/CyclicBuffer.cs
  
  Index: CyclicBuffer.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/CyclicBuffer.cs,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- CyclicBuffer.cs   17 Jan 2005 20:18:47 -0000      1.7
  +++ CyclicBuffer.cs   31 Jan 2005 22:56:49 -0000      1.8
  @@ -25,6 +25,11 @@
        /// <summary>
        /// A fixed size rolling buffer of logging events.
        /// </summary>
  +     /// <remarks>
  +     /// <para>
  +     /// An array backed fixed size leaky bucket.
  +     /// </para>
  +     /// </remarks>
        /// <author>Nicko Cadell</author>
        /// <author>Gert Driesen</author>
        public class CyclicBuffer
  @@ -32,17 +37,23 @@
                #region Public Instance Constructors
   
                /// <summary>
  -             /// Initializes a new instance of the <see cref="CyclicBuffer" 
/> class with 
  -             /// the specified maximum number of buffered logging events.
  +             /// Constructor
                /// </summary>
                /// <param name="maxSize">The maximum number of logging events 
in the buffer.</param>
  +             /// <remarks>
  +             /// <para>
  +             /// Initializes a new instance of the <see cref="CyclicBuffer" 
/> class with 
  +             /// the specified maximum number of buffered logging events.
  +             /// </para>
  +             /// </remarks>
                /// <exception cref="ArgumentOutOfRangeException">The <paramref 
name="maxSize"/> argument is not a positive integer.</exception>
                public CyclicBuffer(int maxSize) 
                {
                        if (maxSize < 1) 
                        {
  -                             throw 
log4net.Util.SystemInfo.CreateArgumentOutOfRangeException("maxSize", 
(object)maxSize, "Parameter: maxSize, Value: [" + maxSize + "] out of range. 
Non zero positive integer required");
  +                             throw 
SystemInfo.CreateArgumentOutOfRangeException("maxSize", (object)maxSize, 
"Parameter: maxSize, Value: [" + maxSize + "] out of range. Non zero positive 
integer required");
                        }
  +
                        m_maxSize = maxSize;
                        m_events = new LoggingEvent[maxSize];
                        m_first = 0;
  @@ -59,6 +70,13 @@
                /// </summary>
                /// <param name="loggingEvent">The event to append to the 
buffer.</param>
                /// <returns>The event discarded from the buffer, if the buffer 
is full, otherwise <c>null</c>.</returns>
  +             /// <remarks>
  +             /// <para>
  +             /// Append an event to the buffer. If the buffer still contains 
free space then
  +             /// <c>null</c> is returned. If the buffer is full then an 
event will be dropped
  +             /// to make space for the new event, the event dropped is 
returned.
  +             /// </para>
  +             /// </remarks>
                public LoggingEvent Append(LoggingEvent loggingEvent)
                {       
                        if (loggingEvent == null)
  @@ -101,10 +119,15 @@
                }
   
                /// <summary>
  -             /// Gets the oldest (first) logging event in the buffer and 
removes it 
  -             /// from the buffer.
  +             /// Get and remove the oldest event in the buffer.
                /// </summary>
                /// <returns>The oldest logging event in the buffer</returns>
  +             /// <remarks>
  +             /// <para>
  +             /// Gets the oldest (first) logging event in the buffer and 
removes it 
  +             /// from the buffer.
  +             /// </para>
  +             /// </remarks>
                public LoggingEvent PopOldest() 
                {
                        lock(this)
  @@ -128,6 +151,11 @@
                /// Pops all the logging events from the buffer into an array.
                /// </summary>
                /// <returns>An array of all the logging events in the 
buffer.</returns>
  +             /// <remarks>
  +             /// <para>
  +             /// Get all the events in the buffer and clear the buffer.
  +             /// </para>
  +             /// </remarks>
                public LoggingEvent[] PopAll()
                {
                        lock(this)
  @@ -158,10 +186,19 @@
                        }
                }
   
  +#if RESIZABLE_CYCLIC_BUFFER
                /// <summary>
                /// Resizes the cyclic buffer to <paramref name="newSize"/>.
                /// </summary>
                /// <param name="newSize">The new size of the buffer.</param>
  +             /// <remarks>
  +             /// <para>
  +             /// Resize the cyclic buffer. Events in the buffer are copied 
into
  +             /// the newly sized buffer. If the buffer is shrunk and there 
are
  +             /// more events currently in the buffer than the new size of the
  +             /// buffer then the newest events will be dropped from the 
buffer.
  +             /// </para>
  +             /// </remarks>
                /// <exception cref="ArgumentOutOfRangeException">The <paramref 
name="newSize"/> argument is not a positive integer.</exception>
                public void Resize(int newSize) 
                {
  @@ -206,6 +243,7 @@
                                }
                        }
                }
  +#endif
   
                #endregion Public Instance Methods
   
  @@ -216,8 +254,10 @@
                /// </summary>
                /// <value>The <paramref name="i"/>th oldest event currently in 
the buffer.</value>
                /// <remarks>
  +             /// <para>
                /// If <paramref name="i"/> is outside the range 0 to the 
number of events
                /// currently in the buffer, then <c>null</c> is returned.
  +             /// </para>
                /// </remarks>
                public LoggingEvent this[int i] 
                {
  @@ -236,9 +276,14 @@
                }
   
                /// <summary>
  -             /// Gets or sets the maximum size of the buffer.
  +             /// Gets the maximum size of the buffer.
                /// </summary>
                /// <value>The maximum size of the buffer.</value>
  +             /// <remarks>
  +             /// <para>
  +             /// Gets the maximum size of the buffer
  +             /// </para>
  +             /// </remarks>
                public int MaxSize 
                {
                        get 
  @@ -248,7 +293,13 @@
                                        return m_maxSize; 
                                }
                        }
  -                     set { Resize(value); }
  +#if RESIZABLE_CYCLIC_BUFFER
  +                     set 
  +                     { 
  +                             /// Setting the MaxSize will cause the buffer 
to resize.
  +                             Resize(value); 
  +                     }
  +#endif
                }
   
                /// <summary>
  @@ -256,8 +307,10 @@
                /// </summary>
                /// <value>The number of logging events in the buffer.</value>
                /// <remarks>
  +             /// <para>
                /// This number is guaranteed to be in the range 0 to <see 
cref="MaxSize"/>
                /// (inclusive).
  +             /// </para>
                /// </remarks>
                public int Length
                {
  
  
  
  1.5       +36 -0     logging-log4net/src/Util/EmptyCollection.cs
  
  Index: EmptyCollection.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/EmptyCollection.cs,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- EmptyCollection.cs        17 Jan 2005 20:18:47 -0000      1.4
  +++ EmptyCollection.cs        31 Jan 2005 22:56:49 -0000      1.5
  @@ -24,6 +24,12 @@
        /// <summary>
        /// An always empty <see cref="ICollection"/>.
        /// </summary>
  +     /// <remarks>
  +     /// <para>
  +     /// A singleton implementation of the <see cref="ICollection"/>
  +     /// interface that always represents an empty collection.
  +     /// </para>
  +     /// </remarks>
        /// <author>Nicko Cadell</author>
        /// <author>Gert Driesen</author>
   #if !NETCF
  @@ -37,7 +43,9 @@
                /// Initializes a new instance of the <see 
cref="EmptyCollection" /> class. 
                /// </summary>
                /// <remarks>
  +             /// <para>
                /// Uses a private access modifier to enforce the singleton 
pattern.
  +             /// </para>
                /// </remarks>
                private EmptyCollection()
                {
  @@ -51,6 +59,11 @@
                /// Gets the singleton instance of the empty collection.
                /// </summary>
                /// <returns>The singleton instance of the empty 
collection.</returns>
  +             /// <remarks>
  +             /// <para>
  +             /// Gets the singleton instance of the empty collection.
  +             /// </para>
  +             /// </remarks>
                public static EmptyCollection Instance
                {
                        get { return s_instance; }
  @@ -70,6 +83,11 @@
                /// indexing.</param>
                /// <param name="index">The zero-based index in array at which 
                /// copying begins.</param>
  +             /// <remarks>
  +             /// <para>
  +             /// As the collection is empty no values are copied into the 
array.
  +             /// </para>
  +             /// </remarks>
                public void CopyTo(System.Array array, int index)
                {
                        // copy nothing
  @@ -82,7 +100,9 @@
                /// <b>true</b> if access to the <see cref="ICollection"/> is 
synchronized (thread-safe); otherwise, <b>false</b>.
                /// </value>
                /// <remarks>
  +             /// <para>
                /// For the <see cref="EmptyCollection"/> this property is 
always <c>true</c>.
  +             /// </para>
                /// </remarks>
                public bool IsSynchronized
                {
  @@ -95,6 +115,11 @@
                /// <value>
                /// The number of elements contained in the <see 
cref="ICollection"/>.
                /// </value>
  +             /// <remarks>
  +             /// <para>
  +             /// As the collection is empty the <see cref="Count"/> is 
always <c>0</c>.
  +             /// </para>
  +             /// </remarks>
                public int Count
                {
                        get { return 0; }
  @@ -106,6 +131,12 @@
                /// <value>
                /// An object that can be used to synchronize access to the 
<see cref="ICollection"/>.
                /// </value>
  +             /// <remarks>
  +             /// <para>
  +             /// As the collection is empty and thread safe and synchronized 
this instance is also
  +             /// the <see cref="SyncRoot"/> object.
  +             /// </para>
  +             /// </remarks>
                public object SyncRoot
                {
                        get { return this; }
  @@ -122,6 +153,11 @@
                /// An <see cref="IEnumerator"/> that can be used to 
                /// iterate through the collection.
                /// </returns>
  +             /// <remarks>
  +             /// <para>
  +             /// As the collection is empty a <see cref="NullEnumerator"/> 
is returned.
  +             /// </para>
  +             /// </remarks>
                public IEnumerator GetEnumerator()
                {
                        return NullEnumerator.Instance;
  
  
  
  1.4       +96 -1     logging-log4net/src/Util/EmptyDictionary.cs
  
  Index: EmptyDictionary.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/EmptyDictionary.cs,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- EmptyDictionary.cs        17 Jan 2005 20:18:47 -0000      1.3
  +++ EmptyDictionary.cs        31 Jan 2005 22:56:49 -0000      1.4
  @@ -24,6 +24,12 @@
        /// <summary>
        /// An always empty <see cref="IDictionary"/>.
        /// </summary>
  +     /// <remarks>
  +     /// <para>
  +     /// A singleton implementation of the <see cref="IDictionary"/>
  +     /// interface that always represents an empty collection.
  +     /// </para>
  +     /// </remarks>
        /// <author>Nicko Cadell</author>
        /// <author>Gert Driesen</author>
   #if !NETCF
  @@ -37,7 +43,9 @@
                /// Initializes a new instance of the <see 
cref="EmptyDictionary" /> class. 
                /// </summary>
                /// <remarks>
  +             /// <para>
                /// Uses a private access modifier to enforce the singleton 
pattern.
  +             /// </para>
                /// </remarks>
                private EmptyDictionary()
                {
  @@ -51,6 +59,11 @@
                /// Gets the singleton instance of the <see 
cref="EmptyDictionary" />.
                /// </summary>
                /// <returns>The singleton instance of the <see 
cref="EmptyDictionary" />.</returns>
  +             /// <remarks>
  +             /// <para>
  +             /// Gets the singleton instance of the <see 
cref="EmptyDictionary" />.
  +             /// </para>
  +             /// </remarks>
                public static EmptyDictionary Instance
                {
                        get { return s_instance; }
  @@ -70,6 +83,11 @@
                /// indexing.</param>
                /// <param name="index">The zero-based index in array at which 
                /// copying begins.</param>
  +             /// <remarks>
  +             /// <para>
  +             /// As the collection is empty no values are copied into the 
array.
  +             /// </para>
  +             /// </remarks>
                public void CopyTo(System.Array array, int index)
                {
                        // copy nothing
  @@ -82,7 +100,9 @@
                /// <b>true</b> if access to the <see cref="ICollection"/> is 
synchronized (thread-safe); otherwise, <b>false</b>.
                /// </value>
                /// <remarks>
  +             /// <para>
                /// For the <see cref="EmptyCollection"/> this property is 
always <b>true</b>.
  +             /// </para>
                /// </remarks>
                public bool IsSynchronized
                {
  @@ -95,6 +115,11 @@
                /// <value>
                /// The number of elements contained in the <see 
cref="ICollection"/>.
                /// </value>
  +             /// <remarks>
  +             /// <para>
  +             /// As the collection is empty the <see cref="Count"/> is 
always <c>0</c>.
  +             /// </para>
  +             /// </remarks>
                public int Count
                {
                        get { return 0; }
  @@ -106,6 +131,12 @@
                /// <value>
                /// An object that can be used to synchronize access to the 
<see cref="ICollection"/>.
                /// </value>
  +             /// <remarks>
  +             /// <para>
  +             /// As the collection is empty and thread safe and synchronized 
this instance is also
  +             /// the <see cref="SyncRoot"/> object.
  +             /// </para>
  +             /// </remarks>
                public object SyncRoot
                {
                        get { return this; }
  @@ -122,6 +153,11 @@
                /// An <see cref="IEnumerator"/> that can be used to 
                /// iterate through the collection.
                /// </returns>
  +             /// <remarks>
  +             /// <para>
  +             /// As the collection is empty a <see cref="NullEnumerator"/> 
is returned.
  +             /// </para>
  +             /// </remarks>
                IEnumerator IEnumerable.GetEnumerator()
                {
                        return NullEnumerator.Instance;
  @@ -137,6 +173,13 @@
                /// </summary>
                /// <param name="key">The <see cref="object" /> to use as the 
key of the element to add.</param>
                /// <param name="value">The <see cref="object" /> to use as the 
value of the element to add.</param>
  +             /// <remarks>
  +             /// <para>
  +             /// As the collection is empty no new values can be added. A 
<see cref="InvalidOperationException"/>
  +             /// is thrown if this method is called.
  +             /// </para>
  +             /// </remarks>
  +             /// <exception cref="InvalidOperationException">This dictionary 
is always empty and cannot be modified.</exception>
                public void Add(object key, object value)
                {
                        throw new InvalidOperationException();
  @@ -145,6 +188,13 @@
                /// <summary>
                /// Removes all elements from the <see cref="EmptyDictionary" 
/>.
                /// </summary>
  +             /// <remarks>
  +             /// <para>
  +             /// As the collection is empty no values can be removed. A <see 
cref="InvalidOperationException"/>
  +             /// is thrown if this method is called.
  +             /// </para>
  +             /// </remarks>
  +             /// <exception cref="InvalidOperationException">This dictionary 
is always empty and cannot be modified.</exception>
                public void Clear()
                {
                        throw new InvalidOperationException();
  @@ -156,6 +206,11 @@
                /// </summary>
                /// <param name="key">The key to locate in the <see 
cref="EmptyDictionary" />.</param>
                /// <returns><c>false</c></returns>
  +             /// <remarks>
  +             /// <para>
  +             /// As the collection is empty the <see cref="Contains"/> 
method always returns <c>false</c>.
  +             /// </para>
  +             /// </remarks>
                public bool Contains(object key)
                {
                        return false;
  @@ -168,6 +223,11 @@
                /// An <see cref="IEnumerator"/> that can be used to 
                /// iterate through the collection.
                /// </returns>
  +             /// <remarks>
  +             /// <para>
  +             /// As the collection is empty a <see cref="NullEnumerator"/> 
is returned.
  +             /// </para>
  +             /// </remarks>
                public IDictionaryEnumerator GetEnumerator()
                {
                        return NullDictionaryEnumerator.Instance;
  @@ -177,6 +237,13 @@
                /// Removes the element with the specified key from the <see 
cref="EmptyDictionary" />.
                /// </summary>
                /// <param name="key">The key of the element to remove.</param>
  +             /// <remarks>
  +             /// <para>
  +             /// As the collection is empty no values can be removed. A <see 
cref="InvalidOperationException"/>
  +             /// is thrown if this method is called.
  +             /// </para>
  +             /// </remarks>
  +             /// <exception cref="InvalidOperationException">This dictionary 
is always empty and cannot be modified.</exception>
                public void Remove(object key)
                {
                        throw new InvalidOperationException();
  @@ -186,6 +253,11 @@
                /// Gets a value indicating whether the <see 
cref="EmptyDictionary" /> has a fixed size.
                /// </summary>
                /// <value><c>true</c></value>
  +             /// <remarks>
  +             /// <para>
  +             /// As the collection is empty <see cref="IsFixedSize"/> always 
returns <c>true</c>.
  +             /// </para>
  +             /// </remarks>
                public bool IsFixedSize
                {
                        get { return true; }
  @@ -195,6 +267,11 @@
                /// Gets a value indicating whether the <see 
cref="EmptyDictionary" /> is read-only.
                /// </summary>
                /// <value><c>true</c></value>
  +             /// <remarks>
  +             /// <para>
  +             /// As the collection is empty <see cref="IsReadOnly"/> always 
returns <c>true</c>.
  +             /// </para>
  +             /// </remarks>
                public bool IsReadOnly
                {
                        get     { return true; }
  @@ -204,6 +281,11 @@
                /// Gets an <see cref="ICollection" /> containing the keys of 
the <see cref="EmptyDictionary" />.
                /// </summary>
                /// <value>An <see cref="ICollection" /> containing the keys of 
the <see cref="EmptyDictionary" />.</value>
  +             /// <remarks>
  +             /// <para>
  +             /// As the collection is empty a <see cref="EmptyCollection"/> 
is returned.
  +             /// </para>
  +             /// </remarks>
                public System.Collections.ICollection Keys
                {
                        get { return EmptyCollection.Instance; }
  @@ -213,6 +295,11 @@
                /// Gets an <see cref="ICollection" /> containing the values of 
the <see cref="EmptyDictionary" />.
                /// </summary>
                /// <value>An <see cref="ICollection" /> containing the values 
of the <see cref="EmptyDictionary" />.</value>
  +             /// <remarks>
  +             /// <para>
  +             /// As the collection is empty a <see cref="EmptyCollection"/> 
is returned.
  +             /// </para>
  +             /// </remarks>
                public System.Collections.ICollection Values
                {
                        get { return EmptyCollection.Instance; }
  @@ -223,10 +310,18 @@
                /// </summary>
                /// <param name="key">The key of the element to get or 
set.</param>
                /// <value><c>null</c></value>
  +             /// <remarks>
  +             /// <para>
  +             /// As the collection is empty no values can be looked up or 
stored. 
  +             /// If the index getter is called then <c>null</c> is returned.
  +             /// A <see cref="InvalidOperationException"/> is thrown if the 
setter is called.
  +             /// </para>
  +             /// </remarks>
  +             /// <exception cref="InvalidOperationException">This dictionary 
is always empty and cannot be modified.</exception>
                public object this[object key]
                {
                        get { return null; }
  -                     set { }
  +                     set { throw new InvalidOperationException(); }
                }
   
                #endregion Implementation of IDictionary
  
  
  
  1.4       +44 -27    logging-log4net/src/Util/FormattingInfo.cs
  
  Index: FormattingInfo.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/FormattingInfo.cs,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- FormattingInfo.cs 17 Jan 2005 20:18:47 -0000      1.3
  +++ FormattingInfo.cs 31 Jan 2005 22:56:49 -0000      1.4
  @@ -25,6 +25,13 @@
        /// Contain the information obtained when parsing formatting modifiers 
        /// in conversion modifiers.
        /// </summary>
  +     /// <remarks>
  +     /// <para>
  +     /// Holds the formatting information extracted from the format string by
  +     /// the <see cref="PatternParser"/>. This is used by the <see 
cref="PatternConverter"/>
  +     /// objects when rendering the output.
  +     /// </para>
  +     /// </remarks>
        /// <author>Nicko Cadell</author>
        /// <author>Gert Driesen</author>
        public class FormattingInfo
  @@ -32,15 +39,26 @@
                #region Public Instance Constructors
   
                /// <summary>
  -             /// Initializes a new instance of the <see 
cref="FormattingInfo" /> class.
  +             /// Defaut Constructor
                /// </summary>
  +             /// <remarks>
  +             /// <para>
  +             /// Initializes a new instance of the <see 
cref="FormattingInfo" /> class.
  +             /// </para>
  +             /// </remarks>
                public FormattingInfo() 
                {
                }
   
                /// <summary>
  -             /// Initializes a new instance of the <see 
cref="FormattingInfo" /> class.
  +             /// Constructor
                /// </summary>
  +             /// <remarks>
  +             /// <para>
  +             /// Initializes a new instance of the <see 
cref="FormattingInfo" /> class
  +             /// with the specified parameters.
  +             /// </para>
  +             /// </remarks>
                public FormattingInfo(int min, int max, bool leftAlign) 
                {
                        m_min = min;
  @@ -55,7 +73,14 @@
                /// <summary>
                /// Gets or sets the minimum value.
                /// </summary>
  -             /// <value>The minimum value.</value>
  +             /// <value>
  +             /// The minimum value.
  +             /// </value>
  +             /// <remarks>
  +             /// <para>
  +             /// Gets or sets the minimum value.
  +             /// </para>
  +             /// </remarks>
                public int Min
                {
                        get { return m_min; }
  @@ -65,7 +90,14 @@
                /// <summary>
                /// Gets or sets the maximum value.
                /// </summary>
  -             /// <value>The maximum value.</value>
  +             /// <value>
  +             /// The maximum value.
  +             /// </value>
  +             /// <remarks>
  +             /// <para>
  +             /// Gets or sets the maximum value.
  +             /// </para>
  +             /// </remarks>
                public int Max
                {
                        get { return m_max; }
  @@ -76,7 +108,14 @@
                /// Gets or sets a flag indicating whether left align is enabled
                /// or not.
                /// </summary>
  -             /// <value>A flag indicating whether left align is enabled or 
not.</value>
  +             /// <value>
  +             /// A flag indicating whether left align is enabled or not.
  +             /// </value>
  +             /// <remarks>
  +             /// <para>
  +             /// Gets or sets a flag indicating whether left align is 
enabled or not.
  +             /// </para>
  +             /// </remarks>
                public bool LeftAlign
                {
                        get { return m_leftAlign; }
  @@ -85,28 +124,6 @@
   
                #endregion Public Instance Properties
   
  -             #region Public Instance Methods
  -
  -             /// <summary>
  -             /// Resets all properties to their default values.
  -             /// </summary>
  -             public void Reset() 
  -             {
  -                     m_min = -1;
  -                     m_max = int.MaxValue;
  -                     m_leftAlign = false;      
  -             }
  -
  -             /// <summary>
  -             /// Dump debug info
  -             /// </summary>
  -             public void Dump() 
  -             {
  -                     LogLog.Debug("FormattingInfo: min [" + m_min + "], max 
[" + m_max + "], leftAlign [" + m_leftAlign + "]");
  -             }
  -
  -             #endregion Public Instance Methods
  -
                #region Private Instance Fields
   
                private int m_min = -1;
  
  
  
  1.6       +6 -1      logging-log4net/src/Util/GlobalContextProperties.cs
  
  Index: GlobalContextProperties.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/GlobalContextProperties.cs,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- GlobalContextProperties.cs        17 Jan 2005 20:18:47 -0000      1.5
  +++ GlobalContextProperties.cs        31 Jan 2005 22:56:49 -0000      1.6
  @@ -64,8 +64,13 @@
                #region Public Instance Constructors
   
                /// <summary>
  -             /// Initializes a new instance of the <see 
cref="GlobalContextProperties" /> class.
  +             /// Constructor
                /// </summary>
  +             /// <remarks>
  +             /// <para>
  +             /// Initializes a new instance of the <see 
cref="GlobalContextProperties" /> class.
  +             /// </para>
  +             /// </remarks>
                internal GlobalContextProperties()
                {
                }
  
  
  
  1.5       +21 -0     logging-log4net/src/Util/LevelMapping.cs
  
  Index: LevelMapping.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/LevelMapping.cs,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- LevelMapping.cs   17 Jan 2005 20:18:47 -0000      1.4
  +++ LevelMapping.cs   31 Jan 2005 22:56:49 -0000      1.5
  @@ -26,6 +26,12 @@
        /// <summary>
        /// Manages a mapping from levels to <see cref="LevelMappingEntry"/>
        /// </summary>
  +     /// <remarks>
  +     /// <para>
  +     /// Manages an ordered mapping from <see cref="Level"/> instances 
  +     /// to <see cref="LevelMappingEntry"/> subclasses.
  +     /// </para>
  +     /// </remarks>
        /// <author>Nicko Cadell</author>
        public sealed class LevelMapping : IOptionHandler
        {
  @@ -34,6 +40,11 @@
                /// <summary>
                /// Default constructor
                /// </summary>
  +             /// <remarks>
  +             /// <para>
  +             /// Initialise a new instance of <see cref="LevelMapping"/>.
  +             /// </para>
  +             /// </remarks>
                public LevelMapping() 
                {
                }
  @@ -67,6 +78,16 @@
                /// </summary>
                /// <param name="level">the level to lookup</param>
                /// <returns>the <see cref="LevelMappingEntry"/> for the level 
or <c>null</c> if no mapping found</returns>
  +             /// <remarks>
  +             /// <para>
  +             /// Lookup the value for the specified level. Finds the nearest
  +             /// mapping value for the level that is equal to or less than 
the
  +             /// <paramref name="level"/> specified.
  +             /// </para>
  +             /// <para>
  +             /// If no mapping could be found then <c>null</c> is returned.
  +             /// </para>
  +             /// </remarks>
                public LevelMappingEntry Lookup(Level level)
                {
                        if (m_entries != null)
  
  
  
  1.3       +14 -0     logging-log4net/src/Util/LevelMappingEntry.cs
  
  Index: LevelMappingEntry.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/LevelMappingEntry.cs,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- LevelMappingEntry.cs      17 Jan 2005 20:18:47 -0000      1.2
  +++ LevelMappingEntry.cs      31 Jan 2005 22:56:49 -0000      1.3
  @@ -40,6 +40,11 @@
                /// <summary>
                /// Default protected constructor
                /// </summary>
  +             /// <remarks>
  +             /// <para>
  +             /// Default protected constructor
  +             /// </para>
  +             /// </remarks>
                protected LevelMappingEntry() 
                {
                }
  @@ -51,6 +56,15 @@
                /// <summary>
                /// The level that is the key for this mapping 
                /// </summary>
  +             /// <value>
  +             /// The <see cref="Level"/> that is the key for this mapping 
  +             /// </value>
  +             /// <remarks>
  +             /// <para>
  +             /// Get or set the <see cref="Level"/> that is the key for this
  +             /// mapping subclass.
  +             /// </para>
  +             /// </remarks>
                public Level Level
                {
                        get { return m_level; }
  
  
  
  1.6       +6 -0      logging-log4net/src/Util/LogLog.cs
  
  Index: LogLog.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/LogLog.cs,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- LogLog.cs 17 Jan 2005 20:18:47 -0000      1.5
  +++ LogLog.cs 31 Jan 2005 22:56:49 -0000      1.6
  @@ -47,7 +47,9 @@
                /// Initializes a new instance of the <see cref="LogLog" /> 
class. 
                /// </summary>
                /// <remarks>
  +             /// <para>
                /// Uses a private access modifier to prevent instantiation of 
this class.
  +             /// </para>
                /// </remarks>
                private LogLog()
                {
  @@ -367,8 +369,10 @@
                /// </summary>
                /// <param name="message">The message to log.</param>
                /// <remarks>
  +             /// <para>
                /// Uses Console.Out for console output,
                /// and Trace for OutputDebugString output.
  +             /// </para>
                /// </remarks>
                private static void EmitOutLine(string message)
                {
  @@ -386,8 +390,10 @@
                /// </summary>
                /// <param name="message">The message to log.</param>
                /// <remarks>
  +             /// <para>
                /// Use Console.Error for console output,
                /// and Trace for OutputDebugString output.
  +             /// </para>
                /// </remarks>
                private static void EmitErrorLine(string message)
                {
  
  
  
  1.3       +24 -2     
logging-log4net/src/Util/LogicalThreadContextProperties.cs
  
  Index: LogicalThreadContextProperties.cs
  ===================================================================
  RCS file: 
/home/cvs/logging-log4net/src/Util/LogicalThreadContextProperties.cs,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- LogicalThreadContextProperties.cs 17 Jan 2005 20:18:47 -0000      1.2
  +++ LogicalThreadContextProperties.cs 31 Jan 2005 22:56:49 -0000      1.3
  @@ -41,8 +41,13 @@
                #region Public Instance Constructors
   
                /// <summary>
  -             /// Initializes a new instance of the <see 
cref="LogicalThreadContextProperties" /> class.
  +             /// Constructor
                /// </summary>
  +             /// <remarks>
  +             /// <para>
  +             /// Initializes a new instance of the <see 
cref="LogicalThreadContextProperties" /> class.
  +             /// </para>
  +             /// </remarks>
                internal LogicalThreadContextProperties()
                {
                }
  @@ -57,10 +62,16 @@
                /// <value>
                /// The value for the property with the specified key
                /// </value>
  +             /// <remarks>
  +             /// <para>
  +             /// Get or set the property value for the <paramref 
name="key"/> specified.
  +             /// </para>
  +             /// </remarks>
                override public object this[string key]
                {
                        get 
                        { 
  +                             // Don't create the dictionary if it does not 
already exist
                                PropertiesDictionary dictionary = 
GetProperties(false);
                                if (dictionary != null)
                                {
  @@ -70,6 +81,7 @@
                        }
                        set 
                        { 
  +                             // Force the dictionary to be created
                                GetProperties(true)[key] = value; 
                        }
                }
  @@ -82,6 +94,11 @@
                /// Remove a property
                /// </summary>
                /// <param name="key">the key for the entry to remove</param>
  +             /// <remarks>
  +             /// <para>
  +             /// Remove the value for the specified <paramref name="key"/> 
from the context.
  +             /// </para>
  +             /// </remarks>
                public void Remove(string key)
                {
                        PropertiesDictionary dictionary = GetProperties(false);
  @@ -92,8 +109,13 @@
                }
   
                /// <summary>
  -             /// Clear the global context properties
  +             /// Clear all the context properties
                /// </summary>
  +             /// <remarks>
  +             /// <para>
  +             /// Clear all the context properties
  +             /// </para>
  +             /// </remarks>
                public void Clear()
                {
                        PropertiesDictionary dictionary = GetProperties(false);
  
  
  
  1.9       +31 -3     logging-log4net/src/Util/NativeError.cs
  
  Index: NativeError.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/NativeError.cs,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- NativeError.cs    17 Jan 2005 20:18:47 -0000      1.8
  +++ NativeError.cs    31 Jan 2005 22:56:49 -0000      1.9
  @@ -33,6 +33,11 @@
        /// <summary>
        /// Represents a native error code and message.
        /// </summary>
  +     /// <remarks>
  +     /// <para>
  +     /// Represents a Win32 platform native error.
  +     /// </para>
  +     /// </remarks>
        /// <author>Nicko Cadell</author>
        /// <author>Gert Driesen</author>
        public sealed class NativeError 
  @@ -45,6 +50,12 @@
                /// </summary>
                /// <param name="number">The number of the native error.</param>
                /// <param name="message">The message of the native 
error.</param>
  +             /// <remarks>
  +             /// <para>
  +             /// Create an instance of the <see cref="NativeError" /> class 
with the specified 
  +             /// error number and message.
  +             /// </para>
  +             /// </remarks>
                private NativeError(int number, string message) 
                {
                        m_number = number;
  @@ -61,6 +72,11 @@
                /// <value>
                /// The number of the native error.
                /// </value>
  +             /// <remarks>
  +             /// <para>
  +             /// Gets the number of the native error.
  +             /// </para>
  +             /// </remarks>
                public int Number 
                {
                        get { return m_number; }
  @@ -72,6 +88,11 @@
                /// <value>
                /// The message of the native error.
                /// </value>
  +             /// <remarks>
  +             /// <para>
  +             /// </para>
  +             /// Gets the message of the native error.
  +             /// </remarks>
                public string Message 
                {
                        get { return m_message; }
  @@ -122,13 +143,15 @@
                /// Retrieves the message corresponding with a Win32 message 
identifier.
                /// </summary>
                /// <param name="messageId">Message identifier for the 
requested message.</param>
  +             /// <returns>
  +             /// The message corresponding with the specified message 
identifier.
  +             /// </returns>
                /// <remarks>
  +             /// <para>
                /// The message will be searched for in system message-table 
resource(s)
                /// using the native <c>FormatMessage</c> function.
  +             /// </para>
                /// </remarks>
  -             /// <returns>
  -             /// The message corresponding with the specified message 
identifier.
  -             /// </returns>
                public static string GetErrorMessage(int messageId) 
                {
                        // Win32 constants
  @@ -179,6 +202,11 @@
                /// Return error information string
                /// </summary>
                /// <returns>error information string</returns>
  +             /// <remarks>
  +             /// <para>
  +             /// Return error information string
  +             /// </para>
  +             /// </remarks>
                public override string ToString() 
                {
                        return string.Format(CultureInfo.InvariantCulture, 
"0x{0:x8}", this.Number) + (this.Message != null ? ": " + this.Message : "");
  
  
  
  1.4       +61 -0     logging-log4net/src/Util/NullDictionaryEnumerator.cs
  
  Index: NullDictionaryEnumerator.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/NullDictionaryEnumerator.cs,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- NullDictionaryEnumerator.cs       17 Jan 2005 20:18:47 -0000      1.3
  +++ NullDictionaryEnumerator.cs       31 Jan 2005 22:56:49 -0000      1.4
  @@ -24,6 +24,12 @@
        /// <summary>
        /// An always empty <see cref="IDictionaryEnumerator"/>.
        /// </summary>
  +     /// <remarks>
  +     /// <para>
  +     /// A singleton implementation of the <see 
cref="IDictionaryEnumerator"/> over a collection
  +     /// that is empty and not modifiable.
  +     /// </para>
  +     /// </remarks>
        /// <author>Nicko Cadell</author>
        /// <author>Gert Driesen</author>
        public sealed class NullDictionaryEnumerator : IDictionaryEnumerator
  @@ -34,7 +40,9 @@
                /// Initializes a new instance of the <see 
cref="NullDictionaryEnumerator" /> class. 
                /// </summary>
                /// <remarks>
  +             /// <para>
                /// Uses a private access modifier to enforce the singleton 
pattern.
  +             /// </para>
                /// </remarks>
                private NullDictionaryEnumerator()
                {
  @@ -48,6 +56,11 @@
                /// Gets the singleton instance of the <see 
cref="NullDictionaryEnumerator" />.
                /// </summary>
                /// <returns>The singleton instance of the <see 
cref="NullDictionaryEnumerator" />.</returns>
  +             /// <remarks>
  +             /// <para>
  +             /// Gets the singleton instance of the <see 
cref="NullDictionaryEnumerator" />.
  +             /// </para>
  +             /// </remarks>
                public static NullDictionaryEnumerator Instance
                {
                        get { return s_instance; }
  @@ -64,6 +77,15 @@
                /// Throws an <see cref="InvalidOperationException" /> because 
the 
                /// <see cref="NullDictionaryEnumerator" /> never has a current 
value.
                /// </remarks>
  +             /// <remarks>
  +             /// <para>
  +             /// As the enumerator is over an empty collection its <see 
cref="Current"/>
  +             /// value cannot be moved over a valid position, therefore <see 
cref="Current"/>
  +             /// will throw an <see cref="InvalidOperationException"/>.
  +             /// </para>
  +             /// </remarks>
  +             /// <exception cref="InvalidOperationException">The collection 
is empty and <see cref="Current"/> 
  +             /// cannot be positioned over a valid location.</exception>
                public object Current 
                {
                        get     { throw new InvalidOperationException(); }
  @@ -73,6 +95,13 @@
                /// Test if the enumerator can advance, if so advance.
                /// </summary>
                /// <returns><c>false</c> as the <see 
cref="NullDictionaryEnumerator" /> cannot advance.</returns>
  +             /// <remarks>
  +             /// <para>
  +             /// As the enumerator is over an empty collection its <see 
cref="Current"/>
  +             /// value cannot be moved over a valid position, therefore <see 
cref="MoveNext"/>
  +             /// will always return <c>false</c>.
  +             /// </para>
  +             /// </remarks>
                public bool MoveNext()
                {
                        return false;
  @@ -81,6 +110,11 @@
                /// <summary>
                /// Resets the enumerator back to the start.
                /// </summary>
  +             /// <remarks>
  +             /// <para>
  +             /// As the enumerator is over an empty collection <see 
cref="Reset"/> does nothing.
  +             /// </para>
  +             /// </remarks>
                public void Reset() 
                {
                }
  @@ -96,6 +130,15 @@
                /// Throws an exception because the <see 
cref="NullDictionaryEnumerator" />
                /// never has a current value.
                /// </remarks>
  +             /// <remarks>
  +             /// <para>
  +             /// As the enumerator is over an empty collection its <see 
cref="Current"/>
  +             /// value cannot be moved over a valid position, therefore <see 
cref="Key"/>
  +             /// will throw an <see cref="InvalidOperationException"/>.
  +             /// </para>
  +             /// </remarks>
  +             /// <exception cref="InvalidOperationException">The collection 
is empty and <see cref="Current"/> 
  +             /// cannot be positioned over a valid location.</exception>
                public object Key 
                {
                        get     { throw new InvalidOperationException(); }
  @@ -109,6 +152,15 @@
                /// Throws an <see cref="InvalidOperationException" /> because 
the 
                /// <see cref="NullDictionaryEnumerator" /> never has a current 
value.
                /// </remarks>
  +             /// <remarks>
  +             /// <para>
  +             /// As the enumerator is over an empty collection its <see 
cref="Current"/>
  +             /// value cannot be moved over a valid position, therefore <see 
cref="Value"/>
  +             /// will throw an <see cref="InvalidOperationException"/>.
  +             /// </para>
  +             /// </remarks>
  +             /// <exception cref="InvalidOperationException">The collection 
is empty and <see cref="Current"/> 
  +             /// cannot be positioned over a valid location.</exception>
                public object Value 
                {
                        get     { throw new InvalidOperationException(); }
  @@ -121,6 +173,15 @@
                /// Throws an <see cref="InvalidOperationException" /> because 
the 
                /// <see cref="NullDictionaryEnumerator" /> never has a current 
entry.
                /// </remarks>
  +             /// <remarks>
  +             /// <para>
  +             /// As the enumerator is over an empty collection its <see 
cref="Current"/>
  +             /// value cannot be moved over a valid position, therefore <see 
cref="Entry"/>
  +             /// will throw an <see cref="InvalidOperationException"/>.
  +             /// </para>
  +             /// </remarks>
  +             /// <exception cref="InvalidOperationException">The collection 
is empty and <see cref="Current"/> 
  +             /// cannot be positioned over a valid location.</exception>
                public DictionaryEntry Entry 
                {
                        get     { throw new InvalidOperationException(); }
  
  
  
  1.4       +34 -0     logging-log4net/src/Util/NullEnumerator.cs
  
  Index: NullEnumerator.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/NullEnumerator.cs,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- NullEnumerator.cs 17 Jan 2005 20:18:47 -0000      1.3
  +++ NullEnumerator.cs 31 Jan 2005 22:56:49 -0000      1.4
  @@ -24,6 +24,12 @@
        /// <summary>
        /// An always empty <see cref="IEnumerator"/>.
        /// </summary>
  +     /// <remarks>
  +     /// <para>
  +     /// A singleton implementation of the <see cref="IEnumerator"/> over a 
collection
  +     /// that is empty and not modifiable.
  +     /// </para>
  +     /// </remarks>
        /// <author>Nicko Cadell</author>
        /// <author>Gert Driesen</author>
        public sealed class NullEnumerator : IEnumerator
  @@ -34,7 +40,9 @@
                /// Initializes a new instance of the <see 
cref="NullEnumerator" /> class. 
                /// </summary>
                /// <remarks>
  +             /// <para>
                /// Uses a private access modifier to enforce the singleton 
pattern.
  +             /// </para>
                /// </remarks>
                private NullEnumerator()
                {
  @@ -48,6 +56,11 @@
                /// Get the singleton instance of the <see 
cref="NullEnumerator" />.
                /// </summary>
                /// <returns>The singleton instance of the <see 
cref="NullEnumerator" />.</returns>
  +             /// <remarks>
  +             /// <para>
  +             /// Gets the singleton instance of the <see 
cref="NullEnumerator" />.
  +             /// </para>
  +             /// </remarks>
                public static NullEnumerator Instance
                {
                        get { return s_instance; }
  @@ -64,6 +77,15 @@
                /// Throws an <see cref="InvalidOperationException" /> because 
the 
                /// <see cref="NullDictionaryEnumerator" /> never has a current 
value.
                /// </remarks>
  +             /// <remarks>
  +             /// <para>
  +             /// As the enumerator is over an empty collection its <see 
cref="Current"/>
  +             /// value cannot be moved over a valid position, therefore <see 
cref="Current"/>
  +             /// will throw an <see cref="InvalidOperationException"/>.
  +             /// </para>
  +             /// </remarks>
  +             /// <exception cref="InvalidOperationException">The collection 
is empty and <see cref="Current"/> 
  +             /// cannot be positioned over a valid location.</exception>
                public object Current 
                {
                        get     { throw new InvalidOperationException(); }
  @@ -73,6 +95,13 @@
                /// Test if the enumerator can advance, if so advance
                /// </summary>
                /// <returns><c>false</c> as the <see cref="NullEnumerator" /> 
cannot advance.</returns>
  +             /// <remarks>
  +             /// <para>
  +             /// As the enumerator is over an empty collection its <see 
cref="Current"/>
  +             /// value cannot be moved over a valid position, therefore <see 
cref="MoveNext"/>
  +             /// will always return <c>false</c>.
  +             /// </para>
  +             /// </remarks>
                public bool MoveNext()
                {
                        return false;
  @@ -81,6 +110,11 @@
                /// <summary>
                /// Resets the enumerator back to the start.
                /// </summary>
  +             /// <remarks>
  +             /// <para>
  +             /// As the enumerator is over an empty collection <see 
cref="Reset"/> does nothing.
  +             /// </para>
  +             /// </remarks>
                public void Reset() 
                {
                }
  
  
  
  1.3       +23 -1     logging-log4net/src/Util/NullSecurityContext.cs
  
  Index: NullSecurityContext.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/NullSecurityContext.cs,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- NullSecurityContext.cs    17 Jan 2005 20:18:47 -0000      1.2
  +++ NullSecurityContext.cs    31 Jan 2005 22:56:49 -0000      1.3
  @@ -25,17 +25,34 @@
        /// <summary>
        /// A SecurityContext used when a SecurityContext is not required
        /// </summary>
  +     /// <remarks>
  +     /// <para>
  +     /// The <see cref="NullSecurityContext"/> is a no-op implementation of 
the
  +     /// <see cref="SecurityContext"/> base class. It is used where a <see 
cref="SecurityContext"/>
  +     /// is required but one has not been provided.
  +     /// </para>
  +     /// </remarks>
        /// <author>Nicko Cadell</author>
        public sealed class NullSecurityContext : SecurityContext
        {
                /// <summary>
  -             /// Singleton instance of NullSecurityContext
  +             /// Singleton instance of <see cref="NullSecurityContext"/>
                /// </summary>
  +             /// <remarks>
  +             /// <para>
  +             /// Singleton instance of <see cref="NullSecurityContext"/>
  +             /// </para>
  +             /// </remarks>
                public static readonly NullSecurityContext Instance = new 
NullSecurityContext();
   
                /// <summary>
                /// Private constructor
                /// </summary>
  +             /// <remarks>
  +             /// <para>
  +             /// Private constructor for singleton pattern.
  +             /// </para>
  +             /// </remarks>
                private NullSecurityContext()
                {
                }
  @@ -45,6 +62,11 @@
                /// </summary>
                /// <param name="state">State supplied by the caller</param>
                /// <returns><c>null</c></returns>
  +             /// <remarks>
  +             /// <para>
  +             /// No impersonation is done and <c>null</c> is always returned.
  +             /// </para>
  +             /// </remarks>
                public override IDisposable Impersonate(object state)
                {
                        return null;
  
  
  
  1.6       +40 -9     logging-log4net/src/Util/OnlyOnceErrorHandler.cs
  
  Index: OnlyOnceErrorHandler.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/OnlyOnceErrorHandler.cs,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- OnlyOnceErrorHandler.cs   17 Jan 2005 20:18:47 -0000      1.5
  +++ OnlyOnceErrorHandler.cs   31 Jan 2005 22:56:49 -0000      1.6
  @@ -43,18 +43,28 @@
                #region Public Instance Constructors
   
                /// <summary>
  -             /// Initializes a new instance of the <see 
cref="OnlyOnceErrorHandler" /> class.
  +             /// Default Constructor
                /// </summary>
  +             /// <remarks>
  +             /// <para>
  +             /// Initializes a new instance of the <see 
cref="OnlyOnceErrorHandler" /> class.
  +             /// </para>
  +             /// </remarks>
                public OnlyOnceErrorHandler()
                {
                        m_prefix = "";
                }
   
                /// <summary>
  -             /// Initializes a new instance of the <see 
cref="OnlyOnceErrorHandler" /> class
  -             /// with the specified prefix.
  +             /// Constructor
                /// </summary>
                /// <param name="prefix">The prefix to use for each 
message.</param>
  +             /// <remarks>
  +             /// <para>
  +             /// Initializes a new instance of the <see 
cref="OnlyOnceErrorHandler" /> class
  +             /// with the specified prefix.
  +             /// </para>
  +             /// </remarks>
                public OnlyOnceErrorHandler(string prefix)
                {
                        m_prefix = prefix;
  @@ -65,12 +75,17 @@
                #region Implementation of IErrorHandler
   
                /// <summary>
  -             /// Prints the message and the stack trace of the exception on 
the standard
  -             /// error output stream.
  +             /// Log an Error
                /// </summary>
                /// <param name="message">The error message.</param>
                /// <param name="e">The exception.</param>
                /// <param name="errorCode">The internal error code.</param>
  +             /// <remarks>
  +             /// <para>
  +             /// Prints the message and the stack trace of the exception on 
the standard
  +             /// error output stream.
  +             /// </para>
  +             /// </remarks>
                public void Error(string message, Exception e, ErrorCode 
errorCode) 
                { 
                        if (IsEnabled) 
  @@ -80,11 +95,16 @@
                }
   
                /// <summary>
  -             /// Prints the message and the stack trace of the exception on 
the standard
  -             /// error output stream.
  +             /// Log an Error
                /// </summary>
                /// <param name="message">The error message.</param>
                /// <param name="e">The exception.</param>
  +             /// <remarks>
  +             /// <para>
  +             /// Prints the message and the stack trace of the exception on 
the standard
  +             /// error output stream.
  +             /// </para>
  +             /// </remarks>
                public void Error(string message, Exception e) 
                { 
                        if (IsEnabled) 
  @@ -94,10 +114,15 @@
                }
   
                /// <summary>
  -             /// Print a the error message passed as parameter on the 
standard
  -             /// error output stream.
  +             /// Log an error
                /// </summary>
                /// <param name="message">The error message.</param>
  +             /// <remarks>
  +             /// <para>
  +             /// Print a the error message passed as parameter on the 
standard
  +             /// error output stream.
  +             /// </para>
  +             /// </remarks>
                public void Error(string message) 
                {
                        if (IsEnabled) 
  @@ -111,6 +136,12 @@
                /// <summary>
                /// Is error logging enabled
                /// </summary>
  +             /// <remarks>
  +             /// <para>
  +             /// Is error logging enabled. Logging is only enabled for the
  +             /// first error delivered to the <see 
cref="OnlyOnceErrorHandler"/>.
  +             /// </para>
  +             /// </remarks>
                private bool IsEnabled
                {
                        get
  
  
  
  1.11      +37 -8     logging-log4net/src/Util/OptionConverter.cs
  
  Index: OptionConverter.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/OptionConverter.cs,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- OptionConverter.cs        17 Jan 2005 20:18:47 -0000      1.10
  +++ OptionConverter.cs        31 Jan 2005 22:56:49 -0000      1.11
  @@ -30,6 +30,11 @@
        /// <summary>
        /// A convenience class to convert property values to specific types.
        /// </summary>
  +     /// <remarks>
  +     /// <para>
  +     /// Utility functions for converting types and parsing values.
  +     /// </para>
  +     /// </remarks>
        /// <author>Nicko Cadell</author>
        /// <author>Gert Driesen</author>
        public sealed class OptionConverter
  @@ -40,7 +45,9 @@
                /// Initializes a new instance of the <see 
cref="OptionConverter" /> class. 
                /// </summary>
                /// <remarks>
  +             /// <para>
                /// Uses a private access modifier to prevent instantiation of 
this class.
  +             /// </para>
                /// </remarks>
                private OptionConverter()
                {
  @@ -128,12 +135,14 @@
                /// </summary>
                /// <param name="argValue">String to convert.</param>
                /// <param name="defaultValue">The default value.</param>
  +             /// <returns>The <see cref="bool" /> value of <paramref 
name="argValue" />.</returns>
                /// <remarks>
  +             /// <para>
                /// If <paramref name="argValue"/> is "true", then <c>true</c> 
is returned. 
                /// If <paramref name="argValue"/> is "false", then 
<c>false</c> is returned. 
                /// Otherwise, <paramref name="defaultValue"/> is returned.
  +             /// </para>
                /// </remarks>
  -             /// <returns>The <see cref="bool" /> value of <paramref 
name="argValue" />.</returns>
                public static bool ToBoolean(string argValue, bool 
defaultValue) 
                {
                        if (argValue != null && argValue.Length > 0)
  @@ -155,11 +164,13 @@
   //           /// </summary>
   //           /// <param name="argValue">String to convert.</param>
   //           /// <param name="defaultValue">The default value.</param>
  +//           /// <returns>The <see cref="int" /> value of <paramref 
name="argValue" />.</returns>
   //           /// <remarks>
  +//           /// <para>
   //           /// <paramref name="defaultValue"/> is returned when <paramref 
name="argValue"/>
   //           /// cannot be converted to a <see cref="int" /> value.
  +//           /// </para>
   //           /// </remarks>
  -//           /// <returns>The <see cref="int" /> value of <paramref 
name="argValue" />.</returns>
   //           public static int ToInt(string argValue, int defaultValue) 
   //           {
   //                   if (argValue != null) 
  @@ -182,6 +193,7 @@
                /// </summary>
                /// <param name="argValue">String to parse.</param>
                /// <param name="defaultValue">The default value.</param>
  +             /// <returns>The <see cref="long" /> value of <paramref 
name="argValue" />.</returns>
                /// <remarks>
                /// <para>
                /// Parses a file size of the form: number[KB|MB|GB] into a
  @@ -192,7 +204,6 @@
                /// cannot be converted to a <see cref="long" /> value.
                /// </para>
                /// </remarks>
  -             /// <returns>The <see cref="long" /> value of <paramref 
name="argValue" />.</returns>
                public static long ToFileSize(string argValue, long 
defaultValue) 
                {
                        if (argValue == null)
  @@ -245,6 +256,12 @@
                /// The object converted from a string or <c>null</c> when the 
                /// conversion failed.
                /// </returns>
  +             /// <remarks>
  +             /// <para>
  +             /// Converts a string to an object. Uses the converter registry 
to try
  +             /// to convert the string value into the specified target type.
  +             /// </para>
  +             /// </remarks>
                public static object ConvertStringTo(Type target, string txt)
                {
                        if (target == null)
  @@ -314,6 +331,11 @@
                /// <param name="sourceType">The type to convert from.</param>
                /// <param name="targetType">The type to convert to.</param>
                /// <returns><c>true</c> if there is a conversion from the 
source type to the target type.</returns>
  +             /// <remarks>
  +             /// Checks if there is an appropriate type conversion from the 
source type to the target type.
  +             /// <para>
  +             /// </para>
  +             /// </remarks>
                public static bool CanConvertTypeTo(Type sourceType, Type 
targetType)
                {
                        if (sourceType == null || targetType == null)
  @@ -356,6 +378,11 @@
                /// <param name="sourceInstance">The object to convert to the 
target type.</param>
                /// <param name="targetType">The type to convert to.</param>
                /// <returns>The converted object.</returns>
  +             /// <remarks>
  +             /// <para>
  +             /// Converts an object to the target type.
  +             /// </para>
  +             /// </remarks>
                public static object ConvertTypeTo(object sourceInstance, Type 
targetType)
                {
                        Type sourceType = sourceInstance.GetType();
  @@ -427,15 +454,17 @@
                /// <param name="className">The fully qualified class name of 
the object to instantiate.</param>
                /// <param name="superClass">The class to which the new object 
should belong.</param>
                /// <param name="defaultValue">The object to return in case of 
non-fulfillment.</param>
  +             /// <returns>
  +             /// An instance of the <paramref name="className"/> or 
<paramref name="defaultValue"/>
  +             /// if the object could not be instantiated.
  +             /// </returns>
                /// <remarks>
  +             /// <para>
                /// Checks that the <paramref name="className"/> is a subclass 
of
                /// <paramref name="superClass"/>. If that test fails or the 
object could
                /// not be instantiated, then <paramref name="defaultValue"/> 
is returned.
  +             /// </para>
                /// </remarks>
  -             /// <returns>
  -             /// An instance of the <paramref name="className"/> or 
<paramref name="defaultValue"/>
  -             /// if the object could not be instantiated.
  -             /// </returns>
                public static object InstantiateByClassName(string className, 
Type superClass, object defaultValue) 
                {
                        if (className != null) 
  @@ -464,6 +493,7 @@
                /// </summary>
                /// <param name="value">The string on which variable 
substitution is performed.</param>
                /// <param name="props">The dictionary to use to lookup 
variables.</param>
  +             /// <returns>The result of the substitutions.</returns>
                /// <remarks>
                /// <para>
                /// The variable substitution delimiters are <b>${</b> and 
<b>}</b>.
  @@ -500,7 +530,6 @@
                /// delimiter "${" which is not balanced by a stop delimiter 
"}". 
                /// </para>
                /// </remarks>
  -             /// <returns>The result of the substitutions.</returns>
                public static string SubstituteVariables(string value, 
System.Collections.IDictionary props) 
                {
                        StringBuilder buf = new StringBuilder();
  
  
  
  1.7       +57 -6     logging-log4net/src/Util/PatternConverter.cs
  
  Index: PatternConverter.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/PatternConverter.cs,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- PatternConverter.cs       17 Jan 2005 20:18:47 -0000      1.6
  +++ PatternConverter.cs       31 Jan 2005 22:56:49 -0000      1.7
  @@ -32,9 +32,11 @@
        /// derived classes need.
        /// </summary>
        /// <remarks>
  +     /// <para>
        /// Conversion specifiers in a conversion patterns are parsed to
        /// individual PatternConverters. Each of which is responsible for
        /// converting a logging event in a converter specific manner.
  +     /// </para>
        /// </remarks>
        /// <author>Nicko Cadell</author>
        /// <author>Gert Driesen</author>
  @@ -43,8 +45,13 @@
                #region Protected Instance Constructors
   
                /// <summary>
  -             /// Initializes a new instance of the <see 
cref="PatternConverter" /> class.
  +             /// Protected constructor
                /// </summary>
  +             /// <remarks>
  +             /// <para>
  +             /// Initializes a new instance of the <see 
cref="PatternConverter" /> class.
  +             /// </para>
  +             /// </remarks>
                protected PatternConverter() 
                {  
                }
  @@ -54,16 +61,32 @@
                #region Public Instance Properties
   
                /// <summary>
  -             /// the next patter converter in the chain
  +             /// Get the next pattern converter in the chain
                /// </summary>
  +             /// <value>
  +             /// the next pattern converter in the chain
  +             /// </value>
  +             /// <remarks>
  +             /// <para>
  +             /// Get the next pattern converter in the chain
  +             /// </para>
  +             /// </remarks>
                public virtual PatternConverter Next
                {
                        get { return m_next; }
                }
   
                /// <summary>
  -             /// The formatting info for this converter
  +             /// Gets or sets the formatting info for this converter
                /// </summary>
  +             /// <value>
  +             /// The formatting info for this converter
  +             /// </value>
  +             /// <remarks>
  +             /// <para>
  +             /// Gets or sets the formatting info for this converter
  +             /// </para>
  +             /// </remarks>
                public virtual FormattingInfo FormattingInfo
                {
                        get { return new FormattingInfo(m_min, m_max, 
m_leftAlign); }
  @@ -76,8 +99,16 @@
                }
   
                /// <summary>
  +             /// Gets or sets the option value for this converter
  +             /// </summary>
  +             /// <summary>
                /// The option for this converter
                /// </summary>
  +             /// <remarks>
  +             /// <para>
  +             /// Gets or sets the option value for this converter
  +             /// </para>
  +             /// </remarks>
                public virtual string Option
                {
                        get { return m_option; }
  @@ -89,11 +120,16 @@
                #region Protected Abstract Methods
   
                /// <summary>
  -             /// Derived pattern converters must override this method in 
order to
  -             /// convert conversion specifiers in the correct way.
  +             /// Evaluate this pattern converter and write the output to a 
writer.
                /// </summary>
                /// <param name="writer"><see cref="TextWriter" /> that will 
receive the formatted result.</param>
                /// <param name="state">The state object on which the pattern 
converter should be executed.</param>
  +             /// <remarks>
  +             /// <para>
  +             /// Derived pattern converters must override this method in 
order to
  +             /// convert conversion specifiers in the appropriate way.
  +             /// </para>
  +             /// </remarks>
                abstract protected void Convert(TextWriter writer, object 
state);
   
                #endregion Protected Abstract Methods
  @@ -106,8 +142,10 @@
                /// <param name="patternConverter">the pattern converter that 
should follow this converter in the chain</param>
                /// <returns>the next converter</returns>
                /// <remarks>
  +             /// <para>
                /// The PatternConverter can merge with its neighbor during 
this method (or a sub class).
                /// Therefore the return value may or may not be the value of 
the argument passed in.
  +             /// </para>
                /// </remarks>
                public virtual PatternConverter SetNext(PatternConverter 
patternConverter)
                {
  @@ -116,10 +154,18 @@
                }
   
                /// <summary>
  -             /// A template method for formatting in a converter specific 
way.
  +             /// Write the pattern converter to the writer with appropriate 
formatting
                /// </summary>
                /// <param name="writer"><see cref="TextWriter" /> that will 
receive the formatted result.</param>
                /// <param name="state">The state object on which the pattern 
converter should be executed.</param>
  +             /// <remarks>
  +             /// <para>
  +             /// This method calls <see cref="Convert"/> to allow the 
subclass to perform
  +             /// appropriate conversion of the pattern converter. If 
formatting options have
  +             /// been specified via the <see cref="FormattingInfo"/> then 
this method will
  +             /// apply those formattings before writing the output.
  +             /// </para>
  +             /// </remarks>
                virtual public void Format(TextWriter writer, object state) 
                {
                        if (m_min < 0 && m_max == int.MaxValue)
  @@ -169,6 +215,11 @@
                /// </summary>
                /// <param name="writer"><see cref="TextWriter" /> to which the 
spaces will be appended.</param>
                /// <param name="length">The number of spaces to be 
padded.</param>
  +             /// <remarks>
  +             /// <para>
  +             /// Fast space padding method.
  +             /// </para>
  +             /// </remarks>
                protected static void SpacePad(TextWriter writer, int length) 
                {
                        while(length >= 32) 
  
  
  
  1.8       +45 -7     logging-log4net/src/Util/PatternParser.cs
  
  Index: PatternParser.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/PatternParser.cs,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- PatternParser.cs  17 Jan 2005 20:18:47 -0000      1.7
  +++ PatternParser.cs  31 Jan 2005 22:56:49 -0000      1.8
  @@ -35,8 +35,10 @@
        /// is delegated to the PatternParser class.
        /// </summary>
        /// <remarks>
  +     /// <para>
        /// The <c>PatternParser</c> processes a pattern string and
        /// returns a chain of <see cref="PatternConverter"/> objects.
  +     /// </para>
        /// </remarks>
        /// <author>Nicko Cadell</author>
        /// <author>Gert Driesen</author>
  @@ -45,10 +47,15 @@
                #region Public Instance Constructors
   
                /// <summary>
  -             /// Initializes a new instance of the <see cref="PatternParser" 
/> class 
  -             /// with the specified pattern string.
  +             /// Constructor
                /// </summary>
                /// <param name="pattern">The pattern to parse.</param>
  +             /// <remarks>
  +             /// <para>
  +             /// Initializes a new instance of the <see cref="PatternParser" 
/> class 
  +             /// with the specified pattern string.
  +             /// </para>
  +             /// </remarks>
                public PatternParser(string pattern) 
                {
                        m_pattern = pattern;
  @@ -62,6 +69,11 @@
                /// Parses the pattern into a chain of pattern converters.
                /// </summary>
                /// <returns>The head of a chain of pattern 
converters.</returns>
  +             /// <remarks>
  +             /// <para>
  +             /// Parses the pattern into a chain of pattern converters.
  +             /// </para>
  +             /// </remarks>
                public PatternConverter Parse()
                {
                        string[] converterNamesCache = BuildCache();
  @@ -76,8 +88,16 @@
                #region Public Instance Properties
   
                /// <summary>
  -             /// The converter registry used by this parser
  +             /// Get the converter registry used by this parser
                /// </summary>
  +             /// <value>
  +             /// The converter registry used by this parser
  +             /// </value>
  +             /// <remarks>
  +             /// <para>
  +             /// Get the converter registry used by this parser
  +             /// </para>
  +             /// </remarks>
                public Hashtable PatternConverters
                {
                        get { return m_patternConverters; }
  @@ -91,6 +111,11 @@
                /// Build the unified cache of converters from the static and 
instance maps
                /// </summary>
                /// <returns>the list of all the converter names</returns>
  +             /// <remarks>
  +             /// <para>
  +             /// Build the unified cache of converters from the static and 
instance maps
  +             /// </para>
  +             /// </remarks>
                private string[] BuildCache()
                {
                        string[] converterNamesCache = new 
string[m_patternConverters.Keys.Count];
  @@ -102,10 +127,17 @@
                        return converterNamesCache;
                }
   
  +             #region StringLengthComparer
  +
                /// <summary>
  -             /// IComparer that orders strings by string length.
  -             /// The longest strings are placed first
  +             /// Sort strings by length
                /// </summary>
  +             /// <remarks>
  +             /// <para>
  +             /// <see cref="IComparer" /> that orders strings by string 
length.
  +             /// The longest strings are placed first
  +             /// </para>
  +             /// </remarks>
                private sealed class StringLengthComparer : IComparer
                {
                        public static readonly StringLengthComparer Instance = 
new StringLengthComparer();
  @@ -140,13 +172,17 @@
                        #endregion
                }
   
  +             #endregion // StringLengthComparer
  +
                /// <summary>
                /// Internal method to parse the specified pattern to find 
specified matches
                /// </summary>
                /// <param name="pattern">the pattern to parse</param>
                /// <param name="matches">the converter names to match in the 
pattern</param>
                /// <remarks>
  +             /// <para>
                /// The matches param must be sorted such that longer strings 
come before shorter ones.
  +             /// </para>
                /// </remarks>
                private void ParseInternal(string pattern, string[] matches)
                {
  @@ -369,10 +405,12 @@
                private string m_pattern;
   
                /// <summary>
  -             /// Internal map of converter identifiers to converter types.
  +             /// Internal map of converter identifiers to converter types
                /// </summary>
                /// <remarks>
  -             /// This map overrides the static s_globalRulesRegistry map
  +             /// <para>
  +             /// This map overrides the static s_globalRulesRegistry map.
  +             /// </para>
                /// </remarks>
                private Hashtable m_patternConverters = new Hashtable();
   
  
  
  
  1.12      +66 -5     logging-log4net/src/Util/PatternString.cs
  
  Index: PatternString.cs
  ===================================================================
  RCS file: /home/cvs/logging-log4net/src/Util/PatternString.cs,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- PatternString.cs  31 Jan 2005 02:32:10 -0000      1.11
  +++ PatternString.cs  31 Jan 2005 22:56:49 -0000      1.12
  @@ -306,8 +306,13 @@
                #region Constructors
   
                /// <summary>
  -             /// Constructs a PatternString
  +             /// Default constructor
                /// </summary>
  +             /// <remarks>
  +             /// <para>
  +             /// Initialize a new instance of <see cref="PatternString"/>
  +             /// </para>
  +             /// </remarks>
                public PatternString()
                {
                }
  @@ -316,6 +321,11 @@
                /// Constructs a PatternString
                /// </summary>
                /// <param name="pattern">The pattern to use with this 
PatternString</param>
  +             /// <remarks>
  +             /// <para>
  +             /// Initialize a new instance of <see cref="PatternString"/> 
with the pattern specified.
  +             /// </para>
  +             /// </remarks>
                public PatternString(string pattern)
                {
                        m_pattern = pattern;
  @@ -325,10 +335,18 @@
                #endregion
     
                /// <summary>
  +             /// Gets or sets the pattern formatting string
  +             /// </summary>
  +             /// <value>
  +             /// The pattern formatting string
  +             /// </value>
  +             /// <remarks>
  +             /// <para>
                /// The <b>ConversionPattern</b> option. This is the string 
which
                /// controls formatting and consists of a mix of literal 
content and
                /// conversion specifiers.
  -             /// </summary>
  +             /// </para>
  +             /// </remarks>
                public string ConversionPattern
                {
                        get { return m_pattern; }
  @@ -361,12 +379,17 @@
                #endregion
   
                /// <summary>
  +             /// Create the <see cref="PatternParser"/> used to parse the 
pattern
  +             /// </summary>
  +             /// <param name="pattern">the pattern to parse</param>
  +             /// <returns>The <see cref="PatternParser"/></returns>
  +             /// <remarks>
  +             /// <para>
                /// Returns PatternParser used to parse the conversion string. 
Subclasses
                /// may override this to return a subclass of PatternParser 
which recognize
                /// custom conversion characters.
  -             /// </summary>
  -             /// <param name="pattern">the pattern to parse</param>
  -             /// <returns></returns>
  +             /// </para>
  +             /// </remarks>
                private PatternParser CreatePatternParser(string pattern) 
                {
                        PatternParser patternParser = new 
PatternParser(pattern);
  @@ -389,6 +412,11 @@
                /// Produces a formatted string as specified by the conversion 
pattern.
                /// </summary>
                /// <param name="writer">The TextWriter to write the formatted 
event to</param>
  +             /// <remarks>
  +             /// <para>
  +             /// Format the pattern to the <paramref name="writer"/>.
  +             /// </para>
  +             /// </remarks>
                public void Format(TextWriter writer) 
                {
                        if (writer == null)
  @@ -410,6 +438,11 @@
                /// Format the pattern as a string
                /// </summary>
                /// <returns>the pattern formatted as a string</returns>
  +             /// <remarks>
  +             /// <para>
  +             /// Format the pattern to a string.
  +             /// </para>
  +             /// </remarks>
                public string Format() 
                {
                        StringWriter writer = new 
StringWriter(System.Globalization.CultureInfo.InvariantCulture);
  @@ -422,8 +455,10 @@
                /// </summary>
                /// <param name="converterInfo">the converter info</param>
                /// <remarks>
  +             /// <para>
                /// This version of the method is used by the configurator.
                /// Programmatic users should use the alternative <see 
cref="AddConverter(string,Type)"/> method.
  +             /// </para>
                /// </remarks>
                public void AddConverter(ConverterInfo converterInfo)
                {
  @@ -435,6 +470,11 @@
                /// </summary>
                /// <param name="name">the name of the conversion pattern for 
this converter</param>
                /// <param name="type">the type of the converter</param>
  +             /// <remarks>
  +             /// <para>
  +             /// Add a converter to this PatternString
  +             /// </para>
  +             /// </remarks>
                public void AddConverter(string name, Type type)
                {
                        if (name == null) throw new 
ArgumentNullException("name");
  @@ -450,6 +490,11 @@
                /// <summary>
                /// Wrapper class used to map converter names to converter types
                /// </summary>
  +             /// <remarks>
  +             /// <para>
  +             /// Wrapper class used to map converter names to converter types
  +             /// </para>
  +             /// </remarks>
                public sealed class ConverterInfo
                {
                        private string m_name;
  @@ -465,6 +510,14 @@
                        /// <summary>
                        /// Gets or sets the name of the conversion pattern
                        /// </summary>
  +                     /// <value>
  +                     /// The name of the conversion pattern
  +                     /// </value>
  +                     /// <remarks>
  +                     /// <para>
  +                     /// Gets or sets the name of the conversion pattern
  +                     /// </para>
  +                     /// </remarks>
                        public string Name
                        {
                                get { return m_name; }
  @@ -474,6 +527,14 @@
                        /// <summary>
                        /// Gets or sets the type of the converter
                        /// </summary>
  +                     /// <value>
  +                     /// The type of the converter
  +                     /// </value>
  +                     /// <remarks>
  +                     /// <para>
  +                     /// Gets or sets the type of the converter
  +                     /// </para>
  +                     /// </remarks>
                        public Type Type
                        {
                                get { return m_type; }
  
  
  

Reply via email to