xref: /csrg-svn/usr.bin/pascal/pc3/pc3.h (revision 62113)
148061Sbostic /*-
2*62113Sbostic  * Copyright (c) 1980, 1982, 1983, 1993
3*62113Sbostic  *	The Regents of the University of California.  All rights reserved.
422265Sdist  *
548061Sbostic  * %sccs.include.redist.c%
648061Sbostic  *
7*62113Sbostic  *	@(#)pc3.h	8.1 (Berkeley) 06/06/93
822265Sdist  */
9823Speter 
10823Speter     /*
11823Speter      *	a symbol table entry.
12823Speter      */
13823Speter struct symbol {
14823Speter     char		*name;			/* pointer to string table */
15844Speter     short		desc;			/* symbol description */
16823Speter     int			lookup;			/* whether new or old */
1714130Speter     struct symbol	*fromp;			/* its defining .p file */
18823Speter     union {					/* either */
19823Speter 	struct {				/*   for a symbol, */
20823Speter 	    struct symbol	*fromi;		/*     its defining .i file */
21823Speter 	    long		iline;		/*     the .i file line */
22823Speter 	    struct symbol	*rfilep;	/*     its resolving file */
23823Speter 	    long		rline;		/*     resolving file line */
24844Speter 	}		sym_str;
2514130Speter 	long		checksum;		/*   for a file, its checksum */
26823Speter     }			sym_un;
27823Speter };
28823Speter 
29830Speter     /*
30830Speter      *	struct for an argument .o file.
31830Speter      */
32823Speter struct fileinfo {
33823Speter     FILE		*file;
34823Speter     char		*name;
35823Speter     off_t		nextoffset;
36823Speter };
37823Speter 
38830Speter     /*
39830Speter      *	old archive magic for error detection.
40830Speter      */
41823Speter #define	OARMAG	0177545
42823Speter 
43823Speter     /*
44823Speter      *	this is used to trim pointers into the range of a mod of a prime.
45823Speter      */
46823Speter #define	SHORT_ABS( n )	( n & 077777 )
47823Speter 
48823Speter     /*
49830Speter      *	a prime number which gets sizeof( struct symboltableinfo )
50830Speter      *	up to a multiple of BUFSIZ.
51823Speter      */
52823Speter #define	SYMBOLPRIME	1021
53830Speter 
54823Speter     /*
55823Speter      *	number of entries used in this symbol table,
56823Speter      *	a chain to the next symbol table,
57823Speter      *	and the entries. (pointers to struct symbols.)
58823Speter      */
59823Speter struct symboltableinfo {
60823Speter     long			used;
61823Speter     struct symboltableinfo	*chain;
62823Speter     struct symbol		*entry[ SYMBOLPRIME ];
63823Speter };
64823Speter 
65823Speter     /*
66823Speter      *	if new struct symbols are needed,
67823Speter      *	allocate this much space and hack it up into struct symbols.
68823Speter      */
69823Speter #define	SYMBOLALLOC	BUFSIZ
70823Speter 
71823Speter     /*
72830Speter      *	a prime number which gets sizeof( struct stringtableinfo )
73830Speter      *	up to a multiple of BUFSIZ.
74823Speter      */
75823Speter #define	STRINGPRIME	1021
76823Speter 
77823Speter     /*
78823Speter      *	number of entries used in this string table,
79823Speter      *	a chain to the next string table,
80823Speter      *	and the entries. (pointers to the character table.)
81823Speter      */
82823Speter struct stringtableinfo {
83823Speter     long			used;
84823Speter     struct stringtableinfo	*chain;
85823Speter     char			*entry[ STRINGPRIME ];
86823Speter };
87823Speter 
88823Speter     /*
89823Speter      *	if more character table space is needed,
90823Speter      *	allocate this much and hack it up into strings.
91823Speter      */
92823Speter #define	CHARALLOC	BUFSIZ
93823Speter 
94823Speter     /*
95830Speter      *	uninitialized pointer
96830Speter      */
97830Speter #define	NIL	0
98830Speter 
99830Speter     /*
100823Speter      *	an enumeration for error types
101823Speter      */
1027598Speter #define	NONE	0
103823Speter #define	WARNING	1
1047598Speter #define ERROR	2
1057598Speter #define	FATAL	3
106823Speter 
107823Speter     /*
108823Speter      *	an enumeration for lookups
109823Speter      */
110823Speter #define	NEW	0
111823Speter #define	OLD	1
112823Speter 
113823Speter     /*
114823Speter      *	booleans
115823Speter      */
116823Speter #define	BOOL	int
117823Speter #define	FALSE	0
118823Speter #define	TRUE	1
119823Speter 
120823Speter     /*
121823Speter      *	function types.
122823Speter      */
123823Speter struct symbol	*entersymbol();
124823Speter struct symbol	*symbolalloc();
125823Speter long		stringhash();
126823Speter char		*enterstring();
127823Speter char		*charalloc();
128823Speter BOOL		nextelement();
129823Speter time_t		mtime();
130823Speter char		*classify();
1317600Speter char		*article();
132