1 /* char_routines.h: Data structures for character information
2 
3 This file is part of Omega,
4 which is based on the web2c distribution of TeX,
5 
6 Copyright (c) 1994--2001 John Plaice and Yannis Haralambous
7 
8 Omega is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 2 of the License, or
11 (at your option) any later version.
12 
13 Omega is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 GNU General Public License for more details.
17 
18 You should have received a copy of the GNU General Public License
19 along with Omega; if not, write to the Free Software Foundation, Inc.,
20 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
21 
22 */
23 
24 typedef struct char_entry_struct {
25     in_list indices[C_MAX+1];
26     unsigned index_indices[C_MAX+1];
27     unsigned c;
28     unsigned copies;
29     unsigned tag;
30     unsigned remainder;
31     unsigned defined;
32     unsigned accent;
33     unsigned *extens;
34     unsigned ovf_packet_length;
35     unsigned char *ovf_packet;
36 } char_entry;
37 
38 extern char_entry *current_character;
39 extern char_entry *current_secondary_character;
40 
41 extern unsigned num_char_info, words_per_entry;
42 
43 extern void print_characters(boolean);
44 extern void init_character(unsigned, char_entry *);
45 extern void copy_characters(unsigned, unsigned);
46 extern void init_planes(void);
47 
48 extern void ensure_existence(unsigned);
49 extern void check_char_tag(unsigned);
50 extern void set_char_tag(unsigned,unsigned);
51 extern void set_char_remainder(unsigned,unsigned);
52 extern void set_next_larger(unsigned);
53 extern void init_var_character(void);
54 
55 typedef struct label_entry_struct {
56     int rr;
57     int cc;
58 } label_entry;
59 
60 extern unsigned no_labels;
61 extern label_entry *label_table;
62 extern int label_ptr, sort_ptr;
63 extern int lk_offset;
64 extern boolean extra_loc_needed;
65 
66 
67 extern void check_and_correct(void);
68 
69 extern void adjust_labels(boolean);
70 extern void print_labels(void);
71 extern void set_extensible_piece(unsigned,unsigned);
72 extern void check_existence_and_safety(unsigned,unsigned,const_string,const_string);
73 extern void clear_ligature_entries(void);
74 extern void print_extens(void);
75 extern void retrieve_exten_table(unsigned char *);
76 extern void doublecheck_existence(unsigned, const_string,const_string);
77 extern void output_ovf_chars(void);
78 
79 extern unsigned bc;
80 extern unsigned ec;
81 extern unsigned ne;
82 
83 extern void compute_ligkern_offset(void);
84 extern void output_ofm_extensible(void);
85 extern void compute_ofm_character_info(void);
86 extern void output_ofm_character_info(void);
87