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
- DatagridviewDisplayedBandsData.cs
- SAPIEngineTypes.cs
- BitmapEffectDrawingContent.cs
- ClientClassGenerator.cs
- Span.cs
- XPathPatternParser.cs
- DataPagerField.cs
- ExtenderProviderService.cs
- TypedDataSetSchemaImporterExtension.cs
- DescendentsWalker.cs
- FilterableAttribute.cs
- HttpResponseInternalWrapper.cs
- GridViewRowCollection.cs
- AutomationElement.cs
- DoubleLinkListEnumerator.cs
- TreeNodeBindingCollection.cs
- RawStylusInputCustomData.cs
- CoTaskMemSafeHandle.cs
- HtmlForm.cs
- DocumentEventArgs.cs
- XmlAnyElementAttributes.cs
- ServerTooBusyException.cs
- SiteMapHierarchicalDataSourceView.cs
- _KerberosClient.cs
- OleDbReferenceCollection.cs
- SparseMemoryStream.cs
- SplineKeyFrames.cs
- CustomAttribute.cs
- DataBoundControl.cs
- EntityDesignerDataSourceView.cs
- safex509handles.cs
- CodeSubDirectory.cs
- Bits.cs
- LogManagementAsyncResult.cs
- DataGridColumnCollection.cs
- PropertyValueChangedEvent.cs
- ToolStripSystemRenderer.cs
- AppSettingsExpressionBuilder.cs
- SafeFileHandle.cs
- ListCollectionView.cs
- EdgeModeValidation.cs
- FixedSOMFixedBlock.cs
- Int32Rect.cs
- SqlFactory.cs
- UTF8Encoding.cs
- MailBnfHelper.cs
- WebPartZoneBase.cs
- mda.cs
- SerializableAuthorizationContext.cs
- AxImporter.cs
- TileModeValidation.cs
- TreeNodeStyleCollection.cs
- EmissiveMaterial.cs
- FileUtil.cs
- TableAutomationPeer.cs
- DESCryptoServiceProvider.cs
- SpStreamWrapper.cs
- DataGridViewComponentPropertyGridSite.cs
- OneOf.cs
- InfoCardClaim.cs
- NotImplementedException.cs
- ObjectTag.cs
- FrameDimension.cs
- Script.cs
- QilTargetType.cs
- RadioButtonRenderer.cs
- DuplicateContext.cs
- WebHeaderCollection.cs
- RuleCache.cs
- SafeLocalMemHandle.cs
- ChameleonKey.cs
- RootBrowserWindowAutomationPeer.cs
- ComponentTray.cs
- StyleSelector.cs
- ResourceExpressionBuilder.cs
- SortKey.cs
- LeafCellTreeNode.cs
- OutputCacheProfile.cs
- MemoryMappedViewAccessor.cs
- BamlVersionHeader.cs
- SharedConnectionInfo.cs
- HttpCapabilitiesBase.cs
- _LocalDataStore.cs
- CatalogZoneAutoFormat.cs
- XmlUrlResolver.cs
- XmlCharCheckingReader.cs
- ProxyManager.cs
- ComponentEditorPage.cs
- TypeResolvingOptionsAttribute.cs
- DataGridColumn.cs
- XXXInfos.cs
- MonikerProxyAttribute.cs
- HtmlProps.cs
- DataGridPagerStyle.cs
- followingsibling.cs
- StorageTypeMapping.cs
- CodeIdentifier.cs
- WebPartCancelEventArgs.cs
- OptionalColumn.cs
- MessageBox.cs