From c6aae718bdb2a889e3faf3c896fadeaa04afe73a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonathan=20M=C3=BCller?= Date: Mon, 3 Dec 2018 12:17:50 +0100 Subject: [PATCH] Add support for -fXX feature flags --- include/cppast/compile_config.hpp | 15 +++++++++++++++ include/cppast/libclang_parser.hpp | 2 ++ src/libclang/libclang_parser.cpp | 6 ++++++ 3 files changed, 23 insertions(+) diff --git a/include/cppast/compile_config.hpp b/include/cppast/compile_config.hpp index 67db492..b9de7d6 100644 --- a/include/cppast/compile_config.hpp +++ b/include/cppast/compile_config.hpp @@ -74,6 +74,13 @@ public: do_set_flags(standard, flags); } + /// \effects Enables an `-fXXX` flag. + /// \returns Whether or not it was a known feature and enabled. + bool enable_feature(std::string name) + { + return do_enable_feature(name); + } + /// \effects Adds the given path to the set of include directories. void add_include_dir(std::string path) { @@ -121,6 +128,14 @@ private: /// \effects Sets the given C++ standard and compilation flags. virtual void do_set_flags(cpp_standard standard, compile_flags flags) = 0; + /// \effects Sets the given feature flags. + /// \returns Whether or not it was a known feature and set. + virtual bool do_enable_feature(std::string name) + { + (void)name; + return false; + } + /// \effects Adds the given path to the set of include directories. virtual void do_add_include_dir(std::string path) = 0; diff --git a/include/cppast/libclang_parser.hpp b/include/cppast/libclang_parser.hpp index 2d1fa52..a2afe9d 100644 --- a/include/cppast/libclang_parser.hpp +++ b/include/cppast/libclang_parser.hpp @@ -157,6 +157,8 @@ public: private: void do_set_flags(cpp_standard standard, compile_flags flags) override; + bool do_enable_feature(std::string name) override; + void do_add_include_dir(std::string path) override; void do_add_macro_definition(std::string name, std::string definition) override; diff --git a/src/libclang/libclang_parser.cpp b/src/libclang/libclang_parser.cpp index 94dd70e..85dddc1 100644 --- a/src/libclang/libclang_parser.cpp +++ b/src/libclang/libclang_parser.cpp @@ -386,6 +386,12 @@ void libclang_compile_config::do_set_flags(cpp_standard standard, compile_flags add_flag("-fms-extensions"); } +bool libclang_compile_config::do_enable_feature(std::string name) +{ + add_flag("-f" + std::move(name)); + return true; +} + void libclang_compile_config::do_add_include_dir(std::string path) { add_flag("-I" + std::move(path));