OSDN Git Service

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