From: Christophe R. <cr...@us...> - 2003-05-16 14:42:40
|
Update of /cvsroot/sbcl/sbcl/contrib/sb-rotate-byte In directory sc8-pr-cvs1:/tmp/cvs-serv23084/contrib/sb-rotate-byte Modified Files: compiler.lisp rotate-byte.lisp Log Message: 0.8alpha.0.33: Add one more contrib ... SB-MD5, based on Pierre Mai's highly-frobbed implementation of RFC1321; ... a couple of cosmetic changes to rotate-byte to accommodate the demands of code that wants to use it. Index: compiler.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/contrib/sb-rotate-byte/compiler.lisp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- compiler.lisp 11 Feb 2003 15:42:44 -0000 1.1 +++ compiler.lisp 16 May 2003 14:42:36 -0000 1.2 @@ -48,9 +48,11 @@ 'integer) (deftransform %rotate-byte ((count size pos integer) - ((or (integer -31 -1) (integer 1 31)) + ((integer -31 31) (constant-arg (member 32)) (constant-arg (member 0)) (unsigned-byte 32)) *) "inline 32-bit rotation" + ;; FIXME: What happens when, as here, the two type specifiers for + ;; COUNT overlap? Which gets to run first? '(%unsigned-32-rotate-byte count integer)) Index: rotate-byte.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/contrib/sb-rotate-byte/rotate-byte.lisp,v retrieving revision 1.1 retrieving revision 1.2 diff -u -d -r1.1 -r1.2 --- rotate-byte.lisp 11 Feb 2003 15:42:45 -0000 1.1 +++ rotate-byte.lisp 16 May 2003 14:42:36 -0000 1.2 @@ -1,8 +1,11 @@ (in-package "SB-ROTATE-BYTE") -(defun rotate-byte (count byte integer) - #+sb-doc "FIXME: Write a docstring" - (rotate-byte count byte integer)) +(defun rotate-byte (count bytespec integer) + "Rotates a field of bits within INTEGER; specifically, returns an +integer that contains the bits of INTEGER rotated COUNT times +leftwards within the byte specified by BYTESPEC, and elsewhere +contains the bits of INTEGER." + (rotate-byte count bytespec integer)) (defun %rotate-byte (count size pos integer) (let ((count (nth-value 1 (round count size))) |