plan9port

fork of plan9port with libvec, libstr and libsdb
Log | Files | Refs | README | LICENSE

e.h (4283B)


      1 #include <stdio.h>
      2 #include <stdlib.h>
      3 #include <string.h>
      4 #include <errno.h>
      5 #include <inttypes.h>
      6 
      7 #undef sqrt
      8 #define sqrt p9_sqrt
      9 #define YYSTYPE uintptr_t  /* DEC v. GNU garbage */
     10 
     11 enum charclass {
     12 	OTHER, OLET, ILET, DIG, LPAR, RPAR, SLASH, PLUS, ILETF, ILETJ, VBAR,
     13 	NONE, LAST
     14 };
     15 extern int class[LAST][LAST];
     16 
     17 #define	dprintf		if (dbg) printf
     18 #define	max(x,y)	(((x) >= (y)) ? (x) : (y))	/* beware of side effects */
     19 #define	min(x,y)	(((x) <= (y)) ? (x) : (y))
     20 
     21 #undef	sprintf	/* Snow Leopard */
     22 
     23 extern	char	errbuf[2000];
     24 extern	char	*cmdname;
     25 #define	ERROR	sprintf(errbuf,
     26 #define	FATAL	), error(1, errbuf)
     27 #define	WARNING	), error(0, errbuf)
     28 #define	SYNTAX	), yyerror(errbuf)
     29 
     30 #define	ROM	'1'
     31 #define	ITAL	'2'
     32 #define	BLD	'3'
     33 #define	BDIT	'4'
     34 
     35 #define	DEFGAP	-999	/* default gap in piles */
     36 
     37 extern int	dbg;
     38 extern int	ct;
     39 extern int	lp[];
     40 extern int	used[];		/* available registers */
     41 extern int	ps;		/* dflt init pt size */
     42 extern int	deltaps;	/* default change in ps */
     43 extern int	dps_set;	/* 1 => -p option used */
     44 extern int	gsize;		/* global size */
     45 extern int	ft;		/* default font */
     46 extern int	display;	/* 1 => inline, 0 => .EQ/.EN */
     47 extern int	synerr;		/* 1 if syntax error in this eqn */
     48 
     49 extern char	*typesetter;	/* typesetter name for -T... */
     50 extern int	minsize;	/* min size it can print */
     51 extern int	ttype;		/* actual type of typesetter: */
     52 
     53 #define	DEVCAT	1
     54 #define	DEV202	2
     55 #define	DEVAPS	3
     56 #define	DEVPOST	4
     57 
     58 extern double	eht[];
     59 extern double	ebase[];
     60 extern int	lfont[];
     61 extern int	rfont[];
     62 extern int	lclass[];
     63 extern int	rclass[];
     64 extern YYSTYPE	yyval;   /* DEC cc wants long */
     65 extern YYSTYPE  yylval;   /* DEC cc wants long */
     66 extern int	eqnreg;
     67 extern double	eqnht;
     68 extern int	lefteq, righteq;
     69 extern int	markline;	/* 1 if this EQ/EN contains mark or lineup */
     70 
     71 #define	TBLSIZE	100
     72 
     73 typedef struct s_tbl {
     74 	char	*name;		/* e.g., "max" or "sum" */
     75 	char	*cval;		/* e.g., "\\f1max\\fP" */
     76 	int	ival;		/*    or SUM */
     77 	struct s_tbl *next;
     78 } tbl;
     79 
     80 extern	char	*spaceval;	/* use in place of normal \x (for pic) */
     81 
     82 #define	String	01
     83 #define	Macro	02
     84 #define	File	04
     85 #define	Char	010
     86 #define	Free	040
     87 
     88 typedef struct infile {
     89 	FILE	*fin;
     90 	char	*fname;
     91 	int	lineno;
     92 } Infile;
     93 
     94 typedef struct {	/* input source */
     95 	int	type;	/* Macro, String, File */
     96 	char	*sp;	/* if String or Macro */
     97 } Src;
     98 
     99 extern	Src	src[], *srcp;	/* input source stack */
    100 
    101 #define	MAXARGS	20
    102 typedef struct {	/* argument stack */
    103 	char	*argstk[MAXARGS];	/* pointers to args */
    104 	char	*argval;	/* points to space containing args */
    105 } Arg;
    106 
    107 typedef struct {	/* font number and name */
    108 	int	ft;
    109 	char	name[10];
    110 } Font;
    111 
    112 extern	Font	ftstack[];
    113 extern	Font	*ftp;
    114 
    115 extern	int	szstack[];
    116 extern	int	nszstack;
    117 
    118 extern	Infile	infile[10];
    119 extern	Infile	*curfile;
    120 
    121 extern	tbl	*lookup(tbl **tblp, char *name);
    122 extern	void	install(tbl **tblp, char *name, char *cval, int ival);
    123 extern	tbl	*keytbl[], *deftbl[], *restbl[], *ftunetbl[];
    124 
    125 extern	int	salloc(void);
    126 extern	void	sfree(int);
    127 extern	void	nrwid(int, int, int);
    128 extern	char	*ABSPS(int);
    129 extern	char	*DPS(int, int);
    130 extern	int	EFFPS(int);
    131 extern	double	EM(double, int);
    132 extern	double	REL(double, int);
    133 extern	char	*pad(int);
    134 extern	void	getstr(char *, int);
    135 extern	char	*strsave(char *);
    136 
    137 extern	int	input(void);
    138 extern	int	unput(int);
    139 extern	void	pbstr(char *);
    140 extern	void	error(int, char *);
    141 extern	void	yyerror(char *);
    142 
    143 extern	void	diacrit(int, int);
    144 extern	void	eqnbox(int, int, int);
    145 extern	void	setfont(char *);
    146 extern	void	font(int, int);
    147 extern	void	globfont(void);
    148 extern	void	fatbox(int);
    149 extern	void	fromto(int, int, int);
    150 extern	void	funny(int);
    151 extern	void	integral(int, int, int);
    152 extern	void	setintegral(void);
    153 extern	void	pushsrc(int, char *);
    154 extern	void	popsrc(void);
    155 extern	void	putout(int);
    156 extern	void	text(int, char *);
    157 extern void subsup(int, int, int);
    158 extern void bshiftb(int, int, int);
    159 extern void shift2(int, int, int);
    160 extern void setsize(char *);
    161 extern void size(int, int);
    162 extern void globsize(void);
    163 extern void sqrt(int);
    164 extern void text(int, char *);
    165 extern void boverb(int, int);
    166 extern void lineup(int);
    167 extern void mark(int);
    168 extern void paren(int, int, int);
    169 extern void move(int, int, int);
    170 extern void pile(int);
    171 extern int startcol(int);
    172 extern void column(int, int);
    173 extern void matrix(int);