From c1307fc5d7c37fd7d0d1fedaf3cc6b0134de9437 Mon Sep 17 00:00:00 2001 From: eidheim Date: Sun, 27 Nov 2016 17:30:11 +0100 Subject: [PATCH] Cleanup and improvement of removed_include_guard: now also identifies #if !defined(... --- src/source_clang.cc | 26 +++++++++++++------------- tests/source_clang_test.cc | 4 ++++ 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/source_clang.cc b/src/source_clang.cc index e33170c..42727d9 100644 --- a/src/source_clang.cc +++ b/src/source_clang.cc @@ -252,7 +252,8 @@ void Source::ClangViewParse::remove_include_guard(std::string &buffer) { if(!(language && (language->get_id()=="chdr" || language->get_id()=="cpphdr"))) return; - static std::regex ifndef_regex("^[ \t]*#ifndef[ \t]+([A-Za-z0-9_]+).*$"); + static std::regex ifndef_regex1("^[ \t]*#ifndef[ \t]+([A-Za-z0-9_]+).*$"); + static std::regex ifndef_regex2("^[ \t]*#if[ \t]+![ \t]*defined[ \t]*\\([ \t]*([A-Za-z0-9_]+).*$"); static std::regex define_regex("^[ \t]*#define[ \t]+([A-Za-z0-9_]+).*$"); static std::regex endif_regex("^[ \t]*#endif.*$"); std::vector> ranges; @@ -262,17 +263,16 @@ void Source::ClangViewParse::remove_include_guard(std::string &buffer) { std::string line; std::string preprocessor_identifier; for(size_t c=0;cremove_include_guard(source); g_assert_cmpstr(source.c_str(),==," \n//test\n \n \n"); + source="#if !defined(F)\n#define F\n#endif\n"; + clang_view->remove_include_guard(source); + g_assert_cmpstr(source.c_str(),==," \n \n \n"); + source="#ifndef F\ntest\n#define F\n#endif // F\n"; auto old_source=source; clang_view->remove_include_guard(source);