Ejemplo n.º 1
0
        public virtual MruNode <V> Add(V item)
        {
            var node = new MruNode <V>(item, this);

            try
            {
                SlimLock.EnterWriteLock();
                node.Next = Head;
                Tail      = Tail ?? node;
                if (Head != null)
                {
                    Head.Previous = node;
                }
                Head = node;
                ItemCount++;

                if (ItemCount > Limit)
                {
                    var deleted = Tail;
                    if (Tail != null)
                    {
                        Tail = Tail.Previous;
                        deleted.Erase();
                    }
                    ItemCount--;
                }
            }
            finally
            {
                SlimLock.ExitWriteLock();
            }
            return(node);
        }
Ejemplo n.º 2
0
            public bool MoveNext()
            {
                var can = current.Next.Equals(default(V));

                if (can)
                {
                    current = current.Next;
                }
                return(can);
            }
Ejemplo n.º 3
0
 public void Reset()
 {
     current = list.Head;
 }
Ejemplo n.º 4
0
 public void Dispose()
 {
     list    = null;
     current = null;
 }
Ejemplo n.º 5
0
 public MruNode(MruList <V> list, MruNode <V> previous, V value)
 {
     List     = list;
     Previous = previous;
     Value    = value;
 }