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
- RouteValueExpressionBuilder.cs
- LongCountAggregationOperator.cs
- EntityKeyElement.cs
- FixedSOMContainer.cs
- DataPointer.cs
- MessageRpc.cs
- CompilerTypeWithParams.cs
- DataGridHyperlinkColumn.cs
- FileUpload.cs
- SystemResources.cs
- OutOfMemoryException.cs
- VisualState.cs
- ColumnPropertiesGroup.cs
- BulletedListEventArgs.cs
- NotificationContext.cs
- DataGridViewRowDividerDoubleClickEventArgs.cs
- CapabilitiesPattern.cs
- TrackPoint.cs
- BinaryFormatterWriter.cs
- RepeatBehavior.cs
- ListView.cs
- MailMessage.cs
- IISUnsafeMethods.cs
- PageAsyncTaskManager.cs
- KeyedHashAlgorithm.cs
- ContentHostHelper.cs
- HMAC.cs
- WebServiceFault.cs
- ArglessEventHandlerProxy.cs
- TextRangeSerialization.cs
- RenderTargetBitmap.cs
- IgnoreFileBuildProvider.cs
- SamlSecurityTokenAuthenticator.cs
- DataColumn.cs
- AttachmentService.cs
- TaskCanceledException.cs
- MetadataCacheItem.cs
- ConfigWriter.cs
- M3DUtil.cs
- ModifiableIteratorCollection.cs
- SQLInt32Storage.cs
- IteratorDescriptor.cs
- ComEventsInfo.cs
- FormattedText.cs
- UserMapPath.cs
- WebPartConnectionsCancelVerb.cs
- JournalEntryListConverter.cs
- CodeIndexerExpression.cs
- XsltInput.cs
- SchemaCollectionPreprocessor.cs
- StringFormat.cs
- ModuleElement.cs
- TextRangeBase.cs
- HttpApplication.cs
- DesignerVerb.cs
- TextDecorationUnitValidation.cs
- TriState.cs
- PropertyEmitter.cs
- GroupBoxRenderer.cs
- LayoutEngine.cs
- HighContrastHelper.cs
- shaperfactoryquerycacheentry.cs
- Compiler.cs
- ProfileService.cs
- WmpBitmapEncoder.cs
- PeerApplication.cs
- RowToParametersTransformer.cs
- ResourceExpression.cs
- TableLayoutRowStyleCollection.cs
- securestring.cs
- BamlStream.cs
- DockingAttribute.cs
- AddInAdapter.cs
- DataGridViewColumnCollection.cs
- RunWorkerCompletedEventArgs.cs
- WindowsAuthenticationModule.cs
- MeasureData.cs
- WebFaultException.cs
- ManagementBaseObject.cs
- SQLMoneyStorage.cs
- XPathException.cs
- HScrollBar.cs
- XamlBrushSerializer.cs
- BufferBuilder.cs
- AddInProcess.cs
- CodeObjectCreateExpression.cs
- AssemblyInfo.cs
- SQLGuidStorage.cs
- HttpRuntime.cs
- SiteMapDataSourceView.cs
- RuntimeCompatibilityAttribute.cs
- RoutedEventArgs.cs
- SmtpSection.cs
- XPathNodeIterator.cs
- PointCollectionConverter.cs
- EmptyImpersonationContext.cs
- TraceListeners.cs
- PasswordRecoveryDesigner.cs
- ImportCatalogPart.cs
- RequestTimeoutManager.cs