Merge pull request #3386 from alexanderkyte/nunit_lite_return_status
[mono.git] / mcs / class / referencesource / System.Web / Util / DoubleLink.cs
1 //------------------------------------------------------------------------------
2 // <copyright file="DoubleLink.cs" company="Microsoft">
3 //     Copyright (c) Microsoft Corporation.  All rights reserved.
4 // </copyright>                                                                
5 //------------------------------------------------------------------------------
6
7 /*
8  * DoubleLink
9  * 
10  * Copyright (c) 1998-1999, Microsoft Corporation
11  * 
12  */
13
14 namespace System.Web.Util {
15     using System.Runtime.Serialization.Formatters;
16
17     internal class DoubleLink {
18         internal DoubleLink    _next, _prev;
19         internal Object           Item;
20
21         internal DoubleLink() {
22             _next = _prev = this;
23         }
24         internal DoubleLink(Object item)  : this() {
25             this.Item = item;
26         }
27         internal DoubleLink Next {get {return _next;}}
28
29         internal void InsertAfter(DoubleLink after) {
30             this._prev = after;
31             this._next = after._next;
32             after._next = this;
33             this._next._prev = this;
34         }
35
36         internal void InsertBefore(DoubleLink before) {
37             this._prev = before._prev;
38             this._next = before;
39             before._prev = this;
40             this._prev._next = this;
41         }
42
43         internal void Remove() {
44             this._prev._next = this._next;
45             this._next._prev = this._prev;
46             _next = _prev = this;
47         }
48
49 #if DBG
50         internal virtual void DebugValidate() {
51             Debug.CheckValid(this._next != this || this._prev == this, "Invalid link");
52         }
53
54         internal virtual string DebugDescription(string indent) {
55             string desc;
56
57             desc = indent + "_next=" + _next + ", _prev=" + _prev + "\nItem=";
58             desc += Debug.GetDescription(Item, indent + "    ");
59
60             return desc;
61         }
62 #endif
63     }
64
65 }