2 Copyright 2007 TeX Users Group
\r
3 Copyright 2014 Clerk Ma
\r
5 This program is free software; you can redistribute it and/or modify
\r
6 it under the terms of the GNU General Public License as published by
\r
7 the Free Software Foundation; either version 2 of the License, or
\r
8 (at your option) any later version.
\r
10 This program is distributed in the hope that it will be useful, but
\r
11 WITHOUT ANY WARRANTY; without even the implied warranty of
\r
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
\r
13 General Public License for more details.
\r
15 You should have received a copy of the GNU General Public License
\r
16 along with this program; if not, write to the Free Software
\r
17 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
\r
21 #ifndef _YANDYTEX_COERCE_H
\r
22 #define _YANDYTEX_COERCE_H
\r
24 void initialize (void);
\r
25 void print_ln (void);
\r
26 void print_char_(ASCII_code s);
\r
27 #define print_char(s) print_char_((ASCII_code) (s))
\r
28 void print_(integer s);
\r
29 #define print(s) print_((integer) (s))
\r
30 void prints_(const char * s);
\r
31 #define prints(s) prints_((const char *) s)
\r
32 void slow_print_(integer s);
\r
33 #define slow_print(s) slow_print_((integer) (s))
\r
34 void print_nl (const char * s);
\r
35 void print_esc (const char * s);
\r
36 void print_the_digs (eight_bits k);
\r
37 void print_int_(integer n);
\r
38 #define print_int(n) print_int_((integer) (n))
\r
39 void print_cs_(integer p);
\r
40 #define print_cs(p) print_cs_((integer) (p))
\r
41 void sprint_cs (pointer p);
\r
42 void print_file_name (integer n, integer a, integer e);
\r
43 void print_size_(integer s);
\r
44 #define print_size(s) print_size_((integer) (s))
\r
45 void print_write_whatsit_(const char * s, pointer p);
\r
46 #define print_write_whatsit(s, p) print_write_whatsit_((const char *) (s), (pointer) (p))
\r
47 void jump_out (void);
\r
49 void fatal_error (const char * s);
\r
50 void overflow_(const char * s, integer n);
\r
51 #define overflow(s, n) overflow_((const char *) (s), (integer) (n))
\r
52 void confusion (const char * s);
\r
53 boolean init_terminal (void);
\r
54 str_number make_string (void);
\r
55 boolean str_eq_buf_(str_number s, integer k);
\r
56 #define str_eq_buf(s, k) str_eq_buf_((str_number) (s), (integer) (k))
\r
57 boolean str_eq_str_(str_number s, str_number t);
\r
58 #define str_eq_str(s, t) str_eq_str_((str_number) (s), (str_number) (t))
\r
59 boolean get_strings_started (void);
\r
60 void print_two_(integer n);
\r
61 #define print_two(n) print_two_((integer) (n))
\r
62 void print_hex_(integer n);
\r
63 #define print_hex(n) print_hex_((integer) (n))
\r
64 void print_roman_int_(integer n);
\r
65 #define print_roman_int(n) print_roman_int_((integer) (n))
\r
66 void print_current_string (void);
\r
67 void term_input (void);
\r
68 void int_error_(integer n);
\r
69 #define int_error(n) int_error_((integer) (n))
\r
70 void normalize_selector (void);
\r
71 void pause_for_instructions (void);
\r
72 integer half_(integer x);
\r
73 #define half(x) half_((integer) (x))
\r
74 scaled round_decimals_(small_number k);
\r
75 #define round_decimals(k) round_decimals_((small_number) (k))
\r
76 void print_scaled_(scaled s);
\r
77 #define print_scaled(s) print_scaled_((scaled) (s))
\r
78 scaled mult_and_add_(integer n, scaled x, scaled y, scaled max_answer);
\r
79 #define mult_and_add(n, x, y, max_answer) mult_and_add_((integer) (n), (scaled) (x), (scaled) (y), (scaled) (max_answer))
\r
80 scaled x_over_n_(scaled x, integer n);
\r
81 #define x_over_n(x, n) x_over_n_((scaled) (x), (integer) (n))
\r
82 scaled xn_over_d_(scaled x, integer n, integer d);
\r
83 #define xn_over_d(x, n, d) xn_over_d_((scaled) (x), (integer) (n), (integer) (d))
\r
84 halfword badness_(scaled t, scaled s);
\r
85 #define badness(t, s) badness_((scaled) (t), (scaled) (s))
\r
86 void print_word (memory_word w);
\r
87 void show_token_list_(integer p, integer q, integer l);
\r
88 #define show_token_list(p, q, l) show_token_list_((integer) (p), (integer) (q), (integer) (l))
\r
89 void runaway (void);
\r
90 pointer get_avail (void);
\r
91 void flush_list_(pointer p);
\r
92 #define flush_list(p) flush_list_((pointer) (p))
\r
93 pointer get_node (integer s);
\r
94 void free_node (pointer p, halfword s);
\r
95 void sort_avail (void);
\r
96 pointer new_null_box (void);
\r
97 pointer new_rule (void);
\r
98 pointer new_ligature_(quarterword f, quarterword c, pointer q);
\r
99 #define new_ligature(f, c, q) new_ligature_((quarterword) (f), (quarterword) (c), (pointer) (q))
\r
100 pointer new_lig_item_(quarterword c);
\r
101 #define new_lig_item(c) new_lig_item_((quarterword) (c))
\r
102 pointer new_disc (void);
\r
103 pointer new_math (scaled w, small_number s);
\r
104 pointer new_spec_(pointer p);
\r
105 #define new_spec(p) new_spec_((pointer) (p))
\r
106 pointer new_param_glue (small_number n);
\r
107 pointer new_glue (pointer q);
\r
108 pointer new_skip_param (small_number n);
\r
109 pointer new_kern (scaled w);
\r
110 pointer new_penalty (integer m);
\r
111 void check_mem (boolean print_locs);
\r
112 void search_mem_(pointer p);
\r
113 #define search_mem(p) search_mem_((pointer) (p))
\r
114 void short_display_(integer p);
\r
115 #define short_display(p) short_display_((integer) (p))
\r
116 void print_font_and_char(integer p);
\r
117 void print_mark (integer p);
\r
118 void print_rule_dimen (scaled d);
\r
119 void print_glue_(scaled d, integer order, const char * s);
\r
120 #define print_glue(d, order, s) print_glue_((scaled) (d), (integer) (order), (const char *) (s))
\r
121 void print_spec_(integer p, const char * s);
\r
122 #define print_spec(p, s) print_spec_((integer) (p), (const char *) (s))
\r
123 void print_fam_and_char_(pointer p);
\r
124 #define print_fam_and_char(p) print_fam_and_char_((pointer) (p))
\r
125 void print_delimiter_(pointer p);
\r
126 #define print_delimiter(p) print_delimiter_((pointer) (p))
\r
127 void print_subsidiary_data_(pointer p, ASCII_code c);
\r
128 #define print_subsidiary_data(p, c) print_subsidiary_data_((pointer) (p), (ASCII_code) (c))
\r
129 void print_style_(integer c);
\r
130 #define print_style(c) print_style_((integer) (c))
\r
131 void print_skip_param_(integer n);
\r
132 #define print_skip_param(n) print_skip_param_((integer) (n))
\r
133 void show_node_list_(integer p);
\r
134 #define show_node_list(p) show_node_list_((integer) (p))
\r
135 void show_box_(pointer p);
\r
136 #define show_box(p) show_box_((pointer) (p))
\r
137 void delete_token_ref_(pointer p);
\r
138 #define delete_token_ref(p) delete_token_ref_((pointer) (p))
\r
139 void delete_glue_ref_(pointer p);
\r
140 #define delete_glue_ref(p) delete_glue_ref_((pointer) (p))
\r
141 void flush_node_list_(pointer p);
\r
142 #define flush_node_list(p) flush_node_list_((pointer) (p))
\r
143 pointer copy_node_list_(pointer p);
\r
144 #define copy_node_list(p) copy_node_list_((pointer) (p))
\r
145 void print_mode_(integer m);
\r
146 #define print_mode(m) print_mode_((integer) (m))
\r
147 void push_nest (void);
\r
148 void pop_nest (void);
\r
149 void show_activities (void);
\r
150 void print_param_(integer n);
\r
151 #define print_param(n) print_param_((integer) (n))
\r
152 void begin_diagnostic (void);
\r
153 void end_diagnostic (boolean blank_line);
\r
154 void print_length_param_(integer n);
\r
155 #define print_length_param(n) print_length_param_((integer) (n))
\r
156 void print_cmd_chr_(quarterword cmd, halfword chr_code);
\r
157 #define print_cmd_chr(cmd, chr_code) print_cmd_chr_((quarterword) (cmd), (halfword) (chr_code))
\r
158 void show_eqtb (pointer n);
\r
159 pointer id_lookup_(integer j, integer l);
\r
160 #define id_lookup(j, l) id_lookup_((integer) (j), (integer) (l))
\r
161 void primitive_(str_number s, quarterword c, halfword o);
\r
162 #define primitive(s, c, o) primitive_(make_string_pool((const char *) s), (quarterword) (c), (halfword) (o))
\r
163 void new_save_level (group_code c);
\r
164 void eq_destroy (memory_word w);
\r
165 void eq_save (pointer p, quarterword l);
\r
166 void eq_define_(pointer p, quarterword t, halfword e);
\r
167 #define eq_define(p, t, e) eq_define_((pointer) (p), (quarterword) (t), (halfword) (e))
\r
168 void eq_word_define_(pointer p, integer w);
\r
169 #define eq_word_define(p, w) eq_word_define_((pointer) (p), (integer) (w))
\r
170 void geq_define_(pointer p, quarterword t, halfword e);
\r
171 #define geq_define(p, t, e) geq_define_((pointer) (p), (quarterword) (t), (halfword) (e))
\r
172 void geq_word_define_(pointer p, integer w);
\r
173 #define geq_word_define(p, w) geq_word_define_((pointer) (p), (integer) (w))
\r
174 void save_for_after (halfword t);
\r
175 void restore_trace (pointer p, const char * s);
\r
176 void unsave (void);
\r
177 void prepare_mag (void);
\r
178 void token_show (pointer p);
\r
179 void print_meaning (void);
\r
180 void show_cur_cmd_chr (void);
\r
181 void show_context (void);
\r
182 void begin_token_list_(pointer p, quarterword t);
\r
183 #define begin_token_list(p, t) begin_token_list_((pointer) (p), (quarterword) (t))
\r
184 void end_token_list (void);
\r
185 void back_input (void);
\r
186 void back_error (void);
\r
187 void ins_error (void);
\r
188 void begin_file_reading (void);
\r
189 void end_file_reading (void);
\r
190 void clear_for_error_prompt (void);
\r
191 void check_outer_validity (void);
\r
192 void get_next (void);
\r
193 void firm_up_the_line (void);
\r
194 void get_token (void);
\r
195 void macro_call (void);
\r
196 void insert_relax (void);
\r
197 void expand (void);
\r
198 void get_x_token (void);
\r
199 void x_token (void);
\r
200 void scan_left_brace (void);
\r
201 void scan_optional_equals (void);
\r
202 boolean scan_keyword (const char * s);
\r
203 void mu_error (void);
\r
204 void scan_eight_bit_int (void);
\r
205 void scan_char_num (void);
\r
206 void scan_four_bit_int (void);
\r
207 void scan_fifteen_bit_int (void);
\r
208 void scan_twenty_seven_bit_int (void);
\r
209 void scan_font_ident (void);
\r
210 void find_font_dimen (boolean writing);
\r
211 void scan_something_internal (small_number level, boolean negative);
\r
212 void scan_int (void);
\r
213 void scan_dimen (boolean mu, boolean inf, boolean shortcut);
\r
214 void scan_glue (small_number level);
\r
215 pointer scan_rule_spec (void);
\r
216 pointer str_toks (pool_pointer b);
\r
217 pointer the_toks (void);
\r
218 void ins_the_toks (void);
\r
219 void conv_toks (void);
\r
220 pointer scan_toks (boolean macro_def, boolean xpand);
\r
221 void read_toks (integer n, pointer r);
\r
222 void pass_text (void);
\r
223 void change_if_limit (small_number l, pointer p);
\r
224 void conditional (void);
\r
225 void begin_name (void);
\r
226 boolean more_name (ASCII_code c);
\r
227 void end_name (void);
\r
228 void pack_file_name (str_number n, str_number a, str_number e);
\r
229 void pack_buffered_name_(small_number n, integer a, integer b);
\r
230 #define pack_buffered_name(n, a, b) pack_buffered_name_((small_number) (n), (integer) (a), (integer) (b))
\r
231 str_number make_name_string (void);
\r
232 str_number a_make_name_string_(void);
\r
233 #define a_make_name_string(f) a_make_name_string_()
\r
234 str_number b_make_name_string_(void);
\r
235 #define b_make_name_string(f) b_make_name_string_()
\r
236 str_number w_make_name_string_(void);
\r
237 #define w_make_name_string(f) w_make_name_string_()
\r
238 void scan_file_name (void);
\r
239 void pack_job_name_(str_number s);
\r
240 #define pack_job_name(s) pack_job_name_(make_string_pool((const char *) (s)))
\r
241 void prompt_file_name_(const char * s, str_number e);
\r
242 #define prompt_file_name(s, e) prompt_file_name_((const char *) s, make_string_pool((const char*) e))
\r
243 void open_log_file (void);
\r
244 void start_input (void);
\r
245 internal_font_number read_font_info (pointer u, str_number nom, str_number arie, scaled s);
\r
246 void char_warning_(internal_font_number f, eight_bits c);
\r
247 #define char_warning(f, c) char_warning_((internal_font_number) (f), (eight_bits) (c))
\r
248 pointer new_character_(internal_font_number f, eight_bits c);
\r
249 #define new_character(f, c) new_character_((internal_font_number) (f), (eight_bits) (c))
\r
250 void dvi_swap (void);
\r
251 void dvi_four_(integer x);
\r
252 #define dvi_four(x) dvi_four_((integer) (x))
\r
253 void dvi_pop_(integer l);
\r
254 #define dvi_pop(l) dvi_pop_((integer) (l))
\r
255 void dvi_font_def (internal_font_number f);
\r
256 void movement (scaled w, eight_bits o);
\r
257 void special_out (pointer p);
\r
258 void hlist_out (void);
\r
259 void vlist_out (void);
\r
260 void pdf_ship_out (pointer p);
\r
261 void ship_out (pointer p);
\r
262 void prune_movements (integer l);
\r
263 void write_out (pointer p);
\r
264 void out_what (pointer p);
\r
265 void scan_spec (group_code c, boolean three_codes);
\r
266 pointer hpack_(pointer p, scaled w, small_number m);
\r
267 #define hpack(p, w, m) hpack_((pointer) (p), (scaled) (w), (small_number) (m))
\r
268 pointer vpackage_(pointer p, scaled h, small_number m, scaled l);
\r
269 #define vpackage(p, h, m, l) vpackage_((pointer) (p), (scaled) (h), (small_number) (m), (scaled) (l))
\r
270 void append_to_vlist (pointer b);
\r
271 pointer new_noad (void);
\r
272 pointer new_style (small_number s);
\r
273 pointer new_choice (void);
\r
274 void show_info (void);
\r
275 pointer fraction_rule (scaled t);
\r
276 pointer overbar (pointer b, scaled k, scaled t);
\r
277 pointer char_box (internal_font_number f, quarterword c);
\r
278 void stack_into_box (pointer b, internal_font_number f, quarterword c);
\r
279 scaled height_plus_depth (internal_font_number f, quarterword c);
\r
280 pointer var_delimiter (pointer d, small_number s, scaled v);
\r
281 pointer rebox (pointer b, scaled w);
\r
282 pointer math_glue (pointer g, scaled m);
\r
283 void math_kern (pointer p, scaled m);
\r
284 void flush_math (void);
\r
285 pointer clean_box (pointer p, small_number s);
\r
286 void fetch (pointer a);
\r
287 void make_over (pointer q);
\r
288 void make_under (pointer q);
\r
289 void make_vcenter (pointer q);
\r
290 void make_radical (pointer q);
\r
291 void make_math_accent (pointer q);
\r
292 void make_fraction (pointer q);
\r
293 scaled make_op (pointer q);
\r
294 void make_ord (pointer q);
\r
295 void make_scripts (pointer q, scaled delta);
\r
296 small_number make_left_right (pointer q, small_number style, scaled max_d, scaled max_h);
\r
297 void mlist_to_hlist (void);
\r
298 void push_alignment (void);
\r
299 void pop_alignment (void);
\r
300 void get_preamble_token (void);
\r
301 void init_align (void);
\r
302 void init_span (pointer p);
\r
303 void init_row (void);
\r
304 void init_col (void);
\r
305 boolean fin_col (void);
\r
306 void fin_row (void);
\r
307 void fin_align (void);
\r
308 void align_peek (void);
\r
309 pointer finite_shrink (pointer p);
\r
310 void try_break (integer pi, small_number breaktype);
\r
311 void post_line_break (integer final_widow_penalty);
\r
312 small_number reconstitute (small_number j, small_number n, halfword bchar, halfword hchar);
\r
313 void hyphenate (void);
\r
314 trie_op_code new_trie_op (small_number d, small_number n, trie_op_code v);
\r
315 trie_pointer trie_node (trie_pointer p);
\r
316 trie_pointer compress_trie (trie_pointer p);
\r
317 void first_fit (trie_pointer p);
\r
318 void trie_pack (trie_pointer p);
\r
319 void trie_fix (trie_pointer p);
\r
320 void new_patterns (void);
\r
321 void init_trie (void);
\r
322 void line_break (integer final_widow_penalty);
\r
323 void new_hyph_exceptions (void);
\r
324 pointer prune_page_top (pointer p);
\r
325 pointer vert_break (pointer p, scaled h, scaled d);
\r
326 pointer vsplit (eight_bits n, scaled h);
\r
327 void print_totals (void);
\r
328 void freeze_page_specs (small_number s);
\r
329 void box_error (eight_bits n);
\r
330 void ensure_vbox_(eight_bits n);
\r
331 #define ensure_vbox(n) ensure_vbox_((eight_bits) (n))
\r
332 void fire_up (pointer c);
\r
333 void build_page (void);
\r
334 void app_space (void);
\r
335 void insert_dollar_sign (void);
\r
336 void you_cant (void);
\r
337 void report_illegal_case (void);
\r
338 boolean privileged (void);
\r
339 boolean its_all_over (void);
\r
340 void append_glue (void);
\r
341 void append_kern (void);
\r
342 void off_save (void);
\r
343 void extra_right_brace (void);
\r
344 void normal_paragraph (void);
\r
345 void box_end (integer box_content);
\r
346 void begin_box (integer box_content);
\r
347 void scan_box_(integer box_content);
\r
348 #define scan_box(box_context) scan_box_((integer) (box_context))
\r
349 void package (small_number c);
\r
350 small_number norm_min (integer h);
\r
351 void new_graf (boolean indented);
\r
352 void indent_in_hmode (void);
\r
353 void head_for_vmode (void);
\r
354 void end_graf (void);
\r
355 void begin_insert_or_adjust (void);
\r
356 void make_mark (void);
\r
357 void append_penalty (void);
\r
358 void delete_last (void);
\r
359 void unpackage (void);
\r
360 void append_italic_correction (void);
\r
361 void append_discretionary (void);
\r
362 void build_discretionary (void);
\r
363 void make_accent (void);
\r
364 void align_error (void);
\r
365 void noalign_error (void);
\r
366 void omit_error (void);
\r
367 void do_endv (void);
\r
368 void cs_error (void);
\r
369 void push_math (group_code c);
\r
370 void init_math (void);
\r
371 void start_eq_no (void);
\r
372 void scan_math (pointer p);
\r
373 void set_math_char_(integer c);
\r
374 #define set_math_char(c) set_math_char_((integer) (c))
\r
375 void math_limit_switch(void);
\r
376 void scan_delimiter_(pointer p, boolean r);
\r
377 #define scan_delimiter(p, r) scan_delimiter_((pointer) (p), (boolean) (r))
\r
378 void math_radical (void);
\r
379 void math_ac (void);
\r
380 void append_choices (void);
\r
381 pointer fin_mlist (pointer p);
\r
382 void build_choices (void);
\r
383 void sub_sup (void);
\r
384 void math_fraction (void);
\r
385 void math_left_right (void);
\r
386 void after_math (void);
\r
387 void resume_after_display (void);
\r
388 void get_r_token (void);
\r
389 void trap_zero_glue (void);
\r
390 void do_register_command (small_number a);
\r
391 void alter_aux (void);
\r
392 void alter_prev_graf (void);
\r
393 void alter_page_so_far (void);
\r
394 void alter_integer (void);
\r
395 void alter_box_dimen (void);
\r
396 void new_font (small_number a);
\r
397 void new_interaction (void);
\r
398 void prefixed_command (void);
\r
399 void do_assignments (void);
\r
400 void open_or_close_in (void);
\r
401 void issue_message (void);
\r
402 void shift_case (void);
\r
403 void show_whatever (void);
\r
404 void store_fmt_file (void);
\r
405 void new_whatsit_(small_number s, small_number w);
\r
406 #define new_whatsit(s, w) new_whatsit_((small_number) (s), (small_number) (w))
\r
407 void new_write_whatsit (small_number w);
\r
408 void do_extension (void);
\r
409 void fix_language (void);
\r
410 void handle_right_brace (void);
\r
411 void main_control (void);
\r
412 void give_err_help (void);
\r
413 boolean open_fmt_file (void);
\r
414 boolean load_fmt_file (void);
\r
415 void close_files_and_terminate (void);
\r
416 void final_cleanup (void);
\r
417 void init_prim (void);
\r
418 void debug_help (void);
\r
419 void fix_date_and_time (void);
\r
420 void print_banner (void);
\r
422 int main_program (void);
\r
423 int main_init (int ac, char ** av);
\r