Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Xml / System / Xml / XPath / Internal / MergeFilterQuery.cs / 1 / MergeFilterQuery.cs
//------------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// [....]
//-----------------------------------------------------------------------------
namespace MS.Internal.Xml.XPath {
using System;
using System.Xml;
using System.Xml.XPath;
using System.Diagnostics;
using System.Xml.Xsl;
using System.Collections.Generic;
internal sealed class MergeFilterQuery : CacheOutputQuery {
private Query child;
public MergeFilterQuery(Query input, Query child) : base(input) {
this.child = child;
}
private MergeFilterQuery(MergeFilterQuery other) : base(other) {
this.child = Clone(other.child);
}
public override void SetXsltContext(XsltContext xsltContext) {
base.SetXsltContext(xsltContext);
child.SetXsltContext(xsltContext);
}
public override object Evaluate(XPathNodeIterator nodeIterator) {
base.Evaluate(nodeIterator);
while (input.Advance() != null) {
child.Evaluate(input);
XPathNavigator node;
while ((node = child.Advance()) != null) {
Insert(outputBuffer, node);
}
}
return this;
}
public override XPathNavigator MatchNode(XPathNavigator current) {
XPathNavigator context = child.MatchNode(current);
if (context == null) {
return null;
}
context = input.MatchNode(context);
if (context == null) {
return null;
}
Evaluate(new XPathSingletonIterator(context.Clone(), /*moved:*/true));
XPathNavigator result = Advance();
while (result != null) {
if (result.IsSamePosition(current)) {
return context;
}
result = Advance();
}
return null;
}
public override XPathNodeIterator Clone() { return new MergeFilterQuery(this); }
public override void PrintQuery(XmlWriter w) {
w.WriteStartElement(this.GetType().Name);
input.PrintQuery(w);
child.PrintQuery(w);
w.WriteEndElement();
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ListViewGroupItemCollection.cs
- HostingPreferredMapPath.cs
- VideoDrawing.cs
- PropertyMappingExceptionEventArgs.cs
- VectorCollection.cs
- ToolTipAutomationPeer.cs
- DesignerHierarchicalDataSourceView.cs
- Helpers.cs
- TableItemPattern.cs
- XsltCompileContext.cs
- Vector3DIndependentAnimationStorage.cs
- FileClassifier.cs
- DateTimeFormatInfo.cs
- DES.cs
- PointAnimationClockResource.cs
- SuppressedPackageProperties.cs
- ButtonBaseAdapter.cs
- ExpressionWriter.cs
- TriggerActionCollection.cs
- HeaderCollection.cs
- SQLInt32Storage.cs
- MergeLocalizationDirectives.cs
- ItemType.cs
- ByteFacetDescriptionElement.cs
- SqlLiftWhereClauses.cs
- compensatingcollection.cs
- ReflectionTypeLoadException.cs
- RuntimeTrackingProfile.cs
- BufferAllocator.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- DispatcherProcessingDisabled.cs
- EasingQuaternionKeyFrame.cs
- ReadOnlyDataSourceView.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- Hashtable.cs
- Transform.cs
- SafeNativeMethodsCLR.cs
- ActivityExecutionContextCollection.cs
- NumberAction.cs
- NativeMethods.cs
- HashCodeCombiner.cs
- SelectionProcessor.cs
- HtmlInputControl.cs
- UnsupportedPolicyOptionsException.cs
- ClonableStack.cs
- XPathParser.cs
- LoginName.cs
- CuspData.cs
- DefaultPropertiesToSend.cs
- ChannelManager.cs
- ApplicationCommands.cs
- SplineKeyFrames.cs
- FormViewUpdateEventArgs.cs
- OdbcParameterCollection.cs
- TextPointerBase.cs
- SqlClientMetaDataCollectionNames.cs
- ConnectionManagementElement.cs
- SelectionEditor.cs
- UniqueSet.cs
- SqlDataSourceConfigureSelectPanel.cs
- ExtensionSimplifierMarkupObject.cs
- PrintPreviewGraphics.cs
- IpcChannel.cs
- MessageQueueCriteria.cs
- LoginView.cs
- EventSetter.cs
- ClipboardData.cs
- Pair.cs
- ResourcesBuildProvider.cs
- TreeViewHitTestInfo.cs
- UserNameSecurityTokenAuthenticator.cs
- PageContent.cs
- DrawingAttributes.cs
- UserControlBuildProvider.cs
- MenuItemBinding.cs
- XmlSerializableReader.cs
- ProfileModule.cs
- ShadowGlyph.cs
- NetTcpBindingCollectionElement.cs
- EmptyStringExpandableObjectConverter.cs
- SendKeys.cs
- SystemTcpConnection.cs
- StorageConditionPropertyMapping.cs
- TopClause.cs
- FacetDescription.cs
- StackSpiller.Bindings.cs
- SizeAnimation.cs
- InstancePersistenceCommand.cs
- MappingSource.cs
- ContentPresenter.cs
- SecurityUtils.cs
- TransactionChannel.cs
- ProxyAttribute.cs
- StretchValidation.cs
- SafeNativeMethods.cs
- TransformGroup.cs
- FileSystemWatcher.cs
- TreeViewTemplateSelector.cs
- ReflectionServiceProvider.cs
- DomainUpDown.cs