annotate src/coding-system-slots.h @ 1332:6aa23bb3da6b

[xemacs-hg @ 2003-03-02 02:18:05 by ben] To: xemacs-patches@xemacs.org PROBLEMS: Include nt/PROBLEMS and update. Add note about incremental linking badness. cmdloop.el, custom.el, dumped-lisp.el, files.el, keydefs.el, keymap.el, lisp-mode.el, make-docfile.el, replace.el, simple.el, subr.el, view-less.el, wid-edit.el: Lots of syncing with FSF 21.2. Use if-fboundp in wid-edit.el. New file newcomment.el from FSF. internals/internals.texi: Fix typo. (Build-Time Dependencies): New node. PROBLEMS: Delete. config.inc.samp, xemacs.mak: Eliminate HAVE_VC6, use SUPPORT_EDIT_AND_CONTINUE in its place. No incremental linking unless SUPPORT_EDIT_AND_CONTINUE, since it can cause nasty crashes in pdump. Put warnings about this in config.inc.samp. Report the full compile flags used for src and lib-src in the Installation output. alloc.c, lisp.h, ralloc.c, regex.c: Use ALLOCA() in regex.c to avoid excessive stack allocation. Also fix subtle problem with REL_ALLOC() -- any call to malloc() (direct or indirect) may relocate rel-alloced data, causing buffer text to shift. After any such call, regex must update all its pointers to such data. Add a system, when ERROR_CHECK_MALLOC, whereby regex.c indicates all the places it is prepared to handle malloc()/realloc()/free(), and any calls anywhere in XEmacs outside of this will trigger an abort. alloc.c, dialog-msw.c, eval.c, event-stream.c, general-slots.h, insdel.c, lisp.h, menubar-msw.c, menubar-x.c: Change *run_hook*_trapping_problems to take a warning class, not a string. Factor out code to issue warnings, add flag to call_trapping_problems() to postpone warning issue, and make *run_hook*_trapping_problems issue their own warnings tailored to the hook, postponed in the case of safe_run_hook_trapping_problems() so that the appropriate message can be issued about resetting to nil only when not `quit'. Make record_unwind_protect_restoring_int() non-static. dumper.c: Issue notes about incremental linking problems under Windows. fileio.c: Mule-ize encrypt/decrypt-string code. text.h: Spacing changes.
author ben
date Sun, 02 Mar 2003 02:18:12 +0000
parents e22b0213b713
children 1d74a1d115ee
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1204
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
1 /* Definitions of marked slots in coding systems
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
2 Copyright (C) 1991, 1995 Free Software Foundation, Inc.
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
3 Copyright (C) 1995 Sun Microsystems, Inc.
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
4 Copyright (C) 2000, 2001, 2002 Ben Wing.
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
5
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
6 This file is part of XEmacs.
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
7
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
8 XEmacs is free software; you can redistribute it and/or modify it
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
9 under the terms of the GNU General Public License as published by the
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
10 Free Software Foundation; either version 2, or (at your option) any
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
11 later version.
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
12
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
13 XEmacs is distributed in the hope that it will be useful, but WITHOUT
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
15 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
16 for more details.
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
17
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
19 along with XEmacs; see the file COPYING. If not, write to
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
20 the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
21 Boston, MA 02111-1307, USA. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
22
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
23 /* Synched up with: ????. Split out of file-coding.h. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
24
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
25 /* We define the Lisp_Objects in the coding system structure in a separate
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
26 file because there are numerous places we want to iterate over them,
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
27 such as when defining them in the structure, initializing them, or
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
28 marking them.
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
29
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
30 To use, define MARKED_SLOT before including this file. In the structure
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
31 definition, you also need to define CODING_SYSTEM_SLOT_DECLARATION. No
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
32 need to undefine either value; that happens automatically. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
33
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
34 #ifndef MARKED_SLOT_ARRAY
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
35 #ifdef CODING_SYSTEM_SLOT_DECLARATION
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
36 #define MARKED_SLOT_ARRAY(slot, size) MARKED_SLOT(slot[size])
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
37 #else
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
38 #define MARKED_SLOT_ARRAY(slot, size) do { \
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
39 int mslotidx; \
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
40 for (mslotidx = 0; mslotidx < size; mslotidx++) \
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
41 { \
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
42 MARKED_SLOT (slot[mslotidx]) \
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
43 } \
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
44 } while (0);
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
45 #endif
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
46 #endif /* not MARKED_SLOT_ARRAY */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
47
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
48 /* Name and description of this coding system. The description
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
49 should be suitable for a menu entry. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
50 MARKED_SLOT (name)
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
51 MARKED_SLOT (description)
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
52
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
53 /* Mnemonic string displayed in the modeline when this coding
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
54 system is active for a particular buffer. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
55 MARKED_SLOT (mnemonic)
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
56
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
57 /* Long documentation on the coding system. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
58 MARKED_SLOT (documentation)
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
59 /* Functions to handle additional conversion after reading or before
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
60 writing. #### This mechanism should be replaced by the ability to
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
61 simply create new coding system types. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
62 MARKED_SLOT (post_read_conversion)
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
63 MARKED_SLOT (pre_write_conversion)
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
64
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
65 /* If this coding system is not of the correct type for text file
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
66 conversion (i.e. decodes byte->char), we wrap it with appropriate
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
67 char<->byte converters. This is created dynamically, when it's
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
68 needed, and cached here. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
69 MARKED_SLOT (text_file_wrapper)
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
70
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
71 /* ------------------------ junk to handle EOL -------------------------
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
72 I had hoped that we could handle this without lots of special-case
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
73 code, but it appears not to be the case if we want to maintain
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
74 compatibility with the existing way. However, at least with the way
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
75 we do things now, we avoid EOL junk in most of the coding system
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
76 methods themselves, or in the decode/encode functions. The EOL
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
77 special-case code is limited to coding-system creation and to the
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
78 convert-eol and undecided coding system types. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
79
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
80 /* If this coding system wants autodetection of the EOL type, then at the
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
81 appropriate time we wrap this coding system with
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
82 convert-eol-autodetect. (We do NOT do this at creation time because
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
83 then we end up with multiple convert-eols wrapped into the final
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
84 result -- esp. with autodetection using `undecided' -- leading to a
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
85 big mess.) We cache the wrapped coding system here. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
86 MARKED_SLOT (auto_eol_wrapper)
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
87
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
88 /* Subsidiary coding systems that specify a particular type of EOL
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
89 marking, rather than autodetecting it. These will only be non-nil
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
90 if (eol_type == EOL_AUTODETECT). These are chains. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
91 MARKED_SLOT_ARRAY (eol, 3)
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
92 /* If this coding system is a subsidiary, this element points back to its
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
93 parent. */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
94 MARKED_SLOT (subsidiary_parent)
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
95
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
96 /* At decoding or encoding time, we use the following coding system, if
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
97 it exists, in place of the coding system object. This is how we
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
98 handle coding systems with EOL types of CRLF or CR. Formerly, we did
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
99 the canonicalization at creation time, returning a chain in place of
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
100 the original coding system; but that interferes with
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
101 `coding-system-property' and causes other complications. CANONICAL is
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
102 used when determining the end types of a coding system.
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
103 canonicalize-after-coding also consults CANONICAL (it has to, because
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
104 the data in the lstream is based on CANONICAL, not on the original
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
105 coding system). */
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
106 MARKED_SLOT (canonical)
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
107
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
108 #undef MARKED_SLOT
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
109 #undef MARKED_SLOT_ARRAY
e22b0213b713 [xemacs-hg @ 2003-01-12 11:07:58 by michaels]
michaels
parents:
diff changeset
110 #undef CODING_SYSTEM_SLOT_DECLARATION