| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- //
- // assembly: System
- // namespace: System.Text.RegularExpressions
- // file: collections.cs
- //
- // author: Dan Lewis ([email protected])
- // (c) 2002
- using System;
- using System.Collections;
- namespace System.Text.RegularExpressions {
- public abstract class RegexCollectionBase : ICollection, IEnumerable {
- public int Count {
- get { return list.Count; }
- }
- public bool IsReadOnly {
- get { return true; } // FIXME
- }
- public bool IsSynchronized {
- get { return false; } // FIXME
- }
- public object SyncRoot {
- get { return list; } // FIXME
- }
- public void CopyTo (Array array, int index) {
- foreach (Object o in list) {
- if (index > array.Length)
- break;
-
- array.SetValue (o, index ++);
- }
- }
- public IEnumerator GetEnumerator () {
- return new Enumerator (list);
- }
- // internal methods
- internal RegexCollectionBase () {
- list = new ArrayList ();
- }
- internal void Add (Object o) {
- list.Add (o);
- }
- internal void Reverse () {
- list.Reverse ();
- }
- // IEnumerator implementation
- private class Enumerator : IEnumerator {
- 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;
- }
- private IList list;
- private int ptr;
- }
- // protected fields
- protected ArrayList list;
- }
- [Serializable]
- public class CaptureCollection : RegexCollectionBase, ICollection, IEnumerable {
- public Capture this[int i] {
- get { return (Capture)list[i]; }
- }
- internal CaptureCollection () {
- }
- }
- [Serializable]
- public class GroupCollection : RegexCollectionBase, ICollection, IEnumerable {
- public Group this[int i] {
- get { return (Group)list[i]; }
- }
-
- internal GroupCollection () {
- }
- }
- [Serializable]
- public class MatchCollection : RegexCollectionBase, ICollection, IEnumerable {
- public virtual Match this[int i] {
- get { return (Match)list[i]; }
- }
- internal MatchCollection () {
- }
- }
- }
|