10c759d545c25799d27dbd107a0b14e98ae6340d
[chise/xemacs-chise.git.1] / src / mule-ccl.h
1 /* Header for CCL (Code Conversion Language) interpreter.
2    Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
3    Licensed to the Free Software Foundation.
4
5 This file is part of XEmacs.
6
7 GNU Emacs is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2, or (at your option)
10 any later version.
11
12 GNU Emacs is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with GNU Emacs; see the file COPYING.  If not, write to
19 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
20 Boston, MA 02111-1307, USA.  */
21
22 /* Synched up with: FSF Emacs 20.2 */
23
24 #ifndef _CCL_H
25 #define _CCL_H
26
27 /* Structure to hold information about running CCL code.  Read
28    comments in the file ccl.c for the detail of each field.  */
29 struct ccl_program {
30   int size;                     /* Size of the compiled code.  */
31   Lisp_Object *prog;            /* Pointer into the compiled code.  */
32   int ic;                       /* Instruction Counter (index for PROG).  */
33   int eof_ic;                   /* Instruction Counter for end-of-file
34                                    processing code.  */
35   int reg[8];                   /* CCL registers, reg[7] is used for
36                                    condition flag of relational
37                                    operations.  */
38   int last_block;               /* Set to 1 while processing the last
39                                    block. */
40   int status;                   /* Exit status of the CCL program.  */
41   int buf_magnification;        /* Output buffer magnification.  How
42                                    many times bigger the output buffer
43                                    should be than the input buffer.  */
44 };
45
46 int ccl_driver (struct ccl_program *ccl, CONST unsigned char *source,
47                 unsigned_char_dynarr *destination, int src_bytes, int *consumed);
48 void setup_ccl_program (struct ccl_program *ccl, Lisp_Object val);
49
50 /* Alist of fontname patterns vs corresponding CCL program.  */
51 extern Lisp_Object Vfont_ccl_encoder_alist;
52
53 #endif /* _CCL_H */