Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Common / Utils / Boolean / IdentifierService.cs / 1599186 / 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; using System.Runtime.CompilerServices; 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(); [MethodImpl(MethodImplOptions.NoInlining | MethodImplOptions.NoOptimization)] 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
- HttpCookiesSection.cs
- HttpHandlersSection.cs
- MembershipAdapter.cs
- ToolStripRenderer.cs
- LeaseManager.cs
- XamlFilter.cs
- SoapTransportImporter.cs
- XmlSchemaAll.cs
- GatewayDefinition.cs
- TextEditorContextMenu.cs
- AliasExpr.cs
- COM2PropertyDescriptor.cs
- GeneralTransform3DTo2DTo3D.cs
- XmlSchemaExternal.cs
- SqlMethodAttribute.cs
- BackoffTimeoutHelper.cs
- DigestTraceRecordHelper.cs
- ComponentResourceKeyConverter.cs
- ByteStack.cs
- SmtpNtlmAuthenticationModule.cs
- LicenseManager.cs
- JsonFormatWriterGenerator.cs
- AdapterUtil.cs
- ResourceContainer.cs
- ExpressionBuilderContext.cs
- EditorPartCollection.cs
- RouteData.cs
- VarInfo.cs
- SqlPersonalizationProvider.cs
- ProtocolsConfiguration.cs
- XmlException.cs
- HtmlShimManager.cs
- Argument.cs
- RuntimeResourceSet.cs
- FontFaceLayoutInfo.cs
- FontStyles.cs
- TextLineBreak.cs
- OneOfConst.cs
- CaseStatementSlot.cs
- XmlExtensionFunction.cs
- EdmError.cs
- AccessDataSourceView.cs
- QueryConverter.cs
- RNGCryptoServiceProvider.cs
- CalendarDay.cs
- TargetException.cs
- MultiDataTrigger.cs
- ConnectionManagementElement.cs
- ConsoleTraceListener.cs
- TreeIterators.cs
- VariantWrapper.cs
- ListItemParagraph.cs
- UnSafeCharBuffer.cs
- PhysicalFontFamily.cs
- PackageDigitalSignature.cs
- HandlerFactoryCache.cs
- DataGridViewRowHeaderCell.cs
- HtmlInputControl.cs
- HttpCookie.cs
- XmlSchemaValidationException.cs
- UpdatePanelTrigger.cs
- GridViewDesigner.cs
- SystemInformation.cs
- altserialization.cs
- EncryptedXml.cs
- StringKeyFrameCollection.cs
- ComplexLine.cs
- NativeMethods.cs
- HttpClientCertificate.cs
- BuildProviderAppliesToAttribute.cs
- HttpChannelBindingToken.cs
- AttachInfo.cs
- WindowProviderWrapper.cs
- CodeCatchClause.cs
- RenderingEventArgs.cs
- ObjectQueryExecutionPlan.cs
- RenderData.cs
- ChainOfDependencies.cs
- AmbientLight.cs
- ColorTransform.cs
- Odbc32.cs
- XPathSelfQuery.cs
- Visual.cs
- SmtpNtlmAuthenticationModule.cs
- SimpleModelProvider.cs
- StructuralCache.cs
- PropertyNames.cs
- SystemWebCachingSectionGroup.cs
- HttpFileCollectionBase.cs
- DoubleAnimationClockResource.cs
- COM2ExtendedUITypeEditor.cs
- TileBrush.cs
- StateFinalizationActivity.cs
- StylusDevice.cs
- ServiceDesigner.xaml.cs
- ViewUtilities.cs
- DesignerSerializationVisibilityAttribute.cs
- PrintDocument.cs
- RootBuilder.cs
- XpsException.cs