public void Insert(k_Iterator ak_SrcBegin, k_Iterator ak_SrcEnd) { for (k_Iterator lk_Iter = ak_SrcBegin.Clone(); lk_Iter != ak_SrcEnd; lk_Iter.Next()) { Add((DictionaryEntry)lk_Iter.Current); } }
public void CopyTo(Array ak_Array, int ai_Index) { for (k_Iterator lk_Iter = this.Begin.Clone(); lk_Iter != this.End; lk_Iter.Next()) { ak_Array.SetValue(lk_Iter.Current, ai_Index++); } }
public object Clone() { k_List lk_Clone = new k_List(); for (k_Iterator lk_Iter = this.Begin.Clone(); lk_Iter != this.End; lk_Iter.Next()) { lk_Clone.Add(lk_Iter.Current); } return(lk_Clone); }
public static k_Iterator Copy(k_Iterator ak_SrcFirst, k_Iterator ak_BehindSrcLast, k_Iterator ak_DstFirst) { k_Iterator lk_Src = ak_SrcFirst.Clone(), lk_Dst = ak_DstFirst.Clone(); while (lk_Src != ak_BehindSrcLast) { lk_Dst.Current = lk_Src.Current; lk_Src.Next(); lk_Dst.Next(); } return(lk_Dst); }
public override int Distance(k_Iterator ak_Iter) { k_NodeIterator lk_Iter = ak_Iter as k_NodeIterator; if (lk_Iter == null || !object.ReferenceEquals(lk_Iter.Collection, this.Collection)) { throw new ArgumentException("Cannot determine distance of iterators belonging to different collections."); } k_Iterator lk_End = mk_Tree.End; int li_KeyDiff; if (this == lk_End || ak_Iter == lk_End) { li_KeyDiff = (this == lk_End && this != ak_Iter) ? 1 : 0; } else { li_KeyDiff = mk_Tree.mk_Comparer.Compare(mk_Current.Key, lk_Iter.mk_Current.Key); } if (li_KeyDiff <= 0) { int li_Diff = 0; k_Iterator lk_Bck = this.Clone(); for (; lk_Bck != ak_Iter && lk_Bck != lk_End; lk_Bck.Next()) { --li_Diff; } if (lk_Bck == ak_Iter) { return(li_Diff); } } if (li_KeyDiff >= 0) { int li_Diff = 0; k_Iterator lk_Fwd = ak_Iter.Clone(); for (; lk_Fwd != this && lk_Fwd != lk_End; lk_Fwd.Next()) { ++li_Diff; } if (lk_Fwd == this) { return(li_Diff); } } throw new Exception("Inconsistent state. Concurrency?"); }
public override int Distance(k_Iterator ak_Iter) { k_BucketIterator lk_Iter = ak_Iter as k_BucketIterator; if (lk_Iter == null || !object.ReferenceEquals(lk_Iter.Collection, this.Collection)) { throw new ArgumentException("Cannot determine distance of iterators belonging to different collections."); } k_Iterator lk_End = mk_Table.End; int li_IndexDiff; if (this != lk_End && ak_Iter != lk_End) { li_IndexDiff = mi_Index - lk_Iter.mi_Index; } else { li_IndexDiff = (this == lk_End) ? 1 : -1; // 1 is also fine when both are End } if (li_IndexDiff < 0) { int li_Diff = 0; k_Iterator lk_Bck = this.Clone(); for (; lk_Bck != ak_Iter && lk_Bck != lk_End; lk_Bck.Next()) { --li_Diff; } if (lk_Bck == ak_Iter) { return(li_Diff); } } else { int li_Diff = 0; k_Iterator lk_Fwd = ak_Iter.Clone(); for (; lk_Fwd != this && lk_Fwd != lk_End; lk_Fwd.Next()) { ++li_Diff; } if (lk_Fwd == this) { return(li_Diff); } } throw new Exception("Inconsistent state. Concurrency?"); }
public static k_Iterator Find(k_Iterator ak_First, k_Iterator ak_Last, object ak_Value) { k_Iterator lk_Iter = ak_First.Clone(); for (; lk_Iter != ak_Last; lk_Iter.Next()) { if (object.Equals(lk_Iter.Current, ak_Value)) { break; } } return(lk_Iter); }
public override int Distance(k_Iterator ak_Iter) { k_NodeIterator lk_Iter = (k_NodeIterator)ak_Iter; k_Iterator lk_End = mk_List.End; int li_KeyDiff; if (this == lk_End || ak_Iter == lk_End) { li_KeyDiff = (this == lk_End && this != ak_Iter) ? 1 : 0; } else { li_KeyDiff = mk_List.mk_Comparer.Compare(mk_Current.Key, lk_Iter.mk_Current.Key); } if (li_KeyDiff <= 0) { int li_Diff = 0; k_Iterator lk_Bck = this.Clone(); for (; lk_Bck != lk_Iter && lk_Bck != lk_End; lk_Bck.Next()) { --li_Diff; } if (lk_Bck == lk_Iter) { return(li_Diff); } } if (li_KeyDiff >= 0) { int li_Diff = 0; k_Iterator lk_Fwd = lk_Iter.Clone(); for (; lk_Fwd != this && lk_Fwd != lk_End; lk_Fwd.Next()) { ++li_Diff; } if (lk_Fwd == this) { return(li_Diff); } } throw new Exception("Inconsistent state. Concurrency?"); }
public void Insert(k_Iterator ak_Where, k_Iterator ak_SrcBegin, k_Iterator ak_SrcEnd) { //System.Diagnostics.Debug.Assert(object.ReferenceEquals(this, ak_Where.Collection), "Iterator does not belong to this collection."); k_Node lk_Start = new k_Node(null), lk_End = lk_Start; int li_Count = 0; for (k_Iterator lk_Iter = ak_SrcBegin.Clone(); lk_Iter != ak_SrcEnd; lk_Iter.Next(), ++li_Count) { k_Node lk_New = new k_Node(lk_Iter.Current); lk_End.mk_Next = lk_New; lk_New.mk_Prev = lk_End; lk_End = lk_New; } if (li_Count > 0) { PasteNodeRange((k_NodeIterator)ak_Where, lk_Start.mk_Next, lk_End); mi_Count += li_Count; } }
public override int Distance(k_Iterator ak_Iter) { k_NodeIterator lk_Iter = (k_NodeIterator)ak_Iter; if (!this.IsValid || !lk_Iter.IsValid) { throw new ArgumentException("Iterator is invalid."); } int li_Diff = 0; k_Iterator lk_End = mk_List.End; k_Iterator lk_Fwd = lk_Iter.Clone(); for (; lk_Fwd != this && lk_Fwd != lk_End; lk_Fwd.Next()) { ++li_Diff; } if (lk_Fwd == this) { return(li_Diff); } li_Diff = 0; k_Iterator lk_Bck = this.Clone(); for (; lk_Bck != lk_Iter && lk_Bck != lk_End; lk_Bck.Next()) { --li_Diff; } if (lk_Bck == lk_Iter) { return(li_Diff); } throw new Exception("Inconsistent state. Concurrency?"); }
public static void Fill(k_Iterator ak_DstFirst, k_Iterator ak_BehindDstLast, object ak_Value) { for (k_Iterator lk_Iter = ak_DstFirst.Clone(); lk_Iter != ak_BehindDstLast; lk_Iter.Next()) { lk_Iter.Current = ak_Value; } }