/* * This file is part of the UCB release of Plan 9. It is subject to the license * terms in the LICENSE file found in the top-level directory of this * distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No * part of the UCB release of Plan 9, including this file, may be copied, * modified, propagated, or distributed except according to the terms contained * in the LICENSE file. */ 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 100typedef 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;
/*
* This file is part of the UCB release of Plan 9. It is subject to the license
* terms in the LICENSE file found in the top-level directory of this
* distribution and at http://akaros.cs.berkeley.edu/files/Plan9License. No
* part of the UCB release of Plan 9, including this file, may be copied,
* modified, propagated, or distributed except according to the terms contained
* in the LICENSE file.
*/
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;