Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- isolationinterop.cs
- StrongNamePublicKeyBlob.cs
- OpCellTreeNode.cs
- OracleTransaction.cs
- ExcludeFromCodeCoverageAttribute.cs
- ThaiBuddhistCalendar.cs
- ListViewDataItem.cs
- DoubleAnimationUsingPath.cs
- SoapClientMessage.cs
- DataReaderContainer.cs
- CodeConstructor.cs
- TcpHostedTransportConfiguration.cs
- ArrayConverter.cs
- UserControlAutomationPeer.cs
- DataGridViewIntLinkedList.cs
- PathTooLongException.cs
- InternalBufferOverflowException.cs
- WpfXamlLoader.cs
- TreeView.cs
- SapiGrammar.cs
- UserControl.cs
- DES.cs
- Polygon.cs
- XmlQualifiedNameTest.cs
- ToolStripContainerActionList.cs
- nulltextcontainer.cs
- GuidTagList.cs
- ListControlConvertEventArgs.cs
- BindUriHelper.cs
- DataGrid.cs
- RequestNavigateEventArgs.cs
- MemoryPressure.cs
- LocationUpdates.cs
- BmpBitmapDecoder.cs
- AppendHelper.cs
- SelectedGridItemChangedEvent.cs
- SchemaElementDecl.cs
- SerializationAttributes.cs
- HotSpot.cs
- Context.cs
- InfoCardSymmetricCrypto.cs
- ImageMapEventArgs.cs
- EraserBehavior.cs
- CriticalHandle.cs
- ExpressionCopier.cs
- BackStopAuthenticationModule.cs
- DataSourceXmlTextReader.cs
- StrongNameKeyPair.cs
- RuntimeHandles.cs
- TextEditorLists.cs
- RNGCryptoServiceProvider.cs
- SystemWebCachingSectionGroup.cs
- TrackingMemoryStreamFactory.cs
- DateTimeHelper.cs
- StrokeCollectionDefaultValueFactory.cs
- DataControlFieldCollection.cs
- FontStretches.cs
- Span.cs
- EasingQuaternionKeyFrame.cs
- ParentQuery.cs
- SerializationStore.cs
- LambdaCompiler.Lambda.cs
- IndentedWriter.cs
- MenuItemStyleCollection.cs
- ReadOnlyTernaryTree.cs
- uribuilder.cs
- ExtractorMetadata.cs
- Socket.cs
- AmbientLight.cs
- WriteableOnDemandPackagePart.cs
- WrappedIUnknown.cs
- PrintEvent.cs
- Double.cs
- VisualBasicImportReference.cs
- Animatable.cs
- recordstatefactory.cs
- GeneralTransform3DTo2D.cs
- RangeValuePattern.cs
- ActivityMarkupSerializationProvider.cs
- ADRole.cs
- OleDbParameter.cs
- SmiContextFactory.cs
- SpinLock.cs
- MouseButtonEventArgs.cs
- WinFormsSecurity.cs
- StylusButton.cs
- FixedDSBuilder.cs
- SecurityManager.cs
- regiisutil.cs
- PeerInputChannelListener.cs
- CharAnimationBase.cs
- HashRepartitionStream.cs
- PublisherIdentityPermission.cs
- IImplicitResourceProvider.cs
- AllMembershipCondition.cs
- FileResponseElement.cs
- DSACryptoServiceProvider.cs
- ListBoxItem.cs
- BookmarkResumptionRecord.cs
- NativeActivityMetadata.cs