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
- ReturnEventArgs.cs
- ImageSource.cs
- PopupEventArgs.cs
- XmlDataDocument.cs
- MenuItemBinding.cs
- ContextItem.cs
- DataGridHeaderBorder.cs
- MergeFailedEvent.cs
- ResourceDictionary.cs
- HandlerFactoryWrapper.cs
- XmlChoiceIdentifierAttribute.cs
- EditorPart.cs
- DataSourceView.cs
- PhysicalAddress.cs
- SystemNetworkInterface.cs
- ProcessStartInfo.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- BrowserDefinitionCollection.cs
- PixelShader.cs
- DateTimeValueSerializerContext.cs
- ContainsRowNumberChecker.cs
- TemplateField.cs
- Vector3DCollection.cs
- SystemIPv6InterfaceProperties.cs
- AuthenticationServiceManager.cs
- RangeContentEnumerator.cs
- SpecialTypeDataContract.cs
- DataGridDesigner.cs
- StickyNoteContentControl.cs
- NameTable.cs
- XsltCompileContext.cs
- AssemblySettingAttributes.cs
- OleAutBinder.cs
- FontCollection.cs
- WindowsScroll.cs
- EqualityComparer.cs
- WsiProfilesElement.cs
- OracleTimeSpan.cs
- SettingsPropertyNotFoundException.cs
- TextRangeBase.cs
- LockedBorderGlyph.cs
- TextAnchor.cs
- String.cs
- EndOfStreamException.cs
- StylusSystemGestureEventArgs.cs
- XmlSchemaAll.cs
- MetadataPropertyAttribute.cs
- PageThemeParser.cs
- WebZone.cs
- MethodToken.cs
- Label.cs
- OleDbConnectionFactory.cs
- BackgroundWorker.cs
- GuidelineSet.cs
- QuerySelectOp.cs
- UniqueID.cs
- SimpleHandlerBuildProvider.cs
- OutputWindow.cs
- CompoundFileStreamReference.cs
- StyleTypedPropertyAttribute.cs
- SingleAnimation.cs
- FileDialog_Vista.cs
- activationcontext.cs
- ExecutionEngineException.cs
- ContextInformation.cs
- CodeDomLoader.cs
- NullableIntMinMaxAggregationOperator.cs
- SimpleTextLine.cs
- ControlBuilder.cs
- SchemaLookupTable.cs
- TemplateKeyConverter.cs
- ValidationSummary.cs
- PeerDefaultCustomResolverClient.cs
- ConnectionsZone.cs
- LineGeometry.cs
- InvalidFilterCriteriaException.cs
- TrackingParticipant.cs
- ResourceAssociationSet.cs
- CodeLinePragma.cs
- DataControlFieldCollection.cs
- LogLogRecordEnumerator.cs
- ScriptReference.cs
- AdapterDictionary.cs
- XmlSchemaSimpleContentRestriction.cs
- TransformerConfigurationWizardBase.cs
- TagPrefixAttribute.cs
- FragmentQuery.cs
- Symbol.cs
- RangeContentEnumerator.cs
- ObjectTag.cs
- NetworkInformationPermission.cs
- Attributes.cs
- XmlAttributeAttribute.cs
- ChangeBlockUndoRecord.cs
- path.cs
- HotSpotCollection.cs
- DrawListViewSubItemEventArgs.cs
- ProgressBar.cs
- ScrollViewerAutomationPeer.cs
- Group.cs