Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Common / Utils / Boolean / Clause.cs / 1305376 / Clause.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; using System.Linq; namespace System.Data.Common.Utils.Boolean { ////// Base class for clauses, which are (constrained) combinations of literals. /// ///Type of normal form literal. internal abstract class Clause: NormalFormNode { private readonly Set > _literals; private readonly int _hashCode; /// /// Initialize a new clause. /// /// Literals contained in the clause. /// Type of expression tree to produce from literals. protected Clause(Set> literals, ExprType treeType) : base(ConvertLiteralsToExpr(literals, treeType)) { _literals = literals.AsReadOnly(); _hashCode = _literals.GetElementsHashCode(); } /// /// Gets the literals contained in this clause. /// internal Set> Literals { get { return _literals; } } // Given a collection of literals and a tree type, returns an expression of the given type. private static BoolExpr ConvertLiteralsToExpr(Set > literals, ExprType treeType) { bool isAnd = ExprType.And == treeType; Debug.Assert(isAnd || ExprType.Or == treeType); IEnumerable > literalExpressions = literals.Select( new Func , BoolExpr >(ConvertLiteralToExpression)); if (isAnd) { return new AndExpr (literalExpressions); } else { return new OrExpr (literalExpressions); } } // Given a literal, returns its logical equivalent expression. private static BoolExpr ConvertLiteralToExpression(Literal literal) { return literal.Expr; } public override string ToString() { StringBuilder builder = new StringBuilder(); builder.Append("Clause{"); builder.Append(_literals); return builder.Append("}").ToString(); } public override int GetHashCode() { return _hashCode; } public override bool Equals(object obj) { Debug.Fail("call typed Equals"); return base.Equals(obj); } } /// /// A DNF clause is of the form: /// /// Literal1 . Literal2 . ... /// /// Each literal is of the form: /// /// Term /// /// or /// /// !Term /// ///Type of normal form literal. internal sealed class DnfClause: Clause , IEquatable > { /// /// Initialize a DNF clause. /// /// Literals in clause. internal DnfClause(Set> literals) : base(literals, ExprType.And) { } public bool Equals(DnfClause other) { return null != other && other.Literals.SetEquals(Literals); } } /// /// A CNF clause is of the form: /// /// Literal1 + Literal2 . ... /// /// Each literal is of the form: /// /// Term /// /// or /// /// !Term /// ///Type of normal form literal. internal sealed class CnfClause: Clause , IEquatable > { /// /// Initialize a CNF clause. /// /// Literals in clause. internal CnfClause(Set> literals) : base(literals, ExprType.Or) { } public bool Equals(CnfClause other) { return null != other && other.Literals.SetEquals(Literals); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PackWebResponse.cs
- DocumentGrid.cs
- ImpersonationContext.cs
- CodeAccessPermission.cs
- TextServicesDisplayAttributePropertyRanges.cs
- ObjectManager.cs
- HttpVersion.cs
- WebEncodingValidatorAttribute.cs
- SecurityAlgorithmSuiteConverter.cs
- HtmlTextBoxAdapter.cs
- AdRotator.cs
- DataBoundControlAdapter.cs
- AsymmetricSignatureFormatter.cs
- BodyGlyph.cs
- Material.cs
- ManagementOptions.cs
- Roles.cs
- XslException.cs
- streamingZipPartStream.cs
- XmlILOptimizerVisitor.cs
- ComponentRenameEvent.cs
- MaterialGroup.cs
- _AuthenticationState.cs
- CustomMenuItemCollection.cs
- ListParagraph.cs
- ForeignConstraint.cs
- WindowsIdentity.cs
- TripleDESCryptoServiceProvider.cs
- ClientSettingsSection.cs
- JpegBitmapDecoder.cs
- ConsoleCancelEventArgs.cs
- TrackingProfileManager.cs
- TextElement.cs
- WebRequestModuleElement.cs
- _CacheStreams.cs
- SystemResources.cs
- RegexCode.cs
- DomainConstraint.cs
- FloaterBaseParaClient.cs
- TextBox.cs
- DataGridViewHitTestInfo.cs
- AlignmentXValidation.cs
- MostlySingletonList.cs
- StringFormat.cs
- TypedMessageConverter.cs
- CommandBinding.cs
- AsyncDataRequest.cs
- ProxyElement.cs
- LinqDataView.cs
- DelegatingMessage.cs
- IfAction.cs
- MessageQueuePermissionEntry.cs
- invalidudtexception.cs
- MessageFilterTable.cs
- WindowsPrincipal.cs
- SplitterCancelEvent.cs
- sqlcontext.cs
- WindowsRebar.cs
- BamlResourceSerializer.cs
- XmlArrayAttribute.cs
- CatalogZone.cs
- ThousandthOfEmRealPoints.cs
- SQLMoneyStorage.cs
- InkCanvasSelection.cs
- StringAnimationUsingKeyFrames.cs
- TailCallAnalyzer.cs
- SettingsBindableAttribute.cs
- XmlDictionary.cs
- GridErrorDlg.cs
- CompilationUtil.cs
- MultiTrigger.cs
- ArgumentNullException.cs
- DisplayInformation.cs
- ConstructorExpr.cs
- TemplateManager.cs
- ExtensibleClassFactory.cs
- ParseHttpDate.cs
- CompressEmulationStream.cs
- Mutex.cs
- ChildrenQuery.cs
- EUCJPEncoding.cs
- XPathAxisIterator.cs
- TableMethodGenerator.cs
- CompositeControlDesigner.cs
- DocobjHost.cs
- JoinSymbol.cs
- DecimalConverter.cs
- QilLiteral.cs
- InputScope.cs
- KeysConverter.cs
- DataControlFieldCell.cs
- UIPropertyMetadata.cs
- DbException.cs
- InputProcessorProfilesLoader.cs
- XmlDocumentFragment.cs
- ColorAnimation.cs
- UndoEngine.cs
- WeakReferenceEnumerator.cs
- StrokeNode.cs
- HierarchicalDataSourceDesigner.cs