OSDN Git Service

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