]> git.eshelyaron.com Git - emacs.git/commitdiff
(struct ccl_program): Members eol_type and multibyte
authorKenichi Handa <handa@m17n.org>
Fri, 1 Mar 2002 01:14:37 +0000 (01:14 +0000)
committerKenichi Handa <handa@m17n.org>
Fri, 1 Mar 2002 01:14:37 +0000 (01:14 +0000)
deleted.  New members src_multibyte, dst_multibyte, consumed, and
produced.
(struct ccl_spec): Members decoder and encoder deleted.  New
memeber ccl.
(CODING_SPEC_CCL_PROGRAM): New macro.
(ccl_driver): Prototype updated.
(Qccl, Qcclp, Fccl_program_p): Extern them.
(CHECK_CCL_PROGRAM): New macro.

src/ccl.h

index ed89bf5e6d87d81cad3c26d59e91d0514d32b386..e85053788449456be4c59500222bfa5aa0759c3b 100644 (file)
--- a/src/ccl.h
+++ b/src/ccl.h
@@ -1,6 +1,9 @@
 /* Header for CCL (Code Conversion Language) interpreter.
    Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
    Licensed to the Free Software Foundation.
+   Copyright (C) 2001, 2002
+     National Institute of Advanced Industrial Science and Technology (AIST)
+     Registration Number H13PRO009
 
 This file is part of GNU Emacs.
 
@@ -53,16 +56,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;       /* Set to nonzero if CCL_WRITE_CHAR
@@ -73,13 +74,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;
 
@@ -87,8 +88,7 @@ extern Lisp_Object Vfont_ccl_encoder_alist;
    execution of ccl program CCL_PROG (symbol or vector).  */
 extern int setup_ccl_program P_ ((struct ccl_program *, Lisp_Object));
 
-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));
 
 /* Vector of CCL program names vs corresponding program data.  */
 extern Lisp_Object Vccl_program_table;
@@ -97,4 +97,14 @@ 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 */