Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Xml / System / Xml / XPath / Internal / XPathAncestorQuery.cs / 1305376 / XPathAncestorQuery.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.Collections.Generic;
internal sealed class XPathAncestorQuery : CacheAxisQuery {
private bool matchSelf;
public XPathAncestorQuery(Query qyInput, string name, string prefix, XPathNodeType typeTest, bool matchSelf) : base(qyInput, name, prefix, typeTest) {
this.matchSelf = matchSelf;
}
private XPathAncestorQuery(XPathAncestorQuery other) : base(other) {
this.matchSelf = other.matchSelf;
}
public override object Evaluate(XPathNodeIterator context) {
base.Evaluate(context);
XPathNavigator ancestor = null;
XPathNavigator input;
while ((input = qyInput.Advance()) != null) {
if (matchSelf) {
if (matches(input)) {
if (!Insert(outputBuffer, input)) {
// If input is already in output buffer all its ancestors are in a buffer as well.
continue;
}
}
}
if (ancestor == null || ! ancestor.MoveTo(input)) {
ancestor = input.Clone();
}
while (ancestor.MoveToParent()) {
if (matches(ancestor)) {
if (!Insert(outputBuffer, ancestor)) {
// If input is already in output buffer all its ancestors are in a buffer as well.
break;
}
}
}
}
return this;
}
public override XPathNodeIterator Clone() { return new XPathAncestorQuery(this); }
public override int CurrentPosition { get { return outputBuffer.Count - count + 1; } }
public override QueryProps Properties { get { return base.Properties | QueryProps.Reverse; } }
public override void PrintQuery(XmlWriter w) {
w.WriteStartElement(this.GetType().Name);
if (matchSelf) {
w.WriteAttributeString("self", "yes");
}
if (NameTest) {
w.WriteAttributeString("name", Prefix.Length != 0 ? Prefix + ':' + Name : Name);
}
if (TypeTest != XPathNodeType.Element) {
w.WriteAttributeString("nodeType", TypeTest.ToString());
}
qyInput.PrintQuery(w);
w.WriteEndElement();
}
}
}
// 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
- Vertex.cs
- InternalSafeNativeMethods.cs
- TextLine.cs
- FreeFormDragDropManager.cs
- X509Chain.cs
- BitmapSource.cs
- ShapingEngine.cs
- ThemeDirectoryCompiler.cs
- InputLanguageCollection.cs
- WebPartUtil.cs
- PrePrepareMethodAttribute.cs
- StorageComplexTypeMapping.cs
- CursorConverter.cs
- SqlNotificationRequest.cs
- SspiSafeHandles.cs
- Pair.cs
- SectionInput.cs
- RewritingSimplifier.cs
- SafeNativeMethodsOther.cs
- ByteRangeDownloader.cs
- XmlNamespaceMappingCollection.cs
- _Win32.cs
- HttpWebResponse.cs
- DataListItem.cs
- NavigationFailedEventArgs.cs
- SamlSecurityToken.cs
- XmlSerializerAssemblyAttribute.cs
- DataColumnPropertyDescriptor.cs
- AspNetSynchronizationContext.cs
- adornercollection.cs
- Asn1Utilities.cs
- ComplexBindingPropertiesAttribute.cs
- DateTimeStorage.cs
- ActivityCollectionMarkupSerializer.cs
- FileSystemEnumerable.cs
- ListControl.cs
- ProgressBar.cs
- DesignTimeTemplateParser.cs
- CodeMemberEvent.cs
- ValidatorCollection.cs
- DelegateBodyWriter.cs
- IDispatchConstantAttribute.cs
- HuffModule.cs
- SmtpTransport.cs
- CodeParameterDeclarationExpression.cs
- ClientUrlResolverWrapper.cs
- IdentityModelDictionary.cs
- WmpBitmapDecoder.cs
- SqlDataSourceView.cs
- _Events.cs
- InsufficientMemoryException.cs
- BufferBuilder.cs
- MetabaseSettingsIis7.cs
- Exceptions.cs
- MarkupExtensionReturnTypeAttribute.cs
- SymbolMethod.cs
- WindowsStartMenu.cs
- BaseParagraph.cs
- HeaderedContentControl.cs
- TypeDescriptor.cs
- ProxyManager.cs
- RC2CryptoServiceProvider.cs
- TemplateControlBuildProvider.cs
- PeerEndPoint.cs
- DataListCommandEventArgs.cs
- DependencyProperty.cs
- AsymmetricSignatureDeformatter.cs
- ScrollBarAutomationPeer.cs
- DiagnosticTrace.cs
- CollectionViewGroupInternal.cs
- XmlSchemaValidator.cs
- AttachmentCollection.cs
- NoClickablePointException.cs
- InvalidOleVariantTypeException.cs
- webeventbuffer.cs
- SRDisplayNameAttribute.cs
- UInt32Storage.cs
- ParallelLoopState.cs
- FileNameEditor.cs
- Model3DCollection.cs
- ControlParameter.cs
- EncryptedReference.cs
- DataListItemCollection.cs
- HotCommands.cs
- ReverseInheritProperty.cs
- NativeRightsManagementAPIsStructures.cs
- DrawingContextWalker.cs
- XamlInt32CollectionSerializer.cs
- OracleConnection.cs
- BinaryHeap.cs
- DescendantQuery.cs
- NativeRightsManagementAPIsStructures.cs
- GridViewUpdatedEventArgs.cs
- Lease.cs
- CompositionTarget.cs
- SevenBitStream.cs
- Activator.cs
- dsa.cs
- CreateParams.cs
- DesignerActionVerbItem.cs