diff options
author | Vincent Ambo <tazjin@google.com> | 2020-01-17T18·04+0000 |
---|---|---|
committer | Vincent Ambo <tazjin@google.com> | 2020-01-17T18·04+0000 |
commit | 0a9a56953435382fa00357efb489860cee600a58 (patch) | |
tree | f7d6f418a93b5a8b1a94fe43742f48241c48daac /third_party/lisp/alexandria/arrays.lisp | |
parent | 30e4e5eefcd65c6fc1a3f37a90822ab1041576e0 (diff) | |
parent | 95aeb2ebae32a01ff79644daa523bda5d8552863 (diff) |
Merge commit '95aeb2ebae32a01ff79644daa523bda5d8552863' as 'third_party/lisp/alexandria' r/394
Diffstat (limited to 'third_party/lisp/alexandria/arrays.lisp')
-rw-r--r-- | third_party/lisp/alexandria/arrays.lisp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/third_party/lisp/alexandria/arrays.lisp b/third_party/lisp/alexandria/arrays.lisp new file mode 100644 index 000000000000..76c18791ad5f --- /dev/null +++ b/third_party/lisp/alexandria/arrays.lisp @@ -0,0 +1,18 @@ +(in-package :alexandria) + +(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)) |