]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/5a/a.h
9bootfat: rename open() to fileinit and make it static as its really a internal funct...
[plan9front.git] / sys / src / cmd / 5a / a.h
1 #include <u.h>
2 #include <libc.h>
3 #include <bio.h>
4 #include "../5c/5.out.h"
5
6 #ifndef EXTERN
7 #define EXTERN  extern
8 #endif
9
10 typedef struct  Sym     Sym;
11 typedef struct  Gen     Gen;
12 typedef struct  Io      Io;
13 typedef struct  Hist    Hist;
14
15 #define MAXALIGN        7
16 #define FPCHIP          1
17 #define NSYMB           8192
18 #define BUFSIZ          8192
19 #define HISTSZ          20
20 #define NINCLUDE        10
21 #define NHUNK           10000
22 #define EOF             (-1)
23 #define IGN             (-2)
24 #define GETC()          ((--fi.c < 0)? filbuf(): *fi.p++ & 0xff)
25 #define NHASH           503
26 #define STRINGSZ        200
27 #define NMACRO          10
28
29 struct  Sym
30 {
31         Sym*    link;
32         char*   macro;
33         long    value;
34         ushort  type;
35         char    *name;
36         char    sym;
37 };
38 #define S       ((Sym*)0)
39
40 EXTERN  struct
41 {
42         char*   p;
43         int     c;
44 } fi;
45
46 struct  Io
47 {
48         Io*     link;
49         char    b[BUFSIZ];
50         char*   p;
51         short   c;
52         short   f;
53 };
54 #define I       ((Io*)0)
55
56 EXTERN  struct
57 {
58         Sym*    sym;
59         short   type;
60 } h[NSYM];
61
62 struct  Gen
63 {
64         Sym*    sym;
65         long    offset;
66         short   type;
67         short   reg;
68         short   name;
69         double  dval;
70         char    sval[8];
71 };
72
73 struct  Hist
74 {
75         Hist*   link;
76         char*   name;
77         long    line;
78         long    offset;
79 };
80 #define H       ((Hist*)0)
81
82 enum
83 {
84         CLAST,
85         CMACARG,
86         CMACRO,
87         CPREPROC,
88
89         Always  = 14,
90 };
91
92 EXTERN  char    debug[256];
93 EXTERN  Sym*    hash[NHASH];
94 EXTERN  char*   Dlist[30];
95 EXTERN  int     nDlist;
96 EXTERN  Hist*   ehist;
97 EXTERN  int     newflag;
98 EXTERN  Hist*   hist;
99 EXTERN  char*   hunk;
100 EXTERN  char*   include[NINCLUDE];
101 EXTERN  Io*     iofree;
102 EXTERN  Io*     ionext;
103 EXTERN  Io*     iostack;
104 EXTERN  long    lineno;
105 EXTERN  int     nerrors;
106 EXTERN  long    nhunk;
107 EXTERN  int     ninclude;
108 EXTERN  Gen     nullgen;
109 EXTERN  char*   outfile;
110 EXTERN  int     pass;
111 EXTERN  char*   pathname;
112 EXTERN  long    pc;
113 EXTERN  int     peekc;
114 EXTERN  int     sym;
115 EXTERN  char    symb[NSYMB];
116 EXTERN  int     thechar;
117 EXTERN  char*   thestring;
118 EXTERN  long    thunk;
119 EXTERN  Biobuf  obuf;
120
121 void*   alloc(long);
122 void*   allocn(void*, long, long);
123 void    errorexit(void);
124 void    pushio(void);
125 void    newio(void);
126 void    newfile(char*, int);
127 Sym*    slookup(char*);
128 Sym*    lookup(void);
129 void    syminit(Sym*);
130 long    yylex(void);
131 int     getc(void);
132 int     getnsc(void);
133 void    unget(int);
134 int     escchar(int);
135 void    cinit(void);
136 void    pinit(char*);
137 void    cclean(void);
138 int     isreg(Gen*);
139 void    outcode(int, int, Gen*, int, Gen*);
140 void    zname(char*, int, int);
141 void    zaddr(Gen*, int);
142 void    ieeedtod(Ieee*, double);
143 int     filbuf(void);
144 Sym*    getsym(void);
145 void    domacro(void);
146 void    macund(void);
147 void    macdef(void);
148 void    macexpand(Sym*, char*);
149 void    macinc(void);
150 void    maclin(void);
151 void    macprag(void);
152 void    macif(int);
153 void    macend(void);
154 void    outhist(void);
155 void    dodefine(char*);
156 void    prfile(long);
157 void    linehist(char*, int);
158 void    gethunk(void);
159 void    yyerror(char*, ...);
160 int     yyparse(void);
161 void    setinclude(char*);
162 int     assemble(char*);
163
164 /*
165  *      system-dependent stuff from ../cc/compat.c
166  */
167
168 enum                            /* keep in synch with ../cc/cc.h */
169 {
170         Plan9   = 1<<0,
171         Unix    = 1<<1,
172         Windows = 1<<2,
173 };
174 int     mywait(int*);
175 int     mycreat(char*, int);
176 int     systemtype(int);
177 int     pathchar(void);
178 char*   mygetwd(char*, int);
179 int     myexec(char*, char*[]);
180 int     mydup(int, int);
181 int     myfork(void);
182 int     mypipe(int*);
183 void*   mysbrk(ulong);