diff --git a/src/class_diagram/model/class_method.h b/src/class_diagram/model/class_method.h index f35ad492..277cd3c2 100644 --- a/src/class_diagram/model/class_method.h +++ b/src/class_diagram/model/class_method.h @@ -30,6 +30,8 @@ public: class_method(common::model::access_t access, const std::string &name, const std::string &type); + virtual ~class_method() = default; + bool is_pure_virtual() const; void is_pure_virtual(bool is_pure_virtual); diff --git a/src/class_diagram/model/enum.h b/src/class_diagram/model/enum.h index ef6025ce..e6d93a7b 100644 --- a/src/class_diagram/model/enum.h +++ b/src/class_diagram/model/enum.h @@ -30,9 +30,9 @@ public: enum_(const common::model::namespace_ &using_namespaces); enum_(const enum_ &) = delete; - enum_(enum_ &&) = default; + enum_(enum_ &&) = delete; enum_ &operator=(const enum_ &) = delete; - enum_ &operator=(enum_ &&) = default; + enum_ &operator=(enum_ &&) = delete; // TODO: Do we need this? friend bool operator==(const enum_ &l, const enum_ &r); diff --git a/src/common/model/diagram_filter.h b/src/common/model/diagram_filter.h index 9fa73c42..2e27815f 100644 --- a/src/common/model/diagram_filter.h +++ b/src/common/model/diagram_filter.h @@ -58,6 +58,8 @@ class filter_visitor { public: filter_visitor(filter_t type); + virtual ~filter_visitor() = default; + virtual tvl::value_t match( const diagram &d, const common::model::element &e) const; @@ -86,6 +88,8 @@ struct anyof_filter : public filter_visitor { anyof_filter( filter_t type, std::vector> filters); + virtual ~anyof_filter() = default; + tvl::value_t match( const diagram &d, const common::model::element &e) const override; @@ -99,6 +103,8 @@ private: struct namespace_filter : public filter_visitor { namespace_filter(filter_t type, std::vector namespaces); + virtual ~namespace_filter() = default; + tvl::value_t match(const diagram &d, const namespace_ &ns) const override; tvl::value_t match(const diagram &d, const element &e) const override; @@ -110,6 +116,8 @@ private: struct element_filter : public filter_visitor { element_filter(filter_t type, std::vector elements); + virtual ~element_filter() = default; + tvl::value_t match(const diagram &d, const element &e) const override; private: @@ -119,6 +127,8 @@ private: struct subclass_filter : public filter_visitor { subclass_filter(filter_t type, std::vector roots); + virtual ~subclass_filter() = default; + tvl::value_t match(const diagram &d, const element &e) const override; private: @@ -137,6 +147,8 @@ struct edge_traversal_filter : public filter_visitor { { } + virtual ~edge_traversal_filter() = default; + tvl::value_t match(const diagram &d, const MatchOverrideT &e) const override { // This filter should only be run on the completely generated diagram @@ -203,7 +215,7 @@ private: decltype(matching_elements_) parents; util::for_each( - matching_elements_, [this, &cd, &parents](const auto &element) { + matching_elements_, [&cd, &parents](const auto &element) { auto parent = detail::get( cd, element.get().path().to_string()); @@ -269,6 +281,8 @@ struct relationship_filter : public filter_visitor { relationship_filter( filter_t type, std::vector relationships); + virtual ~relationship_filter() = default; + tvl::value_t match( const diagram &d, const relationship_t &r) const override; @@ -279,6 +293,8 @@ private: struct access_filter : public filter_visitor { access_filter(filter_t type, std::vector access); + virtual ~access_filter() = default; + tvl::value_t match(const diagram &d, const access_t &a) const override; private: @@ -288,6 +304,8 @@ private: struct context_filter : public filter_visitor { context_filter(filter_t type, std::vector context); + virtual ~context_filter() = default; + tvl::value_t match(const diagram &d, const element &r) const override; private: @@ -298,6 +316,8 @@ struct paths_filter : public filter_visitor { paths_filter(filter_t type, const std::filesystem::path &root, std::vector p); + virtual ~paths_filter() = default; + tvl::value_t match( const diagram &d, const common::model::source_file &r) const override; diff --git a/src/include_diagram/generators/plantuml/include_diagram_generator.cc b/src/include_diagram/generators/plantuml/include_diagram_generator.cc index 3dddb099..b670a55b 100644 --- a/src/include_diagram/generators/plantuml/include_diagram_generator.cc +++ b/src/include_diagram/generators/plantuml/include_diagram_generator.cc @@ -46,11 +46,11 @@ void generator::generate_relationships( else { util::for_each_if( f.relationships(), - [this, &f](const auto &r) { + [this](const auto &r) { return m_model.should_include(r.type()) && util::contains(m_generated_aliases, r.destination()); }, - [this, &f, &ostr](const auto &r) { + [&f, &ostr](const auto &r) { ostr << f.alias() << " " << plantuml_common::to_plantuml(r.type(), r.style()) << " " << r.destination() << '\n'; diff --git a/src/include_diagram/model/diagram.h b/src/include_diagram/model/diagram.h index 81082e9c..a9a1268b 100644 --- a/src/include_diagram/model/diagram.h +++ b/src/include_diagram/model/diagram.h @@ -43,7 +43,7 @@ public: common::model::diagram_t type() const override; type_safe::optional_ref get( - const std::string &full_name) const; + const std::string &full_name) const override; void add_file(std::unique_ptr &&f); diff --git a/src/package_diagram/model/diagram.h b/src/package_diagram/model/diagram.h index 0511141d..253d8f45 100644 --- a/src/package_diagram/model/diagram.h +++ b/src/package_diagram/model/diagram.h @@ -45,7 +45,7 @@ public: packages() const; type_safe::optional_ref get( - const std::string &full_name) const; + const std::string &full_name) const override; void add_package(std::unique_ptr &&p); diff --git a/src/sequence_diagram/model/diagram.h b/src/sequence_diagram/model/diagram.h index cf15c3de..552f0f79 100644 --- a/src/sequence_diagram/model/diagram.h +++ b/src/sequence_diagram/model/diagram.h @@ -37,7 +37,7 @@ public: common::model::diagram_t type() const override; type_safe::optional_ref get( - const std::string &full_name) const; + const std::string &full_name) const override; std::string to_alias(const std::string &full_name) const;