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
- DataGridTableCollection.cs
- TimeSpanStorage.cs
- Storyboard.cs
- TypeUnloadedException.cs
- PointConverter.cs
- FollowerQueueCreator.cs
- TextCompositionEventArgs.cs
- ListBoxItemAutomationPeer.cs
- RegexGroupCollection.cs
- DesignerAdapterUtil.cs
- CodeLinePragma.cs
- clipboard.cs
- UserMapPath.cs
- ConfigXmlComment.cs
- CheckBoxFlatAdapter.cs
- securitycriticaldata.cs
- NumberFormatInfo.cs
- WebPartMenu.cs
- PrimitiveXmlSerializers.cs
- SimpleBitVector32.cs
- AuthorizationRule.cs
- MeasurementDCInfo.cs
- ExternalDataExchangeService.cs
- ItemCheckedEvent.cs
- CqlQuery.cs
- DependencyPropertyKey.cs
- FileLoadException.cs
- NavigationCommands.cs
- FreezableOperations.cs
- IndicFontClient.cs
- TextContainerChangeEventArgs.cs
- HighContrastHelper.cs
- Application.cs
- GridItemPatternIdentifiers.cs
- CompiledAction.cs
- DataGrid.cs
- _ListenerAsyncResult.cs
- ButtonBaseAutomationPeer.cs
- VisualStyleElement.cs
- Update.cs
- HttpInputStream.cs
- SafeFileHandle.cs
- XmlSerializerSection.cs
- CompleteWizardStep.cs
- ProcessStartInfo.cs
- BitmapEffectGroup.cs
- SubMenuStyleCollection.cs
- NamedObject.cs
- ContainerParagraph.cs
- XmlEncoding.cs
- ToolStripDropDownMenu.cs
- tibetanshape.cs
- DurableInstancingOptions.cs
- Dispatcher.cs
- MemberDomainMap.cs
- ColumnMapVisitor.cs
- CharacterString.cs
- CancellableEnumerable.cs
- MessageBox.cs
- Hashtable.cs
- RepeatBehaviorConverter.cs
- ScaleTransform3D.cs
- AuthStoreRoleProvider.cs
- SQLGuid.cs
- EnumUnknown.cs
- SafeCertificateContext.cs
- SqlParameterCollection.cs
- Number.cs
- CapacityStreamGeometryContext.cs
- KeyMatchBuilder.cs
- OdbcConnectionOpen.cs
- GenericEnumConverter.cs
- DateTimeParse.cs
- FixedSOMLineCollection.cs
- shaperfactory.cs
- AsymmetricSignatureDeformatter.cs
- ProviderSettings.cs
- ParameterCollection.cs
- BeginGetFileNameFromUserRequest.cs
- DataGridViewImageColumn.cs
- PartialArray.cs
- DataControlFieldCollection.cs
- ReadWriteObjectLock.cs
- EditorZone.cs
- TextRunTypographyProperties.cs
- HitTestWithGeometryDrawingContextWalker.cs
- XhtmlTextWriter.cs
- XmlDictionaryString.cs
- QueueException.cs
- WarningException.cs
- CollaborationHelperFunctions.cs
- SafeCertificateStore.cs
- RenderOptions.cs
- SelectionItemPattern.cs
- ToolStripMenuItem.cs
- InputProviderSite.cs
- GraphicsState.cs
- DropShadowBitmapEffect.cs
- sqlstateclientmanager.cs
- Double.cs