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
- SystemInfo.cs
- AdjustableArrowCap.cs
- PathFigureCollectionValueSerializer.cs
- CollectionView.cs
- WindowsGraphicsWrapper.cs
- XmlKeywords.cs
- StrokeCollectionConverter.cs
- CultureInfoConverter.cs
- MSAANativeProvider.cs
- XmlSchemaImporter.cs
- DBDataPermission.cs
- GrammarBuilder.cs
- SqlDataSourceCommandEventArgs.cs
- SmiConnection.cs
- XamlSerializer.cs
- ByteKeyFrameCollection.cs
- EventMappingSettings.cs
- XmlEncodedRawTextWriter.cs
- DoubleKeyFrameCollection.cs
- SoapDocumentMethodAttribute.cs
- ArgumentNullException.cs
- ByteStorage.cs
- FormatConvertedBitmap.cs
- TabControlCancelEvent.cs
- DefaultCommandConverter.cs
- SemaphoreSecurity.cs
- ToolTip.cs
- FormatConvertedBitmap.cs
- WeakHashtable.cs
- NotCondition.cs
- MessageEncodingBindingElementImporter.cs
- _StreamFramer.cs
- HtmlImage.cs
- RegistryPermission.cs
- DXD.cs
- SplitterCancelEvent.cs
- StaticDataManager.cs
- ConfigurationLocation.cs
- FolderLevelBuildProviderAppliesToAttribute.cs
- ScaleTransform3D.cs
- ListDictionaryInternal.cs
- UniqueID.cs
- ServiceProviders.cs
- SplineKeyFrames.cs
- SchemaInfo.cs
- TemplateControlParser.cs
- RepeaterItemCollection.cs
- DataGridViewRow.cs
- InfoCardRSAPKCS1KeyExchangeDeformatter.cs
- StructuredTypeEmitter.cs
- PeerName.cs
- XXXInfos.cs
- RuleInfoComparer.cs
- XmlAttributeHolder.cs
- BCLDebug.cs
- WebDisplayNameAttribute.cs
- RelativeSource.cs
- NotificationContext.cs
- DBCommandBuilder.cs
- SamlNameIdentifierClaimResource.cs
- SQLMembershipProvider.cs
- UIElementIsland.cs
- BinaryExpressionHelper.cs
- XmlStreamNodeWriter.cs
- ConfigurationManagerInternalFactory.cs
- XmlEncoding.cs
- ToolBarButtonDesigner.cs
- UrlAuthFailedErrorFormatter.cs
- SiteMapNodeItem.cs
- DataGridHeaderBorder.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- Signature.cs
- DocumentPage.cs
- XmlUnspecifiedAttribute.cs
- DecoderExceptionFallback.cs
- PageContentAsyncResult.cs
- CellParagraph.cs
- ControlHelper.cs
- XhtmlBasicCalendarAdapter.cs
- SqlDataSourceSelectingEventArgs.cs
- XmlText.cs
- CreateCardRequest.cs
- KeyFrames.cs
- UserControlBuildProvider.cs
- ISO2022Encoding.cs
- ErrorFormatterPage.cs
- EntityDataSourceContextCreatedEventArgs.cs
- GlobalProxySelection.cs
- FlowDocumentPageViewerAutomationPeer.cs
- BooleanProjectedSlot.cs
- EastAsianLunisolarCalendar.cs
- MissingMemberException.cs
- ArcSegment.cs
- ProfileService.cs
- ChangeConflicts.cs
- ParameterBuilder.cs
- TableLayoutStyleCollection.cs
- MemoryFailPoint.cs
- Stroke2.cs
- PersonalizationEntry.cs