Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / XmlUtils / System / Xml / Xsl / QIL / QilScopedVisitor.cs / 1305376 / QilScopedVisitor.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- using System; using System.Collections.Generic; namespace System.Xml.Xsl.Qil { ////// Adds iterator and function scoping to the QilVisitor implementation. /// internal class QilScopedVisitor : QilVisitor { //----------------------------------------------- // QilScopedVisitor methods //----------------------------------------------- ////// Called when a variable, parameter, or function enters scope. /// protected virtual void BeginScope(QilNode node) { } ////// Called when a variable, parameter, or function exits scope. /// protected virtual void EndScope(QilNode node) { } ////// Called at the beginning of Visit(). /// protected virtual void BeforeVisit(QilNode node) { QilExpression qil; switch (node.NodeType) { case QilNodeType.QilExpression: // Put all global functions, variables, and parameters in scope qil = (QilExpression) node; foreach (QilNode param in qil.GlobalParameterList) BeginScope(param); foreach (QilNode var in qil.GlobalVariableList) BeginScope(var); foreach (QilNode func in qil.FunctionList) BeginScope(func); break; case QilNodeType.Function: // Put all formal arguments in scope foreach (QilNode arg in ((QilFunction) node).Arguments) BeginScope(arg); break; case QilNodeType.Loop: case QilNodeType.Filter: case QilNodeType.Sort: // Put loop iterator in scope BeginScope(((QilLoop) node).Variable); break; } } ////// Called at the end of Visit(). /// protected virtual void AfterVisit(QilNode node) { QilExpression qil; switch (node.NodeType) { case QilNodeType.QilExpression: // Remove all global functions, variables, and parameters from scope qil = (QilExpression) node; foreach (QilNode func in qil.FunctionList) EndScope(func); foreach (QilNode var in qil.GlobalVariableList) EndScope(var); foreach (QilNode param in qil.GlobalParameterList) EndScope(param); break; case QilNodeType.Function: // Remove all formal arguments from scope foreach (QilNode arg in ((QilFunction) node).Arguments) EndScope(arg); break; case QilNodeType.Loop: case QilNodeType.Filter: case QilNodeType.Sort: // Remove loop iterator in scope EndScope(((QilLoop) node).Variable); break; } } //----------------------------------------------- // QilVisitor overrides //----------------------------------------------- ////// Call BeforeVisit() and AfterVisit(). /// protected override QilNode Visit(QilNode n) { QilNode ret; BeforeVisit(n); ret = base.Visit(n); AfterVisit(n); return ret; } } } // 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
- MarkedHighlightComponent.cs
- SourceFileBuildProvider.cs
- BaseCollection.cs
- SqlErrorCollection.cs
- HealthMonitoringSectionHelper.cs
- MetadataPropertyAttribute.cs
- _OverlappedAsyncResult.cs
- Grant.cs
- RichTextBox.cs
- BaseTreeIterator.cs
- OleDbRowUpdatingEvent.cs
- BigInt.cs
- DashStyles.cs
- ForeignKeyFactory.cs
- QuaternionAnimationBase.cs
- FixedSOMPage.cs
- HttpListener.cs
- CodeConditionStatement.cs
- XmlCharCheckingWriter.cs
- TargetConverter.cs
- LocalizabilityAttribute.cs
- SqlInternalConnectionTds.cs
- MouseOverProperty.cs
- SqlCacheDependencyDatabase.cs
- OperatingSystem.cs
- RichTextBoxAutomationPeer.cs
- TimeoutValidationAttribute.cs
- XmlSchemaValidationException.cs
- ValidatedControlConverter.cs
- XmlIlGenerator.cs
- Lease.cs
- Brush.cs
- IgnoreFileBuildProvider.cs
- columnmapfactory.cs
- CompensatableTransactionScopeActivity.cs
- KeyBinding.cs
- AdapterDictionary.cs
- PropertiesTab.cs
- GregorianCalendar.cs
- Decorator.cs
- DataGridViewCellStyleConverter.cs
- RuntimeConfig.cs
- StreamUpgradeAcceptor.cs
- IdentityHolder.cs
- GlyphingCache.cs
- WindowsListViewGroup.cs
- MouseBinding.cs
- ButtonRenderer.cs
- AuthorizationRule.cs
- CharacterMetricsDictionary.cs
- BoolLiteral.cs
- ServiceNameElement.cs
- InputProcessorProfiles.cs
- ContextMenuStripGroupCollection.cs
- _ListenerResponseStream.cs
- ListSortDescription.cs
- TemplateBaseAction.cs
- NodeLabelEditEvent.cs
- ProviderSettings.cs
- ValidationErrorEventArgs.cs
- ItemsControl.cs
- GatewayIPAddressInformationCollection.cs
- OleDbEnumerator.cs
- PropertyPushdownHelper.cs
- ADMembershipProvider.cs
- CertificateReferenceElement.cs
- LayoutExceptionEventArgs.cs
- OleDbConnectionFactory.cs
- StateMachineWorkflow.cs
- Token.cs
- SwitchAttribute.cs
- OutputScopeManager.cs
- PenLineJoinValidation.cs
- WrappedIUnknown.cs
- BinaryFormatter.cs
- UserNameSecurityToken.cs
- PKCS1MaskGenerationMethod.cs
- XmlCountingReader.cs
- FontFamilyIdentifier.cs
- Int32.cs
- _IPv6Address.cs
- DataKeyArray.cs
- SimpleType.cs
- UnsafeMethods.cs
- XmlCustomFormatter.cs
- ClientSettingsProvider.cs
- NullableFloatSumAggregationOperator.cs
- FixedDocument.cs
- CodeAttributeDeclaration.cs
- MetadataArtifactLoaderCompositeFile.cs
- SmiGettersStream.cs
- Literal.cs
- SerTrace.cs
- filewebresponse.cs
- ParseElementCollection.cs
- Italic.cs
- OdbcCommandBuilder.cs
- SystemResourceKey.cs
- TextParagraphCache.cs
- HtmlInputFile.cs