Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 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;