public void Unlink(LinkedObject item) { if (item == null) { return; } if (item == Items) { Items = Items.Next; if (Items != null) { Items.Previous = null; } } else { if (item.Previous != null) { item.Previous.Next = item.Next; } if (item.Next != null) { item.Next.Previous = item.Previous; } } }
public void Insert(LinkedObject first, LinkedObject item) { if (first == null) { item.Right = First; item.Left = null; if (First != null) { First.Left = item; } First = item; } else { var next = first.Right; item.Right = next; item.Left = first; first.Right = item; if (next != null) { next.Left = item; } } }
public void Insert(LinkedObject first, LinkedObject item) { if (first == null) { item.Next = Items; item.Previous = null; if (Items != null) { Items.Previous = item; } Items = item; } else { LinkedObject next = first.Next; item.Next = next; item.Previous = first; first.Next = item; if (next != null) { next.Previous = item; } } }
public void PushToBack(LinkedObject item) { if (item == null) { return; } Remove(item); if (Items == null) { Items = item; } else { var current = Items; while (current.Next != null) { current = current.Next; } current.Next = item; item.Previous = current; } }
public void PushToBack(LinkedObject item) { if (item == null) { return; } Remove(item); if (Items == null) { Items = item; } else { var current = Items; while (current.Next != null) { current = current.Next; } current.Next = item; Debug.Assert(item.Next == null, "[Append to last-next] item must be unlinked before."); item.Next = null; item.Previous = current; } }
public void Remove(LinkedObject item) { if (item == null) { return; } Unlink(item); item.Right = null; item.Left = null; }
public void Remove(LinkedObject item) { if (item == null) { return; } Unlink(item); item.Next = null; item.Previous = null; }
public LinkedObject GetLast() { LinkedObject last = Items; while (last != null && last.Next != null) { last = last.Next; } return(last); }
public void Clear() { if (Items != null) { LinkedObject item = Items; Items = null; while (item != null) { LinkedObject next = item.Next; item.Next = null; item = next; } } }
public void MoveToFront(LinkedObject item) { if (item != null && item != First) { Unlink(item); if (First != null) { First.Left = item; } item.Right = First; item.Left = null; First = item; } }
public void MoveToFront(LinkedObject item) { if (item != null && item != Items) { Unlink(item); if (Items != null) { Items.Previous = item; } item.Next = Items; item.Previous = null; Items = item; } }
public void MoveToBack(LinkedObject item) { if (item != null) { Unlink(item); var last = GetLast(); if (last == null) { First = item; } else { last.Right = item; } item.Left = last; item.Right = null; } }
public void MoveToBack(LinkedObject item) { if (item != null) { Unlink(item); LinkedObject last = GetLast(); if (last == null) { Items = item; } else { last.Next = item; } item.Previous = last; item.Next = null; } }
public void PushToBack(LinkedObject item) { if (item == null) { return; } if (First == null) { First = item; } else { var current = First; while (current.Right != null) { current = current.Right; } current.Right = item; item.Left = current; } }
public void PushToBack(LinkedObject item) { if (item == null) { return; } Remove(item); if (Items == null) { Items = item; } else { LinkedObject last = GetLast(); last.Next = item; Debug.Assert(item.Next == null, "[Append to last-next] item must be unlinked before."); item.Next = null; item.Previous = last; } }
public void Unlink(LinkedObject item) { if (item == null) { return; } if (item == First) { First = First.Right; if (First != null) { First.Left = null; } } else { item.Left.Right = item.Right; if (item.Right != null) { item.Right.Left = item.Left; } } }