|
|
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 *calloc(), *malloc(), *realloc(), *tostring(), *grow();
108: extern char *desc_str(), *ifstat(), *delimstr();
109: extern char *xyname(), *slprint();
110: extern Obj *lookup();
111: extern Obj *copythru();
112: extern Obj *objlist;
113: extern Attr *makeattr(), *makefattr(), *makesattr(), *addattr();
114: extern char *sprntf(/* char *, Attr* */);
115: extern Point makepoint();
116: extern double setvar(), getvar();
117:
118: extern int lineno;
119: extern int synerr;
120: extern int codegen;
121: extern char *tempfile;
122: extern FILE *tfd;
123:
124: extern Point ptmin, ptmax;
125:
126: extern char *dflt_coord;
127: extern char *curr_coord;
128: extern int ncoord;
129: extern int auto_x;
130: extern double margin;
131: extern int autoticks;
132: extern int pointsize, ps_set;
133:
134: extern char *sizeit(), *juststr();
135: extern double log10(), log(), exp(), sin(), cos(), sqrt(), atof(), errcheck();
136: extern double fabs(), floor(), ceil(), moddouble(), modceil();
137:
138: #define logit(x) (x) = log10(x)
139: #define Log10(x) errcheck(log10(x), "log")
140: #define Exp(x) errcheck(exp(x), "exp")
141: #define Sqrt(x) errcheck(sqrt(x), "sqrt")
142:
143: #define min(x,y) (((x) <= (y)) ? (x) : (y))
144: #define max(x,y) (((x) >= (y)) ? (x) : (y))
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.