annotate src/coding.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 7223da1c87c2
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 coding system handler.
75227
e90d04cd455a Update copyright for years from Emacs 21 to present (mainly adding
Glenn Morris <rgm@gnu.org>
parents: 74605
diff changeset
2 Copyright (C) 2001, 2002, 2003, 2004, 2005,
79759
fc2bcd2a8aad Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78501
diff changeset
3 2006, 2007, 2008 Free Software Foundation, Inc.
74605
6ee41fdd69ff Update AIST copyright years.
Kenichi Handa <handa@m17n.org>
parents: 70783
diff changeset
4 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: 78501
diff changeset
5 2005, 2006, 2007, 2008
67658
547f2b420666 Copyright fixed
Kenichi Handa <handa@m17n.org>
parents: 66463
diff changeset
6 National Institute of Advanced Industrial Science and Technology (AIST)
547f2b420666 Copyright fixed
Kenichi Handa <handa@m17n.org>
parents: 66463
diff changeset
7 Registration Number H14PRO021
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89441
diff changeset
8 Copyright (C) 2003
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
9 National Institute of Advanced Industrial Science and Technology (AIST)
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
10 Registration Number H13PRO009
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
11
17071
70194012fb3a Fix FSF address in comment.
Karl Heuer <kwzh@gnu.org>
parents: 17052
diff changeset
12 This file is part of GNU Emacs.
70194012fb3a Fix FSF address in comment.
Karl Heuer <kwzh@gnu.org>
parents: 17052
diff changeset
13
94994
29adfc9354e7 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 91825
diff changeset
14 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
15 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: 91825
diff changeset
16 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: 91825
diff changeset
17 (at your option) any later version.
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
18
17071
70194012fb3a Fix FSF address in comment.
Karl Heuer <kwzh@gnu.org>
parents: 17052
diff changeset
19 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
20 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
21 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
70194012fb3a Fix FSF address in comment.
Karl Heuer <kwzh@gnu.org>
parents: 17052
diff changeset
22 GNU General Public License for more details.
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
23
17071
70194012fb3a Fix FSF address in comment.
Karl Heuer <kwzh@gnu.org>
parents: 17052
diff changeset
24 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: 91825
diff changeset
25 along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
26
29571
951ead33c624 (EMASC_CODING_H): Renamed from _CODING_H.
Kenichi Handa <handa@m17n.org>
parents: 29438
diff changeset
27 #ifndef EMACS_CODING_H
951ead33c624 (EMASC_CODING_H): Renamed from _CODING_H.
Kenichi Handa <handa@m17n.org>
parents: 29438
diff changeset
28 #define EMACS_CODING_H
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
29
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
30 /* Index to arguments of Fdefine_coding_system_internal. */
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
31
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
32 enum define_coding_system_arg_index
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
33 {
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
34 coding_arg_name,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
35 coding_arg_mnemonic,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
36 coding_arg_coding_type,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
37 coding_arg_charset_list,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
38 coding_arg_ascii_compatible_p,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
39 coding_arg_decode_translation_table,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
40 coding_arg_encode_translation_table,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
41 coding_arg_post_read_conversion,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
42 coding_arg_pre_write_conversion,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
43 coding_arg_default_char,
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89441
diff changeset
44 coding_arg_for_unibyte,
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
45 coding_arg_plist,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
46 coding_arg_eol_type,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
47 coding_arg_max
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
48 };
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
49
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
50 enum define_coding_iso2022_arg_index
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
51 {
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
52 coding_arg_iso2022_initial = coding_arg_max,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
53 coding_arg_iso2022_reg_usage,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
54 coding_arg_iso2022_request,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
55 coding_arg_iso2022_flags,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
56 coding_arg_iso2022_max
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
57 };
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
58
95396
7223da1c87c2 (enum define_coding_utf8_arg_index): New enum.
Kenichi Handa <handa@m17n.org>
parents: 94994
diff changeset
59 enum define_coding_utf8_arg_index
7223da1c87c2 (enum define_coding_utf8_arg_index): New enum.
Kenichi Handa <handa@m17n.org>
parents: 94994
diff changeset
60 {
7223da1c87c2 (enum define_coding_utf8_arg_index): New enum.
Kenichi Handa <handa@m17n.org>
parents: 94994
diff changeset
61 coding_arg_utf8_bom = coding_arg_max,
7223da1c87c2 (enum define_coding_utf8_arg_index): New enum.
Kenichi Handa <handa@m17n.org>
parents: 94994
diff changeset
62 coding_arg_utf8_max
7223da1c87c2 (enum define_coding_utf8_arg_index): New enum.
Kenichi Handa <handa@m17n.org>
parents: 94994
diff changeset
63 };
7223da1c87c2 (enum define_coding_utf8_arg_index): New enum.
Kenichi Handa <handa@m17n.org>
parents: 94994
diff changeset
64
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
65 enum define_coding_utf16_arg_index
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
66 {
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
67 coding_arg_utf16_bom = coding_arg_max,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
68 coding_arg_utf16_endian,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
69 coding_arg_utf16_max
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
70 };
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
71
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
72 enum define_coding_ccl_arg_index
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
73 {
89372
95c081cdbd5f (enum define_coding_ccl_arg_index): Set the first
Kenichi Handa <handa@m17n.org>
parents: 89330
diff changeset
74 coding_arg_ccl_decoder = coding_arg_max,
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
75 coding_arg_ccl_encoder,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
76 coding_arg_ccl_valids,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
77 coding_arg_ccl_max
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
78 };
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
79
89886
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
80 /* Hash table for all coding systems. Keys are coding system symbols
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
81 and values are spec vectors of the corresponding coding system. A
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
82 spec vector has the form [ ATTRS ALIASES EOL-TYPE ]. ATTRS is a
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
83 vector of attribute of the coding system. ALIASES is a list of
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
84 aliases (symbols) of the coding system. EOL-TYPE is `unix', `dos',
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
85 `mac' or a vector of coding systems (symbols). */
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
86
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
87 extern Lisp_Object Vcoding_system_hash_table;
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
88
89886
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
89
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
90 /* Enumeration of coding system type. */
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
91
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
92 enum coding_system_type
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
93 {
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
94 coding_type_charset,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
95 coding_type_utf_8,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
96 coding_type_utf_16,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
97 coding_type_iso_2022,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
98 coding_type_emacs_mule,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
99 coding_type_sjis,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
100 coding_type_ccl,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
101 coding_type_raw_text,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
102 coding_type_undecided,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
103 coding_type_max
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
104 };
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
105
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
106
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
107 /* Enumeration of end-of-line format type. */
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
108
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
109 enum end_of_line_type
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
110 {
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
111 eol_lf, /* Line-feed only, same as Emacs' internal
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
112 format. */
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
113 eol_crlf, /* Sequence of carriage-return and
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
114 line-feed. */
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
115 eol_cr, /* Carriage-return only. */
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
116 eol_any, /* Accept any of above. Produce line-feed
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
117 only. */
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
118 eol_undecided, /* This value is used to denote that the
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
119 eol-type is not yet undecided. */
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
120 eol_type_max
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
121 };
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
122
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
123 /* Enumeration of index to an attribute vector of a coding system. */
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
124
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
125 enum coding_attr_index
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
126 {
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
127 coding_attr_base_name,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
128 coding_attr_docstring,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
129 coding_attr_mnemonic,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
130 coding_attr_type,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
131 coding_attr_charset_list,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
132 coding_attr_ascii_compat,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
133 coding_attr_decode_tbl,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
134 coding_attr_encode_tbl,
89733
d001bbbe12ce (enum coding_attr_index): New member coding_attr_trans_tbl.
Kenichi Handa <handa@m17n.org>
parents: 89685
diff changeset
135 coding_attr_trans_tbl,
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
136 coding_attr_post_read,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
137 coding_attr_pre_write,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
138 coding_attr_default_char,
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89441
diff changeset
139 coding_attr_for_unibyte,
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
140 coding_attr_plist,
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
141
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
142 coding_attr_category,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
143 coding_attr_safe_charsets,
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
144
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
145 /* The followings are extra attributes for each type. */
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
146 coding_attr_charset_valids,
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
147
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
148 coding_attr_ccl_decoder,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
149 coding_attr_ccl_encoder,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
150 coding_attr_ccl_valids,
19279
3217a3ba8ef7 (CODING_FLAG_ISO_SAFE): New macro.
Kenichi Handa <handa@m17n.org>
parents: 19096
diff changeset
151
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
152 coding_attr_iso_initial,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
153 coding_attr_iso_usage,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
154 coding_attr_iso_request,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
155 coding_attr_iso_flags,
20717
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
156
95396
7223da1c87c2 (enum define_coding_utf8_arg_index): New enum.
Kenichi Handa <handa@m17n.org>
parents: 94994
diff changeset
157 coding_attr_utf_bom,
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
158 coding_attr_utf_16_endian,
19279
3217a3ba8ef7 (CODING_FLAG_ISO_SAFE): New macro.
Kenichi Handa <handa@m17n.org>
parents: 19096
diff changeset
159
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
160 coding_attr_emacs_mule_full,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
161
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
162 coding_attr_last_index
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
163 };
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
164
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
165
89886
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
166 /* Macros to access an element of an attribute vector. */
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
167
91825
755365e1602a Use AREF, not ASLOT.
Juanma Barranquero <lekktu@gmail.com>
parents: 91813
diff changeset
168 #define CODING_ATTR_BASE_NAME(attrs) AREF (attrs, coding_attr_base_name)
755365e1602a Use AREF, not ASLOT.
Juanma Barranquero <lekktu@gmail.com>
parents: 91813
diff changeset
169 #define CODING_ATTR_TYPE(attrs) AREF (attrs, coding_attr_type)
755365e1602a Use AREF, not ASLOT.
Juanma Barranquero <lekktu@gmail.com>
parents: 91813
diff changeset
170 #define CODING_ATTR_CHARSET_LIST(attrs) AREF (attrs, coding_attr_charset_list)
755365e1602a Use AREF, not ASLOT.
Juanma Barranquero <lekktu@gmail.com>
parents: 91813
diff changeset
171 #define CODING_ATTR_MNEMONIC(attrs) AREF (attrs, coding_attr_mnemonic)
755365e1602a Use AREF, not ASLOT.
Juanma Barranquero <lekktu@gmail.com>
parents: 91813
diff changeset
172 #define CODING_ATTR_DOCSTRING(attrs) AREF (attrs, coding_attr_docstring)
755365e1602a Use AREF, not ASLOT.
Juanma Barranquero <lekktu@gmail.com>
parents: 91813
diff changeset
173 #define CODING_ATTR_ASCII_COMPAT(attrs) AREF (attrs, coding_attr_ascii_compat)
755365e1602a Use AREF, not ASLOT.
Juanma Barranquero <lekktu@gmail.com>
parents: 91813
diff changeset
174 #define CODING_ATTR_DECODE_TBL(attrs) AREF (attrs, coding_attr_decode_tbl)
755365e1602a Use AREF, not ASLOT.
Juanma Barranquero <lekktu@gmail.com>
parents: 91813
diff changeset
175 #define CODING_ATTR_ENCODE_TBL(attrs) AREF (attrs, coding_attr_encode_tbl)
755365e1602a Use AREF, not ASLOT.
Juanma Barranquero <lekktu@gmail.com>
parents: 91813
diff changeset
176 #define CODING_ATTR_TRANS_TBL(attrs) AREF (attrs, coding_attr_trans_tbl)
755365e1602a Use AREF, not ASLOT.
Juanma Barranquero <lekktu@gmail.com>
parents: 91813
diff changeset
177 #define CODING_ATTR_POST_READ(attrs) AREF (attrs, coding_attr_post_read)
755365e1602a Use AREF, not ASLOT.
Juanma Barranquero <lekktu@gmail.com>
parents: 91813
diff changeset
178 #define CODING_ATTR_PRE_WRITE(attrs) AREF (attrs, coding_attr_pre_write)
755365e1602a Use AREF, not ASLOT.
Juanma Barranquero <lekktu@gmail.com>
parents: 91813
diff changeset
179 #define CODING_ATTR_DEFAULT_CHAR(attrs) AREF (attrs, coding_attr_default_char)
755365e1602a Use AREF, not ASLOT.
Juanma Barranquero <lekktu@gmail.com>
parents: 91813
diff changeset
180 #define CODING_ATTR_FOR_UNIBYTE(attrs) AREF (attrs, coding_attr_for_unibyte)
755365e1602a Use AREF, not ASLOT.
Juanma Barranquero <lekktu@gmail.com>
parents: 91813
diff changeset
181 #define CODING_ATTR_FLUSHING(attrs) AREF (attrs, coding_attr_flushing)
755365e1602a Use AREF, not ASLOT.
Juanma Barranquero <lekktu@gmail.com>
parents: 91813
diff changeset
182 #define CODING_ATTR_PLIST(attrs) AREF (attrs, coding_attr_plist)
755365e1602a Use AREF, not ASLOT.
Juanma Barranquero <lekktu@gmail.com>
parents: 91813
diff changeset
183 #define CODING_ATTR_CATEGORY(attrs) AREF (attrs, coding_attr_category)
755365e1602a Use AREF, not ASLOT.
Juanma Barranquero <lekktu@gmail.com>
parents: 91813
diff changeset
184 #define CODING_ATTR_SAFE_CHARSETS(attrs)AREF (attrs, coding_attr_safe_charsets)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
185
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
186
89886
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
187 /* Return the name of a coding system specified by ID. */
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
188 #define CODING_ID_NAME(id) \
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
189 (HASH_KEY (XHASH_TABLE (Vcoding_system_hash_table), id))
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
190
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
191 /* Return the attribute vector of a coding system specified by ID. */
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
192
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
193 #define CODING_ID_ATTRS(id) \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
194 (AREF (HASH_VALUE (XHASH_TABLE (Vcoding_system_hash_table), id), 0))
19284
dd1d7096f59d (struct iso2022_spec): New member expected_charsets.
Kenichi Handa <handa@m17n.org>
parents: 19279
diff changeset
195
89886
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
196 /* Return the list of aliases of a coding system specified by ID. */
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
197
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
198 #define CODING_ID_ALIASES(id) \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
199 (AREF (HASH_VALUE (XHASH_TABLE (Vcoding_system_hash_table), id), 1))
17118
dcfb481ee914 (struct iso2022_spec): Member requested_designation is
Kenichi Handa <handa@m17n.org>
parents: 17071
diff changeset
200
89886
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
201 /* Return the eol-type of a coding system specified by ID. */
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
202
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
203 #define CODING_ID_EOL_TYPE(id) \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
204 (AREF (HASH_VALUE (XHASH_TABLE (Vcoding_system_hash_table), id), 2))
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
205
89886
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
206
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
207 /* Return the spec vector of CODING_SYSTEM_SYMBOL. */
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
208
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
209 #define CODING_SYSTEM_SPEC(coding_system_symbol) \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
210 (Fgethash (coding_system_symbol, Vcoding_system_hash_table, Qnil))
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
211
89886
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
212
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
213 /* Return the ID of CODING_SYSTEM_SYMBOL. */
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
214
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
215 #define CODING_SYSTEM_ID(coding_system_symbol) \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
216 hash_lookup (XHASH_TABLE (Vcoding_system_hash_table), \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
217 coding_system_symbol, NULL)
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
218
91005
424b655804ca Merge from emacs--devo--0
Miles Bader <miles@gnu.org>
parents: 90996 78501
diff changeset
219 /* Return 1 if CODING_SYSTEM_SYMBOL is a coding system. */
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
220
90270
e7efdba36b32 (CODING_SYSTEM_P): If ID is not available, call
Kenichi Handa <handa@m17n.org>
parents: 90261
diff changeset
221 #define CODING_SYSTEM_P(coding_system_symbol) \
e7efdba36b32 (CODING_SYSTEM_P): If ID is not available, call
Kenichi Handa <handa@m17n.org>
parents: 90261
diff changeset
222 (CODING_SYSTEM_ID (coding_system_symbol) >= 0 \
e7efdba36b32 (CODING_SYSTEM_P): If ID is not available, call
Kenichi Handa <handa@m17n.org>
parents: 90261
diff changeset
223 || (! NILP (coding_system_symbol) \
e7efdba36b32 (CODING_SYSTEM_P): If ID is not available, call
Kenichi Handa <handa@m17n.org>
parents: 90261
diff changeset
224 && ! NILP (Fcoding_system_p (coding_system_symbol))))
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
225
89886
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
226 /* Check if X is a coding system or not. */
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
227
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89441
diff changeset
228 #define CHECK_CODING_SYSTEM(x) \
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
229 do { \
90270
e7efdba36b32 (CODING_SYSTEM_P): If ID is not available, call
Kenichi Handa <handa@m17n.org>
parents: 90261
diff changeset
230 if (CODING_SYSTEM_ID (x) < 0 \
e7efdba36b32 (CODING_SYSTEM_P): If ID is not available, call
Kenichi Handa <handa@m17n.org>
parents: 90261
diff changeset
231 && NILP (Fcheck_coding_system (x))) \
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89441
diff changeset
232 wrong_type_argument (Qcoding_system_p, (x)); \
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
233 } while (0)
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
234
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
235
89886
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
236 /* Check if X is a coding system or not. If it is, set SEPC to the
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
237 spec vector of the coding system. */
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
238
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
239 #define CHECK_CODING_SYSTEM_GET_SPEC(x, spec) \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
240 do { \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
241 spec = CODING_SYSTEM_SPEC (x); \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
242 if (NILP (spec)) \
90270
e7efdba36b32 (CODING_SYSTEM_P): If ID is not available, call
Kenichi Handa <handa@m17n.org>
parents: 90261
diff changeset
243 { \
e7efdba36b32 (CODING_SYSTEM_P): If ID is not available, call
Kenichi Handa <handa@m17n.org>
parents: 90261
diff changeset
244 Fcheck_coding_system (x); \
e7efdba36b32 (CODING_SYSTEM_P): If ID is not available, call
Kenichi Handa <handa@m17n.org>
parents: 90261
diff changeset
245 spec = CODING_SYSTEM_SPEC (x); \
e7efdba36b32 (CODING_SYSTEM_P): If ID is not available, call
Kenichi Handa <handa@m17n.org>
parents: 90261
diff changeset
246 } \
e7efdba36b32 (CODING_SYSTEM_P): If ID is not available, call
Kenichi Handa <handa@m17n.org>
parents: 90261
diff changeset
247 if (NILP (spec)) \
91813
ca1e1298a3d8 (smerge-auto-combine-max-separation): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91327
diff changeset
248 wrong_type_argument (Qcoding_system_p, (x)); \
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
249 } while (0)
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
250
18001
9846609c4fd5 (struct iso2022_spec): Member requested_designation is
Kenichi Handa <handa@m17n.org>
parents: 17879
diff changeset
251
89886
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
252 /* Check if X is a coding system or not. If it is, set ID to the
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
253 ID of the coding system. */
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
254
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
255 #define CHECK_CODING_SYSTEM_GET_ID(x, id) \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
256 do \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
257 { \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
258 id = CODING_SYSTEM_ID (x); \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
259 if (id < 0) \
90270
e7efdba36b32 (CODING_SYSTEM_P): If ID is not available, call
Kenichi Handa <handa@m17n.org>
parents: 90261
diff changeset
260 { \
e7efdba36b32 (CODING_SYSTEM_P): If ID is not available, call
Kenichi Handa <handa@m17n.org>
parents: 90261
diff changeset
261 Fcheck_coding_system (x); \
e7efdba36b32 (CODING_SYSTEM_P): If ID is not available, call
Kenichi Handa <handa@m17n.org>
parents: 90261
diff changeset
262 id = CODING_SYSTEM_ID (x); \
e7efdba36b32 (CODING_SYSTEM_P): If ID is not available, call
Kenichi Handa <handa@m17n.org>
parents: 90261
diff changeset
263 } \
e7efdba36b32 (CODING_SYSTEM_P): If ID is not available, call
Kenichi Handa <handa@m17n.org>
parents: 90261
diff changeset
264 if (id < 0) \
91813
ca1e1298a3d8 (smerge-auto-combine-max-separation): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 91327
diff changeset
265 wrong_type_argument (Qcoding_system_p, (x)); \
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
266 } while (0)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
267
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
268
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
269 /*** GENERAL section ***/
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
270
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
271 /* Enumeration of result code of code conversion. */
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
272 enum coding_result_code
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
273 {
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
274 CODING_RESULT_SUCCESS,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
275 CODING_RESULT_INSUFFICIENT_SRC,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
276 CODING_RESULT_INSUFFICIENT_DST,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
277 CODING_RESULT_INCONSISTENT_EOL,
89685
8970a5ea5efc (enum coding_result_code): Delete
Kenichi Handa <handa@m17n.org>
parents: 89666
diff changeset
278 CODING_RESULT_INVALID_SRC,
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
279 CODING_RESULT_INTERRUPT,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
280 CODING_RESULT_INSUFFICIENT_MEM
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
281 };
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
282
20717
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
283
21031
7352e0598efa Typo in comment fixed.
Kenichi Handa <handa@m17n.org>
parents: 20930
diff changeset
284 /* Macros used for the member `mode' of the struct coding_system. */
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
285
20717
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
286 /* If set, recover the original CR or LF of the already decoded text
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
287 when the decoding routine encounters an inconsistent eol format. */
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
288 #define CODING_MODE_INHIBIT_INCONSISTENT_EOL 0x01
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
289
20717
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
290 /* If set, the decoding/encoding routines treat the current data as
89172
0da59936bc31 Comment fix.
Dave Love <fx@gnu.org>
parents: 88848
diff changeset
291 the last block of the whole text to be converted, and do the
0da59936bc31 Comment fix.
Dave Love <fx@gnu.org>
parents: 88848
diff changeset
292 appropriate finishing job. */
20717
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
293 #define CODING_MODE_LAST_BLOCK 0x02
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
294
20717
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
295 /* If set, it means that the current source text is in a buffer which
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
296 enables selective display. */
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
297 #define CODING_MODE_SELECTIVE_DISPLAY 0x04
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
298
20717
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
299 /* This flag is used by the decoding/encoding routines on the fly. If
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
300 set, it means that right-to-left text is being processed. */
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
301 #define CODING_MODE_DIRECTION 0x08
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
302
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
303 #define CODING_MODE_FIXED_DESTINATION 0x10
17118
dcfb481ee914 (struct iso2022_spec): Member requested_designation is
Kenichi Handa <handa@m17n.org>
parents: 17071
diff changeset
304
89886
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
305 /* If set, it means that the encoding routines produces some safe
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
306 ASCII characters (usually '?') for unsupported characters. */
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
307 #define CODING_MODE_SAFE_ENCODING 0x20
19364
7182edce9028 (Vmicrosoft_code_table): This variable deleted.
Kenichi Handa <handa@m17n.org>
parents: 19284
diff changeset
308
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
309 /* Structure of the field `spec.iso_2022' in the structure
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
310 `coding_system'. */
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
311 struct iso_2022_spec
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
312 {
88688
d429f57602b9 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88498
diff changeset
313 /* Bit-wise-or of CODING_ISO_FLAG_XXX. */
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
314 unsigned flags;
20717
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
315
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
316 /* The current graphic register invoked to each graphic plane. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
317 int current_invocation[2];
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
318
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
319 /* The current charset designated to each graphic register. The
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
320 value -1 means that not charset is designated, -2 means that
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
321 there was an invalid designation previously. */
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
322 int current_designation[4];
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
323
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
324 /* Set to 1 temporarily only when graphic register 2 or 3 is invoked
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
325 by single-shift while encoding. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
326 int single_shifting;
17118
dcfb481ee914 (struct iso2022_spec): Member requested_designation is
Kenichi Handa <handa@m17n.org>
parents: 17071
diff changeset
327
dcfb481ee914 (struct iso2022_spec): Member requested_designation is
Kenichi Handa <handa@m17n.org>
parents: 17071
diff changeset
328 /* Set to 1 temporarily only when processing at beginning of line. */
dcfb481ee914 (struct iso2022_spec): Member requested_designation is
Kenichi Handa <handa@m17n.org>
parents: 17071
diff changeset
329 int bol;
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
330 };
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
331
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
332 struct ccl_spec;
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
333
95396
7223da1c87c2 (enum define_coding_utf8_arg_index): New enum.
Kenichi Handa <handa@m17n.org>
parents: 94994
diff changeset
334 enum utf_bom_type
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
335 {
95396
7223da1c87c2 (enum define_coding_utf8_arg_index): New enum.
Kenichi Handa <handa@m17n.org>
parents: 94994
diff changeset
336 utf_detect_bom,
7223da1c87c2 (enum define_coding_utf8_arg_index): New enum.
Kenichi Handa <handa@m17n.org>
parents: 94994
diff changeset
337 utf_without_bom,
7223da1c87c2 (enum define_coding_utf8_arg_index): New enum.
Kenichi Handa <handa@m17n.org>
parents: 94994
diff changeset
338 utf_with_bom
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
339 };
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
340
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
341 enum utf_16_endian_type
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
342 {
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
343 utf_16_big_endian,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
344 utf_16_little_endian
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
345 };
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
346
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
347 struct utf_16_spec
26846
1a0f5960e65e (emacs_code_class_type): Delete the member
Kenichi Handa <handa@m17n.org>
parents: 26088
diff changeset
348 {
95396
7223da1c87c2 (enum define_coding_utf8_arg_index): New enum.
Kenichi Handa <handa@m17n.org>
parents: 94994
diff changeset
349 enum utf_bom_type bom;
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
350 enum utf_16_endian_type endian;
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
351 int surrogate;
26846
1a0f5960e65e (emacs_code_class_type): Delete the member
Kenichi Handa <handa@m17n.org>
parents: 26088
diff changeset
352 };
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
353
89330
ee0338e83a2b (struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents: 89172
diff changeset
354 struct coding_detection_info
ee0338e83a2b (struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents: 89172
diff changeset
355 {
ee0338e83a2b (struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents: 89172
diff changeset
356 /* Values of these members are bitwise-OR of CATEGORY_MASK_XXXs. */
ee0338e83a2b (struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents: 89172
diff changeset
357 /* Which categories are already checked. */
ee0338e83a2b (struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents: 89172
diff changeset
358 int checked;
ee0338e83a2b (struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents: 89172
diff changeset
359 /* Which categories are strongly found. */
ee0338e83a2b (struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents: 89172
diff changeset
360 int found;
ee0338e83a2b (struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents: 89172
diff changeset
361 /* Which categories are rejected. */
ee0338e83a2b (struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents: 89172
diff changeset
362 int rejected;
ee0338e83a2b (struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents: 89172
diff changeset
363 };
20717
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
364
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
365
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
366 struct coding_system
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
367 {
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
368 /* ID number of the coding system. This is an index to
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
369 Vcoding_system_hash_table. This value is set by
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
370 setup_coding_system. At the early stage of building time, this
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
371 value is -1 in the array coding_categories to indicate that no
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
372 coding-system of that category is yet defined. */
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
373 int id;
20717
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
374
20226
549826cf2952 (struct coding_system): Add member common_flags, delete
Kenichi Handa <handa@m17n.org>
parents: 20149
diff changeset
375 /* Flag bits of the coding system. The meaning of each bit is common
20717
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
376 to all types of coding systems. */
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
377 int common_flags;
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
378
20717
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
379 /* Mode bits of the coding system. See the comments of the macros
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
380 CODING_MODE_XXX. */
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
381 unsigned int mode;
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
382
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
383 /* Detailed information specific to each type of coding system. */
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
384 union
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
385 {
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
386 struct iso_2022_spec iso_2022;
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
387 struct ccl_spec *ccl; /* Defined in ccl.h. */
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
388 struct utf_16_spec utf_16;
95396
7223da1c87c2 (enum define_coding_utf8_arg_index): New enum.
Kenichi Handa <handa@m17n.org>
parents: 94994
diff changeset
389 enum utf_bom_type utf_8_bom;
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
390 int emacs_mule_full_support;
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
391 } spec;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
392
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
393 int max_charset_id;
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
394 char *safe_charsets;
20717
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
395
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
396 /* The following two members specify how binary 8-bit code 128..255
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
397 are represented in source and destination text respectively. 1
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
398 means they are represented by 2-byte sequence, 0 means they are
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
399 represented by 1-byte as is (see the comment in character.h). */
29006
bf92db6e609a (enum iso_code_class_type): Member ISO_control_code is
Kenichi Handa <handa@m17n.org>
parents: 28512
diff changeset
400 unsigned src_multibyte : 1;
bf92db6e609a (enum iso_code_class_type): Member ISO_control_code is
Kenichi Handa <handa@m17n.org>
parents: 28512
diff changeset
401 unsigned dst_multibyte : 1;
bf92db6e609a (enum iso_code_class_type): Member ISO_control_code is
Kenichi Handa <handa@m17n.org>
parents: 28512
diff changeset
402
21320
278c256defc6 (struct coding_system): Comment for the member
Kenichi Handa <handa@m17n.org>
parents: 21051
diff changeset
403 /* How may heading bytes we can skip for decoding. This is set to
278c256defc6 (struct coding_system): Comment for the member
Kenichi Handa <handa@m17n.org>
parents: 21051
diff changeset
404 -1 in setup_coding_system, and updated by detect_coding. So,
278c256defc6 (struct coding_system): Comment for the member
Kenichi Handa <handa@m17n.org>
parents: 21051
diff changeset
405 when this is equal to the byte length of the text being
278c256defc6 (struct coding_system): Comment for the member
Kenichi Handa <handa@m17n.org>
parents: 21051
diff changeset
406 converted, we can skip the actual conversion process. */
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
407 int head_ascii;
20717
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
408
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
409 /* The following members are set by encoding/decoding routine. */
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
410 EMACS_INT produced, produced_char, consumed, consumed_char;
20717
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
411
29006
bf92db6e609a (enum iso_code_class_type): Member ISO_control_code is
Kenichi Handa <handa@m17n.org>
parents: 28512
diff changeset
412 /* Number of error source data found in a decoding routine. */
bf92db6e609a (enum iso_code_class_type): Member ISO_control_code is
Kenichi Handa <handa@m17n.org>
parents: 28512
diff changeset
413 int errors;
bf92db6e609a (enum iso_code_class_type): Member ISO_control_code is
Kenichi Handa <handa@m17n.org>
parents: 28512
diff changeset
414
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
415 /* Store the positions of error source data. */
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
416 EMACS_INT *error_positions;
20930
1331679fe704 (struct coding_system): New member fake_multibyte.
Kenichi Handa <handa@m17n.org>
parents: 20717
diff changeset
417
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
418 /* Finish status of code conversion. */
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
419 enum coding_result_code result;
35530
cb627d09f8c3 (struct coding_system): New member suppress_error.
Kenichi Handa <handa@m17n.org>
parents: 34152
diff changeset
420
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
421 EMACS_INT src_pos, src_pos_byte, src_chars, src_bytes;
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
422 Lisp_Object src_object;
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89441
diff changeset
423 const unsigned char *source;
20930
1331679fe704 (struct coding_system): New member fake_multibyte.
Kenichi Handa <handa@m17n.org>
parents: 20717
diff changeset
424
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
425 EMACS_INT dst_pos, dst_pos_byte, dst_bytes;
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
426 Lisp_Object dst_object;
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
427 unsigned char *destination;
35530
cb627d09f8c3 (struct coding_system): New member suppress_error.
Kenichi Handa <handa@m17n.org>
parents: 34152
diff changeset
428
91005
424b655804ca Merge from emacs--devo--0
Miles Bader <miles@gnu.org>
parents: 90996 78501
diff changeset
429 /* Set to 1 if the source of conversion is not in the member
89886
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
430 `charbuf', but at `src_object'. */
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
431 int chars_at_source;
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
432
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
433 /* If an element is non-negative, it is a character code.
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
434
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
435 If it is in the range -128..-1, it is a 8-bit character code
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
436 minus 256.
20717
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
437
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
438 If it is less than -128, it specifies the start of an annotation
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
439 chunk. The length of the chunk is -128 minus the value of the
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
440 element. The following elements are OFFSET, ANNOTATION-TYPE, and
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
441 a sequence of actual data for the annotation. OFFSET is a
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
442 character position offset from dst_pos or src_pos,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
443 ANNOTATION-TYPE specfies the meaning of the annotation and how to
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
444 handle the following data.. */
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
445 int *charbuf;
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
446 int charbuf_size, charbuf_used;
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
447
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
448 /* Set to 1 if charbuf contains an annotation. */
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
449 int annotated;
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
450
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
451 unsigned char carryover[64];
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
452 int carryover_bytes;
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
453
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
454 int default_char;
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
455
89330
ee0338e83a2b (struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents: 89172
diff changeset
456 int (*detector) P_ ((struct coding_system *,
ee0338e83a2b (struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents: 89172
diff changeset
457 struct coding_detection_info *));
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
458 void (*decoder) P_ ((struct coding_system *));
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
459 int (*encoder) P_ ((struct coding_system *));
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
460 };
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
461
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
462 /* Meanings of bits in the member `common_flags' of the structure
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
463 coding_system. The lowest 8 bits are reserved for various kind of
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
464 annotations (currently two of them are used). */
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
465 #define CODING_ANNOTATION_MASK 0x00FF
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
466 #define CODING_ANNOTATE_COMPOSITION_MASK 0x0001
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
467 #define CODING_ANNOTATE_DIRECTION_MASK 0x0002
89330
ee0338e83a2b (struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents: 89172
diff changeset
468 #define CODING_ANNOTATE_CHARSET_MASK 0x0003
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
469 #define CODING_FOR_UNIBYTE_MASK 0x0100
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
470 #define CODING_REQUIRE_FLUSHING_MASK 0x0200
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
471 #define CODING_REQUIRE_DECODING_MASK 0x0400
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
472 #define CODING_REQUIRE_ENCODING_MASK 0x0800
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
473 #define CODING_REQUIRE_DETECTION_MASK 0x1000
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
474 #define CODING_RESET_AT_BOL_MASK 0x2000
20226
549826cf2952 (struct coding_system): Add member common_flags, delete
Kenichi Handa <handa@m17n.org>
parents: 20149
diff changeset
475
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
476 /* Return 1 if the coding context CODING requires annotaion
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
477 handling. */
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
478 #define CODING_REQUIRE_ANNOTATION(coding) \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
479 ((coding)->common_flags & CODING_ANNOTATION_MASK)
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
480
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
481 /* Return 1 if the coding context CODING prefers decoding into unibyte. */
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
482 #define CODING_FOR_UNIBYTE(coding) \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
483 ((coding)->common_flags & CODING_FOR_UNIBYTE_MASK)
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
484
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
485 /* Return 1 if the coding context CODING requires specific code to be
20226
549826cf2952 (struct coding_system): Add member common_flags, delete
Kenichi Handa <handa@m17n.org>
parents: 20149
diff changeset
486 attached at the tail of converted text. */
549826cf2952 (struct coding_system): Add member common_flags, delete
Kenichi Handa <handa@m17n.org>
parents: 20149
diff changeset
487 #define CODING_REQUIRE_FLUSHING(coding) \
549826cf2952 (struct coding_system): Add member common_flags, delete
Kenichi Handa <handa@m17n.org>
parents: 20149
diff changeset
488 ((coding)->common_flags & CODING_REQUIRE_FLUSHING_MASK)
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
489
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
490 /* Return 1 if the coding context CODING requires code conversion on
20226
549826cf2952 (struct coding_system): Add member common_flags, delete
Kenichi Handa <handa@m17n.org>
parents: 20149
diff changeset
491 decoding. */
549826cf2952 (struct coding_system): Add member common_flags, delete
Kenichi Handa <handa@m17n.org>
parents: 20149
diff changeset
492 #define CODING_REQUIRE_DECODING(coding) \
29006
bf92db6e609a (enum iso_code_class_type): Member ISO_control_code is
Kenichi Handa <handa@m17n.org>
parents: 28512
diff changeset
493 ((coding)->dst_multibyte \
bf92db6e609a (enum iso_code_class_type): Member ISO_control_code is
Kenichi Handa <handa@m17n.org>
parents: 28512
diff changeset
494 || (coding)->common_flags & CODING_REQUIRE_DECODING_MASK)
20226
549826cf2952 (struct coding_system): Add member common_flags, delete
Kenichi Handa <handa@m17n.org>
parents: 20149
diff changeset
495
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
496
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
497 /* Return 1 if the coding context CODING requires code conversion on
70783
216c04e10ca3 (CODING_REQUIRE_ENCODING): Elaborate the comment.
Eli Zaretskii <eliz@gnu.org>
parents: 70703
diff changeset
498 encoding.
216c04e10ca3 (CODING_REQUIRE_ENCODING): Elaborate the comment.
Eli Zaretskii <eliz@gnu.org>
parents: 70703
diff changeset
499 The non-multibyte part of the condition is to support encoding of
216c04e10ca3 (CODING_REQUIRE_ENCODING): Elaborate the comment.
Eli Zaretskii <eliz@gnu.org>
parents: 70703
diff changeset
500 unibyte strings/buffers generated by string-as-unibyte or
216c04e10ca3 (CODING_REQUIRE_ENCODING): Elaborate the comment.
Eli Zaretskii <eliz@gnu.org>
parents: 70703
diff changeset
501 (set-buffer-multibyte nil) from multibyte strings/buffers. */
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
502 #define CODING_REQUIRE_ENCODING(coding) \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
503 ((coding)->src_multibyte \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
504 || (coding)->common_flags & CODING_REQUIRE_ENCODING_MASK \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
505 || (coding)->mode & CODING_MODE_SELECTIVE_DISPLAY)
20226
549826cf2952 (struct coding_system): Add member common_flags, delete
Kenichi Handa <handa@m17n.org>
parents: 20149
diff changeset
506
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
507
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
508 /* Return 1 if the coding context CODING requires some kind of code
20226
549826cf2952 (struct coding_system): Add member common_flags, delete
Kenichi Handa <handa@m17n.org>
parents: 20149
diff changeset
509 detection. */
549826cf2952 (struct coding_system): Add member common_flags, delete
Kenichi Handa <handa@m17n.org>
parents: 20149
diff changeset
510 #define CODING_REQUIRE_DETECTION(coding) \
549826cf2952 (struct coding_system): Add member common_flags, delete
Kenichi Handa <handa@m17n.org>
parents: 20149
diff changeset
511 ((coding)->common_flags & CODING_REQUIRE_DETECTION_MASK)
549826cf2952 (struct coding_system): Add member common_flags, delete
Kenichi Handa <handa@m17n.org>
parents: 20149
diff changeset
512
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
513 /* Return 1 if the coding context CODING requires code conversion on
29006
bf92db6e609a (enum iso_code_class_type): Member ISO_control_code is
Kenichi Handa <handa@m17n.org>
parents: 28512
diff changeset
514 decoding or some kind of code detection. */
20717
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
515 #define CODING_MAY_REQUIRE_DECODING(coding) \
29006
bf92db6e609a (enum iso_code_class_type): Member ISO_control_code is
Kenichi Handa <handa@m17n.org>
parents: 28512
diff changeset
516 (CODING_REQUIRE_DECODING (coding) \
bf92db6e609a (enum iso_code_class_type): Member ISO_control_code is
Kenichi Handa <handa@m17n.org>
parents: 28512
diff changeset
517 || CODING_REQUIRE_DETECTION (coding))
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
518
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
519 /* Macros to decode or encode a character of JISX0208 in SJIS. S1 and
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
520 S2 are the 1st and 2nd position-codes of JISX0208 in SJIS coding
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
521 system. C1 and C2 are the 1st and 2nd position codes of Emacs'
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
522 internal format. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
523
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
524 #define SJIS_TO_JIS(code) \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
525 do { \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
526 int s1, s2, j1, j2; \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
527 \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
528 s1 = (code) >> 8, s2 = (code) & 0xFF; \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
529 \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
530 if (s2 >= 0x9F) \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
531 (j1 = s1 * 2 - (s1 >= 0xE0 ? 0x160 : 0xE0), \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
532 j2 = s2 - 0x7E); \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
533 else \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
534 (j1 = s1 * 2 - ((s1 >= 0xE0) ? 0x161 : 0xE1), \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
535 j2 = s2 - ((s2 >= 0x7F) ? 0x20 : 0x1F)); \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
536 (code) = (j1 << 8) | j2; \
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
537 } while (0)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
538
89765
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
539 #define SJIS_TO_JIS2(code) \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
540 do { \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
541 int s1, s2, j1, j2; \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
542 \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
543 s1 = (code) >> 8, s2 = (code) & 0xFF; \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
544 \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
545 if (s2 >= 0x9F) \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
546 { \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
547 j1 = (s1 == 0xF0 ? 0x28 \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
548 : s1 == 0xF1 ? 0x24 \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
549 : s1 == 0xF2 ? 0x2C \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
550 : s1 == 0xF3 ? 0x2E \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
551 : 0x6E + (s1 - 0xF4) * 2); \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
552 j2 = s2 - 0x7E; \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
553 } \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
554 else \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
555 { \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
556 j1 = (s1 <= 0xF2 ? 0x21 + (s1 - 0xF0) * 2 \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
557 : s1 <= 0xF4 ? 0x2D + (s1 - 0xF3) * 2 \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
558 : 0x6F + (s1 - 0xF5) * 2); \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
559 j2 = s2 - ((s2 >= 0x7F ? 0x20 : 0x1F)); \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
560 } \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
561 (code) = (j1 << 8) | j2; \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
562 } while (0)
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
563
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
564
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
565 #define JIS_TO_SJIS(code) \
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
566 do { \
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
567 int s1, s2, j1, j2; \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
568 \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
569 j1 = (code) >> 8, j2 = (code) & 0xFF; \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
570 if (j1 & 1) \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
571 (s1 = j1 / 2 + ((j1 < 0x5F) ? 0x71 : 0xB1), \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
572 s2 = j2 + ((j2 >= 0x60) ? 0x20 : 0x1F)); \
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
573 else \
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
574 (s1 = j1 / 2 + ((j1 < 0x5F) ? 0x70 : 0xB0), \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
575 s2 = j2 + 0x7E); \
88498
1dd66ce3fc9c (JIS_TO_SJIS): Fix typo (j1->s1, j2->s2).
Kenichi Handa <handa@m17n.org>
parents: 88365
diff changeset
576 (code) = (s1 << 8) | s2; \
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
577 } while (0)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
578
89765
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
579 #define JIS_TO_SJIS2(code) \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
580 do { \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
581 int s1, s2, j1, j2; \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
582 \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
583 j1 = (code) >> 8, j2 = (code) & 0xFF; \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
584 if (j1 & 1) \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
585 { \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
586 s1 = (j1 <= 0x25 ? 0xF0 + (j1 - 0x21) / 2 \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
587 : j1 <= 0x27 ? 0xF3 + (j1 - 0x2D) / 2 \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
588 : 0xF5 + (j1 - 0x6F) / 2); \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
589 s2 = j2 + ((j2 >= 0x60) ? 0x20 : 0x1F); \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
590 } \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
591 else \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
592 { \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
593 s1 = (j1 == 0x28 ? 0xF0 \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
594 : j1 == 0x24 ? 0xF1 \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
595 : j1 == 0x2C ? 0xF2 \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
596 : j1 == 0x2E ? 0xF3 \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
597 : 0xF4 + (j1 - 0x6E) / 2); \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
598 s2 = j2 + 0x7E; \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
599 } \
b06a8c2162e5 (SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents: 89733
diff changeset
600 (code) = (s1 << 8) | s2; \
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
601 } while (0)
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
602
21051
b5844e2bf088 (ENCODE_FILE): Moved from fileio.c. Use
Kenichi Handa <handa@m17n.org>
parents: 21031
diff changeset
603 /* Encode the file name NAME using the specified coding system
b5844e2bf088 (ENCODE_FILE): Moved from fileio.c. Use
Kenichi Handa <handa@m17n.org>
parents: 21031
diff changeset
604 for file names, if any. */
b5844e2bf088 (ENCODE_FILE): Moved from fileio.c. Use
Kenichi Handa <handa@m17n.org>
parents: 21031
diff changeset
605 #define ENCODE_FILE(name) \
b5844e2bf088 (ENCODE_FILE): Moved from fileio.c. Use
Kenichi Handa <handa@m17n.org>
parents: 21031
diff changeset
606 (! NILP (Vfile_name_coding_system) \
58453
04580c50dd1c (ENCODE_FILE, DECODE_FILE, ENCODE_SYSTEM, DECODE_SYSTEM):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
607 && !EQ (Vfile_name_coding_system, make_number (0)) \
22342
cb6d24cf71e6 (DECODE_FILE, ENCODE_FILE):
Karl Heuer <kwzh@gnu.org>
parents: 22186
diff changeset
608 ? code_convert_string_norecord (name, Vfile_name_coding_system, 1) \
21051
b5844e2bf088 (ENCODE_FILE): Moved from fileio.c. Use
Kenichi Handa <handa@m17n.org>
parents: 21031
diff changeset
609 : (! NILP (Vdefault_file_name_coding_system) \
58453
04580c50dd1c (ENCODE_FILE, DECODE_FILE, ENCODE_SYSTEM, DECODE_SYSTEM):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
610 && !EQ (Vdefault_file_name_coding_system, make_number (0)) \
22342
cb6d24cf71e6 (DECODE_FILE, ENCODE_FILE):
Karl Heuer <kwzh@gnu.org>
parents: 22186
diff changeset
611 ? code_convert_string_norecord (name, Vdefault_file_name_coding_system, 1) \
21051
b5844e2bf088 (ENCODE_FILE): Moved from fileio.c. Use
Kenichi Handa <handa@m17n.org>
parents: 21031
diff changeset
612 : name))
b5844e2bf088 (ENCODE_FILE): Moved from fileio.c. Use
Kenichi Handa <handa@m17n.org>
parents: 21031
diff changeset
613
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
614
21051
b5844e2bf088 (ENCODE_FILE): Moved from fileio.c. Use
Kenichi Handa <handa@m17n.org>
parents: 21031
diff changeset
615 /* Decode the file name NAME using the specified coding system
b5844e2bf088 (ENCODE_FILE): Moved from fileio.c. Use
Kenichi Handa <handa@m17n.org>
parents: 21031
diff changeset
616 for file names, if any. */
b5844e2bf088 (ENCODE_FILE): Moved from fileio.c. Use
Kenichi Handa <handa@m17n.org>
parents: 21031
diff changeset
617 #define DECODE_FILE(name) \
b5844e2bf088 (ENCODE_FILE): Moved from fileio.c. Use
Kenichi Handa <handa@m17n.org>
parents: 21031
diff changeset
618 (! NILP (Vfile_name_coding_system) \
58453
04580c50dd1c (ENCODE_FILE, DECODE_FILE, ENCODE_SYSTEM, DECODE_SYSTEM):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
619 && !EQ (Vfile_name_coding_system, make_number (0)) \
22342
cb6d24cf71e6 (DECODE_FILE, ENCODE_FILE):
Karl Heuer <kwzh@gnu.org>
parents: 22186
diff changeset
620 ? code_convert_string_norecord (name, Vfile_name_coding_system, 0) \
21051
b5844e2bf088 (ENCODE_FILE): Moved from fileio.c. Use
Kenichi Handa <handa@m17n.org>
parents: 21031
diff changeset
621 : (! NILP (Vdefault_file_name_coding_system) \
58453
04580c50dd1c (ENCODE_FILE, DECODE_FILE, ENCODE_SYSTEM, DECODE_SYSTEM):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
622 && !EQ (Vdefault_file_name_coding_system, make_number (0)) \
22342
cb6d24cf71e6 (DECODE_FILE, ENCODE_FILE):
Karl Heuer <kwzh@gnu.org>
parents: 22186
diff changeset
623 ? code_convert_string_norecord (name, Vdefault_file_name_coding_system, 0) \
21051
b5844e2bf088 (ENCODE_FILE): Moved from fileio.c. Use
Kenichi Handa <handa@m17n.org>
parents: 21031
diff changeset
624 : name))
b5844e2bf088 (ENCODE_FILE): Moved from fileio.c. Use
Kenichi Handa <handa@m17n.org>
parents: 21031
diff changeset
625
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
626
29310
2ffc1fff111a (ENCODE_SYSTEM, DECODE_SYSTEM) [WINDOWSNT]: New macros.
Jason Rumney <jasonr@gnu.org>
parents: 29274
diff changeset
627 /* Encode the string STR using the specified coding system
60657
aa6d20307ac6 (ENCODE_SYSTEM, DECODE_SYSTEM) [!WINDOWSNT]: Use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58636
diff changeset
628 for system functions, if any. */
29310
2ffc1fff111a (ENCODE_SYSTEM, DECODE_SYSTEM) [WINDOWSNT]: New macros.
Jason Rumney <jasonr@gnu.org>
parents: 29274
diff changeset
629 #define ENCODE_SYSTEM(str) \
41323
084520255528 (Vw32_system_coding_system) [WINDOWSNT]: Remove.
Jason Rumney <jasonr@gnu.org>
parents: 39574
diff changeset
630 (! NILP (Vlocale_coding_system) \
58453
04580c50dd1c (ENCODE_FILE, DECODE_FILE, ENCODE_SYSTEM, DECODE_SYSTEM):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
631 && !EQ (Vlocale_coding_system, make_number (0)) \
41323
084520255528 (Vw32_system_coding_system) [WINDOWSNT]: Remove.
Jason Rumney <jasonr@gnu.org>
parents: 39574
diff changeset
632 ? code_convert_string_norecord (str, Vlocale_coding_system, 1) \
29310
2ffc1fff111a (ENCODE_SYSTEM, DECODE_SYSTEM) [WINDOWSNT]: New macros.
Jason Rumney <jasonr@gnu.org>
parents: 29274
diff changeset
633 : str)
2ffc1fff111a (ENCODE_SYSTEM, DECODE_SYSTEM) [WINDOWSNT]: New macros.
Jason Rumney <jasonr@gnu.org>
parents: 29274
diff changeset
634
2ffc1fff111a (ENCODE_SYSTEM, DECODE_SYSTEM) [WINDOWSNT]: New macros.
Jason Rumney <jasonr@gnu.org>
parents: 29274
diff changeset
635 /* Decode the string STR using the specified coding system
60657
aa6d20307ac6 (ENCODE_SYSTEM, DECODE_SYSTEM) [!WINDOWSNT]: Use the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58636
diff changeset
636 for system functions, if any. */
66463
e791e75479c9 (DECODE_SYSTEM): Fix argument name; name->str.
Kenichi Handa <handa@m17n.org>
parents: 64770
diff changeset
637 #define DECODE_SYSTEM(str) \
41323
084520255528 (Vw32_system_coding_system) [WINDOWSNT]: Remove.
Jason Rumney <jasonr@gnu.org>
parents: 39574
diff changeset
638 (! NILP (Vlocale_coding_system) \
58453
04580c50dd1c (ENCODE_FILE, DECODE_FILE, ENCODE_SYSTEM, DECODE_SYSTEM):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 52401
diff changeset
639 && !EQ (Vlocale_coding_system, make_number (0)) \
41323
084520255528 (Vw32_system_coding_system) [WINDOWSNT]: Remove.
Jason Rumney <jasonr@gnu.org>
parents: 39574
diff changeset
640 ? code_convert_string_norecord (str, Vlocale_coding_system, 0) \
29310
2ffc1fff111a (ENCODE_SYSTEM, DECODE_SYSTEM) [WINDOWSNT]: New macros.
Jason Rumney <jasonr@gnu.org>
parents: 29274
diff changeset
641 : str)
39574
bdd381bc9eb0 (ENCODE_SYSTEM, DECODE_SYSTEM): Define also for non-NT.
Gerd Moellmann <gerd@gnu.org>
parents: 36088
diff changeset
642
89506
4df223da38ce (ENCODE_UTF_8): New.
Dave Love <fx@gnu.org>
parents: 89483
diff changeset
643 /* Used by the gtk menu code. Note that this encodes utf-8, not
4df223da38ce (ENCODE_UTF_8): New.
Dave Love <fx@gnu.org>
parents: 89483
diff changeset
644 utf-8-emacs, so it's not a no-op. */
51407
cb89e76907df (ENCODE_UTF_8): New.
Dave Love <fx@gnu.org>
parents: 51139
diff changeset
645 #define ENCODE_UTF_8(str) code_convert_string_norecord (str, Qutf_8, 1)
cb89e76907df (ENCODE_UTF_8): New.
Dave Love <fx@gnu.org>
parents: 51139
diff changeset
646
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
647 /* Extern declarations. */
89666
7d38a63951c0 (make_conversion_work_buffer): Delete extern.
Kenichi Handa <handa@m17n.org>
parents: 89506
diff changeset
648 extern Lisp_Object code_conversion_save P_ ((int, int));
20308
8d520e3dcb86 Add more prototypes and function declarations.
Andreas Schwab <schwab@suse.de>
parents: 20226
diff changeset
649 extern int decoding_buffer_size P_ ((struct coding_system *, int));
8d520e3dcb86 Add more prototypes and function declarations.
Andreas Schwab <schwab@suse.de>
parents: 20226
diff changeset
650 extern int encoding_buffer_size P_ ((struct coding_system *, int));
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
651 extern void setup_coding_system P_ ((Lisp_Object, struct coding_system *));
90060
637c6bc8a26f (coding_charset_list): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 90054
diff changeset
652 extern Lisp_Object coding_charset_list P_ ((struct coding_system *));
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
653 extern void detect_coding P_ ((struct coding_system *));
88848
a55219c46b8c (code_convert_region): Fix prototype.
Dave Love <fx@gnu.org>
parents: 88688
diff changeset
654 extern Lisp_Object code_convert_region P_ ((Lisp_Object, Lisp_Object,
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
655 Lisp_Object, Lisp_Object,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
656 int, int));
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
657 extern Lisp_Object code_convert_string P_ ((Lisp_Object, Lisp_Object,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
658 Lisp_Object, int, int, int));
29438
8c825a8566f5 Declare code_convert_string_norecord.
Dave Love <fx@gnu.org>
parents: 29310
diff changeset
659 extern Lisp_Object code_convert_string_norecord P_ ((Lisp_Object, Lisp_Object,
8c825a8566f5 Declare code_convert_string_norecord.
Dave Love <fx@gnu.org>
parents: 29310
diff changeset
660 int));
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
661 extern Lisp_Object raw_text_coding_system P_ ((Lisp_Object));
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
662 extern Lisp_Object coding_inherit_eol_type P_ ((Lisp_Object, Lisp_Object));
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
663
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
664 extern int decode_coding_gap P_ ((struct coding_system *,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
665 EMACS_INT, EMACS_INT));
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
666 extern int encode_coding_gap P_ ((struct coding_system *,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
667 EMACS_INT, EMACS_INT));
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
668 extern void decode_coding_object P_ ((struct coding_system *,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
669 Lisp_Object, EMACS_INT, EMACS_INT,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
670 EMACS_INT, EMACS_INT, Lisp_Object));
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
671 extern void encode_coding_object P_ ((struct coding_system *,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
672 Lisp_Object, EMACS_INT, EMACS_INT,
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
673 EMACS_INT, EMACS_INT, Lisp_Object));
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
674
89886
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
675 /* Macros for backward compatibility. */
623a853556f1 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 89765
diff changeset
676
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
677 #define decode_coding_region(coding, from, to) \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
678 decode_coding_object (coding, Fcurrent_buffer (), \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
679 from, CHAR_TO_BYTE (from), \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
680 to, CHAR_TO_BYTE (to), Fcurrent_buffer ())
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
681
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
682
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
683 #define encode_coding_region(coding, from, to) \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
684 encode_coding_object (coding, Fcurrent_buffer (), \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
685 from, CHAR_TO_BYTE (from), \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
686 to, CHAR_TO_BYTE (to), Fcurrent_buffer ())
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
687
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
688
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
689 #define decode_coding_string(coding, string, nocopy) \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
690 decode_coding_object (coding, string, 0, 0, XSTRING (string)->size, \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
691 STRING_BYTES (XSTRING (string)), Qt)
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
692
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
693 #define encode_coding_string(coding, string, nocopy) \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
694 (encode_coding_object (coding, string, 0, 0, XSTRING (string)->size, \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
695 STRING_BYTES (XSTRING (string)), Qt), \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
696 (coding)->dst_object)
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
697
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
698
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
699 #define decode_coding_c_string(coding, src, bytes, dst_object) \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
700 do { \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
701 (coding)->source = (src); \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
702 (coding)->src_chars = (coding)->src_bytes = (bytes); \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
703 decode_coding_object ((coding), Qnil, 0, 0, (bytes), (bytes), \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
704 (dst_object)); \
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
705 } while (0)
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
706
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
707
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
708 extern Lisp_Object preferred_coding_system P_ (());
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
709
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
710
89483
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89441
diff changeset
711 extern Lisp_Object Qutf_8, Qutf_8_emacs;
2f877ed80fa6 *** empty log message ***
Kenichi Handa <handa@m17n.org>
parents: 88123 89441
diff changeset
712
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
713 extern Lisp_Object Qcoding_system, Qeol_type, Qcoding_category_index;
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
714 extern Lisp_Object Qcoding_system_p;
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
715 extern Lisp_Object Qraw_text, Qemacs_mule, Qno_conversion, Qundecided;
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
716 extern Lisp_Object Qiso_2022;
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
717 extern Lisp_Object Qbuffer_file_coding_system;
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
718
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
719 extern Lisp_Object Qunix, Qdos, Qmac;
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
720
22186
fc4aaf1b1772 Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents: 22118
diff changeset
721 extern Lisp_Object Qtranslation_table;
fc4aaf1b1772 Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents: 22118
diff changeset
722 extern Lisp_Object Qtranslation_table_id;
22118
42e2ffa98618 Change terms unify/unification to
Kenichi Handa <handa@m17n.org>
parents: 21901
diff changeset
723
24201
d324ba7d0e40 eol-mnemonic-* variables are now strings, not characters.
Eli Zaretskii <eliz@gnu.org>
parents: 23324
diff changeset
724 /* Mnemonic strings to indicate each type of end-of-line. */
d324ba7d0e40 eol-mnemonic-* variables are now strings, not characters.
Eli Zaretskii <eliz@gnu.org>
parents: 23324
diff changeset
725 extern Lisp_Object eol_mnemonic_unix, eol_mnemonic_dos, eol_mnemonic_mac;
d324ba7d0e40 eol-mnemonic-* variables are now strings, not characters.
Eli Zaretskii <eliz@gnu.org>
parents: 23324
diff changeset
726 /* Mnemonic string to indicate type of end-of-line is not yet decided. */
d324ba7d0e40 eol-mnemonic-* variables are now strings, not characters.
Eli Zaretskii <eliz@gnu.org>
parents: 23324
diff changeset
727 extern Lisp_Object eol_mnemonic_undecided;
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
728
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
729 #ifdef emacs
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
730 extern Lisp_Object Qfile_coding_system;
64251
3de1b955c31a * coding.c (Qprocess_argument):
Kim F. Storm <storm@cua.dk>
parents: 64084
diff changeset
731 extern Lisp_Object Qcall_process, Qcall_process_region;
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
732 extern Lisp_Object Qstart_process, Qopen_network_stream;
34107
46e0ec24a961 (Qwrite_region, Qcoding_system_error): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 30832
diff changeset
733 extern Lisp_Object Qwrite_region;
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
734
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25378
diff changeset
735 extern char *emacs_strerror P_ ((int));
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25378
diff changeset
736
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
737 /* Coding-system for reading files and receiving data from process. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
738 extern Lisp_Object Vcoding_system_for_read;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
739 /* Coding-system for writing files and sending data to process. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
740 extern Lisp_Object Vcoding_system_for_write;
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
741 /* Coding-system actually used in the latest I/O. */
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
742 extern Lisp_Object Vlast_coding_system_used;
26088
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25378
diff changeset
743 /* Coding-system to use with system messages (e.g. strerror). */
b7aa6ac26872 Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents: 25378
diff changeset
744 extern Lisp_Object Vlocale_coding_system;
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
745
21573
92b33933ceeb Declare inherit-process-coding-system.
Eli Zaretskii <eliz@gnu.org>
parents: 21515
diff changeset
746 /* If non-zero, process buffer inherits the coding system used to decode
92b33933ceeb Declare inherit-process-coding-system.
Eli Zaretskii <eliz@gnu.org>
parents: 21515
diff changeset
747 the subprocess output. */
92b33933ceeb Declare inherit-process-coding-system.
Eli Zaretskii <eliz@gnu.org>
parents: 21515
diff changeset
748 extern int inherit_process_coding_system;
92b33933ceeb Declare inherit-process-coding-system.
Eli Zaretskii <eliz@gnu.org>
parents: 21515
diff changeset
749
19279
3217a3ba8ef7 (CODING_FLAG_ISO_SAFE): New macro.
Kenichi Handa <handa@m17n.org>
parents: 19096
diff changeset
750 /* Coding system to be used to encode text for terminal display when
3217a3ba8ef7 (CODING_FLAG_ISO_SAFE): New macro.
Kenichi Handa <handa@m17n.org>
parents: 19096
diff changeset
751 terminal coding system is nil. */
3217a3ba8ef7 (CODING_FLAG_ISO_SAFE): New macro.
Kenichi Handa <handa@m17n.org>
parents: 19096
diff changeset
752 extern struct coding_system safe_terminal_coding;
3217a3ba8ef7 (CODING_FLAG_ISO_SAFE): New macro.
Kenichi Handa <handa@m17n.org>
parents: 19096
diff changeset
753
18181
1d91f0e4ff7d (Vdefault_process_coding_system): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 18001
diff changeset
754 /* Default coding systems used for process I/O. */
1d91f0e4ff7d (Vdefault_process_coding_system): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 18001
diff changeset
755 extern Lisp_Object Vdefault_process_coding_system;
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
756
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
757 /* Function to call to force a user to force select a propert coding
20717
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
758 system. */
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
759 extern Lisp_Object Vselect_safe_coding_system_function;
19463997fbc6 (CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents: 20308
diff changeset
760
48875
e79464fe61d7 (coding_system_require_warning): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 46549
diff changeset
761 /* If nonzero, on writing a file, Vselect_safe_coding_system_function
e79464fe61d7 (coding_system_require_warning): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 46549
diff changeset
762 is called even if Vcoding_system_for_write is non-nil. */
e79464fe61d7 (coding_system_require_warning): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 46549
diff changeset
763 extern int coding_system_require_warning;
e79464fe61d7 (coding_system_require_warning): Extern it.
Kenichi Handa <handa@m17n.org>
parents: 46549
diff changeset
764
21901
1b46a79d86e3 (Vfile_name_coding_system)
Richard M. Stallman <rms@gnu.org>
parents: 21573
diff changeset
765 /* Coding system for file names, or nil if none. */
1b46a79d86e3 (Vfile_name_coding_system)
Richard M. Stallman <rms@gnu.org>
parents: 21573
diff changeset
766 extern Lisp_Object Vfile_name_coding_system;
1b46a79d86e3 (Vfile_name_coding_system)
Richard M. Stallman <rms@gnu.org>
parents: 21573
diff changeset
767
1b46a79d86e3 (Vfile_name_coding_system)
Richard M. Stallman <rms@gnu.org>
parents: 21573
diff changeset
768 /* Coding system for file names used only when
1b46a79d86e3 (Vfile_name_coding_system)
Richard M. Stallman <rms@gnu.org>
parents: 21573
diff changeset
769 Vfile_name_coding_system is nil. */
1b46a79d86e3 (Vfile_name_coding_system)
Richard M. Stallman <rms@gnu.org>
parents: 21573
diff changeset
770 extern Lisp_Object Vdefault_file_name_coding_system;
29310
2ffc1fff111a (ENCODE_SYSTEM, DECODE_SYSTEM) [WINDOWSNT]: New macros.
Jason Rumney <jasonr@gnu.org>
parents: 29274
diff changeset
771
17052
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
772 #endif
d0d7b244b1d0 Initial revision
Karl Heuer <kwzh@gnu.org>
parents:
diff changeset
773
34107
46e0ec24a961 (Qwrite_region, Qcoding_system_error): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 30832
diff changeset
774 /* Error signaled when there's a problem with detecting coding system */
46e0ec24a961 (Qwrite_region, Qcoding_system_error): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 30832
diff changeset
775 extern Lisp_Object Qcoding_system_error;
46e0ec24a961 (Qwrite_region, Qcoding_system_error): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents: 30832
diff changeset
776
88365
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
777 extern char emacs_mule_bytes[256];
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
778 extern int emacs_mule_string_char P_ ((unsigned char *));
d29ddd7d50f9 Completely re-written.
Kenichi Handa <handa@m17n.org>
parents: 43486
diff changeset
779
29571
951ead33c624 (EMASC_CODING_H): Renamed from _CODING_H.
Kenichi Handa <handa@m17n.org>
parents: 29438
diff changeset
780 #endif /* EMACS_CODING_H */
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51407
diff changeset
781
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51407
diff changeset
782 /* arch-tag: 2bc3b4fa-6870-4f64-8135-b962b2d290e4
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 51407
diff changeset
783 (do not change this comment) */