summaryrefslogtreecommitdiff
path: root/src/ccl.h
diff options
context:
space:
mode:
authorKenichi Handa <handa@m17n.org>2002-03-01 01:14:37 +0000
committerKenichi Handa <handa@m17n.org>2002-03-01 01:14:37 +0000
commitfd27be69e9c6f6b25cb55a16547768369c405b02 (patch)
treef36e538a8888879f8f3060eb9cc8b5f649861fbc /src/ccl.h
parent235144896607b010a9b1b7449d596389aeca90c2 (diff)
downloademacs-fd27be69e9c6f6b25cb55a16547768369c405b02.tar.gz
(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.
Diffstat (limited to 'src/ccl.h')
-rw-r--r--src/ccl.h32
1 files changed, 21 insertions, 11 deletions
diff --git a/src/ccl.h b/src/ccl.h
index ed89bf5e6d8..e8505378844 100644
--- 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 */