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
- ComEventsHelper.cs
- VoiceChangeEventArgs.cs
- MappingMetadataHelper.cs
- NavigationPropertyEmitter.cs
- XMLDiffLoader.cs
- JournalEntryStack.cs
- StringComparer.cs
- ActivatableWorkflowsQueryResult.cs
- CodeGenerator.cs
- RoutedEventHandlerInfo.cs
- FileClassifier.cs
- AuthenticationModuleElementCollection.cs
- X509RawDataKeyIdentifierClause.cs
- DrawingCollection.cs
- HyperLinkField.cs
- PageThemeCodeDomTreeGenerator.cs
- UnaryQueryOperator.cs
- _IPv6Address.cs
- WhiteSpaceTrimStringConverter.cs
- ResourceAssociationType.cs
- ViewBase.cs
- ISAPIApplicationHost.cs
- StringExpressionSet.cs
- SqlConnectionPoolGroupProviderInfo.cs
- WSMessageEncoding.cs
- StringUtil.cs
- EnumBuilder.cs
- documentsequencetextview.cs
- ToolStripPanel.cs
- PropertyMapper.cs
- ChannelCredentials.cs
- ResourceCategoryAttribute.cs
- LongPath.cs
- EffectiveValueEntry.cs
- ControlValuePropertyAttribute.cs
- PrimitiveOperationFormatter.cs
- CaseExpr.cs
- ElementProxy.cs
- FieldDescriptor.cs
- SmiXetterAccessMap.cs
- PairComparer.cs
- AsyncResult.cs
- DataSourceXmlClassAttribute.cs
- OletxResourceManager.cs
- DataGridViewCellMouseEventArgs.cs
- TextEditorLists.cs
- TextEditorMouse.cs
- DeviceContext2.cs
- SiteMapPathDesigner.cs
- MobileListItemCollection.cs
- UnsafeNetInfoNativeMethods.cs
- BamlBinaryReader.cs
- UInt64.cs
- OletxVolatileEnlistment.cs
- ResourceDescriptionAttribute.cs
- Publisher.cs
- WindowsAuthenticationModule.cs
- FixedHyperLink.cs
- __Filters.cs
- TimeManager.cs
- _SafeNetHandles.cs
- Rect3DValueSerializer.cs
- PrimarySelectionGlyph.cs
- SHA256CryptoServiceProvider.cs
- FileClassifier.cs
- XamlStream.cs
- WeakRefEnumerator.cs
- Overlapped.cs
- NativeCompoundFileAPIs.cs
- RootProfilePropertySettingsCollection.cs
- QuaternionAnimationUsingKeyFrames.cs
- LineMetrics.cs
- HtmlString.cs
- LayoutEditorPart.cs
- X509DefaultServiceCertificateElement.cs
- DataDocumentXPathNavigator.cs
- BackgroundWorker.cs
- GroupDescription.cs
- BoundColumn.cs
- Transform3DGroup.cs
- Rectangle.cs
- FontWeights.cs
- MergeFailedEvent.cs
- HtmlContainerControl.cs
- SecurityContextSecurityTokenAuthenticator.cs
- EntityContainerAssociationSet.cs
- ObjectTokenCategory.cs
- UnmanagedMemoryStream.cs
- ServiceContractGenerator.cs
- ConnectionManagementElement.cs
- MessageDispatch.cs
- GenericRootAutomationPeer.cs
- GridLengthConverter.cs
- XmlSchemaComplexType.cs
- VectorAnimationBase.cs
- LoginDesignerUtil.cs
- WebContext.cs
- HttpDictionary.cs
- GreenMethods.cs
- ButtonFieldBase.cs