|
|
1.1 root 1: #define dprintf if(dbg)printf
2:
3: #define String 01
4: #define Macro 02
5: #define File 04
6: #define Char 010
7: #define Thru 020
8: #define Free 040
9:
10: #define MARGIN 0.07 /* default margin around data */
11: #define SLOP 1.001 /* slop for limits of for loops */
12: #define FRAMEWID 3 /* default width for boxes and ellipses */
13: #define FRAMEHT 2 /* default height and line length */
14: #define TICKLEN 0.1
15:
16: #define MAXNUM 200
17:
18: #define XFLAG 01
19: #define YFLAG 02
20:
21: #define INTICK 01
22: #define OUTICK 02
23:
24: #define BOT 01
25: #define TOP 02
26: #define RIGHT 04
27: #define LEFT 010
28:
29: #define RJUST 01
30: #define LJUST 02
31: #define ABOVE 04
32: #define BELOW 010
33:
34: typedef struct infile {
35: FILE *fin;
36: char *fname;
37: int lineno;
38: } Infile;
39:
40: typedef struct { /* input source */
41: int type; /* Macro, String, File */
42: char *sp; /* if String or Macro */
43: } Src;
44:
45: extern Src src[], *srcp; /* input source stack */
46:
47: #define MAXARGS 20
48: typedef struct { /* argument stack */
49: char *argstk[MAXARGS]; /* pointers to args */
50: char *argval; /* points to space containing args */
51: } Arg;
52:
53: extern Infile infile[10];
54: extern Infile *curfile;
55:
56: typedef struct {
57: struct obj *obj;
58: double x, y;
59: } Point;
60:
61: typedef struct attr { /* e.g., DASH 1.1 or "..." rjust size *.5 */
62: short type;
63: double fval;
64: char *sval;
65: short just; /* justification, for STRING type */
66: short op; /* optional operator, ditto */
67: struct attr *next;
68: } Attr;
69:
70: typedef struct obj { /* a name and its properties */
71: char *name;
72: char *val; /* body of define, etc. */
73: double fval; /* if a numeric variable */
74: Point pt; /* usually for max and min */
75: Point pt1;
76: short type; /* NAME, DEFNAME, ... */
77: short first; /* 1 after 1st item seen */
78: short coord; /* 1 if coord system specified for this name */
79: short log; /* x, y, or z (= x+y) */
80: Attr *attr; /* DASH, etc., for now */
81: struct obj *next;
82: } Obj;
83:
84: typedef union { /* the yacc stack type */
85: int i;
86: char *p;
87: double f;
88: Point pt;
89: Obj *op;
90: Attr *ap;
91: } YYSTYPE;
92:
93: extern YYSTYPE yylval, yyval;
94:
95: extern int dbg;
96:
97: extern int ntext;
98: extern double num[MAXNUM];
99: extern int nnum;
100: extern int ntick, tside;
101:
102: extern char *calloc(), *malloc(), *realloc(), *tostring(), *grow();
103: extern char *desc_str(), *ifstat(), *delimstr();
104: extern char *xyname(), *slprint();
105: extern Obj *lookup();
106: extern Obj *copythru();
107: extern Obj *objlist;
108: extern Attr *makeattr(), *makefattr(), *makesattr(), *addattr();
109: extern char *sprntf(/* char *, Attr* */);
110: extern Point makepoint();
111: extern double setvar(), getvar();
112:
113: extern int lineno;
114: extern int synerr;
115: extern int codegen;
116: extern char *tempfile;
117: extern FILE *tfd;
118:
119: extern Point ptmin, ptmax;
120:
121: extern char *dflt_coord;
122: extern char *curr_coord;
123: extern int ncoord;
124: extern int auto_x;
125: extern double margin;
126: extern int autoticks;
127: extern int pointsize, ps_set;
128:
129: extern char *sizeit(), *juststr();
130: extern double log10(), log(), exp(), sin(), cos(), sqrt(), atof(), errcheck();
131: extern double fabs(), floor(), ceil(), moddouble(), modceil();
132:
133: #define logit(x) (x) = log10(x)
134: #define Log10(x) errcheck(log10(x), "log")
135: #define Exp(x) errcheck(exp(x), "exp")
136: #define Sqrt(x) errcheck(sqrt(x), "sqrt")
137:
138: #define min(x,y) (((x) <= (y)) ? (x) : (y))
139: #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.