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
- ConsumerConnectionPoint.cs
- SafeHandle.cs
- SplineQuaternionKeyFrame.cs
- WebServiceBindingAttribute.cs
- DocumentAutomationPeer.cs
- RegisteredExpandoAttribute.cs
- AssemblyNameProxy.cs
- HexParser.cs
- WebPartEditorOkVerb.cs
- AssemblyNameUtility.cs
- XPathExpr.cs
- HashCodeCombiner.cs
- ReadContentAsBinaryHelper.cs
- MaskedTextBox.cs
- ResponseStream.cs
- NamespaceQuery.cs
- ColorConverter.cs
- EnumUnknown.cs
- PathFigureCollectionValueSerializer.cs
- GlyphRunDrawing.cs
- SimpleBitVector32.cs
- sqlser.cs
- lengthconverter.cs
- SafeSerializationManager.cs
- ViewLoader.cs
- NegotiationTokenProvider.cs
- ListParagraph.cs
- BoundingRectTracker.cs
- XslCompiledTransform.cs
- BitmapVisualManager.cs
- WmlCommandAdapter.cs
- LocationFactory.cs
- MeasurementDCInfo.cs
- PrintController.cs
- DateBoldEvent.cs
- WebServiceClientProxyGenerator.cs
- SingleResultAttribute.cs
- TextBlockAutomationPeer.cs
- ProgressiveCrcCalculatingStream.cs
- InternalRelationshipCollection.cs
- ConfigsHelper.cs
- LogEntryHeaderv1Deserializer.cs
- PreviewKeyDownEventArgs.cs
- QueueProcessor.cs
- ExecutorLocksHeldException.cs
- BinaryUtilClasses.cs
- WebDisplayNameAttribute.cs
- TreeBuilderXamlTranslator.cs
- UriWriter.cs
- Rect3D.cs
- RayMeshGeometry3DHitTestResult.cs
- FixedDocumentPaginator.cs
- Bidi.cs
- EntityTypeEmitter.cs
- typedescriptorpermissionattribute.cs
- MailMessage.cs
- EntityViewGenerationAttribute.cs
- DropSource.cs
- xmlfixedPageInfo.cs
- ScrollItemPattern.cs
- BinaryKeyIdentifierClause.cs
- XmlTypeAttribute.cs
- WriteableBitmap.cs
- SystemIPAddressInformation.cs
- ServiceOperationViewControl.cs
- AggregateException.cs
- PropertyDescriptorComparer.cs
- ObjectStorage.cs
- Package.cs
- BackgroundWorker.cs
- ApplicationException.cs
- HttpConfigurationContext.cs
- EqualityComparer.cs
- CodeSubDirectory.cs
- CharUnicodeInfo.cs
- RegexCharClass.cs
- Utility.cs
- StorageEndPropertyMapping.cs
- ParameterElement.cs
- MulticastNotSupportedException.cs
- DesignerAttribute.cs
- StateWorkerRequest.cs
- ContentPresenter.cs
- GridErrorDlg.cs
- CommonDialog.cs
- Part.cs
- BrushMappingModeValidation.cs
- InfoCardProofToken.cs
- SyndicationDeserializer.cs
- AxisAngleRotation3D.cs
- EventlogProvider.cs
- BasicViewGenerator.cs
- SamlDelegatingWriter.cs
- RSAOAEPKeyExchangeFormatter.cs
- CompilationRelaxations.cs
- DesignerAdapterUtil.cs
- ReachVisualSerializerAsync.cs
- AsymmetricKeyExchangeFormatter.cs
- basenumberconverter.cs
- ErrorFormatterPage.cs