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
- ArrayElementGridEntry.cs
- PropertyChangingEventArgs.cs
- DetailsViewRow.cs
- ReplyAdapterChannelListener.cs
- CallContext.cs
- XPathDocumentNavigator.cs
- IPPacketInformation.cs
- WebRequest.cs
- JsonSerializer.cs
- EntityContainer.cs
- Axis.cs
- SafeIUnknown.cs
- HttpListenerException.cs
- Certificate.cs
- SystemColorTracker.cs
- PinnedBufferMemoryStream.cs
- Relationship.cs
- PasswordRecovery.cs
- StateMachine.cs
- FunctionCommandText.cs
- DataViewSetting.cs
- TableParagraph.cs
- EventRoute.cs
- ProgressBar.cs
- CodeMemberProperty.cs
- BufferedWebEventProvider.cs
- Source.cs
- IdleTimeoutMonitor.cs
- XmlCompatibilityReader.cs
- OdbcErrorCollection.cs
- XpsImage.cs
- PrimarySelectionGlyph.cs
- SqlHelper.cs
- MenuItem.cs
- WebProxyScriptElement.cs
- WindowsStatic.cs
- WorkerRequest.cs
- CredentialCache.cs
- StructuredTypeInfo.cs
- RIPEMD160Managed.cs
- XmlConvert.cs
- RequestFactory.cs
- ViewStateChangedEventArgs.cs
- ExceptionValidationRule.cs
- PropertyChangingEventArgs.cs
- ApplicationId.cs
- DataGridViewLinkColumn.cs
- XmlSchemaGroupRef.cs
- EventLevel.cs
- ValueUtilsSmi.cs
- TimeEnumHelper.cs
- BatchParser.cs
- CodeArrayIndexerExpression.cs
- ReflectionUtil.cs
- ExpressionPrefixAttribute.cs
- IdentityNotMappedException.cs
- ThreadExceptionDialog.cs
- HideDisabledControlAdapter.cs
- ContravarianceAdapter.cs
- Point4DConverter.cs
- QueryMath.cs
- AuthenticationConfig.cs
- SeekableReadStream.cs
- AuthenticationModeHelper.cs
- TextRenderingModeValidation.cs
- ResourceLoader.cs
- ListViewInsertedEventArgs.cs
- LinqDataSourceSelectEventArgs.cs
- srgsitem.cs
- ItemContainerGenerator.cs
- WindowsListViewItemStartMenu.cs
- XPathAncestorIterator.cs
- InvalidProgramException.cs
- KeyValueConfigurationCollection.cs
- CalendarDesigner.cs
- MemberExpression.cs
- ViewGenResults.cs
- RectAnimationBase.cs
- FixedSOMImage.cs
- Types.cs
- ParallelTimeline.cs
- TableLayoutCellPaintEventArgs.cs
- SqlUnionizer.cs
- NativeMethodsOther.cs
- QueryContinueDragEventArgs.cs
- State.cs
- EntityDataSourceMemberPath.cs
- RecognizedWordUnit.cs
- GeneralTransform2DTo3DTo2D.cs
- LocalizableAttribute.cs
- RegionData.cs
- SqlInfoMessageEvent.cs
- XmlJsonReader.cs
- StopRoutingHandler.cs
- InstanceNotReadyException.cs
- SqlXml.cs
- OneOfTypeConst.cs
- StandardBindingOptionalReliableSessionElement.cs
- PreloadedPackages.cs
- CorrelationManager.cs