コード例 #1
0
        public bool Remove(L2ListElem elem)
#endif
        {
            lock (this)
            {
                if (elem.prev != null)
                {
                    elem.prev.next = elem.next;
                    elem.prev.Modify();
                    elem.prev = null;
                    elem.Modify();
                }
                else
                {
                    head = head.next;
                }
                if (elem.next != null)
                {
                    elem.next.prev = elem.prev;
                    elem.next.Modify();
                    elem.next = null;
                    elem.Modify();
                }
                else
                {
                    tail = tail.prev;
                }
                nElems        -= 1;
                updateCounter += 1;
                Modify();
                return(true);
            }
        }
コード例 #2
0
 /// <summary>
 /// Link specified element in the list before this element
 /// </summary>
 public void LinkBefore(L2ListElem elem)
 {
     Modify();
     prev.Modify();
     elem.Modify();
     elem.next = this;
     elem.prev = prev;
     prev.next = elem;
     prev      = elem;
 }
コード例 #3
0
 /// <summary>
 /// Link specified element in the list after this element
 /// </summary>
 public void LinkAfter(L2ListElem elem)
 {
     Modify();
     next.Modify();
     elem.Modify();
     elem.next = next;
     elem.prev = this;
     next.prev = elem;
     next      = elem;
 }
コード例 #4
0
 /// <summary>
 /// Insert element at the end of the list
 /// </summary>
 public void Append(L2ListElem elem)
 {
     lock (this)
     {
         Modify();
         prev.Modify();
         elem.Modify();
         elem.next      = this;
         elem.prev      = prev;
         prev.next      = elem;
         prev           = elem;
         nElems        += 1;
         updateCounter += 1;
     }
 }
コード例 #5
0
 /// <summary>
 /// Insert element at the beginning of the list
 /// </summary>
 public void Prepend(L2ListElem elem)
 {
     lock (this)
     {
         Modify();
         next.Modify();
         elem.Modify();
         elem.next      = next;
         elem.prev      = this;
         next.prev      = elem;
         next           = elem;
         nElems        += 1;
         updateCounter += 1;
     }
 }
コード例 #6
0
        public void Append(L2ListElem elem)
#endif
        {
            lock (this)
            {
                elem.next = null;
                elem.prev = tail;
                elem.Modify();
                if (tail != null)
                {
                    tail.next = elem;
                    tail.Modify();
                }
                else
                {
                    tail = elem;
                }
                tail           = elem;
                nElems        += 1;
                updateCounter += 1;
                Modify();
            }
        }
コード例 #7
0
        public void Prepend(L2ListElem elem)
#endif
        {
            lock (this)
            {
                elem.next = head;
                elem.prev = null;
                elem.Modify();
                if (head != null)
                {
                    head.prev = elem;
                    head.Modify();
                }
                else
                {
                    tail = elem;
                }
                head           = elem;
                nElems        += 1;
                updateCounter += 1;
                Modify();
            }
        }