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
- ReverseInheritProperty.cs
- KnownColorTable.cs
- TrustLevel.cs
- SparseMemoryStream.cs
- ProfileEventArgs.cs
- MediaSystem.cs
- Image.cs
- MatrixTransform.cs
- TraceContext.cs
- RegexInterpreter.cs
- UnsafeNativeMethods.cs
- Quaternion.cs
- SqlInternalConnection.cs
- AutomationProperty.cs
- formatter.cs
- BaseCollection.cs
- RegistryPermission.cs
- Formatter.cs
- ReflectionUtil.cs
- CollectionType.cs
- CharEntityEncoderFallback.cs
- CodeValidator.cs
- CroppedBitmap.cs
- ToolStripSettings.cs
- SByte.cs
- RuntimeConfig.cs
- BamlWriter.cs
- ObjectDataSourceView.cs
- DSACryptoServiceProvider.cs
- Vector3DAnimationUsingKeyFrames.cs
- ServiceControllerDesigner.cs
- TreeIterators.cs
- BooleanFunctions.cs
- QuaternionValueSerializer.cs
- ProfessionalColors.cs
- SqlProvider.cs
- KerberosRequestorSecurityToken.cs
- XmlSchemaGroupRef.cs
- DecimalConstantAttribute.cs
- WebConfigurationHost.cs
- ConfigXmlText.cs
- IndexedGlyphRun.cs
- AliasExpr.cs
- PersonalizablePropertyEntry.cs
- LazyLoadBehavior.cs
- MetadataUtilsSmi.cs
- PreservationFileWriter.cs
- Missing.cs
- XmlCharCheckingWriter.cs
- WebPartEditorApplyVerb.cs
- CatalogPart.cs
- XmlQualifiedName.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- ResXResourceWriter.cs
- DataGridDefaultColumnWidthTypeConverter.cs
- ObjectListShowCommandsEventArgs.cs
- XamlLoadErrorInfo.cs
- OLEDB_Enum.cs
- SamlDoNotCacheCondition.cs
- Drawing.cs
- DataSourceCache.cs
- Scheduling.cs
- ScaleTransform.cs
- HostedElements.cs
- CompilerGlobalScopeAttribute.cs
- NativeRightsManagementAPIsStructures.cs
- DbFunctionCommandTree.cs
- Scripts.cs
- LinearGradientBrush.cs
- BamlTreeNode.cs
- StickyNoteAnnotations.cs
- SqlDataSourceConfigureSortForm.cs
- BaseParagraph.cs
- BinaryWriter.cs
- KernelTypeValidation.cs
- SoapEnumAttribute.cs
- ControllableStoryboardAction.cs
- WindowsIdentity.cs
- ReturnType.cs
- FixedSOMPage.cs
- InputBinding.cs
- ResourceAssociationSet.cs
- SmiRequestExecutor.cs
- SelectedGridItemChangedEvent.cs
- PathFigureCollection.cs
- SerializerProvider.cs
- ContentHostHelper.cs
- DataGridState.cs
- SystemKeyConverter.cs
- QueryableDataSourceEditData.cs
- XmlSchemaObjectTable.cs
- XmlUtil.cs
- FieldAccessException.cs
- PasswordBoxAutomationPeer.cs
- TreeNodeStyle.cs
- RectangleHotSpot.cs
- SqlDeflator.cs
- OracleNumber.cs
- BaseComponentEditor.cs
- StoreItemCollection.Loader.cs