diff options
Diffstat (limited to 'src/cmd/grap/grap.h')
-rw-r--r-- | src/cmd/grap/grap.h | 236 |
1 files changed, 236 insertions, 0 deletions
diff --git a/src/cmd/grap/grap.h b/src/cmd/grap/grap.h new file mode 100644 index 00000000..65c7f83f --- /dev/null +++ b/src/cmd/grap/grap.h @@ -0,0 +1,236 @@ +extern char errbuf[200]; +#define ERROR sprintf(errbuf, +#define FATAL ), yyerror(errbuf), exit(1) +#define WARNING ), yyerror(errbuf) + +#define dprintf if(dbg)printf + +#define String 01 +#define Macro 02 +#define File 04 +#define Char 010 +#define Thru 020 +#define Free 040 + +#define MARGIN 0.07 /* default margin around data */ +#define SLOP 1.001 /* slop for limits of for loops */ +#define FRAMEWID 3 /* default width for boxes and ellipses */ +#define FRAMEHT 2 /* default height and line length */ +#define TICKLEN 0.1 + +#define MAXNUM 200 + +#define XFLAG 01 +#define YFLAG 02 + +#define INTICK 01 +#define OUTICK 02 + +#define BOT 01 +#define TOP 02 +#define RIGHT 04 +#define LEFT 010 + +#define RJUST 01 +#define LJUST 02 +#define ABOVE 04 +#define BELOW 010 + +typedef struct infile { + FILE *fin; + char *fname; + int lineno; +} Infile; + +typedef struct { /* input source */ + int type; /* Macro, String, File */ + char *sp; /* if String or Macro */ +} Src; + +extern Src src[], *srcp; /* input source stack */ + +#define MAXARGS 100 +typedef struct { /* argument stack */ + char *argstk[MAXARGS]; /* pointers to args */ + char *argval; /* points to space containing args */ +} Arg; + +extern Infile infile[10]; +extern Infile *curfile; + +typedef struct { + struct obj *obj; + double x, y; +} Point; + +typedef struct attr { /* e.g., DASH 1.1 or "..." rjust size *.5 */ + int type; + double fval; + char *sval; + int just; /* justification, for STRING type */ + int op; /* optional operator, ditto */ + struct attr *next; +} Attr; + +typedef struct obj { /* a name and its properties */ + char *name; + char *val; /* body of define, etc. */ + double fval; /* if a numeric variable */ + Point pt; /* usually for max and min */ + Point pt1; + int type; /* NAME, DEFNAME, ... */ + int first; /* 1 after 1st item seen */ + int coord; /* 1 if coord system specified for this name */ + int log; /* x, y, or z (= x+y) */ + Attr *attr; /* DASH, etc., for now */ + struct obj *next; +} Obj; + +typedef union { /* the yacc stack type */ + int i; + char *p; + double f; + Point pt; + Obj *op; + Attr *ap; +} YYSTYPE; + +extern YYSTYPE yylval, yyval; + +extern int dbg; + +extern int ntext; +extern double num[MAXNUM]; +extern int nnum; +extern int ntick, tside; + +extern char *tostring(char *); +extern char *grow(char *, char *, int, int); + +extern int lineno; +extern int synerr; +extern int codegen; +extern char tempfile[]; +extern FILE *tfd; + +extern Point ptmin, ptmax; + +extern char *dflt_coord; +extern char *curr_coord; +extern int ncoord; +extern int auto_x; +extern double margin; +extern int autoticks; +extern int pointsize, ps_set; + + +#define logit(x) (x) = log10(x) +#define Log10(x) errcheck(log10(x), "log") +#define Exp(x) errcheck(exp(x), "exp") +#define Sqrt(x) errcheck(sqrt(x), "sqrt") + +#define min(x,y) (((x) <= (y)) ? (x) : (y)) +#define max(x,y) (((x) >= (y)) ? (x) : (y)) + +extern void yyerror(char *); +extern void coord_x(Point); +extern void coord_y(Point); +extern void coordlog(int); +extern void coord(Obj *); +extern void resetcoord(Obj *); +extern void savenum(int, double); +extern void setjust(int); +extern void setsize(int, double); +extern void range(Point); +extern void halfrange(Obj *, int, double); +extern Obj *lookup(char *, int); +extern double getvar(Obj *); +extern double setvar(Obj *, double); +extern Point makepoint(Obj *, double, double); +extern Attr *makefattr(int, double); +extern Attr *makesattr(char *); +extern Attr *makeattr(int, double, char *, int, int); +extern Attr *addattr(Attr *, Attr *); +extern void freeattr(Attr *); +extern char *slprint(Attr *); +extern char *juststr(int); +extern char *sprntf(char *, Attr *); +extern void forloop(Obj *, double, double, int, double, char *); +extern void nextfor(void); +extern void endfor(void); +extern char *ifstat(double, char *, char *); +extern void frame(void); +extern void frameht(double); +extern void framewid(double); +extern void frameside(int, Attr *); +extern void pushsrc(int, char *); +extern void popsrc(void); +extern void definition(char *); +extern char *delimstr(char *); +extern int baldelim(int, char *); +extern void dodef(Obj *); +extern int getarg(char *); +extern int input(void); +extern int nextchar(void); +extern void do_thru(void); +extern int unput(int); +extern void pbstr(char *); +extern double errcheck(double, char *); +extern void yyerror(char *); +extern void eprint(void); +extern int yywrap(void); +extern void copyfile(char *); +extern void copydef(Obj *); +extern Obj *copythru(char *); +extern char *addnewline(char *); +extern void copyuntil(char *); +extern void copy(void); +extern void shell_init(void); +extern void shell_text(char *); +extern void shell_exec(void); +extern void labelwid(double); +extern void labelmove(int, double); +extern void label(int, Attr *); +extern void lab_adjust(void); +extern char *sizeit(Attr *); +extern void line(int, Point, Point, Attr *); +extern void circle(double, Point); +extern char *xyname(Point); +extern void pic(char *); +extern void numlist(void); +extern void plot(Attr *, Point); +extern void plotnum(double, char *, Point); +extern void drawdesc(int, Obj *, Attr *, char *); +extern void next(Obj *, Point, Attr *); +extern void print(void); +extern void endstat(void); +extern void graph(char *); +extern void setup(void); +extern void do_first(void); +extern void reset(void); +extern void opentemp(void); +extern void savetick(double, char *); +extern void dflt_tick(double); +extern void tickside(int); +extern void tickoff(int); +extern void gridtickoff(void); +extern void setlist(void); +extern void tickdir(int, double, int); +extern void ticks(void); +extern double modfloor(double, double); +extern double modceil(double, double); +extern void do_autoticks(Obj *); +extern void logtick(double, double, double); +extern Obj *setauto(void); +extern void autoside(Obj *, int); +extern void autolog(Obj *, int); +extern void iterator(double, double, int, double, char *); +extern void ticklist(Obj *, int); +extern void print_ticks(int, int, Obj *, char *, char *); +extern void maketick(int, char *, int, int, double, char *, char *, char *); +extern void griddesc(Attr *); +extern void gridlist(Obj *); +extern char *desc_str(Attr *); +extern int sidelog(int, int); + +extern Obj *objlist; |