Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / XmlUtils / System / Xml / Xsl / QIL / QilScopedVisitor.cs / 1 / 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
- PropertyEmitter.cs
- WindowsTab.cs
- GlyphShapingProperties.cs
- ObjectViewEntityCollectionData.cs
- StreamBodyWriter.cs
- IconConverter.cs
- ContextBase.cs
- BinaryMessageFormatter.cs
- Exceptions.cs
- EndpointBehaviorElementCollection.cs
- BodyGlyph.cs
- ThumbAutomationPeer.cs
- SqlProviderServices.cs
- HwndTarget.cs
- MarshalDirectiveException.cs
- WinInetCache.cs
- SqlTypesSchemaImporter.cs
- RichTextBox.cs
- ProxyManager.cs
- odbcmetadatafactory.cs
- _AutoWebProxyScriptHelper.cs
- IdentifierCollection.cs
- DetailsViewModeEventArgs.cs
- WithParamAction.cs
- smtppermission.cs
- BufferedOutputStream.cs
- MD5.cs
- DebugHandleTracker.cs
- SingleStorage.cs
- bindurihelper.cs
- CircleHotSpot.cs
- TextEndOfParagraph.cs
- EntityDataReader.cs
- DataControlCommands.cs
- MailHeaderInfo.cs
- TransformGroup.cs
- XamlGridLengthSerializer.cs
- DragEvent.cs
- XmlC14NWriter.cs
- MulticastDelegate.cs
- DesignBinding.cs
- XmlUrlResolver.cs
- ScalarType.cs
- SamlEvidence.cs
- StylusPointCollection.cs
- InputBuffer.cs
- ItemsControl.cs
- RankException.cs
- AnonymousIdentificationModule.cs
- ScriptIgnoreAttribute.cs
- ConnectionPoint.cs
- SqlMethodAttribute.cs
- FrameworkElementFactoryMarkupObject.cs
- AbsoluteQuery.cs
- BufferedGraphicsManager.cs
- InputMethodStateTypeInfo.cs
- _SSPIWrapper.cs
- ValidationEventArgs.cs
- XmlSerializerVersionAttribute.cs
- MarkupCompiler.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- XmlStreamStore.cs
- ZeroOpNode.cs
- DBDataPermission.cs
- CommandLibraryHelper.cs
- EdmEntityTypeAttribute.cs
- PermissionRequestEvidence.cs
- XmlILStorageConverter.cs
- RIPEMD160.cs
- PtsPage.cs
- DataGridViewImageCell.cs
- SQLDecimalStorage.cs
- _SslSessionsCache.cs
- Identity.cs
- ContentFilePart.cs
- ExpressionConverter.cs
- OletxCommittableTransaction.cs
- InternalSafeNativeMethods.cs
- DefaultIfEmptyQueryOperator.cs
- MenuItemStyleCollection.cs
- RtfControls.cs
- TopClause.cs
- EntityTypeEmitter.cs
- HtmlTableRowCollection.cs
- WebExceptionStatus.cs
- UnsafeNativeMethods.cs
- XPathNodeIterator.cs
- DbDataRecord.cs
- InputLangChangeEvent.cs
- TaiwanLunisolarCalendar.cs
- Evaluator.cs
- ComplexBindingPropertiesAttribute.cs
- InProcStateClientManager.cs
- StreamingContext.cs
- MultilineStringEditor.cs
- DelegateSerializationHolder.cs
- PngBitmapDecoder.cs
- COM2TypeInfoProcessor.cs
- PeerValidationBehavior.cs
- HandlerBase.cs