]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/grap/grap.h
ndb/dnsquery, ndb/csquery: handle long lines
[plan9front.git] / sys / src / cmd / grap / grap.h
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         int     type;
68         double  fval;
69         char    *sval;
70         int     just;   /* justification, for STRING type */
71         int     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         int     type;   /* NAME, DEFNAME, ... */
82         int     first;  /* 1 after 1st item seen */
83         int     coord;  /* 1 if coord system specified for this name */
84         int     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    *tostring(char *);
108 extern char *grow(char *, char *, int, int);
109
110 extern  int     lineno;
111 extern  int     synerr;
112 extern  int     codegen;
113 extern  char    tempfile[];
114 extern  FILE    *tfd;
115
116 extern  Point   ptmin, ptmax;
117
118 extern  char    *dflt_coord;
119 extern  char    *curr_coord;
120 extern  int     ncoord;
121 extern  int     auto_x;
122 extern  double  margin;
123 extern  int     autoticks;
124 extern  int     pointsize, ps_set;
125
126
127 #define logit(x) (x) = log10(x)
128 #define Log10(x) errcheck(log10(x), "log")
129 #define Exp(x)  errcheck(exp(x), "exp")
130 #define Sqrt(x) errcheck(sqrt(x), "sqrt")
131
132 #define min(x,y)        (((x) <= (y)) ? (x) : (y))
133 #define max(x,y)        (((x) >= (y)) ? (x) : (y))
134
135 extern  void    yyerror(char *);
136 extern void coord_x(Point);
137 extern void coord_y(Point);
138 extern void coordlog(int);
139 extern void coord(Obj *);
140 extern void resetcoord(Obj *);
141 extern void savenum(int, double);
142 extern void setjust(int);
143 extern void setsize(int, double);
144 extern void range(Point);
145 extern void halfrange(Obj *, int, double);
146 extern Obj *lookup(char *, int);
147 extern double getvar(Obj *);
148 extern double setvar(Obj *, double);
149 extern Point makepoint(Obj *, double, double);
150 extern Attr *makefattr(int, double);
151 extern Attr *makesattr(char *);
152 extern Attr *makeattr(int, double, char *, int, int);
153 extern Attr *addattr(Attr *, Attr *);
154 extern void freeattr(Attr *);
155 extern char *slprint(Attr *);
156 extern char *juststr(int);
157 extern char *sprntf(char *, Attr *);
158 extern void forloop(Obj *, double, double, int, double, char *);
159 extern void nextfor(void);
160 extern void endfor(void);
161 extern char *ifstat(double, char *, char *);
162 extern void frame(void);
163 extern void frameht(double);
164 extern void framewid(double);
165 extern void frameside(int, Attr *);
166 extern void pushsrc(int, char *);
167 extern void popsrc(void);
168 extern void definition(char *);
169 extern char *delimstr(char *);
170 extern int baldelim(int, char *);
171 extern void dodef(Obj *);
172 extern int getarg(char *);
173 extern int input(void);
174 extern int nextchar(void);
175 extern void do_thru(void);
176 extern int unput(int);
177 extern void pbstr(char *);
178 extern double errcheck(double, char *);
179 extern void yyerror(char *);
180 extern void eprint(void);
181 extern int yywrap(void);
182 extern void copyfile(char *);
183 extern void copydef(Obj *);
184 extern Obj *copythru(char *);
185 extern char *addnewline(char *);
186 extern void copyuntil(char *);
187 extern void copy(void);
188 extern void shell_init(void);
189 extern void shell_text(char *);
190 extern void shell_exec(void);
191 extern void labelwid(double);
192 extern void labelmove(int, double);
193 extern void label(int, Attr *);
194 extern void lab_adjust(void);
195 extern char *sizeit(Attr *);
196 extern void line(int, Point, Point, Attr *);
197 extern void circle(double, Point);
198 extern char *xyname(Point);
199 extern void pic(char *);
200 extern void numlist(void);
201 extern void plot(Attr *, Point);
202 extern void plotnum(double, char *, Point);
203 extern void drawdesc(int, Obj *, Attr *, char *);
204 extern void next(Obj *, Point, Attr *);
205 extern void print(void);
206 extern void endstat(void);
207 extern void graph(char *);
208 extern void setup(void);
209 extern void do_first(void);
210 extern void reset(void);
211 extern void opentemp(void);
212 extern void savetick(double, char *);
213 extern void dflt_tick(double);
214 extern void tickside(int);
215 extern void tickoff(int);
216 extern void gridtickoff(void);
217 extern void setlist(void);
218 extern void tickdir(int, double, int);
219 extern void ticks(void);
220 extern double modfloor(double, double);
221 extern double modceil(double, double);
222 extern void do_autoticks(Obj *);
223 extern void logtick(double, double, double);
224 extern Obj *setauto(void);
225 extern void autoside(Obj *, int);
226 extern void autolog(Obj *, int);
227 extern void iterator(double, double, int, double, char *);
228 extern void ticklist(Obj *, int);
229 extern void print_ticks(int, int, Obj *, char *, char *);
230 extern void maketick(int, char *, int, int, double, char *, char *, char *);
231 extern void griddesc(Attr *);
232 extern void gridlist(Obj *);
233 extern char *desc_str(Attr *);
234 extern int sidelog(int, int);
235
236 extern  Obj     *objlist;