diff --git a/BeefLibs/corlib/src/Collections/Dictionary.bf b/BeefLibs/corlib/src/Collections/Dictionary.bf index 23446596..32fca56a 100644 --- a/BeefLibs/corlib/src/Collections/Dictionary.bf +++ b/BeefLibs/corlib/src/Collections/Dictionary.bf @@ -290,23 +290,15 @@ namespace System.Collections } } - public void CopyTo(KeyValuePair[] kvPair, int index) + public void CopyTo(Span kvPair) { - Keys.Reset(); - Values.Reset(); - int i = 0; - - repeat + Debug.Assert(kvPair.Length >= mCount); + int idx = 0; + for (var kv in this) { - if (i >= index) - { - kvPair[i] = (Keys.Current, Values.Current); - } + kvPair[idx] = kv; + ++idx; } - while(Keys.MoveNext() && Values.MoveNext()); - - Keys.Reset(); - Values.Reset(); } public Enumerator GetEnumerator() diff --git a/BeefLibs/corlib/src/Collections/ICollection.bf b/BeefLibs/corlib/src/Collections/ICollection.bf index 9faa6a01..fca44550 100644 --- a/BeefLibs/corlib/src/Collections/ICollection.bf +++ b/BeefLibs/corlib/src/Collections/ICollection.bf @@ -10,7 +10,7 @@ namespace System.Collections public void Add(T item); public void Clear(); public bool Contains(T item); - public void CopyTo(T[] arr, int index); + public void CopyTo(Span span); public bool Remove(T item); } } diff --git a/BeefLibs/corlib/src/Collections/List.bf b/BeefLibs/corlib/src/Collections/List.bf index a809fe53..dd376115 100644 --- a/BeefLibs/corlib/src/Collections/List.bf +++ b/BeefLibs/corlib/src/Collections/List.bf @@ -403,6 +403,13 @@ namespace System.Collections Internal.MemCpy(destList.mItems, mItems, mSize * strideof(T), alignof(T)); } + public void CopyTo(Span span) + { + // Delegate rest of error checking to Array.Copy. + for (int i = 0; i < mSize; i++) + span[i] = mItems[i]; + } + public void CopyTo(T[] array, int arrayIndex) { // Delegate rest of error checking to Array.Copy.