18 lines
		
	
	
	
		
			871 B
		
	
	
	
		
			Common Lisp
		
	
	
	
	
	
			
		
		
	
	
			18 lines
		
	
	
	
		
			871 B
		
	
	
	
		
			Common Lisp
		
	
	
	
	
	
| (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))
 |