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
- BaseAsyncResult.cs
- LateBoundBitmapDecoder.cs
- KeyboardNavigation.cs
- AttachedPropertyBrowsableAttribute.cs
- HttpListener.cs
- ElementHostPropertyMap.cs
- RepeatBehaviorConverter.cs
- Menu.cs
- InputScopeManager.cs
- RuleEngine.cs
- WebPartEditorCancelVerb.cs
- ShaperBuffers.cs
- ReadOnlyHierarchicalDataSourceView.cs
- ListViewGroup.cs
- MatrixTransform.cs
- HttpModulesSection.cs
- PageBreakRecord.cs
- DetailsViewUpdatedEventArgs.cs
- TextContainer.cs
- DateTime.cs
- ExtensionDataObject.cs
- SystemFonts.cs
- HostedImpersonationContext.cs
- BrushValueSerializer.cs
- TextElementEditingBehaviorAttribute.cs
- DetailsView.cs
- WinEventHandler.cs
- CustomAttributeFormatException.cs
- SystemIPGlobalProperties.cs
- DesignerObject.cs
- Vector3D.cs
- TreeNode.cs
- TreeNode.cs
- RangeBaseAutomationPeer.cs
- HttpHandlersSection.cs
- MasterPageBuildProvider.cs
- ResourcePart.cs
- AssemblyBuilder.cs
- _emptywebproxy.cs
- PolyQuadraticBezierSegment.cs
- DesignerActionUI.cs
- CodeLinePragma.cs
- OleDbMetaDataFactory.cs
- SiteMapProvider.cs
- Context.cs
- MultidimensionalArrayItemReference.cs
- StringBuilder.cs
- RequestCache.cs
- newitemfactory.cs
- Validator.cs
- OracleParameterBinding.cs
- Package.cs
- StrongBox.cs
- AssemblyResourceLoader.cs
- FacetValueContainer.cs
- DateTimeOffsetStorage.cs
- ProcessModelInfo.cs
- UnsettableComboBox.cs
- TdsParameterSetter.cs
- Exceptions.cs
- UIAgentAsyncEndRequest.cs
- DataGridViewCellCollection.cs
- VBCodeProvider.cs
- Converter.cs
- RIPEMD160Managed.cs
- EraserBehavior.cs
- CurrentChangingEventArgs.cs
- OdbcReferenceCollection.cs
- BufferModesCollection.cs
- MessageBox.cs
- VScrollBar.cs
- ObjectDataSource.cs
- SecurityManager.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- SmtpDigestAuthenticationModule.cs
- SpecialFolderEnumConverter.cs
- ChtmlImageAdapter.cs
- Vector3DCollection.cs
- NonSerializedAttribute.cs
- ApplicationGesture.cs
- CacheVirtualItemsEvent.cs
- PlaceHolder.cs
- HtmlElementEventArgs.cs
- webeventbuffer.cs
- TempFiles.cs
- DataSourceCacheDurationConverter.cs
- MarkupCompilePass2.cs
- HideDisabledControlAdapter.cs
- TypeContext.cs
- Int16Animation.cs
- CodeMemberField.cs
- Tuple.cs
- QuadraticBezierSegment.cs
- DoubleAnimationUsingKeyFrames.cs
- UnsafeNativeMethodsTablet.cs
- ConsumerConnectionPoint.cs
- Choices.cs
- Graphics.cs
- XmlMessageFormatter.cs
- IdentityNotMappedException.cs