Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- IPAddress.cs
- XmlSchemaGroupRef.cs
- CodeFieldReferenceExpression.cs
- ProtocolsSection.cs
- LicFileLicenseProvider.cs
- KerberosTicketHashIdentifierClause.cs
- ReverseInheritProperty.cs
- HttpWriter.cs
- Line.cs
- SqlBooleanMismatchVisitor.cs
- SimpleModelProvider.cs
- TimeZone.cs
- AppDomainProtocolHandler.cs
- ResourceManagerWrapper.cs
- UpdatableWrapper.cs
- OneOfConst.cs
- ReadOnlyDictionary.cs
- TextElement.cs
- EmptyImpersonationContext.cs
- AsyncResult.cs
- MenuItemAutomationPeer.cs
- TabletDevice.cs
- BrowserDefinition.cs
- CompareInfo.cs
- FocusManager.cs
- TreeView.cs
- ProviderUtil.cs
- NonVisualControlAttribute.cs
- Listbox.cs
- WpfSharedXamlSchemaContext.cs
- StringCollectionMarkupSerializer.cs
- ScriptResourceInfo.cs
- MyContact.cs
- ResponseStream.cs
- FigureParaClient.cs
- ChildrenQuery.cs
- EventManager.cs
- BitmapSource.cs
- WindowsEditBoxRange.cs
- OrderedDictionary.cs
- XMLSyntaxException.cs
- TransformerInfoCollection.cs
- ButtonPopupAdapter.cs
- CompressionTransform.cs
- RegexInterpreter.cs
- ExtenderControl.cs
- XslCompiledTransform.cs
- VisualStyleRenderer.cs
- KeyedHashAlgorithm.cs
- storepermission.cs
- SqlInternalConnection.cs
- GetRecipientListRequest.cs
- RemoteWebConfigurationHostStream.cs
- autovalidator.cs
- DelegatingHeader.cs
- CompiledQuery.cs
- RevocationPoint.cs
- QfeChecker.cs
- WebBrowserNavigatedEventHandler.cs
- MaskInputRejectedEventArgs.cs
- StrongName.cs
- Codec.cs
- XhtmlBasicTextViewAdapter.cs
- StyleSheetComponentEditor.cs
- AppDomainUnloadedException.cs
- ConsumerConnectionPoint.cs
- ChildrenQuery.cs
- SqlDataSourceFilteringEventArgs.cs
- SpellerHighlightLayer.cs
- ItemCollection.cs
- MimeTypeAttribute.cs
- WebPartZoneBase.cs
- HttpListenerPrefixCollection.cs
- Trace.cs
- DrawingVisual.cs
- securitycriticaldata.cs
- DataObjectEventArgs.cs
- SiteMapProvider.cs
- CodeCommentStatementCollection.cs
- IISMapPath.cs
- SchemaHelper.cs
- DataShape.cs
- TheQuery.cs
- IdentityVerifier.cs
- DateTimeFormatInfo.cs
- HttpWrapper.cs
- HitTestFilterBehavior.cs
- KnownTypesProvider.cs
- ManagementDateTime.cs
- BooleanAnimationUsingKeyFrames.cs
- InitializeCorrelation.cs
- COM2Enum.cs
- FusionWrap.cs
- NativeMethods.cs
- Point3DCollection.cs
- ConvertEvent.cs
- SessionEndedEventArgs.cs
- SiteMapProvider.cs
- ServiceRouteHandler.cs
- CheckableControlBaseAdapter.cs