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
- ListBoxAutomationPeer.cs
- SqlRecordBuffer.cs
- VariantWrapper.cs
- XmlEntityReference.cs
- StringExpressionSet.cs
- SendSecurityHeaderElement.cs
- TextBoxAutomationPeer.cs
- ComPersistableTypeElement.cs
- StylusPointCollection.cs
- MDIClient.cs
- WsatTransactionHeader.cs
- TypePresenter.xaml.cs
- RSAPKCS1SignatureDeformatter.cs
- ToolBarOverflowPanel.cs
- assemblycache.cs
- PlatformCulture.cs
- NameScopePropertyAttribute.cs
- SerializationException.cs
- ControlsConfig.cs
- WebCategoryAttribute.cs
- _UriSyntax.cs
- SystemResourceHost.cs
- VirtualPathProvider.cs
- RegexCompilationInfo.cs
- DependencyPropertyConverter.cs
- OleDbReferenceCollection.cs
- OLEDB_Util.cs
- NotifyParentPropertyAttribute.cs
- ConnectionConsumerAttribute.cs
- ComUdtElementCollection.cs
- AvTraceFormat.cs
- DispatcherObject.cs
- Int32Rect.cs
- OracleCommandSet.cs
- ActiveXSite.cs
- DefaultEventAttribute.cs
- PointCollectionValueSerializer.cs
- EntitySet.cs
- BamlTreeNode.cs
- DataColumnPropertyDescriptor.cs
- ClientUrlResolverWrapper.cs
- ClientData.cs
- StylusTouchDevice.cs
- ProtocolsConfiguration.cs
- LinearGradientBrush.cs
- PTManager.cs
- TemplateBindingExpression.cs
- FontFaceLayoutInfo.cs
- HashRepartitionEnumerator.cs
- DebugInfoGenerator.cs
- MetadataCache.cs
- UnsafeNativeMethods.cs
- Win32MouseDevice.cs
- ArrayWithOffset.cs
- DynamicPropertyReader.cs
- StrokeNodeData.cs
- Font.cs
- TraceLevelHelper.cs
- HttpHandler.cs
- CompoundFileReference.cs
- CheckPair.cs
- VectorAnimationBase.cs
- StaticExtensionConverter.cs
- Utils.cs
- ColumnCollectionEditor.cs
- NativeMethodsOther.cs
- Assert.cs
- WebServiceErrorEvent.cs
- safelink.cs
- SqlProviderManifest.cs
- CqlParserHelpers.cs
- CodeMemberProperty.cs
- WindowsIPAddress.cs
- ObjectParameterCollection.cs
- BindValidator.cs
- XmlKeywords.cs
- TypeBuilderInstantiation.cs
- BuildProviderCollection.cs
- ManifestResourceInfo.cs
- EdmFunction.cs
- ReadOnlyTernaryTree.cs
- Directory.cs
- TagPrefixAttribute.cs
- SafeMemoryMappedFileHandle.cs
- ThumbButtonInfoCollection.cs
- XPathNodeHelper.cs
- Rect3DValueSerializer.cs
- IndependentlyAnimatedPropertyMetadata.cs
- GridViewAutoFormat.cs
- BinaryObjectWriter.cs
- NumericExpr.cs
- XmlProcessingInstruction.cs
- CommandBindingCollection.cs
- DurableInstanceProvider.cs
- NetworkAddressChange.cs
- ExponentialEase.cs
- ConfigurationValues.cs
- PropertyGridEditorPart.cs
- SafeNativeMethods.cs
- NestPullup.cs