OSDN Git Service

removed DOS-related codes.
[putex/putex.git] / src / texsourc / yandytex.h
1 #ifndef _YANDYTEX_H\r
2 #define _YANDYTEX_H\r
3 \r
4 #define ALLOCATEINI        /* allocate iniTeX (550 k) trie_c, trie_o, trie_l, trie_r, trie_hash, trie_taken */\r
5 #define ALLOCATEMAIN       /* allocate main memory for TeX (2 Meg) */\r
6 #define ALLOCATEFONT       /* allocate font_info (800 k) (dynamically now) */\r
7 #define ALLOCATETRIES      /* allocate hyphenation trie stuff (270 k) trie_trl, trie_tro, trie_trc */\r
8 #define ALLOCATEHYPHEN     /* allocate hyphenation exception tables */\r
9 #define VARIABLETRIESIZE   /* allow trie_size to be variable */\r
10 #define ALLOCATESTRING     /* allocate strings and string pointers (184 k) str_pool & str_start */\r
11 #define ALLOCATESAVESTACK  /* experiment to dynamically deal with save_stack   */\r
12 #define ALLOCATEINPUTSTACK /* experiment to dynamically deal with input_stack  */\r
13 #define ALLOCATENESTSTACK  /* experiment to dynamically deal with nest_stack   */\r
14 #define ALLOCATEPARAMSTACK /* experiment to dynamically deal with param_stack  */\r
15 #define ALLOCATEBUFFER     /* experiment to dynamically deal with input buffer */\r
16 #define INCREASEFIXED      /* max_in_open */\r
17 #define INCREASEFONTS      /* 65536 fonts */\r
18 #define INCREASETRIEOP     /* tire_* */\r
19 #define COMPACTFORMAT      /* .fmt file with zlib */\r
20 #define STAT               /* TeX's statistics (tex82) */\r
21 #define INITEX             /* invoke initex */\r
22 #define WORDS_BIGENDIAN 0  /* about format file */\r
23 \r
24 #include "texd.h"\r
25 \r
26 #define file_name_size PATH_MAX\r
27 \r
28 #define min_halfword -2147483647L /* LONG_MIN, for 64 bit memory word (signed) */\r
29 #define max_halfword  2147483647L /* LONG_MAX, for 64 bit memory word (signed) */\r
30 \r
31 #define block_size 1000 /* block_size for variable length node alloc */\r
32 \r
33 #ifdef INCREASEFONTS\r
34   #define min_quarterword 0\r
35   #define max_quarterword 65535L\r
36 #else\r
37   #define min_quarterword 0\r
38   #define max_quarterword 255\r
39 #endif\r
40 \r
41 #define default_mem_top 262140L  /* usual big TeX allocation 2 Meg bytes */\r
42 /* #define default_mem_top 131070L */ /* usual big TeX allocation 1 Meg bytes */\r
43 /* #define default_mem_top 65534L  */ /* usual small TeX allocation 0.5 Meg   */\r
44 \r
45 #define mem_bot 0\r
46 \r
47 #ifdef ALLOCATEMAIN\r
48   EXTERN integer mem_top;\r
49   EXTERN integer mem_max;\r
50   EXTERN integer mem_min;\r
51   #define max_mem_size (max_halfword / sizeof(memory_word) - 1)\r
52 #else\r
53   #define mem_top 262140L\r
54   #define mem_max mem_top\r
55   #define mem_min 0\r
56 #endif\r
57 \r
58 #ifdef ALLOCATEBUFFER\r
59   #define initial_buf_size   1000\r
60   #define increment_buf_size 2000\r
61   #define buf_size           2000000L\r
62   EXTERN ASCII_code *        buffer;\r
63 #else\r
64   #define buf_size           20000\r
65   EXTERN ASCII_code          buffer[buf_size + 4];\r
66 #endif\r
67 \r
68 EXTERN integer first; \r
69 EXTERN integer last; \r
70 EXTERN integer max_buf_stack; \r
71 \r
72 #define error_line      79\r
73 #define half_error_line 50\r
74 #define max_print_line  79\r
75 \r
76 #ifdef INCREASEFIXED\r
77   #define max_in_open 127\r
78 #else\r
79   #define max_in_open 15\r
80 #endif\r
81 \r
82 #ifdef INCREASEFONTS\r
83   #define font_max 65535\r
84 #else\r
85   #define font_max 255\r
86 #endif\r
87 \r
88 #ifdef ALLOCATEFONT\r
89   #define font_mem_size (max_halfword / sizeof(memory_word) - 1)\r
90   #define initial_font_mem_size   20000\r
91   #define increment_font_mem_size 40000\r
92 #else\r
93   #define font_mem_size 100000L\r
94 #endif\r
95 \r
96 #ifdef ALLOCATESTRING\r
97   #define max_strings (max_halfword / sizeof(pool_pointer) - 1)\r
98   #define pool_size (max_halfword - 1)\r
99 #else\r
100   #define max_strings 16384\r
101   #define pool_size 124000L\r
102 #endif\r
103 \r
104 #define string_vacancies 100000L\r
105 \r
106 #ifdef VARIABLETRIESIZE\r
107   EXTERN integer trie_size;\r
108   #define default_trie_size 60000\r
109 #else\r
110   #define trie_size 30000\r
111 #endif\r
112 \r
113 #ifdef INCREASETRIEOP\r
114   #define trie_op_size      3001\r
115   #define neg_trie_op_size -3001\r
116   #define min_trie_op       0\r
117   #define max_trie_op       1000\r
118 #else\r
119   #define trie_op_size      751\r
120   #define neg_trie_op_size -751\r
121   #define min_trie_op       0\r
122   #define max_trie_op       500\r
123 #endif\r
124 \r
125 #define dvi_buf_size 16384\r
126 \r
127 #define hash_extra (255 - font_max)\r
128 #define hash_prime 27197 // (prime ~ 85% * (hash_size + hash_extra))\r
129 #define hash_size  97280 // 32768 9500 25000\r
130 \r
131 #if (hash_extra != 255 - font_max)\r
132   #error ERROR: hash_extra not equal to (255 - font_max)\r
133 #endif\r
134 \r
135 /* sec 0113 */\r
136 #ifdef INCREASEFONTS\r
137   typedef unsigned short quarterword;\r
138 #else\r
139   typedef unsigned char  quarterword;\r
140 #endif\r
141 \r
142 /* typedef unsigned long halfword; NO NO: since mem_min may be < 0 */\r
143 /* sec 0113 */\r
144 typedef int32_t halfword;\r
145 typedef halfword pointer;\r
146 typedef char two_choices;\r
147 typedef char four_choices;\r
148 /* sec 0113 */\r
149 #include "memory.h"\r
150 #include "macros.h"\r
151 /* sec 0150 */\r
152 typedef char glue_ord; \r
153 /* sec 0212 */\r
154 typedef struct\r
155 {\r
156   int mode_field;\r
157   halfword head_field, tail_field;\r
158   integer pg_field, ml_field;\r
159   memory_word aux_field;\r
160 } list_state_record;\r
161 /* sec 0269 */\r
162 typedef char group_code;\r
163 /* sec 0300 */\r
164 typedef struct\r
165 {\r
166   quarterword state_field, index_field; \r
167   halfword start_field, loc_field, limit_field, name_field;\r
168 } in_state_record; \r
169 /* sec 0548 */\r
170 typedef integer internal_font_number;\r
171 typedef integer font_index;\r
172 /* sec 0594 */\r
173 typedef integer dvi_index;\r
174 /* sec 0920 */\r
175 typedef integer trie_op_code;\r
176 /* sec 0925 */\r
177 typedef integer trie_pointer;\r
178 typedef integer hyph_pointer;\r
179 \r
180 EXTERN integer bad;\r
181 EXTERN ASCII_code xord[256];\r
182 EXTERN ASCII_code xchr[256];\r
183 EXTERN ASCII_code name_of_file[file_name_size + 4];\r
184 EXTERN integer name_length;\r
185 \r
186 #ifdef ALLOCATESTRING\r
187   #define initial_pool_size     40000\r
188   #define increment_pool_size   80000\r
189   EXTERN packed_ASCII_code *    str_pool;\r
190   #define initial_max_strings   5000\r
191   #define increment_max_strings 10000\r
192   EXTERN pool_pointer *         str_start;\r
193 #else\r
194   EXTERN packed_ASCII_code      str_pool[pool_size + 1]; \r
195   EXTERN pool_pointer           str_start[max_strings + 1]; \r
196 #endif\r
197 \r
198 EXTERN pool_pointer pool_ptr;\r
199 EXTERN str_number   str_ptr;\r
200 EXTERN pool_pointer init_pool_ptr;\r
201 EXTERN str_number   init_str_ptr;\r
202 \r
203 #ifdef INITEX\r
204   EXTERN alpha_file pool_file; \r
205 #endif\r
206 \r
207 EXTERN alpha_file log_file; \r
208 EXTERN int selector;\r
209 EXTERN char dig[23 + 1];\r
210 EXTERN integer tally;\r
211 EXTERN integer term_offset;\r
212 EXTERN integer file_offset;\r
213 EXTERN ASCII_code trick_buf[error_line + 1];\r
214 EXTERN integer trick_count;\r
215 EXTERN integer first_count;\r
216 EXTERN int interaction;\r
217 EXTERN boolean deletions_allowed;\r
218 EXTERN boolean set_box_allowed;\r
219 EXTERN int history;\r
220 EXTERN int error_count;\r
221 EXTERN char * help_line[6];\r
222 EXTERN int help_ptr;\r
223 EXTERN boolean use_err_help;\r
224 EXTERN volatile integer interrupt;\r
225 EXTERN boolean OK_to_interrupt;\r
226 EXTERN boolean arith_error;\r
227 EXTERN scaled tex_remainder;\r
228 EXTERN halfword temp_ptr;\r
229 \r
230 /* sec 0116 */\r
231 #ifdef ALLOCATEMAIN\r
232   EXTERN memory_word * main_memory;\r
233   EXTERN memory_word * mem;\r
234 #else\r
235   EXTERN memory_word zzzaa[mem_max - mem_bot + 1];\r
236   #define zmem (zzzaa - (int)(mem_bot))\r
237 #endif\r
238 \r
239 EXTERN pointer lo_mem_max;\r
240 EXTERN pointer hi_mem_min;\r
241 EXTERN integer var_used, dyn_used;\r
242 /* sec 0118 */\r
243 EXTERN pointer avail;\r
244 EXTERN pointer mem_end;\r
245 EXTERN pointer mem_start;\r
246 /* sec 0124 */\r
247 EXTERN pointer rover;\r
248 /* sec 0165 */\r
249 /* NOTE: the following really also need to be dynamically allocated */\r
250 #ifdef DEBUG\r
251   #ifdef ALLOCATEMAIN\r
252     EXTERN char * zzzab;\r
253   #else\r
254 \r
255   EXTERN char\r
256 #define freearr (zzzab - (int)(mem_bot))\r
257   zzzab[mem_max - mem_bot + 1]; \r
258 #endif\r
259 \r
260 #ifdef ALLOCATEMAIN\r
261   EXTERN char *zzzac;\r
262 #else\r
263 /* EXTERN boolean */   /* save (4 - 1) * mem_max - mem_min */\r
264 EXTERN char\r
265 /* #define wasfree (zzzac - (int)(mem_min)) */\r
266 #define wasfree (zzzac - (int)(mem_bot))\r
267 /*  zzzac[mem_max - mem_min + 1];  */\r
268   zzzac[mem_max - mem_bot + 1]; \r
269 #endif\r
270 \r
271 EXTERN pointer was_mem_end, was_lo_max, was_hi_min;\r
272 EXTERN boolean panicking;\r
273 #endif /* DEBUG */\r
274 \r
275 EXTERN integer font_in_short_display;\r
276 EXTERN integer depth_threshold;\r
277 EXTERN integer breadth_max;\r
278 EXTERN int shown_mode;\r
279 EXTERN int old_setting;\r
280 \r
281 #ifdef INCREASEFONTS\r
282   #define eqtb_extra (font_max - 255 + hash_extra)\r
283 #else\r
284   #define eqtb_extra 0\r
285 #endif\r
286 \r
287 #if (eqtb_extra != 0)\r
288   #error ERROR: eqtb_extra is not zero (need hash_extra equal 255 - font_max)\r
289 #endif\r
290 \r
291 #ifdef INCREASEFONTS\r
292   EXTERN memory_word eqtb[eqtb_size + 1 + eqtb_extra];\r
293 #else\r
294   EXTERN memory_word eqtb[eqtb_size + 1];\r
295 #endif\r
296 \r
297 #ifdef INCREASEFONTS\r
298   #define xeq_level (zzzad - (int_base + eqtb_extra))\r
299 #else\r
300   #define xeq_level (zzzad - (int_base))\r
301 #endif\r
302 \r
303 EXTERN quarterword zzzad[eqtb_size - int_base + 1];\r
304 \r
305 #ifdef ALLOCATEHASH\r
306   EXTERN two_halves *zzzae;\r
307   #define hash (zzzae - hash_base)\r
308 #else\r
309   #ifdef INCREASEFONTS\r
310     EXTERN two_halves zzzae[undefined_control_sequence - hash_base + eqtb_extra];\r
311   #else\r
312     EXTERN two_halves zzzae[undefined_control_sequence - hash_base];\r
313   #endif\r
314 \r
315   #define hash (zzzae - hash_base)\r
316 #endif\r
317 \r
318 EXTERN pointer hash_used;\r
319 EXTERN boolean no_new_control_sequence;\r
320 EXTERN integer cs_count;\r
321 \r
322 /* *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** */\r
323 /* using allocated save stack slows it down 1% to 2%                       */\r
324 /* despite reallocation, we still limit it to something finite             */\r
325 /* to avoid soaking up all of machine memory in case of infinite loop      */\r
326 #ifdef ALLOCATESAVESTACK\r
327   #define save_size           65536\r
328   #define initial_save_size   1000\r
329   #define increment_save_size 2000\r
330   EXTERN memory_word * save_stack;\r
331 #else\r
332   #define save_size 8000\r
333   EXTERN memory_word save_stack[save_size + 1];\r
334 #endif\r
335 \r
336 EXTERN integer save_ptr;\r
337 EXTERN integer max_save_stack;\r
338 EXTERN int cur_level;\r
339 EXTERN int cur_group;\r
340 EXTERN integer cur_boundary;\r
341 EXTERN integer mag_set;\r
342 EXTERN int cur_cmd;\r
343 EXTERN halfword cur_chr;\r
344 EXTERN pointer cur_cs;\r
345 EXTERN halfword cur_tok;\r
346 \r
347 #ifdef ALLOCATENESTSTACK\r
348   #define nest_size           65536\r
349   #define initial_nest_size   100\r
350   #define increment_nest_size 200\r
351   EXTERN list_state_record * nest;\r
352 #else\r
353   #define nest_size 200\r
354   EXTERN list_state_record nest[nest_size + 1];\r
355 #endif\r
356 \r
357 EXTERN integer nest_ptr;\r
358 EXTERN integer max_nest_stack;\r
359 EXTERN list_state_record cur_list;\r
360 \r
361 #ifdef ALLOCATEPARAMSTACK\r
362   #define param_size           65536\r
363   #define initial_param_size   100\r
364   #define increment_param_size 200\r
365   EXTERN pointer * param_stack;\r
366 #else\r
367   #define param_size 500\r
368   EXTERN pointer param_stack[param_size + 1];\r
369 #endif\r
370 \r
371 EXTERN integer param_ptr;\r
372 EXTERN integer max_param_stack;\r
373 \r
374 #ifdef ALLOCATEINPUTSTACK\r
375   #define stack_size           65536\r
376   #define initial_stack_size   100\r
377   #define increment_stack_size 200\r
378   EXTERN in_state_record * input_stack;\r
379 #else\r
380   #define stack_size 800\r
381   EXTERN in_state_record input_stack[stack_size + 1];\r
382 #endif\r
383 \r
384 EXTERN integer input_ptr;\r
385 EXTERN integer max_in_stack;\r
386 EXTERN integer high_in_open;\r
387 EXTERN in_state_record cur_input;\r
388 EXTERN int in_open;\r
389 EXTERN integer open_parens;\r
390 EXTERN integer max_open_parens;\r
391 EXTERN alpha_file input_file[max_in_open + 1];\r
392 EXTERN integer line;\r
393 EXTERN integer line_stack[max_in_open + 1];\r
394 EXTERN int scanner_status;\r
395 EXTERN pointer warning_index;\r
396 EXTERN pointer def_ref;\r
397 EXTERN integer align_state;\r
398 EXTERN integer base_ptr;\r
399 EXTERN pointer par_loc;\r
400 EXTERN halfword par_token;\r
401 EXTERN boolean force_eof;\r
402 EXTERN pointer cur_mark[6];\r
403 EXTERN int long_state;\r
404 EXTERN pointer pstack[10];\r
405 EXTERN integer cur_val;\r
406 EXTERN int cur_val_level;\r
407 EXTERN int radix;\r
408 EXTERN int cur_order;\r
409 EXTERN alpha_file read_file[16];\r
410 EXTERN char read_open[20];\r
411 EXTERN pointer cond_ptr;\r
412 EXTERN int if_limit;\r
413 EXTERN int cur_if;\r
414 EXTERN integer if_line;\r
415 EXTERN integer skip_line;\r
416 EXTERN str_number cur_name;\r
417 EXTERN str_number cur_area;\r
418 EXTERN str_number cur_ext;\r
419 EXTERN pool_pointer area_delimiter;\r
420 EXTERN pool_pointer ext_delimiter;\r
421 EXTERN integer format_default_length;\r
422 EXTERN char * TEX_format_default;\r
423 EXTERN boolean name_in_progress;\r
424 EXTERN boolean log_opened;\r
425 EXTERN boolean quoted_file_name;\r
426 EXTERN str_number job_name;\r
427 EXTERN const char * c_job_name;\r
428 EXTERN str_number output_file_name;\r
429 EXTERN str_number log_name;\r
430 EXTERN byte_file dvi_file;\r
431 EXTERN byte_file tfm_file;\r
432 EXTERN byte_file pdf_file;\r
433 EXTERN char * dvi_file_name;\r
434 EXTERN char * pdf_file_name;\r
435 EXTERN char * log_file_name;\r
436 \r
437 #ifdef ALLOCATEFONT\r
438   EXTERN memory_word * font_info;\r
439 #else\r
440   EXTERN memory_word font_info[font_mem_size + 1];\r
441 #endif\r
442 \r
443 EXTERN font_index fmem_ptr;\r
444 EXTERN internal_font_number font_ptr;\r
445 EXTERN internal_font_number frozen_font_ptr;\r
446 EXTERN four_quarters font_check[font_max + 1];\r
447 EXTERN int    font_id[font_max + 1];\r
448 EXTERN scaled font_size[font_max + 1];\r
449 EXTERN scaled font_dsize[font_max + 1];\r
450 EXTERN font_index font_params[font_max + 1];\r
451 EXTERN str_number font_name[font_max + 1];\r
452 EXTERN str_number font_area[font_max + 1];\r
453 EXTERN eight_bits font_bc[font_max + 1];\r
454 EXTERN eight_bits font_ec[font_max + 1];\r
455 EXTERN pointer font_glue[font_max + 1];\r
456 EXTERN boolean font_used[font_max + 1];\r
457 EXTERN integer hyphen_char[font_max + 1];\r
458 EXTERN integer skew_char[font_max + 1];\r
459 EXTERN font_index bchar_label[font_max + 1];\r
460 EXTERN short font_bchar[font_max + 1];\r
461 EXTERN short font_false_bchar[font_max + 1];\r
462 EXTERN integer char_base[font_max + 1];\r
463 EXTERN integer width_base[font_max + 1];\r
464 EXTERN integer height_base[font_max + 1];\r
465 EXTERN integer depth_base[font_max + 1];\r
466 EXTERN integer italic_base[font_max + 1];\r
467 EXTERN integer lig_kern_base[font_max + 1];\r
468 EXTERN integer kern_base[font_max + 1];\r
469 EXTERN integer exten_base[font_max + 1];\r
470 EXTERN integer param_base[font_max + 1];\r
471 EXTERN four_quarters null_character;\r
472 EXTERN integer total_pages;\r
473 EXTERN scaled max_v;\r
474 EXTERN scaled max_h;\r
475 EXTERN integer max_push;\r
476 EXTERN integer last_bop;\r
477 EXTERN integer dead_cycles;\r
478 EXTERN boolean doing_leaders;\r
479 EXTERN quarterword c, f;\r
480 EXTERN scaled rule_ht, rule_dp, rule_wd;\r
481 EXTERN pointer g;\r
482 EXTERN integer lq, lr;\r
483 EXTERN eight_bits dvi_buf[dvi_buf_size + 4];\r
484 EXTERN dvi_index half_buf;\r
485 EXTERN dvi_index dvi_limit;\r
486 EXTERN dvi_index dvi_ptr;\r
487 EXTERN integer dvi_offset;\r
488 EXTERN integer dvi_gone;\r
489 EXTERN pointer down_ptr, right_ptr;\r
490 EXTERN scaled dvi_h, dvi_v;\r
491 EXTERN scaled cur_h, cur_v;\r
492 EXTERN internal_font_number dvi_f;\r
493 EXTERN integer cur_s;\r
494 EXTERN scaled total_stretch[4], total_shrink[4];\r
495 EXTERN integer last_badness;\r
496 EXTERN pointer adjust_tail;\r
497 EXTERN integer pack_begin_line;\r
498 EXTERN two_halves empty_field;\r
499 EXTERN four_quarters null_delimiter;\r
500 EXTERN pointer cur_mlist;\r
501 EXTERN small_number cur_style;\r
502 EXTERN small_number cur_size;\r
503 EXTERN scaled cur_mu;\r
504 EXTERN boolean mlist_penalties;\r
505 EXTERN internal_font_number cur_f;\r
506 EXTERN quarterword cur_c;\r
507 EXTERN four_quarters cur_i;\r
508 EXTERN integer magic_offset;\r
509 EXTERN pointer cur_align;\r
510 EXTERN pointer cur_span;\r
511 EXTERN pointer cur_loop;\r
512 EXTERN pointer align_ptr;\r
513 EXTERN pointer cur_head, cur_tail;\r
514 EXTERN pointer just_box;\r
515 EXTERN pointer passive;\r
516 EXTERN pointer printed_node;\r
517 EXTERN halfword pass_number;\r
518 EXTERN scaled active_width[8];\r
519 EXTERN scaled cur_active_width[8];\r
520 EXTERN scaled background[8];\r
521 EXTERN scaled break_width[8];\r
522 EXTERN boolean no_shrink_error_yet;\r
523 EXTERN pointer cur_p;\r
524 EXTERN boolean second_pass;\r
525 EXTERN boolean final_pass;\r
526 EXTERN integer threshold;\r
527 EXTERN integer minimal_demerits[4];\r
528 EXTERN integer minimum_demerits;\r
529 EXTERN pointer best_place[4];\r
530 EXTERN halfword best_pl_line[4];\r
531 EXTERN scaled disc_width;\r
532 EXTERN halfword easy_line;\r
533 EXTERN halfword last_special_line;\r
534 EXTERN scaled first_width;\r
535 EXTERN scaled second_width;\r
536 EXTERN scaled first_indent;\r
537 EXTERN scaled second_indent;\r
538 EXTERN pointer best_bet;\r
539 EXTERN integer fewest_demerits;\r
540 EXTERN halfword best_line;\r
541 EXTERN integer actual_looseness;\r
542 EXTERN integer line_diff;\r
543 EXTERN int hc[66];\r
544 EXTERN int hn;\r
545 EXTERN halfword ha, hb;\r
546 EXTERN int hf;\r
547 EXTERN int hu[66];\r
548 EXTERN int hyf_char;\r
549 EXTERN int cur_lang, init_cur_lang;\r
550 EXTERN integer l_hyf, r_hyf;\r
551 EXTERN integer init_l_hyf, init_r_hyf;\r
552 EXTERN halfword hyf_bchar;\r
553 EXTERN char hyf[68];\r
554 EXTERN pointer init_list;\r
555 EXTERN boolean init_lig;\r
556 EXTERN boolean init_lft;\r
557 EXTERN int hyphen_passed;\r
558 EXTERN halfword cur_l, cur_r;\r
559 EXTERN pointer cur_q;\r
560 EXTERN pointer lig_stack;\r
561 EXTERN boolean ligature_present;\r
562 EXTERN boolean lft_hit, rt_hit;\r
563 \r
564 #ifdef ALLOCATETRIES\r
565   EXTERN halfword * trie_trl;\r
566   EXTERN halfword * trie_tro;\r
567   EXTERN quarterword * trie_trc;\r
568 #else\r
569   EXTERN halfword trie_trl[trie_size + 1];\r
570   EXTERN halfword trie_tro[trie_size + 1];\r
571   EXTERN quarterword trie_trc[trie_size + 1];\r
572 #endif\r
573 \r
574 EXTERN small_number hyf_distance[trie_op_size + 1];\r
575 EXTERN small_number hyf_num[trie_op_size + 1];\r
576 EXTERN trie_op_code hyf_next[trie_op_size + 1];\r
577 EXTERN integer op_start[256];\r
578 \r
579 #ifdef ALLOCATEHYPHEN\r
580   #define default_hyphen_prime 1009\r
581   EXTERN str_number * hyph_word;\r
582   EXTERN pointer * hyph_list;\r
583   EXTERN integer hyphen_prime;\r
584 #else\r
585   #define hyphen_prime 607\r
586   EXTERN str_number hyph_word[hyphen_prime + 1];\r
587   EXTERN pointer hyph_list[hyphen_prime + 1];\r
588 #endif\r
589 \r
590 EXTERN hyph_pointer hyph_count;\r
591 \r
592 #ifdef INITEX\r
593   EXTERN integer trie_op_hash_C[trie_op_size - neg_trie_op_size + 1];\r
594   #define trie_op_hash (trie_op_hash_C - (int)(neg_trie_op_size)) \r
595   EXTERN trie_op_code trie_used[256];\r
596   EXTERN ASCII_code trie_op_lang[trie_op_size + 1];\r
597   EXTERN trie_op_code trie_op_val[trie_op_size + 1];\r
598   EXTERN integer trie_op_ptr;\r
599 #endif\r
600 \r
601 EXTERN trie_op_code max_op_used;\r
602 \r
603 #ifdef INITEX\r
604   #ifdef ALLOCATEINI\r
605     EXTERN packed_ASCII_code * trie_c; /* characters to match */\r
606     EXTERN trie_op_code * trie_o;      /* operations to perform */\r
607     EXTERN trie_pointer * trie_l;      /* left subtrie links */\r
608     EXTERN trie_pointer * trie_r;      /* right subtrie links */\r
609     EXTERN trie_pointer * trie_hash;   /* used to identify equivlent subtries */\r
610   #else\r
611     EXTERN packed_ASCII_code trie_c[trie_size + 1];\r
612     EXTERN trie_op_code trie_o[trie_size + 1];\r
613     EXTERN trie_pointer trie_l[trie_size + 1];\r
614     EXTERN trie_pointer trie_r[trie_size + 1];\r
615     EXTERN trie_pointer trie_hash[trie_size + 1];\r
616   #endif\r
617 \r
618   EXTERN trie_pointer trie_ptr;\r
619 #endif\r
620 \r
621 #ifdef INITEX\r
622   #ifdef ALLOCATEINI\r
623     EXTERN char * trie_taken;\r
624   #else\r
625     EXTERN boolean trie_taken[trie_size + 1];\r
626   #endif\r
627 \r
628   EXTERN trie_pointer trie_min[256];\r
629   EXTERN trie_pointer trie_max;\r
630   EXTERN boolean trie_not_ready;\r
631 #endif\r
632 \r
633 EXTERN scaled best_height_plus_depth;\r
634 EXTERN pointer page_tail;\r
635 EXTERN int page_contents;\r
636 \r
637 #if (half_error_line < 30) || (half_error_line > error_line - 15)\r
638   #error ERROR: (half_error_line < 30) || (half_error_line > error_line - 15) BAD 1\r
639 #endif\r
640 \r
641 #if (max_print_line < 60)\r
642   #error ERROR: (max_print_line < 60) BAD 2\r
643 #endif\r
644 \r
645 #if (hash_prime > hash_size)\r
646   #error ERROR: (hash_prime > hash_size) BAD 5\r
647 #endif\r
648 \r
649 #if (max_in_open > 127)\r
650   #error ERROR: (max_in_open > 127) BAD 6\r
651 #endif\r
652 \r
653 #if (min_quarterword > 0) || (max_quarterword < 127)\r
654   #error ERROR: (min_quarterword > 0) || (max_quarterword < 127) BAD 11\r
655 #endif\r
656 \r
657 #if (min_halfword > 0) || (max_halfword < 32767)\r
658   #error ERROR:  (min_halfword > 0) || (max_halfword < 32767) BAD 12\r
659 #endif\r
660 \r
661 #if (min_quarterword < min_halfword) || (max_quarterword > max_halfword)\r
662   #error ERROR: (min_quarterword < min_halfword) || (max_quarterword > max_halfword) BAD 13\r
663 #endif\r
664 \r
665 #if (font_max > max_quarterword)\r
666   #error ERROR: (font_max > max_quarterword) BAD 15\r
667 #endif\r
668 \r
669 #if (save_size > max_halfword)\r
670   #error ERROR: (save_size > max_halfword) BAD 17\r
671 #endif\r
672 \r
673 #if (buf_size > max_halfword)\r
674   #error ERROR:  (buf_size > max_halfword) BAD 18\r
675 #endif\r
676 \r
677 #if (max_quarterword - min_quarterword) < 255\r
678   #error (max_quarterword - min_quarterword) < 255 BAD 19\r
679 #endif\r
680 \r
681 EXTERN scaled page_max_depth;\r
682 EXTERN pointer best_page_break;\r
683 EXTERN integer least_page_cost;\r
684 EXTERN scaled best_size;\r
685 EXTERN scaled page_so_far[8];\r
686 EXTERN pointer last_glue;\r
687 EXTERN integer last_penalty;\r
688 EXTERN scaled last_kern;\r
689 EXTERN integer insert_penalties;\r
690 EXTERN boolean output_active;\r
691 /* sec 1032 */\r
692 EXTERN internal_font_number main_f;\r
693 EXTERN four_quarters main_i;\r
694 EXTERN four_quarters main_j;\r
695 EXTERN font_index main_k;\r
696 EXTERN pointer main_p;\r
697 EXTERN integer main_s;\r
698 EXTERN halfword bchar;\r
699 EXTERN halfword false_bchar;\r
700 EXTERN boolean cancel_boundary;\r
701 EXTERN boolean ins_disc;\r
702 /* sec 1074 */\r
703 EXTERN pointer cur_box;\r
704 EXTERN halfword after_token;\r
705 EXTERN boolean long_help_seen;\r
706 EXTERN str_number format_ident;\r
707 EXTERN word_file fmt_file;\r
708 EXTERN gzFile gz_fmt_file;\r
709 /* sec 1331 */\r
710 EXTERN integer ready_already;\r
711 /* sec 1342 */\r
712 EXTERN alpha_file write_file[16];\r
713 EXTERN boolean write_open[18];\r
714 /* sec 1345 */\r
715 EXTERN pointer write_loc;\r
716 EXTERN pool_pointer edit_name_start;\r
717 EXTERN integer edit_name_length, edit_line;\r
718 EXTERN int fbyte;\r
719 /* new variables defined in local.c */\r
720 EXTERN boolean is_initex;\r
721 EXTERN boolean verbose_flag;\r
722 EXTERN boolean trace_flag;\r
723 EXTERN boolean open_trace_flag;\r
724 EXTERN boolean knuth_flag;\r
725 EXTERN boolean c_style_flag;\r
726 EXTERN boolean non_ascii;\r
727 EXTERN boolean key_replace;\r
728 EXTERN boolean deslash;\r
729 EXTERN boolean trimeof;\r
730 EXTERN boolean allow_patterns;\r
731 EXTERN boolean show_fonts_used;\r
732 EXTERN boolean reset_exceptions;\r
733 EXTERN boolean show_current;\r
734 EXTERN boolean return_flag;\r
735 EXTERN boolean civilize_flag;\r
736 EXTERN boolean show_numeric;\r
737 EXTERN boolean restrict_to_ascii;\r
738 EXTERN boolean show_missing;\r
739 EXTERN boolean full_file_name_flag;\r
740 EXTERN int mem_initex;\r
741 EXTERN int mem_extra_high;\r
742 EXTERN int mem_extra_low;\r
743 EXTERN int new_hyphen_prime;\r
744 EXTERN int missing_characters;\r
745 EXTERN boolean show_in_hex;\r
746 EXTERN boolean show_fmt_flag;\r
747 EXTERN boolean show_tfm_flag;\r
748 EXTERN boolean truncate_long_lines;\r
749 EXTERN boolean show_cs_names;\r
750 EXTERN int tab_step;\r
751 EXTERN int pseudo_tilde;\r
752 EXTERN int pseudo_space;\r
753 EXTERN boolean allow_quoted_names;\r
754 EXTERN int default_rule;\r
755 EXTERN char * format_file;\r
756 EXTERN char * source_direct;\r
757 EXTERN char * format_name;\r
758 EXTERN boolean show_line_break_stats;\r
759 EXTERN int first_pass_count;\r
760 EXTERN int second_pass_count;\r
761 EXTERN int final_pass_count;\r
762 EXTERN int underfull_hbox;\r
763 EXTERN int overfull_hbox;\r
764 EXTERN int underfull_vbox;\r
765 EXTERN int overfull_vbox;\r
766 EXTERN int paragraph_failed;\r
767 EXTERN int single_line;\r
768 EXTERN FILE * errout;\r
769 EXTERN int ignore_frozen;\r
770 EXTERN boolean suppress_f_ligs;\r
771 EXTERN int jump_used;\r
772 EXTERN jmp_buf jumpbuffer;\r
773 extern int current_pool_size;\r
774 extern int current_max_strings;\r
775 extern int current_mem_size;\r
776 extern int current_font_mem_size;\r
777 extern int current_save_size;\r
778 extern int current_stack_size;\r
779 extern int current_nest_size;\r
780 extern int current_param_size;\r
781 extern int current_buf_size;\r
782 extern const char * banner;\r
783 extern const char * application;\r
784 extern const char * yandyversion;\r
785 extern char log_line[256];\r
786 extern char * dvi_directory;\r
787 extern char * log_directory;\r
788 extern char * aux_directory;\r
789 extern char * fmt_directory;\r
790 extern char * pdf_directory;\r
791 extern clock_t start_time, main_time, finish_time;\r
792 \r
793 extern memory_word * allocate_main_memory (int size);\r
794 extern memory_word * realloc_main (int lo_size, int hi_size);\r
795 extern packed_ASCII_code * realloc_str_pool (int size);\r
796 extern pool_pointer * realloc_str_start (int size);\r
797 extern memory_word * realloc_save_stack (int size);\r
798 extern list_state_record * realloc_nest_stack (int size);\r
799 extern in_state_record * realloc_input_stack (int size);\r
800 extern halfword * realloc_param_stack (int size);\r
801 extern ASCII_code * realloc_buffer (int size);\r
802 extern memory_word * realloc_font_info (int size);\r
803 extern int realloc_hyphen (int hyphen_prime);\r
804 extern int allocate_tries (int trie_max);\r
805 extern void probe_memory (void);\r
806 extern void print_cs_names (FILE * output, int pass);\r
807 extern void perrormod (const char * s);\r
808 extern char * grabenv (const char * varname);\r
809 extern void flush_trailing_slash (char * directory);\r
810 extern boolean prime (int x);\r
811 extern int endit (int flag);\r
812 extern void uexit (int unix_code);\r
813 extern void t_open_in (void);\r
814 extern void call_edit (ASCII_code * filename, pool_pointer fnstart,\r
815   integer fnlength, integer linenumber);\r
816 extern void add_variable_space (int size);\r
817 extern char * unixify (char * t);\r
818 \r
819 #include "coerce.h"\r
820 \r
821 /* sec 79 */\r
822 extern void node_list_display (integer p);\r
823 extern void do_nothing (void);\r
824 extern void update_terminal (void);\r
825 extern void check_full_save_stack (void);\r
826 extern void push_input (void);\r
827 extern void pop_input (void);\r
828 extern void print_err (const char * s);\r
829 extern void ensure_dvi_open (void);\r
830 extern void write_dvi (size_t a, size_t b);\r
831 extern void prompt_input (const char * s);\r
832 extern void synch_h (void);\r
833 extern void synch_v (void);\r
834 extern void set_cur_lang (void);\r
835 extern void str_room (int val);\r
836 extern void tail_append_ (pointer val);\r
837 #define tail_append(a) tail_append_((pointer) a)\r
838 extern void tex_help (unsigned int n, ...);\r
839 extern void append_char (ASCII_code c);\r
840 extern void append_lc_hex (ASCII_code c);\r
841 extern void succumb (void);\r
842 extern void dvi_out_ (ASCII_code op);\r
843 #define dvi_out(op) dvi_out_((ASCII_code) (op))\r
844 extern void free_avail_ (halfword p);\r
845 #define free_avail(p) free_avail_((halfword) (p))\r
846 extern void flush_string (void);\r
847 extern str_number load_pool_strings (integer spare_size);\r
848 extern str_number make_string_pool (const char * s);\r
849 extern void print_plus (int i, const char * s);\r
850 extern void fget (void);\r
851 extern str_number get_job_name (str_number job);\r
852 extern void show_font_info (void);\r
853 #endif