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
- SimpleHandlerFactory.cs
- BooleanAnimationUsingKeyFrames.cs
- ArrayWithOffset.cs
- HttpCacheVaryByContentEncodings.cs
- RefreshInfo.cs
- DataObjectPastingEventArgs.cs
- MetadataCollection.cs
- DPCustomTypeDescriptor.cs
- CookieProtection.cs
- MouseOverProperty.cs
- DataGridRow.cs
- BindingNavigatorDesigner.cs
- DataGridPageChangedEventArgs.cs
- RemoteWebConfigurationHost.cs
- BridgeDataRecord.cs
- DataObjectPastingEventArgs.cs
- BitmapEffectInput.cs
- TimeManager.cs
- Stopwatch.cs
- FunctionUpdateCommand.cs
- DragEvent.cs
- EntityDataSourceDesigner.cs
- WindowsPen.cs
- DelegatedStream.cs
- Rights.cs
- CallbackWrapper.cs
- MonthChangedEventArgs.cs
- FileDialogCustomPlace.cs
- SimpleType.cs
- CellIdBoolean.cs
- DataReceivedEventArgs.cs
- Types.cs
- CollectionExtensions.cs
- AbstractExpressions.cs
- CustomBindingCollectionElement.cs
- NotifyInputEventArgs.cs
- DriveInfo.cs
- WebService.cs
- ProviderConnectionPoint.cs
- LogWriteRestartAreaAsyncResult.cs
- InternalsVisibleToAttribute.cs
- XsdBuilder.cs
- ApplicationException.cs
- CapabilitiesUse.cs
- HttpResponseBase.cs
- PrinterUnitConvert.cs
- QuaternionRotation3D.cs
- Subset.cs
- MouseButton.cs
- IQueryable.cs
- EventData.cs
- EntityDataReader.cs
- TagPrefixAttribute.cs
- EventRouteFactory.cs
- TextDpi.cs
- SQLDoubleStorage.cs
- DataGridClipboardCellContent.cs
- ConstraintStruct.cs
- PartManifestEntry.cs
- ImageClickEventArgs.cs
- InstanceDataCollection.cs
- PrintingPermission.cs
- ObjectTag.cs
- ContentElementAutomationPeer.cs
- SemanticResultValue.cs
- TextServicesCompartmentContext.cs
- TransformerConfigurationWizardBase.cs
- documentsequencetextpointer.cs
- PageCodeDomTreeGenerator.cs
- SimpleBitVector32.cs
- EditorPartCollection.cs
- DrawingImage.cs
- ReaderWriterLock.cs
- DataGridTemplateColumn.cs
- BigInt.cs
- ExtendedProtectionPolicyElement.cs
- PrintDialog.cs
- GridItemPatternIdentifiers.cs
- ColorMap.cs
- GridViewUpdatedEventArgs.cs
- LineVisual.cs
- DataGridRowClipboardEventArgs.cs
- DrawingState.cs
- PrimitiveSchema.cs
- XmlEntity.cs
- InternalResources.cs
- NumberFormatInfo.cs
- TextTreeInsertUndoUnit.cs
- SqlDependencyListener.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- XmlILConstructAnalyzer.cs
- DBSqlParserTable.cs
- CodeDomSerializerBase.cs
- SoapHelper.cs
- TreeBuilderBamlTranslator.cs
- FileDataSourceCache.cs
- SafeNativeMethods.cs
- ExpressionTextBox.xaml.cs
- IntSecurity.cs
- GridEntry.cs