Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntity / System / Data / Common / Utils / Boolean / Clause.cs / 1 / 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. //---------------------------------------------------------------------- // // 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
- ReadonlyMessageFilter.cs
- Parser.cs
- ParallelTimeline.cs
- BaseTemplateParser.cs
- SymmetricSecurityBindingElement.cs
- StringDictionary.cs
- AuthenticationModulesSection.cs
- KnownTypes.cs
- CodeLinePragma.cs
- InvalidDocumentContentsException.cs
- WindowsToolbarAsMenu.cs
- TreeNodeEventArgs.cs
- TableAdapterManagerGenerator.cs
- SqlDataSourceFilteringEventArgs.cs
- ApplicationInfo.cs
- CompareValidator.cs
- TabPage.cs
- FixedSOMGroup.cs
- loginstatus.cs
- HistoryEventArgs.cs
- HttpListenerRequest.cs
- PropertyToken.cs
- PrintEvent.cs
- ButtonField.cs
- SqlClientPermission.cs
- MarkedHighlightComponent.cs
- TypefaceCollection.cs
- HttpModuleActionCollection.cs
- ProxyAttribute.cs
- CryptoApi.cs
- FormatException.cs
- HttpCapabilitiesSectionHandler.cs
- ReadContentAsBinaryHelper.cs
- SmiContextFactory.cs
- Matrix.cs
- HtmlInputReset.cs
- ColorIndependentAnimationStorage.cs
- MenuItem.cs
- OutputWindow.cs
- WpfWebRequestHelper.cs
- CompModSwitches.cs
- DataGridViewControlCollection.cs
- QilTypeChecker.cs
- GraphicsContext.cs
- DeclarativeCatalogPartDesigner.cs
- DispatcherExceptionFilterEventArgs.cs
- XamlSerializerUtil.cs
- FrugalList.cs
- cache.cs
- BaseTemplateCodeDomTreeGenerator.cs
- ErrorHandler.cs
- DropSource.cs
- SkipStoryboardToFill.cs
- BaseHashHelper.cs
- Attributes.cs
- ScrollViewerAutomationPeer.cs
- NameValuePermission.cs
- PageFunction.cs
- Asn1IntegerConverter.cs
- PackageStore.cs
- PasswordTextContainer.cs
- DataTableReaderListener.cs
- SendKeys.cs
- SimpleExpression.cs
- Vector3DCollection.cs
- FileSystemInfo.cs
- HeaderUtility.cs
- ClientTarget.cs
- StorageTypeMapping.cs
- ApplicationInterop.cs
- IProvider.cs
- XmlSerializationGeneratedCode.cs
- GroupByQueryOperator.cs
- TimelineGroup.cs
- MouseWheelEventArgs.cs
- ProtocolsConfigurationEntry.cs
- PerformanceCounterLib.cs
- MetadataFile.cs
- AnnotationStore.cs
- VerificationException.cs
- AutomationPattern.cs
- DataGridViewComboBoxCell.cs
- MediaElement.cs
- ObjectIDGenerator.cs
- TableRow.cs
- HttpResponseBase.cs
- ClientProxyGenerator.cs
- DSASignatureFormatter.cs
- contentDescriptor.cs
- PackagePartCollection.cs
- WebControl.cs
- login.cs
- DataBinder.cs
- ZoneIdentityPermission.cs
- TextRangeAdaptor.cs
- StorageBasedPackageProperties.cs
- PageAction.cs
- ApplicationSecurityInfo.cs
- ClientFormsIdentity.cs
- ImageBrush.cs