sb-bsd-sockets: More robust inet-socket-bind test on Windows.
[sbcl.git] / contrib / sb-rotate-byte / rotate-byte.lisp
index 02342f8..2861359 100644 (file)
@@ -1,20 +1,23 @@
 (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)))
-       (mask (1- (ash 1 size))))
+        (mask (1- (ash 1 size))))
     (logior (logand integer (lognot (ash mask pos)))
-           (let ((field (logand (ash mask pos) integer)))
-             (logand (ash mask pos)
-                     (if (> count 0)
-                         (logior (ash field count)
-                                 (ash field (- count size)))
-                         (logior (ash field count)
-                                 (ash field (+ count size)))))))))
+            (let ((field (logand (ash mask pos) integer)))
+              (logand (ash mask pos)
+                      (if (> count 0)
+                          (logior (ash field count)
+                                  (ash field (- count size)))
+                          (logior (ash field count)
+                                  (ash field (+ count size)))))))))
 
 (defun %unsigned-32-rotate-byte (count integer)
   ;; inhibit transforms