Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- EntityDataSourceContextDisposingEventArgs.cs
- HttpServerVarsCollection.cs
- NetworkInformationException.cs
- JapaneseLunisolarCalendar.cs
- PostBackTrigger.cs
- StrokeCollection2.cs
- ChtmlPhoneCallAdapter.cs
- RC2CryptoServiceProvider.cs
- SoapInteropTypes.cs
- SuppressIldasmAttribute.cs
- ApplicationGesture.cs
- DynamicActivityXamlReader.cs
- MemberAccessException.cs
- EntityDataSourceContextCreatedEventArgs.cs
- PropertyRecord.cs
- FontSourceCollection.cs
- Triangle.cs
- PropertyEntry.cs
- LicenseContext.cs
- StateDesigner.LayoutSelectionGlyph.cs
- OptimizerPatterns.cs
- Select.cs
- XmlSortKeyAccumulator.cs
- BindingValueChangedEventArgs.cs
- AnnotationDocumentPaginator.cs
- RegionIterator.cs
- ResourceExpressionBuilder.cs
- CachedTypeface.cs
- ErrorsHelper.cs
- RadioButtonStandardAdapter.cs
- ProviderUtil.cs
- BitmapImage.cs
- CompositeDuplexElement.cs
- AlternateViewCollection.cs
- ElementProxy.cs
- GcHandle.cs
- QuarticEase.cs
- LogicalExpr.cs
- Command.cs
- EngineSite.cs
- TextFormatter.cs
- PixelFormatConverter.cs
- VisualState.cs
- GroupDescription.cs
- PropertyPath.cs
- MenuAdapter.cs
- WebZone.cs
- AttachInfo.cs
- BinaryCommonClasses.cs
- __Error.cs
- SqlInfoMessageEvent.cs
- BitSet.cs
- FolderNameEditor.cs
- ObjectQueryState.cs
- IgnoreDeviceFilterElementCollection.cs
- IResourceProvider.cs
- PageCanvasSize.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- SingleBodyParameterMessageFormatter.cs
- RenamedEventArgs.cs
- LinqDataSourceHelper.cs
- UpdateException.cs
- Panel.cs
- InternalSafeNativeMethods.cs
- SqlConnection.cs
- SystemWebSectionGroup.cs
- FixedSOMTableCell.cs
- IntSecurity.cs
- TypeUtil.cs
- SelectionPattern.cs
- ClosableStream.cs
- FormViewModeEventArgs.cs
- EditorPartCollection.cs
- WebMessageEncoderFactory.cs
- CodeGroup.cs
- TextEditorParagraphs.cs
- Blend.cs
- SemaphoreFullException.cs
- ControlDesigner.cs
- XmlQueryRuntime.cs
- Exceptions.cs
- SelectionRangeConverter.cs
- Debug.cs
- BaseTemplatedMobileComponentEditor.cs
- MetadataUtil.cs
- ScrollChrome.cs
- CounterSampleCalculator.cs
- VirtualizingPanel.cs
- _SafeNetHandles.cs
- Wizard.cs
- TextTreeExtractElementUndoUnit.cs
- TextLineBreak.cs
- PenContexts.cs
- AnnouncementInnerClient11.cs
- BitmapSizeOptions.cs
- HashCodeCombiner.cs
- Gdiplus.cs
- XmlResolver.cs
- HtmlInputImage.cs
- PenLineJoinValidation.cs