Example #1
0
        public void Add( ListNode node )
        {
            lock( this )
            {
                node.Remove();
                node.list = this;
                node.prev = last;

                if( first == null )
                    first = node;
                else
                    last.next = node;

                last = node;
            }
        }
Example #2
0
        public void Remove( ListNode node )
        {
            lock( this )
            {
                if( node.prev == null )
                    first = node.next;
                else
                    node.prev.next = node.next;

                if( node.next == null )
                    last = node.prev;
                else
                    node.next.prev = node.prev;

                node.list = null;
            }
        }
Example #3
0
        public void Add( ListNode node, ListNode newNode )
        {
            lock( this )
            {
                newNode.Remove();
                newNode.list = this;

                newNode.next = node.next;
                newNode.prev = node;

                if( node.next == null )
                    last = newNode;
                else
                    node.next.prev = newNode;

                node.next = newNode;
            }
        }
Example #4
0
        public void Replace( ListNode oldNode, ListNode newNode )
        {
            lock( this )
            {
                newNode.Remove();
                newNode.list = this;

                if( oldNode.prev == null )
                    first = newNode;
                else
                    oldNode.prev.next = newNode;

                if( oldNode.next == null )
                    last = newNode;
                else
                    oldNode.next.prev = newNode;

                newNode.prev = oldNode.prev;
                newNode.next = oldNode.next;
            }
        }
Example #5
0
        public bool MoveNext()
        {
            if( curNode == null )
                return false;

            lock( list )
            {
                if( curNode == UNINITIALIZED )
                {
                    curNode = list.GetFirst();
                }
                else
                {
                    curNode = curNode.next;

                    while( curNode != null && curNode.list == null )
                        curNode = curNode.next;
                }
            }

            return curNode != null;
        }
Example #6
0
 public void Reset()
 {
     curNode = UNINITIALIZED;
 }
Example #7
0
        public void Insert( ListNode node, ListNode newNode )
        {
            lock( this )
            {
                newNode.Remove();
                newNode.list = this;

                newNode.prev = node.prev;
                newNode.next = node;

                if( node.prev == null )
                    first = newNode;
                else
                    node.prev.next = newNode;

                node.prev = newNode;
            }
        }
Example #8
0
 public void Clear()
 {
     lock( this )
     {
         first = null;
         last = null;
     }
 }
Example #9
0
 public void SetPrevious( ListNode node )
 {
     list.Insert( this, node );
 }
Example #10
0
 public void SetNext( ListNode node )
 {
     list.Add( this, node );
 }