History

initial

rminnich committed 16 years ago

Commit 1fcdf79No parent (first commit)7733 files · +2461126 −-39Browse files

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

Unified · Split

sys/src/cmd/cpp/cpp.h+160−0
@@ -0,0 +1,160 @@
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+
13+enum 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+
22+enum kwtype { KIF, KIFDEF, KIFNDEF, KELIF, KELSE, KENDIF, KINCLUDE, KDEFINE,
23+ KUNDEF, KLINE, KERROR, KWARNING, 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+#define ISVARMAC 020 /* variadic macro */
31+
32+#define EOB 0xFE /* sentinel for end of input buffer */
33+#define EOFC 0xFD /* sentinel for end of input file */
34+#define XPWS 1 /* token flag: white space to assure token sep. */
35+
36+enum { Notinmacro, Inmacro };
37+
38+typedef struct token {
39+ unsigned char type;
40+ unsigned char flag;
41+ unsigned short hideset;
42+ unsigned int wslen;
43+ unsigned int len;
44+ uchar *t;
45+} Token;
46+
47+typedef struct tokenrow {
48+ Token *tp; /* current one to scan */
49+ Token *bp; /* base (allocated value) */
50+ Token *lp; /* last+1 token used */
51+ int max; /* number allocated */
52+} Tokenrow;
53+
54+typedef struct source {
55+ char *filename; /* name of file of the source */
56+ int line; /* current line number */
57+ int lineinc; /* adjustment for \\n lines */
58+ uchar *inb; /* input buffer */
59+ uchar *inp; /* input pointer */
60+ uchar *inl; /* end of input */
61+ int ins; /* input buffer size */
62+ int fd; /* input source */
63+ int ifdepth; /* conditional nesting in include */
64+ struct source *next; /* stack for #include */
65+} Source;
66+
67+typedef struct nlist {
68+ struct nlist *next;
69+ uchar *name;
70+ int len;
71+ Tokenrow *vp; /* value as macro */
72+ Tokenrow *ap; /* list of argument names, if any */
73+ char val; /* value as preprocessor name */
74+ char flag; /* is defined, is pp name */
75+} Nlist;
76+
77+typedef struct includelist {
78+ char deleted;
79+ char always;
80+ char *file;
81+} Includelist;
82+
83+#define new(t) (t *)domalloc(sizeof(t))
84+#define quicklook(a,b) (namebit[(a)&077] & (1<<((b)&037)))
85+#define quickset(a,b) namebit[(a)&077] |= (1<<((b)&037))
86+extern unsigned long namebit[077+1];
87+
88+enum errtype { WARNING, ERROR, FATAL };
89+
90+void expandlex(void);
91+void fixlex(void);
92+void setup(int, char **);
93+#define gettokens cpp_gettokens
94+int gettokens(Tokenrow *, int);
95+int comparetokens(Tokenrow *, Tokenrow *);
96+Source *setsource(char *, int, char *);
97+void unsetsource(void);
98+void puttokens(Tokenrow *);
99+void process(Tokenrow *);
100+void *dorealloc(void *, int);
101+void *domalloc(int);
102+void dofree(void *);
103+void error(enum errtype, char *, ...);
104+void flushout(void);
105+int fillbuf(Source *);
106+int trigraph(Source *);
107+int foldline(Source *);
108+Nlist *lookup(Token *, int);
109+void control(Tokenrow *);
110+void dodefine(Tokenrow *);
111+void doadefine(Tokenrow *, int);
112+void doinclude(Tokenrow *);
113+void doif(Tokenrow *, enum kwtype);
114+void expand(Tokenrow *, Nlist *, int);
115+void builtin(Tokenrow *, int);
116+int gatherargs(Tokenrow *, Tokenrow **, int, int *);
117+void substargs(Nlist *, Tokenrow *, Tokenrow **);
118+void expandrow(Tokenrow *, char *, int);
119+void maketokenrow(int, Tokenrow *);
120+Tokenrow *copytokenrow(Tokenrow *, Tokenrow *);
121+Token *growtokenrow(Tokenrow *);
122+Tokenrow *normtokenrow(Tokenrow *);
123+void adjustrow(Tokenrow *, int);
124+void movetokenrow(Tokenrow *, Tokenrow *);
125+void insertrow(Tokenrow *, int, Tokenrow *);
126+void peektokens(Tokenrow *, char *);
127+void doconcat(Tokenrow *);
128+Tokenrow *stringify(Tokenrow *);
129+int lookuparg(Nlist *, Token *);
130+long eval(Tokenrow *, int);
131+void genline(void);
132+void setempty(Tokenrow *);
133+void makespace(Tokenrow *);
134+char *outnum(char *, int);
135+int digit(int);
136+uchar *newstring(uchar *, int, int);
137+int checkhideset(int, Nlist *);
138+void prhideset(int);
139+int newhideset(int, Nlist *);
140+int unionhideset(int, int);
141+void iniths(void);
142+void setobjname(char *);
143+void clearwstab(void);
144+#define rowlen(tokrow) ((tokrow)->lp - (tokrow)->bp)
145+
146+extern char *outp;
147+extern Token nltoken;
148+extern Source *cursource;
149+extern char *curtime;
150+extern int incdepth;
151+extern int ifdepth;
152+extern int ifsatisfied[NIF];
153+extern int Mflag;
154+extern int nolineinfo;
155+extern int skipping;
156+extern int verbose;
157+extern int Cplusplus;
158+extern Nlist *kwdefined;
159+extern Includelist includelist[NINCLUDE];
160+extern char wd[];