コード例 #1
0
ファイル: OrderedHashed.cs プロジェクト: Jorch72/CS-csds
        public bool AddAfter(OrderedSetNode <T> existing, T adding)
        {
            if (Mapping.ContainsKey(adding))
            {
                return(false);
            }
            if (First == null)
            {
                OrderedSetNode <T> nd = new OrderedSetNode <T>(adding);
                Mapping[adding] = nd;
                First           = nd;
                Last            = nd;
                return(true);
            }
            OrderedSetNode <T> n = new OrderedSetNode <T>(adding, existing, existing.Next);

            Mapping[adding] = n;
            if (n.Next == null)
            {
                Last          = n;
                existing.Next = n;
                return(true);
            }
            existing.Next.Previous = n;
            existing.Next          = n;
            return(true);
        }
コード例 #2
0
ファイル: OrderedHashed.cs プロジェクト: Jorch72/CS-csds
        public bool Remove(T item)
        {
            OrderedSetNode <T> n = Mapping[item];

            if (n != null)
            {
                if (n.Next == null && n.Previous == null)
                {
                    First = null;
                    Last  = null;
                }
                else if (n.Next == null)
                {
                    Last            = n.Previous;
                    n.Previous.Next = null;
                }
                else if (n.Previous == null)
                {
                    First           = n.Next;
                    n.Next.Previous = null;
                }
                else
                {
                    n.Next.Previous = n.Previous;
                    n.Previous.Next = n.Next;
                }
                Mapping.Remove(item);
                return(true);
            }
            return(false);
        }
コード例 #3
0
ファイル: OrderedHashed.cs プロジェクト: Jorch72/CS-csds
        public void CopyTo(T[] array, int arrayIndex)
        {
            if (First == null)
            {
                return;
            }
            int len = array.Length;
            OrderedSetNode <T> rec = First;

            array[arrayIndex++] = rec.Key;
            while ((rec = rec.Next) != null)
            {
                array[arrayIndex++] = rec.Key;
            }
        }
コード例 #4
0
ファイル: OrderedHashed.cs プロジェクト: Jorch72/CS-csds
        public System.Collections.IEnumerator GetEnumerator()
        {
            if (First == null)
            {
                yield break;
            }
            OrderedSetNode <T> rec = First;

            yield return(rec.Key);

            while ((rec = rec.Next) != null)
            {
                yield return(rec.Key);
            }
        }
コード例 #5
0
ファイル: OrderedHashed.cs プロジェクト: Jorch72/CS-csds
        IEnumerator <T> IEnumerable <T> .GetEnumerator()
        {
            if (First == null)
            {
                yield break;
            }
            OrderedSetNode <T> rec = First;

            yield return(rec.Key);

            while ((rec = rec.Next) != null)
            {
                yield return(rec.Key);
            }
        }
コード例 #6
0
ファイル: OrderedHashed.cs プロジェクト: Jorch72/CS-csds
 public bool AddBefore(T existing, T adding)
 {
     if (Last == null)
     {
         OrderedSetNode <T> n = new OrderedSetNode <T>(adding);
         Mapping[adding] = n;
         First           = n;
         Last            = n;
         return(true);
     }
     else if (existing == null)
     {
         return(AddAfter(Last, adding));
     }
     else
     {
         return(AddAfter(Mapping[existing], adding));
     }
 }
コード例 #7
0
ファイル: OrderedHashed.cs プロジェクト: Jorch72/CS-csds
        public bool Add(T adding)
        {
            if (Mapping.ContainsKey(adding))
            {
                return(false);
            }
            if (First == null)
            {
                OrderedSetNode <T> nd = new OrderedSetNode <T>(adding);
                Mapping[adding] = nd;
                First           = nd;
                Last            = nd;
                return(true);
            }
            OrderedSetNode <T> n = new OrderedSetNode <T>(adding, Last, null);

            Mapping[adding] = n;
            Last.Next       = n;
            Last            = n;
            return(true);
        }
コード例 #8
0
ファイル: OrderedHashed.cs プロジェクト: Jorch72/CS-csds
 public void Clear()
 {
     Mapping.Clear();
     First = null;
     Last  = null;
 }
コード例 #9
0
ファイル: OrderedHashed.cs プロジェクト: Jorch72/CS-csds
 public OrderedSetNode(K key, OrderedSetNode <K> previous, OrderedSetNode <K> next)
 {
     Key      = key;
     Next     = next;
     Previous = previous;
 }