summaryrefslogtreecommitdiff
path: root/libcpp/internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'libcpp/internal.h')
-rw-r--r--libcpp/internal.h30
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 *);