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
- ValidationSummary.cs
- StringUtil.cs
- ClientSponsor.cs
- FormConverter.cs
- LicenseContext.cs
- WebServiceResponse.cs
- ParserOptions.cs
- DNS.cs
- SqlConnectionPoolProviderInfo.cs
- DataGridViewRow.cs
- StretchValidation.cs
- MethodCallExpression.cs
- WebPermission.cs
- Update.cs
- MaterializeFromAtom.cs
- InternalConfigRoot.cs
- Message.cs
- ParameterCollection.cs
- QueueProcessor.cs
- WebPartManager.cs
- StringPropertyBuilder.cs
- DrawingVisualDrawingContext.cs
- Light.cs
- Rotation3D.cs
- DesigntimeLicenseContext.cs
- PasswordRecoveryDesigner.cs
- DateTimeParse.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- UpdatePanelTriggerCollection.cs
- ConfigurationLockCollection.cs
- DataTemplateKey.cs
- UnsafeNativeMethodsCLR.cs
- MessageSmuggler.cs
- BindingMemberInfo.cs
- EventPrivateKey.cs
- PackageStore.cs
- EmptyEnumerator.cs
- CodeAttributeArgument.cs
- HttpPostLocalhostServerProtocol.cs
- ThreadExceptionEvent.cs
- CapacityStreamGeometryContext.cs
- Triplet.cs
- WebEvents.cs
- Stack.cs
- DataViewManager.cs
- ImageBrush.cs
- Size3DValueSerializer.cs
- XsltQilFactory.cs
- XmlSchemaComplexContentExtension.cs
- ToolStripItem.cs
- NavigateUrlConverter.cs
- NavigationService.cs
- RichTextBoxConstants.cs
- PerformanceCounterPermission.cs
- NamespaceCollection.cs
- DataSourceControl.cs
- ByeOperation11AsyncResult.cs
- Activity.cs
- ProxyWebPartManager.cs
- WindowProviderWrapper.cs
- KeyTimeConverter.cs
- BorderSidesEditor.cs
- Duration.cs
- CollectionChangeEventArgs.cs
- EventArgs.cs
- BinaryReader.cs
- Win32SafeHandles.cs
- DoubleLinkListEnumerator.cs
- ResizingMessageFilter.cs
- ServiceHttpHandlerFactory.cs
- PassportIdentity.cs
- ProcessHostFactoryHelper.cs
- SerializationException.cs
- PhotoPrintingIntent.cs
- ResizeGrip.cs
- XmlILStorageConverter.cs
- UserValidatedEventArgs.cs
- DodSequenceMerge.cs
- ObjectItemCollection.cs
- AccessDataSourceWizardForm.cs
- UnhandledExceptionEventArgs.cs
- ByteStorage.cs
- ErrorRuntimeConfig.cs
- PersonalizationState.cs
- ButtonPopupAdapter.cs
- ConcurrentDictionary.cs
- UnSafeCharBuffer.cs
- MdiWindowListStrip.cs
- EmptyStringExpandableObjectConverter.cs
- MatrixAnimationUsingPath.cs
- DateTimeConverter.cs
- NamespaceEmitter.cs
- BindingNavigator.cs
- XmlSchemaProviderAttribute.cs
- Themes.cs
- InvalidDocumentContentsException.cs
- RegionInfo.cs
- VisualStyleRenderer.cs
- ListViewInsertedEventArgs.cs
- WindowsSidIdentity.cs