xref: /plan9/sys/src/cmd/grap/grap.h (revision 7dd7cddf99dd7472612f1413b4da293630e6b1bc)
1 extern	char	errbuf[200];
2 #define	ERROR	sprintf(errbuf,
3 #define	FATAL	), yyerror(errbuf), exit(1)
4 #define	WARNING	), yyerror(errbuf)
5 
6 #define	dprintf	if(dbg)printf
7 
8 #define	String	01
9 #define	Macro	02
10 #define	File	04
11 #define	Char	010
12 #define	Thru	020
13 #define	Free	040
14 
15 #define	MARGIN	0.07	/* default margin around data */
16 #define	SLOP	1.001	/* slop for limits of for loops */
17 #define	FRAMEWID 3	/* default width for boxes and ellipses */
18 #define	FRAMEHT	2	/* default height and line length */
19 #define	TICKLEN	0.1
20 
21 #define	MAXNUM	200
22 
23 #define	XFLAG	01
24 #define	YFLAG	02
25 
26 #define	INTICK	01
27 #define	OUTICK	02
28 
29 #define	BOT	01
30 #define	TOP	02
31 #define	RIGHT	04
32 #define	LEFT	010
33 
34 #define	RJUST	01
35 #define	LJUST	02
36 #define	ABOVE	04
37 #define	BELOW	010
38 
39 typedef struct infile {
40 	FILE	*fin;
41 	char	*fname;
42 	int	lineno;
43 } Infile;
44 
45 typedef struct {	/* input source */
46 	int	type;	/* Macro, String, File */
47 	char	*sp;	/* if String or Macro */
48 } Src;
49 
50 extern	Src	src[], *srcp;	/* input source stack */
51 
52 #define	MAXARGS	100
53 typedef struct {	/* argument stack */
54 	char	*argstk[MAXARGS];	/* pointers to args */
55 	char	*argval;	/* points to space containing args */
56 } Arg;
57 
58 extern	Infile	infile[10];
59 extern	Infile	*curfile;
60 
61 typedef struct {
62 	struct obj *obj;
63 	double	x, y;
64 } Point;
65 
66 typedef struct attr {	/* e.g., DASH 1.1 or "..." rjust size *.5 */
67 	int	type;
68 	double	fval;
69 	char	*sval;
70 	int	just;	/* justification, for STRING type */
71 	int	op;	/* optional operator, ditto */
72 	struct attr *next;
73 } Attr;
74 
75 typedef struct obj {	/* a name and its properties */
76 	char	*name;
77 	char	*val;	/* body of define, etc. */
78 	double	fval;	/* if a numeric variable */
79 	Point	pt;	/* usually for max and min */
80 	Point	pt1;
81 	int	type;	/* NAME, DEFNAME, ... */
82 	int	first;	/* 1 after 1st item seen */
83 	int	coord;	/* 1 if coord system specified for this name */
84 	int	log;	/* x, y, or z (= x+y) */
85 	Attr	*attr;	/* DASH, etc., for now */
86 	struct obj *next;
87 } Obj;
88 
89 typedef union {		/* the yacc stack type */
90 	int	i;
91 	char	*p;
92 	double	f;
93 	Point	pt;
94 	Obj	*op;
95 	Attr	*ap;
96 } YYSTYPE;
97 
98 extern	YYSTYPE	yylval, yyval;
99 
100 extern	int	dbg;
101 
102 extern	int	ntext;
103 extern	double	num[MAXNUM];
104 extern	int	nnum;
105 extern	int	ntick, tside;
106 
107 extern	char	*tostring(char *);
108 extern char *grow(char *, char *, int, int);
109 
110 extern	int	lineno;
111 extern	int	synerr;
112 extern	int	codegen;
113 extern	char	tempfile[];
114 extern	FILE	*tfd;
115 
116 extern	Point	ptmin, ptmax;
117 
118 extern	char	*dflt_coord;
119 extern	char	*curr_coord;
120 extern	int	ncoord;
121 extern	int	auto_x;
122 extern	double	margin;
123 extern	int	autoticks;
124 extern	int	pointsize, ps_set;
125 
126 
127 #define	logit(x) (x) = log10(x)
128 #define	Log10(x) errcheck(log10(x), "log")
129 #define	Exp(x)	errcheck(exp(x), "exp")
130 #define	Sqrt(x)	errcheck(sqrt(x), "sqrt")
131 
132 #define	min(x,y)	(((x) <= (y)) ? (x) : (y))
133 #define	max(x,y)	(((x) >= (y)) ? (x) : (y))
134 
135 extern	void	yyerror(char *);
136 extern void coord_x(Point);
137 extern void coord_y(Point);
138 extern void coordlog(int);
139 extern void coord(Obj *);
140 extern void resetcoord(Obj *);
141 extern void savenum(int, double);
142 extern void setjust(int);
143 extern void setsize(int, double);
144 extern void range(Point);
145 extern void halfrange(Obj *, int, double);
146 extern Obj *lookup(char *, int);
147 extern double getvar(Obj *);
148 extern double setvar(Obj *, double);
149 extern Point makepoint(Obj *, double, double);
150 extern Attr *makefattr(int, double);
151 extern Attr *makesattr(char *);
152 extern Attr *makeattr(int, double, char *, int, int);
153 extern Attr *addattr(Attr *, Attr *);
154 extern void freeattr(Attr *);
155 extern char *slprint(Attr *);
156 extern char *juststr(int);
157 extern char *sprntf(char *, Attr *);
158 extern void forloop(Obj *, double, double, int, double, char *);
159 extern void nextfor(void);
160 extern void endfor(void);
161 extern char *ifstat(double, char *, char *);
162 extern void frame(void);
163 extern void frameht(double);
164 extern void framewid(double);
165 extern void frameside(int, Attr *);
166 extern void pushsrc(int, char *);
167 extern void popsrc(void);
168 extern void definition(char *);
169 extern char *delimstr(char *);
170 extern int baldelim(int, char *);
171 extern void dodef(Obj *);
172 extern int getarg(char *);
173 extern int input(void);
174 extern int nextchar(void);
175 extern void do_thru(void);
176 extern int unput(int);
177 extern void pbstr(char *);
178 extern double errcheck(double, char *);
179 extern void yyerror(char *);
180 extern void eprint(void);
181 extern int yywrap(void);
182 extern void copyfile(char *);
183 extern void copydef(Obj *);
184 extern Obj *copythru(char *);
185 extern char *addnewline(char *);
186 extern void copyuntil(char *);
187 extern void copy(void);
188 extern void shell_init(void);
189 extern void shell_text(char *);
190 extern void shell_exec(void);
191 extern void labelwid(double);
192 extern void labelmove(int, double);
193 extern void label(int, Attr *);
194 extern void lab_adjust(void);
195 extern char *sizeit(Attr *);
196 extern void line(int, Point, Point, Attr *);
197 extern void circle(double, Point);
198 extern char *xyname(Point);
199 extern void pic(char *);
200 extern void numlist(void);
201 extern void plot(Attr *, Point);
202 extern void plotnum(double, char *, Point);
203 extern void drawdesc(int, Obj *, Attr *, char *);
204 extern void next(Obj *, Point, Attr *);
205 extern void print(void);
206 extern void endstat(void);
207 extern void graph(char *);
208 extern void setup(void);
209 extern void do_first(void);
210 extern void reset(void);
211 extern void opentemp(void);
212 extern void savetick(double, char *);
213 extern void dflt_tick(double);
214 extern void tickside(int);
215 extern void tickoff(int);
216 extern void gridtickoff(void);
217 extern void setlist(void);
218 extern void tickdir(int, double, int);
219 extern void ticks(void);
220 extern double modfloor(double, double);
221 extern double modceil(double, double);
222 extern void do_autoticks(Obj *);
223 extern void logtick(double, double, double);
224 extern Obj *setauto(void);
225 extern void autoside(Obj *, int);
226 extern void autolog(Obj *, int);
227 extern void iterator(double, double, int, double, char *);
228 extern void ticklist(Obj *, int);
229 extern void print_ticks(int, int, Obj *, char *, char *);
230 extern void maketick(int, char *, int, int, double, char *, char *, char *);
231 extern void griddesc(Attr *);
232 extern void gridlist(Obj *);
233 extern char *desc_str(Attr *);
234 extern int sidelog(int, int);
235 
236 extern	Obj	*objlist;
237