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 2004/12/19 20:22:54 UTC
cvs commit: logging-log4net/src/Core LevelCollection.cs
nicko 2004/12/19 11:22:54
Modified: src/Core LevelCollection.cs
Log:
Updates suggested by FxCop.
Minor naming changes to internal types.
Perf improvements to type check + type cast code.
Revision Changes Path
1.9 +27 -221 logging-log4net/src/Core/LevelCollection.cs
Index: LevelCollection.cs
===================================================================
RCS file: /home/cvs/logging-log4net/src/Core/LevelCollection.cs,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- LevelCollection.cs 13 Dec 2004 01:42:50 -0000 1.8
+++ LevelCollection.cs 19 Dec 2004 19:22:54 -0000 1.9
@@ -25,12 +25,10 @@
/// A strongly-typed collection of <see cref="Level"/> objects.
/// </summary>
/// <author>Nicko Cadell</author>
-#if !NETCF
- [Serializable]
-#endif
public class LevelCollection : ICollection, IList, IEnumerable, ICloneable
{
#region Interfaces
+
/// <summary>
/// Supports type-safe iteration over a <see cref="LevelCollection"/>.
/// </summary>
@@ -58,6 +56,7 @@
/// </summary>
void Reset();
}
+
#endregion
private const int DEFAULT_CAPACITY = 16;
@@ -65,29 +64,12 @@
#region Implementation (data)
private Level[] m_array;
-
private int m_count = 0;
-
-#if !NETCF
- [NonSerialized]
-#endif
private int m_version = 0;
+
#endregion
#region Static Wrappers
- /// <summary>
- /// Creates a synchronized (thread-safe) wrapper for a <c>LevelCollection</c> instance.
- /// </summary>
- /// <param name="list">list to create a synchronized wrapper arround</param>
- /// <returns>
- /// A <c>LevelCollection</c> wrapper that is synchronized (thread-safe).
- /// </returns>
- public static LevelCollection Synchronized(LevelCollection list)
- {
- if(list==null) throw new ArgumentNullException("list");
-
- return new SyncLevelCollection(list);
- }
/// <summary>
/// Creates a read-only wrapper for a <c>LevelCollection</c> instance.
@@ -102,9 +84,11 @@
return new ReadOnlyLevelCollection(list);
}
+
#endregion
- #region Construction
+ #region Constructors
+
/// <summary>
/// Initializes a new instance of the <c>LevelCollection</c> class
/// that is empty and has the default initial capacity.
@@ -163,7 +147,7 @@
/// Type visible only to our subclasses
/// Used to access protected constructor
/// </summary>
- protected enum Tag
+ protected internal enum Tag
{
/// <summary>
/// A value
@@ -175,13 +159,14 @@
/// Allow subclasses to avoid our default constructors
/// </summary>
/// <param name="tag"></param>
- protected LevelCollection(Tag tag)
+ protected internal LevelCollection(Tag tag)
{
m_array = null;
}
#endregion
#region Operations (type-safe ICollection)
+
/// <summary>
/// Gets the number of elements actually contained in the <c>LevelCollection</c>.
/// </summary>
@@ -434,6 +419,7 @@
{
get { return false; }
}
+
#endregion
#region Operations (type-safe IEnumerable)
@@ -446,6 +432,7 @@
{
return new Enumerator(this);
}
+
#endregion
#region Public helpers (just to mimic some nice features of ArrayList)
@@ -539,7 +526,6 @@
return m_count;
}
-
/// <summary>
/// Sets the capacity to the actual number of elements.
@@ -649,6 +635,7 @@
#endregion
#region Nested enumerator class
+
/// <summary>
/// Supports simple iteration over a <see cref="LevelCollection"/>.
/// </summary>
@@ -656,7 +643,7 @@
{
#region Implementation (data)
- private LevelCollection m_collection;
+ private readonly LevelCollection m_collection;
private int m_index;
private int m_version;
@@ -705,7 +692,7 @@
}
++m_index;
- return (m_index < m_collection.Count) ? true : false;
+ return (m_index < m_collection.Count);
}
/// <summary>
@@ -722,7 +709,7 @@
object IEnumerator.Current
{
- get { return (object)(this.Current); }
+ get { return this.Current; }
}
#endregion
@@ -730,214 +717,27 @@
#endregion
- #region Nested Synchronized Wrapper class
+ #region Nested Read Only Wrapper class
- private sealed class SyncLevelCollection : LevelCollection
+ private sealed class ReadOnlyLevelCollection : LevelCollection
{
#region Implementation (data)
- private LevelCollection m_collection;
- private object m_root;
- #endregion
-
- #region Construction
- internal SyncLevelCollection(LevelCollection list) : base(Tag.Default)
- {
- m_root = list.SyncRoot;
- m_collection = list;
- }
- #endregion
-
- #region Type-safe ICollection
-
- public override void CopyTo(Level[] array)
- {
- lock(this.m_root)
- {
- m_collection.CopyTo(array);
- }
- }
-
- public override void CopyTo(Level[] array, int start)
- {
- lock(this.m_root)
- {
- m_collection.CopyTo(array,start);
- }
- }
- public override int Count
- {
- get
- {
- lock(this.m_root)
- {
- return m_collection.Count;
- }
- }
- }
-
- public override bool IsSynchronized
- {
- get { return true; }
- }
-
- public override object SyncRoot
- {
- get { return this.m_root; }
- }
-
- #endregion
-
- #region Type-safe IList
-
- public override Level this[int i]
- {
- get
- {
- lock(this.m_root)
- {
- return m_collection[i];
- }
- }
- set
- {
- lock(this.m_root)
- {
- m_collection[i] = value;
- }
- }
- }
-
- public override int Add(Level x)
- {
- lock(this.m_root)
- {
- return m_collection.Add(x);
- }
- }
-
- public override void Clear()
- {
- lock(this.m_root)
- {
- m_collection.Clear();
- }
- }
-
- public override bool Contains(Level x)
- {
- lock(this.m_root)
- {
- return m_collection.Contains(x);
- }
- }
-
- public override int IndexOf(Level x)
- {
- lock(this.m_root)
- {
- return m_collection.IndexOf(x);
- }
- }
-
- public override void Insert(int pos, Level x)
- {
- lock(this.m_root)
- {
- m_collection.Insert(pos,x);
- }
- }
-
- public override void Remove(Level x)
- {
- lock(this.m_root)
- {
- m_collection.Remove(x);
- }
- }
-
- public override void RemoveAt(int pos)
- {
- lock(this.m_root)
- {
- m_collection.RemoveAt(pos);
- }
- }
-
- public override bool IsFixedSize
- {
- get { return m_collection.IsFixedSize; }
- }
- public override bool IsReadOnly
- {
- get { return m_collection.IsReadOnly; }
- }
- #endregion
+ private readonly LevelCollection m_collection;
- #region Type-safe IEnumerable
- public override ILevelCollectionEnumerator GetEnumerator()
- {
- lock(m_root)
- {
- return m_collection.GetEnumerator();
- }
- }
- #endregion
-
- #region Public Helpers
- // (just to mimic some nice features of ArrayList)
- public override int Capacity
- {
- get
- {
- lock(this.m_root)
- {
- return m_collection.Capacity;
- }
- }
- set
- {
- lock(this.m_root)
- {
- m_collection.Capacity = value;
- }
- }
- }
-
- public override int AddRange(LevelCollection x)
- {
- lock(this.m_root)
- {
- return m_collection.AddRange(x);
- }
- }
-
- public override int AddRange(Level[] x)
- {
- lock(this.m_root)
- {
- return m_collection.AddRange(x);
- }
- }
- #endregion
- }
- #endregion
-
- #region Nested Read Only Wrapper class
- private sealed class ReadOnlyLevelCollection : LevelCollection
- {
- #region Implementation (data)
- private LevelCollection m_collection;
#endregion
#region Construction
+
internal ReadOnlyLevelCollection(LevelCollection list) : base(Tag.Default)
{
m_collection = list;
}
+
#endregion
#region Type-safe ICollection
+
public override void CopyTo(Level[] array)
{
m_collection.CopyTo(array);
@@ -1016,16 +816,20 @@
{
get { return true; }
}
+
#endregion
#region Type-safe IEnumerable
+
public override ILevelCollectionEnumerator GetEnumerator()
{
return m_collection.GetEnumerator();
}
+
#endregion
#region Public Helpers
+
// (just to mimic some nice features of ArrayList)
public override int Capacity
{
@@ -1042,8 +846,10 @@
{
throw new NotSupportedException("This is a Read Only Collection and can not be modified");
}
+
#endregion
}
+
#endregion
}