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