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
- MessagePropertyFilter.cs
- ContainerUIElement3D.cs
- ErrorCodes.cs
- ScriptHandlerFactory.cs
- Main.cs
- HttpResponse.cs
- SqlTypeSystemProvider.cs
- XsltSettings.cs
- ThousandthOfEmRealDoubles.cs
- CriticalHandle.cs
- SystemSounds.cs
- CryptoHelper.cs
- DecimalAnimationUsingKeyFrames.cs
- RepeatButton.cs
- InheritanceRules.cs
- WindowsListView.cs
- EUCJPEncoding.cs
- WebCategoryAttribute.cs
- DesignTimeParseData.cs
- ObjectViewListener.cs
- DisplayMemberTemplateSelector.cs
- Command.cs
- TreeNodeBindingDepthConverter.cs
- JoinQueryOperator.cs
- BooleanStorage.cs
- SerializerWriterEventHandlers.cs
- SecureEnvironment.cs
- AtomPub10CategoriesDocumentFormatter.cs
- ToolStripStatusLabel.cs
- Monitor.cs
- EntityContainerRelationshipSet.cs
- CodeMemberEvent.cs
- PointUtil.cs
- TextChange.cs
- MsmqInputMessage.cs
- WindowsRegion.cs
- StylusPointCollection.cs
- ClientFormsAuthenticationMembershipProvider.cs
- BufferedWebEventProvider.cs
- SchemaSetCompiler.cs
- AspNetSynchronizationContext.cs
- SourceElementsCollection.cs
- DataTableExtensions.cs
- WebPartHelpVerb.cs
- WebBrowserPermission.cs
- DefinitionBase.cs
- Model3D.cs
- Exception.cs
- HyperLinkColumn.cs
- CodeDomLoader.cs
- Matrix.cs
- CreateWorkflowOwnerCommand.cs
- StreamMarshaler.cs
- PageCodeDomTreeGenerator.cs
- MenuItemBinding.cs
- peersecuritysettings.cs
- AsymmetricSignatureDeformatter.cs
- AsynchronousChannelMergeEnumerator.cs
- RichTextBoxAutomationPeer.cs
- ListItemCollection.cs
- CustomAttributeFormatException.cs
- DataContext.cs
- MessagingDescriptionAttribute.cs
- SQLDecimalStorage.cs
- NativeMethods.cs
- ValidatorAttribute.cs
- SimpleTableProvider.cs
- PersonalizationEntry.cs
- HitTestResult.cs
- HiddenFieldPageStatePersister.cs
- SectionInformation.cs
- ControlPaint.cs
- GestureRecognitionResult.cs
- ListViewDataItem.cs
- TextParentUndoUnit.cs
- ImageDesigner.cs
- ColorAnimationUsingKeyFrames.cs
- SelectionBorderGlyph.cs
- TableLayout.cs
- DbConnectionClosed.cs
- NavigationCommands.cs
- QueryRewriter.cs
- XmlNotation.cs
- IQueryable.cs
- FeatureSupport.cs
- TypeReference.cs
- SynchronizationLockException.cs
- UInt32.cs
- InheritablePropertyChangeInfo.cs
- StdValidatorsAndConverters.cs
- XmlBinaryReaderSession.cs
- CqlParserHelpers.cs
- ProviderBase.cs
- CommandLibraryHelper.cs
- TreeBuilder.cs
- OperatorExpressions.cs
- TdsParserSessionPool.cs
- HMACMD5.cs
- HttpCacheParams.cs
- MainMenu.cs