annotate src/mule-ccl.h @ 5885:c8bbb32fe124

Always return a string, #'current-message. lisp/ChangeLog addition: 2015-04-04 Aidan Kehoe <kehoea@parhasard.net> * gutter-items.el (append-progress-feedback): * gutter-items.el (abort-progress-feedback): Correct comments in both these functions, it's the progress stack being adjusted, not the message stack. * simple.el (message-stack): Describe my recent change in the structure of this. * simple.el (current-message): Adjust the implementation of this to always return the string displayed.
author Aidan Kehoe <kehoea@parhasard.net>
date Sat, 04 Apr 2015 13:49:30 +0100
parents 308d34e9f07d
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1 /* Header for CCL (Code Conversion Language) interpreter.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
2 Copyright (C) 1995 Electrotechnical Laboratory, JAPAN.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3 Licensed to the Free Software Foundation.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5 This file is part of XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4745
diff changeset
7 XEmacs is free software: you can redistribute it and/or modify it
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4745
diff changeset
8 under the terms of the GNU General Public License as published by the
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4745
diff changeset
9 Free Software Foundation, either version 3 of the License, or (at your
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4745
diff changeset
10 option) any later version.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4745
diff changeset
12 XEmacs is distributed in the hope that it will be useful, but WITHOUT
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4745
diff changeset
13 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4745
diff changeset
14 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4745
diff changeset
15 for more details.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
5402
308d34e9f07d Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents: 4745
diff changeset
18 along with XEmacs. If not, see <http://www.gnu.org/licenses/>. */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
20 #ifndef INCLUDED_mule_ccl_h_
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
21 #define INCLUDED_mule_ccl_h_
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23 /* Macros for exit status of CCL program. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24 #define CCL_STAT_SUCCESS 0 /* Terminated successfully. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25 #define CCL_STAT_SUSPEND_BY_SRC 1 /* Terminated by empty input. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26 #define CCL_STAT_SUSPEND_BY_DST 2 /* Terminated by output buffer full. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 #define CCL_STAT_INVALID_CMD 3 /* Terminated because of invalid
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28 command. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29 #define CCL_STAT_QUIT 4 /* Terminated because of quit. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 /* Structure to hold information about running CCL code. Read
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32 comments in the file ccl.c for the detail of each field. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33 struct ccl_program {
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
34 int size; /* Size of the compiled code. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35 Lisp_Object *prog; /* Pointer into the compiled code. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36 int ic; /* Instruction Counter (index for PROG). */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37 int eof_ic; /* Instruction Counter for end-of-file
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38 processing code. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39 int reg[8]; /* CCL registers, reg[7] is used for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40 condition flag of relational
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41 operations. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42 int private_state; /* CCL instruction may use this
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
43 for private use, mainly for saving
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
44 internal states on suspending.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45 This variable is set to 0 when ccl is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46 set up. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47 int last_block; /* Set to 1 while processing the last
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48 block. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 int status; /* Exit status of the CCL program. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 int buf_magnification; /* Output buffer magnification. How
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51 many times bigger the output buffer
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 should be than the input buffer. */
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53 int stack_idx; /* How deep the call of CCL_Call is nested. */
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
54 int eol_type; /* When the CCL program is used for
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
55 encoding by a coding system, set to
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
56 the eol_type of the coding
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
57 system. */
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
58 int multibyte; /* 1 if the source text is multibyte. */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59 };
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 #define CCL_MODE_ENCODING 0
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 #define CCL_MODE_DECODING 1
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
64 #define CCL_CODING_EOL_LF 0 /* Line-feed only, same as Emacs'
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
65 internal format. */
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
66 #define CCL_CODING_EOL_CRLF 1 /* Sequence of carriage-return and
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
67 line-feed. */
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
68 #define CCL_CODING_EOL_CR 2 /* Carriage-return only. */
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69
4745
0c54de4c4b9d Resolve the unregistered-CCL-programs-get-garbage-collected problem correctly
Aidan Kehoe <kehoea@parhasard.net>
parents: 613
diff changeset
70 /* If OBJECT is symbol designating a registered CCL program, return it.
0c54de4c4b9d Resolve the unregistered-CCL-programs-get-garbage-collected problem correctly
Aidan Kehoe <kehoea@parhasard.net>
parents: 613
diff changeset
71 Else if OBJECT is a vector CCL program with no unresolved symbols, return
0c54de4c4b9d Resolve the unregistered-CCL-programs-get-garbage-collected problem correctly
Aidan Kehoe <kehoea@parhasard.net>
parents: 613
diff changeset
72 it.
0c54de4c4b9d Resolve the unregistered-CCL-programs-get-garbage-collected problem correctly
Aidan Kehoe <kehoea@parhasard.net>
parents: 613
diff changeset
73 Else, if OBJECT is a vector CCL program with unresolved symbols, return a
0c54de4c4b9d Resolve the unregistered-CCL-programs-get-garbage-collected problem correctly
Aidan Kehoe <kehoea@parhasard.net>
parents: 613
diff changeset
74 newly-created vector reflecting the CCL program with all symbols
0c54de4c4b9d Resolve the unregistered-CCL-programs-get-garbage-collected problem correctly
Aidan Kehoe <kehoea@parhasard.net>
parents: 613
diff changeset
75 resolved, if that is currently possible in this XEmacs.
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
76
4745
0c54de4c4b9d Resolve the unregistered-CCL-programs-get-garbage-collected problem correctly
Aidan Kehoe <kehoea@parhasard.net>
parents: 613
diff changeset
77 Otherwise, signal `invalid-argument'. */
0c54de4c4b9d Resolve the unregistered-CCL-programs-get-garbage-collected problem correctly
Aidan Kehoe <kehoea@parhasard.net>
parents: 613
diff changeset
78 extern Lisp_Object get_ccl_program (Lisp_Object object);
0c54de4c4b9d Resolve the unregistered-CCL-programs-get-garbage-collected problem correctly
Aidan Kehoe <kehoea@parhasard.net>
parents: 613
diff changeset
79
0c54de4c4b9d Resolve the unregistered-CCL-programs-get-garbage-collected problem correctly
Aidan Kehoe <kehoea@parhasard.net>
parents: 613
diff changeset
80 /* Set up fields of the structure pointed by CCL appropriately for the
0c54de4c4b9d Resolve the unregistered-CCL-programs-get-garbage-collected problem correctly
Aidan Kehoe <kehoea@parhasard.net>
parents: 613
diff changeset
81 execution of ccl program CCL_PROG (a symbol or a vector).
0c54de4c4b9d Resolve the unregistered-CCL-programs-get-garbage-collected problem correctly
Aidan Kehoe <kehoea@parhasard.net>
parents: 613
diff changeset
82
0c54de4c4b9d Resolve the unregistered-CCL-programs-get-garbage-collected problem correctly
Aidan Kehoe <kehoea@parhasard.net>
parents: 613
diff changeset
83 If CCL_PROG is a vector and contains unresolved symbols, this function
0c54de4c4b9d Resolve the unregistered-CCL-programs-get-garbage-collected problem correctly
Aidan Kehoe <kehoea@parhasard.net>
parents: 613
diff changeset
84 will throw an assertion failure. To avoid this, call get_ccl_program at
0c54de4c4b9d Resolve the unregistered-CCL-programs-get-garbage-collected problem correctly
Aidan Kehoe <kehoea@parhasard.net>
parents: 613
diff changeset
85 the point that you receive the CCL program from Lisp, and use and store
0c54de4c4b9d Resolve the unregistered-CCL-programs-get-garbage-collected problem correctly
Aidan Kehoe <kehoea@parhasard.net>
parents: 613
diff changeset
86 its (resolved) result instead. */
0c54de4c4b9d Resolve the unregistered-CCL-programs-get-garbage-collected problem correctly
Aidan Kehoe <kehoea@parhasard.net>
parents: 613
diff changeset
87 extern int setup_ccl_program (struct ccl_program *, Lisp_Object ccl_prog);
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
88
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
89 extern int ccl_driver (struct ccl_program *, const unsigned char *,
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
90 unsigned_char_dynarr *, int, int *, int);
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
91
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
92 EXFUN (Fregister_ccl_program, 2);
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
93
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94 extern Lisp_Object Qccl_program;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95
444
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
96 /* Vector of CCL program names vs corresponding program data. */
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
97 extern Lisp_Object Vccl_program_table;
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
98
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
99 /* Symbols of ccl program have this property, a value of the property
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
100 is an index for Vccl_program_table. */
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
101 extern Lisp_Object Qccl_program_idx;
576fb035e263 Import from CVS: tag r21-2-37
cvs
parents: 442
diff changeset
102
440
8de8e3f6228a Import from CVS: tag r21-2-28
cvs
parents: 428
diff changeset
103 #endif /* INCLUDED_mule_ccl_h_ */