Literal.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 / DataEntity / System / Data / Common / Utils / Boolean / Literal.cs / 1305376 / Literal.cs

                            //---------------------------------------------------------------------- 
// 
//      Copyright (c) Microsoft Corporation.  All rights reserved.
// 
// 
// @owner [....]
// @backupOwner [....] 
//--------------------------------------------------------------------- 

using System; 
using System.Collections.Generic;
using System.Text;
using System.Globalization;
using System.Collections.ObjectModel; 
using System.Diagnostics;
 
namespace System.Data.Common.Utils.Boolean 
{
    ///  
    /// Represents a literal in a normal form expression of the form:
    ///
    ///         Term
    /// 
    /// or
    /// 
    ///         !Term 
    /// 
    ///  
    internal sealed class Literal : NormalFormNode,
        IEquatable>
    {
        private readonly TermExpr _term; 
        private readonly bool _isTermPositive;
 
        ///  
        /// Initialize a new literal.
        ///  
        /// Term
        /// Sign of term
        internal Literal(TermExpr term, bool isTermPositive)
            : base(isTermPositive ? (BoolExpr)term : (BoolExpr)new NotExpr(term)) 
        {
            Debug.Assert(null != term); 
            _term = term; 
            _isTermPositive = isTermPositive;
        } 

        /// 
        /// Gets literal term.
        ///  
        internal TermExpr Term
        { 
            get { return _term; } 
        }
 
        /// 
        /// Gets sign of term.
        /// 
        internal bool IsTermPositive 
        {
            get { return _isTermPositive; } 
        } 

        ///  
        /// Creates a negated version of this literal.
        /// 
        /// !this
        internal Literal MakeNegated() 
        {
            return IdentifierService.Instance.NegateLiteral(this); 
        } 

        public override string ToString() 
        {
            return StringUtil.FormatInvariant("{0}{1}",
                _isTermPositive ? String.Empty : "!",
                _term); 
        }
 
        public override bool Equals(object obj) 
        {
            Debug.Fail("use typed Equals"); 
            return Equals(obj as Literal);
        }

        public bool Equals(Literal other) 
        {
            return null != other && 
                other._isTermPositive == _isTermPositive && 
                other._term.Equals(_term);
        } 

        public override int GetHashCode()
        {
            return _term.GetHashCode(); 
        }
    } 
} 

// 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