7 // A location in a source file
19 bool must_close
; // must close f after use?
21 int cond_d
, cond_td
; // condition depth/condition true depth
25 // A macro, or a macro argument
28 struct macro
*args
; // argument list
29 bool has_args
; // if has_args && !args then it's a macro like FOO()
30 char *text
; // what the macro expands to
31 struct sloc sloc
; // location of definition
32 char name
[1]; // macro/macro argument name
37 struct incfile
*include_top
;
38 struct incfile
*stale_files
;
41 struct macro
*macros
; // all defined macros
45 void cpp_init(struct cpp
*cpp
);
46 void cpp_delete(struct cpp
*cpp
);
47 bool cpp_open_include_file(struct cpp
*cpp
, const char *name
);
48 void cpp_include_file(struct cpp
*cpp
, const char *name
, FILE *f
, bool must_close
);
49 void cpp_read_line(struct cpp
*cpp
);
50 void cpp_process_line(struct cpp
*cpp
);
52 bool cpp_lex_number(struct cpp
*cpp
, char **p_start
, char **output
);