r11052: Automated commit for Debian build of cl-base64 upstream-version-3.3.2
[cl-base64.git] / decode.lisp
index 775bb8ef92ef512777b3d36d8cbe7ea1cc1bd3cf..6503b78ff49ac3e2be729d31e4344b32fc6337f9 100644 (file)
@@ -7,7 +7,7 @@
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Dec 2002
 ;;;;
-;;;; $Id: decode.lisp,v 1.2 2003/01/12 22:32:40 kevin Exp $
+;;;; $Id$
 ;;;;
 ;;;; This file implements the Base64 transfer encoding algorithm as
 ;;;; defined in RFC 1521 by Borensten & Freed, September 1993.
@@ -19,8 +19,6 @@
 ;;;; Permission to use with BSD-style license included in the COPYING file
 ;;;; *************************************************************************
 
-(declaim (optimize (debug 3) (speed 3) (safety 1) (compilation-speed 0)))
-
 (in-package #:cl-base64)
 
 (declaim (inline whitespace-p))
 (defmacro def-base64-stream-to-* (output-type)
   `(defun ,(intern (concatenate 'string (symbol-name :base64-stream-to-)
                                (symbol-name output-type)))
-       (input &key (uri nil)
+    (input &key (uri nil)
        ,@(when (eq output-type :stream)
                '(stream)))
      ,(concatenate 'string "Decode base64 stream to " (string-downcase
                                                       (symbol-name output-type)))
      (declare (stream input)
-             (optimize (speed 3)))
+             (optimize (speed 3) (space 0) (safety 0)))
      (let ((pad (if uri *uri-pad-char* *pad-char*))
           (decode-table (if uri *uri-decode-table* *decode-table*)))
        (declare (type decode-table decode-table)
@@ -61,7 +59,7 @@
                          (:string
                           '((simple-string result)))
                          (:usb8-array
-                          '((type (array fixnum (*)) result))))
+                          '((type (simple-array (usigned-byte 8) (*)) result))))
                  (fixnum ridx))
         (do* ((bitstore 0)
               (bitcount 0)
               ,(case output-type
                      (:stream
                       'stream)
-                     ((or :stream :string)
-                      '(subseq result 0 ridx))))
+                     ((:string :usb8-array)
+                      'result)
+                     ;; ((:stream :string)
+                     ;; '(subseq result 0 ridx))))
+                     ))
           (declare (fixnum bitstore bitcount)
                    (character char))
           (let ((svalue (aref decode-table (the fixnum (char-code char)))))
 (defmacro def-base64-string-to-* (output-type)
   `(defun ,(intern (concatenate 'string (symbol-name :base64-string-to-)
                                (symbol-name output-type)))
-       (input &key (uri nil)
+    (input &key (uri nil)
        ,@(when (eq output-type :stream)
                '(stream)))
      ,(concatenate 'string "Decode base64 string to " (string-downcase
                                                       (symbol-name output-type)))
      (declare (string input)
-             (optimize (speed 3)))
+             (optimize (speed 3) (safety 0) (space 0)))
      (let ((pad (if uri *uri-pad-char* *pad-char*))
           (decode-table (if uri *uri-decode-table* *decode-table*)))
        (declare (type decode-table decode-table)
                          (:string
                           '((simple-string result)))
                          (:usb8-array
-                          '((type (array fixnum (*)) result))))
+                          '((type (simple-array (unsigned-byte 8) (*)) result))))
                  (fixnum ridx))
         (loop 
            for char of-type character across input
         ,(case output-type
                (:stream
                 'stream)
-               ((:stream :string)
+               ((:usb8-array :string)
                 '(subseq result 0 ridx)))))))
 
 (def-base64-string-to-* :string)
 (defun base64-string-to-integer (string &key (uri nil))
   "Decodes a base64 string to an integer"
   (declare (string string)
-          (optimize (speed 3)))
+          (optimize (speed 3) (safety 0) (space 0)))
   (let ((pad (if uri *uri-pad-char* *pad-char*))
        (decode-table (if uri *uri-decode-table* *decode-table*)))
     (declare (type decode-table decode-table)
 (defun base64-stream-to-integer (stream &key (uri nil))
   "Decodes a base64 string to an integer"
   (declare (stream stream)
-          (optimize (speed 3)))
+          (optimize (speed 3) (space 0) (safety 0)))
   (let ((pad (if uri *uri-pad-char* *pad-char*))
        (decode-table (if uri *uri-decode-table* *decode-table*)))
     (declare (type decode-table decode-table)