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
- RepeaterItemEventArgs.cs
- HierarchicalDataBoundControlAdapter.cs
- BaseTemplateCodeDomTreeGenerator.cs
- Propagator.JoinPropagator.cs
- SqlDataSourceEnumerator.cs
- MappingModelBuildProvider.cs
- Deflater.cs
- SplitterDesigner.cs
- ZipIOExtraFieldElement.cs
- ExecutionContext.cs
- unsafeIndexingFilterStream.cs
- ValidatorCompatibilityHelper.cs
- ExceptionUtil.cs
- OpenTypeLayout.cs
- ResourceAttributes.cs
- URLAttribute.cs
- OutputCacheSettingsSection.cs
- MissingMemberException.cs
- XmlAnyElementAttribute.cs
- MediaContext.cs
- Validator.cs
- RelationshipSet.cs
- BooleanAnimationUsingKeyFrames.cs
- WebCategoryAttribute.cs
- DummyDataSource.cs
- SocketInformation.cs
- TextServicesCompartmentContext.cs
- CultureInfo.cs
- CodeGroup.cs
- InstanceContextManager.cs
- Help.cs
- Win32.cs
- BookmarkEventArgs.cs
- ObjectDataProvider.cs
- PartialToken.cs
- SqlAliasesReferenced.cs
- LastQueryOperator.cs
- CodeDirectiveCollection.cs
- FormsAuthenticationTicket.cs
- WebPartConnection.cs
- TypeHelper.cs
- CodeDirectiveCollection.cs
- SplitterPanel.cs
- RepeaterItemEventArgs.cs
- StructuredTypeEmitter.cs
- GridViewRowPresenterBase.cs
- PlanCompilerUtil.cs
- WebPartVerb.cs
- SpeechDetectedEventArgs.cs
- XmlNavigatorStack.cs
- Brushes.cs
- UIElement3D.cs
- SchemaImporterExtension.cs
- SerializerDescriptor.cs
- DelegatedStream.cs
- Win32.cs
- Symbol.cs
- CodeArrayCreateExpression.cs
- XmlTextReader.cs
- SelectionItemProviderWrapper.cs
- PagerStyle.cs
- KerberosSecurityTokenProvider.cs
- AnnotationResourceChangedEventArgs.cs
- TemplateBaseAction.cs
- LinqDataSourceDisposeEventArgs.cs
- SerializationInfoEnumerator.cs
- SecurityDescriptor.cs
- CommentEmitter.cs
- MimeMapping.cs
- DataColumnCollection.cs
- PropertySet.cs
- ErrorsHelper.cs
- TextEditorMouse.cs
- ProcessingInstructionAction.cs
- AttributeQuery.cs
- EngineSiteSapi.cs
- XmlUtilWriter.cs
- StickyNoteContentControl.cs
- IISUnsafeMethods.cs
- PageBreakRecord.cs
- SecurityDocument.cs
- PreloadHost.cs
- TypeConverter.cs
- ExpressionEvaluator.cs
- UpdateDelegates.Generated.cs
- MemberDomainMap.cs
- SystemIPGlobalStatistics.cs
- MemberBinding.cs
- ComponentEvent.cs
- ImageListStreamer.cs
- ComponentResourceKeyConverter.cs
- AmbiguousMatchException.cs
- StorageSetMapping.cs
- ListSortDescriptionCollection.cs
- GACIdentityPermission.cs
- Transform3DGroup.cs
- DbConnectionStringCommon.cs
- BamlTreeNode.cs
- UpDownBase.cs
- StrongNamePublicKeyBlob.cs