Merge commit '95aeb2ebae' as 'third_party/lisp/alexandria'

This commit is contained in:
Vincent Ambo 2020-01-17 18:04:20 +00:00
commit 0a9a569534
29 changed files with 6252 additions and 0 deletions

18
third_party/lisp/alexandria/arrays.lisp vendored Normal file
View file

@ -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))