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
- LogAppendAsyncResult.cs
- ServiceHostFactory.cs
- SqlDataSourceCommandEventArgs.cs
- XmlNodeList.cs
- RootAction.cs
- DataTableClearEvent.cs
- CheckBox.cs
- HideDisabledControlAdapter.cs
- RayMeshGeometry3DHitTestResult.cs
- ChannelTraceRecord.cs
- ArrayConverter.cs
- CompositeActivityValidator.cs
- TransformerTypeCollection.cs
- WebServiceEnumData.cs
- SafeArrayTypeMismatchException.cs
- SafeRightsManagementSessionHandle.cs
- EventBuilder.cs
- SQLChars.cs
- SqlUtil.cs
- SchemaTableColumn.cs
- Binding.cs
- SessionStateModule.cs
- TypedElement.cs
- PasswordDeriveBytes.cs
- ExpressionNode.cs
- Crc32.cs
- SelectedDatesCollection.cs
- SystemWebExtensionsSectionGroup.cs
- ConfigurationSettings.cs
- CustomMenuItemCollection.cs
- CodeExporter.cs
- ProtectedConfigurationSection.cs
- objectresult_tresulttype.cs
- XmlChildNodes.cs
- CommonDialog.cs
- BamlResourceDeserializer.cs
- MonthCalendar.cs
- AssertFilter.cs
- ManagementObjectSearcher.cs
- ScaleTransform3D.cs
- TextRangeEditTables.cs
- ContextMenuStrip.cs
- OdbcDataAdapter.cs
- DataGridViewCellMouseEventArgs.cs
- Icon.cs
- MultiPropertyDescriptorGridEntry.cs
- TextEditor.cs
- MethodRental.cs
- EmptyEnumerator.cs
- OverflowException.cs
- CacheDependency.cs
- XXXOnTypeBuilderInstantiation.cs
- DateTimeConstantAttribute.cs
- ClassDataContract.cs
- DropDownButton.cs
- Visual3DCollection.cs
- ImageKeyConverter.cs
- AnnotationResourceCollection.cs
- DecimalAnimationBase.cs
- PatternMatchRules.cs
- ParallelTimeline.cs
- KnownTypeAttribute.cs
- DeadCharTextComposition.cs
- Encoding.cs
- XmlMembersMapping.cs
- RC2.cs
- ColumnWidthChangedEvent.cs
- Version.cs
- SqlCommandSet.cs
- MILUtilities.cs
- EntitySqlException.cs
- Point3DCollection.cs
- KeyInterop.cs
- Transform.cs
- RegexNode.cs
- SharedPersonalizationStateInfo.cs
- WebPartZoneBase.cs
- UpdateCompiler.cs
- DummyDataSource.cs
- smtppermission.cs
- DataGridViewElement.cs
- NamespaceCollection.cs
- X509CertificateValidator.cs
- AddToCollection.cs
- XmlQueryOutput.cs
- cache.cs
- ResourceExpression.cs
- MetafileEditor.cs
- _AuthenticationState.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- XmlDataCollection.cs
- DetailsViewRowCollection.cs
- ByteStorage.cs
- Transform.cs
- TransformBlockRequest.cs
- OleDbEnumerator.cs
- ElementFactory.cs
- DataQuery.cs
- HttpStaticObjectsCollectionWrapper.cs
- DisplayClaim.cs