Added method type diagram filter (#145)

This commit is contained in:
Bartek Kryza
2023-06-02 01:05:37 +02:00
parent e7f738c6dc
commit e40dc3a60c
20 changed files with 433 additions and 9 deletions

View File

@@ -186,7 +186,7 @@ void generator::generate(const class_ &c, std::ostream &ostr) const
ostr << "__\n";
for (const auto &m : members) {
if (!m_model.should_include(m.access()))
if (!m_model.should_include(m))
continue;
if (!m_config.include_relations_also_as_members() &&
@@ -232,7 +232,7 @@ void generator::generate_methods(
sort_class_elements(sorted_methods);
for (const auto &m : sorted_methods) {
if (!m_model.should_include(m.access()))
if (!m_model.should_include(m))
continue;
generate_method(m, ostr);
@@ -250,7 +250,7 @@ generator::method_groups_t generator::group_methods(
std::vector<class_method> filtered_methods;
std::copy_if(methods.cbegin(), methods.cend(),
std::back_inserter(filtered_methods),
[this](auto &m) { return m_model.should_include(m.access()); });
[this](auto &m) { return m_model.should_include(m); });
for (const auto &g : method_groups_) {
result[g] = {};

View File

@@ -18,11 +18,22 @@
#include "diagram.h"
#include "common/model/diagram_filter.h"
#include "util/error.h"
#include "util/util.h"
namespace clanguml::class_diagram::model {
bool diagram::should_include(const class_member &m) const
{
return filter().should_include(m);
}
bool diagram::should_include(const class_method &m) const
{
return filter().should_include(m);
}
const common::reference_vector<class_> &diagram::classes() const
{
return element_view<class_>::view();

View File

@@ -58,6 +58,12 @@ public:
diagram_t type() const override;
using common::model::diagram::should_include;
bool should_include(const class_member &m) const;
bool should_include(const class_method &m) const;
opt_ref<diagram_element> get(const std::string &full_name) const override;
opt_ref<diagram_element> get(diagram_element::id_t id) const override;

View File

@@ -1354,10 +1354,13 @@ void translation_unit_visitor::process_method(
process_function_parameter_find_relationships_in_autotype(c, atsp);
}
LOG_DBG("Adding method: {}", method.name());
if (diagram().should_include(method)) {
LOG_DBG("Adding method: {}", method.name());
c.add_method(std::move(method));
c.add_method(std::move(method));
}
}
void translation_unit_visitor::process_method_properties(
const clang::CXXMethodDecl &mf, const class_ &c,
const std::string &method_name, class_method &method) const
@@ -1471,9 +1474,11 @@ void translation_unit_visitor::process_template_method(
process_function_parameter(*param, method, c);
}
LOG_DBG("Adding method: {}", method.name());
if (diagram().should_include(method)) {
LOG_DBG("Adding method: {}", method.name());
c.add_method(std::move(method));
c.add_method(std::move(method));
}
}
bool translation_unit_visitor::find_relationships(const clang::QualType &type,