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
- XmlArrayItemAttribute.cs
- SqlFormatter.cs
- StringCollection.cs
- Input.cs
- ItemsPresenter.cs
- codemethodreferenceexpression.cs
- EventMappingSettingsCollection.cs
- HtmlUtf8RawTextWriter.cs
- DbConnectionFactory.cs
- ProcessHostFactoryHelper.cs
- RangeBase.cs
- OleDbRowUpdatedEvent.cs
- GroupBoxRenderer.cs
- IPipelineRuntime.cs
- ConfigurationManagerHelperFactory.cs
- uribuilder.cs
- DynamicResourceExtensionConverter.cs
- Section.cs
- PocoPropertyAccessorStrategy.cs
- WindowsRegion.cs
- FloatUtil.cs
- FileAccessException.cs
- TracingConnectionListener.cs
- ProjectionCamera.cs
- GeneralTransform3DTo2DTo3D.cs
- RawStylusInputCustomData.cs
- SettingsPropertyIsReadOnlyException.cs
- Rijndael.cs
- ValueSerializerAttribute.cs
- RegularExpressionValidator.cs
- PropertyGridView.cs
- PrtTicket_Public_Simple.cs
- DataSourceGeneratorException.cs
- DoubleStorage.cs
- StorageAssociationTypeMapping.cs
- WebPart.cs
- validation.cs
- LinkTarget.cs
- UrlMapping.cs
- CompareValidator.cs
- Matrix3D.cs
- SqlFunctions.cs
- TraceSection.cs
- OrCondition.cs
- dataobject.cs
- PeerNeighborManager.cs
- FormCollection.cs
- DesignColumn.cs
- FileSystemWatcher.cs
- DataServiceProviderWrapper.cs
- VirtualDirectoryMapping.cs
- NetMsmqSecurityMode.cs
- documentsequencetextview.cs
- SqlClientWrapperSmiStreamChars.cs
- DataSvcMapFileSerializer.cs
- StatusBar.cs
- SystemInfo.cs
- PolicyException.cs
- XmlSchemaSimpleTypeList.cs
- HtmlMobileTextWriter.cs
- SizeAnimationBase.cs
- NotCondition.cs
- StackSpiller.Temps.cs
- DBDataPermission.cs
- DiscriminatorMap.cs
- HttpListenerPrefixCollection.cs
- ObjectDataSourceMethodEventArgs.cs
- TableLayout.cs
- BevelBitmapEffect.cs
- SessionStateContainer.cs
- EmptyCollection.cs
- OutgoingWebResponseContext.cs
- Operators.cs
- TargetPerspective.cs
- FontEmbeddingManager.cs
- AutomationAttributeInfo.cs
- ToolStripHighContrastRenderer.cs
- DataBoundLiteralControl.cs
- TdsEnums.cs
- EntityTypeEmitter.cs
- OleDbWrapper.cs
- SharedHttpTransportManager.cs
- CodeAttributeDeclaration.cs
- ToolStripCustomTypeDescriptor.cs
- LogLogRecordHeader.cs
- EpmCustomContentWriterNodeData.cs
- DebugView.cs
- AsyncOperationManager.cs
- LinqDataSourceDeleteEventArgs.cs
- wgx_sdk_version.cs
- StrictAndMessageFilter.cs
- OpCellTreeNode.cs
- RuntimeHelpers.cs
- CapabilitiesUse.cs
- LayoutDump.cs
- SubMenuStyleCollection.cs
- MetadataElement.cs
- Pair.cs
- RenderTargetBitmap.cs
- ServiceParser.cs