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
- SystemIPv6InterfaceProperties.cs
- basecomparevalidator.cs
- DirtyTextRange.cs
- MulticastIPAddressInformationCollection.cs
- StorageAssociationSetMapping.cs
- CacheSection.cs
- Table.cs
- PathSegment.cs
- SymmetricAlgorithm.cs
- DesignTimeTemplateParser.cs
- EntitySqlQueryBuilder.cs
- XmlSchemaAttributeGroup.cs
- EventProxy.cs
- columnmapkeybuilder.cs
- OpenTypeLayoutCache.cs
- Number.cs
- ContentIterators.cs
- AudioDeviceOut.cs
- EntityKey.cs
- LinkedResource.cs
- GridViewCancelEditEventArgs.cs
- CodeTypeConstructor.cs
- GB18030Encoding.cs
- Missing.cs
- CodeAttributeArgument.cs
- XmlNavigatorFilter.cs
- _NegoState.cs
- WebPartDisplayModeCollection.cs
- DoubleCollectionValueSerializer.cs
- TextHintingModeValidation.cs
- DefaultPropertiesToSend.cs
- XPathMessageFilterElement.cs
- AsyncOperationContext.cs
- BindingContext.cs
- MimeTypePropertyAttribute.cs
- HtmlLink.cs
- ToolStripDropDownButton.cs
- CompilerScopeManager.cs
- NameObjectCollectionBase.cs
- DrawingDrawingContext.cs
- MatcherBuilder.cs
- RadioButtonPopupAdapter.cs
- GenericTypeParameterConverter.cs
- WmlControlAdapter.cs
- SafeArchiveContext.cs
- DropSource.cs
- dataSvcMapFileLoader.cs
- HtmlHead.cs
- RuntimeCompatibilityAttribute.cs
- PartitionerQueryOperator.cs
- GuidConverter.cs
- TimeStampChecker.cs
- JsonWriter.cs
- ToolStripOverflowButton.cs
- SqlConnectionString.cs
- ItemsPanelTemplate.cs
- DispatchWrapper.cs
- ListViewInsertEventArgs.cs
- PLINQETWProvider.cs
- DotExpr.cs
- SynchronizedDispatch.cs
- XmlDataSourceView.cs
- SubpageParagraph.cs
- SimpleMailWebEventProvider.cs
- ProgressiveCrcCalculatingStream.cs
- Debug.cs
- ExtensionFile.cs
- CheckBoxFlatAdapter.cs
- HwndSourceParameters.cs
- ToolstripProfessionalRenderer.cs
- AudioFormatConverter.cs
- TypeAccessException.cs
- WorkflowRuntimeServiceElement.cs
- StandardToolWindows.cs
- DriveInfo.cs
- ObjectCloneHelper.cs
- printdlgexmarshaler.cs
- FormParameter.cs
- Unit.cs
- DbMetaDataColumnNames.cs
- DocumentPage.cs
- SyndicationDeserializer.cs
- BinaryMethodMessage.cs
- BasicViewGenerator.cs
- TabControlEvent.cs
- HtmlContainerControl.cs
- XmlEncoding.cs
- DbConnectionInternal.cs
- WorkflowPageSetupDialog.cs
- Vector3D.cs
- BitmapEffectDrawing.cs
- ContainerParaClient.cs
- PointAnimationUsingKeyFrames.cs
- DataGridViewCell.cs
- CodeDOMUtility.cs
- MultipartContentParser.cs
- SqlDataAdapter.cs
- Int64Animation.cs
- SqlRowUpdatedEvent.cs
- PerformanceCounterPermissionAttribute.cs