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
- WebPartDisplayMode.cs
- SafeBitVector32.cs
- ProtocolInformationReader.cs
- KeyboardInputProviderAcquireFocusEventArgs.cs
- DesignerVerb.cs
- StyleSheetComponentEditor.cs
- DesignerActionHeaderItem.cs
- UserPreferenceChangedEventArgs.cs
- CustomAttributeBuilder.cs
- DoubleAnimationUsingPath.cs
- Color.cs
- RecommendedAsConfigurableAttribute.cs
- infer.cs
- DiscriminatorMap.cs
- ExecutionEngineException.cs
- SafeLocalMemHandle.cs
- NegotiationTokenAuthenticatorState.cs
- EventProviderClassic.cs
- securestring.cs
- SpeechEvent.cs
- SystemIPv4InterfaceProperties.cs
- TripleDES.cs
- XmlSchemaInfo.cs
- AQNBuilder.cs
- TypeExtensions.cs
- PageTheme.cs
- SchemaMapping.cs
- CaretElement.cs
- TreeNodeCollectionEditorDialog.cs
- XmlHierarchyData.cs
- MultiSelector.cs
- TextElement.cs
- XmlWrappingReader.cs
- RemotingException.cs
- PageAsyncTask.cs
- TextEditorCharacters.cs
- SponsorHelper.cs
- RemotingConfigParser.cs
- CaseCqlBlock.cs
- TrustLevelCollection.cs
- PeerNameRegistration.cs
- ErrorTableItemStyle.cs
- DataGridItem.cs
- DataRowIndexBuffer.cs
- WebPartExportVerb.cs
- TemplateField.cs
- EncryptedReference.cs
- Aes.cs
- SafeRightsManagementHandle.cs
- ShapingWorkspace.cs
- SqlConnectionManager.cs
- DesignerCommandSet.cs
- PrimitiveType.cs
- DurationConverter.cs
- CharConverter.cs
- EntityProxyTypeInfo.cs
- SQLByte.cs
- XmlCharCheckingReader.cs
- MediaContext.cs
- TypeSystem.cs
- ISessionStateStore.cs
- SqlBinder.cs
- DataObjectPastingEventArgs.cs
- XPathAxisIterator.cs
- ImageListStreamer.cs
- ValidatorCompatibilityHelper.cs
- EntityParameterCollection.cs
- FigureParagraph.cs
- ProviderConnectionPoint.cs
- Rectangle.cs
- DiscoveryMessageSequenceCD1.cs
- CompressEmulationStream.cs
- HttpRequestWrapper.cs
- DataPagerFieldCollection.cs
- wgx_render.cs
- ModelItemCollection.cs
- BuildManager.cs
- GridToolTip.cs
- CompositeFontFamily.cs
- WindowsGraphicsCacheManager.cs
- DynamicResourceExtensionConverter.cs
- TaskFileService.cs
- DesignDataSource.cs
- RegisteredExpandoAttribute.cs
- ImageMapEventArgs.cs
- MappingMetadataHelper.cs
- EntityModelSchemaGenerator.cs
- Win32.cs
- OptimalBreakSession.cs
- PointAnimationClockResource.cs
- X509WindowsSecurityToken.cs
- CustomTrackingQuery.cs
- QuaternionAnimation.cs
- ExpressionParser.cs
- OleDbParameterCollection.cs
- TransportChannelListener.cs
- ObjectNavigationPropertyMapping.cs
- Line.cs
- ImageInfo.cs
- Fx.cs