From 0522a4360bc7abd5a8c814db9b02d00a24a98ae6 Mon Sep 17 00:00:00 2001 From: Itamar Date: Fri, 21 May 2021 15:41:38 +0300 Subject: [PATCH] LibCpp: Add option in Preprocessor to keep #include's in processed text --- Userland/Libraries/LibCpp/Preprocessor.cpp | 11 ++++++++++- Userland/Libraries/LibCpp/Preprocessor.h | 2 ++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Userland/Libraries/LibCpp/Preprocessor.cpp b/Userland/Libraries/LibCpp/Preprocessor.cpp index c1dac5cae2d..6dbb6012011 100644 --- a/Userland/Libraries/LibCpp/Preprocessor.cpp +++ b/Userland/Libraries/LibCpp/Preprocessor.cpp @@ -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"); } diff --git a/Userland/Libraries/LibCpp/Preprocessor.h b/Userland/Libraries/LibCpp/Preprocessor.h index 774f19730b6..e62cb950270 100644 --- a/Userland/Libraries/LibCpp/Preprocessor.h +++ b/Userland/Libraries/LibCpp/Preprocessor.h @@ -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; }; }