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
- ClickablePoint.cs
- BamlRecordReader.cs
- XmlRawWriter.cs
- XmlSchemaInferenceException.cs
- DataGridViewCellStyle.cs
- Types.cs
- DataExpression.cs
- PageCodeDomTreeGenerator.cs
- SelectionChangedEventArgs.cs
- _Semaphore.cs
- GZipStream.cs
- Menu.cs
- MappingItemCollection.cs
- EditorAttribute.cs
- RemoteWebConfigurationHost.cs
- SecureConversationVersion.cs
- TrackingServices.cs
- WebPartMenu.cs
- FusionWrap.cs
- x509utils.cs
- _LocalDataStore.cs
- OdbcEnvironmentHandle.cs
- VarRefManager.cs
- ListViewCancelEventArgs.cs
- ControlDesignerState.cs
- QilTypeChecker.cs
- WorkflowInstanceUnhandledExceptionRecord.cs
- Material.cs
- AsyncDataRequest.cs
- LocatorGroup.cs
- Constants.cs
- _PooledStream.cs
- ToolStripItemImageRenderEventArgs.cs
- PropertyValueUIItem.cs
- BindingNavigator.cs
- AdjustableArrowCap.cs
- UnitySerializationHolder.cs
- COAUTHINFO.cs
- TdsParserStateObject.cs
- TypeConverterHelper.cs
- PrintDialogException.cs
- RadioButton.cs
- ObjectParameter.cs
- TypeReference.cs
- TextBlock.cs
- Operator.cs
- TextElement.cs
- ScriptReference.cs
- Base64Decoder.cs
- LinkButton.cs
- GenericWebPart.cs
- ObjectItemAssemblyLoader.cs
- FormattedTextSymbols.cs
- ContextMenuAutomationPeer.cs
- Constraint.cs
- OutOfProcStateClientManager.cs
- XhtmlConformanceSection.cs
- DesignerToolStripControlHost.cs
- FederatedMessageSecurityOverHttp.cs
- FixedTextSelectionProcessor.cs
- sortedlist.cs
- HostingMessageProperty.cs
- AttachedAnnotationChangedEventArgs.cs
- ItemsPresenter.cs
- ManageRequest.cs
- SrgsSemanticInterpretationTag.cs
- CustomBindingCollectionElement.cs
- ConfigurationValue.cs
- QilValidationVisitor.cs
- InteropDesigner.xaml.cs
- AggregationMinMaxHelpers.cs
- ComplexPropertyEntry.cs
- DNS.cs
- Message.cs
- ThreadPool.cs
- ImpersonateTokenRef.cs
- RunInstallerAttribute.cs
- TimelineGroup.cs
- SendMailErrorEventArgs.cs
- RelationshipEntry.cs
- WorkItem.cs
- SEHException.cs
- OdbcStatementHandle.cs
- ColorConvertedBitmapExtension.cs
- XmlSchemaAnnotated.cs
- HttpDebugHandler.cs
- Parser.cs
- RegisteredScript.cs
- UserNameSecurityToken.cs
- EventWaitHandle.cs
- VectorAnimationBase.cs
- TableProviderWrapper.cs
- DataGridViewColumnCollectionDialog.cs
- SafeNativeMethodsCLR.cs
- XmlProcessingInstruction.cs
- Util.cs
- InternalSafeNativeMethods.cs
- WebConfigurationHost.cs
- MemberCollection.cs
- StateDesigner.Layouts.cs