* pccl.el (define-long-ccl-program): New macro.
authorakr <akr>
Thu, 12 Nov 1998 13:09:28 +0000 (13:09 +0000)
committerakr <akr>
Thu, 12 Nov 1998 13:09:28 +0000 (13:09 +0000)
pccl.el

diff --git a/pccl.el b/pccl.el
index 30e4356..0107a84 100644 (file)
--- a/pccl.el
+++ b/pccl.el
@@ -24,6 +24,7 @@
 
 ;;; Code:
 
+(require 'ccl)
 (require 'broken)
 
 (if (featurep 'mule)
            (>= emacs-major-version 21)
          t)))
 
+(defmacro define-long-ccl-program (name ccl-program &optional doc)
+  "Define CCL program as define-ccl-program."
+  (setq ccl-program (eval ccl-program))
+  (let ((try-ccl-compile t))
+    (while try-ccl-compile
+      (setq try-ccl-compile nil)
+      (condition-case sig
+         (ccl-compile ccl-program)
+       (args-out-of-range
+        (if (and (eq (car (cdr sig)) ccl-program-vector)
+                 (= (car (cdr (cdr sig))) (length ccl-program-vector)))
+            (setq ccl-program-vector
+                  (make-vector (* 2 (length ccl-program-vector)) 0)
+                  try-ccl-compile t)
+          (signal (car sig) (cdr sig))))))
+    (` (define-ccl-program (, name) '(, ccl-program) (, doc)))))
+
 
 ;;; @ end
 ;;;