Mercurial > hg > xemacs-beta
comparison src/file-coding.h @ 263:727739f917cb r20-5b30
Import from CVS: tag r20-5b30
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:24:41 +0200 |
parents | 405dd6d1825b |
children | c5d627a313b1 |
comparison
equal
deleted
inserted
replaced
262:9d8607af9e13 | 263:727739f917cb |
---|---|
60 EOL_LF, | 60 EOL_LF, |
61 EOL_CRLF, | 61 EOL_CRLF, |
62 EOL_CR | 62 EOL_CR |
63 }; | 63 }; |
64 | 64 |
65 #ifdef MULE | |
65 typedef struct charset_conversion_spec charset_conversion_spec; | 66 typedef struct charset_conversion_spec charset_conversion_spec; |
66 struct charset_conversion_spec | 67 struct charset_conversion_spec |
67 { | 68 { |
68 Lisp_Object from_charset; | 69 Lisp_Object from_charset; |
69 Lisp_Object to_charset; | 70 Lisp_Object to_charset; |
71 | 72 |
72 typedef struct | 73 typedef struct |
73 { | 74 { |
74 Dynarr_declare (charset_conversion_spec); | 75 Dynarr_declare (charset_conversion_spec); |
75 } charset_conversion_spec_dynarr; | 76 } charset_conversion_spec_dynarr; |
77 #endif | |
76 | 78 |
77 struct Lisp_Coding_System | 79 struct Lisp_Coding_System |
78 { | 80 { |
79 struct lcrecord_header header; | 81 struct lcrecord_header header; |
80 | 82 |
95 | 97 |
96 /* Subsidiary coding systems that specify a particular type of EOL | 98 /* Subsidiary coding systems that specify a particular type of EOL |
97 marking, rather than autodetecting it. These will only be non-nil | 99 marking, rather than autodetecting it. These will only be non-nil |
98 if (eol_type == EOL_AUTODETECT). */ | 100 if (eol_type == EOL_AUTODETECT). */ |
99 Lisp_Object eol_lf, eol_crlf, eol_cr; | 101 Lisp_Object eol_lf, eol_crlf, eol_cr; |
100 | 102 #ifdef MULE |
101 struct | 103 struct |
102 { | 104 { |
103 /* What are the charsets to be initially designated to G0, G1, | 105 /* What are the charsets to be initially designated to G0, G1, |
104 G2, G3? If t, no charset is initially designated. If nil, | 106 G2, G3? If t, no charset is initially designated. If nil, |
105 no charset is initially designated and no charset is allowed | 107 no charset is initially designated and no charset is allowed |
119 unsigned int seven :1; | 121 unsigned int seven :1; |
120 unsigned int lock_shift :1; | 122 unsigned int lock_shift :1; |
121 unsigned int no_iso6429 :1; | 123 unsigned int no_iso6429 :1; |
122 unsigned int escape_quoted :1; | 124 unsigned int escape_quoted :1; |
123 } iso2022; | 125 } iso2022; |
124 | |
125 struct | 126 struct |
126 { | 127 { |
127 /* For a CCL coding system, these specify the CCL programs used for | 128 /* For a CCL coding system, these specify the CCL programs used for |
128 decoding (input) and encoding (output). */ | 129 decoding (input) and encoding (output). */ |
129 Lisp_Object decode, encode; | 130 Lisp_Object decode, encode; |
130 } ccl; | 131 } ccl; |
132 #endif | |
131 }; | 133 }; |
132 | 134 |
133 DECLARE_LRECORD (coding_system, struct Lisp_Coding_System); | 135 DECLARE_LRECORD (coding_system, struct Lisp_Coding_System); |
134 #define XCODING_SYSTEM(x) XRECORD (x, coding_system, struct Lisp_Coding_System) | 136 #define XCODING_SYSTEM(x) XRECORD (x, coding_system, struct Lisp_Coding_System) |
135 #define XSETCODING_SYSTEM(x, p) XSETRECORD (x, p, coding_system) | 137 #define XSETCODING_SYSTEM(x, p) XSETRECORD (x, p, coding_system) |
148 ((codesys)->pre_write_conversion) | 150 ((codesys)->pre_write_conversion) |
149 #define CODING_SYSTEM_EOL_TYPE(codesys) ((codesys)->eol_type) | 151 #define CODING_SYSTEM_EOL_TYPE(codesys) ((codesys)->eol_type) |
150 #define CODING_SYSTEM_EOL_LF(codesys) ((codesys)->eol_lf) | 152 #define CODING_SYSTEM_EOL_LF(codesys) ((codesys)->eol_lf) |
151 #define CODING_SYSTEM_EOL_CRLF(codesys) ((codesys)->eol_crlf) | 153 #define CODING_SYSTEM_EOL_CRLF(codesys) ((codesys)->eol_crlf) |
152 #define CODING_SYSTEM_EOL_CR(codesys) ((codesys)->eol_cr) | 154 #define CODING_SYSTEM_EOL_CR(codesys) ((codesys)->eol_cr) |
155 | |
156 #ifdef MULE | |
153 #define CODING_SYSTEM_ISO2022_INITIAL_CHARSET(codesys, g) \ | 157 #define CODING_SYSTEM_ISO2022_INITIAL_CHARSET(codesys, g) \ |
154 ((codesys)->iso2022.initial_charset[g]) | 158 ((codesys)->iso2022.initial_charset[g]) |
155 #define CODING_SYSTEM_ISO2022_FORCE_CHARSET_ON_OUTPUT(codesys, g) \ | 159 #define CODING_SYSTEM_ISO2022_FORCE_CHARSET_ON_OUTPUT(codesys, g) \ |
156 ((codesys)->iso2022.force_charset_on_output[g]) | 160 ((codesys)->iso2022.force_charset_on_output[g]) |
157 #define CODING_SYSTEM_ISO2022_SHORT(codesys) ((codesys)->iso2022.shoort) | 161 #define CODING_SYSTEM_ISO2022_SHORT(codesys) ((codesys)->iso2022.shoort) |
166 ((codesys)->iso2022.no_iso6429) | 170 ((codesys)->iso2022.no_iso6429) |
167 #define CODING_SYSTEM_ISO2022_ESCAPE_QUOTED(codesys) \ | 171 #define CODING_SYSTEM_ISO2022_ESCAPE_QUOTED(codesys) \ |
168 ((codesys)->iso2022.escape_quoted) | 172 ((codesys)->iso2022.escape_quoted) |
169 #define CODING_SYSTEM_CCL_DECODE(codesys) ((codesys)->ccl.decode) | 173 #define CODING_SYSTEM_CCL_DECODE(codesys) ((codesys)->ccl.decode) |
170 #define CODING_SYSTEM_CCL_ENCODE(codesys) ((codesys)->ccl.encode) | 174 #define CODING_SYSTEM_CCL_ENCODE(codesys) ((codesys)->ccl.encode) |
175 #endif /* MULE */ | |
171 | 176 |
172 #define XCODING_SYSTEM_NAME(codesys) \ | 177 #define XCODING_SYSTEM_NAME(codesys) \ |
173 CODING_SYSTEM_NAME (XCODING_SYSTEM (codesys)) | 178 CODING_SYSTEM_NAME (XCODING_SYSTEM (codesys)) |
174 #define XCODING_SYSTEM_DOC_STRING(codesys) \ | 179 #define XCODING_SYSTEM_DOC_STRING(codesys) \ |
175 CODING_SYSTEM_DOC_STRING (XCODING_SYSTEM (codesys)) | 180 CODING_SYSTEM_DOC_STRING (XCODING_SYSTEM (codesys)) |
187 CODING_SYSTEM_EOL_LF (XCODING_SYSTEM (codesys)) | 192 CODING_SYSTEM_EOL_LF (XCODING_SYSTEM (codesys)) |
188 #define XCODING_SYSTEM_EOL_CRLF(codesys) \ | 193 #define XCODING_SYSTEM_EOL_CRLF(codesys) \ |
189 CODING_SYSTEM_EOL_CRLF (XCODING_SYSTEM (codesys)) | 194 CODING_SYSTEM_EOL_CRLF (XCODING_SYSTEM (codesys)) |
190 #define XCODING_SYSTEM_EOL_CR(codesys) \ | 195 #define XCODING_SYSTEM_EOL_CR(codesys) \ |
191 CODING_SYSTEM_EOL_CR (XCODING_SYSTEM (codesys)) | 196 CODING_SYSTEM_EOL_CR (XCODING_SYSTEM (codesys)) |
197 | |
198 #ifdef MULE | |
192 #define XCODING_SYSTEM_ISO2022_INITIAL_CHARSET(codesys, g) \ | 199 #define XCODING_SYSTEM_ISO2022_INITIAL_CHARSET(codesys, g) \ |
193 CODING_SYSTEM_ISO2022_INITIAL_CHARSET (XCODING_SYSTEM (codesys), g) | 200 CODING_SYSTEM_ISO2022_INITIAL_CHARSET (XCODING_SYSTEM (codesys), g) |
194 #define XCODING_SYSTEM_ISO2022_FORCE_CHARSET_ON_OUTPUT(codesys, g) \ | 201 #define XCODING_SYSTEM_ISO2022_FORCE_CHARSET_ON_OUTPUT(codesys, g) \ |
195 CODING_SYSTEM_ISO2022_FORCE_CHARSET_ON_OUTPUT (XCODING_SYSTEM (codesys), g) | 202 CODING_SYSTEM_ISO2022_FORCE_CHARSET_ON_OUTPUT (XCODING_SYSTEM (codesys), g) |
196 #define XCODING_SYSTEM_ISO2022_SHORT(codesys) \ | 203 #define XCODING_SYSTEM_ISO2022_SHORT(codesys) \ |
209 CODING_SYSTEM_ISO2022_ESCAPE_QUOTED (XCODING_SYSTEM (codesys)) | 216 CODING_SYSTEM_ISO2022_ESCAPE_QUOTED (XCODING_SYSTEM (codesys)) |
210 #define XCODING_SYSTEM_CCL_DECODE(codesys) \ | 217 #define XCODING_SYSTEM_CCL_DECODE(codesys) \ |
211 CODING_SYSTEM_CCL_DECODE (XCODING_SYSTEM (codesys)) | 218 CODING_SYSTEM_CCL_DECODE (XCODING_SYSTEM (codesys)) |
212 #define XCODING_SYSTEM_CCL_ENCODE(codesys) \ | 219 #define XCODING_SYSTEM_CCL_ENCODE(codesys) \ |
213 CODING_SYSTEM_CCL_ENCODE (XCODING_SYSTEM (codesys)) | 220 CODING_SYSTEM_CCL_ENCODE (XCODING_SYSTEM (codesys)) |
221 #endif /* MULE */ | |
214 | 222 |
215 extern Lisp_Object Qbuffer_file_coding_system, Qcoding_system_error; | 223 extern Lisp_Object Qbuffer_file_coding_system, Qcoding_system_error; |
216 | 224 |
217 extern Lisp_Object Vkeyboard_coding_system; | 225 extern Lisp_Object Vkeyboard_coding_system; |
218 extern Lisp_Object Vterminal_coding_system; | 226 extern Lisp_Object Vterminal_coding_system; |
233 escape sequences, etc. */ | 241 escape sequences, etc. */ |
234 #define CODING_STATE_CR (1 << 1) /* If set, we just saw a CR. */ | 242 #define CODING_STATE_CR (1 << 1) /* If set, we just saw a CR. */ |
235 | 243 |
236 | 244 |
237 /* Used by Big 5 on output. */ | 245 /* Used by Big 5 on output. */ |
238 | 246 #ifdef MULE |
239 #define CODING_STATE_BIG5_1 (1 << 2) /* If set, we just encountered | 247 #define CODING_STATE_BIG5_1 (1 << 2) /* If set, we just encountered |
240 LEADING_BYTE_BIG5_1. */ | 248 LEADING_BYTE_BIG5_1. */ |
241 #define CODING_STATE_BIG5_2 (1 << 3) /* If set, we just encountered | 249 #define CODING_STATE_BIG5_2 (1 << 3) /* If set, we just encountered |
242 LEADING_BYTE_BIG5_2. */ | 250 LEADING_BYTE_BIG5_2. */ |
243 | 251 |
351 #define ISO_CODE_ESC 0x1B /* escape */ | 359 #define ISO_CODE_ESC 0x1B /* escape */ |
352 #define ISO_CODE_DEL 0x7F /* delete */ | 360 #define ISO_CODE_DEL 0x7F /* delete */ |
353 #define ISO_CODE_SS2 0x8E /* single-shift-2 */ | 361 #define ISO_CODE_SS2 0x8E /* single-shift-2 */ |
354 #define ISO_CODE_SS3 0x8F /* single-shift-3 */ | 362 #define ISO_CODE_SS3 0x8F /* single-shift-3 */ |
355 #define ISO_CODE_CSI 0x9B /* control-sequence-introduce */ | 363 #define ISO_CODE_CSI 0x9B /* control-sequence-introduce */ |
364 #endif /* MULE */ | |
356 | 365 |
357 /* Macros to access an encoding stream or decoding stream */ | 366 /* Macros to access an encoding stream or decoding stream */ |
358 | 367 |
359 #define CODING_STREAM_DECOMPOSE(str, flags, ch) \ | 368 #define CODING_STREAM_DECOMPOSE(str, flags, ch) \ |
360 do { \ | 369 do { \ |
391 CODING_CATEGORY_NO_CONVERSION | 400 CODING_CATEGORY_NO_CONVERSION |
392 }; | 401 }; |
393 | 402 |
394 #define CODING_CATEGORY_LAST CODING_CATEGORY_NO_CONVERSION | 403 #define CODING_CATEGORY_LAST CODING_CATEGORY_NO_CONVERSION |
395 | 404 |
405 #ifdef MULE | |
396 #define CODING_CATEGORY_SHIFT_JIS_MASK \ | 406 #define CODING_CATEGORY_SHIFT_JIS_MASK \ |
397 (1 << CODING_CATEGORY_SHIFT_JIS) | 407 (1 << CODING_CATEGORY_SHIFT_JIS) |
398 #define CODING_CATEGORY_ISO_7_MASK \ | 408 #define CODING_CATEGORY_ISO_7_MASK \ |
399 (1 << CODING_CATEGORY_ISO_7) | 409 (1 << CODING_CATEGORY_ISO_7) |
400 #define CODING_CATEGORY_ISO_8_DESIGNATE_MASK \ | 410 #define CODING_CATEGORY_ISO_8_DESIGNATE_MASK \ |
405 (1 << CODING_CATEGORY_ISO_8_2) | 415 (1 << CODING_CATEGORY_ISO_8_2) |
406 #define CODING_CATEGORY_ISO_LOCK_SHIFT_MASK \ | 416 #define CODING_CATEGORY_ISO_LOCK_SHIFT_MASK \ |
407 (1 << CODING_CATEGORY_ISO_LOCK_SHIFT) | 417 (1 << CODING_CATEGORY_ISO_LOCK_SHIFT) |
408 #define CODING_CATEGORY_BIG5_MASK \ | 418 #define CODING_CATEGORY_BIG5_MASK \ |
409 (1 << CODING_CATEGORY_BIG5) | 419 (1 << CODING_CATEGORY_BIG5) |
420 #endif | |
410 #define CODING_CATEGORY_NO_CONVERSION_MASK \ | 421 #define CODING_CATEGORY_NO_CONVERSION_MASK \ |
411 (1 << CODING_CATEGORY_NO_CONVERSION) | 422 (1 << CODING_CATEGORY_NO_CONVERSION) |
412 #define CODING_CATEGORY_NOT_FINISHED_MASK \ | 423 #define CODING_CATEGORY_NOT_FINISHED_MASK \ |
413 (1 << 30) | 424 (1 << 30) |
414 | 425 |
426 #ifdef MULE | |
415 /* Convert shift-JIS code (sj1, sj2) into internal string | 427 /* Convert shift-JIS code (sj1, sj2) into internal string |
416 representation (c1, c2). (The leading byte is assumed.) */ | 428 representation (c1, c2). (The leading byte is assumed.) */ |
417 | 429 |
418 #define DECODE_SJIS(sj1, sj2, c1, c2) \ | 430 #define DECODE_SJIS(sj1, sj2, c1, c2) \ |
419 do { \ | 431 do { \ |
438 sj2 = I2 - ((I2 >= 0xe0) ? 0x60 : 0x61); \ | 450 sj2 = I2 - ((I2 >= 0xe0) ? 0x60 : 0x61); \ |
439 else \ | 451 else \ |
440 sj1 = (I1 >> 1) + ((I1 < 0xdf) ? 0x30 : 0x70), \ | 452 sj1 = (I1 >> 1) + ((I1 < 0xdf) ? 0x30 : 0x70), \ |
441 sj2 = I2 - 2; \ | 453 sj2 = I2 - 2; \ |
442 } while (0) | 454 } while (0) |
455 #endif /* MULE */ | |
443 | 456 |
444 extern Lisp_Object make_decoding_input_stream (Lstream *stream, | 457 extern Lisp_Object make_decoding_input_stream (Lstream *stream, |
445 Lisp_Object codesys); | 458 Lisp_Object codesys); |
446 extern Lisp_Object make_encoding_input_stream (Lstream *stream, | 459 extern Lisp_Object make_encoding_input_stream (Lstream *stream, |
447 Lisp_Object codesys); | 460 Lisp_Object codesys); |