AndCondition.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 / wpf / src / UIAutomation / UIAutomationClient / System / Windows / Automation / AndCondition.cs / 1305600 / AndCondition.cs

                            //---------------------------------------------------------------------------- 
//
// 
//    Copyright (C) Microsoft Corporation.  All rights reserved.
//  
//
// 
// Description: 
//
// History: 
//  10/14/2003 : BrendanM - Created
//
//---------------------------------------------------------------------------
 
// PRESHARP: In order to avoid generating warnings about unkown message numbers and unknown pragmas.
#pragma warning disable 1634, 1691 
 
using System;
using MS.Internal.Automation; 
using System.Windows.Automation;
using System.Runtime.InteropServices;

namespace System.Windows.Automation 
{
    ///  
    /// Condition that checks whether a pattern is currently present for a LogicalElement 
    /// 
#if (INTERNAL_COMPILE) 
    internal class AndCondition : Condition
#else
    public class AndCondition : Condition
#endif 
    {
        //----------------------------------------------------- 
        // 
        //  Constructors
        // 
        //-----------------------------------------------------

        #region Constructors
 
        /// 
        /// Constructor to create a condition that is true if all of the sub-conditions are true 
        ///  
        /// One or more sub-condition
        public AndCondition( params Condition [ ] conditions ) 
        {
            Misc.ValidateArgumentNonNull( conditions, "conditions" );
            Misc.ValidateArgument( conditions.Length >= 2, SRID.MustBeAtLeastTwoConditions );
            foreach( Condition condition in conditions ) 
            {
                Misc.ValidateArgumentNonNull( condition, "conditions" ); 
            } 

            // clone array to prevent accidental tampering 
            _conditions = (Condition [ ]) conditions.Clone();
            _conditionArrayHandle = SafeConditionMemoryHandle.AllocateConditionArrayHandle(_conditions);
            // DangerousGetHandle() reminds us that the IntPtr we get back could be collected/released/recycled. We're safe here,
            // because the Conditions are structured in a tree, with the root one (which gets passed to the Uia API) keeping all 
            // others - and their associated data - alive. (Recycling isn't an issue as these are immutable classes.)
            SetMarshalData(new UiaCoreApi.UiaAndOrCondition(UiaCoreApi.ConditionType.And, _conditionArrayHandle.DangerousGetHandle(), _conditions.Length)); 
        } 
        #endregion Constructors
 
        //------------------------------------------------------
        //
        //  Public Methods
        // 
        //-----------------------------------------------------
 
        #region Public Methods 

        ///  
        /// Returns an array of the sub conditions for this condition.
        /// 
        /// 
        /// The returned array is a copy; modifying it will not affect the 
        /// state of the condition.
        ///  
        public Condition [ ] GetConditions() 
        {
            return (Condition []) _conditions.Clone(); 
        }

        #endregion Public Methods
 

        //------------------------------------------------------ 
        // 
        //  Private Fields
        // 
        //------------------------------------------------------

        #region Private Fields
 
        Condition [ ] _conditions;
        SafeConditionMemoryHandle _conditionArrayHandle; 
 
        #endregion Private Fields
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

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