RegexGroup.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Regex / System / Text / RegularExpressions / RegexGroup.cs / 1305376 / RegexGroup.cs

                            //------------------------------------------------------------------------------ 
// 
//     Copyright (c) Microsoft Corporation.  All rights reserved.
// 
//----------------------------------------------------------------------------- 

// Group represents the substring or substrings that 
// are captured by a single capturing group after one 
// regular expression match.
 
namespace System.Text.RegularExpressions {
    using System.Security.Permissions;

    ///  
    ///    Group
    ///       represents the results from a single capturing group. A capturing group can 
    ///       capture zero, one, or more strings in a single match because of quantifiers, so 
    ///       Group supplies a collection of Capture objects.
    ///     
#if !SILVERLIGHT
    [ Serializable() ]
#endif
    public class Group : Capture { 
        // the empty group object
        internal static Group   _emptygroup = new Group(String.Empty, new int[0], 0); 
 
        internal int[] _caps;
        internal int _capcount; 
        internal CaptureCollection _capcoll;

        internal Group(String text, int[] caps, int capcount)
 
        : base(text, capcount == 0 ? 0 : caps[(capcount - 1) * 2],
               capcount == 0 ? 0 : caps[(capcount * 2) - 1]) { 
 
            _caps = caps;
            _capcount = capcount; 
        }

        /*
         * True if the match was successful 
         */
        ///  
        ///    Indicates whether the match is successful. 
        /// 
        public bool Success { 
            get {
                return _capcount != 0;
            }
        } 

        /* 
         * The collection of all captures for this group 
         */
        ///  
        ///    
        ///       Returns a collection of all the captures matched by the capturing
        ///       group, in innermost-leftmost-first order (or innermost-rightmost-first order if
        ///       compiled with the "r" option). The collection may have zero or more items. 
        ///    
        ///  
        public CaptureCollection Captures { 
            get {
                if (_capcoll == null) 
                    _capcoll = new CaptureCollection(this);

                return _capcoll;
            } 
        }
 
        /* 
         * Convert to a thread-safe object by precomputing cache contents
         */ 
        /// 
        ///    Returns
        ///       a Group object equivalent to the one supplied that is safe to share between
        ///       multiple threads. 
        /// 
#if !SILVERLIGHT 
        [HostProtection(Synchronization=true)] 
        static public Group Synchronized(Group inner) {
#else 
        static internal Group Synchronized(Group inner) {
#endif
            if (inner == null)
                throw new ArgumentNullException("inner"); 

            // force Captures to be computed. 
 
            CaptureCollection capcoll;
            Capture dummy; 

            capcoll = inner.Captures;

            if (inner._capcount > 0) 
                dummy = capcoll[0];
 
            return inner; 
        }
    } 


}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK