2002-05-31 Rafael Teixeira <rafaelteixeirabr@hotmail.com>
[mono.git] / mcs / mbas / statementCollection.cs
1 //\r
2 // System.CodeDOM CodeStatementCollection Class implementation\r
3 //\r
4 // Author:\r
5 //   Miguel de Icaza (miguel@ximian.com)\r
6 //\r
7 // (C) 2001 Ximian, Inc.\r
8 //\r
9 \r
10 namespace Mono.CSharp {\r
11 \r
12         using System.Collections;\r
13         using System;\r
14         \r
15         public class StatementCollection : IList, ICollection, IEnumerable {\r
16 \r
17                 ArrayList statements;\r
18                 \r
19                 //\r
20                 // Constructors\r
21                 //\r
22                 public StatementCollection ()\r
23                 {\r
24                         statements = new ArrayList ();\r
25                 }\r
26 \r
27                 //\r
28                 // Properties\r
29                 //\r
30                 public int Count {\r
31                         get {\r
32                                 return statements.Count;\r
33                         }\r
34                 }\r
35 \r
36                 //\r
37                 // Methods\r
38                 //\r
39                 public void Add (Statement value)\r
40                 {\r
41                         statements.Add (value);\r
42                 }\r
43 \r
44                 public void AddRange (Statement [] values)\r
45                 {\r
46                         foreach (Statement ca in values) \r
47                                 statements.Add (ca);\r
48 \r
49                 }\r
50 \r
51                 public void Clear ()\r
52                 {\r
53                         statements.Clear ();\r
54                 }\r
55 \r
56                 private class Enumerator : IEnumerator {\r
57                         private StatementCollection collection;\r
58                         private int currentIndex = -1;\r
59 \r
60                         internal Enumerator (StatementCollection collection)\r
61                         {\r
62                                 this.collection = collection;\r
63                         }\r
64 \r
65                         public object Current {\r
66                                 get {\r
67                                         if (currentIndex == collection.Count)\r
68                                                 throw new InvalidOperationException ();\r
69                                         return collection [currentIndex];\r
70                                 }\r
71                         }\r
72 \r
73                         public bool MoveNext ()\r
74                         {\r
75                                 if (currentIndex > collection.Count)\r
76                                         throw new InvalidOperationException ();\r
77                                 return ++currentIndex < collection.Count;\r
78                         }\r
79 \r
80                         public void Reset ()\r
81                         {\r
82                                 currentIndex = -1;\r
83                         }\r
84                 }\r
85                 \r
86                 public IEnumerator GetEnumerator ()\r
87                 {\r
88                         return new StatementCollection.Enumerator (this);\r
89                 }\r
90 \r
91                 //\r
92                 // IList method implementations\r
93                 //\r
94                 public int Add (object value)\r
95                 {\r
96                         return statements.Add (value);\r
97                 }\r
98 \r
99                 public bool Contains (Object value)\r
100                 {\r
101                         return statements.Contains (value);\r
102                 }\r
103 \r
104                 public int IndexOf (Object value)\r
105                 {\r
106                         return statements.IndexOf (value);\r
107                 }\r
108 \r
109                 public void Insert (int index, Object value)\r
110                 {\r
111                         statements [index] = value;\r
112                 }\r
113 \r
114                 public object this[int index] {\r
115                         get {\r
116                                 return statements [index];\r
117                         }\r
118 \r
119                         set {\r
120                                 statements [index] = value;\r
121                         }\r
122                 }\r
123 \r
124                 public void Remove (object value)\r
125                 {\r
126                         statements.Remove (value);\r
127                 }\r
128 \r
129                 public void RemoveAt (int index)\r
130                 {\r
131                         statements.RemoveAt (index);\r
132                 }\r
133 \r
134                 //\r
135                 // ICollection method implementations\r
136                 //\r
137                 public void CopyTo (Array array, int index)\r
138                 {\r
139                         statements.CopyTo (array, index);\r
140                 }\r
141 \r
142                 public object SyncRoot {\r
143                         get {\r
144                                 return statements.SyncRoot;\r
145                         }\r
146                 }\r
147 \r
148                 public bool IsReadOnly {\r
149                         get {\r
150                                 return false;\r
151                         }\r
152                 }\r
153 \r
154                 public bool IsSynchronized {\r
155                         get {\r
156                                 return statements.IsSynchronized;\r
157                         }\r
158                 }\r
159 \r
160                 public bool IsFixedSize {\r
161                         get {\r
162                                 return false;\r
163                         }\r
164                 }\r
165         }\r
166 }\r