0.6.1
C++ to UML diagram generator based on Clang
Loading...
Searching...
No Matches
Public Member Functions | Private Attributes | List of all members
clanguml::common::model::parents_filter Struct Reference

Detailed Description

Match element based on whether it is a parent of a set of children, or one of them.

Definition at line 364 of file diagram_filter.h.

#include <diagram_filter.h>

Public Member Functions

 parents_filter (filter_t type, std::vector< common::string_or_regex > roots)
 
 ~parents_filter () override=default
 
tvl::value_t match (const diagram &d, const element &e) const override
 
- Public Member Functions inherited from clanguml::common::model::filter_visitor
 filter_visitor (filter_t type)
 
virtual ~filter_visitor ()=default
 
virtual tvl::value_t match (const diagram &d, const common::model::element &e) const
 
virtual tvl::value_t match (const diagram &d, const common::model::relationship &r) const
 
virtual tvl::value_t match (const diagram &d, const common::model::relationship_t &r) const
 
virtual tvl::value_t match (const diagram &d, const common::model::access_t &a) const
 
virtual tvl::value_t match (const diagram &d, const common::model::namespace_ &ns) const
 
virtual tvl::value_t match (const diagram &d, const common::model::source_file &f) const
 
virtual tvl::value_t match (const diagram &d, const common::model::source_location &f) const
 
virtual tvl::value_t match (const diagram &d, const class_diagram::model::class_method &m) const
 
virtual tvl::value_t match (const diagram &d, const class_diagram::model::class_member &m) const
 
virtual tvl::value_t match (const diagram &d, const class_diagram::model::objc_method &m) const
 
virtual tvl::value_t match (const diagram &d, const class_diagram::model::objc_member &m) const
 
virtual tvl::value_t match (const diagram &d, const sequence_diagram::model::participant &p) const
 
bool is_inclusive () const
 
bool is_exclusive () const
 
filter_t type () const
 
filter_mode_t mode () const
 
void set_mode (filter_mode_t mode)
 
virtual void reset ()
 

Private Attributes

std::vector< common::string_or_regexchildren_
 

Constructor & Destructor Documentation

◆ parents_filter()

clanguml::common::model::parents_filter::parents_filter ( filter_t  type,
std::vector< common::string_or_regex roots 
)

Definition at line 876 of file diagram_filter.cc.

879 , children_{std::move(children)}
880{
881}

◆ ~parents_filter()

clanguml::common::model::parents_filter::~parents_filter ( )
overridedefault

Member Function Documentation

◆ match()

tvl::value_t clanguml::common::model::parents_filter::match ( const diagram d,
const element e 
) const
overridevirtual

Reimplemented from clanguml::common::model::filter_visitor.

Definition at line 883 of file diagram_filter.cc.

884{
885 if (d.type() != diagram_t::kClass)
886 return {};
887
888 if (children_.empty())
889 return {};
890
891 if (!d.complete())
892 return {};
893
894 const auto &cd = dynamic_cast<const class_diagram::model::diagram &>(d);
895
896 // First get all parents of element e
898
899 for (const auto &child_pattern : children_) {
900 auto child_refs = cd.find<class_diagram::model::class_>(child_pattern);
901
902 for (auto &child : child_refs) {
903 if (child.has_value())
904 parents.emplace(child.value());
905 }
906 }
907
908 cd.get_parents(parents);
909
910 for (const auto &parent : parents) {
911 if (e == parent.get())
912 return true;
913 }
914
915 LOG_TRACE("Element {} rejected by parents_filter", e.full_name(false));
916
917 return false;
918}

Member Data Documentation

◆ children_

std::vector<common::string_or_regex> clanguml::common::model::parents_filter::children_
private

Definition at line 372 of file diagram_filter.h.


The documentation for this struct was generated from the following files: