Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Regex / System / Text / RegularExpressions / RegexCaptureCollection.cs / 1 / RegexCaptureCollection.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- // The CaptureCollection lists the captured Capture numbers // contained in a compiled Regex. namespace System.Text.RegularExpressions { using System.Collections; /* * This collection returns the Captures for a group * in the order in which they were matched (left to right * or right to left). It is created by Group.Captures */ ////// [ Serializable() ] public class CaptureCollection : ICollection { internal Group _group; internal int _capcount; internal Capture[] _captures; /* * Nonpublic constructor */ internal CaptureCollection(Group group) { _group = group; _capcount = _group._capcount; } /* * The object on which to synchronize */ ////// Represents a sequence of capture substrings. The object is used /// to return the set of captures done by a single capturing group. /// ////// public Object SyncRoot { get { return _group; } } /* * ICollection */ ///[To be supplied.] ////// public bool IsSynchronized { get { return false; } } /* * ICollection */ ///[To be supplied.] ////// public bool IsReadOnly { get { return true; } } /* * The number of captures for the group */ ///[To be supplied.] ////// public int Count { get { return _capcount; } } /* * The ith capture in the group */ ////// Returns the number of captures. /// ////// public Capture this[int i] { get { return GetCapture(i); } } /* * As required by ICollection */ ////// Provides a means of accessing a specific capture in the collection. /// ////// public void CopyTo(Array array, int arrayIndex) { if (array == null) throw new ArgumentNullException("array"); for (int i = arrayIndex, j = 0; j < Count; i++, j++) { array.SetValue(this[j], i); } } /* * As required by ICollection */ ////// Copies all the elements of the collection to the given array /// beginning at the given index. /// ////// public IEnumerator GetEnumerator() { return new CaptureEnumerator(this); } /* * Nonpublic code to return set of captures for the group */ internal Capture GetCapture(int i) { if (i == _capcount - 1 && i >= 0) return _group; if (i >= _capcount || i < 0) throw new ArgumentOutOfRangeException("i"); // first time a capture is accessed, compute them all if (_captures == null) { _captures = new Capture[_capcount]; for (int j = 0; j < _capcount - 1; j++) { _captures[j] = new Capture(_group._text, _group._caps[j * 2], _group._caps[j * 2 + 1]); } } return _captures[i]; } } /* * This non-public enumerator lists all the captures * Should it be public? */ [ Serializable() ] internal class CaptureEnumerator : IEnumerator { internal CaptureCollection _rcc; internal int _curindex; /* * Nonpublic constructor */ internal CaptureEnumerator(CaptureCollection rcc) { _curindex = -1; _rcc = rcc; } /* * As required by IEnumerator */ public bool MoveNext() { int size = _rcc.Count; if (_curindex >= size) return false; _curindex++; return(_curindex < size); } /* * As required by IEnumerator */ public Object Current { get { return Capture;} } /* * Returns the current capture */ public Capture Capture { get { if (_curindex < 0 || _curindex >= _rcc.Count) throw new InvalidOperationException(SR.GetString(SR.EnumNotStarted)); return _rcc[_curindex]; } } /* * Reset to before the first item */ public void Reset() { _curindex = -1; } } }/// Provides an enumerator in the same order as Item[]. /// ///
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- EventEntry.cs
- SAPIEngineTypes.cs
- DifferencingCollection.cs
- ProcessModuleCollection.cs
- ExpressionDumper.cs
- DataContractSet.cs
- SuppressMergeCheckAttribute.cs
- DataBindingHandlerAttribute.cs
- ErrorWrapper.cs
- CollectionsUtil.cs
- sitestring.cs
- BamlResourceDeserializer.cs
- StickyNoteHelper.cs
- Table.cs
- XmlSchemaValidationException.cs
- TimeoutTimer.cs
- UIElement3DAutomationPeer.cs
- XPathNodeList.cs
- SafeSecurityHelper.cs
- TypedLocationWrapper.cs
- SRDisplayNameAttribute.cs
- SqlHelper.cs
- GroupBoxAutomationPeer.cs
- SourceFileInfo.cs
- EncryptedKeyHashIdentifierClause.cs
- DocumentPageView.cs
- PermissionToken.cs
- DataGridViewColumnEventArgs.cs
- XmlName.cs
- EntityParameter.cs
- UserPreferenceChangedEventArgs.cs
- FlagsAttribute.cs
- CommandConverter.cs
- ClientScriptManagerWrapper.cs
- Object.cs
- ParameterCollectionEditor.cs
- WindowsProgressbar.cs
- ObjectTypeMapping.cs
- EraserBehavior.cs
- DataGridViewTopRowAccessibleObject.cs
- PropertyDescriptorGridEntry.cs
- SafeCoTaskMem.cs
- Line.cs
- XmlSchemaObjectTable.cs
- HostedImpersonationContext.cs
- EnvelopedPkcs7.cs
- CacheSection.cs
- JsonServiceDocumentSerializer.cs
- WebExceptionStatus.cs
- GenericTextProperties.cs
- XmlQualifiedName.cs
- JpegBitmapEncoder.cs
- SqlDataSourceQuery.cs
- CookieHandler.cs
- Stack.cs
- WbemException.cs
- XmlArrayItemAttribute.cs
- StrongNamePublicKeyBlob.cs
- NativeObjectSecurity.cs
- VSWCFServiceContractGenerator.cs
- ProxyWebPart.cs
- RequestCacheValidator.cs
- EncryptedType.cs
- RemotingConfiguration.cs
- XmlSchema.cs
- AtomServiceDocumentSerializer.cs
- Membership.cs
- ZipPackagePart.cs
- CodeBlockBuilder.cs
- RectangleConverter.cs
- OdbcDataAdapter.cs
- WsdlImporterElementCollection.cs
- Vector.cs
- Span.cs
- DocumentPaginator.cs
- ValidatingCollection.cs
- bidPrivateBase.cs
- SystemResourceHost.cs
- OutputWindow.cs
- HttpBufferlessInputStream.cs
- SolidColorBrush.cs
- GridViewUpdateEventArgs.cs
- TitleStyle.cs
- XmlDataSourceNodeDescriptor.cs
- ConstrainedDataObject.cs
- WmlValidatorAdapter.cs
- XmlBoundElement.cs
- StaticSiteMapProvider.cs
- AsymmetricKeyExchangeDeformatter.cs
- SharedDp.cs
- MouseDevice.cs
- BaseParser.cs
- RuntimeHandles.cs
- FontWeightConverter.cs
- SqlCacheDependencyDatabaseCollection.cs
- Lasso.cs
- GeneralTransformGroup.cs
- XmlSchemaSubstitutionGroup.cs
- HttpStreamXmlDictionaryWriter.cs
- SQLChars.cs