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
- WebScriptEnablingBehavior.cs
- PingOptions.cs
- ASCIIEncoding.cs
- EditorBrowsableAttribute.cs
- ELinqQueryState.cs
- InfoCardSchemas.cs
- NativeMethods.cs
- Pair.cs
- XhtmlBasicControlAdapter.cs
- TileBrush.cs
- ProviderSettings.cs
- PageStatePersister.cs
- DataKey.cs
- MergeFilterQuery.cs
- PointValueSerializer.cs
- WebConfigManager.cs
- LinkUtilities.cs
- ServiceProviders.cs
- HierarchicalDataBoundControl.cs
- SettingsProperty.cs
- ValidationEventArgs.cs
- WebServiceParameterData.cs
- PageStatePersister.cs
- ComboBox.cs
- ScrollData.cs
- TemplatedControlDesigner.cs
- Variant.cs
- UnsafeNetInfoNativeMethods.cs
- QueryableDataSourceHelper.cs
- ObjectTokenCategory.cs
- DrawingGroupDrawingContext.cs
- ZipIOFileItemStream.cs
- NetworkInformationException.cs
- SizeValueSerializer.cs
- ExceptionHandlersDesigner.cs
- ITextView.cs
- PingOptions.cs
- XPSSignatureDefinition.cs
- EntityConnection.cs
- WindowsBrush.cs
- SHA512.cs
- EntityViewGenerationConstants.cs
- LocalClientSecuritySettings.cs
- ModelVisual3D.cs
- TagNameToTypeMapper.cs
- PieceDirectory.cs
- EndpointInfo.cs
- ReachSerializerAsync.cs
- WebServiceEndpoint.cs
- DefaultExpression.cs
- TableParagraph.cs
- _OverlappedAsyncResult.cs
- FamilyMapCollection.cs
- ContainerControl.cs
- SystemShuttingDownException.cs
- MetadataCollection.cs
- SystemIPAddressInformation.cs
- ResponseStream.cs
- mediaclock.cs
- ISO2022Encoding.cs
- Triplet.cs
- ModelTreeEnumerator.cs
- FrameworkName.cs
- TiffBitmapDecoder.cs
- XPathAxisIterator.cs
- WebAdminConfigurationHelper.cs
- Rijndael.cs
- CalendarDesigner.cs
- PropertyCollection.cs
- DataGridViewSortCompareEventArgs.cs
- PointCollection.cs
- SqlCacheDependency.cs
- ChildDocumentBlock.cs
- DetailsViewInsertEventArgs.cs
- ObsoleteAttribute.cs
- StringBuilder.cs
- ToolBarButtonClickEvent.cs
- StringKeyFrameCollection.cs
- EventLogInformation.cs
- DataRelationPropertyDescriptor.cs
- LicenseProviderAttribute.cs
- DrawingGroup.cs
- EntityException.cs
- DataServiceQueryProvider.cs
- BoundConstants.cs
- CustomAssemblyResolver.cs
- BitStack.cs
- Logging.cs
- ListItemCollection.cs
- InputBindingCollection.cs
- DocumentXmlWriter.cs
- SharedStatics.cs
- PrivilegedConfigurationManager.cs
- AQNBuilder.cs
- SchemaObjectWriter.cs
- ApplicationSecurityInfo.cs
- ReadWriteSpinLock.cs
- StylusDownEventArgs.cs
- SAPIEngineTypes.cs
- HtmlElement.cs