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
- WinInetCache.cs
- XPathLexer.cs
- DBSchemaTable.cs
- SpinWait.cs
- NodeFunctions.cs
- CFGGrammar.cs
- QueryCacheKey.cs
- NonSerializedAttribute.cs
- NavigationWindowAutomationPeer.cs
- Guid.cs
- CompilerGlobalScopeAttribute.cs
- LocalizableResourceBuilder.cs
- OleCmdHelper.cs
- WindowsListViewItemCheckBox.cs
- ToolStripRenderEventArgs.cs
- XhtmlBasicListAdapter.cs
- Visual3DCollection.cs
- SqlVisitor.cs
- XmlIncludeAttribute.cs
- NameNode.cs
- TdsParserStaticMethods.cs
- RotateTransform3D.cs
- QuotedStringFormatReader.cs
- ToolstripProfessionalRenderer.cs
- CodeLinePragma.cs
- TextAnchor.cs
- OverflowException.cs
- HwndHost.cs
- Size3DValueSerializer.cs
- OleServicesContext.cs
- WhitespaceRule.cs
- MultiTargetingUtil.cs
- ProxyHwnd.cs
- EntityDataSourceWrapperCollection.cs
- _TransmitFileOverlappedAsyncResult.cs
- RawUIStateInputReport.cs
- SurrogateChar.cs
- SelectionItemPatternIdentifiers.cs
- IBuiltInEvidence.cs
- RewritingProcessor.cs
- Inflater.cs
- ValueQuery.cs
- WebPartConnectionsEventArgs.cs
- Currency.cs
- AnnotationHighlightLayer.cs
- DateTimePickerDesigner.cs
- DataGridViewRowPrePaintEventArgs.cs
- TerminatorSinks.cs
- StorageFunctionMapping.cs
- ServiceOperationParameter.cs
- ButtonStandardAdapter.cs
- ReflectionServiceProvider.cs
- BrowsableAttribute.cs
- HttpDictionary.cs
- ThreadAttributes.cs
- CodeCastExpression.cs
- IndentedWriter.cs
- MultipartIdentifier.cs
- DiscoveryReferences.cs
- DataGridViewDataErrorEventArgs.cs
- DivideByZeroException.cs
- StatusBarPanelClickEvent.cs
- ServiceActivationException.cs
- GetLedgerRequest.cs
- DataSysAttribute.cs
- CollectionViewGroupRoot.cs
- GenericWebPart.cs
- DelegateHelpers.cs
- ModelTreeEnumerator.cs
- SQLDateTime.cs
- ObjectQuery_EntitySqlExtensions.cs
- GenerateHelper.cs
- UserPreferenceChangingEventArgs.cs
- XmlReaderDelegator.cs
- EventProviderBase.cs
- CapabilitiesUse.cs
- EdgeModeValidation.cs
- ObjectConverter.cs
- PackageRelationship.cs
- IncrementalHitTester.cs
- SqlClientMetaDataCollectionNames.cs
- PathGeometry.cs
- MediaElement.cs
- CheckBoxFlatAdapter.cs
- Exception.cs
- Graphics.cs
- ComplexBindingPropertiesAttribute.cs
- CqlLexerHelpers.cs
- cookiecontainer.cs
- DifferencingCollection.cs
- DtdParser.cs
- Debugger.cs
- ProcessHostServerConfig.cs
- PropertyExpression.cs
- HostSecurityManager.cs
- DesignerDataStoredProcedure.cs
- CodeDomDesignerLoader.cs
- ValidatorCollection.cs
- TreeViewHitTestInfo.cs
- HMACSHA1.cs