|
|
1.1 root 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: short type;
68: double fval;
69: char *sval;
70: short just; /* justification, for STRING type */
71: short 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: short type; /* NAME, DEFNAME, ... */
82: short first; /* 1 after 1st item seen */
83: short coord; /* 1 if coord system specified for this name */
84: short 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;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.