Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / DataEntity / System / Data / Common / EntitySql / AST / DotExpr.cs / 1305376 / DotExpr.cs
//----------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//---------------------------------------------------------------------
namespace System.Data.Common.EntitySql.AST
{
using System;
using System.Globalization;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
///
/// Represents dotExpr: expr.Identifier
///
internal sealed class DotExpr : Node
{
private readonly Node _leftExpr;
private readonly Identifier _identifier;
private bool? _isMultipartIdentifierComputed;
private string[] _names;
///
/// initializes
///
internal DotExpr(Node leftExpr, Identifier id)
{
_leftExpr = leftExpr;
_identifier = id;
}
///
/// For the following expression: "a.b.c.d", Left returns "a.b.c".
///
internal Node Left
{
get { return _leftExpr; }
}
///
/// For the following expression: "a.b.c.d", Identifier returns "d".
///
internal Identifier Identifier
{
get { return _identifier; }
}
///
/// Returns true if all parts of this expression are identifiers like in "a.b.c",
/// false for expressions like "FunctionCall().a.b.c".
///
internal bool IsMultipartIdentifier(out string[] names)
{
if (_isMultipartIdentifierComputed.HasValue)
{
names = _names;
return _isMultipartIdentifierComputed.Value;
}
_names = null;
Identifier leftIdenitifier = _leftExpr as Identifier;
if (leftIdenitifier != null)
{
_names = new string[] { leftIdenitifier.Name, _identifier.Name };
}
DotExpr leftDotExpr = _leftExpr as DotExpr;
string[] leftNames;
if (leftDotExpr != null && leftDotExpr.IsMultipartIdentifier(out leftNames))
{
_names = new string[leftNames.Length + 1];
leftNames.CopyTo(_names, 0);
_names[_names.Length - 1] = _identifier.Name;
}
Debug.Assert(_names == null || _names.Length > 0, "_names must be null or non-empty");
_isMultipartIdentifierComputed = _names != null;
names = _names;
return _isMultipartIdentifierComputed.Value;
}
}
}
// 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
- BasicViewGenerator.cs
- LogicalExpressionTypeConverter.cs
- SpeakProgressEventArgs.cs
- RSAPKCS1SignatureFormatter.cs
- UnaryOperationBinder.cs
- PeerEndPoint.cs
- ContainerParagraph.cs
- FontWeights.cs
- XamlFilter.cs
- ResourceDictionaryCollection.cs
- DbProviderFactory.cs
- RegexStringValidatorAttribute.cs
- EventProviderBase.cs
- VisualTreeHelper.cs
- SignerInfo.cs
- HashCryptoHandle.cs
- OrderPreservingPipeliningSpoolingTask.cs
- DbConnectionInternal.cs
- TypeForwardedToAttribute.cs
- ToolStripStatusLabel.cs
- JoinGraph.cs
- CustomCategoryAttribute.cs
- SqlUDTStorage.cs
- Domain.cs
- GroupItem.cs
- RealizedColumnsBlock.cs
- VirtualDirectoryMappingCollection.cs
- SafeLibraryHandle.cs
- SynchronousChannel.cs
- SqlServer2KCompatibilityCheck.cs
- WorkItem.cs
- SpellerStatusTable.cs
- TabPageDesigner.cs
- initElementDictionary.cs
- ServiceModelDictionary.cs
- CommandField.cs
- ByteRangeDownloader.cs
- ExpandSegmentCollection.cs
- ListSourceHelper.cs
- DataGridViewCell.cs
- LogSwitch.cs
- StateManagedCollection.cs
- HttpCacheVaryByContentEncodings.cs
- ContainerControl.cs
- CommandValueSerializer.cs
- AccessDataSource.cs
- Camera.cs
- EntityTypeBase.cs
- ObjectSet.cs
- InvalidCastException.cs
- DeliveryRequirementsAttribute.cs
- BordersPage.cs
- FileSystemEnumerable.cs
- DefaultPrintController.cs
- SqlServer2KCompatibilityCheck.cs
- TransactedBatchContext.cs
- KnownBoxes.cs
- Ray3DHitTestResult.cs
- MemberAccessException.cs
- TypeSystemProvider.cs
- XmlSchemaSimpleContent.cs
- Visual3D.cs
- UnaryExpressionHelper.cs
- SecurityStateEncoder.cs
- XPathNodePointer.cs
- Freezable.cs
- EntitySetDataBindingList.cs
- ListViewUpdateEventArgs.cs
- DataBindingHandlerAttribute.cs
- Decimal.cs
- ReadOnlyHierarchicalDataSourceView.cs
- XmlSerializer.cs
- DataGridViewImageCell.cs
- ISAPIApplicationHost.cs
- SerializerDescriptor.cs
- InkCollectionBehavior.cs
- webbrowsersite.cs
- ListControlActionList.cs
- DataGridViewRowHeaderCell.cs
- RsaSecurityToken.cs
- OpenTypeLayoutCache.cs
- PenThread.cs
- XamlDesignerSerializationManager.cs
- VisualBasicHelper.cs
- DetailsViewRowCollection.cs
- Assembly.cs
- ComponentCollection.cs
- DataGridViewCellEventArgs.cs
- DesignColumnCollection.cs
- GetImportedCardRequest.cs
- PathTooLongException.cs
- CaseInsensitiveHashCodeProvider.cs
- CompoundFileIOPermission.cs
- PropertyItemInternal.cs
- OleDbEnumerator.cs
- ColorPalette.cs
- Pens.cs
- ComboBoxDesigner.cs
- Odbc32.cs
- RoutingConfiguration.cs