Svante Carl v. Erichsen | 13 Sep 14:41 2011
Picon

Scratching an itch: copy-array


Hello!

I should like to propose a drop-in replacement for copy-array:

(defun copy-array (array &key
                   (element-type (array-element-type array))
                   (fill-pointer (and (array-has-fill-pointer-p array)
                                      (fill-pointer array)))
                   (adjustable (adjustable-array-p array)))
  "Returns an undisplaced copy of ARRAY, with same fill-pointer and
adjustability (if any) as the original, unless overridden by the keyword
arguments."
  (let* ((dimensions (array-dimensions array))
         (new-array (make-array dimensions
                                :element-type element-type
                                :adjustable adjustable
                                :fill-pointer fill-pointer)))
    (dotimes (i (array-total-size array))
      (setf (row-major-aref new-array i)
            (row-major-aref array i)))
    new-array))

My reasons can be seen from the following tests:

(deftest copy-array.3
    (let* ((orig (vector 1 2 3))
           (copy (copy-array orig)))
      (typep copy 'simple-array))
  t)
(Continue reading)

Nikodemus Siivola | 29 Oct 23:46 2011
Picon

Re: Scratching an itch: copy-array

On 13 September 2011 15:41, Svante Carl v. Erichsen
<Svante.v.Erichsen <at> web.de> wrote:

> I should like to propose a drop-in replacement for copy-array:

Thank you! Merged and pushed,

 -- nikodemus

Gmane