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
- ProviderManager.cs
- ServicePointManagerElement.cs
- AbstractExpressions.cs
- CreateUserWizard.cs
- CellQuery.cs
- PropertyStore.cs
- StringResourceManager.cs
- PrintController.cs
- WindowsListViewGroup.cs
- SessionKeyExpiredException.cs
- SchemaInfo.cs
- SemaphoreFullException.cs
- CategoryValueConverter.cs
- TreeSet.cs
- ConsoleCancelEventArgs.cs
- EventToken.cs
- FrameworkContextData.cs
- CalendarTable.cs
- DelegatedStream.cs
- SignatureDescription.cs
- SqlStatistics.cs
- CreateUserErrorEventArgs.cs
- DataContractJsonSerializer.cs
- XmlTypeMapping.cs
- DbDataRecord.cs
- SQLGuidStorage.cs
- ColorPalette.cs
- WebPartConnectionsCloseVerb.cs
- CacheAxisQuery.cs
- LeaseManager.cs
- UserControl.cs
- designeractionbehavior.cs
- Brush.cs
- Icon.cs
- DataMisalignedException.cs
- RotationValidation.cs
- LayoutEvent.cs
- OdbcConnectionStringbuilder.cs
- WebServiceParameterData.cs
- MatrixConverter.cs
- ApplicationProxyInternal.cs
- EncoderBestFitFallback.cs
- XmlTypeAttribute.cs
- ObjectSet.cs
- PassportAuthentication.cs
- ContainerFilterService.cs
- ValueTypeFixupInfo.cs
- SessionConnectionReader.cs
- UIElement3D.cs
- DockPanel.cs
- Geometry.cs
- CheckBoxPopupAdapter.cs
- DataSourceHelper.cs
- XPathSelfQuery.cs
- SafeFileMappingHandle.cs
- RecognizeCompletedEventArgs.cs
- PerformanceCountersElement.cs
- StdValidatorsAndConverters.cs
- ValidatorCompatibilityHelper.cs
- TraceXPathNavigator.cs
- DiffuseMaterial.cs
- Page.cs
- BinaryObjectInfo.cs
- SerializationHelper.cs
- LogManagementAsyncResult.cs
- ByteStack.cs
- TextReader.cs
- XmlCharacterData.cs
- Preprocessor.cs
- StringUtil.cs
- _ListenerRequestStream.cs
- StylusShape.cs
- PolygonHotSpot.cs
- IsolatedStoragePermission.cs
- AppSettingsReader.cs
- AuthenticationServiceManager.cs
- ComponentDispatcher.cs
- WebPartConnectionsCancelVerb.cs
- AsyncOperation.cs
- InternalConfigEventArgs.cs
- RequestCachePolicy.cs
- WindowsFormsLinkLabel.cs
- AutomationElementCollection.cs
- ItemsPresenter.cs
- ActivityTypeDesigner.xaml.cs
- SpeakCompletedEventArgs.cs
- RoutedEventValueSerializer.cs
- X509CertificateClaimSet.cs
- altserialization.cs
- InvalidOleVariantTypeException.cs
- X509UI.cs
- LinqDataSource.cs
- FileUpload.cs
- HttpSysSettings.cs
- SplitContainer.cs
- MouseDevice.cs
- BitmapFrameEncode.cs
- VSWCFServiceContractGenerator.cs
- PageAsyncTask.cs
- TransactionTable.cs