Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / XmlUtils / System / Xml / Xsl / QIL / QilScopedVisitor.cs / 1 / 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
- ParameterExpression.cs
- OleAutBinder.cs
- CheckBoxFlatAdapter.cs
- Site.cs
- GPPOINT.cs
- XmlSchemaImport.cs
- UrlPath.cs
- PlatformNotSupportedException.cs
- PointAnimationClockResource.cs
- TextRangeEdit.cs
- EntityDataSourceStatementEditorForm.cs
- PageSetupDialog.cs
- ResourceWriter.cs
- DrawingVisual.cs
- DataKey.cs
- DynamicFilter.cs
- GeneratedCodeAttribute.cs
- InkCanvasAutomationPeer.cs
- WindowsListViewItemCheckBox.cs
- ObjectAnimationUsingKeyFrames.cs
- GeometryCollection.cs
- EntityCommandExecutionException.cs
- LinqTreeNodeEvaluator.cs
- ScaleTransform3D.cs
- XhtmlBasicPanelAdapter.cs
- OutputWindow.cs
- XPathPatternBuilder.cs
- VisualCollection.cs
- UIPermission.cs
- CancellationState.cs
- UrlAuthFailureHandler.cs
- BodyGlyph.cs
- AsyncCompletedEventArgs.cs
- HierarchicalDataSourceConverter.cs
- RequestQueryParser.cs
- TypeDelegator.cs
- HttpProcessUtility.cs
- WebUtil.cs
- IOException.cs
- FixedPosition.cs
- TextTreeUndo.cs
- IPPacketInformation.cs
- NotificationContext.cs
- AssertSection.cs
- FixedDocumentSequencePaginator.cs
- MessageContractImporter.cs
- PropertyManager.cs
- XsdSchemaFileEditor.cs
- FrameSecurityDescriptor.cs
- RichTextBox.cs
- SystemInfo.cs
- SqlVersion.cs
- unitconverter.cs
- Convert.cs
- CaseStatementSlot.cs
- WindowsScrollBarBits.cs
- RegistryKey.cs
- ScriptResourceHandler.cs
- FtpRequestCacheValidator.cs
- PeerNameRegistration.cs
- StringDictionary.cs
- PrimitiveDataContract.cs
- EmptyStringExpandableObjectConverter.cs
- Clause.cs
- ValueHandle.cs
- PenLineCapValidation.cs
- EndpointConfigContainer.cs
- ProfileServiceManager.cs
- ColorMatrix.cs
- TaiwanLunisolarCalendar.cs
- SapiAttributeParser.cs
- ComplexLine.cs
- SqlDeflator.cs
- Point3DCollectionValueSerializer.cs
- HttpHandler.cs
- Viewport3DVisual.cs
- EndpointConfigContainer.cs
- CurrentTimeZone.cs
- safex509handles.cs
- OdbcRowUpdatingEvent.cs
- GZipUtils.cs
- DesignerTransaction.cs
- DispatchChannelSink.cs
- ExpressionCopier.cs
- InternalsVisibleToAttribute.cs
- TerminateDesigner.cs
- WorkflowFileItem.cs
- WrappedOptions.cs
- ImageSourceValueSerializer.cs
- Events.cs
- ChildrenQuery.cs
- BindingSource.cs
- ProtocolReflector.cs
- ProfileSettings.cs
- RadialGradientBrush.cs
- NavigationProperty.cs
- Soap11ServerProtocol.cs
- RegistryKey.cs
- AsymmetricKeyExchangeFormatter.cs
- KeyboardInputProviderAcquireFocusEventArgs.cs