* ew-bq.el (ew-ccl-encode-uq): Change BUFFER_MAGNIFICATION to 3.
[elisp/flim.git] / ew-bq.el
index 945603a..ae6cd42 100644 (file)
--- a/ew-bq.el
+++ b/ew-bq.el
   (append "!*+-/0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz" ()))
 
 (defconst ew-ccl-256-to-64-table
-  '(nil  nil  nil  nil  nil  nil  nil  nil
-    nil  nil  nil  nil  nil  nil  nil  nil
-    nil  nil  nil  nil  nil  nil  nil  nil
-    nil  nil  nil  nil  nil  nil  nil  nil
-    nil  nil  nil  nil  nil  nil  nil  nil
-    nil  nil  nil   62  nil  nil  nil   63
-     52   53   54   55   56   57   58   59
-     60   61  nil  nil  nil    t  nil  nil
-    nil    0    1    2    3    4    5    6
-      7    8    9   10   11   12   13   14
-     15   16   17   18   19   20   21   22
-     23   24   25  nil  nil  nil  nil  nil
-    nil   26   27   28   29   30   31   32
-     33   34   35   36   37   38   39   40
-     41   42   43   44   45   46   47   48
-     49   50   51  nil  nil  nil  nil  nil
-    nil  nil  nil  nil  nil  nil  nil  nil
-    nil  nil  nil  nil  nil  nil  nil  nil
-    nil  nil  nil  nil  nil  nil  nil  nil
-    nil  nil  nil  nil  nil  nil  nil  nil
-    nil  nil  nil  nil  nil  nil  nil  nil
-    nil  nil  nil  nil  nil  nil  nil  nil
-    nil  nil  nil  nil  nil  nil  nil  nil
-    nil  nil  nil  nil  nil  nil  nil  nil
-    nil  nil  nil  nil  nil  nil  nil  nil
-    nil  nil  nil  nil  nil  nil  nil  nil
-    nil  nil  nil  nil  nil  nil  nil  nil
-    nil  nil  nil  nil  nil  nil  nil  nil
-    nil  nil  nil  nil  nil  nil  nil  nil
-    nil  nil  nil  nil  nil  nil  nil  nil
-    nil  nil  nil  nil  nil  nil  nil  nil
-    nil  nil  nil  nil  nil  nil  nil  nil))
+  '(nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
+    nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
+    nil nil nil nil nil nil nil nil nil nil nil  62 nil nil nil  63
+     52  53  54  55  56  57  58  59  60  61 nil nil nil   t nil nil
+    nil   0   1   2   3   4   5   6   7   8   9  10  11  12  13  14
+     15  16  17  18  19  20  21  22  23  24  25 nil nil nil nil nil
+    nil  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40
+     41  42  43  44  45  46  47  48  49  50  51 nil nil nil nil nil
+    nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
+    nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
+    nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
+    nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
+    nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
+    nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
+    nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil
+    nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil nil))
 
 (defconst ew-ccl-64-to-256-table
   '(?A ?B ?C ?D ?E ?F ?G ?H ?I ?J ?K ?L ?M ?N ?O ?P
 
 (define-ccl-program ew-ccl-encode-uq
   (eval-when-compile
-    `(1
+    `(3
       (loop
        (loop
        (read-branch
 
 (define-ccl-program ew-ccl-encode-cq
   (eval-when-compile
-    `(1
+    `(3
       (loop
        (loop
        (read-branch
 
 (define-ccl-program ew-ccl-encode-pq
   (eval-when-compile
-    `(1
+    `(3
       (loop
        (loop
        (read-branch
 
 ;;;
 
-(make-coding-system 'ew-ccl-uq 4 ?Q "Q-encoding in unstructured field"
+;; ew-ccl-encode-base64 does not works on 20.2 by same reason of ew-ccl-encode-b
+(define-ccl-program ew-ccl-encode-base64
+  (eval-when-compile
+    `(2
+      ((r3 = 0)
+       (loop
+       (r2 = 0)
+       (read-branch
+        r1
+        ,@(mapcar
+           (lambda (r1)
+             `((write ,(nth (lsh r1 -2) ew-ccl-64-to-256-table))
+               (r0 = ,(logand r1 3))))
+           ew-ccl-256-table))
+       (r2 = 1)
+       (read-branch
+        r1
+        ,@(mapcar
+           (lambda (r1)
+             `((write r0 ,(vconcat
+                           (mapcar
+                            (lambda (r0)
+                              (nth (logior (lsh r0 4)
+                                           (lsh r1 -4))
+                                   ew-ccl-64-to-256-table))
+                            ew-ccl-4-table)))
+               (r0 = ,(logand r1 15))))
+           ew-ccl-256-table))
+       (r2 = 2)
+       (read-branch
+        r1
+        ,@(mapcar
+           (lambda (r1)
+             `((write r0 ,(vconcat
+                           (mapcar
+                            (lambda (r0)
+                              (nth (logior (lsh r0 2)
+                                           (lsh r1 -6))
+                                   ew-ccl-64-to-256-table))
+                            ew-ccl-16-table)))))
+           ew-ccl-256-table))
+       (r1 &= 63)
+       (write r1 ,(vconcat
+                   (mapcar
+                    (lambda (r1)
+                      (nth r1 ew-ccl-64-to-256-table))
+                    ew-ccl-64-table)))
+       (r3 += 1)
+       (if (r3 == 19) ; 4 * 19 = 76 --> line break.
+           ((write "\r\n")
+            (r3 = 0)))
+       (repeat)))
+      (branch
+       r2
+       (if (r0 > 0) (write "\r\n"))
+       ((write r0 ,(vconcat
+                   (mapcar
+                    (lambda (r0)
+                      (nth (lsh r0 4) ew-ccl-64-to-256-table))
+                    ew-ccl-4-table)))
+       (write "==\r\n"))
+       ((write r0 ,(vconcat
+                   (mapcar
+                    (lambda (r0)
+                      (nth (lsh r0 2) ew-ccl-64-to-256-table))
+                    ew-ccl-16-table)))
+       (write "=\r\n")))
+      )))
+
+;;;
+
+(make-coding-system 'ew-ccl-uq 4 ?Q "MIME Q-encoding in unstructured field"
                    (cons ew-ccl-decode-q ew-ccl-encode-uq))
 
-(make-coding-system 'ew-ccl-cq 4 ?Q "Q-encoding in comment"
+(make-coding-system 'ew-ccl-cq 4 ?Q "MIME Q-encoding in comment"
                    (cons ew-ccl-decode-q ew-ccl-encode-cq))
 
-(make-coding-system 'ew-ccl-pq 4 ?Q "Q-encoding in phrase"
+(make-coding-system 'ew-ccl-pq 4 ?Q "MIME Q-encoding in phrase"
                    (cons ew-ccl-decode-q ew-ccl-encode-pq))
 
-(make-coding-system 'ew-ccl-b 4 ?B "B-encoding"
+(make-coding-system 'ew-ccl-b 4 ?B "MIME B-encoding"
                    (cons ew-ccl-decode-b ew-ccl-encode-b))
 
+(make-coding-system 'ew-ccl-base64 4 ?B "MIME Base64-encoding"
+                   (cons ew-ccl-decode-b ew-ccl-encode-base64))
+
 ;;;
 
 (eval-and-compile