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
-