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
- controlskin.cs
- TextWriter.cs
- NominalTypeEliminator.cs
- PersonalizationStateQuery.cs
- SHA256Managed.cs
- OutputScopeManager.cs
- Rule.cs
- MdImport.cs
- WeakReadOnlyCollection.cs
- Size3D.cs
- OdbcCommandBuilder.cs
- InputLangChangeEvent.cs
- DataListGeneralPage.cs
- Timeline.cs
- Object.cs
- HttpListenerContext.cs
- InvalidOperationException.cs
- WindowsContainer.cs
- AssemblyInfo.cs
- ContentTextAutomationPeer.cs
- BackgroundWorker.cs
- ipaddressinformationcollection.cs
- Scheduling.cs
- IteratorDescriptor.cs
- Privilege.cs
- SqlFacetAttribute.cs
- Missing.cs
- LoadGrammarCompletedEventArgs.cs
- OpacityConverter.cs
- HMACSHA256.cs
- CanonicalXml.cs
- SecureEnvironment.cs
- DbConnectionPoolGroup.cs
- CompoundFileIOPermission.cs
- InstanceBehavior.cs
- HandoffBehavior.cs
- TextFormatterHost.cs
- Style.cs
- DirtyTextRange.cs
- StreamWriter.cs
- PictureBox.cs
- CellCreator.cs
- PartManifestEntry.cs
- SmiEventSink_DeferedProcessing.cs
- CodeDelegateCreateExpression.cs
- SqlDataSourceStatusEventArgs.cs
- TextRunCache.cs
- unitconverter.cs
- Win32.cs
- UIPermission.cs
- GenerateHelper.cs
- Cursors.cs
- AuthenticationModuleElement.cs
- AddInProcess.cs
- COM2IDispatchConverter.cs
- EntityViewGenerationAttribute.cs
- NumericUpDown.cs
- AsyncResult.cs
- Boolean.cs
- ComponentEvent.cs
- filewebresponse.cs
- HandledEventArgs.cs
- XNodeNavigator.cs
- SafeUserTokenHandle.cs
- GeneralTransform3DCollection.cs
- AsymmetricKeyExchangeFormatter.cs
- EntityDataSourceView.cs
- WebServiceClientProxyGenerator.cs
- TargetPerspective.cs
- SqlDataSourceCache.cs
- DbFunctionCommandTree.cs
- XPathSelectionIterator.cs
- TypedServiceChannelBuilder.cs
- EdgeModeValidation.cs
- StateRuntime.cs
- OlePropertyStructs.cs
- SizeChangedEventArgs.cs
- StringSorter.cs
- MultiBindingExpression.cs
- ListViewItem.cs
- NavigateEvent.cs
- DecimalConstantAttribute.cs
- SafeFileMappingHandle.cs
- TextTreeRootTextBlock.cs
- StringAttributeCollection.cs
- Pair.cs
- DelegateSerializationHolder.cs
- WebServiceData.cs
- ProxyWebPartManager.cs
- MultiView.cs
- SqlConnectionPoolProviderInfo.cs
- StylusButtonEventArgs.cs
- SmtpFailedRecipientException.cs
- SmtpCommands.cs
- VerificationException.cs
- DragStartedEventArgs.cs
- HorizontalAlignConverter.cs
- BinaryFormatterWriter.cs
- DeviceSpecific.cs
- DateTimeStorage.cs