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
- TextBox.cs
- GradientBrush.cs
- ResourceDictionary.cs
- CodeStatement.cs
- MemberMaps.cs
- SchemaObjectWriter.cs
- ManifestSignatureInformation.cs
- ToolStripTemplateNode.cs
- DispatcherHooks.cs
- DeclaredTypeValidator.cs
- ThicknessConverter.cs
- DictionaryContent.cs
- LinkDesigner.cs
- xml.cs
- ListItemViewControl.cs
- MessageBox.cs
- TraceEventCache.cs
- ViewBase.cs
- ToolStripSeparatorRenderEventArgs.cs
- BasicExpandProvider.cs
- ObjectListSelectEventArgs.cs
- ZipIOExtraField.cs
- ChangeConflicts.cs
- ConfigXmlSignificantWhitespace.cs
- DecimalFormatter.cs
- ControlParameter.cs
- Translator.cs
- ReferenceConverter.cs
- TablePattern.cs
- TextElementEnumerator.cs
- LocatorPartList.cs
- SqlTransaction.cs
- FirewallWrapper.cs
- XmlBufferReader.cs
- MdiWindowListItemConverter.cs
- SamlAttribute.cs
- ContextStack.cs
- WindowsStartMenu.cs
- MouseButtonEventArgs.cs
- Privilege.cs
- RequiredAttributeAttribute.cs
- RowsCopiedEventArgs.cs
- DataGrid.cs
- ProcessModuleCollection.cs
- Util.cs
- JoinSymbol.cs
- assertwrapper.cs
- ItemCheckedEvent.cs
- TagPrefixInfo.cs
- LabelEditEvent.cs
- EdmFunction.cs
- ExpressionEditorAttribute.cs
- MULTI_QI.cs
- RegexCode.cs
- cryptoapiTransform.cs
- AutomationPattern.cs
- RotateTransform.cs
- TreeViewHitTestInfo.cs
- CultureTableRecord.cs
- InternalsVisibleToAttribute.cs
- CompiledELinqQueryState.cs
- ResXBuildProvider.cs
- ActivityExecutorSurrogate.cs
- HttpChannelBindingToken.cs
- ReachUIElementCollectionSerializer.cs
- TextParagraphCache.cs
- CodeParameterDeclarationExpressionCollection.cs
- Normalizer.cs
- CanonicalXml.cs
- XPathQilFactory.cs
- StringComparer.cs
- WebPartEditorOkVerb.cs
- AnalyzedTree.cs
- MDIClient.cs
- CheckoutException.cs
- SessionStateContainer.cs
- AutomationPeer.cs
- ListCollectionView.cs
- PropertyValue.cs
- XmlSerializationWriter.cs
- DummyDataSource.cs
- RegexWorker.cs
- Root.cs
- SqlRowUpdatingEvent.cs
- ListBoxItemWrapperAutomationPeer.cs
- XPathSingletonIterator.cs
- KoreanCalendar.cs
- XmlSchemaImporter.cs
- ArraySubsetEnumerator.cs
- SortFieldComparer.cs
- Exception.cs
- FullTextLine.cs
- ControlValuePropertyAttribute.cs
- DesignerDataStoredProcedure.cs
- DashStyle.cs
- ResourcesBuildProvider.cs
- SelectorItemAutomationPeer.cs
- Material.cs
- FontWeights.cs
- ButtonFieldBase.cs