Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / ndp / fx / src / DataEntity / System / Data / Map / ViewGeneration / CqlGeneration / CqlIdentifiers.cs / 1 / 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); } internal void AddIdentifier(string identifier) { m_identifiers.Add(identifier.ToLower(CultureInfo.InvariantCulture)); } 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); } internal void AddIdentifier(string identifier) { m_identifiers.Add(identifier.ToLower(CultureInfo.InvariantCulture)); } 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
- RsaSecurityTokenAuthenticator.cs
- TemplateBindingExtension.cs
- JapaneseCalendar.cs
- WebPartZone.cs
- AppDomainAttributes.cs
- SqlGatherConsumedAliases.cs
- XmlCustomFormatter.cs
- PhysicalFontFamily.cs
- SpecialNameAttribute.cs
- AdRotatorDesigner.cs
- Metafile.cs
- ContentPresenter.cs
- Size.cs
- StringExpressionSet.cs
- LambdaReference.cs
- SectionVisual.cs
- CodeAssignStatement.cs
- DecimalStorage.cs
- WmfPlaceableFileHeader.cs
- EventLogInformation.cs
- WebBrowserPermission.cs
- FixedSOMTable.cs
- OdbcConnectionFactory.cs
- DefaultMemberAttribute.cs
- Label.cs
- SharedStatics.cs
- WebAdminConfigurationHelper.cs
- EncoderNLS.cs
- ProfileGroupSettingsCollection.cs
- DataAccessException.cs
- UserPersonalizationStateInfo.cs
- ACL.cs
- CreateUserWizard.cs
- WorkflowInspectionServices.cs
- DescendentsWalker.cs
- CodeDefaultValueExpression.cs
- PathSegmentCollection.cs
- HtmlInputReset.cs
- ProtocolsConfiguration.cs
- StylusPoint.cs
- DropAnimation.xaml.cs
- TerminatorSinks.cs
- MemberDomainMap.cs
- SqlXmlStorage.cs
- NativeMethods.cs
- XmlDomTextWriter.cs
- InnerItemCollectionView.cs
- FamilyMapCollection.cs
- ConfigXmlComment.cs
- ConfigurationPermission.cs
- UrlPath.cs
- ConsumerConnectionPointCollection.cs
- TextUtf8RawTextWriter.cs
- HttpRuntimeSection.cs
- DiscreteKeyFrames.cs
- SemanticResolver.cs
- XmlDataImplementation.cs
- EntityDataReader.cs
- EdmRelationshipRoleAttribute.cs
- SingleStorage.cs
- BeginStoryboard.cs
- HtmlInputButton.cs
- Rect3D.cs
- SafeWaitHandle.cs
- ConfigurationErrorsException.cs
- FixedLineResult.cs
- ActivitySurrogateSelector.cs
- TimeSpanMinutesConverter.cs
- TypeDependencyAttribute.cs
- HandlerBase.cs
- RectangleF.cs
- UpdatePanelTrigger.cs
- TextWriterEngine.cs
- ListViewItemSelectionChangedEvent.cs
- ISAPIApplicationHost.cs
- TextChange.cs
- FixUp.cs
- ObjectViewEntityCollectionData.cs
- SafeEventLogReadHandle.cs
- FlowLayout.cs
- PtsCache.cs
- Switch.cs
- LogLogRecordEnumerator.cs
- TextRunTypographyProperties.cs
- Track.cs
- SqlProvider.cs
- RegexReplacement.cs
- QuotedPrintableStream.cs
- ExpandedProjectionNode.cs
- ErrorFormatterPage.cs
- PointAnimationUsingPath.cs
- StringWriter.cs
- CredentialCache.cs
- XmlSchemaElement.cs
- WindowsFormsSynchronizationContext.cs
- MouseEventArgs.cs
- AssemblyBuilderData.cs
- Logging.cs
- Separator.cs
- EastAsianLunisolarCalendar.cs