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
- NameValuePair.cs
- BitmapData.cs
- StringUtil.cs
- InternalRelationshipCollection.cs
- Identifier.cs
- PtsContext.cs
- ContentValidator.cs
- CodeDOMUtility.cs
- DESCryptoServiceProvider.cs
- TimeoutTimer.cs
- XmlDownloadManager.cs
- EmissiveMaterial.cs
- SemanticResolver.cs
- EntityDataSourceDataSelectionPanel.designer.cs
- WorkflowValidationFailedException.cs
- DetailsViewRow.cs
- StateValidator.cs
- Operators.cs
- SubpageParaClient.cs
- TraceListeners.cs
- EasingFunctionBase.cs
- Select.cs
- unsafeIndexingFilterStream.cs
- Expr.cs
- PersonalizationProviderHelper.cs
- DefaultValueTypeConverter.cs
- Vector3DIndependentAnimationStorage.cs
- Error.cs
- HtmlControlAdapter.cs
- FastEncoderWindow.cs
- CodeAccessPermission.cs
- UnhandledExceptionEventArgs.cs
- CodePageUtils.cs
- KeyTimeConverter.cs
- OletxTransactionHeader.cs
- TransformerTypeCollection.cs
- StylusEventArgs.cs
- ListViewEditEventArgs.cs
- AdjustableArrowCap.cs
- EraserBehavior.cs
- FormsAuthenticationTicket.cs
- ToolCreatedEventArgs.cs
- WorkflowOperationAsyncResult.cs
- ConnectionManagementSection.cs
- PasswordBox.cs
- DirectoryNotFoundException.cs
- DNS.cs
- EntityFrameworkVersions.cs
- SqlFileStream.cs
- TypeLibConverter.cs
- CreateUserWizardDesigner.cs
- ActivityXRefPropertyEditor.cs
- ControlPaint.cs
- TableLayoutPanel.cs
- MenuScrollingVisibilityConverter.cs
- Avt.cs
- IisNotInstalledException.cs
- DiagnosticTraceSource.cs
- WsrmTraceRecord.cs
- ResizeBehavior.cs
- Compiler.cs
- DataGridViewRowCollection.cs
- ColorMatrix.cs
- EventLog.cs
- ListDictionary.cs
- SizeF.cs
- Literal.cs
- HtmlShim.cs
- ExpandableObjectConverter.cs
- RuntimeTrackingProfile.cs
- WebUtil.cs
- RepeatInfo.cs
- AttributeEmitter.cs
- util.cs
- ListControlConvertEventArgs.cs
- GroupQuery.cs
- DecoderExceptionFallback.cs
- NullableConverter.cs
- TimeSpanStorage.cs
- RijndaelManaged.cs
- XpsDigitalSignature.cs
- Inline.cs
- DeploymentSection.cs
- InvokeWebServiceDesigner.cs
- HttpChannelFactory.cs
- RawStylusInputCustomDataList.cs
- GlyphInfoList.cs
- XmlEnumAttribute.cs
- EndPoint.cs
- DependencyObjectProvider.cs
- XmlSchemaObjectCollection.cs
- SoapCommonClasses.cs
- GridViewCommandEventArgs.cs
- Context.cs
- JsonFormatWriterGenerator.cs
- QueueTransferProtocol.cs
- ValidationSummary.cs
- MarshalByRefObject.cs
- WrappedIUnknown.cs
- PolicyException.cs