annotate src/ccl.h @ 99492:ee792794d888

(isearch-search-fun): Compare the length of the current search string with the length of the string from the previous search state to detect the situation when the user adds or removes characters in the search string. Use word-search-forward-lax and word-search-backward-lax in this case, and otherwise word-search-forward and word-search-backward.
author Juri Linkov <juri@jurta.org>
date Tue, 11 Nov 2008 19:43:09 +0000
parents 29adfc9354e7
children e038c1a8307c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
1 /* Header for CCL (Code Conversion Language) interpreter.
74605
6ee41fdd69ff Update AIST copyright years.
Kenichi Handa <handa@m17n.org>
parents: 67658
diff changeset
2 Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
79759
fc2bcd2a8aad Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78313
diff changeset
3 2005, 2006, 2007, 2008
67658
547f2b420666 Copyright fixed
Kenichi Handa <handa@m17n.org>
parents: 64084
diff changeset
4 National Institute of Advanced Industrial Science and Technology (AIST)
547f2b420666 Copyright fixed
Kenichi Handa <handa@m17n.org>
parents: 64084
diff changeset
5 Registration Number H14PRO021
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89371
diff changeset
6 Copyright (C) 2003
88362
8ced48c5d267 (struct ccl_program): Members eol_type and multibyte
Kenichi Handa <handa@m17n.org>
parents: 36412
diff changeset
7 National Institute of Advanced Industrial Science and Technology (AIST)
8ced48c5d267 (struct ccl_program): Members eol_type and multibyte
Kenichi Handa <handa@m17n.org>
parents: 36412
diff changeset
8 Registration Number H13PRO009
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
9
17071
70194012fb3a Fix FSF address in comment.
Karl Heuer <kwzh@gnu.org>
parents: 17052
diff changeset
10 This file is part of GNU Emacs.
70194012fb3a Fix FSF address in comment.
Karl Heuer <kwzh@gnu.org>
parents: 17052
diff changeset
11
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93759
diff changeset
12 GNU Emacs is free software: you can redistribute it and/or modify
17071
70194012fb3a Fix FSF address in comment.
Karl Heuer <kwzh@gnu.org>
parents: 17052
diff changeset
13 it under the terms of the GNU General Public License as published by
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93759
diff changeset
14 the Free Software Foundation, either version 3 of the License, or
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93759
diff changeset
15 (at your option) any later version.
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
16
17071
70194012fb3a Fix FSF address in comment.
Karl Heuer <kwzh@gnu.org>
parents: 17052
diff changeset
17 GNU Emacs is distributed in the hope that it will be useful,
70194012fb3a Fix FSF address in comment.
Karl Heuer <kwzh@gnu.org>
parents: 17052
diff changeset
18 but WITHOUT ANY WARRANTY; without even the implied warranty of
70194012fb3a Fix FSF address in comment.
Karl Heuer <kwzh@gnu.org>
parents: 17052
diff changeset
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
70194012fb3a Fix FSF address in comment.
Karl Heuer <kwzh@gnu.org>
parents: 17052
diff changeset
20 GNU General Public License for more details.
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
21
17071
70194012fb3a Fix FSF address in comment.
Karl Heuer <kwzh@gnu.org>
parents: 17052
diff changeset
22 You should have received a copy of the GNU General Public License
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93759
diff changeset
23 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 93759
diff changeset
24
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
25
29569
2d148b8db59b (EMACS_CCL_H): Renamed from _CCL_H.
Kenichi Handa <handa@m17n.org>
parents: 25065
diff changeset
26 #ifndef EMACS_CCL_H
2d148b8db59b (EMACS_CCL_H): Renamed from _CCL_H.
Kenichi Handa <handa@m17n.org>
parents: 25065
diff changeset
27 #define EMACS_CCL_H
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
28
20721
b5b97880b7d0 Definition of macros CCL_STAT_XXX are moved from ccl.c to here.
Kenichi Handa <handa@m17n.org>
parents: 20306
diff changeset
29 /* Macros for exit status of CCL program. */
b5b97880b7d0 Definition of macros CCL_STAT_XXX are moved from ccl.c to here.
Kenichi Handa <handa@m17n.org>
parents: 20306
diff changeset
30 #define CCL_STAT_SUCCESS 0 /* Terminated successfully. */
b5b97880b7d0 Definition of macros CCL_STAT_XXX are moved from ccl.c to here.
Kenichi Handa <handa@m17n.org>
parents: 20306
diff changeset
31 #define CCL_STAT_SUSPEND_BY_SRC 1 /* Terminated by empty input. */
b5b97880b7d0 Definition of macros CCL_STAT_XXX are moved from ccl.c to here.
Kenichi Handa <handa@m17n.org>
parents: 20306
diff changeset
32 #define CCL_STAT_SUSPEND_BY_DST 2 /* Terminated by output buffer full. */
b5b97880b7d0 Definition of macros CCL_STAT_XXX are moved from ccl.c to here.
Kenichi Handa <handa@m17n.org>
parents: 20306
diff changeset
33 #define CCL_STAT_INVALID_CMD 3 /* Terminated because of invalid
b5b97880b7d0 Definition of macros CCL_STAT_XXX are moved from ccl.c to here.
Kenichi Handa <handa@m17n.org>
parents: 20306
diff changeset
34 command. */
b5b97880b7d0 Definition of macros CCL_STAT_XXX are moved from ccl.c to here.
Kenichi Handa <handa@m17n.org>
parents: 20306
diff changeset
35 #define CCL_STAT_QUIT 4 /* Terminated because of quit. */
b5b97880b7d0 Definition of macros CCL_STAT_XXX are moved from ccl.c to here.
Kenichi Handa <handa@m17n.org>
parents: 20306
diff changeset
36
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
37 /* Structure to hold information about running CCL code. Read
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
38 comments in the file ccl.c for the detail of each field. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
39 struct ccl_program {
62800
47eb71e6fd77 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
40 int idx; /* Index number of the CCL program.
47eb71e6fd77 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
41 -1 means that the program was given
47eb71e6fd77 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
42 by a vector, not by a program
47eb71e6fd77 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
43 name. */
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
44 int size; /* Size of the compiled code. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
45 Lisp_Object *prog; /* Pointer into the compiled code. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
46 int ic; /* Instruction Counter (index for PROG). */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
47 int eof_ic; /* Instruction Counter for end-of-file
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
48 processing code. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
49 int reg[8]; /* CCL registers, reg[7] is used for
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
50 condition flag of relational
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
51 operations. */
20721
b5b97880b7d0 Definition of macros CCL_STAT_XXX are moved from ccl.c to here.
Kenichi Handa <handa@m17n.org>
parents: 20306
diff changeset
52 int private_state; /* CCL instruction may use this
30755
c9a72e24976c (struct ccl_program): New member multibyte.
Kenichi Handa <handa@m17n.org>
parents: 29723
diff changeset
53 for private use, mainly for saving
c9a72e24976c (struct ccl_program): New member multibyte.
Kenichi Handa <handa@m17n.org>
parents: 29723
diff changeset
54 internal states on suspending.
49600
23a1cea22d13 Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 36412
diff changeset
55 This variable is set to 0 when ccl is
20721
b5b97880b7d0 Definition of macros CCL_STAT_XXX are moved from ccl.c to here.
Kenichi Handa <handa@m17n.org>
parents: 20306
diff changeset
56 set up. */
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
57 int last_block; /* Set to 1 while processing the last
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
58 block. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
59 int status; /* Exit status of the CCL program. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
60 int buf_magnification; /* Output buffer magnification. How
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
61 many times bigger the output buffer
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
62 should be than the input buffer. */
24689
46d2dc61ec31 (struct ccl_program): New member stack_idx.
Kenichi Handa <handa@m17n.org>
parents: 22875
diff changeset
63 int stack_idx; /* How deep the call of CCL_Call is nested. */
88362
8ced48c5d267 (struct ccl_program): Members eol_type and multibyte
Kenichi Handa <handa@m17n.org>
parents: 36412
diff changeset
64 int src_multibyte; /* 1 if the input buffer is multibyte. */
8ced48c5d267 (struct ccl_program): Members eol_type and multibyte
Kenichi Handa <handa@m17n.org>
parents: 36412
diff changeset
65 int dst_multibyte; /* 1 if the output buffer is multibyte. */
34817
41f50ad22d7a (struct ccl_program): New member cr_consumed.
Kenichi Handa <handa@m17n.org>
parents: 30755
diff changeset
66 int cr_consumed; /* Flag for encoding DOS-like EOL
41f50ad22d7a (struct ccl_program): New member cr_consumed.
Kenichi Handa <handa@m17n.org>
parents: 30755
diff changeset
67 format when the CCL program is used
41f50ad22d7a (struct ccl_program): New member cr_consumed.
Kenichi Handa <handa@m17n.org>
parents: 30755
diff changeset
68 for encoding by a coding
29723
9d85d8264c59 (struct ccl_program): New member eol_type.
Kenichi Handa <handa@m17n.org>
parents: 29569
diff changeset
69 system. */
88362
8ced48c5d267 (struct ccl_program): Members eol_type and multibyte
Kenichi Handa <handa@m17n.org>
parents: 36412
diff changeset
70 int consumed;
8ced48c5d267 (struct ccl_program): Members eol_type and multibyte
Kenichi Handa <handa@m17n.org>
parents: 36412
diff changeset
71 int produced;
35528
4ca44cbfa530 (sturct ccl_program): New member suppress_error.
Kenichi Handa <handa@m17n.org>
parents: 34891
diff changeset
72 int suppress_error; /* If nonzero, don't insert error
4ca44cbfa530 (sturct ccl_program): New member suppress_error.
Kenichi Handa <handa@m17n.org>
parents: 34891
diff changeset
73 message in the output. */
51328
2466e5a90751 (struct ccl_program) <eight_bit_control: Comment fixed.
Kenichi Handa <handa@m17n.org>
parents: 49600
diff changeset
74 int eight_bit_control; /* If nonzero, ccl_driver counts all
2466e5a90751 (struct ccl_program) <eight_bit_control: Comment fixed.
Kenichi Handa <handa@m17n.org>
parents: 49600
diff changeset
75 eight-bit-control bytes written by
2466e5a90751 (struct ccl_program) <eight_bit_control: Comment fixed.
Kenichi Handa <handa@m17n.org>
parents: 49600
diff changeset
76 CCL_WRITE_CHAR. After execution,
2466e5a90751 (struct ccl_program) <eight_bit_control: Comment fixed.
Kenichi Handa <handa@m17n.org>
parents: 49600
diff changeset
77 if no such byte is written, set
2466e5a90751 (struct ccl_program) <eight_bit_control: Comment fixed.
Kenichi Handa <handa@m17n.org>
parents: 49600
diff changeset
78 this value to zero. */
80310
27c07affc710 (struct ccl_program): New member quit_silently.
Kenichi Handa <handa@m17n.org>
parents: 79759
diff changeset
79 int quit_silently; /* If nonzero, don't append "CCL:
27c07affc710 (struct ccl_program): New member quit_silently.
Kenichi Handa <handa@m17n.org>
parents: 79759
diff changeset
80 Quitted" to the generated text when
27c07affc710 (struct ccl_program): New member quit_silently.
Kenichi Handa <handa@m17n.org>
parents: 79759
diff changeset
81 CCL program is quitted. */
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
82 };
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
83
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
84 /* This data type is used for the spec field of the structure
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
85 coding_system. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
86
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
87 struct ccl_spec {
88362
8ced48c5d267 (struct ccl_program): Members eol_type and multibyte
Kenichi Handa <handa@m17n.org>
parents: 36412
diff changeset
88 struct ccl_program ccl;
29723
9d85d8264c59 (struct ccl_program): New member eol_type.
Kenichi Handa <handa@m17n.org>
parents: 29569
diff changeset
89 int cr_carryover; /* CR carryover flag. */
34891
b9b14e62fe38 (struct ccl_spec): New member eight_bit_carryover.
Kenichi Handa <handa@m17n.org>
parents: 34817
diff changeset
90 unsigned char eight_bit_carryover[MAX_MULTIBYTE_LENGTH];
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
91 };
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
92
88362
8ced48c5d267 (struct ccl_program): Members eol_type and multibyte
Kenichi Handa <handa@m17n.org>
parents: 36412
diff changeset
93 #define CODING_SPEC_CCL_PROGRAM(coding) ((coding)->spec.ccl.ccl)
8ced48c5d267 (struct ccl_program): Members eol_type and multibyte
Kenichi Handa <handa@m17n.org>
parents: 36412
diff changeset
94
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
95 /* Alist of fontname patterns vs corresponding CCL program. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
96 extern Lisp_Object Vfont_ccl_encoder_alist;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
97
20306
275d6855275a Add declaration of setup_ccl_program and ccl_driver.
Andreas Schwab <schwab@suse.de>
parents: 18341
diff changeset
98 /* Setup fields of the structure pointed by CCL appropriately for the
25065
6f92f7a071c9 (setup_ccl_program): The type is changed to `int'.
Kenichi Handa <handa@m17n.org>
parents: 24689
diff changeset
99 execution of ccl program CCL_PROG (symbol or vector). */
6f92f7a071c9 (setup_ccl_program): The type is changed to `int'.
Kenichi Handa <handa@m17n.org>
parents: 24689
diff changeset
100 extern int setup_ccl_program P_ ((struct ccl_program *, Lisp_Object));
20306
275d6855275a Add declaration of setup_ccl_program and ccl_driver.
Andreas Schwab <schwab@suse.de>
parents: 18341
diff changeset
101
62800
47eb71e6fd77 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
102 /* Check if CCL is updated or not. If not, re-setup members of CCL. */
47eb71e6fd77 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
103 extern int check_ccl_update P_ ((struct ccl_program *));
47eb71e6fd77 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 52401
diff changeset
104
89371
0c4fd9081174 (ccl_driver): Prototype adjusted.
Kenichi Handa <handa@m17n.org>
parents: 88362
diff changeset
105 extern void ccl_driver P_ ((struct ccl_program *, int *, int *, int, int,
0c4fd9081174 (ccl_driver): Prototype adjusted.
Kenichi Handa <handa@m17n.org>
parents: 88362
diff changeset
106 Lisp_Object));
20306
275d6855275a Add declaration of setup_ccl_program and ccl_driver.
Andreas Schwab <schwab@suse.de>
parents: 18341
diff changeset
107
21550
dddb0d1318aa (Vccl_program_table, Qccl_program_idx): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 20721
diff changeset
108 /* Vector of CCL program names vs corresponding program data. */
dddb0d1318aa (Vccl_program_table, Qccl_program_idx): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 20721
diff changeset
109 extern Lisp_Object Vccl_program_table;
dddb0d1318aa (Vccl_program_table, Qccl_program_idx): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 20721
diff changeset
110
dddb0d1318aa (Vccl_program_table, Qccl_program_idx): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 20721
diff changeset
111 /* Symbols of ccl program have this property, a value of the property
dddb0d1318aa (Vccl_program_table, Qccl_program_idx): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 20721
diff changeset
112 is an index for Vccl_protram_table. */
dddb0d1318aa (Vccl_program_table, Qccl_program_idx): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 20721
diff changeset
113 extern Lisp_Object Qccl_program_idx;
dddb0d1318aa (Vccl_program_table, Qccl_program_idx): Extern them.
Kenichi Handa <handa@m17n.org>
parents: 20721
diff changeset
114
88362
8ced48c5d267 (struct ccl_program): Members eol_type and multibyte
Kenichi Handa <handa@m17n.org>
parents: 36412
diff changeset
115 extern Lisp_Object Qccl, Qcclp;
8ced48c5d267 (struct ccl_program): Members eol_type and multibyte
Kenichi Handa <handa@m17n.org>
parents: 36412
diff changeset
116
8ced48c5d267 (struct ccl_program): Members eol_type and multibyte
Kenichi Handa <handa@m17n.org>
parents: 36412
diff changeset
117 EXFUN (Fccl_program_p, 1);
8ced48c5d267 (struct ccl_program): Members eol_type and multibyte
Kenichi Handa <handa@m17n.org>
parents: 36412
diff changeset
118
8ced48c5d267 (struct ccl_program): Members eol_type and multibyte
Kenichi Handa <handa@m17n.org>
parents: 36412
diff changeset
119 #define CHECK_CCL_PROGRAM(x) \
8ced48c5d267 (struct ccl_program): Members eol_type and multibyte
Kenichi Handa <handa@m17n.org>
parents: 36412
diff changeset
120 do { \
8ced48c5d267 (struct ccl_program): Members eol_type and multibyte
Kenichi Handa <handa@m17n.org>
parents: 36412
diff changeset
121 if (NILP (Fccl_program_p (x))) \
91813
ca1e1298a3d8 (smerge-auto-combine-max-separation): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91327
diff changeset
122 wrong_type_argument (Qcclp, (x)); \
88362
8ced48c5d267 (struct ccl_program): Members eol_type and multibyte
Kenichi Handa <handa@m17n.org>
parents: 36412
diff changeset
123 } while (0);
8ced48c5d267 (struct ccl_program): Members eol_type and multibyte
Kenichi Handa <handa@m17n.org>
parents: 36412
diff changeset
124
29569
2d148b8db59b (EMACS_CCL_H): Renamed from _CCL_H.
Kenichi Handa <handa@m17n.org>
parents: 25065
diff changeset
125 #endif /* EMACS_CCL_H */
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51328
diff changeset
126
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51328
diff changeset
127 /* arch-tag: 14681df7-876d-43de-bc71-6b78e23a4e3c
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51328
diff changeset
128 (do not change this comment) */