History

init from p9f

henesy committed 5 years agomaster

Commit d787fdaNo parent (first commit)10490 files · +3095713 −-1933Browse files

Showing the changes to sys/src/cmd/cpp/cpp.h (1 of 10490 files). Show all

Unified · Split

sys/src/cmd/cpp/cpp.h+155−0
@@ -0,0 +1,155 @@
1#define INS 32768 /* input buffer */
2#define OBS 4096 /* outbut buffer */
3#define NARG 32 /* Max number arguments to a macro */
4#define NINCLUDE 64 /* Max number of include directories (-I) */
5#define NIF 32 /* depth of nesting of #if */
6#ifndef EOF
7#define EOF (-1)
8#endif
9#ifndef NULL
10#define NULL 0
11#endif
12
13enum toktype { END, UNCLASS, NAME, NUMBER, STRING, CCON, NL, WS, DSHARP,
14 EQ, NEQ, LEQ, GEQ, LSH, RSH, LAND, LOR, PPLUS, MMINUS,
15 ARROW, SBRA, SKET, LP, RP, DOT, AND, STAR, PLUS, MINUS,
16 TILDE, NOT, SLASH, PCT, LT, GT, CIRC, OR, QUEST,
17 COLON, ASGN, COMMA, SHARP, SEMIC, CBRA, CKET,
18 ASPLUS, ASMINUS, ASSTAR, ASSLASH, ASPCT, ASCIRC, ASLSH,
19 ASRSH, ASOR, ASAND, ELLIPS,
20 DSHARP1, NAME1, DEFINED, UMINUS };
21
22enum kwtype { KIF, KIFDEF, KIFNDEF, KELIF, KELSE, KENDIF, KINCLUDE, KDEFINE,
23 KUNDEF, KLINE, KERROR, KPRAGMA, KDEFINED,
24 KLINENO, KFILE, KDATE, KTIME, KSTDC, KEVAL };
25
26#define ISDEFINED 01 /* has #defined value */
27#define ISKW 02 /* is PP keyword */
28#define ISUNCHANGE 04 /* can't be #defined in PP */
29#define ISMAC 010 /* builtin macro, e.g. __LINE__ */
30
31#define EOB 0xFE /* sentinel for end of input buffer */
32#define EOFC 0xFD /* sentinel for end of input file */
33#define XPWS 1 /* token flag: white space to assure token sep. */
34
35typedef struct token {
36 unsigned char type;
37 unsigned char flag;
38 unsigned short hideset;
39 unsigned int wslen;
40 unsigned int len;
41 uchar *t;
42} Token;
43
44typedef struct tokenrow {
45 Token *tp; /* current one to scan */
46 Token *bp; /* base (allocated value) */
47 Token *lp; /* last+1 token used */
48 int max; /* number allocated */
49} Tokenrow;
50
51typedef struct source {
52 char *filename; /* name of file of the source */
53 int line; /* current line number */
54 int lineinc; /* adjustment for \\n lines */
55 uchar *inb; /* input buffer */
56 uchar *inp; /* input pointer */
57 uchar *inl; /* end of input */
58 int fd; /* input source */
59 int ifdepth; /* conditional nesting in include */
60 struct source *next; /* stack for #include */
61} Source;
62
63typedef struct nlist {
64 struct nlist *next;
65 uchar *name;
66 int len;
67 Tokenrow *vp; /* value as macro */
68 Tokenrow *ap; /* list of argument names, if any */
69 char val; /* value as preprocessor name */
70 char flag; /* is defined, is pp name */
71} Nlist;
72
73typedef struct includelist {
74 char deleted;
75 char always;
76 char *file;
77} Includelist;
78
79#define new(t) (t *)domalloc(sizeof(t))
80#define quicklook(a,b) (namebit[(a)&077] & (1<<((b)&037)))
81#define quickset(a,b) namebit[(a)&077] |= (1<<((b)&037))
82extern unsigned long namebit[077+1];
83
84enum errtype { WARNING, ERROR, FATAL };
85
86void expandlex(void);
87void fixlex(void);
88void setup(int, char **);
89#define gettokens cpp_gettokens
90int gettokens(Tokenrow *, int);
91int comparetokens(Tokenrow *, Tokenrow *);
92Source *setsource(char *, int, char *);
93void unsetsource(void);
94void puttokens(Tokenrow *);
95void process(Tokenrow *);
96void *domalloc(int);
97void dofree(void *);
98void error(enum errtype, char *, ...);
99void flushout(void);
100int fillbuf(Source *);
101int trigraph(Source *);
102int foldline(Source *);
103Nlist *lookup(Token *, int);
104void control(Tokenrow *);
105void dodefine(Tokenrow *);
106void doadefine(Tokenrow *, int);
107void doinclude(Tokenrow *);
108void doif(Tokenrow *, enum kwtype);
109void expand(Tokenrow *, Nlist *);
110void builtin(Tokenrow *, int);
111int gatherargs(Tokenrow *, Tokenrow **, int *);
112void substargs(Nlist *, Tokenrow *, Tokenrow **);
113void expandrow(Tokenrow *, char *);
114void maketokenrow(int, Tokenrow *);
115Tokenrow *copytokenrow(Tokenrow *, Tokenrow *);
116Token *growtokenrow(Tokenrow *);
117Tokenrow *normtokenrow(Tokenrow *);
118void adjustrow(Tokenrow *, int);
119void movetokenrow(Tokenrow *, Tokenrow *);
120void insertrow(Tokenrow *, int, Tokenrow *);
121void peektokens(Tokenrow *, char *);
122void doconcat(Tokenrow *);
123Tokenrow *stringify(Tokenrow *);
124int lookuparg(Nlist *, Token *);
125long eval(Tokenrow *, int);
126void genline(void);
127void setempty(Tokenrow *);
128void makespace(Tokenrow *);
129char *outnum(char *, int);
130int digit(int);
131uchar *newstring(uchar *, int, int);
132int checkhideset(int, Nlist *);
133void prhideset(int);
134int newhideset(int, Nlist *);
135int unionhideset(int, int);
136void iniths(void);
137void setobjname(char *);
138void clearwstab(void);
139#define rowlen(tokrow) ((tokrow)->lp - (tokrow)->bp)
140
141extern char *outp;
142extern Token nltoken;
143extern Source *cursource;
144extern char *curtime;
145extern int incdepth;
146extern int ifdepth;
147extern int ifsatisfied[NIF];
148extern int Mflag;
149extern int nolineinfo;
150extern int skipping;
151extern int verbose;
152extern int Cplusplus;
153extern Nlist *kwdefined;
154extern Includelist includelist[NINCLUDE];
155extern char wd[];