Update of /project/elephant/cvsroot/elephant/src In directory common-lisp.net:/tmp/cvs-serv22085/src
Modified Files: serializer.lisp Log Message: really fixed the array types (hopefully!)
Date: Sat Sep 4 10:59:40 2004 Author: blee
Index: elephant/src/serializer.lisp diff -u elephant/src/serializer.lisp:1.7 elephant/src/serializer.lisp:1.8 --- elephant/src/serializer.lisp:1.7 Sat Sep 4 10:20:37 2004 +++ elephant/src/serializer.lisp Sat Sep 4 10:59:40 2004 @@ -355,19 +355,23 @@ (setf (gethash '(complex double-float) array-type-to-byte) #x06) (setf (gethash 'fixnum array-type-to-byte) #x07) (setf (gethash 'bit array-type-to-byte) #x08) + +(defun type= (t1 t2) + (and (subtypep t1 t2) (subtypep t2 t1))) + (let ((counter 8)) (loop for i from 2 to 65 for spec = (list 'unsigned-byte i) for uspec = (upgraded-array-element-type spec) - unless (gethash uspec array-type-to-byte) + when (type= spec uspec) do - (setf (gethash uspec array-type-to-byte) (incf counter))) + (setf (gethash spec array-type-to-byte) (incf counter))) (loop for i from 2 to 65 for spec = (list 'signed-byte i) for uspec = (upgraded-array-element-type spec) - unless (gethash uspec array-type-to-byte) + when (type= spec uspec) do - (setf (gethash uspec array-type-to-byte) (incf counter)))) + (setf (gethash spec array-type-to-byte) (incf counter))))
(loop for key being the hash-key of array-type-to-byte using (hash-value value)