(update_frame_tool_bar): Use -1 as index
[bpt/emacs.git] / src / ccl.h
CommitLineData
4ed46869 1/* Header for CCL (Code Conversion Language) interpreter.
7976eda0 2 Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
7cdc02a6 3 2005, 2006, 2007
ce03bf76
KH
4 National Institute of Advanced Industrial Science and Technology (AIST)
5 Registration Number H14PRO021
4ed46869 6
369314dc
KH
7This file is part of GNU Emacs.
8
9GNU Emacs is free software; you can redistribute it and/or modify
10it under the terms of the GNU General Public License as published by
1427aa65 11the Free Software Foundation; either version 3, or (at your option)
369314dc 12any later version.
4ed46869 13
369314dc
KH
14GNU Emacs is distributed in the hope that it will be useful,
15but WITHOUT ANY WARRANTY; without even the implied warranty of
16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17GNU General Public License for more details.
4ed46869 18
369314dc
KH
19You should have received a copy of the GNU General Public License
20along with GNU Emacs; see the file COPYING. If not, write to
4fc5845f
LK
21the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
22Boston, MA 02110-1301, USA. */
4ed46869 23
265702b7
KH
24#ifndef EMACS_CCL_H
25#define EMACS_CCL_H
4ed46869 26
eacba247
KH
27/* Macros for exit status of CCL program. */
28#define CCL_STAT_SUCCESS 0 /* Terminated successfully. */
29#define CCL_STAT_SUSPEND_BY_SRC 1 /* Terminated by empty input. */
30#define CCL_STAT_SUSPEND_BY_DST 2 /* Terminated by output buffer full. */
31#define CCL_STAT_INVALID_CMD 3 /* Terminated because of invalid
32 command. */
33#define CCL_STAT_QUIT 4 /* Terminated because of quit. */
34
4ed46869
KH
35/* Structure to hold information about running CCL code. Read
36 comments in the file ccl.c for the detail of each field. */
37struct ccl_program {
7cf49add
KH
38 int idx; /* Index number of the CCL program.
39 -1 means that the program was given
40 by a vector, not by a program
41 name. */
4ed46869
KH
42 int size; /* Size of the compiled code. */
43 Lisp_Object *prog; /* Pointer into the compiled code. */
44 int ic; /* Instruction Counter (index for PROG). */
45 int eof_ic; /* Instruction Counter for end-of-file
46 processing code. */
47 int reg[8]; /* CCL registers, reg[7] is used for
48 condition flag of relational
49 operations. */
eacba247 50 int private_state; /* CCL instruction may use this
975ddbf5
KH
51 for private use, mainly for saving
52 internal states on suspending.
177c0ea7 53 This variable is set to 0 when ccl is
eacba247 54 set up. */
4ed46869
KH
55 int last_block; /* Set to 1 while processing the last
56 block. */
57 int status; /* Exit status of the CCL program. */
58 int buf_magnification; /* Output buffer magnification. How
59 many times bigger the output buffer
60 should be than the input buffer. */
e05645ee 61 int stack_idx; /* How deep the call of CCL_Call is nested. */
8538ed9a
KH
62 int eol_type; /* When the CCL program is used for
63 encoding by a coding system, set to
f455f068
KH
64 the eol_type of the coding system.
65 In other cases, always
66 CODING_EOL_LF. */
975ddbf5 67 int multibyte; /* 1 if the source text is multibyte. */
f455f068
KH
68 int cr_consumed; /* Flag for encoding DOS-like EOL
69 format when the CCL program is used
70 for encoding by a coding
71 system. */
64068fbf
KH
72 int suppress_error; /* If nonzero, don't insert error
73 message in the output. */
034060e4
KH
74 int eight_bit_control; /* If nonzero, ccl_driver counts all
75 eight-bit-control bytes written by
76 CCL_WRITE_CHAR. After execution,
77 if no such byte is written, set
78 this value to zero. */
4ed46869
KH
79};
80
81/* This data type is used for the spec field of the structure
82 coding_system. */
83
84struct ccl_spec {
85 struct ccl_program decoder;
86 struct ccl_program encoder;
a35fd731 87 unsigned char valid_codes[256];
8538ed9a 88 int cr_carryover; /* CR carryover flag. */
898f3312 89 unsigned char eight_bit_carryover[MAX_MULTIBYTE_LENGTH];
4ed46869
KH
90};
91
92/* Alist of fontname patterns vs corresponding CCL program. */
93extern Lisp_Object Vfont_ccl_encoder_alist;
94
58068210 95/* Setup fields of the structure pointed by CCL appropriately for the
e5e6d6fb
KH
96 execution of ccl program CCL_PROG (symbol or vector). */
97extern int setup_ccl_program P_ ((struct ccl_program *, Lisp_Object));
58068210 98
7cf49add
KH
99/* Check if CCL is updated or not. If not, re-setup members of CCL. */
100extern int check_ccl_update P_ ((struct ccl_program *));
101
58068210
AS
102extern int ccl_driver P_ ((struct ccl_program *, unsigned char *,
103 unsigned char *, int, int, int *));
104
1cfae2bf
KH
105/* Vector of CCL program names vs corresponding program data. */
106extern Lisp_Object Vccl_program_table;
107
108/* Symbols of ccl program have this property, a value of the property
109 is an index for Vccl_protram_table. */
110extern Lisp_Object Qccl_program_idx;
111
265702b7 112#endif /* EMACS_CCL_H */
ab5796a9
MB
113
114/* arch-tag: 14681df7-876d-43de-bc71-6b78e23a4e3c
115 (do not change this comment) */