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
- ToolStripGripRenderEventArgs.cs
- NotFiniteNumberException.cs
- HtmlControlPersistable.cs
- SetUserLanguageRequest.cs
- DataGridParentRows.cs
- QueueProcessor.cs
- PopupControlService.cs
- GraphicsContainer.cs
- InvalidWMPVersionException.cs
- MembershipSection.cs
- FileRegion.cs
- GridViewColumn.cs
- RoleExceptions.cs
- HelloMessageApril2005.cs
- CommandTreeTypeHelper.cs
- DataObjectEventArgs.cs
- BufferAllocator.cs
- QilGenerator.cs
- CuspData.cs
- FormViewUpdateEventArgs.cs
- ChannelManager.cs
- CaseInsensitiveOrdinalStringComparer.cs
- DesignerDataTableBase.cs
- XmlImplementation.cs
- ValidateNames.cs
- TableCell.cs
- Convert.cs
- Stack.cs
- PasswordPropertyTextAttribute.cs
- VideoDrawing.cs
- _ConnectionGroup.cs
- ComboBoxRenderer.cs
- BaseAutoFormat.cs
- OutputCacheProfile.cs
- SignerInfo.cs
- WebScriptServiceHost.cs
- CatchDesigner.xaml.cs
- AbstractSvcMapFileLoader.cs
- DocumentApplication.cs
- ConnectionConsumerAttribute.cs
- SqlInternalConnection.cs
- DispatcherTimer.cs
- BrowserDefinitionCollection.cs
- RecordConverter.cs
- QilList.cs
- BasicAsyncResult.cs
- MultiplexingDispatchMessageFormatter.cs
- HexParser.cs
- HostingPreferredMapPath.cs
- TrustLevelCollection.cs
- unsafenativemethodstextservices.cs
- ChannelBase.cs
- ExtendedPropertyDescriptor.cs
- GridEntry.cs
- XmlSubtreeReader.cs
- Material.cs
- BuildResult.cs
- Buffer.cs
- RemotingConfigParser.cs
- RelationshipEnd.cs
- RC2CryptoServiceProvider.cs
- DesignTimeXamlWriter.cs
- precedingquery.cs
- GridEntryCollection.cs
- TraversalRequest.cs
- BulletDecorator.cs
- BindableAttribute.cs
- MouseActionConverter.cs
- SessionPageStateSection.cs
- CfgRule.cs
- XmlArrayItemAttributes.cs
- CannotUnloadAppDomainException.cs
- MetafileHeaderWmf.cs
- WindowsGraphicsWrapper.cs
- DesignerActionVerbList.cs
- RoutedEventValueSerializer.cs
- JavascriptCallbackResponseProperty.cs
- FunctionMappingTranslator.cs
- LayoutTableCell.cs
- ImageFormatConverter.cs
- SmiSettersStream.cs
- FormattedTextSymbols.cs
- BidOverLoads.cs
- SqlNodeTypeOperators.cs
- ContentPlaceHolder.cs
- DefaultValidator.cs
- Compensate.cs
- XhtmlBasicValidatorAdapter.cs
- StylusPointDescription.cs
- DesignerLoader.cs
- ResourceWriter.cs
- MouseEventArgs.cs
- CollectionBuilder.cs
- SqlMultiplexer.cs
- TextRenderingModeValidation.cs
- CollectionViewSource.cs
- CallContext.cs
- NumericExpr.cs
- Debug.cs
- EqualityArray.cs