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
- CodeSnippetStatement.cs
- DeclaredTypeElementCollection.cs
- NominalTypeEliminator.cs
- GridItem.cs
- DataGrid.cs
- FormsAuthenticationModule.cs
- LinqDataView.cs
- X509CertificateRecipientServiceCredential.cs
- Lasso.cs
- SchemaLookupTable.cs
- GroupBox.cs
- ExpandoClass.cs
- TypeInfo.cs
- sqlinternaltransaction.cs
- Helpers.cs
- MergeEnumerator.cs
- FixedDocumentPaginator.cs
- WebPartDisplayModeCancelEventArgs.cs
- InternalDispatchObject.cs
- AxHost.cs
- MaterialGroup.cs
- ValidationEventArgs.cs
- XmlStreamNodeWriter.cs
- PropertyTabChangedEvent.cs
- SafeNativeMethods.cs
- ArraySubsetEnumerator.cs
- RewritingValidator.cs
- NativeMethodsCLR.cs
- SqlNotificationEventArgs.cs
- ServiceModelActivationSectionGroup.cs
- SemaphoreSecurity.cs
- RequiredFieldValidator.cs
- GroupBoxDesigner.cs
- WebServiceReceiveDesigner.cs
- CodeArgumentReferenceExpression.cs
- EnlistmentState.cs
- MatrixTransform.cs
- PrintPreviewGraphics.cs
- RadioButton.cs
- HtmlInputButton.cs
- HttpCapabilitiesSectionHandler.cs
- CodeBinaryOperatorExpression.cs
- GraphicsState.cs
- CodeLabeledStatement.cs
- TextFormattingConverter.cs
- BrowserCapabilitiesFactoryBase.cs
- _UriSyntax.cs
- CorruptingExceptionCommon.cs
- ToolStripContainer.cs
- InternalBufferOverflowException.cs
- DescendentsWalker.cs
- ImageAttributes.cs
- TextEffectCollection.cs
- DataGridViewCellStyleChangedEventArgs.cs
- InnerItemCollectionView.cs
- BindingNavigator.cs
- TaskForm.cs
- ComponentEditorPage.cs
- TreeNodeCollectionEditorDialog.cs
- XmlEntity.cs
- DoubleConverter.cs
- BaseParagraph.cs
- InvalidOleVariantTypeException.cs
- ListItemCollection.cs
- Component.cs
- Privilege.cs
- PropertyOverridesTypeEditor.cs
- MessagePartDescription.cs
- GenerateScriptTypeAttribute.cs
- SqlClientFactory.cs
- CacheMode.cs
- VerticalConnector.xaml.cs
- EllipseGeometry.cs
- WhitespaceRuleReader.cs
- UnmanagedMarshal.cs
- NativeMethods.cs
- ShaderEffect.cs
- FontUnitConverter.cs
- CompilerGeneratedAttribute.cs
- Int32Converter.cs
- ProfileEventArgs.cs
- ManualResetEvent.cs
- DiagnosticTrace.cs
- CharEnumerator.cs
- BasicExpressionVisitor.cs
- XomlSerializationHelpers.cs
- DbParameterCollection.cs
- ElementsClipboardData.cs
- EntryPointNotFoundException.cs
- ContentPathSegment.cs
- PanelStyle.cs
- ToolStripSplitButton.cs
- RootBrowserWindowProxy.cs
- SortedDictionary.cs
- EdmMember.cs
- KnownTypesHelper.cs
- Speller.cs
- TextDocumentView.cs
- NavigationService.cs
- Cursors.cs