-#+allegro
-(defun delimited-string-to-list (string &optional (separator #\space) skip-terminal)
- "Uses allegro's internal function since that benchmarks faster than
-my algorithm. Does allegro use assembly?"
- (declare (string string) (character separator))
- (when skip-terminal
- (let ((len (length string)))
- (when (and (plusp len) (char= separator (char string (1- len))))
- (setq string (subseq string 0 (1- len))))))
- (excl:delimited-string-to-list string separator))
-
-(defun #-allegro delimited-string-to-list
- #+allegro my-delimited-string-to-list
- (string &optional (separator #\space) skip-terminal)
+;; From Larry Hunter with modifications
+(defun position-char (char string start max)
+ (declare (optimize (speed 3) (safety 0) (space 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 delimited-string-to-list (string &optional (separator #\space)
+ skip-terminal)