Code:
/ 4.0 / 4.0 / 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. //------------------------------------------------------------------------------ //// 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
- TextServicesContext.cs
- ProxyWebPartConnectionCollection.cs
- SecurityValidationBehavior.cs
- HandleCollector.cs
- DataGridColumnStyleMappingNameEditor.cs
- GridViewEditEventArgs.cs
- Behavior.cs
- PageThemeParser.cs
- SizeFConverter.cs
- HexParser.cs
- WebPartZoneCollection.cs
- ByteAnimation.cs
- EnumUnknown.cs
- Graphics.cs
- DataViewManager.cs
- KeyProperty.cs
- Model3D.cs
- IntSecurity.cs
- LogEntryHeaderDeserializer.cs
- DbConnectionInternal.cs
- EndpointConfigContainer.cs
- HeaderCollection.cs
- ObjectConverter.cs
- SessionStateUtil.cs
- PkcsUtils.cs
- ConfigurationManagerHelperFactory.cs
- ISO2022Encoding.cs
- RangeBaseAutomationPeer.cs
- CollectionViewGroup.cs
- CheckBoxRenderer.cs
- HiddenField.cs
- VScrollProperties.cs
- ImageMap.cs
- ExecutionEngineException.cs
- SqlDuplicator.cs
- XmlBinaryReaderSession.cs
- ScriptBehaviorDescriptor.cs
- Rotation3DAnimation.cs
- MouseButtonEventArgs.cs
- TemplateControlBuildProvider.cs
- Button.cs
- EntityViewContainer.cs
- DispatcherOperation.cs
- Listbox.cs
- XmlSchemaValidator.cs
- QuaternionRotation3D.cs
- DataGridViewRowsAddedEventArgs.cs
- IntegrationExceptionEventArgs.cs
- QueryCacheEntry.cs
- BitVector32.cs
- ClientRolePrincipal.cs
- CompressStream.cs
- TextOptionsInternal.cs
- ConnectionManagementSection.cs
- HighContrastHelper.cs
- ComEventsHelper.cs
- ISessionStateStore.cs
- WebPartPersonalization.cs
- RectAnimationClockResource.cs
- ByteAnimation.cs
- NotifyCollectionChangedEventArgs.cs
- AppDomainGrammarProxy.cs
- WindowsGraphicsCacheManager.cs
- GenericIdentity.cs
- ClientSettingsProvider.cs
- PageRouteHandler.cs
- SmtpNtlmAuthenticationModule.cs
- ArrayElementGridEntry.cs
- Sql8ConformanceChecker.cs
- LassoSelectionBehavior.cs
- CodeAssignStatement.cs
- InlineCollection.cs
- Transform3DCollection.cs
- typedescriptorpermission.cs
- SqlBuilder.cs
- Stopwatch.cs
- CodeDirectiveCollection.cs
- PrintSchema.cs
- SoapSchemaMember.cs
- GraphicsContainer.cs
- QuadraticBezierSegment.cs
- HttpRuntime.cs
- DesignerLabelAdapter.cs
- CollectionViewGroupRoot.cs
- ObjectDataSourceFilteringEventArgs.cs
- DurationConverter.cs
- ActiveDocumentEvent.cs
- WebPartConnectionCollection.cs
- MediaEntryAttribute.cs
- OutputCacheSettingsSection.cs
- CaseInsensitiveHashCodeProvider.cs
- XmlWrappingReader.cs
- DataContractJsonSerializer.cs
- SoapFault.cs
- BaseInfoTable.cs
- Int32KeyFrameCollection.cs
- GridView.cs
- XamlSerializerUtil.cs
- DataControlButton.cs
- Compiler.cs