# HG changeset patch # User Kenichi Handa # Date 960257370 0 # Node ID 86a268b661c2f12e428ed6810c7a488e46be5e4d # Parent 44ecae4ce8e79811b0ecb96c1c4ab289027562de Remove eval-when-compile. (viet-viscii-nonascii-translation-table): Define it as a translation table made from viet-viscii-decode-table. (viet-viscii-encode-table): Define it as a translation table made from the reverse map of above. (viet-vscii-nonascii-translation-table): Define it as a translation table made from viet-vscii-decode-table. (viet-vscii-encode-table): Define it as a translation table made from the reverse map of above. (ccl-decode-viscii): Use translate-character. (ccl-encode-viscii, ccl-encode-viscii-font) (ccl-decode-vscii, ccl-encode-vscii, ccl-encode-vscii-font): Likewize. diff -r 44ecae4ce8e7 -r 86a268b661c2 lisp/language/vietnamese.el --- a/lisp/language/vietnamese.el Tue Jun 06 01:12:21 2000 +0000 +++ b/lisp/language/vietnamese.el Tue Jun 06 02:09:30 2000 +0000 @@ -28,8 +28,6 @@ ;;; Code: -(eval-and-compile - (defvar viet-viscii-decode-table [;; VISCII is a full 8-bit code. 0 1 ?,2F(B 3 4 ?,2G(B ?,2g(B 7 8 9 10 11 12 13 14 15 @@ -50,22 +48,10 @@ ?,1p(B ?,1q(B ?,1r(B ?,1s(B ?,1t(B ?,1u(B ?,1v(B ?,1w(B ?,1x(B ?,1y(B ?,1z(B ?,1{(B ?,1|(B ?,1}(B ?,1~(B ?,2f(B ] "Vietnamese VISCII decoding table.") -(defvar viet-viscii-encode-table - (let ((table-lower (make-vector 128 0)) - (table-upper (make-vector 128 0)) - (i 0) - char-component) - (while (< i 256) - (setq char-component (split-char (aref viet-viscii-decode-table i))) - (cond ((eq (car char-component) 'vietnamese-viscii-lower) - (aset table-lower (nth 1 char-component) i)) - ((eq (car char-component) 'vietnamese-viscii-upper) - (aset table-upper (nth 1 char-component) i))) - (setq i (1+ i))) - (cons table-lower table-upper)) - "Vietnamese VISCII encoding table. -Cons of tables for encoding lower-case chars and upper-case characters. -Both tables are indexed by the position code of Vietnamese characters.") +(let ((table (make-translation-table-from-vector viet-viscii-decode-table))) + (define-translation-table 'viet-viscii-nonascii-translation-table table) + (define-translation-table 'viet-viscii-encode-table + (char-table-extra-slot table 0))) (defvar viet-vscii-decode-table [;; VSCII is a full 8-bit code. @@ -87,61 +73,27 @@ ?,22(B ?,1|(B ?,1{(B ?,1z(B ?,1x(B ?,1W(B ?,1X(B ?,1f(B ?,1Q(B ?,1q(B ?,1O(B ?,1V(B ?,1[(B ?,1}(B ?,1\(B ?,2/(B] "Vietnamese VSCII decoding table.") -(defvar viet-vscii-encode-table - (let ((table-lower (make-vector 128 0)) - (table-upper (make-vector 128 0)) - (i 0) - char-component) - (while (< i 256) - (setq char-component (split-char (aref viet-vscii-decode-table i))) - (cond ((eq (car char-component) 'vietnamese-viscii-lower) - (aset table-lower (nth 1 char-component) i)) - ((eq (car char-component) 'vietnamese-viscii-upper) - (aset table-upper (nth 1 char-component) i))) - (setq i (1+ i))) - (cons table-lower table-upper)) - "Vietnamese VSCII encoding table. -Cons of tables for encoding lower-case chars and upper-case characters. -Both tables are indexed by the position code of Vietnamese characters.") - -) +(let ((table (make-translation-table-from-vector viet-vscii-decode-table))) + (define-translation-table 'viet-vscii-nonascii-translation-table table) + (define-translation-table 'viet-vscii-encode-table + (char-table-extra-slot table 0))) (define-ccl-program ccl-decode-viscii `(3 - ((read r0) - (loop - (write-read-repeat r0 ,viet-viscii-decode-table)) - )) + ((loop + (r0 = 0) + (read r1) + (translate-character viet-viscii-nonascii-translation-table r0 r1) + (write-multibyte-character r0 r1) + (repeat)))) "CCL program to decode VISCII 1.1") -;; Multibyte form of a Vietnamese character is as follows (3-byte): -;; LEADING-CODE-PRIVATE-11 LEADING-CODE-EXTENDED-11 POSITION-CODE -;; where LEADING-CODE-EXTENDED-11 for Vietnamese is -;; `vietnamese-viscii-lower' or `vietnamese-viscii-upper'. - (define-ccl-program ccl-encode-viscii `(1 - ((read r0) - (loop - (if (r0 < 128) - ;; ASCII - (write-read-repeat r0) - ;; not ASCII - (if (r0 != ,leading-code-private-11) - ;; not Vietnamese - (write-read-repeat r0) - ((read-if (r0 == ,(charset-id 'vietnamese-viscii-lower)) - (;; Vietnamese lower - (read r0) - (r0 -= 128) - (write-read-repeat r0 ,(car viet-viscii-encode-table))) - (if (r0 == ,(charset-id 'vietnamese-viscii-upper)) - (;; Vietnamese upper - (read r0) - (r0 -= 128) - (write-read-repeat r0 ,(cdr viet-viscii-encode-table))) - ;; not Vietnamese - (write-read-repeat r0))))))))) + ((loop + (read-multibyte-character r0 r1) + (translate-character viet-viscii-encode-table r0 r1) + (write-repeat r1)))) "CCL program to encode VISCII 1.1") (define-ccl-program ccl-encode-viscii-font @@ -149,43 +101,25 @@ ;; In: R0:vietnamese-viscii-lower/vietnamese-viscii-upper ;; R1:position code ;; Out: R1:font code point - (if (r0 == ,(charset-id 'vietnamese-viscii-lower)) - (r1 = r1 ,(car viet-viscii-encode-table)) - (r1 = r1 ,(cdr viet-viscii-encode-table))) - ) + (translate-character viet-viscii-encode-table r0 r1)) "CCL program to encode Vietnamese chars to VISCII 1.1 font") (define-ccl-program ccl-decode-vscii `(3 - ((read r0) - (loop - (write-read-repeat r0 ,viet-vscii-decode-table)) - )) + ((loop + (r0 = 0) + (read r1) + (translate-character viet-vscii-nonascii-translation-table r0 r1) + (write-multibyte-character r0 r1) + (repeat)))) "CCL program to decode VSCII-1.") (define-ccl-program ccl-encode-vscii `(1 - ((read r0) - (loop - (if (r0 < 128) - ;; ASCII - (write-read-repeat r0) - ;; not ASCII - (if (r0 != ,leading-code-private-11) - ;; not Vietnamese - (write-read-repeat r0) - (read-if (r0 == ,(charset-id 'vietnamese-viscii-lower)) - (;; Vietnamese lower - (read r0) - (r0 -= 128) - (write-read-repeat r0 ,(car viet-vscii-encode-table))) - (if (r0 == ,(charset-id 'vietnamese-viscii-upper)) - (;; Vietnamese upper - (read r0) - (r0 -= 128) - (write-read-repeat r0 ,(cdr viet-vscii-encode-table))) - ;; not Vietnamese - (write-read-repeat r0)))))))) + ((loop + (read-multibyte-character r0 r1) + (translate-character viet-vscii-encode-table r0 r1) + (write-repeat r1)))) "CCL program to encode VSCII-1.") (define-ccl-program ccl-encode-vscii-font @@ -193,10 +127,7 @@ ;; In: R0:vietnamese-viscii-lower/vietnamese-viscii-upper ;; R1:position code ;; Out: R1:font code point - (if (r0 == ,(charset-id 'vietnamese-viscii-lower)) - (r1 = r1 ,(car viet-vscii-encode-table)) - (r1 = r1 ,(cdr viet-vscii-encode-table))) - ) + (translate-character viet-vscii-encode-table r0 r1)) "CCL program to encode Vietnamese chars to VSCII-1 font.") @@ -234,19 +165,16 @@ (define-coding-system-alias 'viqr 'vietnamese-viqr) (setq font-ccl-encoder-alist - (cons (cons "viscii" ccl-encode-viscii-font) font-ccl-encoder-alist)) + (cons '("viscii" . ccl-encode-viscii-font) font-ccl-encoder-alist)) (setq font-ccl-encoder-alist - (cons (cons "vscii" ccl-encode-vscii-font) font-ccl-encoder-alist)) - -(defvar viet-viscii-nonascii-translation-table - (make-translation-table-from-vector viet-viscii-decode-table) - "Value of `nonascii-translation-table' in Vietnamese language environment.") + (cons '("vscii" . ccl-encode-vscii-font) font-ccl-encoder-alist)) (set-language-info-alist "Vietnamese" `((charset vietnamese-viscii-lower vietnamese-viscii-upper) (nonascii-translation - . ,viet-viscii-nonascii-translation-table) + . ,(get 'viet-viscii-nonascii-translation-table + 'translation-table)) (coding-system vietnamese-viscii vietnamese-vscii vietnamese-viqr) (coding-priority vietnamese-viscii)