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);