OSDN Git Service

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