Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- RijndaelManagedTransform.cs
- TableParaClient.cs
- WindowsFont.cs
- DesigntimeLicenseContext.cs
- StopRoutingHandler.cs
- DataGridViewRowPrePaintEventArgs.cs
- ReaderWriterLock.cs
- XmlDocumentSurrogate.cs
- DecoderExceptionFallback.cs
- NullableIntSumAggregationOperator.cs
- BooleanSwitch.cs
- FreezableCollection.cs
- LockedAssemblyCache.cs
- CustomCredentialPolicy.cs
- WindowsIdentity.cs
- StylusShape.cs
- Convert.cs
- XmlMtomReader.cs
- DbFunctionCommandTree.cs
- COSERVERINFO.cs
- SecUtil.cs
- ExtensionsSection.cs
- ScaleTransform3D.cs
- SpellerInterop.cs
- ScriptingWebServicesSectionGroup.cs
- EntityDataSourceChangedEventArgs.cs
- VisualStyleElement.cs
- OdbcParameter.cs
- ObjectDataSourceDisposingEventArgs.cs
- FormsAuthenticationCredentials.cs
- ObjectDataSourceEventArgs.cs
- CodeIdentifiers.cs
- UnknownWrapper.cs
- RegexCode.cs
- NullableFloatMinMaxAggregationOperator.cs
- Animatable.cs
- ThicknessAnimationUsingKeyFrames.cs
- SymmetricAlgorithm.cs
- RegexStringValidatorAttribute.cs
- ProgressBarBrushConverter.cs
- ListViewAutomationPeer.cs
- LambdaCompiler.Logical.cs
- MultipleViewProviderWrapper.cs
- XmlNamespaceManager.cs
- ThreadAbortException.cs
- BuildProvider.cs
- NullableDecimalAverageAggregationOperator.cs
- MemberDomainMap.cs
- SqlTransaction.cs
- CheckBox.cs
- ControlHelper.cs
- TcpDuplicateContext.cs
- FieldBuilder.cs
- EnumValidator.cs
- RelationshipFixer.cs
- Baml2006ReaderFrame.cs
- WithStatement.cs
- RangeValuePattern.cs
- PropertyEmitterBase.cs
- InboundActivityHelper.cs
- Part.cs
- CheckBoxRenderer.cs
- IdnMapping.cs
- SqlServices.cs
- MetaModel.cs
- QueryParameter.cs
- DynamicRouteExpression.cs
- XPathSelfQuery.cs
- DbParameterCollection.cs
- ObjectListGeneralPage.cs
- FreezableDefaultValueFactory.cs
- mda.cs
- Math.cs
- SystemColors.cs
- XmlCodeExporter.cs
- FormViewDeletedEventArgs.cs
- ResXResourceWriter.cs
- ComEventsSink.cs
- StorageMappingItemCollection.cs
- FixedHighlight.cs
- WebServiceHost.cs
- ObjectStateEntryBaseUpdatableDataRecord.cs
- PersonalizationStateInfo.cs
- ExternalCalls.cs
- OdbcDataAdapter.cs
- CompilationUtil.cs
- ExceptionUtil.cs
- Propagator.Evaluator.cs
- Scene3D.cs
- ConfigDefinitionUpdates.cs
- SqlFunctionAttribute.cs
- FormsAuthentication.cs
- LinearGradientBrush.cs
- DrawingBrush.cs
- EmptyQuery.cs
- EventLogInternal.cs
- FusionWrap.cs
- UInt64.cs
- RegexFCD.cs
- MDIControlStrip.cs