X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Farray.lisp;h=150c70d79fe45bba79f6988b658ddd20ff1b26e5;hb=d210b7307f20daad1bfd5171a513ed173bd6d938;hp=4f4b690e0ad46646024b6e676f9e5ffa833f2013;hpb=576d3b8279caad3cee8ae465535d3a5e715cdc92;p=jscl.git diff --git a/src/array.lisp b/src/array.lisp index 4f4b690..150c70d 100644 --- a/src/array.lisp +++ b/src/array.lisp @@ -25,15 +25,17 @@ (array (make-storage-vector size))) ;; Upgrade type (if (eq element-type 'character) - (setf element-type 'character - initial-element (or initial-element #\space)) + (progn + (oset 1 array "stringp") + (setf element-type 'character + initial-element (or initial-element #\space))) (setf element-type t)) ;; Initialize array (dotimes (i size) (storage-vector-set array i initial-element)) ;; Record and return the object - (oset array "type" element-type) - (oset array "dimensions" dimensions) + (oset element-type array "type") + (oset dimensions array "dimensions") array)) @@ -48,7 +50,9 @@ (defun array-element-type (array) (unless (arrayp array) (error "~S is not an array." array)) - (oget array "type")) + (if (eq (oget array "stringp") 1) + 'character + (oget array "type"))) (defun array-dimensions (array) (unless (arrayp array)