Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- ModelItemDictionary.cs
- ReadOnlyDataSourceView.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- ColorMap.cs
- WindowsGraphics.cs
- EndGetFileNameFromUserRequest.cs
- ApplicationActivator.cs
- MsmqUri.cs
- ConsoleCancelEventArgs.cs
- KeyValuePair.cs
- SiteMapNodeItemEventArgs.cs
- UniformGrid.cs
- FixedFlowMap.cs
- Triplet.cs
- StrokeCollectionDefaultValueFactory.cs
- EventBookmark.cs
- QuaternionRotation3D.cs
- TextTreeDeleteContentUndoUnit.cs
- TextHintingModeValidation.cs
- ParameterInfo.cs
- SystemNetworkInterface.cs
- DataPagerFieldItem.cs
- TypeInfo.cs
- CodeTypeConstructor.cs
- Events.cs
- _NegoStream.cs
- RoutedPropertyChangedEventArgs.cs
- BuildProviderAppliesToAttribute.cs
- ConstrainedGroup.cs
- XmlSortKeyAccumulator.cs
- _SingleItemRequestCache.cs
- Triplet.cs
- DataControlButton.cs
- FSWPathEditor.cs
- CollectionType.cs
- oledbmetadatacolumnnames.cs
- _IPv4Address.cs
- DesignerTransactionCloseEvent.cs
- Crc32Helper.cs
- QilTypeChecker.cs
- XmlElementAttribute.cs
- Queue.cs
- MetadataUtilsSmi.cs
- CollectionChange.cs
- OdbcParameter.cs
- OptimisticConcurrencyException.cs
- LinearGradientBrush.cs
- StreamedWorkflowDefinitionContext.cs
- HandlerFactoryWrapper.cs
- SecurityPermission.cs
- DistributedTransactionPermission.cs
- DispatcherEventArgs.cs
- FormsAuthenticationEventArgs.cs
- ClientConfigurationHost.cs
- FixedSOMGroup.cs
- HeaderElement.cs
- AuthorizationRuleCollection.cs
- ColorTransformHelper.cs
- SQLDateTime.cs
- MediaScriptCommandRoutedEventArgs.cs
- propertytag.cs
- SequenceDesignerAccessibleObject.cs
- ArrangedElement.cs
- cache.cs
- ToolStripOverflowButton.cs
- CreateUserWizard.cs
- DataServiceRequestArgs.cs
- CollectionCodeDomSerializer.cs
- SqlTrackingQuery.cs
- ColumnMapProcessor.cs
- VisualTreeUtils.cs
- Int16Animation.cs
- StylusButtonEventArgs.cs
- RecommendedAsConfigurableAttribute.cs
- PrintDocument.cs
- MatrixTransform.cs
- TextFragmentEngine.cs
- DesignerExtenders.cs
- UiaCoreTypesApi.cs
- SequenceFullException.cs
- SelectionItemPattern.cs
- BezierSegment.cs
- ConsumerConnectionPoint.cs
- HuffCodec.cs
- HtmlShimManager.cs
- TextAdaptor.cs
- ComboBoxDesigner.cs
- DataControlFieldCell.cs
- DocumentSequenceHighlightLayer.cs
- ImmutablePropertyDescriptorGridEntry.cs
- ProjectionPathBuilder.cs
- XmlSchemaSimpleContent.cs
- DragDeltaEventArgs.cs
- TextEffectCollection.cs
- XPathDocument.cs
- MenuItemStyle.cs
- ImageListImage.cs
- BinaryConverter.cs
- SQLDouble.cs
- BufferedGraphicsContext.cs