Mercurial > emacs
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 */