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
- StandardToolWindows.cs
- DataFormats.cs
- FreezableCollection.cs
- WindowProviderWrapper.cs
- DataGridViewLinkColumn.cs
- Setter.cs
- XPathNodeList.cs
- XamlRtfConverter.cs
- DataFormats.cs
- WorkflowDispatchContext.cs
- DataGridViewColumn.cs
- DbConnectionStringCommon.cs
- CompilationRelaxations.cs
- BitmapEffectRenderDataResource.cs
- Certificate.cs
- NamespaceCollection.cs
- SafeNativeMethods.cs
- ChildTable.cs
- TargetControlTypeAttribute.cs
- EUCJPEncoding.cs
- Style.cs
- Validator.cs
- XpsResourceDictionary.cs
- OciEnlistContext.cs
- VisualStyleRenderer.cs
- XpsException.cs
- MimeObjectFactory.cs
- QueryReaderSettings.cs
- DataBoundControlHelper.cs
- IRCollection.cs
- LayoutEditorPart.cs
- MediaTimeline.cs
- Encoder.cs
- ThemeDirectoryCompiler.cs
- XPathPatternParser.cs
- ProfilePropertySettings.cs
- StandardCommands.cs
- SubMenuStyle.cs
- ParameterCollection.cs
- FormViewActionList.cs
- GACMembershipCondition.cs
- ForwardPositionQuery.cs
- XslNumber.cs
- AttributeConverter.cs
- TextBreakpoint.cs
- UndoManager.cs
- ContainerVisual.cs
- PrintDialog.cs
- SpellerError.cs
- TimestampInformation.cs
- BinaryUtilClasses.cs
- IsolationInterop.cs
- SemanticResultValue.cs
- RelationshipType.cs
- GiveFeedbackEventArgs.cs
- MatrixConverter.cs
- XmlSchemaInclude.cs
- KerberosReceiverSecurityToken.cs
- PermissionAttributes.cs
- GlobalizationAssembly.cs
- FacetChecker.cs
- FontNameEditor.cs
- EntitySqlQueryCacheKey.cs
- UIElement3D.cs
- PageCache.cs
- UInt64Storage.cs
- XPathItem.cs
- PackagingUtilities.cs
- GridView.cs
- IPCCacheManager.cs
- KeyboardNavigation.cs
- RegexRunnerFactory.cs
- TypeNameConverter.cs
- WhitespaceRuleLookup.cs
- QilName.cs
- PrincipalPermission.cs
- GridSplitter.cs
- LazyLoadBehavior.cs
- DNS.cs
- XmlSignatureProperties.cs
- _NetRes.cs
- SiteMembershipCondition.cs
- BuildProvider.cs
- UniqueEventHelper.cs
- CodeEntryPointMethod.cs
- ReachPrintTicketSerializerAsync.cs
- EventProviderWriter.cs
- ActivationServices.cs
- OpCopier.cs
- IPHostEntry.cs
- DataRowComparer.cs
- HighlightComponent.cs
- SizeAnimationClockResource.cs
- XmlMemberMapping.cs
- ShapeTypeface.cs
- ControlCachePolicy.cs
- TextElement.cs
- CorePropertiesFilter.cs
- DocumentSchemaValidator.cs
- DBSchemaTable.cs