Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Map / ViewGeneration / CqlGeneration / CqlIdentifiers.cs / 1305376 / 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); } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")] internal void AddIdentifier(string identifier) { m_identifiers.Add(identifier.ToLower(CultureInfo.InvariantCulture)); } [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase")] 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
- GifBitmapDecoder.cs
- DBSchemaRow.cs
- HtmlTableRow.cs
- TraceHandlerErrorFormatter.cs
- UInt16Converter.cs
- RoutingEndpointTrait.cs
- GraphicsPath.cs
- MailWebEventProvider.cs
- SqlFlattener.cs
- CommandEventArgs.cs
- KerberosSecurityTokenAuthenticator.cs
- SqlNode.cs
- MetaType.cs
- _NativeSSPI.cs
- ItemCheckEvent.cs
- RayMeshGeometry3DHitTestResult.cs
- exports.cs
- XsltConvert.cs
- ObjectSet.cs
- ArraySet.cs
- HtmlLinkAdapter.cs
- DbParameterCollection.cs
- JobCollate.cs
- SafeReversePInvokeHandle.cs
- StateMachine.cs
- InputBinder.cs
- UncommonField.cs
- SecurityElement.cs
- DocumentSchemaValidator.cs
- PackageRelationship.cs
- WebControlAdapter.cs
- Int32Collection.cs
- BinaryOperationBinder.cs
- SignatureResourcePool.cs
- AggregatePushdown.cs
- FrameworkElement.cs
- initElementDictionary.cs
- SQLBytes.cs
- ServiceSecurityAuditElement.cs
- UnsignedPublishLicense.cs
- CellParaClient.cs
- EventMappingSettings.cs
- MetadataItem.cs
- SchemaLookupTable.cs
- StylusPoint.cs
- ParserStack.cs
- WebRequestModuleElement.cs
- DataServiceQueryOfT.cs
- DataControlCommands.cs
- ConfigurationConverterBase.cs
- WriteLineDesigner.xaml.cs
- DataGridViewAutoSizeModeEventArgs.cs
- OutputCacheSettings.cs
- IteratorDescriptor.cs
- DefaultParameterValueAttribute.cs
- JavaScriptString.cs
- PixelFormats.cs
- EntityClientCacheKey.cs
- ThicknessAnimationUsingKeyFrames.cs
- GenericPrincipal.cs
- XmlQueryType.cs
- SplashScreenNativeMethods.cs
- SparseMemoryStream.cs
- MediaEntryAttribute.cs
- OleDbWrapper.cs
- EdmFunctionAttribute.cs
- ILGenerator.cs
- SpellerError.cs
- HttpRuntimeSection.cs
- RepeatButton.cs
- __FastResourceComparer.cs
- OleStrCAMarshaler.cs
- WebReferenceOptions.cs
- PathSegmentCollection.cs
- OutputCacheSection.cs
- DocumentViewerBaseAutomationPeer.cs
- ClientUrlResolverWrapper.cs
- ResourcePermissionBaseEntry.cs
- SourceSwitch.cs
- DecoderNLS.cs
- CompiledAction.cs
- HttpApplication.cs
- _BufferOffsetSize.cs
- FixedPageAutomationPeer.cs
- FormClosedEvent.cs
- HttpMethodConstraint.cs
- RowCache.cs
- Evidence.cs
- TTSVoice.cs
- ObjectViewEntityCollectionData.cs
- CodeDelegateInvokeExpression.cs
- FormViewInsertedEventArgs.cs
- MarkupCompilePass2.cs
- ApplicationCommands.cs
- DescriptionCreator.cs
- TextEndOfSegment.cs
- CustomAttributeFormatException.cs
- BinaryObjectInfo.cs
- TreeWalker.cs
- Convert.cs