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
- ResourceExpressionEditorSheet.cs
- BaseParser.cs
- EqualityComparer.cs
- HistoryEventArgs.cs
- MetricEntry.cs
- CodeNamespace.cs
- ThreadNeutralSemaphore.cs
- _HTTPDateParse.cs
- DrawTreeNodeEventArgs.cs
- Serializer.cs
- Bold.cs
- GenerateHelper.cs
- RelationshipConstraintValidator.cs
- PathNode.cs
- RMPublishingDialog.cs
- BigInt.cs
- TemplateAction.cs
- EventOpcode.cs
- HttpWebResponse.cs
- XmlChildEnumerator.cs
- WebBrowserHelper.cs
- ControlUtil.cs
- WeakHashtable.cs
- PolyLineSegment.cs
- PermissionSetTriple.cs
- ThreadStateException.cs
- LayoutTableCell.cs
- PackageDigitalSignatureManager.cs
- WebPartMinimizeVerb.cs
- ProjectionPath.cs
- TextClipboardData.cs
- Substitution.cs
- UrlAuthFailedErrorFormatter.cs
- CodeMemberField.cs
- OrderingInfo.cs
- WebPartPersonalization.cs
- RSAPKCS1KeyExchangeFormatter.cs
- Header.cs
- Section.cs
- SR.cs
- TraceUtils.cs
- XomlCompiler.cs
- MetafileHeaderWmf.cs
- UpdatableWrapper.cs
- EncryptedKey.cs
- CodePrimitiveExpression.cs
- UriSection.cs
- HebrewCalendar.cs
- QueryIntervalOp.cs
- ReliabilityContractAttribute.cs
- TypeUnloadedException.cs
- InlineUIContainer.cs
- _NtlmClient.cs
- GuidelineSet.cs
- WinFormsSecurity.cs
- WindowsListViewScroll.cs
- MetaTableHelper.cs
- ToolStripHighContrastRenderer.cs
- AddInEnvironment.cs
- KeyboardEventArgs.cs
- MetadataReference.cs
- PageBuildProvider.cs
- MetadataArtifactLoaderCompositeFile.cs
- VisualBasicReference.cs
- Identity.cs
- ToggleProviderWrapper.cs
- ScriptingRoleServiceSection.cs
- TreeChangeInfo.cs
- MetricEntry.cs
- ActivityTrace.cs
- HealthMonitoringSection.cs
- ParallelTimeline.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- QueryContinueDragEvent.cs
- InvalidateEvent.cs
- ReachDocumentReferenceSerializerAsync.cs
- DesigntimeLicenseContextSerializer.cs
- XPathPatternBuilder.cs
- EntitySetBaseCollection.cs
- MembershipValidatePasswordEventArgs.cs
- SwitchLevelAttribute.cs
- PointHitTestResult.cs
- RepeaterItemEventArgs.cs
- SizeF.cs
- TcpChannelHelper.cs
- SimplePropertyEntry.cs
- ListViewItem.cs
- PolyQuadraticBezierSegment.cs
- WebEventCodes.cs
- ConsumerConnectionPointCollection.cs
- XPathException.cs
- Peer.cs
- GridToolTip.cs
- MimeWriter.cs
- CaseKeyBox.xaml.cs
- TogglePattern.cs
- DataGridViewDataConnection.cs
- AspNetRouteServiceHttpHandler.cs
- GenerateTemporaryTargetAssembly.cs
- Baml2006Reader.cs