(ccl-check-register rrr cmd)
(ccl-check-register RRR cmd)
(cond ((and (symbolp Rrr) (not (get Rrr 'ccl-register-number)))
- (if (not (get Rrr 'translation-table))
- (error "CCL: Invalid translation table %s in %s" Rrr cmd))
(ccl-embed-extended-command 'translate-character-const-tbl
rrr RRR 0)
(ccl-embed-symbol Rrr 'translation-table-id))
(defun ccl-compile-map-multiple (cmd)
(if (/= (length cmd) 4)
(error "CCL: Invalid number of arguments: %s" cmd))
- (let ((func (lambda (arg mp)
- (let ((len 0) result add)
- (while arg
- (if (consp (car arg))
- (setq add (funcall func (car arg) t)
- result (append result add)
- add (+ (-(car add)) 1))
- (setq result
- (append result
- (list (car arg)))
- add 1))
- (setq arg (cdr arg)
- len (+ len add)))
- (if mp
- (cons (- len) result)
- result))))
- arg)
+ (let (func arg)
+ (setq func
+ (lambda (arg mp)
+ (let ((len 0) result add)
+ (while arg
+ (if (consp (car arg))
+ (setq add (funcall func (car arg) t)
+ result (append result add)
+ add (+ (- (car add)) 1))
+ (setq result
+ (append result
+ (list (car arg)))
+ add 1))
+ (setq arg (cdr arg)
+ len (+ len add)))
+ (if mp
+ (cons (- len) result)
+ result))))
(setq arg (append (list (nth 0 cmd) (nth 1 cmd) (nth 2 cmd))
(funcall func (nth 3 cmd) nil)))
(ccl-compile-multiple-map-function 'map-multiple arg))