Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------------------------ //// 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
- FlowchartDesignerCommands.cs
- WindowsStatic.cs
- ServiceAppDomainAssociationProvider.cs
- CapabilitiesPattern.cs
- InfoCardRSAPKCS1KeyExchangeFormatter.cs
- DataListItemEventArgs.cs
- PopupRootAutomationPeer.cs
- ISFTagAndGuidCache.cs
- CatchDesigner.xaml.cs
- DataSourceCacheDurationConverter.cs
- ExpressionQuoter.cs
- FigureParagraph.cs
- DoubleLinkList.cs
- AnimationTimeline.cs
- PrivateFontCollection.cs
- FilteredReadOnlyMetadataCollection.cs
- SchemaImporter.cs
- SqlClientPermission.cs
- HttpApplication.cs
- InputScopeManager.cs
- ColorTransform.cs
- ContextStack.cs
- WebPartVerbCollection.cs
- VectorAnimation.cs
- VariableAction.cs
- ListBindableAttribute.cs
- BidOverLoads.cs
- SmiContextFactory.cs
- SuppressIldasmAttribute.cs
- CodeRegionDirective.cs
- InputScopeConverter.cs
- CustomLineCap.cs
- Encoder.cs
- MissingSatelliteAssemblyException.cs
- WindowsImpersonationContext.cs
- XmlSchemaSimpleTypeList.cs
- InheritanceService.cs
- Int64.cs
- ToolBar.cs
- PipelineModuleStepContainer.cs
- WorkflowMessageEventHandler.cs
- ChildrenQuery.cs
- TreeViewItemAutomationPeer.cs
- SelectManyQueryOperator.cs
- TextSearch.cs
- BaseProcessor.cs
- CommonServiceBehaviorElement.cs
- TreeIterators.cs
- BulletedListEventArgs.cs
- SamlSecurityToken.cs
- PenCursorManager.cs
- PropertyMap.cs
- DeferredRunTextReference.cs
- AssertFilter.cs
- AssertHelper.cs
- WindowsGraphics.cs
- MatrixTransform.cs
- Point4D.cs
- DbParameterCollectionHelper.cs
- ListViewItem.cs
- UInt64.cs
- ColorTransform.cs
- SafeEventLogWriteHandle.cs
- QuotedPrintableStream.cs
- ContainerParaClient.cs
- RoutedEventValueSerializer.cs
- FunctionOverloadResolver.cs
- PropertyDescriptorComparer.cs
- _LocalDataStoreMgr.cs
- AuthenticatedStream.cs
- XmlAttributes.cs
- DataGrid.cs
- CompilationPass2Task.cs
- XPathBinder.cs
- BitConverter.cs
- CriticalExceptions.cs
- DataSet.cs
- TextServicesDisplayAttribute.cs
- FrameworkElementFactory.cs
- XXXOnTypeBuilderInstantiation.cs
- RegistryKey.cs
- ConfigurationProperty.cs
- AuthenticateEventArgs.cs
- MexHttpBindingElement.cs
- CodeMemberEvent.cs
- APCustomTypeDescriptor.cs
- XMLSyntaxException.cs
- UserInitiatedRoutedEventPermission.cs
- RegexInterpreter.cs
- ToolStripArrowRenderEventArgs.cs
- NativeMethodsOther.cs
- ReliabilityContractAttribute.cs
- ToolStripLocationCancelEventArgs.cs
- UTF8Encoding.cs
- TextElement.cs
- HostExecutionContextManager.cs
- CompiledQueryCacheKey.cs
- ZeroOpNode.cs
- Bezier.cs
- IEnumerable.cs