Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- SHA1Managed.cs
- AppDomainUnloadedException.cs
- HostProtectionPermission.cs
- IisTraceWebEventProvider.cs
- QueryExtender.cs
- SemaphoreFullException.cs
- basecomparevalidator.cs
- FilteredReadOnlyMetadataCollection.cs
- LassoSelectionBehavior.cs
- WorkflowInspectionServices.cs
- ControlCachePolicy.cs
- ClientOptions.cs
- WindowsListViewItem.cs
- DataGridViewControlCollection.cs
- ResourcesChangeInfo.cs
- XmlDataContract.cs
- EnumerableRowCollectionExtensions.cs
- StateMachineSubscription.cs
- ConfigurationFileMap.cs
- UInt64Converter.cs
- JoinElimination.cs
- MenuItemStyleCollection.cs
- NamedPipeConnectionPoolSettings.cs
- ClusterUtils.cs
- bindurihelper.cs
- BaseTemplateCodeDomTreeGenerator.cs
- PropertyInformationCollection.cs
- ChildTable.cs
- SchemaContext.cs
- WebPartHeaderCloseVerb.cs
- XmlILIndex.cs
- ContextMenuService.cs
- TimeSpanSecondsConverter.cs
- ArcSegment.cs
- ScrollChangedEventArgs.cs
- NativeMethods.cs
- mansign.cs
- PassportAuthenticationEventArgs.cs
- Monitor.cs
- WCFModelStrings.Designer.cs
- PiiTraceSource.cs
- DataSourceUtil.cs
- RequestCacheManager.cs
- FormViewInsertEventArgs.cs
- Ray3DHitTestResult.cs
- SQLMembershipProvider.cs
- RemotingServices.cs
- PathStreamGeometryContext.cs
- InteropExecutor.cs
- Win32MouseDevice.cs
- XPathSingletonIterator.cs
- OleDbCommandBuilder.cs
- HexParser.cs
- StylusPlugin.cs
- ConfigurationStrings.cs
- AsyncPostBackErrorEventArgs.cs
- HandlerMappingMemo.cs
- BitmapCodecInfoInternal.cs
- NameValuePermission.cs
- ObjectContextServiceProvider.cs
- ContextBase.cs
- DefaultSection.cs
- DeleteHelper.cs
- XmlNamespaceManager.cs
- ListViewTableCell.cs
- ITextView.cs
- AssemblyBuilderData.cs
- LineServicesRun.cs
- XslException.cs
- XpsSerializationManagerAsync.cs
- xmlformatgeneratorstatics.cs
- SmiContextFactory.cs
- SqlTopReducer.cs
- EastAsianLunisolarCalendar.cs
- TextLine.cs
- AbstractDataSvcMapFileLoader.cs
- GlyphRunDrawing.cs
- MatrixStack.cs
- RichTextBoxAutomationPeer.cs
- ImageListStreamer.cs
- DesignerResources.cs
- HashRepartitionStream.cs
- InputReferenceExpression.cs
- LineServicesRun.cs
- NativeCompoundFileAPIs.cs
- DependencyStoreSurrogate.cs
- XmlQueryCardinality.cs
- Triangle.cs
- XmlSchemaSimpleContent.cs
- CompileXomlTask.cs
- TableCellCollection.cs
- BlobPersonalizationState.cs
- columnmapkeybuilder.cs
- COM2ComponentEditor.cs
- PropertyMapper.cs
- PieceNameHelper.cs
- FixedSOMGroup.cs
- XmlILAnnotation.cs
- Gdiplus.cs
- UrlAuthFailedErrorFormatter.cs