Update Reference Sources to .NET Framework 4.6.1
[mono.git] / mcs / class / referencesource / System.Xml / System / Xml / Dom / XmlLinkedNode.cs
1 //------------------------------------------------------------------------------
2 // <copyright file="XmlLinkedNode.cs" company="Microsoft">
3 //     Copyright (c) Microsoft Corporation.  All rights reserved.
4 // </copyright>
5 // <owner current="true" primary="true">[....]</owner>
6 //------------------------------------------------------------------------------
7
8 namespace System.Xml {
9
10     // Gets the node immediately preceeding or following this node.
11     public abstract class XmlLinkedNode: XmlNode {
12         internal XmlLinkedNode next;
13
14         internal XmlLinkedNode(): base() {
15             next = null;
16         }
17         internal XmlLinkedNode( XmlDocument doc ): base( doc ) {
18             next = null;
19         }
20
21         // Gets the node immediately preceding this node.
22         public override XmlNode PreviousSibling {
23             get {
24                 XmlNode parent = ParentNode;
25                 if (parent != null) {
26                     XmlNode node = parent.FirstChild;
27                     while (node != null) {
28                         XmlNode nextSibling = node.NextSibling; 
29                         if (nextSibling == this) {
30                             break;
31                         }
32                         node = nextSibling;
33                     }
34                     return node;
35                 }
36                 return null;
37             }
38         }
39
40         // Gets the node immediately following this node.
41         public override XmlNode NextSibling {
42             get {
43                 XmlNode parent = ParentNode;
44                 if (parent != null) {
45                     if (next != parent.FirstChild)
46                         return next;
47                 }
48                 return null;
49             }
50         }
51     }
52 }