changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate lisp/std/array.lisp

changeset 698: 96958d3eb5b0
parent: 00d1c8afcdbb
author: Richard Westhaver <ellis@rwest.io>
date: Fri, 04 Oct 2024 22:04:59 -0400
permissions: -rw-r--r--
description: fixes
291
a0dfde3cb3c4 begin :STD refactor
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
1
 ;;; std/array.lisp --- Standard Arrays
a0dfde3cb3c4 begin :STD refactor
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
2
 
a0dfde3cb3c4 begin :STD refactor
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
3
 ;;
a0dfde3cb3c4 begin :STD refactor
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
4
 
a0dfde3cb3c4 begin :STD refactor
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
5
 ;;; Code:
292
00d1c8afcdbb mostly done with std refactor, added sst-file-writer to rdb
Richard Westhaver <ellis@rwest.io>
parents: 291
diff changeset
6
 ;; sb-kernel:with-array-data
291
a0dfde3cb3c4 begin :STD refactor
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
7
 (in-package :std/array)
a0dfde3cb3c4 begin :STD refactor
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
8
 
a0dfde3cb3c4 begin :STD refactor
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
9
 (defun copy-array (array)
a0dfde3cb3c4 begin :STD refactor
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
10
   (let ((new-array
a0dfde3cb3c4 begin :STD refactor
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
11
           (make-array (array-dimensions array)
a0dfde3cb3c4 begin :STD refactor
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
12
                       :element-type (array-element-type array)
a0dfde3cb3c4 begin :STD refactor
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
13
                       :adjustable (adjustable-array-p array)
a0dfde3cb3c4 begin :STD refactor
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
14
                       :fill-pointer (and (array-has-fill-pointer-p array)
a0dfde3cb3c4 begin :STD refactor
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
15
                                          (fill-pointer array)))))
a0dfde3cb3c4 begin :STD refactor
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
16
     (loop for i below (array-total-size array)
a0dfde3cb3c4 begin :STD refactor
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
17
           do (setf (row-major-aref new-array i)
a0dfde3cb3c4 begin :STD refactor
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
18
                    (row-major-aref array i)))
a0dfde3cb3c4 begin :STD refactor
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
19
     new-array))
a0dfde3cb3c4 begin :STD refactor
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
20
 
a0dfde3cb3c4 begin :STD refactor
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
21
 (deftype signed-array-length ()
a0dfde3cb3c4 begin :STD refactor
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
22
   "A (possibly negated) array length."
a0dfde3cb3c4 begin :STD refactor
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
23
   '#.(let ((limit (1- array-dimension-limit)))
a0dfde3cb3c4 begin :STD refactor
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
24
        `(integer ,(- limit) ,limit)))