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
- IndependentlyAnimatedPropertyMetadata.cs
- EmissiveMaterial.cs
- UpdateRecord.cs
- KeyInstance.cs
- DockPattern.cs
- RegexGroupCollection.cs
- Rectangle.cs
- SelectionRange.cs
- SocketManager.cs
- ExtensionSimplifierMarkupObject.cs
- EnterpriseServicesHelper.cs
- ColumnWidthChangedEvent.cs
- StrongName.cs
- XmlBinaryReader.cs
- RoleManagerSection.cs
- MailHeaderInfo.cs
- ListItem.cs
- NavigationPropertyEmitter.cs
- Model3DGroup.cs
- SelectedDatesCollection.cs
- CustomAttributeBuilder.cs
- TableCellAutomationPeer.cs
- MobileContainerDesigner.cs
- IteratorDescriptor.cs
- DocumentViewerAutomationPeer.cs
- ResolvedKeyFrameEntry.cs
- X509ChainElement.cs
- GPRECT.cs
- DataSourceSelectArguments.cs
- XPathChildIterator.cs
- MatrixAnimationUsingKeyFrames.cs
- UIAgentRequest.cs
- Stream.cs
- ToolStripContentPanel.cs
- TextSchema.cs
- EFAssociationProvider.cs
- StringSource.cs
- WindowsListViewItem.cs
- ResXResourceReader.cs
- FloaterBaseParaClient.cs
- XmlSerializer.cs
- RelatedView.cs
- TreeViewTemplateSelector.cs
- wmiutil.cs
- X509SecurityTokenAuthenticator.cs
- StrongTypingException.cs
- StrokeNode.cs
- BitmapMetadataEnumerator.cs
- ProgressBarRenderer.cs
- Section.cs
- EncryptedData.cs
- XmlLanguageConverter.cs
- LinqDataSourceHelper.cs
- ServiceContractListItem.cs
- InstanceKey.cs
- SessionEndingCancelEventArgs.cs
- Span.cs
- ViewGenResults.cs
- DirtyTextRange.cs
- MsmqIntegrationReceiveParameters.cs
- CheckBoxStandardAdapter.cs
- DataGridViewComboBoxEditingControl.cs
- SafeHandle.cs
- DataViewManager.cs
- LessThanOrEqual.cs
- Lock.cs
- Label.cs
- ServiceReference.cs
- DES.cs
- UIAgentInitializationException.cs
- TraceContext.cs
- EmptyEnumerator.cs
- SafeViewOfFileHandle.cs
- XPathAncestorIterator.cs
- TypeInitializationException.cs
- ComponentDispatcherThread.cs
- ExpressionEvaluator.cs
- WebPartEditorCancelVerb.cs
- HostProtectionException.cs
- DynamicDocumentPaginator.cs
- UnhandledExceptionEventArgs.cs
- ExpressionStringBuilder.cs
- ConvertEvent.cs
- LicFileLicenseProvider.cs
- ExtensionQuery.cs
- CopyEncoder.cs
- SinglePageViewer.cs
- xamlnodes.cs
- LockCookie.cs
- SiteMapNodeCollection.cs
- SizeConverter.cs
- ResourceReferenceExpression.cs
- AppDomainGrammarProxy.cs
- GuidConverter.cs
- DeclarativeCatalogPart.cs
- DrawingGroup.cs
- GestureRecognitionResult.cs
- ThrowHelper.cs
- TextContainerChangedEventArgs.cs
- LineInfo.cs