Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- UxThemeWrapper.cs
- QuinticEase.cs
- Buffer.cs
- PictureBoxDesigner.cs
- MutexSecurity.cs
- TextPointer.cs
- TraceListener.cs
- Camera.cs
- ManualResetEvent.cs
- DetailsViewUpdateEventArgs.cs
- PreloadHost.cs
- PageAsyncTaskManager.cs
- CursorInteropHelper.cs
- ServiceOperation.cs
- InvokeSchedule.cs
- DetailsViewUpdatedEventArgs.cs
- CommentGlyph.cs
- StreamWithDictionary.cs
- XmlQueryStaticData.cs
- ScrollItemProviderWrapper.cs
- CleanUpVirtualizedItemEventArgs.cs
- SoapFormatExtensions.cs
- CodeRemoveEventStatement.cs
- OdbcDataAdapter.cs
- OdbcEnvironment.cs
- MissingFieldException.cs
- TlsnegoTokenAuthenticator.cs
- Pens.cs
- SelectManyQueryOperator.cs
- BindableTemplateBuilder.cs
- Selection.cs
- PointCollectionConverter.cs
- ObjectQuery.cs
- SafeSecurityHandles.cs
- MemberDescriptor.cs
- updateconfighost.cs
- MailMessageEventArgs.cs
- Rectangle.cs
- CommonObjectSecurity.cs
- DiscoveryDocument.cs
- AsymmetricKeyExchangeDeformatter.cs
- UrlAuthFailedErrorFormatter.cs
- AttributeCollection.cs
- FirstMatchCodeGroup.cs
- xsdvalidator.cs
- safex509handles.cs
- UntypedNullExpression.cs
- EncryptedPackage.cs
- ProfileSettingsCollection.cs
- XmlResolver.cs
- CallSiteBinder.cs
- PixelFormats.cs
- SharedPersonalizationStateInfo.cs
- ExpressionBuilderContext.cs
- CodeVariableReferenceExpression.cs
- StateItem.cs
- StringUtil.cs
- FontSizeConverter.cs
- BoundField.cs
- TogglePatternIdentifiers.cs
- MatchingStyle.cs
- ObjectDataSourceView.cs
- CompressedStack.cs
- COM2ExtendedTypeConverter.cs
- CellConstant.cs
- OptimalBreakSession.cs
- PathFigure.cs
- DataViewManager.cs
- CriticalHandle.cs
- WebPartManager.cs
- AspNetHostingPermission.cs
- UTF8Encoding.cs
- PaperSource.cs
- BaseTemplateParser.cs
- BaseCollection.cs
- PersonalizationProvider.cs
- ComplusEndpointConfigContainer.cs
- WindowPatternIdentifiers.cs
- SqlDeflator.cs
- TypeForwardedToAttribute.cs
- NameSpaceExtractor.cs
- EventEntry.cs
- SqlWriter.cs
- DataShape.cs
- PassportAuthentication.cs
- Panel.cs
- MetaTable.cs
- Debug.cs
- ParsedAttributeCollection.cs
- SqlProviderServices.cs
- arclist.cs
- UserPreferenceChangedEventArgs.cs
- StringHandle.cs
- AgileSafeNativeMemoryHandle.cs
- ConfigurationSectionGroup.cs
- webproxy.cs
- WebDescriptionAttribute.cs
- WCFBuildProvider.cs
- PermissionRequestEvidence.cs
- FileNotFoundException.cs