r8821: integrate usql support
[clsql.git] / base / cmucl-compat.lisp
index 8b2b5a5b6758d373b8018b8d7ff0454bb20da3d5..d285788121f222fdde3d206690e560deab3cfb9a 100644 (file)
@@ -2,24 +2,23 @@
 ;;;; *************************************************************************
 ;;;; FILE IDENTIFICATION
 ;;;;
-;;;; Name:          cmucl-compat.sql
+;;;; Name:          cmucl-compat.lisp
 ;;;; Purpose:       Compatiblity library for CMUCL functions
 ;;;; Programmer:    Kevin M. Rosenberg
 ;;;; Date Started:  Feb 2002
 ;;;;
-;;;; $Id: cmucl-compat.lisp,v 1.3 2002/10/21 07:45:49 kevin Exp $
+;;;; $Id$
 ;;;;
-;;;; This file, part of CLSQL, is Copyright (c) 2002 by Kevin M. Rosenberg
+;;;; This file, part of CLSQL, is Copyright (c) 2002-2004 by Kevin M. Rosenberg
 ;;;;
 ;;;; CLSQL users are granted the rights to distribute and use this software
 ;;;; as governed by the terms of the Lisp Lesser GNU Public License
 ;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
 ;;;; *************************************************************************
 
-(declaim (optimize (debug 3) (speed 3) (safety 1) (compilation-speed 0)))
-(in-package :cl-user)
+(in-package #:cl-user)
 
-(defpackage :cmucl-compat
+(defpackage #:cmucl-compat
   (:use #:common-lisp)
   (:export
    #:shrink-vector
@@ -27,7 +26,7 @@
    #:result-type-or-lose
    #:required-argument
    ))
-(in-package :cmucl-compat)
+(in-package #:cmucl-compat)
 
 #+(or cmu scl)
 (defmacro required-argument ()
@@ -56,9 +55,11 @@ Needs to be a macro to overwrite value of VEC."
       ((typep ,vec 'simple-array)
        (let ((,new-vec (make-array ,len :element-type
                                   (array-element-type ,vec))))
-        (dotimes (i ,len)
-          (declare (fixnum i))
-          (setf (aref ,new-vec i) (aref ,vec i)))
+        (check-type ,len fixnum)
+        (locally (declare (optimize (speed 3) (safety 0) (space 0)) )
+          (dotimes (i ,len)
+            (declare (fixnum i))
+            (setf (aref ,new-vec i) (aref ,vec i))))
         (setq ,vec ,new-vec)))
       ((typep ,vec 'vector)
        (setf (fill-pointer ,vec) ,len)
@@ -68,40 +69,19 @@ Needs to be a macro to overwrite value of VEC."
        )))
 
 
-
-#-(or cmu sbcl scl)
+#-(or cmu scl)
 (defun make-sequence-of-type (type length)
   "Returns a sequence of the given TYPE and LENGTH."
-  (declare (fixnum length))
-  (case type
-    (list 
-     (make-list length))
-    ((bit-vector simple-bit-vector) 
-     (make-array length :element-type '(mod 2)))
-    ((string simple-string base-string simple-base-string)
-     (make-string length))
-    (simple-vector 
-     (make-array length))
-    ((array simple-array vector)
-     (if (listp type)
-        (make-array length :element-type (cadr type))
-       (make-array length)))
-    (t
-     (make-sequence-of-type (result-type-or-lose type t) length))))
-
+  (make-sequence type length))
 
 #+(or cmu scl)
 (if (fboundp 'lisp::make-sequence-of-type)
     (defun make-sequence-of-type (type len)
       (lisp::make-sequence-of-type type len))
   (defun make-sequence-of-type (type len)
-    (system::make-sequence-of-type type len)))
+    (common-lisp::make-sequence-of-type type len)))
 
-#+sbcl
-(defun make-sequence-of-type (type len)
-  (sb-impl::make-sequence-of-type type len))
-
-#-(or cmu sbcl scl)
+#-(or cmu scl)
 (defun result-type-or-lose (type nil-ok)
   (unless (or type nil-ok)
     (error "NIL output type invalid for this sequence function"))
@@ -121,7 +101,3 @@ Needs to be a macro to overwrite value of VEC."
 #+(or cmu scl)
 (defun result-type-or-lose (type nil-ok)
   (lisp::result-type-or-lose type nil-ok))
-
-#+sbcl
-(defun result-type-or-lose (type nil-ok)
-  (sb-impl::result-type-or-lose type nil-ok))