Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Data / System / NewXml / TreeIterator.cs / 1305376 / TreeIterator.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- #pragma warning disable 618 // ignore obsolete warning about XmlDataDocument namespace System.Xml { using System.Diagnostics; // Iterates over non-attribute nodes internal sealed class TreeIterator : BaseTreeIterator { private XmlNode nodeTop; private XmlNode currentNode; internal TreeIterator( XmlNode nodeTop ) : base( ((XmlDataDocument)(nodeTop.OwnerDocument)).Mapper ) { Debug.Assert( nodeTop != null ); this.nodeTop = nodeTop; this.currentNode = nodeTop; } internal override void Reset() { currentNode = nodeTop; } internal override XmlNode CurrentNode { get { return currentNode; } } internal override bool Next() { XmlNode nextNode; // Try to move to the first child nextNode = currentNode.FirstChild; // No children, try next sibling if ( nextNode != null ) { currentNode = nextNode; return true; } return NextRight(); } internal override bool NextRight() { // Make sure we do not get past the nodeTop if we call NextRight on a just initialized iterator and nodeTop has no children if ( currentNode == nodeTop ) { currentNode = null; return false; } XmlNode nextNode = currentNode.NextSibling; if ( nextNode != null ) { currentNode = nextNode; return true; } // No next sibling, try the first sibling of from the parent chain nextNode = currentNode; while ( nextNode != nodeTop && nextNode.NextSibling == null ) nextNode = nextNode.ParentNode; if ( nextNode == nodeTop ) { currentNode = null; return false; } currentNode = nextNode.NextSibling; Debug.Assert( currentNode != null ); return true; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //[....] //----------------------------------------------------------------------------- #pragma warning disable 618 // ignore obsolete warning about XmlDataDocument namespace System.Xml { using System.Diagnostics; // Iterates over non-attribute nodes internal sealed class TreeIterator : BaseTreeIterator { private XmlNode nodeTop; private XmlNode currentNode; internal TreeIterator( XmlNode nodeTop ) : base( ((XmlDataDocument)(nodeTop.OwnerDocument)).Mapper ) { Debug.Assert( nodeTop != null ); this.nodeTop = nodeTop; this.currentNode = nodeTop; } internal override void Reset() { currentNode = nodeTop; } internal override XmlNode CurrentNode { get { return currentNode; } } internal override bool Next() { XmlNode nextNode; // Try to move to the first child nextNode = currentNode.FirstChild; // No children, try next sibling if ( nextNode != null ) { currentNode = nextNode; return true; } return NextRight(); } internal override bool NextRight() { // Make sure we do not get past the nodeTop if we call NextRight on a just initialized iterator and nodeTop has no children if ( currentNode == nodeTop ) { currentNode = null; return false; } XmlNode nextNode = currentNode.NextSibling; if ( nextNode != null ) { currentNode = nextNode; return true; } // No next sibling, try the first sibling of from the parent chain nextNode = currentNode; while ( nextNode != nodeTop && nextNode.NextSibling == null ) nextNode = nextNode.ParentNode; if ( nextNode == nodeTop ) { currentNode = null; return false; } currentNode = nextNode.NextSibling; Debug.Assert( currentNode != null ); return true; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ListViewItemMouseHoverEvent.cs
- ProfileModule.cs
- SQLSingleStorage.cs
- ThreadStartException.cs
- DynamicEntity.cs
- CacheOutputQuery.cs
- DropDownButton.cs
- WebPartDisplayModeCollection.cs
- GridViewPageEventArgs.cs
- RootBrowserWindow.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- MenuCommand.cs
- DataPointer.cs
- SpeechSeg.cs
- ControlBuilder.cs
- Literal.cs
- PathGeometry.cs
- WSHttpBinding.cs
- HwndProxyElementProvider.cs
- RegexRunnerFactory.cs
- DataKeyArray.cs
- PropertyTab.cs
- ThreadInterruptedException.cs
- CommandLibraryHelper.cs
- XPathMessageFilterElementCollection.cs
- SqlDataSourceCache.cs
- PageHandlerFactory.cs
- NewItemsContextMenuStrip.cs
- DataGridLinkButton.cs
- Command.cs
- SerializationEventsCache.cs
- StreamInfo.cs
- DataBinding.cs
- RuntimeHelpers.cs
- XmlSchemaObject.cs
- ProcessThreadDesigner.cs
- ThreadAttributes.cs
- VersionPair.cs
- RectValueSerializer.cs
- ImageAnimator.cs
- Socket.cs
- UIElementAutomationPeer.cs
- Pointer.cs
- RecommendedAsConfigurableAttribute.cs
- SectionInput.cs
- StandardCommands.cs
- XmlSchemaIdentityConstraint.cs
- Sentence.cs
- CodeComment.cs
- StackSpiller.cs
- RectKeyFrameCollection.cs
- CodeMemberProperty.cs
- TextProperties.cs
- PropertyIdentifier.cs
- HitTestWithGeometryDrawingContextWalker.cs
- TabControlEvent.cs
- RangeValuePattern.cs
- AddInProcess.cs
- HostedNamedPipeTransportManager.cs
- GridViewCellAutomationPeer.cs
- QueryFunctions.cs
- MsmqOutputMessage.cs
- TextRunTypographyProperties.cs
- TogglePatternIdentifiers.cs
- OleDragDropHandler.cs
- __Filters.cs
- FilterableAttribute.cs
- SQLResource.cs
- UpdateManifestForBrowserApplication.cs
- GacUtil.cs
- SqlProviderServices.cs
- ExternalFile.cs
- Facet.cs
- DependencyPropertyDescriptor.cs
- Splitter.cs
- TreeViewHitTestInfo.cs
- Enlistment.cs
- CellParaClient.cs
- Pair.cs
- Encoder.cs
- BindingList.cs
- LockingPersistenceProvider.cs
- AmbientProperties.cs
- ConfigurationElement.cs
- ObjectDataSourceMethodEventArgs.cs
- UserControlAutomationPeer.cs
- BrushMappingModeValidation.cs
- DataRelation.cs
- ServiceHost.cs
- ColorConvertedBitmap.cs
- ReceiveMessageContent.cs
- PresentationUIStyleResources.cs
- RegexGroup.cs
- DesignerView.Commands.cs
- FilteredAttributeCollection.cs
- ExtendedPropertyDescriptor.cs
- MouseOverProperty.cs
- InfoCardClaimCollection.cs
- EpmTargetTree.cs
- TransportSecurityBindingElement.cs