;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Apr 2000
;;;;
-;;;; $Id: package.lisp,v 1.28 2003/05/07 21:05:44 kevin Exp $
+;;;; $Id: package.lisp,v 1.29 2003/05/08 23:35:18 kevin Exp $
;;;;
;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg
;;;;
#:until
#:while
#:for
+
+ ;; strings.lisp
#:mapappend
#:mapcar-append-string
#:mapcar2-append-string
+ #:position-char
#:delimited-string-to-list
#:list-to-delimited-string
#:flatten
- #:append-sublists
+
#:indent-spaces
#:print-list
#:print-rows
#:file-subst
#:stream-subst
+
+ ;; lists.lisp
#:remove-tree-if
#:find-tree
#:with-each-file-line
#:with-each-stream-line
#:remove-keyword
#:remove-keywords
- #:nsubseq
+ #:append-sublists
+ #:nsubseq
;; math.lisp
#:ensure-integer
;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Apr 2000
;;;;
-;;;; $Id: strings.lisp,v 1.23 2003/05/08 19:19:08 kevin Exp $
+;;;; $Id: strings.lisp,v 1.24 2003/05/08 23:35:18 kevin Exp $
;;;;
;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg
;;;;
(setq string (subseq string 0 (1- len))))))
(excl:delimited-string-to-list string separator))
+;; From Larry Hunter with modifications
+(defun position-char (char string start max)
+ (declare (optimize (speed 3) (safety 0))
+ (fixnum start max) (simple-string string))
+ (do* ((i start (1+ i)))
+ ((= i max) nil)
+ (declare (fixnum i))
+ (when (char= char (schar string i)) (return i))))
+
(defun #-allegro delimited-string-to-list
#+allegro my-delimited-string-to-list
(string &optional (separator #\space) skip-terminal)
(do* ((len (length string))
(output '())
(pos 0)
- (end (position separator string :start pos :end len)
- (position separator string :start pos :end len)))
+ (end (position-char separator string pos len)
+ (position-char separator string pos len)))
((null end)
(if (< pos len)
(push (subseq string pos) output)