- (declare (optimize (speed 3) (space 0) (debug 0)))
- (let ((state (make-md5-state)))
- (declare (type md5-state state))
- (cond
- ((equal (stream-element-type stream) '(unsigned-byte 8))
- (let ((buffer (make-array +buffer-size+
- :element-type '(unsigned-byte 8))))
- (declare (type (simple-array (unsigned-byte 8) (#.+buffer-size+))
- buffer))
- (loop for bytes of-type buffer-index = (read-sequence buffer stream)
- do (update-md5-state state buffer :end bytes)
- until (< bytes +buffer-size+)
- finally
- (return (finalize-md5-state state)))))
- ((equal (stream-element-type stream) 'character)
- (let ((buffer (make-string +buffer-size+)))
- (declare (type (simple-string #.+buffer-size+) buffer))
- (loop for bytes of-type buffer-index = (read-sequence buffer stream)
- do (update-md5-state state buffer :end bytes)
- until (< bytes +buffer-size+)
- finally
- (return (finalize-md5-state state)))))
- (t
- (error "Unsupported stream element-type ~S for stream ~S."
- (stream-element-type stream) stream)))))
+ (declare (optimize (speed 3) (safety 3) (space 0) (debug 1)))
+ (declare (type stream stream))
+ (locally
+ (declare (optimize (safety 1) (debug 0)))
+ (let ((state (make-md5-state)))
+ (declare (type md5-state state))
+ (cond
+ ((equal (stream-element-type stream) '(unsigned-byte 8))
+ (let ((buffer (make-array +buffer-size+
+ :element-type '(unsigned-byte 8))))
+ (declare (type (simple-array (unsigned-byte 8) (#.+buffer-size+))
+ buffer))
+ (loop for bytes of-type buffer-index = (read-sequence buffer stream)
+ do (update-md5-state state buffer :end bytes)
+ until (< bytes +buffer-size+)
+ finally
+ (return (finalize-md5-state state)))))
+ #+(or)
+ ((equal (stream-element-type stream) 'character)
+ (let ((buffer (make-string +buffer-size+)))
+ (declare (type (simple-string #.+buffer-size+) buffer))
+ (loop for bytes of-type buffer-index = (read-sequence buffer stream)
+ do (update-md5-state state buffer :end bytes)
+ until (< bytes +buffer-size+)
+ finally
+ (return (finalize-md5-state state)))))
+ (t
+ (error "Unsupported stream element-type ~S for stream ~S."
+ (stream-element-type stream) stream))))))