From 38dd1c9d183edc5b1e990d95eb7154afd4de678b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonathan=20M=C3=BCller?= Date: Mon, 17 Jul 2017 16:24:21 +0200 Subject: [PATCH] Hide macro replacement --- include/cppast/code_generator.hpp | 1 + src/code_generator.cpp | 2 +- test/code_generator.cpp | 10 +++++++++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/include/cppast/code_generator.hpp b/include/cppast/code_generator.hpp index 48c2c5f..e2855e7 100644 --- a/include/cppast/code_generator.hpp +++ b/include/cppast/code_generator.hpp @@ -160,6 +160,7 @@ namespace cppast exclude_return, //< Exclude the return type of a function entity. exclude_target, //< Exclude the underlying entity of an alias (e.g. typedef). declaration, //< Only write declaration. + /// For a macro, it won't show the replacement if this flag is set _flag_set_size, //< \exclude }; diff --git a/src/code_generator.cpp b/src/code_generator.cpp index 6079194..04e1391 100644 --- a/src/code_generator.cpp +++ b/src/code_generator.cpp @@ -92,7 +92,7 @@ namespace output << preprocessor_token("(") << bracket_ws << preprocessor_token(def.parameters().value()) << bracket_ws << preprocessor_token(")"); - if (!def.replacement().empty()) + if (!def.replacement().empty() && !output.options().is_set(code_generator::declaration)) output << whitespace << preprocessor_token(def.replacement()) << newl; else output << newl; diff --git a/test/code_generator.cpp b/test/code_generator.cpp index c731fc1..fde5708 100644 --- a/test/code_generator.cpp +++ b/test/code_generator.cpp @@ -147,7 +147,6 @@ struct foo{ } SECTION("exclude") { - // exclude all entities starting with `e` class exclude_generator : public test_generator { public: @@ -157,7 +156,12 @@ struct foo{ generation_options do_get_options(const cpp_entity& e) override { if (e.name().front() == 'e') + // exclude all entities starting with `e` + // add declaration flag to detect check for equality return code_generator::exclude | code_generator::declaration; + else if (e.name() == "FOO") + // don't show macro replacement + return code_generator::declaration; return {}; } }; @@ -167,6 +171,8 @@ void e(); void func(int a, int e, int c); +#define FOO hidden + template void tfunc(int a); @@ -196,6 +202,8 @@ private: auto synopsis = R"(void func(int a,int c); +#define FOO + void tfunc(int a); struct base{