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
- SelectorItemAutomationPeer.cs
- BlurBitmapEffect.cs
- Model3DGroup.cs
- NameValueCollection.cs
- StreamHelper.cs
- ProjectionPath.cs
- SafeEventLogReadHandle.cs
- ProcessThread.cs
- SQLDecimalStorage.cs
- Events.cs
- ObjectDisposedException.cs
- TextPointerBase.cs
- Misc.cs
- GeneralTransform3D.cs
- OutputCacheProfile.cs
- ByteStream.cs
- ImageConverter.cs
- XmlDocumentSerializer.cs
- PerfCounters.cs
- MultiView.cs
- ImageCodecInfoPrivate.cs
- BamlBinaryReader.cs
- ConnectionsZone.cs
- Subset.cs
- FileSystemInfo.cs
- ToolStripPanel.cs
- EntityWrapperFactory.cs
- PickDesigner.xaml.cs
- PriorityRange.cs
- Monitor.cs
- SelectionItemProviderWrapper.cs
- FaultFormatter.cs
- PartitionResolver.cs
- XmlSchemaComplexContent.cs
- ApplicationSecurityInfo.cs
- SafePEFileHandle.cs
- TokenBasedSet.cs
- MultipleViewPatternIdentifiers.cs
- MsmqIntegrationInputChannel.cs
- WinFormsUtils.cs
- LinkButton.cs
- XmlSigningNodeWriter.cs
- WebDisplayNameAttribute.cs
- ADRoleFactory.cs
- XmlTextReader.cs
- DES.cs
- PageParserFilter.cs
- ValidationSummary.cs
- EnumBuilder.cs
- Simplifier.cs
- WebBrowserHelper.cs
- DynamicILGenerator.cs
- ArgIterator.cs
- SqlCacheDependencyDatabase.cs
- EntityKeyElement.cs
- VerificationAttribute.cs
- entityreference_tresulttype.cs
- CatalogPartDesigner.cs
- DataPagerCommandEventArgs.cs
- EntityException.cs
- X509WindowsSecurityToken.cs
- ModelPropertyImpl.cs
- EventLogPermissionAttribute.cs
- FunctionNode.cs
- WebPartTracker.cs
- State.cs
- GeometryGroup.cs
- BuildResult.cs
- AsyncResult.cs
- Activator.cs
- DesignBindingValueUIHandler.cs
- TableCellAutomationPeer.cs
- HttpInputStream.cs
- PropertyChangedEventManager.cs
- BuildProvidersCompiler.cs
- TypeDelegator.cs
- IEnumerable.cs
- ExpressionBuilder.cs
- ChildrenQuery.cs
- SocketPermission.cs
- WebBrowser.cs
- TreeNodeStyleCollection.cs
- thaishape.cs
- CryptoProvider.cs
- CompModSwitches.cs
- AuthenticationModulesSection.cs
- DeferredReference.cs
- UriTemplateCompoundPathSegment.cs
- InfoCardSymmetricAlgorithm.cs
- BamlRecordWriter.cs
- FontSizeConverter.cs
- BaseTemplateCodeDomTreeGenerator.cs
- HMACRIPEMD160.cs
- SymmetricAlgorithm.cs
- DockAndAnchorLayout.cs
- ListViewItemMouseHoverEvent.cs
- XmlDesigner.cs
- BamlTreeUpdater.cs
- LicenseProviderAttribute.cs
- EventHandlerList.cs