Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Xml / System / Xml / XPath / Internal / followingquery.cs / 1305376 / followingquery.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; internal sealed class FollowingQuery : BaseAxisQuery { private XPathNavigator input; private XPathNodeIterator iterator; public FollowingQuery(Query qyInput, string name, string prefix, XPathNodeType typeTest) : base(qyInput, name, prefix, typeTest) {} private FollowingQuery(FollowingQuery other) : base(other) { this.input = Clone(other.input); this.iterator = Clone(other.iterator); } public override void Reset() { iterator = null; base.Reset(); } public override XPathNavigator Advance() { if (iterator == null) { input = qyInput.Advance(); if (input == null) { return null; } XPathNavigator prev; do { prev = input.Clone(); input = qyInput.Advance(); } while (prev.IsDescendant(input)); input = prev; iterator = XPathEmptyIterator.Instance; } while (! iterator.MoveNext()) { bool matchSelf; if (input.NodeType == XPathNodeType.Attribute || input.NodeType == XPathNodeType.Namespace) { input.MoveToParent(); matchSelf = false; } else { while (! input.MoveToNext()) { if (! input.MoveToParent()) { return null; } } matchSelf = true; } if (NameTest) { iterator = input.SelectDescendants(Name, Namespace, matchSelf); } else { iterator = input.SelectDescendants(TypeTest, matchSelf); } } position++; currentNode = iterator.Current; return currentNode; } public override XPathNodeIterator Clone() { return new FollowingQuery(this); } } } // 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; internal sealed class FollowingQuery : BaseAxisQuery { private XPathNavigator input; private XPathNodeIterator iterator; public FollowingQuery(Query qyInput, string name, string prefix, XPathNodeType typeTest) : base(qyInput, name, prefix, typeTest) {} private FollowingQuery(FollowingQuery other) : base(other) { this.input = Clone(other.input); this.iterator = Clone(other.iterator); } public override void Reset() { iterator = null; base.Reset(); } public override XPathNavigator Advance() { if (iterator == null) { input = qyInput.Advance(); if (input == null) { return null; } XPathNavigator prev; do { prev = input.Clone(); input = qyInput.Advance(); } while (prev.IsDescendant(input)); input = prev; iterator = XPathEmptyIterator.Instance; } while (! iterator.MoveNext()) { bool matchSelf; if (input.NodeType == XPathNodeType.Attribute || input.NodeType == XPathNodeType.Namespace) { input.MoveToParent(); matchSelf = false; } else { while (! input.MoveToNext()) { if (! input.MoveToParent()) { return null; } } matchSelf = true; } if (NameTest) { iterator = input.SelectDescendants(Name, Namespace, matchSelf); } else { iterator = input.SelectDescendants(TypeTest, matchSelf); } } position++; currentNode = iterator.Current; return currentNode; } public override XPathNodeIterator Clone() { return new FollowingQuery(this); } } } // 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
- TextHidden.cs
- DBParameter.cs
- RequiredFieldValidator.cs
- Size.cs
- TreeNodeEventArgs.cs
- ManagedWndProcTracker.cs
- DrawingGroup.cs
- AnnotationHelper.cs
- EventProvider.cs
- SignedXmlDebugLog.cs
- SessionParameter.cs
- ScopeElement.cs
- Boolean.cs
- CodeGroup.cs
- XmlStreamedByteStreamReader.cs
- ImageDrawing.cs
- OleTxTransaction.cs
- LinkButton.cs
- MemoryStream.cs
- GlyphElement.cs
- WebServiceHandlerFactory.cs
- ChameleonKey.cs
- BamlResourceSerializer.cs
- PropertyGridView.cs
- TogglePatternIdentifiers.cs
- BackStopAuthenticationModule.cs
- DefaultEventAttribute.cs
- SoapSchemaExporter.cs
- PanningMessageFilter.cs
- ResourceManager.cs
- ExtensionElement.cs
- Point3DAnimationUsingKeyFrames.cs
- Label.cs
- PathStreamGeometryContext.cs
- SQLBytesStorage.cs
- DataGridViewRowCancelEventArgs.cs
- CompositeCollectionView.cs
- ISFTagAndGuidCache.cs
- TreeViewItem.cs
- SvcMapFileSerializer.cs
- NetStream.cs
- XmlBinaryReader.cs
- WinFormsSpinner.cs
- KeyValueSerializer.cs
- MailWebEventProvider.cs
- ClientSettingsProvider.cs
- indexingfiltermarshaler.cs
- PasswordDeriveBytes.cs
- TableLayoutPanelBehavior.cs
- ToolboxSnapDragDropEventArgs.cs
- IImplicitResourceProvider.cs
- TextFormatterHost.cs
- DragEventArgs.cs
- HttpVersion.cs
- BitmapDownload.cs
- CollectionBuilder.cs
- Int16Animation.cs
- LayoutEngine.cs
- RtType.cs
- SafeRsaProviderHandle.cs
- baseaxisquery.cs
- SizeChangedEventArgs.cs
- ArraySegment.cs
- _SSPIWrapper.cs
- DependencyObjectValidator.cs
- PartialCachingAttribute.cs
- WriteStateInfoBase.cs
- Image.cs
- NumberFormatInfo.cs
- InternalException.cs
- MetadataProperty.cs
- RawKeyboardInputReport.cs
- TextFormatter.cs
- DataKey.cs
- DataConnectionHelper.cs
- RawKeyboardInputReport.cs
- FreezableCollection.cs
- ServiceModelTimeSpanValidator.cs
- RadialGradientBrush.cs
- CompressedStack.cs
- StringValidator.cs
- VarRemapper.cs
- FixedTextContainer.cs
- HttpModuleAction.cs
- SQLByteStorage.cs
- DropShadowBitmapEffect.cs
- EntityCommandDefinition.cs
- OperationAbortedException.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- MemberAssignment.cs
- StateChangeEvent.cs
- WebPartsSection.cs
- MsmqHostedTransportConfiguration.cs
- ActiveXSite.cs
- IndexedGlyphRun.cs
- ImageKeyConverter.cs
- LowerCaseStringConverter.cs
- ImageBrush.cs
- ProgramNode.cs
- NativeMethodsOther.cs