aboutsummaryrefslogtreecommitdiff
path: root/libcpp/include
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2021-09-13 10:37:49 -0700
committerIan Lance Taylor <iant@golang.org>2021-09-13 10:37:49 -0700
commite252b51ccde010cbd2a146485d8045103cd99533 (patch)
treee060f101cdc32bf5e520de8e5275db9d4236b74c /libcpp/include
parentf10c7c4596dda99d2ee872c995ae4aeda65adbdf (diff)
parent104c05c5284b7822d770ee51a7d91946c7e56d50 (diff)
downloadgcc-e252b51ccde010cbd2a146485d8045103cd99533.zip
gcc-e252b51ccde010cbd2a146485d8045103cd99533.tar.gz
gcc-e252b51ccde010cbd2a146485d8045103cd99533.tar.bz2
Merge from trunk revision 104c05c5284b7822d770ee51a7d91946c7e56d50.
Diffstat (limited to 'libcpp/include')
-rw-r--r--libcpp/include/cpplib.h26
-rw-r--r--libcpp/include/line-map.h16
2 files changed, 35 insertions, 7 deletions
diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h
index 41d75d9..6e2fcb6 100644
--- a/libcpp/include/cpplib.h
+++ b/libcpp/include/cpplib.h
@@ -482,6 +482,10 @@ struct cpp_options
in C11 and C++11. */
unsigned char c11_identifiers;
+ /* Nonzero means extended identifiers allow the characters specified
+ in C++23. */
+ unsigned char cxx23_identifiers;
+
/* Nonzero for C++ 2014 Standard binary constants. */
unsigned char binary_constants;
@@ -497,6 +501,9 @@ struct cpp_options
/* Nonzero for the '::' token. */
unsigned char scope;
+ /* Nonzero for the '#elifdef' and '#elifndef' directives. */
+ unsigned char elifdef;
+
/* Nonzero means tokenize C++20 module directives. */
unsigned char module_directives;
@@ -883,6 +890,7 @@ enum cpp_builtin_type
BT_SPECLINE = 0, /* `__LINE__' */
BT_DATE, /* `__DATE__' */
BT_FILE, /* `__FILE__' */
+ BT_FILE_NAME, /* `__FILE_NAME__' */
BT_BASE_FILE, /* `__BASE_FILE__' */
BT_INCLUDE_LEVEL, /* `__INCLUDE_LEVEL__' */
BT_TIME, /* `__TIME__' */
@@ -1375,6 +1383,20 @@ extern struct _cpp_file *cpp_get_file (cpp_buffer *);
extern cpp_buffer *cpp_get_prev (cpp_buffer *);
extern void cpp_clear_file_cache (cpp_reader *);
+/* cpp_get_converted_source returns the contents of the given file, as it exists
+ after cpplib has read it and converted it from the input charset to the
+ source charset. Return struct will be zero-filled if the data could not be
+ read for any reason. The data starts at the DATA pointer, but the TO_FREE
+ pointer is what should be passed to free(), as there may be an offset. */
+struct cpp_converted_source
+{
+ char *to_free;
+ char *data;
+ size_t len;
+};
+cpp_converted_source cpp_get_converted_source (const char *fname,
+ const char *input_charset);
+
/* In pch.c */
struct save_macro_data;
extern int cpp_save_state (cpp_reader *, FILE *);
@@ -1445,6 +1467,7 @@ class cpp_display_width_computation {
/* Convenience functions that are simple use cases for class
cpp_display_width_computation. Tab characters will be expanded to spaces
as determined by TABSTOP. */
+
int cpp_byte_column_to_display_column (const char *data, int data_length,
int column, int tabstop);
inline int cpp_display_width (const char *data, int data_length,
@@ -1457,4 +1480,7 @@ int cpp_display_column_to_byte_column (const char *data, int data_length,
int display_col, int tabstop);
int cpp_wcwidth (cppchar_t c);
+bool cpp_input_conversion_is_trivial (const char *input_charset);
+int cpp_check_utf8_bom (const char *data, size_t data_length);
+
#endif /* ! LIBCPP_CPPLIB_H */
diff --git a/libcpp/include/line-map.h b/libcpp/include/line-map.h
index 40919d0..464494b 100644
--- a/libcpp/include/line-map.h
+++ b/libcpp/include/line-map.h
@@ -563,7 +563,7 @@ struct GTY((tag ("2"))) line_map_macro : public line_map {
#define linemap_assert_fails(EXPR) (! (EXPR))
#endif
-/* Get whether location LOC is an ad-hoc, ordinary or macro location. */
+/* Get whether location LOC is an ordinary location. */
inline bool
IS_ORDINARY_LOC (location_t loc)
@@ -571,18 +571,14 @@ IS_ORDINARY_LOC (location_t loc)
return loc < LINE_MAP_MAX_LOCATION;
}
+/* Get whether location LOC is an ad-hoc location. */
+
inline bool
IS_ADHOC_LOC (location_t loc)
{
return loc > MAX_LOCATION_T;
}
-inline bool
-IS_MACRO_LOC (location_t loc)
-{
- return !IS_ORDINARY_LOC (loc) && !IS_ADHOC_LOC (loc);
-}
-
/* Categorize line map kinds. */
inline bool
@@ -1674,6 +1670,12 @@ class rich_location
/* Destructor. */
~rich_location ();
+ /* The class manages the memory pointed to by the elements of
+ the M_FIXIT_HINTS vector and is not meant to be copied or
+ assigned. */
+ rich_location (const rich_location &) = delete;
+ void operator= (const rich_location &) = delete;
+
/* Accessors. */
location_t get_loc () const { return get_loc (0); }
location_t get_loc (unsigned int idx) const;