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
- TableLayoutPanelCellPosition.cs
- RuntimeArgumentHandle.cs
- Size.cs
- LinkUtilities.cs
- TemplateBindingExtensionConverter.cs
- TcpHostedTransportConfiguration.cs
- ScriptResourceAttribute.cs
- HttpGetClientProtocol.cs
- CodeCastExpression.cs
- InstanceCreationEditor.cs
- Int64AnimationBase.cs
- EmbossBitmapEffect.cs
- CultureInfoConverter.cs
- LambdaValue.cs
- SoapSchemaMember.cs
- HostedHttpTransportManager.cs
- OracleBinary.cs
- CodeExpressionStatement.cs
- DataRecordInfo.cs
- EnumMember.cs
- CodeCommentStatement.cs
- FunctionQuery.cs
- MessageQueueInstaller.cs
- SqlCharStream.cs
- WebRequest.cs
- HttpResponseWrapper.cs
- PackageStore.cs
- BaseParaClient.cs
- Dynamic.cs
- Pointer.cs
- WindowPattern.cs
- ReadContentAsBinaryHelper.cs
- TypeFieldSchema.cs
- HatchBrush.cs
- RenderCapability.cs
- EndEvent.cs
- CodeAttributeDeclarationCollection.cs
- TrackingQueryElement.cs
- ExtendedPropertyCollection.cs
- SimpleHandlerBuildProvider.cs
- FactoryMaker.cs
- SystemResourceHost.cs
- RequiredFieldValidator.cs
- GridViewCancelEditEventArgs.cs
- CacheModeConverter.cs
- PaintValueEventArgs.cs
- DataGridViewRowsAddedEventArgs.cs
- PageTheme.cs
- DiffuseMaterial.cs
- StringAttributeCollection.cs
- CryptoConfig.cs
- BindingNavigator.cs
- GradientStopCollection.cs
- COM2PropertyDescriptor.cs
- HostProtectionException.cs
- HttpCachePolicyElement.cs
- InternalRelationshipCollection.cs
- ILGenerator.cs
- StructuralType.cs
- KeyValuePairs.cs
- JpegBitmapEncoder.cs
- VisualStyleTypesAndProperties.cs
- ExtenderProviderService.cs
- IdleTimeoutMonitor.cs
- TypedReference.cs
- AnonymousIdentificationSection.cs
- SafeHandle.cs
- ComplexTypeEmitter.cs
- TrustVersion.cs
- WebPartDisplayModeEventArgs.cs
- MethodBuilderInstantiation.cs
- TextElementEditingBehaviorAttribute.cs
- XmlSchemaSearchPattern.cs
- CngProvider.cs
- ScrollBar.cs
- ContractMethodParameterInfo.cs
- TrackingServices.cs
- _BufferOffsetSize.cs
- HyperLinkDesigner.cs
- GenericUriParser.cs
- ArcSegment.cs
- OrderToken.cs
- EUCJPEncoding.cs
- HttpHandlerActionCollection.cs
- InkPresenter.cs
- Visual3DCollection.cs
- datacache.cs
- Internal.cs
- securitycriticaldata.cs
- DictionaryBase.cs
- ParameterCollection.cs
- DriveInfo.cs
- RunWorkerCompletedEventArgs.cs
- DataGridViewSortCompareEventArgs.cs
- Executor.cs
- MimeTypeMapper.cs
- HeaderCollection.cs
- SecurityTokenResolver.cs
- ImageConverter.cs
- SoapTypeAttribute.cs