summaryrefslogtreecommitdiff
path: root/src/mscorlib/src/System/Collections/CollectionBase.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/mscorlib/src/System/Collections/CollectionBase.cs')
-rw-r--r--src/mscorlib/src/System/Collections/CollectionBase.cs199
1 files changed, 0 insertions, 199 deletions
diff --git a/src/mscorlib/src/System/Collections/CollectionBase.cs b/src/mscorlib/src/System/Collections/CollectionBase.cs
deleted file mode 100644
index a3dd88a..0000000
--- a/src/mscorlib/src/System/Collections/CollectionBase.cs
+++ /dev/null
@@ -1,199 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-// See the LICENSE file in the project root for more information.
-
-//------------------------------------------------------------------------------
-//------------------------------------------------------------------------------
-//
-
-namespace System.Collections {
- using System;
- using System.Diagnostics.Contracts;
-
- // Useful base class for typed read/write collections where items derive from object
- [Serializable]
- public abstract class CollectionBase : IList {
- private ArrayList list;
-
- protected CollectionBase() {
- list = new ArrayList();
- }
-
- internal ArrayList InnerList {
- get {
- if (list == null)
- list = new ArrayList();
- return list;
- }
- }
-
- protected IList List {
- get { return (IList)this; }
- }
-
-
- public int Count {
- get {
- return list == null ? 0 : list.Count;
- }
- }
-
- public void Clear() {
- OnClear();
- InnerList.Clear();
- OnClearComplete();
- }
-
- public void RemoveAt(int index) {
- if (index < 0 || index >= Count)
- throw new ArgumentOutOfRangeException(nameof(index), Environment.GetResourceString("ArgumentOutOfRange_Index"));
- Contract.EndContractBlock();
- Object temp = InnerList[index];
- OnValidate(temp);
- OnRemove(index, temp);
- InnerList.RemoveAt(index);
- try {
- OnRemoveComplete(index, temp);
- }
- catch {
- InnerList.Insert(index, temp);
- throw;
- }
-
- }
-
- bool IList.IsReadOnly {
- get { return InnerList.IsReadOnly; }
- }
-
- bool IList.IsFixedSize {
- get { return InnerList.IsFixedSize; }
- }
-
- bool ICollection.IsSynchronized {
- get { return InnerList.IsSynchronized; }
- }
-
- Object ICollection.SyncRoot {
- get { return InnerList.SyncRoot; }
- }
-
- void ICollection.CopyTo(Array array, int index) {
- InnerList.CopyTo(array, index);
- }
-
- Object IList.this[int index] {
- get {
- if (index < 0 || index >= Count)
- throw new ArgumentOutOfRangeException(nameof(index), Environment.GetResourceString("ArgumentOutOfRange_Index"));
- Contract.EndContractBlock();
- return InnerList[index];
- }
- set {
- if (index < 0 || index >= Count)
- throw new ArgumentOutOfRangeException(nameof(index), Environment.GetResourceString("ArgumentOutOfRange_Index"));
- Contract.EndContractBlock();
- OnValidate(value);
- Object temp = InnerList[index];
- OnSet(index, temp, value);
- InnerList[index] = value;
- try {
- OnSetComplete(index, temp, value);
- }
- catch {
- InnerList[index] = temp;
- throw;
- }
- }
- }
-
- bool IList.Contains(Object value) {
- return InnerList.Contains(value);
- }
-
- int IList.Add(Object value) {
- OnValidate(value);
- OnInsert(InnerList.Count, value);
- int index = InnerList.Add(value);
- try {
- OnInsertComplete(index, value);
- }
- catch {
- InnerList.RemoveAt(index);
- throw;
- }
- return index;
- }
-
-
- void IList.Remove(Object value) {
- OnValidate(value);
- int index = InnerList.IndexOf(value);
- if (index < 0) throw new ArgumentException(Environment.GetResourceString("Arg_RemoveArgNotFound"));
- OnRemove(index, value);
- InnerList.RemoveAt(index);
- try{
- OnRemoveComplete(index, value);
- }
- catch {
- InnerList.Insert(index, value);
- throw;
- }
- }
-
- int IList.IndexOf(Object value) {
- return InnerList.IndexOf(value);
- }
-
- void IList.Insert(int index, Object value) {
- if (index < 0 || index > Count)
- throw new ArgumentOutOfRangeException(nameof(index), Environment.GetResourceString("ArgumentOutOfRange_Index"));
- Contract.EndContractBlock();
- OnValidate(value);
- OnInsert(index, value);
- InnerList.Insert(index, value);
- try {
- OnInsertComplete(index, value);
- }
- catch {
- InnerList.RemoveAt(index);
- throw;
- }
- }
-
- public IEnumerator GetEnumerator() {
- return InnerList.GetEnumerator();
- }
-
- protected virtual void OnSet(int index, Object oldValue, Object newValue) {
- }
-
- protected virtual void OnInsert(int index, Object value) {
- }
-
- protected virtual void OnClear() {
- }
-
- protected virtual void OnRemove(int index, Object value) {
- }
-
- protected virtual void OnValidate(Object value) {
- if (value == null) throw new ArgumentNullException(nameof(value));
- Contract.EndContractBlock();
- }
-
- protected virtual void OnSetComplete(int index, Object oldValue, Object newValue) {
- }
-
- protected virtual void OnInsertComplete(int index, Object value) {
- }
-
- protected virtual void OnClearComplete() {
- }
-
- protected virtual void OnRemoveComplete(int index, Object value) {
- }
-
- }
-
-}