Code:
/ 4.0 / 4.0 / 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. //---------------------------------------------------------------------- // // 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
- UnknownBitmapDecoder.cs
- ProcessProtocolHandler.cs
- FreezableCollection.cs
- RunClient.cs
- PrinterResolution.cs
- IntSecurity.cs
- MemberBinding.cs
- WizardPanelChangingEventArgs.cs
- WSSecureConversationDec2005.cs
- CmsUtils.cs
- DataGridViewMethods.cs
- HtmlControl.cs
- UniqueCodeIdentifierScope.cs
- TransformPattern.cs
- TreePrinter.cs
- AuthenticationConfig.cs
- GridViewAutomationPeer.cs
- MaterialGroup.cs
- ComPlusServiceLoader.cs
- RuleSettingsCollection.cs
- RelativeSource.cs
- TargetException.cs
- PrintControllerWithStatusDialog.cs
- ParameterBuilder.cs
- LogFlushAsyncResult.cs
- StringFormat.cs
- DocumentViewer.cs
- StrokeNodeOperations.cs
- MemoryRecordBuffer.cs
- TextClipboardData.cs
- MsmqHostedTransportManager.cs
- Convert.cs
- CallSite.cs
- MessageSecurityOverTcp.cs
- TabControlCancelEvent.cs
- EncryptedPackage.cs
- ProxyGenerationError.cs
- WeakEventTable.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- KeyValuePairs.cs
- MonthChangedEventArgs.cs
- Vector3DCollectionValueSerializer.cs
- TextureBrush.cs
- DataTableReader.cs
- QueryableDataSourceEditData.cs
- Rectangle.cs
- CodeAttachEventStatement.cs
- DbConnectionPoolGroup.cs
- AuthenticationModuleElement.cs
- ConfigurationValidatorAttribute.cs
- EntityDataSourceReferenceGroup.cs
- StateWorkerRequest.cs
- FormViewDesigner.cs
- TextTreeTextNode.cs
- EntityStoreSchemaGenerator.cs
- KeyPressEvent.cs
- Scheduling.cs
- URL.cs
- QueryableDataSourceEditData.cs
- WindowsUpDown.cs
- TransactionScope.cs
- QuaternionRotation3D.cs
- TagNameToTypeMapper.cs
- GeneralTransform3D.cs
- XmlObjectSerializerReadContext.cs
- unsafeIndexingFilterStream.cs
- ReflectEventDescriptor.cs
- TreeNode.cs
- PropertyStore.cs
- StylesEditorDialog.cs
- Soap.cs
- LinkedResourceCollection.cs
- RunInstallerAttribute.cs
- Attachment.cs
- XPathCompiler.cs
- IBuiltInEvidence.cs
- Listbox.cs
- ScrollItemPatternIdentifiers.cs
- _DigestClient.cs
- PerspectiveCamera.cs
- WebPartConnectVerb.cs
- WebControlAdapter.cs
- DbXmlEnabledProviderManifest.cs
- ExpressionCopier.cs
- FloatAverageAggregationOperator.cs
- ConfigXmlElement.cs
- CommentEmitter.cs
- EDesignUtil.cs
- RegisteredDisposeScript.cs
- HttpProfileGroupBase.cs
- CallSiteHelpers.cs
- mansign.cs
- XMLUtil.cs
- UnsafeNativeMethods.cs
- UserPersonalizationStateInfo.cs
- ParserHooks.cs
- ExeContext.cs
- ThreadExceptionEvent.cs
- ConfigurationConverterBase.cs
- ConditionalDesigner.cs