annotate src/coding-system-slots.h @ 4528:726060ee587c g++-warning-removal-2008-10-28

First draft of g++ 4.3 warning removal patch. Builds. *Needs ChangeLogs.*
author Stephen J. Turnbull <stephen@xemacs.org>
date Wed, 29 Oct 2008 04:06:33 +0900
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