grap.h 6.3 KB

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