|
|
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.