Mercurial > emacs
annotate src/coding.h @ 106768:21fd634f447a
Make line<->pixel_y conversion macros aware of native menu/tool bars.
They are placed above the internal border. This supersedes special
treatment of native tool bars in the display code.
This fixes wrong display position of native menu bars and bogus mouse
highlighting of native tool bars, both of which can be found when
internal border width is large. Also it fixes wrong flashed part on
visible bell with native menu bars.
* frame.h (FRAME_TOP_MARGIN_HEIGHT): New macro.
(FRAME_LINE_TO_PIXEL_Y, FRAME_PIXEL_Y_TO_LINE): Take account of pseudo
windows above internal border.
* window.h (WINDOW_MENU_BAR_P, WINDOW_TOOL_BAR_P): New macros.
(WINDOW_TOP_EDGE_Y, WINDOW_BOTTOM_EDGE_Y): Take account of pseudo
windows above internal border.
* xdisp.c (get_glyph_string_clip_rects, init_glyph_string): Don't treat
tool bar windows specially.
* xfns.c (x_set_tool_bar_lines): Take account of menu bar height.
* xterm.c (x_after_update_window_line): Don't treat tool bar windows
specially.
(XTflash): Take account of menu bar height.
* w32term.c (x_after_update_window_line): Don't treat tool bar windows
specially.
author | YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp> |
---|---|
date | Sat, 09 Jan 2010 13:16:32 +0900 |
parents | 4f700f983ef9 |
children | 1d1d5d9bd884 |
rev | line source |
---|---|
17052 | 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, |
100951 | 3 2006, 2007, 2008, 2009 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, |
100951 | 5 2005, 2006, 2007, 2008, 2009 |
67658 | 6 National Institute of Advanced Industrial Science and Technology (AIST) |
7 Registration Number H14PRO021 | |
89483 | 8 Copyright (C) 2003 |
88365 | 9 National Institute of Advanced Industrial Science and Technology (AIST) |
10 Registration Number H13PRO009 | |
17052 | 11 |
17071 | 12 This file is part of GNU Emacs. |
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 | 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 | 18 |
17071 | 19 GNU Emacs is distributed in the hope that it will be useful, |
20 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
21 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
22 GNU General Public License for more details. | |
17052 | 23 |
17071 | 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 | 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 | 29 |
88365 | 30 /* Index to arguments of Fdefine_coding_system_internal. */ |
17052 | 31 |
88365 | 32 enum define_coding_system_arg_index |
17052 | 33 { |
88365 | 34 coding_arg_name, |
35 coding_arg_mnemonic, | |
36 coding_arg_coding_type, | |
37 coding_arg_charset_list, | |
38 coding_arg_ascii_compatible_p, | |
39 coding_arg_decode_translation_table, | |
40 coding_arg_encode_translation_table, | |
41 coding_arg_post_read_conversion, | |
42 coding_arg_pre_write_conversion, | |
43 coding_arg_default_char, | |
89483 | 44 coding_arg_for_unibyte, |
88365 | 45 coding_arg_plist, |
46 coding_arg_eol_type, | |
47 coding_arg_max | |
48 }; | |
49 | |
50 enum define_coding_iso2022_arg_index | |
51 { | |
52 coding_arg_iso2022_initial = coding_arg_max, | |
53 coding_arg_iso2022_reg_usage, | |
54 coding_arg_iso2022_request, | |
55 coding_arg_iso2022_flags, | |
56 coding_arg_iso2022_max | |
57 }; | |
17052 | 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 | 65 enum define_coding_utf16_arg_index |
66 { | |
67 coding_arg_utf16_bom = coding_arg_max, | |
68 coding_arg_utf16_endian, | |
69 coding_arg_utf16_max | |
17052 | 70 }; |
71 | |
88365 | 72 enum define_coding_ccl_arg_index |
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 | 75 coding_arg_ccl_encoder, |
76 coding_arg_ccl_valids, | |
77 coding_arg_ccl_max | |
78 }; | |
17052 | 79 |
89886 | 80 /* Hash table for all coding systems. Keys are coding system symbols |
81 and values are spec vectors of the corresponding coding system. A | |
82 spec vector has the form [ ATTRS ALIASES EOL-TYPE ]. ATTRS is a | |
83 vector of attribute of the coding system. ALIASES is a list of | |
84 aliases (symbols) of the coding system. EOL-TYPE is `unix', `dos', | |
85 `mac' or a vector of coding systems (symbols). */ | |
86 | |
88365 | 87 extern Lisp_Object Vcoding_system_hash_table; |
88 | |
89886 | 89 |
88365 | 90 /* Enumeration of coding system type. */ |
17052 | 91 |
88365 | 92 enum coding_system_type |
17052 | 93 { |
88365 | 94 coding_type_charset, |
95 coding_type_utf_8, | |
96 coding_type_utf_16, | |
97 coding_type_iso_2022, | |
98 coding_type_emacs_mule, | |
99 coding_type_sjis, | |
100 coding_type_ccl, | |
101 coding_type_raw_text, | |
102 coding_type_undecided, | |
103 coding_type_max | |
104 }; | |
105 | |
106 | |
107 /* Enumeration of end-of-line format type. */ | |
108 | |
109 enum end_of_line_type | |
110 { | |
111 eol_lf, /* Line-feed only, same as Emacs' internal | |
112 format. */ | |
113 eol_crlf, /* Sequence of carriage-return and | |
114 line-feed. */ | |
115 eol_cr, /* Carriage-return only. */ | |
116 eol_any, /* Accept any of above. Produce line-feed | |
117 only. */ | |
118 eol_undecided, /* This value is used to denote that the | |
119 eol-type is not yet undecided. */ | |
120 eol_type_max | |
17052 | 121 }; |
122 | |
88365 | 123 /* Enumeration of index to an attribute vector of a coding system. */ |
17052 | 124 |
88365 | 125 enum coding_attr_index |
126 { | |
127 coding_attr_base_name, | |
128 coding_attr_docstring, | |
129 coding_attr_mnemonic, | |
130 coding_attr_type, | |
131 coding_attr_charset_list, | |
132 coding_attr_ascii_compat, | |
133 coding_attr_decode_tbl, | |
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 | 136 coding_attr_post_read, |
137 coding_attr_pre_write, | |
138 coding_attr_default_char, | |
89483 | 139 coding_attr_for_unibyte, |
88365 | 140 coding_attr_plist, |
17052 | 141 |
88365 | 142 coding_attr_category, |
143 coding_attr_safe_charsets, | |
17052 | 144 |
88365 | 145 /* The followings are extra attributes for each type. */ |
146 coding_attr_charset_valids, | |
17052 | 147 |
88365 | 148 coding_attr_ccl_decoder, |
149 coding_attr_ccl_encoder, | |
150 coding_attr_ccl_valids, | |
19279
3217a3ba8ef7
(CODING_FLAG_ISO_SAFE): New macro.
Kenichi Handa <handa@m17n.org>
parents:
19096
diff
changeset
|
151 |
88365 | 152 coding_attr_iso_initial, |
153 coding_attr_iso_usage, | |
154 coding_attr_iso_request, | |
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 | 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 | 160 coding_attr_emacs_mule_full, |
161 | |
162 coding_attr_last_index | |
17052 | 163 }; |
164 | |
165 | |
89886 | 166 /* Macros to access an element of an attribute vector. */ |
17052 | 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 | 185 |
186 | |
89886 | 187 /* Return the name of a coding system specified by ID. */ |
188 #define CODING_ID_NAME(id) \ | |
189 (HASH_KEY (XHASH_TABLE (Vcoding_system_hash_table), id)) | |
190 | |
191 /* Return the attribute vector of a coding system specified by ID. */ | |
17052 | 192 |
88365 | 193 #define CODING_ID_ATTRS(id) \ |
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 | 196 /* Return the list of aliases of a coding system specified by ID. */ |
197 | |
88365 | 198 #define CODING_ID_ALIASES(id) \ |
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 | 201 /* Return the eol-type of a coding system specified by ID. */ |
202 | |
88365 | 203 #define CODING_ID_EOL_TYPE(id) \ |
204 (AREF (HASH_VALUE (XHASH_TABLE (Vcoding_system_hash_table), id), 2)) | |
205 | |
89886 | 206 |
207 /* Return the spec vector of CODING_SYSTEM_SYMBOL. */ | |
17052 | 208 |
88365 | 209 #define CODING_SYSTEM_SPEC(coding_system_symbol) \ |
210 (Fgethash (coding_system_symbol, Vcoding_system_hash_table, Qnil)) | |
211 | |
89886 | 212 |
213 /* Return the ID of CODING_SYSTEM_SYMBOL. */ | |
17052 | 214 |
88365 | 215 #define CODING_SYSTEM_ID(coding_system_symbol) \ |
216 hash_lookup (XHASH_TABLE (Vcoding_system_hash_table), \ | |
217 coding_system_symbol, NULL) | |
218 | |
91005 | 219 /* Return 1 if CODING_SYSTEM_SYMBOL is a coding system. */ |
17052 | 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 | 225 |
89886 | 226 /* Check if X is a coding system or not. */ |
227 | |
89483 | 228 #define CHECK_CODING_SYSTEM(x) \ |
88365 | 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 | 232 wrong_type_argument (Qcoding_system_p, (x)); \ |
88365 | 233 } while (0) |
234 | |
17052 | 235 |
89886 | 236 /* Check if X is a coding system or not. If it is, set SEPC to the |
237 spec vector of the coding system. */ | |
238 | |
88365 | 239 #define CHECK_CODING_SYSTEM_GET_SPEC(x, spec) \ |
240 do { \ | |
241 spec = CODING_SYSTEM_SPEC (x); \ | |
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 | 249 } while (0) |
250 | |
18001
9846609c4fd5
(struct iso2022_spec): Member requested_designation is
Kenichi Handa <handa@m17n.org>
parents:
17879
diff
changeset
|
251 |
89886 | 252 /* Check if X is a coding system or not. If it is, set ID to the |
253 ID of the coding system. */ | |
254 | |
88365 | 255 #define CHECK_CODING_SYSTEM_GET_ID(x, id) \ |
256 do \ | |
257 { \ | |
258 id = CODING_SYSTEM_ID (x); \ | |
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 | 266 } while (0) |
17052 | 267 |
268 | |
269 /*** GENERAL section ***/ | |
270 | |
88365 | 271 /* Enumeration of result code of code conversion. */ |
272 enum coding_result_code | |
17052 | 273 { |
88365 | 274 CODING_RESULT_SUCCESS, |
275 CODING_RESULT_INSUFFICIENT_SRC, | |
276 CODING_RESULT_INSUFFICIENT_DST, | |
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 | 279 CODING_RESULT_INTERRUPT, |
280 CODING_RESULT_INSUFFICIENT_MEM | |
17052 | 281 }; |
282 | |
20717
19463997fbc6
(CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents:
20308
diff
changeset
|
283 |
21031 | 284 /* Macros used for the member `mode' of the struct coding_system. */ |
17052 | 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 | 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 | 291 the last block of the whole text to be converted, and do the |
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 | 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 | 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 | 302 |
88365 | 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 | 305 /* If set, it means that the encoding routines produces some safe |
306 ASCII characters (usually '?') for unsupported characters. */ | |
88365 | 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 |
102423 | 309 /* For handling composition sequence. */ |
310 #include "composite.h" | |
311 | |
312 enum composition_state | |
313 { | |
314 COMPOSING_NO, | |
315 COMPOSING_CHAR, | |
316 COMPOSING_RULE, | |
317 COMPOSING_COMPONENT_CHAR, | |
318 COMPOSING_COMPONENT_RULE | |
319 }; | |
320 | |
321 /* Structure for the current composition status. */ | |
322 struct composition_status | |
323 { | |
324 enum composition_state state; | |
325 enum composition_method method; | |
326 int old_form; /* 0:pre-21 form, 1:post-21 form */ | |
327 int length; /* number of elements produced in charbuf */ | |
328 int nchars; /* number of characters composed */ | |
329 int ncomps; /* number of composition components */ | |
330 /* Maximum carryover is for the case of COMPOSITION_WITH_RULE_ALTCHARS. | |
331 See the comment in coding.c. */ | |
332 int carryover[4 /* annotation header */ | |
333 + MAX_COMPOSITION_COMPONENTS * 3 - 2 /* ALTs and RULEs */ | |
334 + 2 /* intermediate -1 -1 */ | |
335 + MAX_COMPOSITION_COMPONENTS /* CHARs */ | |
336 ]; | |
337 }; | |
338 | |
339 | |
88365 | 340 /* Structure of the field `spec.iso_2022' in the structure |
341 `coding_system'. */ | |
342 struct iso_2022_spec | |
343 { | |
88688 | 344 /* Bit-wise-or of CODING_ISO_FLAG_XXX. */ |
88365 | 345 unsigned flags; |
20717
19463997fbc6
(CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents:
20308
diff
changeset
|
346 |
17052 | 347 /* The current graphic register invoked to each graphic plane. */ |
348 int current_invocation[2]; | |
349 | |
88365 | 350 /* The current charset designated to each graphic register. The |
351 value -1 means that not charset is designated, -2 means that | |
352 there was an invalid designation previously. */ | |
17052 | 353 int current_designation[4]; |
354 | |
355 /* Set to 1 temporarily only when graphic register 2 or 3 is invoked | |
356 by single-shift while encoding. */ | |
357 int single_shifting; | |
17118
dcfb481ee914
(struct iso2022_spec): Member requested_designation is
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
358 |
dcfb481ee914
(struct iso2022_spec): Member requested_designation is
Kenichi Handa <handa@m17n.org>
parents:
17071
diff
changeset
|
359 /* 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
|
360 int bol; |
102423 | 361 |
362 /* If positive, we are now scanning CTEXT extended segment. */ | |
363 int ctext_extended_segment_len; | |
364 | |
365 /* If nonzero, we are now scanning embedded UTF-8 sequence. */ | |
366 int embedded_utf_8; | |
367 | |
368 /* The current composition. */ | |
369 struct composition_status cmp_status; | |
370 }; | |
371 | |
372 struct emacs_mule_spec | |
373 { | |
374 int full_support; | |
375 struct composition_status cmp_status; | |
17052 | 376 }; |
377 | |
88365 | 378 struct ccl_spec; |
17052 | 379 |
95396
7223da1c87c2
(enum define_coding_utf8_arg_index): New enum.
Kenichi Handa <handa@m17n.org>
parents:
94994
diff
changeset
|
380 enum utf_bom_type |
17052 | 381 { |
95396
7223da1c87c2
(enum define_coding_utf8_arg_index): New enum.
Kenichi Handa <handa@m17n.org>
parents:
94994
diff
changeset
|
382 utf_detect_bom, |
7223da1c87c2
(enum define_coding_utf8_arg_index): New enum.
Kenichi Handa <handa@m17n.org>
parents:
94994
diff
changeset
|
383 utf_without_bom, |
7223da1c87c2
(enum define_coding_utf8_arg_index): New enum.
Kenichi Handa <handa@m17n.org>
parents:
94994
diff
changeset
|
384 utf_with_bom |
88365 | 385 }; |
386 | |
387 enum utf_16_endian_type | |
388 { | |
389 utf_16_big_endian, | |
390 utf_16_little_endian | |
17052 | 391 }; |
392 | |
88365 | 393 struct utf_16_spec |
26846
1a0f5960e65e
(emacs_code_class_type): Delete the member
Kenichi Handa <handa@m17n.org>
parents:
26088
diff
changeset
|
394 { |
95396
7223da1c87c2
(enum define_coding_utf8_arg_index): New enum.
Kenichi Handa <handa@m17n.org>
parents:
94994
diff
changeset
|
395 enum utf_bom_type bom; |
88365 | 396 enum utf_16_endian_type endian; |
397 int surrogate; | |
26846
1a0f5960e65e
(emacs_code_class_type): Delete the member
Kenichi Handa <handa@m17n.org>
parents:
26088
diff
changeset
|
398 }; |
17052 | 399 |
89330
ee0338e83a2b
(struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents:
89172
diff
changeset
|
400 struct coding_detection_info |
ee0338e83a2b
(struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents:
89172
diff
changeset
|
401 { |
ee0338e83a2b
(struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents:
89172
diff
changeset
|
402 /* 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
|
403 /* Which categories are already checked. */ |
ee0338e83a2b
(struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents:
89172
diff
changeset
|
404 int checked; |
ee0338e83a2b
(struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents:
89172
diff
changeset
|
405 /* Which categories are strongly found. */ |
ee0338e83a2b
(struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents:
89172
diff
changeset
|
406 int found; |
ee0338e83a2b
(struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents:
89172
diff
changeset
|
407 /* Which categories are rejected. */ |
ee0338e83a2b
(struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents:
89172
diff
changeset
|
408 int rejected; |
ee0338e83a2b
(struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents:
89172
diff
changeset
|
409 }; |
20717
19463997fbc6
(CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents:
20308
diff
changeset
|
410 |
19463997fbc6
(CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents:
20308
diff
changeset
|
411 |
17052 | 412 struct coding_system |
413 { | |
88365 | 414 /* ID number of the coding system. This is an index to |
415 Vcoding_system_hash_table. This value is set by | |
416 setup_coding_system. At the early stage of building time, this | |
417 value is -1 in the array coding_categories to indicate that no | |
418 coding-system of that category is yet defined. */ | |
419 int id; | |
20717
19463997fbc6
(CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents:
20308
diff
changeset
|
420 |
20226
549826cf2952
(struct coding_system): Add member common_flags, delete
Kenichi Handa <handa@m17n.org>
parents:
20149
diff
changeset
|
421 /* 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
|
422 to all types of coding systems. */ |
88365 | 423 int common_flags; |
17052 | 424 |
20717
19463997fbc6
(CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents:
20308
diff
changeset
|
425 /* 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
|
426 CODING_MODE_XXX. */ |
19463997fbc6
(CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents:
20308
diff
changeset
|
427 unsigned int mode; |
17052 | 428 |
429 /* Detailed information specific to each type of coding system. */ | |
88365 | 430 union |
17052 | 431 { |
88365 | 432 struct iso_2022_spec iso_2022; |
433 struct ccl_spec *ccl; /* Defined in ccl.h. */ | |
434 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
|
435 enum utf_bom_type utf_8_bom; |
102423 | 436 struct emacs_mule_spec emacs_mule; |
17052 | 437 } spec; |
438 | |
88365 | 439 int max_charset_id; |
102186
a12d39ca6870
* coding.h (struct coding_system): Make safe_charsets a pointer to
Andreas Schwab <schwab@suse.de>
parents:
101777
diff
changeset
|
440 unsigned char *safe_charsets; |
20717
19463997fbc6
(CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents:
20308
diff
changeset
|
441 |
88365 | 442 /* The following two members specify how binary 8-bit code 128..255 |
443 are represented in source and destination text respectively. 1 | |
444 means they are represented by 2-byte sequence, 0 means they are | |
445 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
|
446 unsigned src_multibyte : 1; |
bf92db6e609a
(enum iso_code_class_type): Member ISO_control_code is
Kenichi Handa <handa@m17n.org>
parents:
28512
diff
changeset
|
447 unsigned dst_multibyte : 1; |
bf92db6e609a
(enum iso_code_class_type): Member ISO_control_code is
Kenichi Handa <handa@m17n.org>
parents:
28512
diff
changeset
|
448 |
21320
278c256defc6
(struct coding_system): Comment for the member
Kenichi Handa <handa@m17n.org>
parents:
21051
diff
changeset
|
449 /* 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
|
450 -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
|
451 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
|
452 converted, we can skip the actual conversion process. */ |
88365 | 453 int head_ascii; |
20717
19463997fbc6
(CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents:
20308
diff
changeset
|
454 |
19463997fbc6
(CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents:
20308
diff
changeset
|
455 /* The following members are set by encoding/decoding routine. */ |
88365 | 456 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
|
457 |
29006
bf92db6e609a
(enum iso_code_class_type): Member ISO_control_code is
Kenichi Handa <handa@m17n.org>
parents:
28512
diff
changeset
|
458 /* 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
|
459 int errors; |
bf92db6e609a
(enum iso_code_class_type): Member ISO_control_code is
Kenichi Handa <handa@m17n.org>
parents:
28512
diff
changeset
|
460 |
88365 | 461 /* Store the positions of error source data. */ |
462 EMACS_INT *error_positions; | |
20930
1331679fe704
(struct coding_system): New member fake_multibyte.
Kenichi Handa <handa@m17n.org>
parents:
20717
diff
changeset
|
463 |
88365 | 464 /* Finish status of code conversion. */ |
465 enum coding_result_code result; | |
35530
cb627d09f8c3
(struct coding_system): New member suppress_error.
Kenichi Handa <handa@m17n.org>
parents:
34152
diff
changeset
|
466 |
88365 | 467 EMACS_INT src_pos, src_pos_byte, src_chars, src_bytes; |
468 Lisp_Object src_object; | |
89483 | 469 const unsigned char *source; |
20930
1331679fe704
(struct coding_system): New member fake_multibyte.
Kenichi Handa <handa@m17n.org>
parents:
20717
diff
changeset
|
470 |
88365 | 471 EMACS_INT dst_pos, dst_pos_byte, dst_bytes; |
472 Lisp_Object dst_object; | |
473 unsigned char *destination; | |
35530
cb627d09f8c3
(struct coding_system): New member suppress_error.
Kenichi Handa <handa@m17n.org>
parents:
34152
diff
changeset
|
474 |
91005 | 475 /* Set to 1 if the source of conversion is not in the member |
89886 | 476 `charbuf', but at `src_object'. */ |
88365 | 477 int chars_at_source; |
478 | |
479 /* If an element is non-negative, it is a character code. | |
480 | |
481 If it is in the range -128..-1, it is a 8-bit character code | |
482 minus 256. | |
20717
19463997fbc6
(CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents:
20308
diff
changeset
|
483 |
88365 | 484 If it is less than -128, it specifies the start of an annotation |
485 chunk. The length of the chunk is -128 minus the value of the | |
486 element. The following elements are OFFSET, ANNOTATION-TYPE, and | |
487 a sequence of actual data for the annotation. OFFSET is a | |
488 character position offset from dst_pos or src_pos, | |
489 ANNOTATION-TYPE specfies the meaning of the annotation and how to | |
490 handle the following data.. */ | |
491 int *charbuf; | |
492 int charbuf_size, charbuf_used; | |
17052 | 493 |
88365 | 494 /* Set to 1 if charbuf contains an annotation. */ |
495 int annotated; | |
496 | |
497 unsigned char carryover[64]; | |
498 int carryover_bytes; | |
17052 | 499 |
88365 | 500 int default_char; |
501 | |
89330
ee0338e83a2b
(struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents:
89172
diff
changeset
|
502 int (*detector) P_ ((struct coding_system *, |
ee0338e83a2b
(struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents:
89172
diff
changeset
|
503 struct coding_detection_info *)); |
88365 | 504 void (*decoder) P_ ((struct coding_system *)); |
505 int (*encoder) P_ ((struct coding_system *)); | |
17052 | 506 }; |
507 | |
88365 | 508 /* Meanings of bits in the member `common_flags' of the structure |
509 coding_system. The lowest 8 bits are reserved for various kind of | |
510 annotations (currently two of them are used). */ | |
511 #define CODING_ANNOTATION_MASK 0x00FF | |
512 #define CODING_ANNOTATE_COMPOSITION_MASK 0x0001 | |
513 #define CODING_ANNOTATE_DIRECTION_MASK 0x0002 | |
89330
ee0338e83a2b
(struct coding_detection_info): New structure.
Kenichi Handa <handa@m17n.org>
parents:
89172
diff
changeset
|
514 #define CODING_ANNOTATE_CHARSET_MASK 0x0003 |
88365 | 515 #define CODING_FOR_UNIBYTE_MASK 0x0100 |
516 #define CODING_REQUIRE_FLUSHING_MASK 0x0200 | |
517 #define CODING_REQUIRE_DECODING_MASK 0x0400 | |
518 #define CODING_REQUIRE_ENCODING_MASK 0x0800 | |
519 #define CODING_REQUIRE_DETECTION_MASK 0x1000 | |
520 #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
|
521 |
88365 | 522 /* Return 1 if the coding context CODING requires annotaion |
523 handling. */ | |
524 #define CODING_REQUIRE_ANNOTATION(coding) \ | |
525 ((coding)->common_flags & CODING_ANNOTATION_MASK) | |
526 | |
527 /* Return 1 if the coding context CODING prefers decoding into unibyte. */ | |
528 #define CODING_FOR_UNIBYTE(coding) \ | |
529 ((coding)->common_flags & CODING_FOR_UNIBYTE_MASK) | |
530 | |
531 /* 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
|
532 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
|
533 #define CODING_REQUIRE_FLUSHING(coding) \ |
549826cf2952
(struct coding_system): Add member common_flags, delete
Kenichi Handa <handa@m17n.org>
parents:
20149
diff
changeset
|
534 ((coding)->common_flags & CODING_REQUIRE_FLUSHING_MASK) |
17052 | 535 |
88365 | 536 /* 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
|
537 decoding. */ |
549826cf2952
(struct coding_system): Add member common_flags, delete
Kenichi Handa <handa@m17n.org>
parents:
20149
diff
changeset
|
538 #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
|
539 ((coding)->dst_multibyte \ |
bf92db6e609a
(enum iso_code_class_type): Member ISO_control_code is
Kenichi Handa <handa@m17n.org>
parents:
28512
diff
changeset
|
540 || (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
|
541 |
88365 | 542 |
543 /* 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
|
544 encoding. |
216c04e10ca3
(CODING_REQUIRE_ENCODING): Elaborate the comment.
Eli Zaretskii <eliz@gnu.org>
parents:
70703
diff
changeset
|
545 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
|
546 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
|
547 (set-buffer-multibyte nil) from multibyte strings/buffers. */ |
88365 | 548 #define CODING_REQUIRE_ENCODING(coding) \ |
549 ((coding)->src_multibyte \ | |
550 || (coding)->common_flags & CODING_REQUIRE_ENCODING_MASK \ | |
551 || (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
|
552 |
88365 | 553 |
554 /* 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
|
555 detection. */ |
549826cf2952
(struct coding_system): Add member common_flags, delete
Kenichi Handa <handa@m17n.org>
parents:
20149
diff
changeset
|
556 #define CODING_REQUIRE_DETECTION(coding) \ |
549826cf2952
(struct coding_system): Add member common_flags, delete
Kenichi Handa <handa@m17n.org>
parents:
20149
diff
changeset
|
557 ((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
|
558 |
88365 | 559 /* 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
|
560 decoding or some kind of code detection. */ |
20717
19463997fbc6
(CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents:
20308
diff
changeset
|
561 #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
|
562 (CODING_REQUIRE_DECODING (coding) \ |
bf92db6e609a
(enum iso_code_class_type): Member ISO_control_code is
Kenichi Handa <handa@m17n.org>
parents:
28512
diff
changeset
|
563 || CODING_REQUIRE_DETECTION (coding)) |
17052 | 564 |
565 /* Macros to decode or encode a character of JISX0208 in SJIS. S1 and | |
566 S2 are the 1st and 2nd position-codes of JISX0208 in SJIS coding | |
567 system. C1 and C2 are the 1st and 2nd position codes of Emacs' | |
568 internal format. */ | |
569 | |
88365 | 570 #define SJIS_TO_JIS(code) \ |
571 do { \ | |
572 int s1, s2, j1, j2; \ | |
573 \ | |
574 s1 = (code) >> 8, s2 = (code) & 0xFF; \ | |
575 \ | |
576 if (s2 >= 0x9F) \ | |
577 (j1 = s1 * 2 - (s1 >= 0xE0 ? 0x160 : 0xE0), \ | |
578 j2 = s2 - 0x7E); \ | |
579 else \ | |
580 (j1 = s1 * 2 - ((s1 >= 0xE0) ? 0x161 : 0xE1), \ | |
581 j2 = s2 - ((s2 >= 0x7F) ? 0x20 : 0x1F)); \ | |
582 (code) = (j1 << 8) | j2; \ | |
17052 | 583 } while (0) |
584 | |
89765
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
585 #define SJIS_TO_JIS2(code) \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
586 do { \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
587 int s1, s2, j1, j2; \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
588 \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
589 s1 = (code) >> 8, s2 = (code) & 0xFF; \ |
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 if (s2 >= 0x9F) \ |
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 j1 = (s1 == 0xF0 ? 0x28 \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
594 : s1 == 0xF1 ? 0x24 \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
595 : s1 == 0xF2 ? 0x2C \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
596 : s1 == 0xF3 ? 0x2E \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
597 : 0x6E + (s1 - 0xF4) * 2); \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
598 j2 = s2 - 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 else \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
601 { \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
602 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
|
603 : s1 <= 0xF4 ? 0x2D + (s1 - 0xF3) * 2 \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
604 : 0x6F + (s1 - 0xF5) * 2); \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
605 j2 = s2 - ((s2 >= 0x7F ? 0x20 : 0x1F)); \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
606 } \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
607 (code) = (j1 << 8) | j2; \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
608 } while (0) |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
609 |
88365 | 610 |
611 #define JIS_TO_SJIS(code) \ | |
17052 | 612 do { \ |
88365 | 613 int s1, s2, j1, j2; \ |
614 \ | |
615 j1 = (code) >> 8, j2 = (code) & 0xFF; \ | |
616 if (j1 & 1) \ | |
617 (s1 = j1 / 2 + ((j1 < 0x5F) ? 0x71 : 0xB1), \ | |
618 s2 = j2 + ((j2 >= 0x60) ? 0x20 : 0x1F)); \ | |
17052 | 619 else \ |
88365 | 620 (s1 = j1 / 2 + ((j1 < 0x5F) ? 0x70 : 0xB0), \ |
621 s2 = j2 + 0x7E); \ | |
88498
1dd66ce3fc9c
(JIS_TO_SJIS): Fix typo (j1->s1, j2->s2).
Kenichi Handa <handa@m17n.org>
parents:
88365
diff
changeset
|
622 (code) = (s1 << 8) | s2; \ |
17052 | 623 } while (0) |
624 | |
89765
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
625 #define JIS_TO_SJIS2(code) \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
626 do { \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
627 int s1, s2, j1, j2; \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
628 \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
629 j1 = (code) >> 8, j2 = (code) & 0xFF; \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
630 if (j1 & 1) \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
631 { \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
632 s1 = (j1 <= 0x25 ? 0xF0 + (j1 - 0x21) / 2 \ |
103763
578826d532dc
(JIS_TO_SJIS2): Fix the code range check.
Kenichi Handa <handa@m17n.org>
parents:
102423
diff
changeset
|
633 : j1 <= 0x2F ? 0xF3 + (j1 - 0x2D) / 2 \ |
89765
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
634 : 0xF5 + (j1 - 0x6F) / 2); \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
635 s2 = j2 + ((j2 >= 0x60) ? 0x20 : 0x1F); \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
636 } \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
637 else \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
638 { \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
639 s1 = (j1 == 0x28 ? 0xF0 \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
640 : j1 == 0x24 ? 0xF1 \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
641 : j1 == 0x2C ? 0xF2 \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
642 : j1 == 0x2E ? 0xF3 \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
643 : 0xF4 + (j1 - 0x6E) / 2); \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
644 s2 = j2 + 0x7E; \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
645 } \ |
b06a8c2162e5
(SJIS_TO_JIS2, JIS_TO_SJIS2): New macros.
Kenichi Handa <handa@m17n.org>
parents:
89733
diff
changeset
|
646 (code) = (s1 << 8) | s2; \ |
17052 | 647 } while (0) |
648 | |
21051
b5844e2bf088
(ENCODE_FILE): Moved from fileio.c. Use
Kenichi Handa <handa@m17n.org>
parents:
21031
diff
changeset
|
649 /* 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
|
650 for file names, if any. */ |
b5844e2bf088
(ENCODE_FILE): Moved from fileio.c. Use
Kenichi Handa <handa@m17n.org>
parents:
21031
diff
changeset
|
651 #define ENCODE_FILE(name) \ |
b5844e2bf088
(ENCODE_FILE): Moved from fileio.c. Use
Kenichi Handa <handa@m17n.org>
parents:
21031
diff
changeset
|
652 (! 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
|
653 && !EQ (Vfile_name_coding_system, make_number (0)) \ |
22342 | 654 ? 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
|
655 : (! 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
|
656 && !EQ (Vdefault_file_name_coding_system, make_number (0)) \ |
22342 | 657 ? 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
|
658 : name)) |
b5844e2bf088
(ENCODE_FILE): Moved from fileio.c. Use
Kenichi Handa <handa@m17n.org>
parents:
21031
diff
changeset
|
659 |
88365 | 660 |
21051
b5844e2bf088
(ENCODE_FILE): Moved from fileio.c. Use
Kenichi Handa <handa@m17n.org>
parents:
21031
diff
changeset
|
661 /* 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
|
662 for file names, if any. */ |
b5844e2bf088
(ENCODE_FILE): Moved from fileio.c. Use
Kenichi Handa <handa@m17n.org>
parents:
21031
diff
changeset
|
663 #define DECODE_FILE(name) \ |
b5844e2bf088
(ENCODE_FILE): Moved from fileio.c. Use
Kenichi Handa <handa@m17n.org>
parents:
21031
diff
changeset
|
664 (! 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
|
665 && !EQ (Vfile_name_coding_system, make_number (0)) \ |
22342 | 666 ? 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
|
667 : (! 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
|
668 && !EQ (Vdefault_file_name_coding_system, make_number (0)) \ |
22342 | 669 ? 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
|
670 : name)) |
b5844e2bf088
(ENCODE_FILE): Moved from fileio.c. Use
Kenichi Handa <handa@m17n.org>
parents:
21031
diff
changeset
|
671 |
88365 | 672 |
29310
2ffc1fff111a
(ENCODE_SYSTEM, DECODE_SYSTEM) [WINDOWSNT]: New macros.
Jason Rumney <jasonr@gnu.org>
parents:
29274
diff
changeset
|
673 /* 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
|
674 for system functions, if any. */ |
29310
2ffc1fff111a
(ENCODE_SYSTEM, DECODE_SYSTEM) [WINDOWSNT]: New macros.
Jason Rumney <jasonr@gnu.org>
parents:
29274
diff
changeset
|
675 #define ENCODE_SYSTEM(str) \ |
41323
084520255528
(Vw32_system_coding_system) [WINDOWSNT]: Remove.
Jason Rumney <jasonr@gnu.org>
parents:
39574
diff
changeset
|
676 (! NILP (Vlocale_coding_system) \ |
58453
04580c50dd1c
(ENCODE_FILE, DECODE_FILE, ENCODE_SYSTEM, DECODE_SYSTEM):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52401
diff
changeset
|
677 && !EQ (Vlocale_coding_system, make_number (0)) \ |
41323
084520255528
(Vw32_system_coding_system) [WINDOWSNT]: Remove.
Jason Rumney <jasonr@gnu.org>
parents:
39574
diff
changeset
|
678 ? 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
|
679 : str) |
2ffc1fff111a
(ENCODE_SYSTEM, DECODE_SYSTEM) [WINDOWSNT]: New macros.
Jason Rumney <jasonr@gnu.org>
parents:
29274
diff
changeset
|
680 |
2ffc1fff111a
(ENCODE_SYSTEM, DECODE_SYSTEM) [WINDOWSNT]: New macros.
Jason Rumney <jasonr@gnu.org>
parents:
29274
diff
changeset
|
681 /* 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
|
682 for system functions, if any. */ |
66463
e791e75479c9
(DECODE_SYSTEM): Fix argument name; name->str.
Kenichi Handa <handa@m17n.org>
parents:
64770
diff
changeset
|
683 #define DECODE_SYSTEM(str) \ |
41323
084520255528
(Vw32_system_coding_system) [WINDOWSNT]: Remove.
Jason Rumney <jasonr@gnu.org>
parents:
39574
diff
changeset
|
684 (! NILP (Vlocale_coding_system) \ |
58453
04580c50dd1c
(ENCODE_FILE, DECODE_FILE, ENCODE_SYSTEM, DECODE_SYSTEM):
Stefan Monnier <monnier@iro.umontreal.ca>
parents:
52401
diff
changeset
|
685 && !EQ (Vlocale_coding_system, make_number (0)) \ |
41323
084520255528
(Vw32_system_coding_system) [WINDOWSNT]: Remove.
Jason Rumney <jasonr@gnu.org>
parents:
39574
diff
changeset
|
686 ? 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
|
687 : str) |
39574
bdd381bc9eb0
(ENCODE_SYSTEM, DECODE_SYSTEM): Define also for non-NT.
Gerd Moellmann <gerd@gnu.org>
parents:
36088
diff
changeset
|
688 |
89506 | 689 /* Used by the gtk menu code. Note that this encodes utf-8, not |
690 utf-8-emacs, so it's not a no-op. */ | |
51407 | 691 #define ENCODE_UTF_8(str) code_convert_string_norecord (str, Qutf_8, 1) |
692 | |
17052 | 693 /* Extern declarations. */ |
89666
7d38a63951c0
(make_conversion_work_buffer): Delete extern.
Kenichi Handa <handa@m17n.org>
parents:
89506
diff
changeset
|
694 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
|
695 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
|
696 extern int encoding_buffer_size P_ ((struct coding_system *, int)); |
88365 | 697 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
|
698 extern Lisp_Object coding_charset_list P_ ((struct coding_system *)); |
101777
99033eb8c94c
(coding_system_charset_list): Extern it.
Kenichi Handa <handa@m17n.org>
parents:
100951
diff
changeset
|
699 extern Lisp_Object coding_system_charset_list P_ ((Lisp_Object)); |
88365 | 700 extern void detect_coding P_ ((struct coding_system *)); |
88848
a55219c46b8c
(code_convert_region): Fix prototype.
Dave Love <fx@gnu.org>
parents:
88688
diff
changeset
|
701 extern Lisp_Object code_convert_region P_ ((Lisp_Object, Lisp_Object, |
88365 | 702 Lisp_Object, Lisp_Object, |
703 int, int)); | |
704 extern Lisp_Object code_convert_string P_ ((Lisp_Object, Lisp_Object, | |
705 Lisp_Object, int, int, int)); | |
29438
8c825a8566f5
Declare code_convert_string_norecord.
Dave Love <fx@gnu.org>
parents:
29310
diff
changeset
|
706 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
|
707 int)); |
88365 | 708 extern Lisp_Object raw_text_coding_system P_ ((Lisp_Object)); |
709 extern Lisp_Object coding_inherit_eol_type P_ ((Lisp_Object, Lisp_Object)); | |
710 | |
711 extern int decode_coding_gap P_ ((struct coding_system *, | |
712 EMACS_INT, EMACS_INT)); | |
713 extern int encode_coding_gap P_ ((struct coding_system *, | |
714 EMACS_INT, EMACS_INT)); | |
715 extern void decode_coding_object P_ ((struct coding_system *, | |
716 Lisp_Object, EMACS_INT, EMACS_INT, | |
717 EMACS_INT, EMACS_INT, Lisp_Object)); | |
718 extern void encode_coding_object P_ ((struct coding_system *, | |
719 Lisp_Object, EMACS_INT, EMACS_INT, | |
720 EMACS_INT, EMACS_INT, Lisp_Object)); | |
721 | |
89886 | 722 /* Macros for backward compatibility. */ |
723 | |
88365 | 724 #define decode_coding_region(coding, from, to) \ |
725 decode_coding_object (coding, Fcurrent_buffer (), \ | |
726 from, CHAR_TO_BYTE (from), \ | |
727 to, CHAR_TO_BYTE (to), Fcurrent_buffer ()) | |
728 | |
729 | |
730 #define encode_coding_region(coding, from, to) \ | |
731 encode_coding_object (coding, Fcurrent_buffer (), \ | |
732 from, CHAR_TO_BYTE (from), \ | |
733 to, CHAR_TO_BYTE (to), Fcurrent_buffer ()) | |
734 | |
735 | |
736 #define decode_coding_string(coding, string, nocopy) \ | |
104060
eaf56f321ac0
* coding.h (decode_coding_string, encode_coding_string): Use
Ken Raeburn <raeburn@raeburn.org>
parents:
103763
diff
changeset
|
737 decode_coding_object (coding, string, 0, 0, SCHARS (string), \ |
104224
bd10839bac0e
(decode_coding_string, encode_coding_string): Use SBYTES macro.
Ken Raeburn <raeburn@raeburn.org>
parents:
104060
diff
changeset
|
738 SBYTES (string), Qt) |
88365 | 739 |
740 #define encode_coding_string(coding, string, nocopy) \ | |
104537
4f700f983ef9
(encode_coding_string): Don't encode unibyte strings. (Bug#4047)
Eli Zaretskii <eliz@gnu.org>
parents:
104224
diff
changeset
|
741 (STRING_MULTIBYTE(string) ? \ |
4f700f983ef9
(encode_coding_string): Don't encode unibyte strings. (Bug#4047)
Eli Zaretskii <eliz@gnu.org>
parents:
104224
diff
changeset
|
742 (encode_coding_object (coding, string, 0, 0, SCHARS (string), \ |
4f700f983ef9
(encode_coding_string): Don't encode unibyte strings. (Bug#4047)
Eli Zaretskii <eliz@gnu.org>
parents:
104224
diff
changeset
|
743 SBYTES (string), Qt), \ |
4f700f983ef9
(encode_coding_string): Don't encode unibyte strings. (Bug#4047)
Eli Zaretskii <eliz@gnu.org>
parents:
104224
diff
changeset
|
744 (coding)->dst_object) : (string)) |
88365 | 745 |
746 | |
747 #define decode_coding_c_string(coding, src, bytes, dst_object) \ | |
748 do { \ | |
749 (coding)->source = (src); \ | |
750 (coding)->src_chars = (coding)->src_bytes = (bytes); \ | |
751 decode_coding_object ((coding), Qnil, 0, 0, (bytes), (bytes), \ | |
752 (dst_object)); \ | |
753 } while (0) | |
754 | |
755 | |
756 extern Lisp_Object preferred_coding_system P_ (()); | |
757 | |
758 | |
89483 | 759 extern Lisp_Object Qutf_8, Qutf_8_emacs; |
760 | |
17052 | 761 extern Lisp_Object Qcoding_system, Qeol_type, Qcoding_category_index; |
88365 | 762 extern Lisp_Object Qcoding_system_p; |
763 extern Lisp_Object Qraw_text, Qemacs_mule, Qno_conversion, Qundecided; | |
764 extern Lisp_Object Qiso_2022; | |
17052 | 765 extern Lisp_Object Qbuffer_file_coding_system; |
88365 | 766 |
767 extern Lisp_Object Qunix, Qdos, Qmac; | |
17052 | 768 |
22186
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22118
diff
changeset
|
769 extern Lisp_Object Qtranslation_table; |
fc4aaf1b1772
Change term "character translation table" to "translation table".
Kenichi Handa <handa@m17n.org>
parents:
22118
diff
changeset
|
770 extern Lisp_Object Qtranslation_table_id; |
22118
42e2ffa98618
Change terms unify/unification to
Kenichi Handa <handa@m17n.org>
parents:
21901
diff
changeset
|
771 |
24201
d324ba7d0e40
eol-mnemonic-* variables are now strings, not characters.
Eli Zaretskii <eliz@gnu.org>
parents:
23324
diff
changeset
|
772 /* 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
|
773 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
|
774 /* 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
|
775 extern Lisp_Object eol_mnemonic_undecided; |
17052 | 776 |
777 #ifdef emacs | |
778 extern Lisp_Object Qfile_coding_system; | |
64251
3de1b955c31a
* coding.c (Qprocess_argument):
Kim F. Storm <storm@cua.dk>
parents:
64084
diff
changeset
|
779 extern Lisp_Object Qcall_process, Qcall_process_region; |
17052 | 780 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
|
781 extern Lisp_Object Qwrite_region; |
17052 | 782 |
26088
b7aa6ac26872
Add support for large files, 64-bit Solaris, system locale codings.
Paul Eggert <eggert@twinsun.com>
parents:
25378
diff
changeset
|
783 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
|
784 |
17052 | 785 /* Coding-system for reading files and receiving data from process. */ |
786 extern Lisp_Object Vcoding_system_for_read; | |
787 /* Coding-system for writing files and sending data to process. */ | |
788 extern Lisp_Object Vcoding_system_for_write; | |
789 /* Coding-system actually used in the latest I/O. */ | |
790 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
|
791 /* 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
|
792 extern Lisp_Object Vlocale_coding_system; |
17052 | 793 |
21573
92b33933ceeb
Declare inherit-process-coding-system.
Eli Zaretskii <eliz@gnu.org>
parents:
21515
diff
changeset
|
794 /* 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
|
795 the subprocess output. */ |
92b33933ceeb
Declare inherit-process-coding-system.
Eli Zaretskii <eliz@gnu.org>
parents:
21515
diff
changeset
|
796 extern int inherit_process_coding_system; |
92b33933ceeb
Declare inherit-process-coding-system.
Eli Zaretskii <eliz@gnu.org>
parents:
21515
diff
changeset
|
797 |
19279
3217a3ba8ef7
(CODING_FLAG_ISO_SAFE): New macro.
Kenichi Handa <handa@m17n.org>
parents:
19096
diff
changeset
|
798 /* 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
|
799 terminal coding system is nil. */ |
3217a3ba8ef7
(CODING_FLAG_ISO_SAFE): New macro.
Kenichi Handa <handa@m17n.org>
parents:
19096
diff
changeset
|
800 extern struct coding_system safe_terminal_coding; |
3217a3ba8ef7
(CODING_FLAG_ISO_SAFE): New macro.
Kenichi Handa <handa@m17n.org>
parents:
19096
diff
changeset
|
801 |
18181
1d91f0e4ff7d
(Vdefault_process_coding_system): Extern it.
Kenichi Handa <handa@m17n.org>
parents:
18001
diff
changeset
|
802 /* Default coding systems used for process I/O. */ |
1d91f0e4ff7d
(Vdefault_process_coding_system): Extern it.
Kenichi Handa <handa@m17n.org>
parents:
18001
diff
changeset
|
803 extern Lisp_Object Vdefault_process_coding_system; |
17052 | 804 |
88365 | 805 /* 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
|
806 system. */ |
19463997fbc6
(CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents:
20308
diff
changeset
|
807 extern Lisp_Object Vselect_safe_coding_system_function; |
19463997fbc6
(CODING_FLAG_ISO_DESIGNATION): New macro.
Kenichi Handa <handa@m17n.org>
parents:
20308
diff
changeset
|
808 |
48875
e79464fe61d7
(coding_system_require_warning): Extern it.
Kenichi Handa <handa@m17n.org>
parents:
46549
diff
changeset
|
809 /* 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
|
810 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
|
811 extern int coding_system_require_warning; |
e79464fe61d7
(coding_system_require_warning): Extern it.
Kenichi Handa <handa@m17n.org>
parents:
46549
diff
changeset
|
812 |
21901
1b46a79d86e3
(Vfile_name_coding_system)
Richard M. Stallman <rms@gnu.org>
parents:
21573
diff
changeset
|
813 /* Coding system for file names, or nil if none. */ |
1b46a79d86e3
(Vfile_name_coding_system)
Richard M. Stallman <rms@gnu.org>
parents:
21573
diff
changeset
|
814 extern Lisp_Object Vfile_name_coding_system; |
1b46a79d86e3
(Vfile_name_coding_system)
Richard M. Stallman <rms@gnu.org>
parents:
21573
diff
changeset
|
815 |
1b46a79d86e3
(Vfile_name_coding_system)
Richard M. Stallman <rms@gnu.org>
parents:
21573
diff
changeset
|
816 /* Coding system for file names used only when |
1b46a79d86e3
(Vfile_name_coding_system)
Richard M. Stallman <rms@gnu.org>
parents:
21573
diff
changeset
|
817 Vfile_name_coding_system is nil. */ |
1b46a79d86e3
(Vfile_name_coding_system)
Richard M. Stallman <rms@gnu.org>
parents:
21573
diff
changeset
|
818 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
|
819 |
17052 | 820 #endif |
821 | |
34107
46e0ec24a961
(Qwrite_region, Qcoding_system_error): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents:
30832
diff
changeset
|
822 /* 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
|
823 extern Lisp_Object Qcoding_system_error; |
46e0ec24a961
(Qwrite_region, Qcoding_system_error): Declare extern.
Gerd Moellmann <gerd@gnu.org>
parents:
30832
diff
changeset
|
824 |
88365 | 825 extern char emacs_mule_bytes[256]; |
826 extern int emacs_mule_string_char P_ ((unsigned char *)); | |
827 | |
29571
951ead33c624
(EMASC_CODING_H): Renamed from _CODING_H.
Kenichi Handa <handa@m17n.org>
parents:
29438
diff
changeset
|
828 #endif /* EMACS_CODING_H */ |
52401 | 829 |
830 /* arch-tag: 2bc3b4fa-6870-4f64-8135-b962b2d290e4 | |
831 (do not change this comment) */ |