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
- Pool.cs
- SerializationInfo.cs
- XmlSchemaValidator.cs
- SafeMemoryMappedViewHandle.cs
- LinkLabelLinkClickedEvent.cs
- CacheDict.cs
- TemplatedEditableDesignerRegion.cs
- StyleReferenceConverter.cs
- EventDescriptor.cs
- RoamingStoreFile.cs
- DataGridViewSelectedCellsAccessibleObject.cs
- ColumnMapVisitor.cs
- StyleCollection.cs
- EntitySqlQueryCacheEntry.cs
- SingleResultAttribute.cs
- InstallerTypeAttribute.cs
- EntityDataSourceContainerNameItem.cs
- PingOptions.cs
- ReservationNotFoundException.cs
- PartitionedStream.cs
- HyperLinkStyle.cs
- AppDomainManager.cs
- TypedTableHandler.cs
- KnowledgeBase.cs
- DurableInstanceContextProvider.cs
- _NTAuthentication.cs
- ConfigurationPropertyCollection.cs
- AssemblyContextControlItem.cs
- RoleExceptions.cs
- WebPartCollection.cs
- InvalidAsynchronousStateException.cs
- CqlLexerHelpers.cs
- EntitySetDataBindingList.cs
- ComponentCollection.cs
- HashJoinQueryOperatorEnumerator.cs
- WorkerRequest.cs
- DecimalAnimation.cs
- ToolStripGripRenderEventArgs.cs
- Point3D.cs
- TemplatedAdorner.cs
- StringBuilder.cs
- SecurityContext.cs
- HeaderedContentControl.cs
- DateTimeSerializationSection.cs
- WebEvents.cs
- BrowserCapabilitiesFactory.cs
- TraceContext.cs
- GridView.cs
- ChainedAsyncResult.cs
- PersonalizablePropertyEntry.cs
- DebugHandleTracker.cs
- ConfigXmlReader.cs
- TypeDefinition.cs
- CopyNamespacesAction.cs
- MetadataWorkspace.cs
- ExpressionBuilderCollection.cs
- _Events.cs
- FontFamily.cs
- RefExpr.cs
- SafeRsaProviderHandle.cs
- DocComment.cs
- DataListItemCollection.cs
- FunctionImportMapping.cs
- MSAANativeProvider.cs
- EmptyReadOnlyDictionaryInternal.cs
- PropertyState.cs
- WebPartTransformerAttribute.cs
- TabControl.cs
- CollectionViewGroup.cs
- CollaborationHelperFunctions.cs
- TouchPoint.cs
- DateTimeUtil.cs
- DateTimePicker.cs
- ScrollChrome.cs
- OutputScopeManager.cs
- PointCollectionValueSerializer.cs
- LeftCellWrapper.cs
- GridItemPattern.cs
- PointCollectionValueSerializer.cs
- VBIdentifierNameEditor.cs
- ListControlConvertEventArgs.cs
- OleDbMetaDataFactory.cs
- FaultCode.cs
- Int16.cs
- SplineKeyFrames.cs
- EntityDataSourceWrapperCollection.cs
- BitFlagsGenerator.cs
- SingleAnimationBase.cs
- SoapCodeExporter.cs
- CustomAssemblyResolver.cs
- CompressionTransform.cs
- ArrangedElement.cs
- SharedStatics.cs
- SingleAnimationBase.cs
- ValidationHelpers.cs
- XamlTypeMapperSchemaContext.cs
- SqlHelper.cs
- PartitionResolver.cs
- GridViewUpdateEventArgs.cs
- AsnEncodedData.cs