2 // System.CodeDOM CodeStatementCollection Class implementation
\r
5 // Miguel de Icaza (miguel@ximian.com)
\r
7 // (C) 2001 Ximian, Inc.
\r
10 namespace Mono.CSharp {
\r
12 using System.Collections;
\r
15 public class StatementCollection : IList, ICollection, IEnumerable {
\r
17 ArrayList statements;
\r
22 public StatementCollection ()
\r
24 statements = new ArrayList ();
\r
32 return statements.Count;
\r
39 public void Add (Statement value)
\r
41 statements.Add (value);
\r
44 public void AddRange (Statement [] values)
\r
46 foreach (Statement ca in values)
\r
47 statements.Add (ca);
\r
51 public void Clear ()
\r
53 statements.Clear ();
\r
56 private class Enumerator : IEnumerator {
\r
57 private StatementCollection collection;
\r
58 private int currentIndex = -1;
\r
60 internal Enumerator (StatementCollection collection)
\r
62 this.collection = collection;
\r
65 public object Current {
\r
67 if (currentIndex == collection.Count)
\r
68 throw new InvalidOperationException ();
\r
69 return collection [currentIndex];
\r
73 public bool MoveNext ()
\r
75 if (currentIndex > collection.Count)
\r
76 throw new InvalidOperationException ();
\r
77 return ++currentIndex < collection.Count;
\r
80 public void Reset ()
\r
86 public IEnumerator GetEnumerator ()
\r
88 return new StatementCollection.Enumerator (this);
\r
92 // IList method implementations
\r
94 public int Add (object value)
\r
96 return statements.Add (value);
\r
99 public bool Contains (Object value)
\r
101 return statements.Contains (value);
\r
104 public int IndexOf (Object value)
\r
106 return statements.IndexOf (value);
\r
109 public void Insert (int index, Object value)
\r
111 statements [index] = value;
\r
114 public object this[int index] {
\r
116 return statements [index];
\r
120 statements [index] = value;
\r
124 public void Remove (object value)
\r
126 statements.Remove (value);
\r
129 public void RemoveAt (int index)
\r
131 statements.RemoveAt (index);
\r
135 // ICollection method implementations
\r
137 public void CopyTo (Array array, int index)
\r
139 statements.CopyTo (array, index);
\r
142 public object SyncRoot {
\r
144 return statements.SyncRoot;
\r
148 public bool IsReadOnly {
\r
154 public bool IsSynchronized {
\r
156 return statements.IsSynchronized;
\r
160 public bool IsFixedSize {
\r