Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- InheritanceUI.cs
- XPathNode.cs
- Label.cs
- XsltArgumentList.cs
- ResolveMatchesMessage11.cs
- ChangeProcessor.cs
- RTLAwareMessageBox.cs
- PriorityQueue.cs
- InputReport.cs
- CodeComment.cs
- HttpListenerTimeoutManager.cs
- SHA512Cng.cs
- SelectionRangeConverter.cs
- TransactionFlowProperty.cs
- GenericAuthenticationEventArgs.cs
- VectorAnimation.cs
- WebPartVerbCollection.cs
- ProviderIncompatibleException.cs
- ConfigurationSchemaErrors.cs
- StaticSiteMapProvider.cs
- Constraint.cs
- ContextStack.cs
- SerialReceived.cs
- WebPartConnection.cs
- NativeActivityAbortContext.cs
- GeneratedContractType.cs
- OracleString.cs
- HostedTcpTransportManager.cs
- EventDriven.cs
- CommonGetThemePartSize.cs
- VirtualPath.cs
- PtsPage.cs
- AssemblyCache.cs
- AuthStoreRoleProvider.cs
- CustomAttributeSerializer.cs
- WebReferencesBuildProvider.cs
- SystemFonts.cs
- CollectionsUtil.cs
- DispatchWrapper.cs
- TemplateBamlTreeBuilder.cs
- QueryContinueDragEventArgs.cs
- QilIterator.cs
- Rotation3DAnimationBase.cs
- HttpDictionary.cs
- ProxyAttribute.cs
- ExpressionBuilder.cs
- SecurityProtocol.cs
- StringPropertyBuilder.cs
- MenuTracker.cs
- DesignTimeData.cs
- ScriptServiceAttribute.cs
- InputEventArgs.cs
- QuadraticBezierSegment.cs
- DecoderBestFitFallback.cs
- ProfileModule.cs
- DivideByZeroException.cs
- PerformanceCounterPermissionEntry.cs
- RequestContext.cs
- StyleSheet.cs
- ApplicationManager.cs
- Shape.cs
- Label.cs
- WaitForChangedResult.cs
- ScriptReferenceEventArgs.cs
- HashMembershipCondition.cs
- XamlToRtfParser.cs
- DetailsViewPagerRow.cs
- cookie.cs
- HighlightVisual.cs
- WSDualHttpBindingElement.cs
- XmlNodeChangedEventArgs.cs
- TextContainerChangeEventArgs.cs
- PrivilegedConfigurationManager.cs
- CorrelationQueryBehavior.cs
- securestring.cs
- TableLayoutPanelCellPosition.cs
- ItemsPresenter.cs
- CLSCompliantAttribute.cs
- XmlSchemaInclude.cs
- ASCIIEncoding.cs
- DrawingGroup.cs
- List.cs
- IntPtr.cs
- TransformerInfo.cs
- SecurityState.cs
- Int32Collection.cs
- ComponentChangedEvent.cs
- ImageFormat.cs
- EntityDataSourceDesigner.cs
- SubMenuStyleCollection.cs
- ScriptingSectionGroup.cs
- SmuggledIUnknown.cs
- TreeNodeCollection.cs
- XmlILIndex.cs
- ACE.cs
- Group.cs
- PageHandlerFactory.cs
- InputQueueChannelAcceptor.cs
- DocumentNUp.cs
- Axis.cs