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
- TagMapInfo.cs
- LogArchiveSnapshot.cs
- ObjectConverter.cs
- ExpandSegmentCollection.cs
- MULTI_QI.cs
- ResourceSet.cs
- SmtpCommands.cs
- cryptoapiTransform.cs
- TypeNameParser.cs
- FunctionQuery.cs
- CodeDirectoryCompiler.cs
- InvalidateEvent.cs
- COSERVERINFO.cs
- ISAPIWorkerRequest.cs
- BamlResourceContent.cs
- listitem.cs
- SmtpClient.cs
- ConfigurationValue.cs
- AttributeSetAction.cs
- GrammarBuilderDictation.cs
- ADConnectionHelper.cs
- XmlHierarchyData.cs
- CodePageUtils.cs
- BehaviorEditorPart.cs
- ControlBuilder.cs
- Roles.cs
- TreeNode.cs
- XmlText.cs
- WebPartRestoreVerb.cs
- WebServiceHandler.cs
- DataRecordObjectView.cs
- GACIdentityPermission.cs
- HttpPostedFileBase.cs
- SqlProcedureAttribute.cs
- EdmConstants.cs
- PingOptions.cs
- OptimizerPatterns.cs
- SchemaNamespaceManager.cs
- PublisherMembershipCondition.cs
- SQLStringStorage.cs
- StringResourceManager.cs
- ClassValidator.cs
- SqlTypeConverter.cs
- TextBoxBase.cs
- TypeLoadException.cs
- SecurityContextSecurityTokenResolver.cs
- Marshal.cs
- DtrList.cs
- QuarticEase.cs
- EdmTypeAttribute.cs
- SqlNotificationRequest.cs
- BindingManagerDataErrorEventArgs.cs
- CodeGotoStatement.cs
- ListView.cs
- RequestUriProcessor.cs
- InternalBufferManager.cs
- WindowsIdentity.cs
- KeyGestureValueSerializer.cs
- METAHEADER.cs
- RenderData.cs
- ExplicitDiscriminatorMap.cs
- RelatedEnd.cs
- RequestCachingSection.cs
- CodeAttributeArgumentCollection.cs
- VirtualDirectoryMapping.cs
- NotificationContext.cs
- DependencyPropertyKey.cs
- Button.cs
- Composition.cs
- ContentType.cs
- SqlInternalConnectionTds.cs
- IImplicitResourceProvider.cs
- TableLayoutCellPaintEventArgs.cs
- HandledEventArgs.cs
- _LoggingObject.cs
- BaseProcessProtocolHandler.cs
- BinaryReader.cs
- Module.cs
- EntitySet.cs
- ListControlBoundActionList.cs
- SoapAttributeAttribute.cs
- WinFormsSpinner.cs
- DBParameter.cs
- CodeObjectCreateExpression.cs
- SmtpMail.cs
- ToolStripItemCollection.cs
- Subtree.cs
- CodeExpressionStatement.cs
- FormsAuthenticationUser.cs
- FocusManager.cs
- ContentOperations.cs
- EventSinkHelperWriter.cs
- GridSplitter.cs
- RadioButton.cs
- Splitter.cs
- TreeChangeInfo.cs
- HeaderLabel.cs
- ApplicationSecurityManager.cs
- _NativeSSPI.cs
- ProfileSettingsCollection.cs