+2019-08-28 Nathan Sidwell <nathan@acm.org>
+
+ * directives-only.c (_cpp_preprocess_dir_only): Use false, not
+ zero for _cpp_handle_directive call.
+ * directives.c (_cpp_handle_directive): Indented is bool.
+ * files.c (struct _cpp_file): Make bools 1 bit bitfields.
+ * internal.h (enum include_type): Reformat and comment.
+ (struct cpp_buffer): Make flags 1 bit bitfields.
+ (_cpp_handle_directive): Indented is bool.
+
2019-07-09 Martin Sebor <msebor@redhat.com>
* include/line-map.h: Change class-key from class to struct and vice
}
}
-/* Check if we have a known directive. INDENTED is nonzero if the
+/* Check if we have a known directive. INDENTED is true if the
'#' of the directive was indented. This function is in this file
to save unnecessarily exporting dtable etc. to lex.c. Returns
nonzero if the line of tokens has been handled, zero if we should
continue processing the line. */
int
-_cpp_handle_directive (cpp_reader *pfile, int indented)
+_cpp_handle_directive (cpp_reader *pfile, bool indented)
{
const directive *dir = 0;
const cpp_token *dname;
#define BUFF_LIMIT(BUFF) ((BUFF)->limit)
/* #include types. */
-enum include_type {IT_INCLUDE, IT_INCLUDE_NEXT, IT_IMPORT, IT_CMDLINE, IT_DEFAULT};
+enum include_type
+ {
+ /* Directive-based including mechanisms. */
+ IT_INCLUDE, /* #include */
+ IT_INCLUDE_NEXT, /* #include_next */
+ IT_IMPORT, /* #import */
+
+ /* Non-directive including mechanisms. */
+ IT_CMDLINE, /* -include */
+ IT_DEFAULT, /* forced header */
+ };
union utoken
{
struct if_stack *if_stack;
/* True if we need to get the next clean line. */
- bool need_line;
+ bool need_line : 1;
/* True if we have already warned about C++ comments in this file.
The warning happens only for C89 extended mode with -pedantic on,
or for -Wtraditional, and only once per file (otherwise it would
be far too noisy). */
- unsigned int warned_cplusplus_comments : 1;
+ bool warned_cplusplus_comments : 1;
/* True if we don't process trigraphs and escaped newlines. True
for preprocessed input, command line directives, and _Pragma
buffers. */
- unsigned int from_stage3 : 1;
+ bool from_stage3 : 1;
/* At EOF, a buffer is automatically popped. If RETURN_AT_EOF is
true, a CPP_EOF token is then returned. Otherwise, the next
token from the enclosing buffer is returned. */
- unsigned int return_at_eof : 1;
+ bool return_at_eof : 1;
/* One for a system header, two for a C system header file that therefore
needs to be extern "C" protected in C++, and zero otherwise. */
/* This is the node representing the macro being expanded at
top-level. The value of this data member is valid iff
- in_macro_expansion_p() returns TRUE. */
+ cpp_in_macro_expansion_p() returns TRUE. */
cpp_hashnode *top_most_macro_node;
/* Nonzero if we are about to expand a macro. Note that if we are
really expanding a macro, the function macro_of_context returns
the macro being expanded and this flag is set to false. Client
- code should use the function in_macro_expansion_p to know if we
+ code should use the function cpp_in_macro_expansion_p to know if we
are either about to expand a macro, or are actually expanding
one. */
bool about_to_expand_macro_p;
/* In directives.c */
extern int _cpp_test_assertion (cpp_reader *, unsigned int *);
-extern int _cpp_handle_directive (cpp_reader *, int);
+extern int _cpp_handle_directive (cpp_reader *, bool);
extern void _cpp_define_builtin (cpp_reader *, const char *);
extern char ** _cpp_save_pragma_names (cpp_reader *);
extern void _cpp_restore_pragma_names (cpp_reader *, char **);