Code:
/ FX-1434 / FX-1434 / 1.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
- storagemappingitemcollection.viewdictionary.cs
- BuildProvidersCompiler.cs
- WhitespaceRule.cs
- HMACSHA256.cs
- EventLogPermissionAttribute.cs
- DataGrid.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- MenuItem.cs
- SchemaCompiler.cs
- ExpressionVisitor.cs
- MetadataItemEmitter.cs
- DetailsViewUpdateEventArgs.cs
- ResourceDictionary.cs
- QilFactory.cs
- NamespaceInfo.cs
- XamlPathDataSerializer.cs
- ToolStripTextBox.cs
- GestureRecognizer.cs
- ScalarOps.cs
- CommandConverter.cs
- AdPostCacheSubstitution.cs
- CollectionViewGroupRoot.cs
- FontStyle.cs
- SerializationException.cs
- BrowserCapabilitiesCompiler.cs
- loginstatus.cs
- DragEventArgs.cs
- UserPreferenceChangingEventArgs.cs
- DesignerTextWriter.cs
- COMException.cs
- GAC.cs
- WorkflowExecutor.cs
- CheckBoxField.cs
- EncoderFallback.cs
- InputBindingCollection.cs
- EventLogQuery.cs
- _TLSstream.cs
- LockedBorderGlyph.cs
- DocumentPageView.cs
- ButtonStandardAdapter.cs
- DataTableMappingCollection.cs
- PinnedBufferMemoryStream.cs
- FileEnumerator.cs
- Mapping.cs
- AttributeUsageAttribute.cs
- CanonicalFormWriter.cs
- ContainsRowNumberChecker.cs
- SystemDropShadowChrome.cs
- XmlHierarchicalDataSourceView.cs
- OrderByBuilder.cs
- StorageRoot.cs
- ButtonBaseAutomationPeer.cs
- ProxyWebPart.cs
- IdentityReference.cs
- SrgsSemanticInterpretationTag.cs
- ConfigUtil.cs
- UrlMappingsModule.cs
- ConfigXmlSignificantWhitespace.cs
- ModuleBuilderData.cs
- SqlFacetAttribute.cs
- DataTemplateKey.cs
- XmlStreamNodeWriter.cs
- ToolStripPanelCell.cs
- FilteredSchemaElementLookUpTable.cs
- ReliabilityContractAttribute.cs
- Compress.cs
- CursorEditor.cs
- ProxyElement.cs
- NullableLongSumAggregationOperator.cs
- TypedDataSourceCodeGenerator.cs
- EditorZoneAutoFormat.cs
- DispatcherFrame.cs
- TextEditorCharacters.cs
- ConstNode.cs
- CorrelationTokenInvalidatedHandler.cs
- MachineKeyValidationConverter.cs
- XmlQueryContext.cs
- IPAddressCollection.cs
- TextEditorThreadLocalStore.cs
- Random.cs
- XamlRtfConverter.cs
- HttpWriter.cs
- Model3D.cs
- KeyInterop.cs
- AsyncStreamReader.cs
- QuerySetOp.cs
- TdsParserSessionPool.cs
- Formatter.cs
- MimeMapping.cs
- DesignerTextWriter.cs
- TableCell.cs
- SqlLiftWhereClauses.cs
- selecteditemcollection.cs
- HttpVersion.cs
- SocketAddress.cs
- StandardCommands.cs
- NullableBoolConverter.cs
- WebControl.cs
- XmlConverter.cs
- ModelToObjectValueConverter.cs