Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- ListViewDesigner.cs
- FormViewDeletedEventArgs.cs
- DiscoveryDocumentLinksPattern.cs
- CodeObject.cs
- SynchronizationLockException.cs
- AppearanceEditorPart.cs
- ParserContext.cs
- WrapPanel.cs
- CanonicalFormWriter.cs
- Char.cs
- messageonlyhwndwrapper.cs
- AppSettingsExpressionBuilder.cs
- DictionaryEntry.cs
- DataRecordInternal.cs
- SettingsPropertyValue.cs
- NewArrayExpression.cs
- GB18030Encoding.cs
- xmlsaver.cs
- RawTextInputReport.cs
- HotCommands.cs
- DbConnectionFactory.cs
- MatrixTransform.cs
- Ipv6Element.cs
- ControlAdapter.cs
- CircleHotSpot.cs
- ElementUtil.cs
- NativeActivityTransactionContext.cs
- SrgsText.cs
- BackgroundFormatInfo.cs
- ProgramNode.cs
- ImportRequest.cs
- PropertyGridEditorPart.cs
- URLMembershipCondition.cs
- DbConnectionStringCommon.cs
- LayoutEditorPart.cs
- QueryAsyncResult.cs
- OleDbErrorCollection.cs
- TextTreeTextElementNode.cs
- FontConverter.cs
- filewebrequest.cs
- GridItemCollection.cs
- ControlCollection.cs
- KeyManager.cs
- Point3DAnimationBase.cs
- Compiler.cs
- BitmapScalingModeValidation.cs
- FontFamily.cs
- MobileControlPersister.cs
- StyleXamlParser.cs
- CompiledIdentityConstraint.cs
- SafeMILHandleMemoryPressure.cs
- DependencyObjectCodeDomSerializer.cs
- SystemException.cs
- Condition.cs
- LambdaSerializationException.cs
- ReflectionUtil.cs
- Bitmap.cs
- PrintDialog.cs
- SafeFindHandle.cs
- IgnoreSectionHandler.cs
- XmlAttributeCollection.cs
- FixUp.cs
- DecoderNLS.cs
- KeyGestureConverter.cs
- ResourceKey.cs
- RelationshipEndMember.cs
- BitmapEffectCollection.cs
- DataGridViewSelectedColumnCollection.cs
- WindowsHyperlink.cs
- SQLGuidStorage.cs
- PageParser.cs
- SettingsContext.cs
- SymbolMethod.cs
- ArraySegment.cs
- IndependentlyAnimatedPropertyMetadata.cs
- XPathNavigator.cs
- HttpApplication.cs
- Thread.cs
- ConfigXmlDocument.cs
- ListView.cs
- PointConverter.cs
- StatusBarAutomationPeer.cs
- ConfigurationManagerHelperFactory.cs
- SrgsElementList.cs
- HashCodeCombiner.cs
- NameValuePair.cs
- Subset.cs
- SafePEFileHandle.cs
- Module.cs
- AuthStoreRoleProvider.cs
- SocketStream.cs
- GenericTextProperties.cs
- Semaphore.cs
- Symbol.cs
- OdbcEnvironmentHandle.cs
- WCFServiceClientProxyGenerator.cs
- ScriptIgnoreAttribute.cs
- TextEditorParagraphs.cs
- Atom10FormatterFactory.cs
- EdmToObjectNamespaceMap.cs