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