Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / fx / src / Xml / System / Xml / XPath / Internal / XPathAncestorQuery.cs / 1 / 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.
//------------------------------------------------------------------------------
//
// 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
- XPathPatternBuilder.cs
- TraceSection.cs
- PageRequestManager.cs
- CorrelationResolver.cs
- ConsoleKeyInfo.cs
- XmlWrappingWriter.cs
- SQLBytes.cs
- TypeSystemProvider.cs
- FocusTracker.cs
- ResolveResponse.cs
- HttpRuntime.cs
- MimeTypeAttribute.cs
- XmlAtomErrorReader.cs
- RuntimeCompatibilityAttribute.cs
- SendActivityDesignerTheme.cs
- UrlAuthorizationModule.cs
- TransformerInfo.cs
- ListenerElementsCollection.cs
- LocatorPart.cs
- FontCollection.cs
- PerformanceCountersElement.cs
- Globals.cs
- RegularExpressionValidator.cs
- ForeignKeyConstraint.cs
- DataGridViewImageCell.cs
- PageContent.cs
- Visual.cs
- MobileRedirect.cs
- SafeViewOfFileHandle.cs
- ComNativeDescriptor.cs
- SoapSchemaImporter.cs
- GrammarBuilderWildcard.cs
- TreeViewItem.cs
- XmlCharType.cs
- HttpCapabilitiesEvaluator.cs
- OracleParameterCollection.cs
- WinEventHandler.cs
- DataGridViewCheckBoxCell.cs
- ArrayWithOffset.cs
- ComponentChangedEvent.cs
- Stylus.cs
- BinarySerializer.cs
- CodeTypeDeclarationCollection.cs
- HttpHostedTransportConfiguration.cs
- CapacityStreamGeometryContext.cs
- GeneralTransform3DTo2DTo3D.cs
- SerializerWriterEventHandlers.cs
- ContentElement.cs
- PasswordRecovery.cs
- DataListItemEventArgs.cs
- Internal.cs
- IdnElement.cs
- SQLConvert.cs
- SocketException.cs
- coordinatorfactory.cs
- Opcode.cs
- EntityKeyElement.cs
- QilReplaceVisitor.cs
- WindowsTokenRoleProvider.cs
- ProtocolsConfigurationEntry.cs
- OleStrCAMarshaler.cs
- DocumentViewer.cs
- XmlSchemaExternal.cs
- AxImporter.cs
- PerfProviderCollection.cs
- ParameterExpression.cs
- X509ChainPolicy.cs
- ArcSegment.cs
- httpapplicationstate.cs
- TextElementCollectionHelper.cs
- MethodExpression.cs
- ClientSection.cs
- ChannelManager.cs
- Clipboard.cs
- M3DUtil.cs
- SequentialOutput.cs
- ValidatedControlConverter.cs
- CDSsyncETWBCLProvider.cs
- Enum.cs
- sqlpipe.cs
- BindableAttribute.cs
- NamedPipeDuplicateContext.cs
- RegexTypeEditor.cs
- CleanUpVirtualizedItemEventArgs.cs
- PathFigure.cs
- StatusBarAutomationPeer.cs
- XmlSchemaAny.cs
- oledbmetadatacollectionnames.cs
- AssemblyHash.cs
- HtmlEncodedRawTextWriter.cs
- SHA256CryptoServiceProvider.cs
- ObjectDisposedException.cs
- _Events.cs
- JumpTask.cs
- DataSourceControlBuilder.cs
- Activity.cs
- DatagridviewDisplayedBandsData.cs
- HttpException.cs
- UriParserTemplates.cs
- safex509handles.cs