/* Copyright (C) 2004 - 2006 db4objects Inc. http://www.db4o.com This file is part of the db4o open source object database. db4o is free software; you can redistribute it and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation and as clarified by db4objects' GPL interpretation policy, available at http://www.db4o.com/about/company/legalpolicies/gplinterpretation/ Alternatively you can write to db4objects, Inc., 1900 S Norfolk Street, Suite 350, San Mateo, CA 94403, USA. db4o is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ namespace Mono.Cecil.Cil { using System; using System.Collections; using Mono.Cecil.Cil; public sealed class VariableDefinitionCollection : IVariableDefinitionCollection { IList m_items; MethodBody m_container; public event VariableDefinitionEventHandler OnVariableDefinitionAdded; public event VariableDefinitionEventHandler OnVariableDefinitionRemoved; public VariableDefinition this [int index] { get { return m_items [index] as VariableDefinition; } set { m_items [index] = value; } } object IIndexedCollection.this [int index] { get { return m_items [index]; } } public MethodBody Container { get { return m_container; } } public int Count { get { return m_items.Count; } } public bool IsSynchronized { get { return false; } } public object SyncRoot { get { return this; } } public VariableDefinitionCollection (MethodBody container) { m_container = container; m_items = new ArrayList (); } public void Add (VariableDefinition value) { if (OnVariableDefinitionAdded != null && !this.Contains (value)) OnVariableDefinitionAdded (this, new VariableDefinitionEventArgs (value)); m_items.Add (value); } public void Clear () { if (OnVariableDefinitionRemoved != null) foreach (VariableDefinition item in this) OnVariableDefinitionRemoved (this, new VariableDefinitionEventArgs (item)); m_items.Clear (); } public bool Contains (VariableDefinition value) { return m_items.Contains (value); } public int IndexOf (VariableDefinition value) { return m_items.IndexOf (value); } public void Insert (int index, VariableDefinition value) { if (OnVariableDefinitionAdded != null && !this.Contains (value)) OnVariableDefinitionAdded (this, new VariableDefinitionEventArgs (value)); m_items.Insert (index, value); } public void Remove (VariableDefinition value) { if (OnVariableDefinitionRemoved != null && this.Contains (value)) OnVariableDefinitionRemoved (this, new VariableDefinitionEventArgs (value)); m_items.Remove (value); } public void RemoveAt (int index) { if (OnVariableDefinitionRemoved != null) OnVariableDefinitionRemoved (this, new VariableDefinitionEventArgs (this [index])); m_items.RemoveAt (index); } public void CopyTo (Array ary, int index) { m_items.CopyTo (ary, index); } public IEnumerator GetEnumerator () { return m_items.GetEnumerator (); } public void Accept (ICodeVisitor visitor) { visitor.VisitVariableDefinitionCollection (this); } } }