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
- Track.cs
- MediaEntryAttribute.cs
- ToolStripDropDownItem.cs
- ExpressionQuoter.cs
- MetadataArtifactLoader.cs
- SettingsBase.cs
- BitmapEffectvisualstate.cs
- HttpCachePolicyElement.cs
- ToolboxCategory.cs
- SecurityException.cs
- SecurityProtocolCorrelationState.cs
- DataFieldConverter.cs
- XmlAutoDetectWriter.cs
- TypeBuilder.cs
- Int32KeyFrameCollection.cs
- CellRelation.cs
- ImageAnimator.cs
- GridViewEditEventArgs.cs
- SmtpNetworkElement.cs
- GeneralTransform3DTo2DTo3D.cs
- X509RecipientCertificateServiceElement.cs
- TypeReference.cs
- IMembershipProvider.cs
- Transform3DGroup.cs
- UrlRoutingModule.cs
- PathFigureCollection.cs
- TrackingProfileCache.cs
- SoapSchemaExporter.cs
- IntranetCredentialPolicy.cs
- CaseInsensitiveComparer.cs
- CultureInfoConverter.cs
- MessageProperties.cs
- BuildResult.cs
- UidManager.cs
- ImageConverter.cs
- DeferredElementTreeState.cs
- FrameSecurityDescriptor.cs
- WorkingDirectoryEditor.cs
- SqlDataSourceSelectingEventArgs.cs
- DbParameterCollectionHelper.cs
- Solver.cs
- Pkcs9Attribute.cs
- WorkflowPrinting.cs
- _OSSOCK.cs
- XmlSchemaAppInfo.cs
- ServiceEndpointAssociationProvider.cs
- CodeCompiler.cs
- EnumConverter.cs
- TraceEventCache.cs
- RequestCachePolicyConverter.cs
- DaylightTime.cs
- LifetimeManager.cs
- ProfileGroupSettings.cs
- HttpListener.cs
- TableHeaderCell.cs
- MsmqIntegrationProcessProtocolHandler.cs
- SubpageParaClient.cs
- CodeTypeReference.cs
- SecurityCriticalDataForSet.cs
- CryptoProvider.cs
- FunctionQuery.cs
- DropDownButton.cs
- DbConnectionStringCommon.cs
- SiblingIterators.cs
- StaticFileHandler.cs
- PeerTransportBindingElement.cs
- PointLight.cs
- EdmConstants.cs
- FixedSOMTextRun.cs
- SerializerDescriptor.cs
- SecurityContextSecurityTokenAuthenticator.cs
- ObjectKeyFrameCollection.cs
- WebPartConnectionsConfigureVerb.cs
- UserNameSecurityToken.cs
- SqlFacetAttribute.cs
- Dynamic.cs
- ChangesetResponse.cs
- FileDocument.cs
- WebHttpEndpointElement.cs
- WriterOutput.cs
- ExpandCollapseProviderWrapper.cs
- SizeAnimationBase.cs
- DataKeyCollection.cs
- TimerEventSubscription.cs
- MessageQueueEnumerator.cs
- EntityDataSourceView.cs
- ReliableMessagingVersion.cs
- RoutedEvent.cs
- Frame.cs
- Group.cs
- SystemThemeKey.cs
- HwndTarget.cs
- EncryptedPackageFilter.cs
- XAMLParseException.cs
- SpecialTypeDataContract.cs
- CapabilitiesSection.cs
- HttpProfileBase.cs
- Encoder.cs
- Metadata.cs
- SocketException.cs