;;;; MAKE-ARRAY
(eval-when (:compile-toplevel :execute)
- (sb!xc:defmacro pick-type (type &rest specs)
+ (sb!xc:defmacro pick-vector-type (type &rest specs)
`(cond ,@(mapcar #'(lambda (spec)
`(,(if (eq (car spec) t)
t
;; and for all in any reasonable user programs.)
((t)
(values #.sb!vm:simple-vector-type #.sb!vm:word-bits))
- ((character base-char)
+ ((character base-char standard-char)
(values #.sb!vm:simple-string-type #.sb!vm:byte-bits))
((bit)
(values #.sb!vm:simple-bit-vector-type 1))
;; OK, we have to wade into SUBTYPEPing after all.
(t
- (pick-type type
+ ;; FIXME: The data here are redundant with
+ ;; *SPECIALIZED-ARRAY-ELEMENT-TYPE-PROPERTIES*.
+ (pick-vector-type type
(base-char (values #.sb!vm:simple-string-type #.sb!vm:byte-bits))
(bit (values #.sb!vm:simple-bit-vector-type 1))
((unsigned-byte 2)
#.sb!vm:complex-bit-vector-type)
;; OK, we have to wade into SUBTYPEPing after all.
(t
- (pick-type type
+ (pick-vector-type type
(base-char #.sb!vm:complex-string-type)
(bit #.sb!vm:complex-bit-vector-type)
(t #.sb!vm:complex-vector-type)))))
(defun array-in-bounds-p (array &rest subscripts)
#!+sb-doc
- "Returns T if the Subscipts are in bounds for the Array, Nil otherwise."
+ "Return T if the Subscipts are in bounds for the Array, Nil otherwise."
(if (%array-row-major-index array subscripts nil)
t))
(defun aref (array &rest subscripts)
#!+sb-doc
- "Returns the element of the Array specified by the Subscripts."
+ "Return the element of the Array specified by the Subscripts."
(row-major-aref array (%array-row-major-index array subscripts)))
(defun %aset (array &rest stuff)
(defun row-major-aref (array index)
#!+sb-doc
- "Returns the element of array corressponding to the row-major index. This is
+ "Return the element of array corressponding to the row-major index. This is
SETF'able."
(declare (optimize (safety 1)))
(row-major-aref array index))
(defun svref (simple-vector index)
#!+sb-doc
- "Returns the Index'th element of the given Simple-Vector."
+ "Return the INDEX'th element of the given Simple-Vector."
(declare (optimize (safety 1)))
(aref simple-vector index))
(defun bit (bit-array &rest subscripts)
#!+sb-doc
- "Returns the bit from the Bit-Array at the specified Subscripts."
+ "Return the bit from the BIT-ARRAY at the specified SUBSCRIPTS."
(declare (type (array bit) bit-array) (optimize (safety 1)))
(row-major-aref bit-array (%array-row-major-index bit-array subscripts)))
(defun sbit (simple-bit-array &rest subscripts)
#!+sb-doc
- "Returns the bit from the Simple-Bit-Array at the specified Subscripts."
+ "Return the bit from SIMPLE-BIT-ARRAY at the specified SUBSCRIPTS."
(declare (type (simple-array bit) simple-bit-array) (optimize (safety 1)))
(row-major-aref simple-bit-array
(%array-row-major-index simple-bit-array subscripts)))
(defun array-element-type (array)
#!+sb-doc
- "Returns the type of the elements of the array"
+ "Return the type of the elements of the array"
(let ((type (get-type array)))
(macrolet ((pick-element-type (&rest stuff)
`(cond ,@(mapcar #'(lambda (stuff)
`(= type ,item))))
(cdr stuff)))
stuff))))
+ ;; FIXME: The data here are redundant with
+ ;; *SPECIALIZED-ARRAY-ELEMENT-TYPE-PROPERTIES*.
(pick-element-type
((sb!vm:simple-string-type sb!vm:complex-string-type) 'base-char)
((sb!vm:simple-bit-vector-type sb!vm:complex-bit-vector-type) 'bit)
(defun array-dimension (array axis-number)
#!+sb-doc
- "Returns the length of dimension AXIS-NUMBER of ARRAY."
+ "Return the length of dimension AXIS-NUMBER of ARRAY."
(declare (array array) (type index axis-number))
(cond ((not (array-header-p array))
(unless (= axis-number 0)
(unless (array-header-p vector)
(macrolet ((frob (name &rest things)
`(etypecase ,name
- ,@(mapcar #'(lambda (thing)
- `(,(car thing)
- (fill (truly-the ,(car thing) ,name)
- ,(cadr thing)
- :start new-length)))
+ ,@(mapcar (lambda (thing)
+ (destructuring-bind (type-spec fill-value)
+ thing
+ `(,type-spec
+ (fill (truly-the ,type-spec ,name)
+ ,fill-value
+ :start new-length))))
things))))
+ ;; FIXME: The associations between vector types and initial
+ ;; values here are redundant with
+ ;; *SPECIALIZED-ARRAY-ELEMENT-TYPE-PROPERTIES*.
(frob vector
(simple-vector 0)
- (simple-base-string #.default-init-char)
+ (simple-base-string #.*default-init-char-form*)
(simple-bit-vector 0)
((simple-array (unsigned-byte 2) (*)) 0)
((simple-array (unsigned-byte 4) (*)) 0)