OSDN Git Service

modified some WINDOWS-only codes.
[putex/putex.git] / src / texsourc / coerce.h
1 /* Copyright 2007 TeX Users Group
2    Copyright 2014 Clerk Ma
3
4    This program is free software; you can redistribute it and/or modify
5    it under the terms of the GNU General Public License as published by
6    the Free Software Foundation; either version 2 of the License, or
7    (at your option) any later version.
8
9    This program is distributed in the hope that it will be useful, but
10    WITHOUT ANY WARRANTY; without even the implied warranty of
11    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12    General Public License for more details.
13
14    You should have received a copy of the GNU General Public License
15    along with this program; if not, write to the Free Software
16    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
17    02110-1301 USA.  */
18
19 /* #define USEREGISTERS tells compiler use registers for mem and eqtb bkph */
20 /* this may make executable slightly smaller and slightly faster ... */
21 /* HOWEVER, won't work anymore for mem with dynamic memory allocation ... */
22 /* so can use registers now *only* for eqtb ... NOT for mem ... */
23 /* It is OK for eqtb, because, even though we may allocate eqtb, */
24 /* we won't ever reallocate it ... */
25
26 /* WARNING: with dynamic allocation cannot use memory_word *mem=zmem */
27 /* in this case, just let mem be alias for zmem */
28 /* BUT: allow continued use of register for eqtb at least ! */
29 #define mem zmem
30
31 void print_err (const char * s);
32 void initialize (void);
33 void print_ln (void);
34 void print_char_(ASCII_code);
35 #define print_char(s) print_char_((ASCII_code) (s))
36 void print_(integer);
37 #define print(s) print_((integer) (s))
38 void print_string_(unsigned char * s);
39 #define print_string(s) print_string_((unsigned char *) s)
40 void slow_print_(integer);
41 #define slow_print(s) slow_print_((integer) (s))
42 void print_nl_(const char *);
43 #define print_nl(s) print_nl_((const char *) (s))
44 void print_esc_(const char *);
45 #define print_esc(s) print_esc_((const char *) (s))
46 void print_the_digs_(eight_bits);
47 #define print_the_digs(k) print_the_digs_((eight_bits) (k))
48 void print_int_(integer);
49 #define print_int(n) print_int_((integer) (n))
50 void print_cs_(integer);
51 #define print_cs(p) print_cs_((integer) (p))
52 void sprint_cs_(halfword);
53 #define sprint_cs(p) sprint_cs_((halfword) (p))
54 void print_file_name_(integer, integer, integer);
55 #define print_file_name(n, a, e) print_file_name_((integer) (n), (integer) (a), (integer) (e))
56 void print_size_(integer);
57 #define print_size(s) print_size_((integer) (s))
58 void print_write_whatsit_(str_number, halfword);
59 #define print_write_whatsit(s, p) print_write_whatsit_((str_number) (s), (halfword) (p))
60 void jump_out(void);
61 void error(void);
62 void fatal_error_(char *);
63 #define fatal_error(s) fatal_error_((char *) (s))
64 void overflow_(char *, integer);
65 #define overflow(s, n) overflow_((char *) (s), (integer) (n))
66 void confusion_(char *);
67 #define confusion(s) confusion_((char *) (s))
68 bool init_terminal(void);
69 str_number make_string(void);
70 bool str_eq_buf_(str_number, integer);
71 #define str_eq_buf(s, k) str_eq_buf_((str_number) (s), (integer) (k))
72 bool str_eq_str_(str_number, str_number);
73 #define str_eq_str(s, t) str_eq_str_((str_number) (s), (str_number) (t))
74 bool get_strings_started(void);
75 void print_two_(integer);
76 #define print_two(n) print_two_((integer) (n))
77 void print_hex_(integer);
78 #define print_hex(n) print_hex_((integer) (n))
79 void print_roman_int_(integer);
80 #define print_roman_int(n) print_roman_int_((integer) (n))
81 void print_current_string(void);
82 void term_input(char *, int);
83 void int_error_(integer);
84 #define int_error(n) int_error_((integer) (n))
85 void normalize_selector(void);
86 void pause_for_instructions(void);
87 integer half_(integer);
88 #define half(x) half_((integer) (x))
89 scaled round_decimals_(small_number);
90 #define round_decimals(k) round_decimals_((small_number) (k))
91 void print_scaled_(scaled);
92 #define print_scaled(s) print_scaled_((scaled) (s))
93 scaled mult_and_add_(integer, scaled, scaled, scaled);
94 #define mult_and_add(n, x, y, maxanswer) mult_and_add_((integer) (n), (scaled) (x), (scaled) (y), (scaled) (maxanswer))
95 scaled x_over_n_(scaled, integer);
96 #define x_over_n(x, n) x_over_n_((scaled) (x), (integer) (n))
97 scaled xn_over_d_(scaled, integer, integer);
98 #define xn_over_d(x, n, d) xn_over_d_((scaled) (x), (integer) (n), (integer) (d))
99 halfword badness_(scaled, scaled);
100 #define badness(t, s) badness_((scaled) (t), (scaled) (s))
101 void print_word_(memory_word);
102 #define print_word(w) print_word_((memory_word) (w))
103 void show_token_list_(integer, integer, integer);
104 #define show_token_list(p, q, l) show_token_list_((integer) (p), (integer) (q), (integer) (l))
105 void runaway(void);
106 halfword get_avail(void);
107 void flush_list_(halfword);
108 #define flush_list(p) flush_list_((halfword) (p))
109 halfword get_node_(integer);
110 #define get_node(s) get_node_((integer) (s))
111 void free_node_(halfword, halfword);
112 #define free_node(p, s) free_node_((halfword) (p), (halfword) (s))
113 void sort_avail(void);
114 halfword new_null_box(void);
115 halfword new_rule(void);
116 halfword new_ligature_(quarterword, quarterword, halfword);
117 #define new_ligature(f, c, q) new_ligature_((quarterword) (f), (quarterword) (c), (halfword) (q))
118 halfword new_lig_item_(quarterword);
119 #define new_lig_item(c) new_lig_item_((quarterword) (c))
120 halfword new_disc(void);
121 halfword new_math_(scaled, small_number);
122 #define new_math(w, s) new_math_((scaled) (w), (small_number) (s))
123 halfword new_spec_(halfword);
124 #define new_spec(p) new_spec_((halfword) (p))
125 halfword new_param_glue_(small_number);
126 #define new_param_glue(n) new_param_glue_((small_number) (n))
127 halfword new_glue_(halfword);
128 #define new_glue(q) new_glue_((halfword) (q))
129 halfword new_skip_param_(small_number);
130 #define new_skip_param(n) new_skip_param_((small_number) (n))
131 halfword new_kern_(scaled);
132 #define new_kern(w) new_kern_((scaled) (w))
133 halfword new_penalty_(integer);
134 #define new_penalty(m) new_penalty_((integer) (m))
135 void check_mem_(bool);
136 #define check_mem(printlocs) check_mem_((bool) (printlocs))
137 void search_mem_(halfword);
138 #define search_mem(p) search_mem_((halfword) (p))
139 void short_display_(integer);
140 #define short_display(p) short_display_((integer) (p))
141 void print_font_and_char_(integer);
142 #define print_font_and_char(p) print_font_and_char_((integer) (p))
143 void print_mark_(integer);
144 #define print_mark(p) print_mark_((integer) (p))
145 void print_rule_dimen_(scaled);
146 #define print_rule_dimen(d) print_rule_dimen_((scaled) (d))
147 void print_glue_(scaled, integer, char *);
148 #define print_glue(d, order, s) print_glue_((scaled) (d), (integer) (order), (char *) (s))
149 void print_spec_(integer, char *);
150 #define print_spec(p, s) print_spec_((integer) (p), (char *) (s))
151 void print_fam_and_char_(halfword);
152 #define print_fam_and_char(p) print_fam_and_char_((halfword) (p))
153 void print_delimiter_(halfword);
154 #define print_delimiter(p) print_delimiter_((halfword) (p))
155 void print_subsidiary_data_(halfword, ASCII_code);
156 #define print_subsidiary_data(p, c) print_subsidiary_data_((halfword) (p), (ASCII_code) (c))
157 void print_style_(integer);
158 #define print_style(c) print_style_((integer) (c))
159 void print_skip_param_(integer);
160 #define print_skip_param(n) print_skip_param_((integer) (n))
161 void show_node_list_(integer);
162 #define show_node_list(p) show_node_list_((integer) (p))
163 void show_box_(halfword);
164 #define show_box(p) show_box_((halfword) (p))
165 void delete_token_ref_(halfword);
166 #define delete_token_ref(p) delete_token_ref_((halfword) (p))
167 void delete_glue_ref_(halfword);
168 #define delete_glue_ref(p) delete_glue_ref_((halfword) (p))
169 void flush_node_list_(halfword);
170 #define flush_node_list(p) flush_node_list_((halfword) (p))
171 halfword copy_node_list_(halfword);
172 #define copy_node_list(p) copy_node_list_((halfword) (p))
173 void print_mode_(integer);
174 #define print_mode(m) print_mode_((integer) (m))
175 void push_nest(void);
176 void pop_nest(void);
177 void show_activities(void);
178 void print_param_(integer);
179 #define print_param(n) print_param_((integer) (n))
180 void begin_diagnostic(void);
181 void end_diagnostic_(bool);
182 #define end_diagnostic(blankline) end_diagnostic_((bool) (blankline))
183 void print_length_param_(integer);
184 #define print_length_param(n) print_length_param_((integer) (n))
185 void print_cmd_chr_(quarterword, halfword);
186 #define print_cmd_chr(cmd, chr_code) print_cmd_chr_((quarterword) (cmd), (halfword) (chr_code))
187 void show_eqtb_(halfword);
188 #define show_eqtb(n) show_eqtb_((halfword) (n))
189 halfword id_lookup_(integer, integer);
190 #define id_lookup(j, l) id_lookup_((integer) (j), (integer) (l))
191 str_number make_string_pool (char *s);
192 void primitive_s (char * s, quarterword c, halfword o);
193 void primitive_(str_number, quarterword, halfword);
194 #define primitive(s, c, o) primitive_(make_string_pool((char *) s), (quarterword) (c), (halfword) (o))
195 void new_save_level_(group_code);
196 #define new_save_level(c) new_save_level_((group_code) (c))
197 void eq_destroy_(memory_word);
198 #define eq_destroy(w) eq_destroy_((memory_word) (w))
199 void eq_save_(halfword, quarterword);
200 #define eq_save(p, l) eq_save_((halfword) (p), (quarterword) (l))
201 void eq_define_(halfword, quarterword, halfword);
202 #define eq_define(p, t, e) eq_define_((halfword) (p), (quarterword) (t), (halfword) (e))
203 void eq_word_define_(halfword, integer);
204 #define eq_word_define(p, w) eq_word_define_((halfword) (p), (integer) (w))
205 void geq_define_(halfword, quarterword, halfword);
206 #define geq_define(p, t, e) geq_define_((halfword) (p), (quarterword) (t), (halfword) (e))
207 void geq_word_define_(halfword, integer);
208 #define geq_word_define(p, w) geq_word_define_((halfword) (p), (integer) (w))
209 void save_for_after_(halfword);
210 #define save_for_after(t) save_for_after_((halfword) (t))
211 void restore_trace_(halfword, char *);
212 #define restore_trace(p, s) restore_trace_((halfword) (p), (char *) (s))
213 void unsave(void);
214 void prepare_mag(void);
215 void token_show_(halfword);
216 #define token_show(p) token_show_((halfword) (p))
217 void print_meaning(void);
218 void show_cur_cmd_chr(void);
219 void show_context(void);
220 void begin_token_list_(halfword, quarterword);
221 #define begin_token_list(p, t) begin_token_list_((halfword) (p), (quarterword) (t))
222 void end_token_list(void);
223 void back_input(void);
224 void back_error(void);
225 void ins_error(void);
226 void begin_file_reading(void);
227 void end_file_reading(void);
228 void clear_for_error_prompt(void);
229 void check_outer_validity(void);
230 void get_next(void);
231 void firm_up_the_line(void);
232 void get_token(void);
233 void macro_call(void);
234 void insert_relax(void);
235 void expand(void);
236 void get_x_token(void);
237 void x_token(void);
238 void scan_left_brace(void);
239 void scan_optional_equals(void);
240 bool scan_keyword_(char *);
241 #define scan_keyword(s) scan_keyword_((char *) (s))
242 void mu_error(void);
243 void scan_eight_bit_int(void);
244 void scan_char_num(void);
245 void scan_four_bit_int(void);
246 void scan_fifteen_bit_int(void);
247 void scan_twenty_seven_bit_int(void);
248 void scan_font_ident(void);
249 void find_font_dimen_(bool);
250 #define find_font_dimen(writing) find_font_dimen_((bool) (writing))
251 void scan_something_internal_(small_number, bool);
252 #define scan_something_internal(level, negative) scan_something_internal_((small_number) (level), (bool) (negative))
253 void scan_int(void);
254 void scan_dimen_(bool, bool, bool);
255 #define scan_dimen(mu, inf, shortcut) scan_dimen_((bool) (mu), (bool) (inf), (bool) (shortcut))
256 void scan_glue_(small_number);
257 #define scan_glue(level) scan_glue_((small_number) (level))
258 halfword scan_rule_spec(void);
259 halfword str_toks_(pool_pointer);
260 #define str_toks(b) str_toks_((pool_pointer) (b))
261 halfword the_toks(void);
262 void ins_the_toks(void);
263 void conv_toks(void);
264 halfword scan_toks_(bool, bool);
265 #define scan_toks(macrodef, xpand) scan_toks_((bool) (macrodef), (bool) (xpand))
266 void read_toks_(integer, halfword);
267 #define read_toks(n, r) read_toks_((integer) (n), (halfword) (r))
268 void pass_text(void);
269 void change_if_limit_(small_number, halfword);
270 #define change_if_limit(l, p) change_if_limit_((small_number) (l), (halfword) (p))
271 void conditional(void);
272 void begin_name(void);
273 bool more_name_(ASCII_code);
274 #define more_name(c) more_name_((ASCII_code) (c))
275 void end_name(void);
276 void pack_file_name_(str_number, str_number, str_number);
277 #define pack_file_name(n, a, e) pack_file_name_((str_number) (n), (str_number) (a), (str_number) (e))
278 void pack_buffered_name_(small_number, integer, integer);
279 #define pack_buffered_name(n, a, b) pack_buffered_name_((small_number) (n), (integer) (a), (integer) (b))
280 str_number make_name_string(void);
281 str_number a_make_name_string_(alpha_file *);
282 #define a_make_name_string(f) a_make_name_string_((alpha_file *) &(f))
283 str_number b_make_name_string_(byte_file *);
284 #define b_make_name_string(f) b_make_name_string_((byte_file *) &(f))
285 str_number w_make_name_string_(word_file *);
286 #define w_make_name_string(f) w_make_name_string_((word_file *) &(f))
287 void scan_file_name(void);
288 void pack_job_name_(str_number);
289 #define pack_job_name(s) pack_job_name_(make_string_pool((char*)s))
290 void prompt_file_name_(char *, str_number);
291 #define prompt_file_name(s, e) prompt_file_name_((char *) s, make_string_pool((char*)e))
292 void open_log_file(void);
293 void start_input(void);
294 internal_font_number read_font_info_(halfword, str_number, str_number, scaled);
295 #define read_font_info(u, nom, aire, s) read_font_info_((halfword) (u), (str_number) (nom), (str_number) (aire), (scaled) (s))
296 void char_warning_(internal_font_number, eight_bits);
297 #define char_warning(f, c) char_warning_((internal_font_number) (f), (eight_bits) (c))
298 halfword new_character_(internal_font_number, eight_bits);
299 #define new_character(f, c) new_character_((internal_font_number) (f), (eight_bits) (c))
300 #ifdef ALLOCATEDVIBUF
301   void dvi_swap(void);
302   void dvi_four_(integer);
303   #define dvi_four(x) dvi_four_((integer) (x))
304   void zdvipop(integer);
305   #define dvi_pop(l) zdvipop((integer) (l))
306   void dvi_font_def_(internal_font_number);
307   #define dvi_font_def(f) dvi_font_def_((internal_font_number) (f))
308   void zmovement(scaled, eight_bits);
309   #define movement(w, o) zmovement((scaled) (w), (eight_bits) (o))
310   void special_out_(halfword);
311   #define special_out(p) special_out_((halfword) (p))
312   void hlist_out(void);
313   void vlist_out(void);
314   void ship_out_(halfword);
315   #define ship_out(p) ship_out_((halfword) (p))
316 #else /* not ALLOCATEDVIBUF */
317   void dvi_swap(void);
318   void dvi_four_(integer);
319   #define dvi_four(x) dvi_four_((integer) (x))
320   void zdvipop(integer);
321   #define dvi_pop(l) zdvipop((integer) (l))
322   void dvi_font_def_(internal_font_number);
323   #define dvi_font_def(f) dvi_font_def_((internal_font_number) (f))
324   void zmovement(scaled, eight_bits);
325   #define movement(w, o) zmovement((scaled) (w), (eight_bits) (o))
326   void special_out_(halfword);
327   #define special_out(p) special_out_((halfword) (p))
328   void hlist_out(void);
329   void vlist_out(void);
330   void ship_out_(halfword);
331   #define ship_out(p) ship_out_((halfword) (p))
332 #endif
333 void prune_movements_(integer);
334 #define prune_movements(l) prune_movements_((integer) (l))
335 void write_out_(halfword);
336 #define write_out(p) write_out_((halfword) (p))
337 void out_what_(halfword);
338 #define out_what(p) out_what_((halfword) (p))
339 void scan_spec_(group_code, bool);
340 #define scan_spec(c, threecodes) scan_spec_((group_code) (c), (bool) (threecodes))
341 halfword hpack_(halfword, scaled, small_number);
342 #define hpack(p, w, m) hpack_((halfword) (p), (scaled) (w), (small_number) (m))
343 halfword vpackage_(halfword, scaled, small_number, scaled);
344 #define vpackage(p, h, m, l) vpackage_((halfword) (p), (scaled) (h), (small_number) (m), (scaled) (l))
345 void append_to_vlist_(halfword);
346 #define append_to_vlist(b) append_to_vlist_((halfword) (b))
347 halfword new_noad(void);
348 halfword new_style_(small_number);
349 #define new_style(s) new_style_((small_number) (s))
350 halfword new_choice(void);
351 void show_info(void);
352 halfword fraction_rule_(scaled);
353 #define fraction_rule(t) fraction_rule_((scaled) (t))
354 halfword overbar_(halfword, scaled, scaled);
355 #define overbar(b, k, t) overbar_((halfword) (b), (scaled) (k), (scaled) (t))
356 halfword char_box_(internal_font_number, quarterword);
357 #define char_box(f, c) char_box_((internal_font_number) (f), (quarterword) (c))
358 void stack_into_box_(halfword, internal_font_number, quarterword);
359 #define stack_into_box(b, f, c) stack_into_box_((halfword) (b), (internal_font_number) (f), (quarterword) (c))
360 scaled height_plus_depth_(internal_font_number, fquarterword); 
361 #define height_plus_depth(f, c) height_plus_depth_((internal_font_number) (f), (fquarterword) (c))
362 halfword var_delimiter_(halfword, small_number, scaled);
363 #define var_delimiter(d, s, v) var_delimiter_((halfword) (d), (small_number) (s), (scaled) (v))
364 halfword rebox_(halfword, scaled);
365 #define rebox(b, w) rebox_((halfword) (b), (scaled) (w))
366 halfword math_glue_(halfword, scaled);
367 #define math_glue(g, m) math_glue_((halfword) (g), (scaled) (m))
368 void math_kern_(halfword, scaled);
369 #define math_kern(p, m) math_kern_((halfword) (p), (scaled) (m))
370 void flush_math(void);
371 halfword clean_box_(halfword, small_number);
372 #define clean_box(p, s) clean_box_((halfword) (p), (small_number) (s))
373 void fetch_(halfword);
374 #define fetch(a) fetch_((halfword) (a))
375 void make_over_(halfword);
376 #define make_over(q) make_over_((halfword) (q))
377 void make_under_(halfword);
378 #define make_under(q) make_under_((halfword) (q))
379 void make_vcenter_(halfword);
380 #define make_vcenter(q) make_vcenter_((halfword) (q))
381 void make_radical_(halfword);
382 #define make_radical(q) make_radical_((halfword) (q))
383 void make_math_accent_(halfword);
384 #define make_math_accent(q) make_math_accent_((halfword) (q))
385 void make_fraction_(halfword);
386 #define make_fraction(q) make_fraction_((halfword) (q))
387 scaled make_op_(halfword);
388 #define make_op(q) make_op_((halfword) (q))
389 void make_ord_(halfword);
390 #define make_ord(q) make_ord_((halfword) (q))
391 void make_scripts_(halfword, scaled);
392 #define make_scripts(q, delta) make_scripts_((halfword) (q), (scaled) (delta))
393 small_number make_left_right_(halfword, small_number, scaled, scaled);
394 #define make_left_right(q, style, maxd, max_h) make_left_right_((halfword) (q), (small_number) (style), (scaled) (maxd), (scaled) (max_h))
395 void mlist_to_hlist(void);
396 void push_alignment(void);
397 void pop_alignment(void);
398 void get_preamble_token(void);
399 void init_align(void);
400 void init_span_(halfword);
401 #define init_span(p) init_span_((halfword) (p))
402 void init_row(void);
403 void init_col(void);
404 bool fin_col(void);
405 void fin_row(void);
406 void fin_align(void);
407 void align_peek(void);
408 halfword finite_shrink_(halfword);
409 #define finite_shrink(p) finite_shrink_((halfword) (p))
410 void try_break_(integer, small_number);
411 #define try_break(pi, breaktype) try_break_((integer) (pi), (small_number) (breaktype))
412 void post_line_break_(integer);
413 #define post_line_break(final_widow_penalty) post_line_break_((integer) (final_widow_penalty))
414 small_number reconstitute_(small_number, small_number, halfword, halfword); 
415 #define reconstitute(j, n, bchar, hchar) reconstitute_((small_number) (j), (small_number) (n), (halfword) (bchar), (halfword) (hchar))
416 void hyphenate(void);
417 trie_op_code new_trie_op_(small_number, small_number, trie_op_code);
418 #define new_trie_op(d, n, v) new_trie_op_((small_number) (d), (small_number) (n), (trie_op_code) (v))
419 trie_pointer trie_node_(trie_pointer);
420 #define trie_node(p) trie_node_((trie_pointer) (p))
421 trie_pointer compress_trie_(trie_pointer);
422 #define compress_trie(p) compress_trie_((trie_pointer) (p))
423 void first_fit_(trie_pointer);
424 #define first_fit(p) first_fit_((trie_pointer) (p))
425 void trie_pack_(trie_pointer);
426 #define trie_pack(p) trie_pack_((trie_pointer) (p))
427 void trie_fix_(trie_pointer);
428 #define trie_fix(p) trie_fix_((trie_pointer) (p))
429 void new_patterns(void);
430 void init_trie(void);
431 void line_break_(integer);
432 #define line_break(final_widow_penalty) line_break_((integer) (final_widow_penalty))
433 void new_hyph_exceptions(void);
434 halfword prune_page_top_(halfword);
435 #define prune_page_top(p) prune_page_top_((halfword) (p))
436 halfword vert_break_(halfword, scaled, scaled);
437 #define vert_break(p, h, d) vert_break_((halfword) (p), (scaled) (h), (scaled) (d))
438 halfword vsplit_(eight_bits, scaled);
439 #define vsplit(n, h) vsplit_((eight_bits) (n), (scaled) (h))
440 void print_totals(void);
441 void freeze_page_specs_(small_number);
442 #define freeze_page_specs(s) freeze_page_specs_((small_number) (s))
443 void box_error_(eight_bits);
444 #define box_error(n) box_error_((eight_bits) (n))
445 void ensure_vbox_(eight_bits);
446 #define ensure_vbox(n) ensure_vbox_((eight_bits) (n))
447 void fire_up_(halfword);
448 #define fire_up(c) fire_up_((halfword) (c))
449 void build_page(void);
450 void app_space(void);
451 void insert_dollar_sign(void);
452 void you_cant(void);
453 void report_illegal_case(void);
454 bool privileged(void);
455 bool its_all_over(void);
456 void append_glue(void);
457 void append_kern(void);
458 void off_save(void);
459 void extra_right_brace(void);
460 void normal_paragraph(void);
461 void box_end_(integer);
462 #define box_end(boxcontext) box_end_((integer) (boxcontext))
463 void begin_box_(integer);
464 #define begin_box(boxcontext) begin_box_((integer) (boxcontext))
465 void scan_box_(integer);
466 #define scan_box(boxcontext) scan_box_((integer) (boxcontext))
467 void package_(small_number);
468 #define package(c) package_((small_number) (c))
469 small_number norm_min_(integer);
470 #define norm_min(h) norm_min_((integer) (h))
471 void new_graf_(bool);
472 #define new_graf(indented) new_graf_((bool) (indented))
473 void indent_in_hmode(void);
474 void head_for_vmode(void);
475 void end_graf(void);
476 void begin_insert_or_adjust(void);
477 void make_mark(void);
478 void append_penalty(void);
479 void delete_last(void);
480 void unpackage(void);
481 void append_italic_correction(void);
482 void append_discretionary(void);
483 void build_discretionary(void);
484 void make_accent(void);
485 void align_error(void);
486 void noalign_error(void);
487 void omit_error(void);
488 void do_endv(void);
489 void cs_error(void);
490 void push_math_(group_code);
491 #define push_math(c) push_math_((group_code) (c))
492 void init_math(void);
493 void start_eq_no(void);
494 void scan_math_(halfword);
495 #define scan_math(p) scan_math_((halfword) (p))
496 void set_math_char_(integer);
497 #define set_math_char(c) set_math_char_((integer) (c))
498 void math_limit_switch(void);
499 void scan_delimiter_(halfword, bool);
500 #define scan_delimiter(p, r) scan_delimiter_((halfword) (p), (bool) (r))
501 void math_radical(void);
502 void math_ac(void);
503 void append_choices(void);
504 halfword fin_mlist_(halfword);
505 #define fin_mlist(p) fin_mlist_((halfword) (p))
506 void build_choices(void);
507 void sub_sup(void);
508 void math_fraction(void);
509 void math_left_right(void);
510 void after_math(void);
511 void resume_after_display(void);
512 void get_r_token(void);
513 void trap_zero_glue(void);
514 void do_register_command_(small_number);
515 #define do_register_command(a) do_register_command_((small_number) (a))
516 void alter_aux(void);
517 void alter_prev_graf(void);
518 void alter_page_so_far(void);
519 void alter_integer(void);
520 void alter_box_dimen(void);
521 void new_font_(small_number);
522 #define new_font(a) new_font_((small_number) (a))
523 void new_interaction(void);
524 void prefixed_command(void);
525 void do_assignments(void);
526 void open_or_close_in(void);
527 void issue_message(void);
528 void shift_case(void);
529 void show_whatever(void);
530 void store_fmt_file(void);
531 void new_whatsit_(small_number, small_number);
532 #define new_whatsit(s, w) new_whatsit_((small_number) (s), (small_number) (w))
533 void new_write_whatsit_(small_number);
534 #define new_write_whatsit(w) new_write_whatsit_((small_number) (w))
535 void do_extension(void);
536 void fix_language(void);
537 void handle_right_brace(void);
538 void main_control(void);
539 void give_err_help(void);
540 bool open_fmt_file(void);
541 bool load_fmt_file(void);
542 void close_files_and_terminate(void);
543 void final_cleanup(void);
544 void init_prim(void);
545 void debug_help(void);
546 int texbody(void);          /* 1993/Dec/16 bkph */
547
548 /* may want to consider copying other addresses to local registers ... */
549
550 /*
551  * The C compiler ignores most unnecessary casts (i.e., casts of something
552  * to its own type).  However, for structures, it doesn't.  Therefore,
553  * we have to redefine these two macros so that they don't try to cast
554  * the argument (a memory_word) as a memory_word.
555  */
556 #undef  eq_destroy
557 #define eq_destroy(x)  eq_destroy_(x)
558 #undef  print_word
559 #define print_word(x)  print_word_(x)