]> code.delx.au - gnu-emacs/blobdiff - src/ccl.h
Merge from emacs--devo--0
[gnu-emacs] / src / ccl.h
index 5c1f90eeec8bfa0d79e02d8e26876135a7512abe..3afb135fb56f37a36d22c0a249a8dbd8329fb964 100644 (file)
--- a/src/ccl.h
+++ b/src/ccl.h
@@ -3,6 +3,9 @@
      2005, 2006, 2007, 2008
      National Institute of Advanced Industrial Science and Technology (AIST)
      Registration Number H14PRO021
+   Copyright (C) 2003
+     National Institute of Advanced Industrial Science and Technology (AIST)
+     Registration Number H13PRO009
 
 This file is part of GNU Emacs.
 
@@ -59,16 +62,14 @@ struct ccl_program {
                                   many times bigger the output buffer
                                   should be than the input buffer.  */
   int stack_idx;               /* How deep the call of CCL_Call is nested.  */
-  int eol_type;                        /* When the CCL program is used for
-                                  encoding by a coding system, set to
-                                  the eol_type of the coding system.
-                                  In other cases, always
-                                  CODING_EOL_LF.  */
-  int multibyte;               /* 1 if the source text is multibyte.  */
+  int src_multibyte;           /* 1 if the input buffer is multibyte.  */
+  int dst_multibyte;           /* 1 if the output buffer is multibyte.  */
   int cr_consumed;             /* Flag for encoding DOS-like EOL
                                   format when the CCL program is used
                                   for encoding by a coding
                                   system.  */
+  int consumed;
+  int produced;
   int suppress_error;          /* If nonzero, don't insert error
                                   message in the output.  */
   int eight_bit_control;       /* If nonzero, ccl_driver counts all
@@ -82,13 +83,13 @@ struct ccl_program {
    coding_system.  */
 
 struct ccl_spec {
-  struct ccl_program decoder;
-  struct ccl_program encoder;
-  unsigned char valid_codes[256];
+  struct ccl_program ccl;
   int cr_carryover;            /* CR carryover flag.  */
   unsigned char eight_bit_carryover[MAX_MULTIBYTE_LENGTH];
 };
 
+#define CODING_SPEC_CCL_PROGRAM(coding) ((coding)->spec.ccl.ccl)
+
 /* Alist of fontname patterns vs corresponding CCL program.  */
 extern Lisp_Object Vfont_ccl_encoder_alist;
 
@@ -99,8 +100,8 @@ extern int setup_ccl_program P_ ((struct ccl_program *, Lisp_Object));
 /* Check if CCL is updated or not.  If not, re-setup members of CCL.  */
 extern int check_ccl_update P_ ((struct ccl_program *));
 
-extern int ccl_driver P_ ((struct ccl_program *, unsigned char *,
-                          unsigned char *, int, int, int *));
+extern void ccl_driver P_ ((struct ccl_program *, int *, int *, int, int,
+                           Lisp_Object));
 
 /* Vector of CCL program names vs corresponding program data.  */
 extern Lisp_Object Vccl_program_table;
@@ -109,6 +110,16 @@ extern Lisp_Object Vccl_program_table;
    is an index for Vccl_protram_table. */
 extern Lisp_Object Qccl_program_idx;
 
+extern Lisp_Object Qccl, Qcclp;
+
+EXFUN (Fccl_program_p, 1);
+
+#define CHECK_CCL_PROGRAM(x)                   \
+  do {                                         \
+    if (NILP (Fccl_program_p (x)))             \
+      x = wrong_type_argument (Qcclp, (x));    \
+  } while (0);
+
 #endif /* EMACS_CCL_H */
 
 /* arch-tag: 14681df7-876d-43de-bc71-6b78e23a4e3c