You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-dev@logging.apache.org by ni...@apache.org on 2005/01/31 23:56:49 UTC

cvs commit: logging-log4net/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

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; }