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
- SqlDependencyListener.cs
- FontStretchConverter.cs
- SchemaEntity.cs
- PageWrapper.cs
- CollectionDataContractAttribute.cs
- ProgressiveCrcCalculatingStream.cs
- CookielessHelper.cs
- Pipe.cs
- SqlNodeTypeOperators.cs
- wgx_commands.cs
- XmlQueryContext.cs
- RequestCachePolicy.cs
- ServiceCredentials.cs
- ImageSourceValueSerializer.cs
- HtmlAnchor.cs
- BlockCollection.cs
- ListViewInsertEventArgs.cs
- KnownBoxes.cs
- IndentedWriter.cs
- Viewport3DVisual.cs
- ViewGenResults.cs
- StreamedWorkflowDefinitionContext.cs
- BamlLocalizationDictionary.cs
- ResourceCategoryAttribute.cs
- RuleElement.cs
- Buffer.cs
- CalloutQueueItem.cs
- WizardStepBase.cs
- CodeVariableDeclarationStatement.cs
- ByteStreamGeometryContext.cs
- FlowLayoutSettings.cs
- ObjectQueryProvider.cs
- Padding.cs
- DataServiceResponse.cs
- MissingMemberException.cs
- ObjectDataSourceView.cs
- DataGridCaption.cs
- CodeTypeConstructor.cs
- EditorZoneBase.cs
- SineEase.cs
- MimeMultiPart.cs
- ActivationWorker.cs
- SchemaImporterExtensionsSection.cs
- ModulesEntry.cs
- PropertyInformation.cs
- Pen.cs
- ConfigurationManagerInternalFactory.cs
- RelatedImageListAttribute.cs
- SystemColorTracker.cs
- EditorBrowsableAttribute.cs
- PathNode.cs
- StateFinalizationActivity.cs
- TreeView.cs
- OleDbMetaDataFactory.cs
- MemoryMappedFile.cs
- ScalarOps.cs
- StateMachineTimers.cs
- ApplicationId.cs
- ReflectionTypeLoadException.cs
- SQLBinaryStorage.cs
- MetaTable.cs
- SecurityElement.cs
- TailPinnedEventArgs.cs
- XmlIlGenerator.cs
- DesignerSerializationVisibilityAttribute.cs
- XmlBaseReader.cs
- IPipelineRuntime.cs
- XmlQuerySequence.cs
- DragAssistanceManager.cs
- CodeMemberEvent.cs
- DataGridViewColumnConverter.cs
- SoapCodeExporter.cs
- LogRestartAreaEnumerator.cs
- HtmlFormWrapper.cs
- SystemNetHelpers.cs
- ValidatorUtils.cs
- CustomErrorsSectionWrapper.cs
- hresults.cs
- QueryAccessibilityHelpEvent.cs
- DuplexClientBase.cs
- GrammarBuilderRuleRef.cs
- TypeInitializationException.cs
- ListViewUpdateEventArgs.cs
- HMACSHA1.cs
- EventToken.cs
- ProviderSettings.cs
- SuppressMessageAttribute.cs
- IPAddressCollection.cs
- UserControl.cs
- EntitySqlQueryCacheKey.cs
- DetailsView.cs
- PrintDocument.cs
- ProcessModelSection.cs
- CompositeClientFormatter.cs
- Mutex.cs
- LightweightEntityWrapper.cs
- CompilerGlobalScopeAttribute.cs
- StaticSiteMapProvider.cs
- ContextMenu.cs
- Win32.cs