Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Map / ViewGeneration / CqlGeneration / CqlIdentifiers.cs / 1305376 / 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); } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")] internal void AddIdentifier(string identifier) { m_identifiers.Add(identifier.ToLower(CultureInfo.InvariantCulture)); } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")] 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
- XmlLanguage.cs
- Attributes.cs
- MemberListBinding.cs
- PrincipalPermission.cs
- ProcessInfo.cs
- ListViewUpdateEventArgs.cs
- SiteMapPath.cs
- WebPartAuthorizationEventArgs.cs
- UnsafeNativeMethods.cs
- CachedFontFamily.cs
- ByValueEqualityComparer.cs
- WebService.cs
- ActivatableWorkflowsQueryResult.cs
- CodeMemberField.cs
- Clause.cs
- StaticDataManager.cs
- HttpResponse.cs
- SemanticAnalyzer.cs
- BinaryReader.cs
- RotateTransform.cs
- rsa.cs
- BitmapDecoder.cs
- GroupBoxRenderer.cs
- MobileUserControlDesigner.cs
- TimeSpanStorage.cs
- TextMarkerSource.cs
- BindingWorker.cs
- NestedContainer.cs
- SplitterCancelEvent.cs
- HttpDictionary.cs
- RbTree.cs
- DocumentSchemaValidator.cs
- Visual3DCollection.cs
- ExpressionLexer.cs
- _SslSessionsCache.cs
- ToolStripDropDown.cs
- FragmentQueryKB.cs
- ReadOnlyNameValueCollection.cs
- DATA_BLOB.cs
- ECDiffieHellmanCngPublicKey.cs
- TypeReference.cs
- sqlser.cs
- DebugView.cs
- X509CertificateStore.cs
- XmlUrlResolver.cs
- WebPartDescription.cs
- Ray3DHitTestResult.cs
- RangeContentEnumerator.cs
- SynchronizedInputAdaptor.cs
- METAHEADER.cs
- TraceListener.cs
- DrawingBrush.cs
- ListViewHitTestInfo.cs
- Knowncolors.cs
- MSAAWinEventWrap.cs
- StringWriter.cs
- TypeToStringValueConverter.cs
- DataGridViewRowCollection.cs
- BuildProvider.cs
- PackagePartCollection.cs
- ProcessModuleCollection.cs
- DataGridViewColumnCollectionDialog.cs
- XmlNodeChangedEventArgs.cs
- ClientTarget.cs
- WebPartMinimizeVerb.cs
- SerializationHelper.cs
- elementinformation.cs
- InlineCollection.cs
- SQLResource.cs
- CodeTryCatchFinallyStatement.cs
- PeerNearMe.cs
- SqlTransaction.cs
- OneWayChannelFactory.cs
- FormViewModeEventArgs.cs
- ModifiableIteratorCollection.cs
- X509CertificateCollection.cs
- MSG.cs
- TextRange.cs
- Ray3DHitTestResult.cs
- SerialErrors.cs
- HttpPostedFile.cs
- DataBoundLiteralControl.cs
- ResourcePropertyMemberCodeDomSerializer.cs
- WebAdminConfigurationHelper.cs
- EntityDataSourceStatementEditor.cs
- RNGCryptoServiceProvider.cs
- NullableIntSumAggregationOperator.cs
- TextDecorations.cs
- MonthCalendar.cs
- TextModifierScope.cs
- SqlDependencyListener.cs
- ControlPaint.cs
- QilCloneVisitor.cs
- RuleSettings.cs
- ShellProvider.cs
- VBIdentifierNameEditor.cs
- HttpCacheVaryByContentEncodings.cs
- XamlReaderHelper.cs
- Substitution.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs