Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- DependencyProperty.cs
- RealProxy.cs
- SchemaSetCompiler.cs
- PasswordTextNavigator.cs
- CAGDesigner.cs
- ApplyImportsAction.cs
- EllipseGeometry.cs
- ProxyHwnd.cs
- KeyboardInputProviderAcquireFocusEventArgs.cs
- SafeNativeMethods.cs
- PerformanceCounterPermissionAttribute.cs
- GacUtil.cs
- SessionSwitchEventArgs.cs
- NetMsmqBindingCollectionElement.cs
- ClusterSafeNativeMethods.cs
- SoapAttributes.cs
- ApplicationActivator.cs
- Variant.cs
- WebSysDescriptionAttribute.cs
- WorkflowServiceNamespace.cs
- DeleteMemberBinder.cs
- DomNameTable.cs
- UnorderedHashRepartitionStream.cs
- AuthorizationRuleCollection.cs
- PhonemeConverter.cs
- DebugControllerThread.cs
- FileLoadException.cs
- PathSegmentCollection.cs
- DataGridViewBindingCompleteEventArgs.cs
- SrgsDocument.cs
- WebConvert.cs
- CachedFontFace.cs
- RSAPKCS1KeyExchangeFormatter.cs
- CharacterBuffer.cs
- ExpressionPrefixAttribute.cs
- Privilege.cs
- smtpconnection.cs
- GeneratedContractType.cs
- TagPrefixCollection.cs
- DataControlCommands.cs
- UnsafeNativeMethods.cs
- XmlProcessingInstruction.cs
- SocketElement.cs
- SortedSet.cs
- RuntimeConfig.cs
- FormViewPagerRow.cs
- Bits.cs
- TextBoxBase.cs
- CapabilitiesRule.cs
- ResXBuildProvider.cs
- TextFormatterContext.cs
- AccessibleObject.cs
- TreeNodeConverter.cs
- ClientConfigurationSystem.cs
- CatalogZone.cs
- SessionStateUtil.cs
- XmlValidatingReader.cs
- Viewport3DAutomationPeer.cs
- WindowsFormsSectionHandler.cs
- ProcessHostConfigUtils.cs
- FirstQueryOperator.cs
- DataGridViewCellContextMenuStripNeededEventArgs.cs
- SimpleHandlerBuildProvider.cs
- DSACryptoServiceProvider.cs
- TimeoutTimer.cs
- IndicFontClient.cs
- WpfWebRequestHelper.cs
- NativeCppClassAttribute.cs
- DBBindings.cs
- ToolTipAutomationPeer.cs
- XmlLanguageConverter.cs
- SecurityTokenAuthenticator.cs
- TargetInvocationException.cs
- KerberosTokenFactoryCredential.cs
- TableSectionStyle.cs
- DataServiceQueryOfT.cs
- JavaScriptSerializer.cs
- CollectionDataContract.cs
- EventHandlerList.cs
- XmlReturnReader.cs
- CompositeKey.cs
- UnsafeNativeMethods.cs
- FrameworkContentElement.cs
- DiffuseMaterial.cs
- AuthenticationServiceManager.cs
- Label.cs
- SystemPens.cs
- httpserverutility.cs
- TogglePattern.cs
- WindowsStatusBar.cs
- ToolStripItemRenderEventArgs.cs
- XmlDictionaryWriter.cs
- CodeLinePragma.cs
- GroupBoxRenderer.cs
- DelegatingTypeDescriptionProvider.cs
- DeferredTextReference.cs
- FileBasedResourceGroveler.cs
- QueryPageSettingsEventArgs.cs
- ToolStripControlHost.cs
- SystemIPv4InterfaceProperties.cs