X-Git-Url: http://git.kpe.io/?p=clsql.git;a=blobdiff_plain;f=base%2Fcmucl-compat.lisp;h=d285788121f222fdde3d206690e560deab3cfb9a;hp=8b2b5a5b6758d373b8018b8d7ff0454bb20da3d5;hb=09f07ac9d914a83f9426609f3264f4e66b5a6d97;hpb=fa071351835a2c754895cb917db9c63303e7b5c1 diff --git a/base/cmucl-compat.lisp b/base/cmucl-compat.lisp index 8b2b5a5..d285788 100644 --- a/base/cmucl-compat.lisp +++ b/base/cmucl-compat.lisp @@ -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))