Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Map / ViewGeneration / CqlGeneration / CqlIdentifiers.cs / 1305376 / CqlIdentifiers.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Data.Common.Utils; using System.Text; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; namespace System.Data.Mapping.ViewGeneration.Structures { // This class is responsible for ensuring unique aliases for _from0, etc // and block aliases T, T0, T1, etc internal class CqlIdentifiers : InternalBase { #region Constructor internal CqlIdentifiers() { m_identifiers = new Set(StringComparer.Ordinal); } #endregion #region Fields private Set m_identifiers; #endregion #region Methods // effects: Given a number, returns _from if it does not clashes with // any identifier, else returns _from_ _ where is the first number from 0 // where there is no clash internal string GetFromVariable(int num) { return GetNonConflictingName("_from", num); } // effects: Given a number, returns T if it does not clashes with // any identifier, else returns T_ _ where is the first number from 0 // where there is no clash internal string GetBlockAlias(int num) { return GetNonConflictingName("T", num); } // effects: Given a number, returns T if it does not clashes with // any identifier, else returns T_ where is the first number from 0 // where there is no clash internal string GetBlockAlias() { return GetNonConflictingName("T", -1); } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")] internal void AddIdentifier(string identifier) { m_identifiers.Add(identifier.ToLower(CultureInfo.InvariantCulture)); } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")] private string GetNonConflictingName(string prefix, int number) { // Do a case sensitive search but return the string that uses the // original prefix string result = number < 0 ? prefix : StringUtil.FormatInvariant("{0}{1}", prefix, number); // Check if the prefix exists or not if (m_identifiers.Contains(result.ToLower(CultureInfo.InvariantCulture)) == false) { return result; } // Go through integers and find the first one that does not clash for (int count = 0; count < int.MaxValue; count++) { if (number < 0) { result = StringUtil.FormatInvariant("{0}_{1}", prefix, count); } else { result = StringUtil.FormatInvariant("{0}_{1}_{2}", prefix, count, number); } if (m_identifiers.Contains(result.ToLower(CultureInfo.InvariantCulture)) == false) { return result; } } Debug.Fail("Found no unique _from till MaxValue?"); return null; } internal override void ToCompactString(StringBuilder builder) { m_identifiers.ToCompactString(builder); } #endregion } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @backupOwner [....] //--------------------------------------------------------------------- using System.Data.Common.Utils; using System.Text; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; namespace System.Data.Mapping.ViewGeneration.Structures { // This class is responsible for ensuring unique aliases for _from0, etc // and block aliases T, T0, T1, etc internal class CqlIdentifiers : InternalBase { #region Constructor internal CqlIdentifiers() { m_identifiers = new Set(StringComparer.Ordinal); } #endregion #region Fields private Set m_identifiers; #endregion #region Methods // effects: Given a number, returns _from if it does not clashes with // any identifier, else returns _from_ _ where is the first number from 0 // where there is no clash internal string GetFromVariable(int num) { return GetNonConflictingName("_from", num); } // effects: Given a number, returns T if it does not clashes with // any identifier, else returns T_ _ where is the first number from 0 // where there is no clash internal string GetBlockAlias(int num) { return GetNonConflictingName("T", num); } // effects: Given a number, returns T if it does not clashes with // any identifier, else returns T_ where is the first number from 0 // where there is no clash internal string GetBlockAlias() { return GetNonConflictingName("T", -1); } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")] internal void AddIdentifier(string identifier) { m_identifiers.Add(identifier.ToLower(CultureInfo.InvariantCulture)); } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")] private string GetNonConflictingName(string prefix, int number) { // Do a case sensitive search but return the string that uses the // original prefix string result = number < 0 ? prefix : StringUtil.FormatInvariant("{0}{1}", prefix, number); // Check if the prefix exists or not if (m_identifiers.Contains(result.ToLower(CultureInfo.InvariantCulture)) == false) { return result; } // Go through integers and find the first one that does not clash for (int count = 0; count < int.MaxValue; count++) { if (number < 0) { result = StringUtil.FormatInvariant("{0}_{1}", prefix, count); } else { result = StringUtil.FormatInvariant("{0}_{1}_{2}", prefix, count, number); } if (m_identifiers.Contains(result.ToLower(CultureInfo.InvariantCulture)) == false) { return result; } } Debug.Fail("Found no unique _from till MaxValue?"); return null; } internal override void ToCompactString(StringBuilder builder) { m_identifiers.ToCompactString(builder); } #endregion } } // 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
- QueueNameHelper.cs
- Registry.cs
- _ListenerAsyncResult.cs
- ProcessThreadCollection.cs
- Faults.cs
- VirtualPath.cs
- QueryNode.cs
- FixedSOMTextRun.cs
- SecuritySessionFilter.cs
- TemplatePagerField.cs
- GridViewSortEventArgs.cs
- ipaddressinformationcollection.cs
- ProviderException.cs
- XmlSchemaInferenceException.cs
- DiscreteKeyFrames.cs
- WebServiceFaultDesigner.cs
- ContainerVisual.cs
- DictionaryTraceRecord.cs
- BitStack.cs
- DetailsViewUpdateEventArgs.cs
- MultitargetUtil.cs
- PageThemeBuildProvider.cs
- TypeConverterHelper.cs
- HttpProfileGroupBase.cs
- DataStorage.cs
- OperationValidationEventArgs.cs
- EntityDataSourceQueryBuilder.cs
- LookupBindingPropertiesAttribute.cs
- ListenerElementsCollection.cs
- DeferredBinaryDeserializerExtension.cs
- XPathAncestorIterator.cs
- PropertyEmitter.cs
- RootDesignerSerializerAttribute.cs
- ImpersonationContext.cs
- DictionaryManager.cs
- COM2Enum.cs
- NetNamedPipeBindingElement.cs
- FlowPosition.cs
- DataBindEngine.cs
- NGCSerializationManager.cs
- ConstructorArgumentAttribute.cs
- X509CertificateValidator.cs
- Attachment.cs
- EntityDataSourceWrapper.cs
- WebBrowserNavigatedEventHandler.cs
- ToolboxItemCollection.cs
- WebPartMinimizeVerb.cs
- PrimitiveCodeDomSerializer.cs
- SecureEnvironment.cs
- Wrapper.cs
- DoWorkEventArgs.cs
- SignalGate.cs
- ServiceControllerDesigner.cs
- SqlDataSourceCommandEventArgs.cs
- PointValueSerializer.cs
- StackBuilderSink.cs
- CalendarItem.cs
- SerialPort.cs
- TypeBuilderInstantiation.cs
- FormsAuthenticationUserCollection.cs
- FormsAuthenticationUserCollection.cs
- HttpCacheParams.cs
- ConstructorBuilder.cs
- BindableTemplateBuilder.cs
- Rotation3D.cs
- RestHandlerFactory.cs
- IItemProperties.cs
- ToolStripSettings.cs
- RewritingProcessor.cs
- MimeObjectFactory.cs
- ActivityScheduledQuery.cs
- CurrentChangingEventManager.cs
- XmlSchemaCollection.cs
- GeneralTransform.cs
- LabelTarget.cs
- ArraySet.cs
- EventWaitHandleSecurity.cs
- ConfigXmlAttribute.cs
- XmlSchemaFacet.cs
- ProfileModule.cs
- DelegateArgument.cs
- Int32Rect.cs
- AmbientEnvironment.cs
- RangeValidator.cs
- IPGlobalProperties.cs
- SecurityState.cs
- XmlSchemaValidator.cs
- Polygon.cs
- CfgParser.cs
- XmlSignatureProperties.cs
- KeyboardEventArgs.cs
- webclient.cs
- SelectionProviderWrapper.cs
- SlipBehavior.cs
- StylusLogic.cs
- DataBinding.cs
- TextTreeTextBlock.cs
- Instrumentation.cs
- InternalsVisibleToAttribute.cs
- ConstructorNeedsTagAttribute.cs