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
- NativeMethods.cs
- FunctionCommandText.cs
- DiagnosticsElement.cs
- XmlLinkedNode.cs
- XmlNamespaceMapping.cs
- BooleanExpr.cs
- Membership.cs
- Stack.cs
- PointLight.cs
- ListSourceHelper.cs
- HttpClientCertificate.cs
- EnvironmentPermission.cs
- TimeStampChecker.cs
- Error.cs
- MethodRental.cs
- XmlAttributeCache.cs
- Guid.cs
- DataBindingCollectionConverter.cs
- Types.cs
- DataRowChangeEvent.cs
- CompositeCollection.cs
- HitTestFilterBehavior.cs
- TextHidden.cs
- CacheManager.cs
- Sentence.cs
- TypedReference.cs
- EncryptedData.cs
- MatcherBuilder.cs
- _NativeSSPI.cs
- _emptywebproxy.cs
- LocalizedNameDescriptionPair.cs
- HttpResponse.cs
- SplitterPanel.cs
- LayeredChannelListener.cs
- ArglessEventHandlerProxy.cs
- EntityDataSourceSelectingEventArgs.cs
- SqlMethods.cs
- FirstMatchCodeGroup.cs
- BuiltInExpr.cs
- NameTable.cs
- WebResourceUtil.cs
- oledbmetadatacollectionnames.cs
- NullableDoubleMinMaxAggregationOperator.cs
- SessionParameter.cs
- TextBox.cs
- Underline.cs
- Int32CAMarshaler.cs
- PathGradientBrush.cs
- TrackBar.cs
- RegexEditorDialog.cs
- SqlClientPermission.cs
- EUCJPEncoding.cs
- DataViewManagerListItemTypeDescriptor.cs
- ProviderConnectionPointCollection.cs
- CollectionViewGroupInternal.cs
- SecurityPolicySection.cs
- Brush.cs
- ControlCommandSet.cs
- XsdDataContractExporter.cs
- UnsafePeerToPeerMethods.cs
- HideDisabledControlAdapter.cs
- RequestSecurityTokenResponse.cs
- ComplexType.cs
- BCLDebug.cs
- Memoizer.cs
- CombinedGeometry.cs
- DependencyPropertyValueSerializer.cs
- LinkLabel.cs
- EntityDataSourceDataSelectionPanel.cs
- SmiEventStream.cs
- Cursor.cs
- WebPartUserCapability.cs
- RegexEditorDialog.cs
- UriTemplate.cs
- SuppressIldasmAttribute.cs
- _HeaderInfo.cs
- SystemColorTracker.cs
- SingleResultAttribute.cs
- DrawingBrush.cs
- ToolStripManager.cs
- ExecutionContext.cs
- ReadWriteObjectLock.cs
- HttpClientProtocol.cs
- CodeGenerator.cs
- SafeBitVector32.cs
- elementinformation.cs
- HtmlTextViewAdapter.cs
- ExtensibleClassFactory.cs
- DispatcherExceptionFilterEventArgs.cs
- Internal.cs
- QueryInterceptorAttribute.cs
- NamespaceEmitter.cs
- ReadOnlyHierarchicalDataSourceView.cs
- EventMappingSettingsCollection.cs
- WmpBitmapDecoder.cs
- MetadataItemEmitter.cs
- GenericEnumerator.cs
- ParenthesizePropertyNameAttribute.cs
- WorkItem.cs
- HtmlWindowCollection.cs