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
- CodeAccessSecurityEngine.cs
- PrimitiveDataContract.cs
- SplashScreenNativeMethods.cs
- Debugger.cs
- HtmlControlAdapter.cs
- CurrentTimeZone.cs
- FilteredSchemaElementLookUpTable.cs
- SQLByte.cs
- WindowHideOrCloseTracker.cs
- PageBuildProvider.cs
- DataContractJsonSerializerOperationFormatter.cs
- DefaultSettingsSection.cs
- DataGridBoundColumn.cs
- WmlPageAdapter.cs
- XmlObjectSerializerReadContext.cs
- OdbcException.cs
- XmlDataCollection.cs
- ContextStack.cs
- WrappedReader.cs
- NumericExpr.cs
- CompositeScriptReference.cs
- ExtensionFile.cs
- TextSegment.cs
- TemplateGroupCollection.cs
- ElementsClipboardData.cs
- HierarchicalDataSourceDesigner.cs
- URLMembershipCondition.cs
- RegexFCD.cs
- TextBoxAutomationPeer.cs
- WindowsRichEditRange.cs
- DBConnection.cs
- TextAction.cs
- EmptyEnumerable.cs
- ErrorInfoXmlDocument.cs
- ExitEventArgs.cs
- SoapEnumAttribute.cs
- controlskin.cs
- UrlPath.cs
- WrappedReader.cs
- HttpServerChannel.cs
- EventProviderTraceListener.cs
- PerfService.cs
- FrameAutomationPeer.cs
- HybridWebProxyFinder.cs
- ValuePattern.cs
- ColorTransformHelper.cs
- ButtonChrome.cs
- XmlSchemaGroupRef.cs
- Claim.cs
- SmiContext.cs
- QuaternionAnimationBase.cs
- VerificationException.cs
- MruCache.cs
- AddInContractAttribute.cs
- RowToFieldTransformer.cs
- InternalBase.cs
- Slider.cs
- XmlHelper.cs
- SimpleFieldTemplateFactory.cs
- ScriptResourceInfo.cs
- PixelFormat.cs
- CngAlgorithm.cs
- SamlNameIdentifierClaimResource.cs
- VisualStyleRenderer.cs
- DataServices.cs
- WebContext.cs
- SamlEvidence.cs
- UnsafeNativeMethods.cs
- ButtonBaseAdapter.cs
- TextLine.cs
- TdsParser.cs
- EpmSyndicationContentDeSerializer.cs
- ParallelTimeline.cs
- CriticalHandle.cs
- ApplicationCommands.cs
- MailAddressCollection.cs
- KeyEvent.cs
- ExpandoClass.cs
- HTTPAPI_VERSION.cs
- WindowsEditBoxRange.cs
- FillErrorEventArgs.cs
- PnrpPermission.cs
- IPGlobalProperties.cs
- _SSPIWrapper.cs
- NameTable.cs
- EncoderBestFitFallback.cs
- HtmlShim.cs
- ImpersonationContext.cs
- AttributeUsageAttribute.cs
- SplineQuaternionKeyFrame.cs
- WindowsScrollBarBits.cs
- AttachedPropertyMethodSelector.cs
- ConcurrentBag.cs
- Span.cs
- StylusPointProperty.cs
- ValidatorCompatibilityHelper.cs
- CloudCollection.cs
- DragCompletedEventArgs.cs
- DataGridPreparingCellForEditEventArgs.cs
- PropertyDescriptorComparer.cs