;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Apr 2000
;;;;
-;;;; $Id: strings.lisp,v 1.29 2003/05/16 08:32:10 kevin Exp $
+;;;; $Id: strings.lisp,v 1.32 2003/05/16 12:51:11 kevin Exp $
;;;;
;;;; This file, part of KMRCL, is Copyright (c) 2002 by Kevin M. Rosenberg
;;;;
(defun count-string-words (str)
(declare (simple-string str)
- (optimize (speed 3) (safety 0)))
+ (optimize (speed 3) (safety 0) (space 0)))
(let ((n-words 0)
(in-word nil))
(declare (fixnum n-words))
- (dotimes (i (length str))
- (let ((ch (char str i)))
- (declare (character ch))
- (if (alphanumericp ch)
- (unless in-word
- (incf n-words)
- (setq in-word t))
- (setq in-word nil))))
- n-words))
+ (do* ((len (length str))
+ (i 0 (1+ i)))
+ ((= i len) n-words)
+ (declare (fixnum i))
+ (if (alphanumericp (schar str i))
+ (unless in-word
+ (incf n-words)
+ (setq in-word t))
+ (setq in-word nil)))))
;; From Larry Hunter with modifications
(defun position-char (char string start max)
Leading zeros are present."
(declare (optimize (speed 3) (safety 0) (space 0))
(type fixnum len) (type integer num))
- (when pchar
- (incf len))
(do* ((zero-code (char-code #\0))
(result (make-string len :initial-element #\0))
(minus? (minusp num))
(pos (1- len) (1- pos))
(mod (mod val 10) (mod val 10)))
((or (zerop val) (minusp pos))
- (when pchar
- (setf (schar result 0) pchar))
(when minus? (setf (schar result (if pchar 1 0)) #\-))
result)
(declare (fixnum mod zero-code pos) (simple-string result) (integer val))