Beispiel #1
0
        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;
                }
            }
        }
Beispiel #2
0
        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;
                }
            }
        }
Beispiel #3
0
        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;
                }
            }
        }
Beispiel #4
0
        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;
            }
        }
Beispiel #5
0
        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;
            }
        }
Beispiel #6
0
        public void Remove(LinkedObject item)
        {
            if (item == null)
            {
                return;
            }

            Unlink(item);
            item.Right = null;
            item.Left  = null;
        }
Beispiel #7
0
        public void Remove(LinkedObject item)
        {
            if (item == null)
            {
                return;
            }

            Unlink(item);
            item.Next     = null;
            item.Previous = null;
        }
Beispiel #8
0
        public LinkedObject GetLast()
        {
            LinkedObject last = Items;

            while (last != null && last.Next != null)
            {
                last = last.Next;
            }

            return(last);
        }
Beispiel #9
0
        public void Clear()
        {
            if (Items != null)
            {
                LinkedObject item = Items;
                Items = null;

                while (item != null)
                {
                    LinkedObject next = item.Next;
                    item.Next = null;
                    item      = next;
                }
            }
        }
Beispiel #10
0
        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;
            }
        }
Beispiel #11
0
        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;
            }
        }
Beispiel #12
0
        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;
            }
        }
Beispiel #13
0
        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;
            }
        }
Beispiel #14
0
        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;
            }
        }
Beispiel #15
0
        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;
            }
        }
Beispiel #16
0
        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;
                }
            }
        }