[gcc r11-5100] preprocessor: new callbacks

Nathan Sidwell nathan@gcc.gnu.org
Tue Nov 17 16:22:16 GMT 2020


https://gcc.gnu.org/g:b196e76aecb675b9f6a1e4f15419606621459401

commit r11-5100-gb196e76aecb675b9f6a1e4f15419606621459401
Author: Nathan Sidwell <nathan@acm.org>
Date:   Tue Nov 17 08:16:50 2020 -0800

    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:
---
 libcpp/include/cpplib.h | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
index ce00952bf0b..d2324266d39 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


More information about the Gcc-cvs mailing list