Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- AsyncPostBackTrigger.cs
- CustomErrorsSectionWrapper.cs
- XmlILIndex.cs
- NumberEdit.cs
- ComplexPropertyEntry.cs
- List.cs
- GlyphCache.cs
- ModifiableIteratorCollection.cs
- SymbolPair.cs
- WebPartZoneDesigner.cs
- XmlSerializationGeneratedCode.cs
- UInt16Converter.cs
- RoleServiceManager.cs
- SqlGenericUtil.cs
- TextEvent.cs
- RemotingServices.cs
- DataGridColumn.cs
- ValueChangedEventManager.cs
- XPathAxisIterator.cs
- ConvertTextFrag.cs
- RepeaterItemCollection.cs
- SessionChannels.cs
- ButtonRenderer.cs
- LogPolicy.cs
- NativeRightsManagementAPIsStructures.cs
- WebPartTransformerCollection.cs
- ToolStripItemBehavior.cs
- xmlglyphRunInfo.cs
- TransformCryptoHandle.cs
- MobileUserControlDesigner.cs
- StreamFormatter.cs
- FormatConvertedBitmap.cs
- MemberMaps.cs
- MetadataAssemblyHelper.cs
- TextEditor.cs
- PropertyInformation.cs
- XmlSchemaExternal.cs
- XD.cs
- WorkflowPageSetupDialog.cs
- NumericUpDownAccelerationCollection.cs
- IndexOutOfRangeException.cs
- Int16Storage.cs
- Path.cs
- SafeLocalMemHandle.cs
- DataGridViewTextBoxColumn.cs
- SimpleLine.cs
- ListViewSelectEventArgs.cs
- ExtensionSimplifierMarkupObject.cs
- SmtpNtlmAuthenticationModule.cs
- RuntimeHelpers.cs
- ProtocolViolationException.cs
- VisualStateManager.cs
- ContextDataSource.cs
- Panel.cs
- ThreadSafeList.cs
- COM2ComponentEditor.cs
- SqlDataSourceConfigureSortForm.cs
- ToolStripItemClickedEventArgs.cs
- InternalConfigRoot.cs
- _NtlmClient.cs
- SystemColors.cs
- HTMLTagNameToTypeMapper.cs
- ReadWriteSpinLock.cs
- SamlConditions.cs
- Rules.cs
- CodeIterationStatement.cs
- WinCategoryAttribute.cs
- SoapInteropTypes.cs
- EntityChangedParams.cs
- DockAndAnchorLayout.cs
- AddToCollection.cs
- CrossContextChannel.cs
- XmlSchemaSimpleTypeRestriction.cs
- DataTableReader.cs
- BinaryObjectReader.cs
- StateFinalizationActivity.cs
- ZoneButton.cs
- SqlClientMetaDataCollectionNames.cs
- Evaluator.cs
- NetworkCredential.cs
- EventData.cs
- SiteMapNodeCollection.cs
- HwndProxyElementProvider.cs
- XmlSchemaExternal.cs
- PageCanvasSize.cs
- SystemInfo.cs
- ServerValidateEventArgs.cs
- SqlDataSourceQuery.cs
- DataGridColumnHeaderAutomationPeer.cs
- documentsequencetextview.cs
- DeviceSpecificDialogCachedState.cs
- TabOrder.cs
- InvokeMemberBinder.cs
- NotImplementedException.cs
- TabletDeviceInfo.cs
- TextureBrush.cs
- HTTPNotFoundHandler.cs
- DragEventArgs.cs
- AssemblyAttributesGoHere.cs
- Byte.cs