public void Merge(DocumentNodeMarkerSortedListOf <T> otherList, bool coalesce) { int count1 = this.list.Count; int count2 = otherList.list.Count; int num = count1 + count2; if (this.list.Count == num) { return; } this.list.AddRange((IEnumerable <KeyValuePair <DocumentNodeMarker, T> >)otherList.list); int index1 = count1 - 1; int index2 = count2 - 1; int index3; for (index3 = num - 1; index3 >= 0 && index1 >= 0 && index2 >= 0; --index3) { this.list[index3] = this.list[index1].Key.CompareTo((object)otherList.list[index2].Key) < 0 ? otherList.list[index2--] : this.list[index1--]; } for (; index2 >= 0; --index2) { this.list[index3] = otherList.list[index2]; --index3; } if (!coalesce) { return; } this.CoalesceAncestry(); }
public override void Copy(int destinationIndex, DocumentNodeMarkerSortedListBase sourceList, int sourceIndex) { DocumentNodeMarkerSortedListOf <T> markerSortedListOf = (DocumentNodeMarkerSortedListOf <T>)sourceList; this.list[destinationIndex] = markerSortedListOf.list[sourceIndex]; }
public DocumentNodeMarkerSortedListOf(DocumentNodeMarkerSortedListOf <T> other) : this(other.Count) { this.list.AddRange((IEnumerable <KeyValuePair <DocumentNodeMarker, T> >)other.list); }