;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Apr 2000
;;;;
-;;;; $Id: package.lisp,v 1.51 2003/07/16 16:01:37 kevin Exp $
+;;;; $Id: package.lisp,v 1.52 2003/07/19 20:32:48 kevin Exp $
;;;;
;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg
;;;;
#:ensure-string
#:string-right-trim-one-char
#:string-strip-ending
+ #:string-maybe-shorten
+ #:shrink-vector
#:flatten
;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Apr 2000
;;;;
-;;;; $Id: strings.lisp,v 1.48 2003/07/16 16:01:37 kevin Exp $
+;;;; $Id: strings.lisp,v 1.49 2003/07/19 20:32:48 kevin Exp $
;;;;
;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg
;;;;
(return-from string-strip-ending
(subseq str 0 (- len (length ending))))))))
+
+(defun string-maybe-shorten (str maxlen)
+ (let ((len (length str)))
+ (if (<= len maxlen)
+ str
+ (concatenate 'string (subseq str 0 (- maxlen 3)) "..."))))
+
+
+(defun shrink-vector (str size)
+ #+allegro
+ (excl::.primcall 'sys::shrink-svector str size)
+ #+sbcl
+ (sb-kernel:shrink-vector str size)
+ #+cmu
+ (lisp::shrink-vector str size)
+ #+lispworks
+ (system::shrink-vector$vector str size)
+ #+(or allegro cmu sbcl lispworks)
+ str
+ #-(or allegro cmu sbcl lispworks)
+ (subseq str 0 size))
;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Apr 2000
;;;;
-;;;; $Id: symbols.lisp,v 1.3 2003/07/16 16:01:37 kevin Exp $
+;;;; $Id: symbols.lisp,v 1.4 2003/07/19 20:32:48 kevin Exp $
;;;;
;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg
;;;;
;;; Symbol functions
(eval-when (:compile-toplevel :load-toplevel :execute)
- (when (char= #\a (symbol-name '#:a))
+ (when (char= #\a (schar (symbol-name '#:a) 0))
(pushnew :lowercase-reader *features*)))
(defun string-default-case (str)