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
- FixedPageAutomationPeer.cs
- DataTableClearEvent.cs
- EventMappingSettingsCollection.cs
- EntityKeyElement.cs
- XmlAnyElementAttributes.cs
- VirtualizingStackPanel.cs
- Atom10FormatterFactory.cs
- AspCompat.cs
- RequestTimeoutManager.cs
- Imaging.cs
- ModuleBuilder.cs
- TargetFrameworkUtil.cs
- TrackingRecordPreFilter.cs
- RichTextBoxConstants.cs
- DataAdapter.cs
- IndexedString.cs
- DataServiceClientException.cs
- WeakReferenceKey.cs
- RootDesignerSerializerAttribute.cs
- SaveFileDialog.cs
- EditorPartChrome.cs
- StylusDevice.cs
- TargetConverter.cs
- InternalException.cs
- IndentedWriter.cs
- Win32.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- DeclarativeCatalogPart.cs
- SmtpClient.cs
- WindowsEditBoxRange.cs
- AttributeData.cs
- Inflater.cs
- login.cs
- CollectionContainer.cs
- FreezableDefaultValueFactory.cs
- AutomationPeer.cs
- DataGridViewCellStyleConverter.cs
- ACE.cs
- TextProperties.cs
- HotSpotCollection.cs
- XmlnsDefinitionAttribute.cs
- EntityDataSourceStatementEditor.cs
- safelinkcollection.cs
- MsmqActivation.cs
- MembershipSection.cs
- PolyBezierSegmentFigureLogic.cs
- OSFeature.cs
- QueueProcessor.cs
- BufferBuilder.cs
- RepeatInfo.cs
- ActivationServices.cs
- HtmlInputFile.cs
- StateRuntime.cs
- ServiceNameElementCollection.cs
- StatusBar.cs
- ISSmlParser.cs
- Typography.cs
- HttpRuntime.cs
- ScrollChangedEventArgs.cs
- DetailsViewModeEventArgs.cs
- WebUtil.cs
- GPPOINTF.cs
- SupportingTokenChannel.cs
- NullReferenceException.cs
- SessionPageStatePersister.cs
- FontConverter.cs
- XmlSerializerVersionAttribute.cs
- XhtmlStyleClass.cs
- ImageClickEventArgs.cs
- ThreadAbortException.cs
- UserNameSecurityToken.cs
- InlineUIContainer.cs
- EditCommandColumn.cs
- QueryPrefixOp.cs
- FileNotFoundException.cs
- ListDictionaryInternal.cs
- TraceEventCache.cs
- LinkConverter.cs
- ScrollEventArgs.cs
- PictureBox.cs
- DataGridViewCellConverter.cs
- InplaceBitmapMetadataWriter.cs
- ColorDialog.cs
- XmlUtilWriter.cs
- SqlDataSourceEnumerator.cs
- AuthenticationModuleElementCollection.cs
- MarkupCompilePass2.cs
- DataGridViewDataErrorEventArgs.cs
- LinkLabelLinkClickedEvent.cs
- ScopelessEnumAttribute.cs
- TrustManagerMoreInformation.cs
- SurrogateEncoder.cs
- MessageLoggingFilterTraceRecord.cs
- MemoryFailPoint.cs
- AppDomainAttributes.cs
- LinqToSqlWrapper.cs
- SessionEndedEventArgs.cs
- InstanceCompleteException.cs
- DesignDataSource.cs
- StorageEntityContainerMapping.cs