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
- ZipIOLocalFileHeader.cs
- ErrorWebPart.cs
- DecoderFallbackWithFailureFlag.cs
- FrameworkContentElement.cs
- WriteFileContext.cs
- PeerInvitationResponse.cs
- CreateUserWizard.cs
- DbParameterHelper.cs
- PrivacyNoticeElement.cs
- WSSecurityTokenSerializer.cs
- SqlServices.cs
- LinkUtilities.cs
- XNameTypeConverter.cs
- SessionPageStatePersister.cs
- CalendarTable.cs
- ApplicationManager.cs
- ImportedNamespaceContextItem.cs
- XmlElementElement.cs
- StackOverflowException.cs
- XmlFormatExtensionAttribute.cs
- ButtonField.cs
- InputBinding.cs
- CheckBoxBaseAdapter.cs
- unsafenativemethodsother.cs
- LayoutTable.cs
- ApplicationProxyInternal.cs
- ExtentKey.cs
- SqlRowUpdatedEvent.cs
- RoleManagerModule.cs
- TrackingServices.cs
- GlobalizationSection.cs
- ListViewUpdatedEventArgs.cs
- EndpointBehaviorElement.cs
- Substitution.cs
- NativeMethods.cs
- DaylightTime.cs
- AuthenticationServiceManager.cs
- DataBindingsDialog.cs
- DataColumnMapping.cs
- PersonalizableAttribute.cs
- CodeMemberMethod.cs
- CodeCommentStatementCollection.cs
- DateTimeFormatInfoScanner.cs
- NativeMethods.cs
- ParameterModifier.cs
- PrivateUnsafeNativeCompoundFileMethods.cs
- XD.cs
- InternalBufferOverflowException.cs
- WebPartEditorCancelVerb.cs
- PermissionToken.cs
- ScriptServiceAttribute.cs
- CodeDomLoader.cs
- TextBox.cs
- XmlSchemaExternal.cs
- DesignerObject.cs
- MemoryMappedFile.cs
- DecryptedHeader.cs
- BitmapData.cs
- HttpListenerRequest.cs
- Crc32.cs
- ForwardPositionQuery.cs
- PersonalizablePropertyEntry.cs
- ReflectionTypeLoadException.cs
- FullTrustAssembly.cs
- SqlDataSourceQueryEditorForm.cs
- PixelFormats.cs
- ListItemsPage.cs
- CodeCompiler.cs
- ExtensionSimplifierMarkupObject.cs
- ProfileParameter.cs
- ObjectPropertyMapping.cs
- ToolStripScrollButton.cs
- SchemaCollectionCompiler.cs
- TextHidden.cs
- TypeSystemHelpers.cs
- ConversionContext.cs
- OrderedEnumerableRowCollection.cs
- SchemaCollectionPreprocessor.cs
- WebDisplayNameAttribute.cs
- RtfControls.cs
- ScriptingScriptResourceHandlerSection.cs
- MaskedTextBoxDesigner.cs
- OptimizedTemplateContent.cs
- X500Name.cs
- ListItemConverter.cs
- DynamicILGenerator.cs
- StringArrayConverter.cs
- SamlSecurityTokenAuthenticator.cs
- ReaderWriterLockWrapper.cs
- VectorAnimationBase.cs
- BitmapImage.cs
- FileEnumerator.cs
- TriState.cs
- FixedDocumentSequencePaginator.cs
- ImmutableDispatchRuntime.cs
- MimeMapping.cs
- PeerToPeerException.cs
- Win32.cs
- UITypeEditor.cs
- SmiMetaDataProperty.cs