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
- XPathScanner.cs
- NetCodeGroup.cs
- Token.cs
- connectionpool.cs
- FilteredAttributeCollection.cs
- TemplateColumn.cs
- MatrixTransform.cs
- ClientWindowsAuthenticationMembershipProvider.cs
- AvTrace.cs
- TimeSpanConverter.cs
- EndOfStreamException.cs
- NavigationProgressEventArgs.cs
- Function.cs
- ServiceCredentials.cs
- DisposableCollectionWrapper.cs
- HashStream.cs
- SimpleBitVector32.cs
- XamlDesignerSerializationManager.cs
- EntryPointNotFoundException.cs
- SparseMemoryStream.cs
- ResourceType.cs
- GradientStop.cs
- ColorTranslator.cs
- EqualityComparer.cs
- DataKey.cs
- AVElementHelper.cs
- ProvideValueServiceProvider.cs
- XmlNodeChangedEventManager.cs
- RequestContext.cs
- XmlDocumentFieldSchema.cs
- Opcode.cs
- MemberAccessException.cs
- UIElement.cs
- DiscriminatorMap.cs
- EtwTrace.cs
- TaiwanLunisolarCalendar.cs
- ModelItemExtensions.cs
- OperationContext.cs
- XmlCDATASection.cs
- SlipBehavior.cs
- SourceSwitch.cs
- UnsafeNativeMethods.cs
- DataGridViewRowPrePaintEventArgs.cs
- DesignerSerializationOptionsAttribute.cs
- NavigationCommands.cs
- WorkflowServiceHostFactory.cs
- ServerValidateEventArgs.cs
- PrintPageEvent.cs
- wmiprovider.cs
- HeaderedContentControl.cs
- BulletedListDesigner.cs
- EntityAdapter.cs
- SamlNameIdentifierClaimResource.cs
- SamlEvidence.cs
- ExpressionConverter.cs
- OracleRowUpdatedEventArgs.cs
- SapiRecoInterop.cs
- CustomValidator.cs
- OdbcDataAdapter.cs
- FillBehavior.cs
- UserControl.cs
- Char.cs
- HtmlShim.cs
- SynchronizingStream.cs
- TaskExtensions.cs
- _HeaderInfo.cs
- UnknownWrapper.cs
- DataFormat.cs
- ResourceExpression.cs
- RemotingAttributes.cs
- SamlSerializer.cs
- WindowCollection.cs
- PersonalizationProviderHelper.cs
- StrongNamePublicKeyBlob.cs
- IndentedWriter.cs
- ListControlConvertEventArgs.cs
- HtmlTextArea.cs
- TableCellAutomationPeer.cs
- DataServiceConfiguration.cs
- SystemColors.cs
- SmiMetaDataProperty.cs
- SchemaNamespaceManager.cs
- HtmlTextArea.cs
- DataObjectEventArgs.cs
- NativeMethods.cs
- TypeDescriptorContext.cs
- SimpleRecyclingCache.cs
- UidManager.cs
- COM2ICategorizePropertiesHandler.cs
- IconEditor.cs
- CodeDOMUtility.cs
- LogPolicy.cs
- ForwardPositionQuery.cs
- GenericEnumerator.cs
- ClientApiGenerator.cs
- SelectionProviderWrapper.cs
- SqlCharStream.cs
- coordinator.cs
- SchemaImporterExtensionsSection.cs
- CookieParameter.cs