Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- ObjectRef.cs
- TableRow.cs
- StreamWriter.cs
- FilterableAttribute.cs
- PopupRootAutomationPeer.cs
- EntryWrittenEventArgs.cs
- wmiutil.cs
- CompModSwitches.cs
- PerspectiveCamera.cs
- PublisherIdentityPermission.cs
- BuildTopDownAttribute.cs
- BaseComponentEditor.cs
- ExpressionVisitor.cs
- XmlSortKeyAccumulator.cs
- WhitespaceRuleReader.cs
- RequiredFieldValidator.cs
- PagedDataSource.cs
- Listbox.cs
- SimpleRecyclingCache.cs
- AdPostCacheSubstitution.cs
- PropertyEmitter.cs
- DesignerActionItem.cs
- UnknownBitmapEncoder.cs
- Matrix3DConverter.cs
- RadioButtonRenderer.cs
- PermissionToken.cs
- ControlParameter.cs
- DrawItemEvent.cs
- OleDbReferenceCollection.cs
- FileUpload.cs
- ConfigXmlComment.cs
- DbInsertCommandTree.cs
- VisualBrush.cs
- ParameterSubsegment.cs
- OrderToken.cs
- ToolStripOverflow.cs
- VisualBrush.cs
- Rotation3D.cs
- SEHException.cs
- EpmContentDeSerializer.cs
- UnsafeNativeMethods.cs
- COM2EnumConverter.cs
- Vector3DConverter.cs
- DataSet.cs
- AVElementHelper.cs
- DataGridViewRowHeaderCell.cs
- CustomErrorsSection.cs
- EncodingTable.cs
- RemotingServices.cs
- XmlnsDefinitionAttribute.cs
- GradientStop.cs
- XslTransform.cs
- AsnEncodedData.cs
- AnimationTimeline.cs
- SoapException.cs
- KeyValueInternalCollection.cs
- XmlSchemaSimpleTypeRestriction.cs
- ProgressBar.cs
- FileDialogPermission.cs
- Decoder.cs
- HttpWebRequest.cs
- UnsafeNativeMethods.cs
- StdValidatorsAndConverters.cs
- FamilyTypefaceCollection.cs
- ToolStripDropDownClosingEventArgs.cs
- OdbcDataReader.cs
- MarkupCompilePass1.cs
- ShaderRenderModeValidation.cs
- ImageAttributes.cs
- IImplicitResourceProvider.cs
- GraphicsContext.cs
- PermissionSetEnumerator.cs
- EdmTypeAttribute.cs
- FamilyTypefaceCollection.cs
- WebBrowsableAttribute.cs
- SafeBitVector32.cs
- PersonalizationEntry.cs
- SourceInterpreter.cs
- DataBoundControlAdapter.cs
- DrawingContextFlattener.cs
- JsonFormatMapping.cs
- X509Extension.cs
- AggregatePushdown.cs
- ScrollBar.cs
- HttpEncoder.cs
- EdmPropertyAttribute.cs
- MasterPageParser.cs
- NameValueCollection.cs
- NamedPipeWorkerProcess.cs
- ListChunk.cs
- MenuItemStyleCollection.cs
- TemplateBuilder.cs
- DynamicMethod.cs
- VirtualDirectoryMappingCollection.cs
- TableProvider.cs
- FastEncoderWindow.cs
- ToolStripOverflow.cs
- MappingException.cs
- Ipv6Element.cs
- Item.cs