Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataEntity / System / Data / Common / Utils / Boolean / IdentifierService.cs / 1 / IdentifierService.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Text; using System.Diagnostics; using System.Collections.ObjectModel; using System.Globalization; using System.Linq; namespace System.Data.Common.Utils.Boolean { ////// Services related to different identifier types for Boolean expressions. /// internal abstract class IdentifierService{ #region Static members internal static readonly IdentifierService Instance = GetIdentifierService(); private static IdentifierService GetIdentifierService() { Type identifierType = typeof(T_Identifier); if (identifierType.IsGenericType && identifierType.GetGenericTypeDefinition() == typeof(DomainConstraint<,>)) { // initialize a domain constraint literal service Type[] genericArguments = identifierType.GetGenericArguments(); Type variableType = genericArguments[0]; Type elementType = genericArguments[1]; return (IdentifierService )Activator.CreateInstance( typeof(DomainConstraintIdentifierService<,>).MakeGenericType(identifierType, variableType, elementType)); } else { // initialize a generic literal service for all other identifier types return new GenericIdentifierService(); } } #endregion #region Constructors private IdentifierService() { } #endregion #region Service methods /// /// Returns negation of the given literal. /// internal abstract LiteralNegateLiteral(Literal literal); /// /// Creates a new conversion context. /// internal abstract ConversionContextCreateConversionContext(); /// /// Performs local simplification appropriate to the current identifier. /// internal abstract BoolExprLocalSimplify(BoolExpr expression); #endregion private class GenericIdentifierService : IdentifierService { internal override Literal NegateLiteral(Literal literal) { // just invert the sign return new Literal (literal.Term, !literal.IsTermPositive); } internal override ConversionContext CreateConversionContext() { return new GenericConversionContext (); } internal override BoolExpr LocalSimplify(BoolExpr expression) { return expression.Accept(Simplifier .Instance); } } private class DomainConstraintIdentifierService : IdentifierService > { internal override Literal > NegateLiteral(Literal > literal) { // negate the literal by inverting the range, rather than changing the sign // of the literal TermExpr > term = new TermExpr >( literal.Term.Identifier.InvertDomainConstraint()); return new Literal >(term, literal.IsTermPositive); } internal override ConversionContext > CreateConversionContext() { return new DomainConstraintConversionContext (); } internal override BoolExpr > LocalSimplify(BoolExpr > expression) { expression = NegationPusher.EliminateNot (expression); return expression.Accept(Simplifier >.Instance); } } } } // 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.Diagnostics; using System.Collections.ObjectModel; using System.Globalization; using System.Linq; namespace System.Data.Common.Utils.Boolean { ////// Services related to different identifier types for Boolean expressions. /// internal abstract class IdentifierService{ #region Static members internal static readonly IdentifierService Instance = GetIdentifierService(); private static IdentifierService GetIdentifierService() { Type identifierType = typeof(T_Identifier); if (identifierType.IsGenericType && identifierType.GetGenericTypeDefinition() == typeof(DomainConstraint<,>)) { // initialize a domain constraint literal service Type[] genericArguments = identifierType.GetGenericArguments(); Type variableType = genericArguments[0]; Type elementType = genericArguments[1]; return (IdentifierService )Activator.CreateInstance( typeof(DomainConstraintIdentifierService<,>).MakeGenericType(identifierType, variableType, elementType)); } else { // initialize a generic literal service for all other identifier types return new GenericIdentifierService(); } } #endregion #region Constructors private IdentifierService() { } #endregion #region Service methods /// /// Returns negation of the given literal. /// internal abstract LiteralNegateLiteral(Literal literal); /// /// Creates a new conversion context. /// internal abstract ConversionContextCreateConversionContext(); /// /// Performs local simplification appropriate to the current identifier. /// internal abstract BoolExprLocalSimplify(BoolExpr expression); #endregion private class GenericIdentifierService : IdentifierService { internal override Literal NegateLiteral(Literal literal) { // just invert the sign return new Literal (literal.Term, !literal.IsTermPositive); } internal override ConversionContext CreateConversionContext() { return new GenericConversionContext (); } internal override BoolExpr LocalSimplify(BoolExpr expression) { return expression.Accept(Simplifier .Instance); } } private class DomainConstraintIdentifierService : IdentifierService > { internal override Literal > NegateLiteral(Literal > literal) { // negate the literal by inverting the range, rather than changing the sign // of the literal TermExpr > term = new TermExpr >( literal.Term.Identifier.InvertDomainConstraint()); return new Literal >(term, literal.IsTermPositive); } internal override ConversionContext > CreateConversionContext() { return new DomainConstraintConversionContext (); } internal override BoolExpr > LocalSimplify(BoolExpr > expression) { expression = NegationPusher.EliminateNot (expression); return expression.Accept(Simplifier >.Instance); } } } } // 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
- DecimalStorage.cs
- DataTableNameHandler.cs
- DictionaryManager.cs
- DataBindingCollection.cs
- XPathSelectionIterator.cs
- XmlObjectSerializer.cs
- TextWriterTraceListener.cs
- DuplicateMessageDetector.cs
- TreeView.cs
- ReferenceEqualityComparer.cs
- EmptyQuery.cs
- MembershipPasswordException.cs
- PageCatalogPart.cs
- PackageRelationshipCollection.cs
- ReachIDocumentPaginatorSerializerAsync.cs
- PenCursorManager.cs
- HitTestParameters3D.cs
- CompressEmulationStream.cs
- SocketPermission.cs
- CodeCommentStatementCollection.cs
- LogStream.cs
- AssemblyHash.cs
- LogicalTreeHelper.cs
- SafeTokenHandle.cs
- RightsManagementEncryptedStream.cs
- WebPart.cs
- FormatConvertedBitmap.cs
- figurelengthconverter.cs
- BamlRecordWriter.cs
- CountdownEvent.cs
- NaturalLanguageHyphenator.cs
- Vector.cs
- MailMessage.cs
- IgnorePropertiesAttribute.cs
- TriggerActionCollection.cs
- XmlTextReaderImpl.cs
- OleStrCAMarshaler.cs
- TraceRecords.cs
- CollectionDataContractAttribute.cs
- ToolStripOverflowButton.cs
- CodeNamespaceImport.cs
- LinqExpressionNormalizer.cs
- XPathEmptyIterator.cs
- LicenseProviderAttribute.cs
- CssStyleCollection.cs
- BitArray.cs
- RuntimeCompatibilityAttribute.cs
- Profiler.cs
- FormViewRow.cs
- SqlDataSourceView.cs
- CalendarDay.cs
- BroadcastEventHelper.cs
- PersianCalendar.cs
- MouseEventArgs.cs
- FontDifferentiator.cs
- StylusPointProperty.cs
- WmlValidatorAdapter.cs
- MetadataStore.cs
- MSG.cs
- Token.cs
- StateMachineExecutionState.cs
- ServiceModelSecurityTokenRequirement.cs
- MonikerHelper.cs
- PrintDialogException.cs
- KeyboardDevice.cs
- XMLUtil.cs
- WindowCollection.cs
- AspNetSynchronizationContext.cs
- FullTrustAssembliesSection.cs
- KeyValueSerializer.cs
- GroupDescription.cs
- MILUtilities.cs
- TextCollapsingProperties.cs
- HTMLTagNameToTypeMapper.cs
- Propagator.JoinPropagator.cs
- GrammarBuilderDictation.cs
- DesignOnlyAttribute.cs
- MethodExpr.cs
- PointUtil.cs
- TextBoxBase.cs
- NavigationPropertySingletonExpression.cs
- BindToObject.cs
- SerializerProvider.cs
- HttpBrowserCapabilitiesBase.cs
- StateMachineWorkflow.cs
- JoinTreeSlot.cs
- DropDownList.cs
- XmlQuerySequence.cs
- DrawingGroupDrawingContext.cs
- SendSecurityHeaderElement.cs
- ConfigurationStrings.cs
- SchemaElementLookUpTable.cs
- odbcmetadatafactory.cs
- mactripleDES.cs
- NavigatingCancelEventArgs.cs
- WebContext.cs
- SupportsEventValidationAttribute.cs
- NamespaceDecl.cs
- DbQueryCommandTree.cs
- EnumValAlphaComparer.cs