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
- Confirm.cs
- WCFModelStrings.Designer.cs
- SynchronizedInputPattern.cs
- ListContractAdapter.cs
- ScriptIgnoreAttribute.cs
- FieldToken.cs
- PermissionAttributes.cs
- CodeParameterDeclarationExpressionCollection.cs
- OleDbConnectionInternal.cs
- SqlServer2KCompatibilityAnnotation.cs
- StringUtil.cs
- TextureBrush.cs
- ConfigXmlElement.cs
- MessageQueue.cs
- XmlSortKeyAccumulator.cs
- MaskedTextProvider.cs
- EndpointDesigner.cs
- UriTemplateTableMatchCandidate.cs
- StrokeNode.cs
- ProcessModelInfo.cs
- MenuAdapter.cs
- WSHttpBindingCollectionElement.cs
- DefaultPropertyAttribute.cs
- NamespaceQuery.cs
- PasswordTextNavigator.cs
- HtmlInputButton.cs
- XmlDataSourceView.cs
- DataGridViewEditingControlShowingEventArgs.cs
- AssemblyCollection.cs
- ProfileModule.cs
- ISCIIEncoding.cs
- NotifyCollectionChangedEventArgs.cs
- MimeParameterWriter.cs
- CompilationLock.cs
- RenderingBiasValidation.cs
- XmlStreamStore.cs
- MessageDecoder.cs
- CreateUserErrorEventArgs.cs
- OdbcConnectionHandle.cs
- VariableAction.cs
- UIElementAutomationPeer.cs
- WhitespaceRuleReader.cs
- DataTableReaderListener.cs
- BooleanFunctions.cs
- AssemblyName.cs
- ChooseAction.cs
- DiffuseMaterial.cs
- PerformanceCounter.cs
- QueryStringParameter.cs
- BaseTreeIterator.cs
- ScriptHandlerFactory.cs
- ClientSession.cs
- FileCodeGroup.cs
- XmlTypeMapping.cs
- VisualStyleRenderer.cs
- DataGridColumn.cs
- MessageFormatterConverter.cs
- Size.cs
- LeftCellWrapper.cs
- dbdatarecord.cs
- XPathSingletonIterator.cs
- SynchronizationContext.cs
- TripleDESCryptoServiceProvider.cs
- XmlSchemaGroup.cs
- WindowsSecurityTokenAuthenticator.cs
- SettingsSection.cs
- NameTable.cs
- PropertyAccessVisitor.cs
- BufferedWebEventProvider.cs
- Slider.cs
- WinCategoryAttribute.cs
- MouseWheelEventArgs.cs
- SafeRegistryKey.cs
- WmlListAdapter.cs
- SqlNodeAnnotation.cs
- XmlSchemaExternal.cs
- EncodingInfo.cs
- TextParagraph.cs
- Highlights.cs
- ObjectDataSourceView.cs
- ExpressionBinding.cs
- NegatedCellConstant.cs
- AsyncOperation.cs
- TCEAdapterGenerator.cs
- LogStore.cs
- BreakRecordTable.cs
- BrowserCapabilitiesCodeGenerator.cs
- LinqToSqlWrapper.cs
- SharedPersonalizationStateInfo.cs
- ComboBoxAutomationPeer.cs
- BaseCAMarshaler.cs
- DefaultSerializationProviderAttribute.cs
- AdRotator.cs
- CollectionViewGroupInternal.cs
- BezierSegment.cs
- TdsRecordBufferSetter.cs
- PageContent.cs
- HttpCacheParams.cs
- CodeAccessPermission.cs
- EdmSchemaAttribute.cs