X-Git-Url: http://git.sourceforge.jp/view?a=blobdiff_plain;f=gcc%2Fcpplib.h;h=5ac0a19bec91371faa45a94053f1840018afe7fb;hb=3588eff44bee374d3da3b564b6d9a870303aca9a;hp=dbbf85b06c46ad9a35a8f3b4451b2bcfa22e4666;hpb=7bc95b568a17635991ac4650c811de1caf2ea68e;p=pf3gnuchains%2Fgcc-fork.git diff --git a/gcc/cpplib.h b/gcc/cpplib.h index dbbf85b06c4..5ac0a19bec9 100644 --- a/gcc/cpplib.h +++ b/gcc/cpplib.h @@ -42,6 +42,7 @@ typedef struct cpp_callbacks cpp_callbacks; typedef struct cpp_dir cpp_dir; struct answer; +struct _cpp_file; /* The first three groups, apart from '=', can appear in preprocessor expressions (+= and -= are used to indicate unary + and - resp.). @@ -283,6 +284,10 @@ struct cpp_options promotions. */ unsigned char warn_num_sign_change; + /* Zero means don't warn about __VA_ARGS__ usage in c89 pedantic mode. + Presumably the usage is protected by the appropriate #ifdef. */ + unsigned char warn_variadic_macros; + /* Nonzero means turn warnings into errors. */ unsigned char warnings_are_errors; @@ -374,6 +379,14 @@ struct cpp_options unsigned char stdc_0_in_system_headers; }; +/* Callback for header lookup for HEADER, which is the name of a + source file. It is used as a method of last resort to find headers + that are not otherwise found during the normal include processing. + The return value is the malloced name of a header to try and open, + if any, or NULL otherwise. This callback is called only if the + header is otherwise unfound. */ +typedef const char *(*missing_header_cb)(cpp_reader *, const char *header, cpp_dir **); + /* Call backs to cpplib client. */ struct cpp_callbacks { @@ -395,6 +408,7 @@ struct cpp_callbacks void (*def_pragma) (cpp_reader *, unsigned int); int (*valid_pch) (cpp_reader *, const char *, int); void (*read_pch) (cpp_reader *, const char *, int, const char *); + missing_header_cb missing_header; }; /* Chain of directories to look for include files in. */ @@ -415,6 +429,12 @@ struct cpp_dir platforms. A NULL-terminated array of (from, to) pairs. */ const char **name_map; + /* Routine to construct pathname, given the search path name and the + HEADER we are trying to find, return a constructed pathname to + try and open. If this is NULL, the constructed pathname is as + constructed by append_file_to_dir. */ + char *(*construct) (const char *header, cpp_dir *dir); + /* The C front end uses these to recognize duplicated directories in the search path. */ ino_t ino; @@ -488,9 +508,9 @@ struct cpp_hashnode GTY(()) union _cpp_hashnode_value { /* If a macro. */ - cpp_macro * GTY((skip (""))) macro; + cpp_macro * GTY((skip)) macro; /* Answers to an assertion. */ - struct answer * GTY ((skip (""))) answers; + struct answer * GTY ((skip)) answers; /* Code for a builtin macro. */ enum builtin_type GTY ((tag ("1"))) builtin; /* Macro argument index. */ @@ -533,7 +553,7 @@ extern void cpp_set_callbacks (cpp_reader *, cpp_callbacks *); returns the name of the original file; this is the same as the input file, except for preprocessed input. This will generate at least one file change callback, and possibly a line change callback - too. If there was an error opening the file, it returns NULL. */ + too. If there was an error opening the file, it returns NULL. */ extern const char *cpp_read_main_file (cpp_reader *, const char *); /* Set up built-ins like __FILE__. */ @@ -723,6 +743,11 @@ extern bool cpp_included (cpp_reader *, const char *); extern void cpp_make_system_header (cpp_reader *, int, int); extern bool cpp_push_include (cpp_reader *, const char *); extern void cpp_change_file (cpp_reader *, enum lc_reason, const char *); +extern const char *cpp_get_path (struct _cpp_file *); +extern cpp_dir *cpp_get_dir (struct _cpp_file *); +extern cpp_buffer *cpp_get_buffer (cpp_reader *); +extern struct _cpp_file *cpp_get_file (cpp_buffer *); +extern cpp_buffer *cpp_get_prev (cpp_buffer *); /* In cpppch.c */ struct save_macro_data;