From: Nathan Sidwell Date: Tue, 17 Nov 2020 16:16:50 +0000 (-0800) Subject: preprocessor: new callbacks X-Git-Tag: basepoints/gcc-12~3157 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b196e76aecb675b9f6a1e4f15419606621459401;p=thirdparty%2Fgcc.git preprocessor: new callbacks These two callbacks are needed for C++ modules. The first is for handling macros from header-units. These are resolved lazily. The second is for include-translation -- whether a #include gets turned into a header-unit import. libcpp/ * include/cpplib.h (struct cpp_callbacks): Add user_deferred_macro & translate_include. --- diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h index ce00952bf0bb..d2324266d391 100644 --- a/libcpp/include/cpplib.h +++ b/libcpp/include/cpplib.h @@ -680,6 +680,9 @@ struct cpp_callbacks /* Callback that can change a user lazy into normal macro. */ void (*user_lazy_macro) (cpp_reader *, cpp_macro *, unsigned); + /* Callback to handle deferred cpp_macros. */ + cpp_macro *(*user_deferred_macro) (cpp_reader *, location_t, cpp_hashnode *); + /* Callback to parse SOURCE_DATE_EPOCH from environment. */ time_t (*get_source_date_epoch) (cpp_reader *); @@ -698,6 +701,11 @@ struct cpp_callbacks /* Callback for filename remapping in __FILE__ and __BASE_FILE__ macro expansions. */ const char *(*remap_filename) (const char*); + + /* Maybe translate a #include into something else. Return a + cpp_buffer containing the translation if translating. */ + char *(*translate_include) (cpp_reader *, line_maps *, location_t, + const char *path); }; #ifdef VMS