diff options
Diffstat (limited to 'libcpp/internal.h')
| -rw-r--r-- | libcpp/internal.h | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/libcpp/internal.h b/libcpp/internal.h index ad0a5d5d4e3..ff49c282aa3 100644 --- a/libcpp/internal.h +++ b/libcpp/internal.h @@ -122,6 +122,7 @@ enum include_type IT_INCLUDE, /* #include */ IT_INCLUDE_NEXT, /* #include_next */ IT_IMPORT, /* #import */ + IT_EMBED, /* #embed */ /* Non-directive including mechanisms. */ IT_CMDLINE, /* -include */ @@ -470,6 +471,7 @@ struct cpp_reader struct cpp_dir *quote_include; /* "" */ struct cpp_dir *bracket_include; /* <> */ struct cpp_dir no_search_path; /* No path. */ + struct cpp_dir *embed_include; /* #embed <> */ /* Chain of all hashed _cpp_file instances. */ struct _cpp_file *all_files; @@ -621,6 +623,24 @@ struct cpp_reader } }; +/* Lists of tokens for #embed/__has_embed prefix/suffix/if_empty + parameters. */ +struct cpp_embed_params_tokens +{ + cpp_token *cur_token; + tokenrun base_run, *cur_run; + size_t count; +}; + +/* #embed and __has_embed parameters. */ +struct cpp_embed_params +{ + location_t loc; + bool has_embed; + cpp_num_part limit; + cpp_embed_params_tokens prefix, suffix, if_empty; +}; + /* Character classes. Based on the more primitive macros in safe-ctype.h. If the definition of `numchar' looks odd to you, please look up the definition of a pp-number in the C standard [section 6.4.8 of C99]. @@ -709,6 +729,7 @@ extern bool _cpp_arguments_ok (cpp_reader *, cpp_macro *, const cpp_hashnode *, extern const unsigned char *_cpp_builtin_macro_text (cpp_reader *, cpp_hashnode *, location_t = 0); +extern const cpp_token *_cpp_get_token_no_padding (cpp_reader *); extern int _cpp_warn_if_unused_macro (cpp_reader *, cpp_hashnode *, void *); extern void _cpp_push_token_context (cpp_reader *, cpp_hashnode *, const cpp_token *, unsigned int); @@ -721,13 +742,16 @@ extern void _cpp_destroy_hashtable (cpp_reader *); /* In files.cc */ enum _cpp_find_file_kind - { _cpp_FFK_NORMAL, _cpp_FFK_FAKE, _cpp_FFK_PRE_INCLUDE, _cpp_FFK_HAS_INCLUDE }; + { _cpp_FFK_NORMAL, _cpp_FFK_FAKE, _cpp_FFK_PRE_INCLUDE, _cpp_FFK_HAS_INCLUDE, + _cpp_FFK_EMBED, _cpp_FFK_HAS_EMBED }; extern _cpp_file *_cpp_find_file (cpp_reader *, const char *, cpp_dir *, int angle, _cpp_find_file_kind, location_t); extern bool _cpp_find_failed (_cpp_file *); extern void _cpp_mark_file_once_only (cpp_reader *, struct _cpp_file *); extern const char *_cpp_find_header_unit (cpp_reader *, const char *file, bool angle_p, location_t); +extern int _cpp_stack_embed (cpp_reader *, const char *, bool, + cpp_embed_params *); extern void _cpp_fake_include (cpp_reader *, const char *); extern bool _cpp_stack_file (cpp_reader *, _cpp_file*, include_type, location_t); extern bool _cpp_stack_include (cpp_reader *, const char *, int, @@ -746,7 +770,8 @@ extern bool _cpp_has_header (cpp_reader *, const char *, int, enum include_type); /* In expr.cc */ -extern bool _cpp_parse_expr (cpp_reader *, bool); +extern cpp_num_part _cpp_parse_expr (cpp_reader *, const char *, + const cpp_token *); extern struct op *_cpp_expand_op_stack (cpp_reader *); /* In lex.cc */ @@ -787,6 +812,7 @@ extern void _cpp_restore_pragma_names (cpp_reader *, char **); extern int _cpp_do__Pragma (cpp_reader *, location_t); extern void _cpp_init_directives (cpp_reader *); extern void _cpp_init_internal_pragmas (cpp_reader *); +extern bool _cpp_parse_embed_params (cpp_reader *, struct cpp_embed_params *); extern void _cpp_do_file_change (cpp_reader *, enum lc_reason, const char *, linenum_type, unsigned int); extern void _cpp_pop_buffer (cpp_reader *); |
