Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / XmlUtils / System / Xml / Xsl / QIL / QilScopedVisitor.cs / 1305376 / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BitmapEffectDrawing.cs
- Screen.cs
- Metafile.cs
- QuarticEase.cs
- TemplateControlCodeDomTreeGenerator.cs
- GroupBox.cs
- AddressHeader.cs
- NotFiniteNumberException.cs
- IsolatedStorage.cs
- CommentEmitter.cs
- NotSupportedException.cs
- ScalarType.cs
- EqualityComparer.cs
- MessagePropertyVariants.cs
- QueryPageSettingsEventArgs.cs
- IDReferencePropertyAttribute.cs
- InputLanguageCollection.cs
- Column.cs
- CounterNameConverter.cs
- WinCategoryAttribute.cs
- WebConfigurationHostFileChange.cs
- FileSystemEventArgs.cs
- EnterpriseServicesHelper.cs
- CodePrimitiveExpression.cs
- GeneralTransformGroup.cs
- COM2PictureConverter.cs
- TextProperties.cs
- SchemaEntity.cs
- SerializationAttributes.cs
- ToolStripArrowRenderEventArgs.cs
- DocumentXPathNavigator.cs
- WeakKeyDictionary.cs
- ArrayEditor.cs
- EventMetadata.cs
- ColorContext.cs
- MetadataExchangeBindings.cs
- TextEditorCharacters.cs
- MissingMethodException.cs
- MediaContextNotificationWindow.cs
- ImplicitInputBrush.cs
- SecurityTokenAuthenticator.cs
- PropertyGridView.cs
- StringBuilder.cs
- X509ThumbprintKeyIdentifierClause.cs
- SafeFileMappingHandle.cs
- CodeEntryPointMethod.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- SecurityManager.cs
- SqlUtils.cs
- PointIndependentAnimationStorage.cs
- Buffer.cs
- ComponentCommands.cs
- TdsValueSetter.cs
- RunWorkerCompletedEventArgs.cs
- ColorTransform.cs
- HttpWebRequest.cs
- ThaiBuddhistCalendar.cs
- EditorZoneBase.cs
- ProxyWebPartConnectionCollection.cs
- DataGridState.cs
- Html32TextWriter.cs
- OdbcException.cs
- LayoutEditorPart.cs
- filewebrequest.cs
- TrueReadOnlyCollection.cs
- FontStyles.cs
- StackOverflowException.cs
- NodeFunctions.cs
- EntityTypeEmitter.cs
- DataListCommandEventArgs.cs
- StaticTextPointer.cs
- ZipIOCentralDirectoryFileHeader.cs
- ElementsClipboardData.cs
- FormViewModeEventArgs.cs
- PrintControllerWithStatusDialog.cs
- WCFModelStrings.Designer.cs
- DBCSCodePageEncoding.cs
- GlobalizationAssembly.cs
- FormViewInsertEventArgs.cs
- DataSetViewSchema.cs
- UdpSocketReceiveManager.cs
- ListSortDescriptionCollection.cs
- UserPersonalizationStateInfo.cs
- Icon.cs
- DocumentViewerConstants.cs
- LoginCancelEventArgs.cs
- Page.cs
- TextPointerBase.cs
- FontFamilyValueSerializer.cs
- DragCompletedEventArgs.cs
- DataProviderNameConverter.cs
- ReaderContextStackData.cs
- CriticalHandle.cs
- StatusBarItemAutomationPeer.cs
- WorkItem.cs
- ContainerControl.cs
- Camera.cs
- AppLevelCompilationSectionCache.cs
- Events.cs
- MsiStyleLogWriter.cs