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
- NameTable.cs
- JsonFormatGeneratorStatics.cs
- MetaModel.cs
- ResourceManager.cs
- BrushConverter.cs
- SelectionProcessor.cs
- ProcessThread.cs
- XmlNodeWriter.cs
- CompModSwitches.cs
- BufferedWebEventProvider.cs
- MaskedTextBoxDesigner.cs
- XmlSchemaException.cs
- SqlClientWrapperSmiStream.cs
- TextElementEnumerator.cs
- FontInfo.cs
- SourceElementsCollection.cs
- LinkDescriptor.cs
- ConfigurationPermission.cs
- BindingGraph.cs
- GroupBoxRenderer.cs
- IsolationInterop.cs
- ObjectListCommandCollection.cs
- ControlPropertyNameConverter.cs
- Menu.cs
- SerializationHelper.cs
- ObjectView.cs
- KeyMatchBuilder.cs
- DefaultAsyncDataDispatcher.cs
- FeatureSupport.cs
- TaiwanLunisolarCalendar.cs
- InputDevice.cs
- ListBoxItem.cs
- SettingsPropertyValue.cs
- TimeZoneNotFoundException.cs
- TrustManagerPromptUI.cs
- WebEventTraceProvider.cs
- GPStream.cs
- AssociatedControlConverter.cs
- EventOpcode.cs
- UrlPropertyAttribute.cs
- PathParser.cs
- DeploymentSection.cs
- ToolBar.cs
- Soap.cs
- WindowsGraphicsCacheManager.cs
- ParseHttpDate.cs
- WaveHeader.cs
- UserControl.cs
- EditorZoneDesigner.cs
- UnionCodeGroup.cs
- HandlerWithFactory.cs
- DefaultTraceListener.cs
- LicenseContext.cs
- ThrowHelper.cs
- GlyphTypeface.cs
- XmlQualifiedName.cs
- FilterQuery.cs
- ContainerAction.cs
- WorkflowDefinitionDispenser.cs
- InvokeMemberBinder.cs
- CacheRequest.cs
- ProtocolsConfigurationHandler.cs
- HttpConfigurationSystem.cs
- SynchronizedInputHelper.cs
- BulletedList.cs
- URLAttribute.cs
- QuaternionAnimationUsingKeyFrames.cs
- TypeLoader.cs
- DataPointer.cs
- GetImportFileNameRequest.cs
- NativeMethods.cs
- ListViewUpdatedEventArgs.cs
- WmpBitmapEncoder.cs
- StoreAnnotationsMap.cs
- MonthCalendarDesigner.cs
- ObjectAnimationBase.cs
- AtomMaterializer.cs
- DataGridPageChangedEventArgs.cs
- WindowInteropHelper.cs
- CodeAttributeDeclaration.cs
- RevocationPoint.cs
- HeaderedItemsControl.cs
- DecoderNLS.cs
- TableCellAutomationPeer.cs
- ResXBuildProvider.cs
- ConfigurationManagerInternal.cs
- CalendarTable.cs
- Int32Rect.cs
- RefreshPropertiesAttribute.cs
- RenderDataDrawingContext.cs
- BamlRecordReader.cs
- DataTable.cs
- SignatureToken.cs
- ErrorStyle.cs
- DeriveBytes.cs
- DecoderFallback.cs
- ResizeGrip.cs
- BitArray.cs
- DataSourceIDConverter.cs
- PerformanceCounterManager.cs