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
- DataExchangeServiceBinder.cs
- AssemblyHash.cs
- Misc.cs
- CheckBoxFlatAdapter.cs
- BlurBitmapEffect.cs
- LOSFormatter.cs
- WS2007HttpBindingElement.cs
- NamespaceInfo.cs
- RuleProcessor.cs
- AncestorChangedEventArgs.cs
- SchemaEntity.cs
- mda.cs
- ImageMap.cs
- OpCellTreeNode.cs
- Point3DIndependentAnimationStorage.cs
- DesignerSerializerAttribute.cs
- TableLayoutRowStyleCollection.cs
- ConnectivityStatus.cs
- DocumentXmlWriter.cs
- InternalTransaction.cs
- WebPartDisplayMode.cs
- PageContent.cs
- ActiveXSite.cs
- OdbcConnection.cs
- Binding.cs
- WebPartEventArgs.cs
- ScriptControlManager.cs
- PathSegmentCollection.cs
- XmlStreamStore.cs
- TabletCollection.cs
- WmlValidationSummaryAdapter.cs
- EventMappingSettingsCollection.cs
- ContainsRowNumberChecker.cs
- TextSelectionHighlightLayer.cs
- TraceContextEventArgs.cs
- XmlAttribute.cs
- RichTextBoxContextMenu.cs
- NumericUpDownAcceleration.cs
- GroupBox.cs
- XsltContext.cs
- HyperLinkField.cs
- TextRange.cs
- UxThemeWrapper.cs
- FixedSOMFixedBlock.cs
- DecimalStorage.cs
- Stylus.cs
- TextTreeFixupNode.cs
- Lease.cs
- DataGridViewRowCollection.cs
- FastEncoderWindow.cs
- invalidudtexception.cs
- GridErrorDlg.cs
- BulletedListEventArgs.cs
- MemberAccessException.cs
- ArcSegment.cs
- ForceCopyBuildProvider.cs
- SpotLight.cs
- EmulateRecognizeCompletedEventArgs.cs
- WebServiceResponseDesigner.cs
- DrawingState.cs
- NumericUpDownAccelerationCollection.cs
- DriveNotFoundException.cs
- NamespaceQuery.cs
- XmlArrayItemAttribute.cs
- FixedDocument.cs
- Geometry3D.cs
- StoreItemCollection.Loader.cs
- PowerModeChangedEventArgs.cs
- SingleTagSectionHandler.cs
- MasterPageCodeDomTreeGenerator.cs
- InheritanceContextHelper.cs
- Grammar.cs
- ScriptingJsonSerializationSection.cs
- assertwrapper.cs
- DataProviderNameConverter.cs
- EditorPartCollection.cs
- DataGridViewRowHeightInfoNeededEventArgs.cs
- HtmlEmptyTagControlBuilder.cs
- SpellerError.cs
- PeerTransportListenAddressValidator.cs
- CultureSpecificStringDictionary.cs
- PathSegment.cs
- PanelStyle.cs
- PasswordPropertyTextAttribute.cs
- BaseServiceProvider.cs
- MappingItemCollection.cs
- NegationPusher.cs
- XmlSchemaProviderAttribute.cs
- ClaimTypeElement.cs
- CompModSwitches.cs
- ListBoxItemWrapperAutomationPeer.cs
- WmlSelectionListAdapter.cs
- xamlnodes.cs
- MetabaseReader.cs
- XPathSelfQuery.cs
- TextSegment.cs
- FixedBufferAttribute.cs
- ProvideValueServiceProvider.cs
- keycontainerpermission.cs
- XamlReader.cs