Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SafeSecurityHandles.cs
- AnnotationAdorner.cs
- WebReferenceCollection.cs
- RectangleGeometry.cs
- HttpModulesSection.cs
- Subtract.cs
- XmlValueConverter.cs
- Helpers.cs
- StyleBamlRecordReader.cs
- PolyLineSegment.cs
- XmlCDATASection.cs
- OwnerDrawPropertyBag.cs
- NextPreviousPagerField.cs
- ErrorInfoXmlDocument.cs
- DataGridViewSortCompareEventArgs.cs
- WebZone.cs
- Panel.cs
- Calendar.cs
- GenericRootAutomationPeer.cs
- AncillaryOps.cs
- Exception.cs
- basecomparevalidator.cs
- SystemIPGlobalStatistics.cs
- Thickness.cs
- AuthenticatingEventArgs.cs
- DeobfuscatingStream.cs
- HGlobalSafeHandle.cs
- ipaddressinformationcollection.cs
- OpCellTreeNode.cs
- DetailsViewPageEventArgs.cs
- DataSet.cs
- EntityTypeBase.cs
- TreeViewItemAutomationPeer.cs
- SessionIDManager.cs
- ServiceDescriptionImporter.cs
- userdatakeys.cs
- TrackingProfileDeserializationException.cs
- EventWaitHandleSecurity.cs
- ChannelProtectionRequirements.cs
- XmlSchemaObject.cs
- SmiTypedGetterSetter.cs
- DBCommand.cs
- MainMenu.cs
- TraceSection.cs
- AVElementHelper.cs
- EntityStoreSchemaGenerator.cs
- TagPrefixAttribute.cs
- CaseInsensitiveComparer.cs
- TypeBuilder.cs
- ErrorHandlingAcceptor.cs
- httpserverutility.cs
- ChangeProcessor.cs
- DataGridColumnDropSeparator.cs
- DynamicScriptObject.cs
- CodeGenerator.cs
- CultureInfoConverter.cs
- DoubleLinkListEnumerator.cs
- ReadingWritingEntityEventArgs.cs
- IssuedTokenParametersElement.cs
- ValidationSettings.cs
- DBConnectionString.cs
- GroupBox.cs
- DataStorage.cs
- CollectionBase.cs
- XmlUtil.cs
- TrustManager.cs
- GeneralTransform2DTo3D.cs
- UIElementHelper.cs
- SqlBulkCopyColumnMappingCollection.cs
- TextTreeUndoUnit.cs
- InfoCardTrace.cs
- HMACSHA512.cs
- InstanceDataCollection.cs
- SqlStatistics.cs
- GPPOINTF.cs
- BitmapEffectInput.cs
- ConfigLoader.cs
- WebBrowserBase.cs
- HostedImpersonationContext.cs
- IERequestCache.cs
- BitmapEffectInputData.cs
- ListSourceHelper.cs
- odbcmetadatacollectionnames.cs
- CodeChecksumPragma.cs
- MessageDescription.cs
- CodeIdentifier.cs
- TextOnlyOutput.cs
- ExpressionBuilderContext.cs
- ElementsClipboardData.cs
- DataGridViewUtilities.cs
- RectKeyFrameCollection.cs
- XsdDateTime.cs
- HtmlButton.cs
- BaseTemplateParser.cs
- XmlCustomFormatter.cs
- XPathPatternParser.cs
- SrgsDocumentParser.cs
- EventSource.cs
- WsatEtwTraceListener.cs
- WindowsListViewItemStartMenu.cs