Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- ScopedMessagePartSpecification.cs
- ExpressionList.cs
- WebControlAdapter.cs
- _ListenerResponseStream.cs
- BindingWorker.cs
- SqlAliasesReferenced.cs
- dtdvalidator.cs
- PointF.cs
- Geometry.cs
- ControlCollection.cs
- DataRecordInfo.cs
- BaseDataBoundControlDesigner.cs
- SchemaMerger.cs
- ToolStripItemBehavior.cs
- ModuleBuilderData.cs
- OperationDescriptionCollection.cs
- ToolStripHighContrastRenderer.cs
- DrawingVisual.cs
- PathFigureCollectionConverter.cs
- CriticalHandle.cs
- WeakRefEnumerator.cs
- AlphaSortedEnumConverter.cs
- GroupItem.cs
- MgmtConfigurationRecord.cs
- EasingFunctionBase.cs
- ResourceKey.cs
- Ops.cs
- XsdSchemaFileEditor.cs
- cache.cs
- BitmapEffectDrawingContextWalker.cs
- TracingConnection.cs
- DictionarySectionHandler.cs
- ChildDocumentBlock.cs
- OverflowException.cs
- StateWorkerRequest.cs
- Matrix.cs
- UnwrappedTypesXmlSerializerManager.cs
- CodeCommentStatementCollection.cs
- KeyConstraint.cs
- InfoCardSymmetricAlgorithm.cs
- TextContainerChangeEventArgs.cs
- sqlcontext.cs
- CounterSampleCalculator.cs
- PersistenceTypeAttribute.cs
- DiagnosticTrace.cs
- MsmqSecureHashAlgorithm.cs
- ScheduleChanges.cs
- OracleInfoMessageEventArgs.cs
- RegistrySecurity.cs
- PreviewPrintController.cs
- TextProperties.cs
- FaultContractInfo.cs
- EntityDataSourceView.cs
- MailMessage.cs
- EmulateRecognizeCompletedEventArgs.cs
- PropertyValidationContext.cs
- WebBrowser.cs
- SamlDelegatingWriter.cs
- TerminatorSinks.cs
- ProcessModelSection.cs
- TextDecoration.cs
- SecureStringHasher.cs
- SoundPlayer.cs
- PassportAuthenticationModule.cs
- querybuilder.cs
- CurrencyManager.cs
- WebConfigManager.cs
- QuaternionConverter.cs
- TaskDesigner.cs
- DataGridViewComboBoxEditingControl.cs
- PageParserFilter.cs
- SecuritySessionServerSettings.cs
- HandleRef.cs
- HwndSourceParameters.cs
- WindowsGrip.cs
- PrimaryKeyTypeConverter.cs
- ListArgumentProvider.cs
- GridViewCommandEventArgs.cs
- TableAutomationPeer.cs
- ErrorRuntimeConfig.cs
- recordstatefactory.cs
- RemotingAttributes.cs
- TransactionBehavior.cs
- HwndHost.cs
- TextContainerChangeEventArgs.cs
- TraceContextRecord.cs
- DetailsViewPageEventArgs.cs
- xmlsaver.cs
- ReferentialConstraint.cs
- TakeQueryOptionExpression.cs
- DesignerSerializationOptionsAttribute.cs
- Point.cs
- AnnotationComponentChooser.cs
- WmlPhoneCallAdapter.cs
- PeerObject.cs
- SiteIdentityPermission.cs
- DataListItemEventArgs.cs
- AnimationClock.cs
- ParentUndoUnit.cs
- SelectionEditor.cs