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+
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, 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+
35+typedef 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+
44+typedef 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+
51+typedef 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+
63+typedef 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+
73+typedef 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))
82+extern unsigned long namebit[077+1];
83+
84+enum errtype { WARNING, ERROR, FATAL };
85+
86+void expandlex(void);
87+void fixlex(void);
88+void setup(int, char **);
89+#define gettokens cpp_gettokens
90+int gettokens(Tokenrow *, int);
91+int comparetokens(Tokenrow *, Tokenrow *);
92+Source *setsource(char *, int, char *);
93+void unsetsource(void);
94+void puttokens(Tokenrow *);
95+void process(Tokenrow *);
96+void *domalloc(int);
97+void dofree(void *);
98+void error(enum errtype, char *, ...);
99+void flushout(void);
100+int fillbuf(Source *);
101+int trigraph(Source *);
102+int foldline(Source *);
103+Nlist *lookup(Token *, int);
104+void control(Tokenrow *);
105+void dodefine(Tokenrow *);
106+void doadefine(Tokenrow *, int);
107+void doinclude(Tokenrow *);
108+void doif(Tokenrow *, enum kwtype);
109+void expand(Tokenrow *, Nlist *);
110+void builtin(Tokenrow *, int);
111+int gatherargs(Tokenrow *, Tokenrow **, int *);
112+void substargs(Nlist *, Tokenrow *, Tokenrow **);
113+void expandrow(Tokenrow *, char *);
114+void maketokenrow(int, Tokenrow *);
115+Tokenrow *copytokenrow(Tokenrow *, Tokenrow *);
116+Token *growtokenrow(Tokenrow *);
117+Tokenrow *normtokenrow(Tokenrow *);
118+void adjustrow(Tokenrow *, int);
119+void movetokenrow(Tokenrow *, Tokenrow *);
120+void insertrow(Tokenrow *, int, Tokenrow *);
121+void peektokens(Tokenrow *, char *);
122+void doconcat(Tokenrow *);
123+Tokenrow *stringify(Tokenrow *);
124+int lookuparg(Nlist *, Token *);
125+long eval(Tokenrow *, int);
126+void genline(void);
127+void setempty(Tokenrow *);
128+void makespace(Tokenrow *);
129+char *outnum(char *, int);
130+int digit(int);
131+uchar *newstring(uchar *, int, int);
132+int checkhideset(int, Nlist *);
133+void prhideset(int);
134+int newhideset(int, Nlist *);
135+int unionhideset(int, int);
136+void iniths(void);
137+void setobjname(char *);
138+void clearwstab(void);
139+#define rowlen(tokrow) ((tokrow)->lp - (tokrow)->bp)
140+
141+extern char *outp;
142+extern Token nltoken;
143+extern Source *cursource;
144+extern char *curtime;
145+extern int incdepth;
146+extern int ifdepth;
147+extern int ifsatisfied[NIF];
148+extern int Mflag;
149+extern int nolineinfo;
150+extern int skipping;
151+extern int verbose;
152+extern int Cplusplus;
153+extern Nlist *kwdefined;
154+extern Includelist includelist[NINCLUDE];
155+extern char wd[];