Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- UnaryExpression.cs
- MouseEvent.cs
- LoginDesignerUtil.cs
- adornercollection.cs
- ResXResourceSet.cs
- ArrangedElement.cs
- ObjectListFieldsPage.cs
- followingquery.cs
- IndexObject.cs
- TransformerInfoCollection.cs
- SecurityTokenSpecification.cs
- EnterpriseServicesHelper.cs
- RuleProcessor.cs
- ReadOnlyCollection.cs
- ButtonPopupAdapter.cs
- ObjectQueryProvider.cs
- WindowsListViewGroup.cs
- SqlVersion.cs
- ClosableStream.cs
- RemotingServices.cs
- HtmlTableRow.cs
- ServicePointManager.cs
- InternalConfigSettingsFactory.cs
- MasterPageBuildProvider.cs
- SchemaCreator.cs
- FocusChangedEventArgs.cs
- GroupPartitionExpr.cs
- NativeRightsManagementAPIsStructures.cs
- DecimalConverter.cs
- WebPartsPersonalizationAuthorization.cs
- ComponentDispatcher.cs
- ValidateNames.cs
- AssemblySettingAttributes.cs
- ObjectFullSpanRewriter.cs
- EmptyStringExpandableObjectConverter.cs
- Context.cs
- CellParagraph.cs
- TreeViewImageKeyConverter.cs
- AdRotator.cs
- XMLSyntaxException.cs
- DbTypeMap.cs
- ISSmlParser.cs
- ValidationRuleCollection.cs
- WCFModelStrings.Designer.cs
- AttachInfo.cs
- ExpressionParser.cs
- PropertiesTab.cs
- Variable.cs
- MimeParameters.cs
- DiscoveryClientOutputChannel.cs
- ThaiBuddhistCalendar.cs
- SmiContextFactory.cs
- BoolLiteral.cs
- ForwardPositionQuery.cs
- CodePageEncoding.cs
- ListParagraph.cs
- SByteConverter.cs
- SoapElementAttribute.cs
- RightNameExpirationInfoPair.cs
- DPAPIProtectedConfigurationProvider.cs
- MsdtcWrapper.cs
- ProcessRequestAsyncResult.cs
- DataGridPageChangedEventArgs.cs
- SQLInt32Storage.cs
- Condition.cs
- SQLInt32.cs
- CodeDelegateInvokeExpression.cs
- CheckBox.cs
- Exceptions.cs
- PrinterUnitConvert.cs
- TypeRefElement.cs
- MergePropertyDescriptor.cs
- milrender.cs
- SystemColors.cs
- RadioButtonDesigner.cs
- TeredoHelper.cs
- TemplatingOptionsDialog.cs
- ToolBarButton.cs
- FocusChangedEventArgs.cs
- KeyedCollection.cs
- XmlExtensionFunction.cs
- DrawingContextDrawingContextWalker.cs
- control.ime.cs
- TextPattern.cs
- WindowsGrip.cs
- EventMappingSettingsCollection.cs
- ServiceNotStartedException.cs
- OleDbConnectionInternal.cs
- ServiceManagerHandle.cs
- CallSiteOps.cs
- ListViewItem.cs
- SafeHandle.cs
- DefaultValueConverter.cs
- PropertyMapper.cs
- Filter.cs
- MarshalByRefObject.cs
- GridViewAutomationPeer.cs
- ModelFactory.cs
- ListViewGroup.cs
- DomainConstraint.cs