Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- EntryWrittenEventArgs.cs
- SortQuery.cs
- ProcessInputEventArgs.cs
- CompositionTarget.cs
- HMACRIPEMD160.cs
- RemotingConfiguration.cs
- HttpListener.cs
- TransformConverter.cs
- ScrollPattern.cs
- CodeSubDirectoriesCollection.cs
- VBIdentifierTrimConverter.cs
- HyperlinkAutomationPeer.cs
- XmlNodeChangedEventManager.cs
- BrushConverter.cs
- CodePageEncoding.cs
- InstanceCreationEditor.cs
- Vector3D.cs
- LinearGradientBrush.cs
- SqlBooleanizer.cs
- SafePEFileHandle.cs
- WebPartVerb.cs
- SynchronousChannel.cs
- SerializationBinder.cs
- SerializationFieldInfo.cs
- EntityException.cs
- CompilationRelaxations.cs
- DataTable.cs
- EncoderParameter.cs
- DataControlReference.cs
- RubberbandSelector.cs
- XamlFigureLengthSerializer.cs
- LinqDataSourceDisposeEventArgs.cs
- XmlNamespaceManager.cs
- InputBinder.cs
- IItemContainerGenerator.cs
- ModelPerspective.cs
- DefaultTextStoreTextComposition.cs
- ExeConfigurationFileMap.cs
- SQLInt16.cs
- SoapSchemaImporter.cs
- WebConvert.cs
- LocalizationCodeDomSerializer.cs
- TerminateSequence.cs
- BaseCAMarshaler.cs
- WorkerRequest.cs
- Polyline.cs
- DictionaryContent.cs
- ListSourceHelper.cs
- CellRelation.cs
- WebPartEditorCancelVerb.cs
- ParallelTimeline.cs
- CrossAppDomainChannel.cs
- CheckBoxFlatAdapter.cs
- SingleAnimationUsingKeyFrames.cs
- AuthorizationRule.cs
- MetadataItemEmitter.cs
- BamlResourceDeserializer.cs
- ComponentCodeDomSerializer.cs
- FunctionQuery.cs
- AudienceUriMode.cs
- PopupEventArgs.cs
- PictureBox.cs
- CodeConditionStatement.cs
- TokenizerHelper.cs
- StylusButton.cs
- SplashScreen.cs
- TextElementEnumerator.cs
- IsolatedStorage.cs
- TreeViewImageKeyConverter.cs
- FormClosingEvent.cs
- ImageAutomationPeer.cs
- XmlHelper.cs
- _ListenerAsyncResult.cs
- ColumnHeaderConverter.cs
- NativeMethods.cs
- DesignParameter.cs
- SBCSCodePageEncoding.cs
- SplashScreenNativeMethods.cs
- SchemaNamespaceManager.cs
- DataDocumentXPathNavigator.cs
- StructuredType.cs
- WebPartVerb.cs
- StateManagedCollection.cs
- WCFBuildProvider.cs
- ProxyHwnd.cs
- AxisAngleRotation3D.cs
- XmlDocumentFieldSchema.cs
- LabelLiteral.cs
- XsltContext.cs
- AtomContentProperty.cs
- SqlTopReducer.cs
- MimeImporter.cs
- MembershipPasswordException.cs
- OdbcConnectionPoolProviderInfo.cs
- MultiBindingExpression.cs
- CollectionViewGroupRoot.cs
- WebServiceData.cs
- QueueProcessor.cs
- MD5CryptoServiceProvider.cs
- XmlWellformedWriter.cs