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
- TableItemStyle.cs
- RequestCacheManager.cs
- ProfileService.cs
- MenuItemStyle.cs
- WorkflowControlEndpoint.cs
- AggregateNode.cs
- XmlSchemaExporter.cs
- InternalConfigRoot.cs
- SqlNode.cs
- StylusEventArgs.cs
- DecimalConstantAttribute.cs
- HashStream.cs
- TextEditorDragDrop.cs
- IndexerNameAttribute.cs
- CodeSubDirectory.cs
- DesignerTransaction.cs
- NamedObject.cs
- PerformanceCounterManager.cs
- ConfigUtil.cs
- StringCollectionMarkupSerializer.cs
- DesignTimeParseData.cs
- DiagnosticTraceSource.cs
- ConnectionManagementSection.cs
- DataGridViewImageCell.cs
- DataTableMappingCollection.cs
- ApplicationId.cs
- DataGridViewCellCancelEventArgs.cs
- ProfileSettingsCollection.cs
- XmlStringTable.cs
- BindingsCollection.cs
- DllNotFoundException.cs
- WebServiceHostFactory.cs
- Clipboard.cs
- ProtocolsConfigurationHandler.cs
- ThreadAttributes.cs
- ProfileService.cs
- AbsoluteQuery.cs
- ScriptMethodAttribute.cs
- SqlMethodCallConverter.cs
- WizardPanelChangingEventArgs.cs
- LogExtentCollection.cs
- SessionStateItemCollection.cs
- EnumBuilder.cs
- InternalConfigConfigurationFactory.cs
- Material.cs
- StorageSetMapping.cs
- MetadataReference.cs
- OutputCacheEntry.cs
- codemethodreferenceexpression.cs
- HttpStreamFormatter.cs
- PermissionSetEnumerator.cs
- HeaderedItemsControl.cs
- LogLogRecordEnumerator.cs
- MenuItem.cs
- DataContractSerializerSection.cs
- DbReferenceCollection.cs
- RowUpdatingEventArgs.cs
- DataGridColumnCollectionEditor.cs
- TraceInternal.cs
- XmlText.cs
- ResourceManagerWrapper.cs
- ReadOnlyDataSource.cs
- SettingsPropertyCollection.cs
- ProfilePropertyMetadata.cs
- RequestCache.cs
- ParameterModifier.cs
- ToolboxBitmapAttribute.cs
- SerializationInfoEnumerator.cs
- XPathConvert.cs
- XmlUrlResolver.cs
- RewritingPass.cs
- WebZone.cs
- PathFigure.cs
- CalendarTable.cs
- KnownTypeAttribute.cs
- PropertyPath.cs
- DataGridViewImageColumn.cs
- BinaryConverter.cs
- WindowsListViewSubItem.cs
- HandledEventArgs.cs
- HelloOperationAsyncResult.cs
- XmlAnyElementAttribute.cs
- RoleGroup.cs
- updateconfighost.cs
- DesignerActionItem.cs
- WorkflowApplicationAbortedEventArgs.cs
- PageHandlerFactory.cs
- BindingMAnagerBase.cs
- XmlSchemaImport.cs
- BitmapVisualManager.cs
- Operand.cs
- StrokeCollection2.cs
- SynchronousChannelMergeEnumerator.cs
- ProjectionCamera.cs
- DetailsViewPageEventArgs.cs
- ColorAnimation.cs
- WSFederationHttpSecurityElement.cs
- XmlSchema.cs
- GenericTypeParameterBuilder.cs
- ToolStripDropTargetManager.cs