Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / ndp / fx / src / DataEntity / System / Data / Common / EntitySql / DotExpr.cs / 1 / DotExpr.cs
//---------------------------------------------------------------------- //// Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @bacukp [....] //--------------------------------------------------------------------- namespace System.Data.Common.EntitySql { using System; using System.Globalization; using System.Collections; using System.Collections.Generic; ////// represents dotExpr (expr)+.Identifier /// internal sealed class DotExpr : Expr #if EXTRA_ENTITYSQL_PARSER_DEBUGGING , IEnumerable#endif { private Expr _leftExpr; private Identifier _identifier; private bool _wasDotIdComputed; private bool _isDottedIdentifier; private string[] _identifierNames; private string _fullName; private int _length; private Expr _leftmostExpr; /// /// initializes /// /// /// internal DotExpr( Expr expr, Identifier id ) { _leftExpr = expr; _identifier = id; } internal Expr Left { get { return _leftExpr; } } internal Identifier Identifier { get { return _identifier; } } internal bool IsDottedIdentifier { get { CheckIfDotIdentifier(); return _isDottedIdentifier; } } internal int Length { get { CheckIfDotIdentifier(); return _length; } } internal string[] Names { get { CheckIfDotIdentifier(); return _identifierNames; } } internal string FullName { get { CheckIfDotIdentifier(); return _fullName; } } internal Expr LeftMostExpression { get { CheckIfDotIdentifier(); return _leftmostExpr; } } // // Delay computation and cache results // private void CheckIfDotIdentifier() { if (_wasDotIdComputed) { return; } _wasDotIdComputed = true; // // Get number of 'elements' // _length = 0; _isDottedIdentifier = false; Expr expr = this; while (expr is DotExpr) { _length++; expr = ((DotExpr)expr).Left; } if (expr is Identifier) { _isDottedIdentifier = true; _length++; } else { _leftmostExpr = expr; } _identifierNames = new string[_length]; int i = _length - 1; expr = this; while (expr is DotExpr) { DotExpr dotExpr = (DotExpr)expr; _identifierNames[i--] = dotExpr.Identifier.Name; expr = dotExpr.Left; } if (null == _leftmostExpr && null != expr) { _identifierNames[i] = ((Identifier)expr).Name; } _fullName = String.Join(".", _identifierNames); } #if EXTRA_ENTITYSQL_PARSER_DEBUGGING #region GetEnumerator public IEnumeratorGetEnumerator() { Expr _expr = this; while (_expr is DotExpr) { yield return _expr; _expr = ((DotExpr)_expr).Left; } } System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return GetEnumerator(); } #endregion #endif } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------------- // // Copyright (c) Microsoft Corporation. All rights reserved. // // // @owner [....] // @bacukp [....] //--------------------------------------------------------------------- namespace System.Data.Common.EntitySql { using System; using System.Globalization; using System.Collections; using System.Collections.Generic; ////// represents dotExpr (expr)+.Identifier /// internal sealed class DotExpr : Expr #if EXTRA_ENTITYSQL_PARSER_DEBUGGING , IEnumerable#endif { private Expr _leftExpr; private Identifier _identifier; private bool _wasDotIdComputed; private bool _isDottedIdentifier; private string[] _identifierNames; private string _fullName; private int _length; private Expr _leftmostExpr; /// /// initializes /// /// /// internal DotExpr( Expr expr, Identifier id ) { _leftExpr = expr; _identifier = id; } internal Expr Left { get { return _leftExpr; } } internal Identifier Identifier { get { return _identifier; } } internal bool IsDottedIdentifier { get { CheckIfDotIdentifier(); return _isDottedIdentifier; } } internal int Length { get { CheckIfDotIdentifier(); return _length; } } internal string[] Names { get { CheckIfDotIdentifier(); return _identifierNames; } } internal string FullName { get { CheckIfDotIdentifier(); return _fullName; } } internal Expr LeftMostExpression { get { CheckIfDotIdentifier(); return _leftmostExpr; } } // // Delay computation and cache results // private void CheckIfDotIdentifier() { if (_wasDotIdComputed) { return; } _wasDotIdComputed = true; // // Get number of 'elements' // _length = 0; _isDottedIdentifier = false; Expr expr = this; while (expr is DotExpr) { _length++; expr = ((DotExpr)expr).Left; } if (expr is Identifier) { _isDottedIdentifier = true; _length++; } else { _leftmostExpr = expr; } _identifierNames = new string[_length]; int i = _length - 1; expr = this; while (expr is DotExpr) { DotExpr dotExpr = (DotExpr)expr; _identifierNames[i--] = dotExpr.Identifier.Name; expr = dotExpr.Left; } if (null == _leftmostExpr && null != expr) { _identifierNames[i] = ((Identifier)expr).Name; } _fullName = String.Join(".", _identifierNames); } #if EXTRA_ENTITYSQL_PARSER_DEBUGGING #region GetEnumerator public IEnumeratorGetEnumerator() { Expr _expr = this; while (_expr is DotExpr) { yield return _expr; _expr = ((DotExpr)_expr).Left; } } System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() { return GetEnumerator(); } #endregion #endif } } // 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
- PeerConnector.cs
- RecordsAffectedEventArgs.cs
- UnsafeNetInfoNativeMethods.cs
- InternalResources.cs
- PrintDocument.cs
- Bezier.cs
- CodeGroup.cs
- SourceElementsCollection.cs
- CodeVariableDeclarationStatement.cs
- MobileTextWriter.cs
- SoapProcessingBehavior.cs
- Visitor.cs
- TypeBuilder.cs
- SystemIcmpV4Statistics.cs
- QilXmlWriter.cs
- QueryPageSettingsEventArgs.cs
- Evaluator.cs
- UriParserTemplates.cs
- ClientType.cs
- XmlDataSourceView.cs
- BStrWrapper.cs
- LocalFileSettingsProvider.cs
- XmlSchemaElement.cs
- WebMessageFormatHelper.cs
- DbConnectionClosed.cs
- ContainsSearchOperator.cs
- PointLightBase.cs
- CharAnimationBase.cs
- TypeAccessException.cs
- PointUtil.cs
- Normalization.cs
- XPathSingletonIterator.cs
- HTTP_SERVICE_CONFIG_URLACL_PARAM.cs
- EventInfo.cs
- DynamicVirtualDiscoSearcher.cs
- Message.cs
- ExpressionVisitor.cs
- MaskedTextBox.cs
- HttpRuntimeSection.cs
- HandlerWithFactory.cs
- EventProviderWriter.cs
- SQLInt32.cs
- MemoryStream.cs
- PageContentCollection.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- Resources.Designer.cs
- DoubleAnimationClockResource.cs
- InfoCardUIAgent.cs
- RSAPKCS1SignatureDeformatter.cs
- LogLogRecordEnumerator.cs
- ResourcePropertyMemberCodeDomSerializer.cs
- ListCollectionView.cs
- SqlNode.cs
- ToolZoneDesigner.cs
- ContentPropertyAttribute.cs
- DependencySource.cs
- WbmpConverter.cs
- ConversionContext.cs
- Encoder.cs
- DecimalFormatter.cs
- AnchorEditor.cs
- FloatUtil.cs
- AppearanceEditorPart.cs
- MemberAccessException.cs
- DescriptionAttribute.cs
- DoubleCollectionConverter.cs
- FieldAccessException.cs
- ObjectTag.cs
- ErrorTableItemStyle.cs
- AssemblyInfo.cs
- RewritingSimplifier.cs
- ReadOnlyPropertyMetadata.cs
- ProfileSection.cs
- Schema.cs
- SchemaElementDecl.cs
- ExceptionUtility.cs
- autovalidator.cs
- FormatException.cs
- Parsers.cs
- SpeechUI.cs
- Processor.cs
- CharacterMetrics.cs
- SiteMapDataSourceDesigner.cs
- Attribute.cs
- InputMethodStateChangeEventArgs.cs
- RenderOptions.cs
- AttachmentService.cs
- FutureFactory.cs
- ImageCodecInfoPrivate.cs
- assertwrapper.cs
- StylusOverProperty.cs
- AncestorChangedEventArgs.cs
- PeerObject.cs
- _BasicClient.cs
- RenderContext.cs
- Paragraph.cs
- EditingCommands.cs
- Transactions.cs
- CellParagraph.cs
- SafePointer.cs