9 |
// (C) 2004 Novell, Inc. |
// (C) 2004 Novell, Inc. |
10 |
// |
// |
11 |
|
|
12 |
|
// |
13 |
|
// Permission is hereby granted, free of charge, to any person obtaining |
14 |
|
// a copy of this software and associated documentation files (the |
15 |
|
// "Software"), to deal in the Software without restriction, including |
16 |
|
// without limitation the rights to use, copy, modify, merge, publish, |
17 |
|
// distribute, sublicense, and/or sell copies of the Software, and to |
18 |
|
// permit persons to whom the Software is furnished to do so, subject to |
19 |
|
// the following conditions: |
20 |
|
// |
21 |
|
// The above copyright notice and this permission notice shall be |
22 |
|
// included in all copies or substantial portions of the Software. |
23 |
|
// |
24 |
|
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
25 |
|
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
26 |
|
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
27 |
|
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
28 |
|
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
29 |
|
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
30 |
|
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
31 |
|
// |
32 |
|
|
33 |
using System; |
using System; |
34 |
using System.Collections; |
using System.Collections; |
35 |
|
|
38 |
[Serializable] |
[Serializable] |
39 |
public class CaptureCollection: ICollection, IEnumerable |
public class CaptureCollection: ICollection, IEnumerable |
40 |
{ |
{ |
41 |
private ArrayList list; |
private Capture [] list; |
42 |
|
|
43 |
/* No public constructor */ |
/* No public constructor */ |
44 |
internal CaptureCollection () { |
internal CaptureCollection (int n) |
45 |
list = new ArrayList (); |
{ |
46 |
|
list = new Capture [n]; |
47 |
} |
} |
48 |
|
|
49 |
public virtual int Count { |
public virtual int Count { |
50 |
get { |
get { return list.Length; } |
|
return(list.Count); |
|
|
} |
|
51 |
} |
} |
52 |
|
|
53 |
public bool IsReadOnly { |
public bool IsReadOnly { |
54 |
get { |
get { return true; } |
|
return(true); |
|
|
} |
|
55 |
} |
} |
56 |
|
|
57 |
public virtual bool IsSynchronized { |
public virtual bool IsSynchronized { |
58 |
get { |
get { return false; } |
|
return(false); |
|
|
} |
|
59 |
} |
} |
60 |
|
|
61 |
public Capture this[int i] { |
public Capture this [int i] { |
62 |
get { |
get { |
63 |
if (i < 0 || |
if (i < 0 || i > Count) |
|
i > Count) { |
|
64 |
throw new ArgumentOutOfRangeException ("Index is out of range"); |
throw new ArgumentOutOfRangeException ("Index is out of range"); |
65 |
} |
return list [i]; |
|
|
|
|
return((Capture)list[i]); |
|
66 |
} |
} |
67 |
} |
} |
68 |
|
|
69 |
public virtual object SyncRoot { |
internal void SetValue (Capture cap, int i) |
70 |
get { |
{ |
71 |
return(list); |
list [i] = cap; |
|
} |
|
72 |
} |
} |
73 |
|
|
74 |
public virtual void CopyTo (Array array, int index) { |
public virtual object SyncRoot { |
75 |
foreach (object o in list) { |
get { return list; } |
|
if (index > array.Length) { |
|
|
break; |
|
|
} |
|
|
|
|
|
array.SetValue (o, index++); |
|
|
} |
|
|
} |
|
|
|
|
|
public virtual IEnumerator GetEnumerator () { |
|
|
return(new Enumerator (list)); |
|
|
} |
|
|
|
|
|
internal void Add (object o) { |
|
|
list.Add (o); |
|
76 |
} |
} |
77 |
|
|
78 |
internal void Reverse () { |
public virtual void CopyTo (Array array, int index) |
79 |
list.Reverse (); |
{ |
80 |
|
list.CopyTo (array, index); |
81 |
} |
} |
82 |
|
|
83 |
private class Enumerator: IEnumerator { |
public virtual IEnumerator GetEnumerator () |
84 |
private IList list; |
{ |
85 |
private int ptr; |
return list.GetEnumerator (); |
|
|
|
|
public Enumerator (IList list) { |
|
|
this.list = list; |
|
|
Reset (); |
|
|
} |
|
|
|
|
|
public object Current { |
|
|
get { |
|
|
if (ptr >= list.Count) { |
|
|
throw new InvalidOperationException (); |
|
|
} |
|
|
|
|
|
return(list[ptr]); |
|
|
} |
|
|
} |
|
|
|
|
|
public bool MoveNext () { |
|
|
if (ptr > list.Count) { |
|
|
throw new InvalidOperationException (); |
|
|
} |
|
|
|
|
|
return(++ptr < list.Count); |
|
|
} |
|
|
|
|
|
public void Reset () { |
|
|
ptr = -1; |
|
|
} |
|
86 |
} |
} |
87 |
} |
} |
88 |
} |
} |