;;;; Programmer: Kevin M. Rosenberg
;;;; Date Started: Apr 2000
;;;;
-;;;; $Id: strings.lisp,v 1.30 2003/05/16 08:37:20 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)