protected System.Collections.Generic.IEnumerator <T> EnumeratorImplemenation() { LinkedNode <T> Current = Head; while (false.Equals(object.ReferenceEquals(Current, LinkedNode <T> .Null))) { yield return(Current.Value); Current = Current.Next; } }
public static LinkedNode <T> InsertBefore(LinkedNode <T> node, ref T value) { LinkedNode <T> result = new LinkedNode <T>(ref value); result.Next = node; result.Previous = node.Previous; node.Previous.Next = result; node.Previous = result; return(result); }
protected LinkedNode <T> AddLast(ref T value) { if (object.ReferenceEquals(Head, LinkedNode <T> .Null)) { Tail = new LinkedNode <T>(ref value); } else { Tail = LinkedNode <T> .InsertBefore(Head, ref value); } System.Threading.Interlocked.Increment(ref m_Count); return(Tail); }
public bool TryAddLast(ref T data) { long count = Count; if (count >= Capacity) { return(false); } else if (count.Equals(Binary.LongZero)) { Tail = new LinkedNode <T>(ref data); } else { Tail.Next = (Tail = new LinkedNode <T>(ref data) { Next = Tail }); } System.Threading.Interlocked.Increment(ref m_Count); return(true); }