//------------------------------------------------------------------------------ // // // Microsoft // Copyright (c) Microsoft Corporation. All rights reserved. // //------------------------------------------------------------------------------ namespace System.CodeDom { using System.Diagnostics; using System; using System.Collections; using System.Runtime.InteropServices; using System.Globalization; /// /// /// Manages a collection of objects. /// /// [ ClassInterface(ClassInterfaceType.AutoDispatch), ComVisible(true), Serializable, ] public class CodeNamespaceImportCollection : IList { private ArrayList data = new ArrayList(); private Hashtable keys = new Hashtable(StringComparer.OrdinalIgnoreCase); /// /// /// Indexer method that provides collection access. /// /// public CodeNamespaceImport this[int index] { get { return ((CodeNamespaceImport)data[index]); } set { data[index] = value; SyncKeys(); } } /// /// /// Gets or sets the number of namespaces in the collection. /// /// public int Count { get { return data.Count; } } /// bool IList.IsReadOnly { get { return false; } } /// bool IList.IsFixedSize { get { return false; } } /// /// /// Adds a namespace import to the collection. /// /// public void Add(CodeNamespaceImport value) { if (!keys.ContainsKey(value.Namespace)) { keys[value.Namespace] = value; data.Add(value); } } /// /// /// Adds a set of objects to the collection. /// /// public void AddRange(CodeNamespaceImport[] value) { if (value == null) { throw new ArgumentNullException("value"); } foreach (CodeNamespaceImport c in value) { Add(c); } } /// /// /// Clears the collection of members. /// /// public void Clear() { data.Clear(); keys.Clear(); } /// /// /// Makes the collection of keys synchronised with the data. /// /// private void SyncKeys() { keys = new Hashtable(StringComparer.OrdinalIgnoreCase); foreach(CodeNamespaceImport c in this) { keys[c.Namespace] = c; } } /// /// /// Gets an enumerator that enumerates the collection members. /// /// public IEnumerator GetEnumerator() { return data.GetEnumerator(); } /// object IList.this[int index] { get { return this[index]; } set { this[index] = (CodeNamespaceImport)value; SyncKeys(); } } /// int ICollection.Count { get { return Count; } } /// bool ICollection.IsSynchronized { get { return false; } } /// object ICollection.SyncRoot { get { return null; } } /// void ICollection.CopyTo(Array array, int index) { data.CopyTo(array, index); } /// IEnumerator IEnumerable.GetEnumerator() { return GetEnumerator(); } /// int IList.Add(object value) { return data.Add((CodeNamespaceImport)value); } /// void IList.Clear() { Clear(); } /// bool IList.Contains(object value) { return data.Contains(value); } /// int IList.IndexOf(object value) { return data.IndexOf((CodeNamespaceImport)value); } /// void IList.Insert(int index, object value) { data.Insert(index, (CodeNamespaceImport)value); SyncKeys(); } /// void IList.Remove(object value) { data.Remove((CodeNamespaceImport)value); SyncKeys(); } /// void IList.RemoveAt(int index) { data.RemoveAt(index); SyncKeys(); } } }