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
- EndGetFileNameFromUserRequest.cs
- InkCollectionBehavior.cs
- ZipIOExtraField.cs
- counter.cs
- linebase.cs
- CombinedGeometry.cs
- SmiContext.cs
- TrimSurroundingWhitespaceAttribute.cs
- ContravarianceAdapter.cs
- ConnectionManagementElementCollection.cs
- WebPartAddingEventArgs.cs
- ContextBase.cs
- __Filters.cs
- CanonicalFontFamilyReference.cs
- GeneratedContractType.cs
- Thickness.cs
- TimeSpanParse.cs
- StyleBamlRecordReader.cs
- DataControlFieldHeaderCell.cs
- RegionInfo.cs
- ButtonFieldBase.cs
- SqlDataSourceView.cs
- AttachmentService.cs
- EventEntry.cs
- ErrorHandlerFaultInfo.cs
- TextMetrics.cs
- BrowserDefinitionCollection.cs
- WindowsTreeView.cs
- AttachmentCollection.cs
- SoapCodeExporter.cs
- SafeLocalAllocation.cs
- RequestResizeEvent.cs
- HitTestParameters3D.cs
- SchemaSetCompiler.cs
- AsmxEndpointPickerExtension.cs
- DesignBindingPropertyDescriptor.cs
- FusionWrap.cs
- DependencySource.cs
- RijndaelCryptoServiceProvider.cs
- SR.cs
- GetWinFXPath.cs
- RandomNumberGenerator.cs
- MatrixConverter.cs
- Missing.cs
- HostProtectionException.cs
- TreeNodeStyleCollection.cs
- WebBrowserNavigatingEventHandler.cs
- DrawingImage.cs
- RootNamespaceAttribute.cs
- InputLanguageCollection.cs
- PageThemeCodeDomTreeGenerator.cs
- ContentDesigner.cs
- ListSourceHelper.cs
- TextPointer.cs
- RegexGroup.cs
- BinaryConverter.cs
- CultureTable.cs
- DataGridColumnEventArgs.cs
- ValidatingReaderNodeData.cs
- StreamProxy.cs
- DescendentsWalker.cs
- SqlDependency.cs
- ActivityDesignerLayoutSerializers.cs
- DetailsViewRowCollection.cs
- StateBag.cs
- XmlBindingWorker.cs
- NativeMethods.cs
- PersistenceTypeAttribute.cs
- Utils.cs
- ColorAnimationBase.cs
- CookieParameter.cs
- DiagnosticsConfigurationHandler.cs
- HttpContextServiceHost.cs
- DataControlFieldCollection.cs
- categoryentry.cs
- TypeValidationEventArgs.cs
- ProviderMetadata.cs
- RowBinding.cs
- ObjectRef.cs
- WindowsButton.cs
- VariantWrapper.cs
- Missing.cs
- ToolStripItemDataObject.cs
- TextEditorContextMenu.cs
- DBCommand.cs
- JoinQueryOperator.cs
- FileClassifier.cs
- CqlQuery.cs
- CursorConverter.cs
- BitmapFrame.cs
- CryptographicAttribute.cs
- TickBar.cs
- DocumentOrderComparer.cs
- TextModifier.cs
- AssemblyGen.cs
- ProviderCollection.cs
- AdCreatedEventArgs.cs
- Array.cs
- FixedNode.cs
- GridViewItemAutomationPeer.cs