Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

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;