changeset 88362:8ced48c5d267

(struct ccl_program): Members eol_type and multibyte 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.
author Kenichi Handa <handa@m17n.org>
date Fri, 01 Mar 2002 01:14:37 +0000
parents 1ce6f7577173
children 13b9026422e0
files src/ccl.h
diffstat 1 files changed, 21 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/src/ccl.h	Fri Mar 01 01:14:09 2002 +0000
+++ b/src/ccl.h	Fri Mar 01 01:14:37 2002 +0000
@@ -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 @@
 				   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 @@
    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 @@
    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 @@
    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 */