1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
|
/*-
******************************************************************************
******************************************************************************
**
** MODULE
**
** $RCSfile: gblvars.h,v $
** $Revision: 3.71 $
** $Date: 1996/08/18 20:47:30 $
**
** DESCRIPTION
**
** A 32-bit implementation of BibTeX v0.99c for MS-DOS, OS/2 2.x,
** Unix and VMS. This C language implementation is based on the
** original WEB source but it has been enhanced to support 8-bit input
** characters and a very large processing capacity.
**
** For documentation describing how to use and build this program,
** see the 00README.TXT file that accompanies this distribution.
**
** MODULE CONTENTS
**
** This module contains the declarations for all of the global
** variables used by BibTeX. This module must be included by all of
** the .C modules. The variables are declared in alphabetical order.
**
** AUTHORS
**
** Original WEB translation to C, conversion to "big" (32-bit) capacity,
** addition of run-time selectable capacity and 8-bit support extensions
** by:
**
** Niel Kempson
** Snowy Owl Systems Limited, Cheltenham, England
** E-mail: kempson@snowyowl.co.uk
**
** 8-bit support extensions also by:
**
** Alejandro Aguilar-Sierra
** Centro de Ciencias de la Atm\'osfera,
** Universidad Nacional Aut\'onoma de M\'exico, M\'exico
** E-mail: asierra@servidor.unam.mx
**
** COPYRIGHT
**
** This implementation copyright (c) 1991-1995 by Niel Kempson
** and copyright (c) 1995 by Alejandro Aguilar-Sierra.
**
** This program is free software; you can redistribute it and/or
** modify it under the terms of the GNU General Public License as
** published by the Free Software Foundation; either version 1, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
** General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program; if not, write to the Free Software
** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
**
** In other words, you are welcome to use, share and improve this
** program. You are forbidden to forbid anyone else to use, share
** and improve what you give them. Help stamp out software-hoarding!
**
** ACKNOWLEDGEMENT
**
** The original BibTeX was written by Oren Patashnik using Donald
** Knuth's WEB system. This format produces a PASCAL program for
** execution and a TeX documented version of the source code. This
** program started as a (manual) translation of the WEB source into C.
**
** CHANGE LOG
**
** $Log: gblvars.h,v $
** Revision 3.71 1996/08/18 20:47:30 kempson
** Official release 3.71 (see HISTORY file for details).
**
** Revision 3.70 1996/04/08 10:08:40 kempson
** Final documentation & cosmetic changes for official release 3.70.
**
** Revision 3.6 1995/10/21 22:18:36 kempson
** Added flag to support --wolfgang option.
**
** Revision 3.5 1995/09/24 20:44:37 kempson
** Many changes for final beta test version.
**
** Revision 3.4 1995/04/09 22:15:45 kempson
** Placed under RCS control
**
******************************************************************************
******************************************************************************
*/
#ifndef __GBLVARS_H__
# define __GBLVARS_H__ 1
/*-
**----------------------------------------------------------------------------
** If this file is included by BIBTEX.C, declare all of the variables,
** otherwise just reference them as extern.
**----------------------------------------------------------------------------
*/
#ifdef __BIBTEX_C__
# define __EXTERN__
#else /* NOT __BIBTEX_C__ */
# define __EXTERN__ extern
#endif /* __BIBTEX_C__ */
__EXTERN__ Boolean_T all_entries;
__EXTERN__ CiteNumber_T all_marker;
__EXTERN__ Boolean_T alpha_found;
__EXTERN__ Boolean_T and_found;
__EXTERN__ Boolean_T at_bib_command;
__EXTERN__ LongJumpBuf_T Aux_Done_Flag;
__EXTERN__ Integer_T aux_name_length;
__EXTERN__ AuxNumber_T aux_ptr;
__EXTERN__ HashLoc_T b_add_period;
__EXTERN__ HashLoc_T b_call_type;
__EXTERN__ HashLoc_T b_change_case;
__EXTERN__ HashLoc_T b_chr_to_int;
__EXTERN__ HashLoc_T b_cite;
__EXTERN__ HashLoc_T b_concatenate;
__EXTERN__ HashLoc_T b_default;
__EXTERN__ HashLoc_T b_duplicate;
__EXTERN__ HashLoc_T b_empty;
__EXTERN__ HashLoc_T b_equals;
__EXTERN__ HashLoc_T b_format_name;
__EXTERN__ HashLoc_T b_gets;
__EXTERN__ HashLoc_T b_greater_than;
__EXTERN__ HashLoc_T b_if;
__EXTERN__ HashLoc_T b_int_to_chr;
__EXTERN__ HashLoc_T b_int_to_str;
__EXTERN__ HashLoc_T b_less_than;
__EXTERN__ HashLoc_T b_minus;
__EXTERN__ HashLoc_T b_missing;
__EXTERN__ HashLoc_T b_newline;
__EXTERN__ HashLoc_T b_num_names;
__EXTERN__ HashLoc_T b_plus;
__EXTERN__ HashLoc_T b_pop;
__EXTERN__ HashLoc_T b_preamble;
__EXTERN__ HashLoc_T b_purify;
__EXTERN__ HashLoc_T b_quote;
__EXTERN__ HashLoc_T b_skip;
__EXTERN__ HashLoc_T b_stack;
__EXTERN__ HashLoc_T b_substring;
__EXTERN__ HashLoc_T b_swap;
__EXTERN__ HashLoc_T b_text_length;
__EXTERN__ HashLoc_T b_text_prefix;
__EXTERN__ HashLoc_T b_top_stack;
__EXTERN__ HashLoc_T b_type;
__EXTERN__ HashLoc_T b_warning;
__EXTERN__ HashLoc_T b_while;
__EXTERN__ HashLoc_T b_width;
__EXTERN__ HashLoc_T b_write;
__EXTERN__ Integer_T bad;
__EXTERN__ AlphaFile_T bbl_file;
__EXTERN__ Integer_T bbl_line_num;
__EXTERN__ Integer_T bib_brace_level;
__EXTERN__ Integer_T bib_line_num;
__EXTERN__ BibNumber_T bib_ptr;
__EXTERN__ Boolean_T bib_seen;
__EXTERN__ Integer_T brace_level;
__EXTERN__ LongJumpBuf_T Bst_Done_Flag;
__EXTERN__ AlphaFile_T bst_file;
__EXTERN__ Integer_T bst_line_num;
__EXTERN__ Boolean_T bst_seen;
__EXTERN__ StrNumber_T bst_str;
__EXTERN__ BufPointer_T buf_ptr1;
__EXTERN__ BufPointer_T buf_ptr2;
__EXTERN__ Boolean_T citation_seen;
__EXTERN__ Boolean_T cite_found;
__EXTERN__ Boolean_T cite_hash_found;
__EXTERN__ HashLoc_T cite_loc;
__EXTERN__ CiteNumber_T cite_parent_ptr;
__EXTERN__ CiteNumber_T cite_ptr;
__EXTERN__ CiteNumber_T cite_xptr;
__EXTERN__ LongJumpBuf_T Close_Up_Shop_Flag;
__EXTERN__ StrNumber_T cmd_str_ptr;
__EXTERN__ BufPointer_T comma1;
__EXTERN__ BufPointer_T comma2;
__EXTERN__ Char_T **command_line_arg_strings;
__EXTERN__ Integer_T command_num;
__EXTERN__ HashLoc_T control_seq_loc;
__EXTERN__ Integer8_T conversion_type;
__EXTERN__ FieldLoc_T crossref_num;
__EXTERN__ HashLoc_T cur_macro_loc;
__EXTERN__ BufPointer_T cur_token;
__EXTERN__ Boolean_T double_letter;
__EXTERN__ HashLoc_T dummy_loc;
__EXTERN__ Boolean_T end_of_group;
__EXTERN__ Integer_T ent_chr_ptr;
__EXTERN__ CiteNumber_T entry_cite_ptr;
__EXTERN__ Boolean_T entry_seen;
__EXTERN__ HashLoc_T entry_type_loc;
__EXTERN__ Integer_T err_count;
__EXTERN__ BufPointer_T ex_buf_length;
__EXTERN__ BufPointer_T ex_buf_ptr;
__EXTERN__ BufPointer_T ex_buf_xptr;
__EXTERN__ BufPointer_T ex_buf_yptr;
__EXTERN__ LongJumpBuf_T Exit_Program_Flag;
__EXTERN__ FieldLoc_T field_end_ptr;
__EXTERN__ HashLoc_T field_name_loc;
__EXTERN__ FieldLoc_T field_parent_ptr;
__EXTERN__ FieldLoc_T field_ptr;
__EXTERN__ HashLoc_T field_val_loc;
__EXTERN__ BufPointer_T first_end;
__EXTERN__ BufPointer_T first_start;
__EXTERN__ HashLoc_T fn_loc;
__EXTERN__ Integer_T glob_chr_ptr;
__EXTERN__ Boolean_T hash_found;
__EXTERN__ Integer16_T hash_used;
__EXTERN__ Integer8_T history;
__EXTERN__ Integer_T impl_fn_num;
__EXTERN__ IntEntLoc_T int_ent_ptr;
__EXTERN__ BufPointer_T jr_end;
__EXTERN__ BufPointer_T last;
__EXTERN__ BufPointer_T last_end;
__EXTERN__ BufPointer_T last_token;
__EXTERN__ HashLoc_T lc_cite_loc;
__EXTERN__ HashLoc_T lc_xcite_loc;
__EXTERN__ HashLoc_T literal_loc;
__EXTERN__ LitStkLoc_T lit_stk_ptr;
__EXTERN__ AlphaFile_T log_file;
__EXTERN__ HashLoc_T macro_def_loc;
__EXTERN__ HashLoc_T macro_name_loc;
__EXTERN__ Boolean_T mess_with_entries;
__EXTERN__ BufPointer_T name_bf_ptr;
__EXTERN__ BufPointer_T name_bf_xptr;
__EXTERN__ BufPointer_T name_bf_yptr;
__EXTERN__ Integer_T name_length;
__EXTERN__ Integer_T name_ptr;
__EXTERN__ Integer_T nm_brace_level;
__EXTERN__ Boolean_T no_fields;
__EXTERN__ BibNumber_T num_bib_files;
__EXTERN__ CiteNumber_T num_cites;
__EXTERN__ BufPointer_T num_commas;
__EXTERN__ IntEntLoc_T num_ent_ints;
__EXTERN__ StrEntLoc_T num_ent_strs;
__EXTERN__ FieldLoc_T num_fields;
__EXTERN__ Integer8_T num_glb_strs;
__EXTERN__ Integer_T num_names;
__EXTERN__ BibNumber_T num_preamble_strings;
__EXTERN__ FieldLoc_T num_pre_defined_fields;
__EXTERN__ BufPointer_T num_text_chars;
__EXTERN__ BufPointer_T num_tokens;
__EXTERN__ Integer8_T number_of_command_line_args;
__EXTERN__ CiteNumber_T old_num_cites;
__EXTERN__ BufPointer_T out_buf_length;
__EXTERN__ BufPointer_T out_buf_ptr;
__EXTERN__ PoolPointer_T pool_ptr;
__EXTERN__ Integer_T pop_lit1;
__EXTERN__ Integer_T pop_lit2;
__EXTERN__ Integer_T pop_lit3;
__EXTERN__ StkType_T pop_typ1;
__EXTERN__ StkType_T pop_typ2;
__EXTERN__ StkType_T pop_typ3;
__EXTERN__ PoolPointer_T p_ptr1;
__EXTERN__ PoolPointer_T p_ptr2;
__EXTERN__ BibNumber_T preamble_ptr;
__EXTERN__ Boolean_T preceding_white;
__EXTERN__ HashLoc_T pre_def_loc;
__EXTERN__ Boolean_T prev_colon;
__EXTERN__ Boolean_T read_completed;
__EXTERN__ Boolean_T reading_completed;
__EXTERN__ Boolean_T read_performed;
__EXTERN__ Boolean_T read_seen;
__EXTERN__ ASCIICode_T right_outer_delim;
__EXTERN__ ASCIICode_T right_str_delim;
__EXTERN__ StrNumber_T s_aux_extension;
__EXTERN__ StrNumber_T s_bbl_extension;
__EXTERN__ StrNumber_T s_bib_extension;
__EXTERN__ StrNumber_T s_bst_extension;
__EXTERN__ StrNumber_T s_default;
__EXTERN__ StrNumber_T s_l;
__EXTERN__ StrNumber_T s_log_extension;
__EXTERN__ StrNumber_T s_null;
__EXTERN__ StrNumber_T s_t;
__EXTERN__ StrNumber_T s_u;
__EXTERN__ Integer8_T scan_result;
__EXTERN__ CiteNumber_T sort_cite_ptr;
__EXTERN__ StrEntLoc_T sort_key_num;
__EXTERN__ Integer_T sp_brace_level;
__EXTERN__ PoolPointer_T sp_end;
__EXTERN__ PoolPointer_T sp_length;
__EXTERN__ PoolPointer_T sp_ptr;
__EXTERN__ PoolPointer_T sp_xptr1;
__EXTERN__ PoolPointer_T sp_xptr2;
__EXTERN__ PoolPointer_T sp2_length;
__EXTERN__ Boolean_T store_entry;
__EXTERN__ Boolean_T store_field;
__EXTERN__ Boolean_T store_token;
__EXTERN__ StrEntLoc_T str_ent_ptr;
__EXTERN__ UChar_T str_glb_ptr;
__EXTERN__ Integer_T string_width;
__EXTERN__ StrNumber_T str_num;
__EXTERN__ StrNumber_T str_ptr;
__EXTERN__ BufPointer_T sv_ptr1;
__EXTERN__ BufPointer_T sv_ptr2;
__EXTERN__ Integer_T tmp_end_ptr;
__EXTERN__ Integer_T tmp_ptr;
__EXTERN__ Boolean_T to_be_written;
__EXTERN__ Boolean_T token_starting;
__EXTERN__ Integer_T token_value;
__EXTERN__ StrNumber_T top_lev_str;
__EXTERN__ Boolean_T type_exists;
__EXTERN__ Boolean_T use_default;
__EXTERN__ BufPointer_T von_end;
__EXTERN__ BufPointer_T von_start;
__EXTERN__ WizFnLoc_T wiz_def_ptr;
__EXTERN__ WizFnLoc_T wiz_fn_ptr;
__EXTERN__ HashLoc_T wiz_loc;
#ifdef STAT
__EXTERN__ HashLoc_T blt_in_loc[NUM_BLT_IN_FNS + 1];
__EXTERN__ BltInRange_T blt_in_ptr;
__EXTERN__ Integer_T execution_count[NUM_BLT_IN_FNS + 1];
__EXTERN__ Integer_T total_ex_count;
#endif /* STAT */
/*-
**----------------------------------------------------------------------------
** STATIC GLOBAL ARRAYS DECLARED HERE
**----------------------------------------------------------------------------
*/
__EXTERN__ AlphaFile_T aux_file[AUX_STACK_SIZE + 1];
__EXTERN__ StrNumber_T aux_list[AUX_STACK_SIZE + 1];
__EXTERN__ Integer_T aux_ln_stack[AUX_STACK_SIZE + 1];
__EXTERN__ Integer_T char_width[LAST_ASCII_CHAR + 1];
__EXTERN__ IDType_T id_class[LAST_ASCII_CHAR + 1];
__EXTERN__ LexType_T lex_class[LAST_ASCII_CHAR + 1];
__EXTERN__ unsigned char xchr[LAST_ASCII_CHAR + 1];
__EXTERN__ ASCIICode_T xord[LAST_TEXT_CHAR + 1];
#ifdef SUPPORT_8BIT
/*
** Special arrays to manage character set report.
**
** c8upcase - contains the lowercase equivalent for each character.
** If a character has no lowercase equivalent (e.g.
** because it's not a letter), the value is set to that of
** the character.
**
** c8lowcase - contains the uppercase equivalent for each character
** If a character has no uppercase equivalent (e.g.
** because it's not a letter), the value is set to that of
** the character.
**
** c8order - contains the sorting weight for each character. If a
** character doesn't have a specified sorting weight, it
** will be set to the default SORT_LAST to ensure that it
** is sorted after any defined character.
*/
__EXTERN__ unsigned char c8upcase[LAST_TEXT_CHAR + 1];
__EXTERN__ unsigned char c8lowcase[LAST_TEXT_CHAR + 1];
__EXTERN__ int c8order[LAST_TEXT_CHAR + 1];
#endif /* SUPPORT_8BIT */
/*-
**----------------------------------------------------------------------------
** DYNAMICALLY ALLOCATED GLOBAL ARRAYS DECLARED HERE
**----------------------------------------------------------------------------
*/
__EXTERN__ AlphaFile_T *bib_file;
__EXTERN__ StrNumber_T *bib_list;
__EXTERN__ ASCIICode_T *buffer;
__EXTERN__ StrNumber_T *cite_info;
__EXTERN__ StrNumber_T *cite_list;
__EXTERN__ Boolean_T *entry_exists;
__EXTERN__ Integer_T *entry_ints;
__EXTERN__ ASCIICode_T *entry_strs;
__EXTERN__ ASCIICode_T *ex_buf;
__EXTERN__ StrNumber_T *field_info;
__EXTERN__ FnClass_T *fn_type;
__EXTERN__ Integer_T *glb_str_end;
__EXTERN__ StrNumber_T *glb_str_ptr;
__EXTERN__ ASCIICode_T *global_strs;
__EXTERN__ StrIlk_T *hash_ilk;
__EXTERN__ HashPointer_T *hash_next;
__EXTERN__ StrNumber_T *hash_text;
__EXTERN__ Integer_T *ilk_info;
__EXTERN__ Integer_T *lit_stack;
__EXTERN__ StkType_T *lit_stk_type;
__EXTERN__ unsigned char *name_of_file;
__EXTERN__ ASCIICode_T *name_sep_char;
__EXTERN__ BufPointer_T *name_tok;
__EXTERN__ ASCIICode_T *out_buf;
__EXTERN__ StrNumber_T *s_preamble;
__EXTERN__ ASCIICode_T *str_pool;
__EXTERN__ PoolPointer_T *str_start;
__EXTERN__ ASCIICode_T *sv_buffer;
__EXTERN__ HashPtr2_T *type_list;
__EXTERN__ HashPtr2_T *wiz_functions;
/*-
**----------------------------------------------------------------------------
** Variables used to record the results of the command line parsing.
**----------------------------------------------------------------------------
*/
#ifdef UTF_8
__EXTERN__ Boolean_T Flag_language;
__EXTERN__ char *Str_language;
__EXTERN__ Boolean_T Flag_location;
__EXTERN__ char *Str_location;
#endif
__EXTERN__ Boolean_T Flag_7bit;
__EXTERN__ Boolean_T Flag_8bit;
__EXTERN__ Boolean_T Flag_8bit_alpha;
__EXTERN__ Boolean_T Flag_big;
__EXTERN__ Boolean_T Flag_debug;
__EXTERN__ Boolean_T Flag_huge;
__EXTERN__ Boolean_T Flag_stats;
__EXTERN__ Boolean_T Flag_trace;
__EXTERN__ Boolean_T Flag_wolfgang;
__EXTERN__ Integer_T M_min_crossrefs;
__EXTERN__ Integer_T M_strings;
__EXTERN__ char *Str_auxfile;
__EXTERN__ char *Str_csfile;
/*-
**----------------------------------------------------------------------------
** Variables used to hold the value of certain key capacity limits. The
** values used to be #defined as the uppercase equivalent name, but can
** now be set dynamically from the command line.
**----------------------------------------------------------------------------
*/
__EXTERN__ Integer_T Buf_Size;
__EXTERN__ Integer_T Ent_Str_Size;
__EXTERN__ Integer_T Glob_Str_Size;
__EXTERN__ Integer_T Hash_Prime;
__EXTERN__ Integer_T Hash_Size;
__EXTERN__ Integer_T Lit_Stk_Size;
__EXTERN__ Integer_T Max_Bib_Files;
__EXTERN__ Integer_T Max_Cites;
__EXTERN__ Integer_T Max_Fields;
__EXTERN__ Integer_T Max_Glob_Strs;
__EXTERN__ Integer_T Max_Strings;
__EXTERN__ Integer_T Min_Crossrefs;
__EXTERN__ Integer_T Pool_Size;
__EXTERN__ Integer_T Wiz_Fn_Space;
#endif /* __GBLVARS.H__ */
|