1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-06-01 10:08:10 +00:00

LibCpp: Add option in Preprocessor to keep #include's in processed text

This commit is contained in:
Itamar 2021-05-21 15:41:38 +03:00 committed by Andreas Kling
parent 14e0011825
commit 0522a4360b
2 changed files with 12 additions and 1 deletions

View file

@ -22,11 +22,20 @@ const String& Preprocessor::process()
{
for (; m_line_index < m_lines.size(); ++m_line_index) {
auto& line = m_lines[m_line_index];
bool include_in_processed_text = false;
if (line.starts_with("#")) {
handle_preprocessor_line(line);
auto keyword = handle_preprocessor_line(line);
if (m_options.keep_include_statements && keyword == "include")
include_in_processed_text = true;
} else if (m_state == State::Normal) {
include_in_processed_text = true;
}
if (include_in_processed_text) {
m_builder.append(line);
}
m_builder.append("\n");
}

View file

@ -33,6 +33,7 @@ public:
const Definitions& definitions() const { return m_definitions; }
void set_ignore_unsupported_keywords(bool ignore) { m_options.ignore_unsupported_keywords = ignore; }
void set_keep_include_statements(bool keep) { m_options.keep_include_statements = keep; }
private:
using PreprocessorKeyword = StringView;
@ -61,6 +62,7 @@ private:
struct Options {
bool ignore_unsupported_keywords { false };
bool keep_include_statements { false };
} m_options;
};
}