Mercurial > emacs
changeset 28458:e47fb07b39d4
Provide mule-utils.
(string-to-sequence): Simplify and speed up.
author | Dave Love <fx@gnu.org> |
---|---|
date | Sat, 01 Apr 2000 12:03:57 +0000 |
parents | bbe7b99b5b28 |
children | d3c34ba6d095 |
files | lisp/international/mule-util.el |
diffstat | 1 files changed, 22 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/international/mule-util.el Sat Apr 01 11:58:23 2000 +0000 +++ b/lisp/international/mule-util.el Sat Apr 01 12:03:57 2000 +0000 @@ -31,23 +31,29 @@ (defun string-to-sequence (string type) "Convert STRING to a sequence of TYPE which contains characters in STRING. TYPE should be `list' or `vector'." - (let ((len (length string)) - (i 0) - val) +;;; (let ((len (length string)) +;;; (i 0) +;;; val) (cond ((eq type 'list) - (setq val (make-list len 0)) - (let ((l val)) - (while (< i len) - (setcar l (aref string i)) - (setq l (cdr l) i (1+ i))))) + ;; Applicable post-Emacs 20.2 and asymptotically ~10 times + ;; faster than the code below: + (append string nil)) +;;; (setq val (make-list len 0)) +;;; (let ((l val)) +;;; (while (< i len) +;;; (setcar l (aref string i)) +;;; (setq l (cdr l) i (1+ i)))))) ((eq type 'vector) - (setq val (make-vector len 0)) - (while (< i len) - (aset val i (aref string i)) - (setq i (1+ i)))) + ;; As above. + (vconcat string)) +;;; (setq val (make-vector len 0)) +;;; (while (< i len) +;;; (aset val i (aref string i)) +;;; (setq i (1+ i)))) (t (error "Invalid type: %s" type))) - val)) +;;; val) +) ;;;###autoload (defsubst string-to-list (string) @@ -187,7 +193,7 @@ Optional 3rd argument NIL-FOR-TOO-LONG non-nil means return nil even if ALIST is not deep enough." (or (nested-alist-p alist) - (error "invalid argument %s" alist)) + (error "Invalid argument %s" alist)) (or len (setq len (length keyseq))) (let ((i (or start 0))) @@ -288,5 +294,6 @@ (detect-coding-region from to)))) +(provide 'mule-util) + ;;; mule-util.el ends here -