0.5.4
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 339 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 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)
 

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 663 of file diagram_filter.cc.

666 , children_{std::move(children)}
667{
668}

◆ ~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 670 of file diagram_filter.cc.

671{
672 if (d.type() != diagram_t::kClass)
673 return {};
674
675 if (children_.empty())
676 return {};
677
678 if (!d.complete())
679 return {};
680
681 const auto &cd = dynamic_cast<const class_diagram::model::diagram &>(d);
682
683 // First get all parents of element e
685
686 for (const auto &child_pattern : children_) {
687 auto child_refs = cd.find<class_diagram::model::class_>(child_pattern);
688
689 for (auto &child : child_refs) {
690 if (child.has_value())
691 parents.emplace(child.value());
692 }
693 }
694
695 cd.get_parents(parents);
696
697 for (const auto &parent : parents) {
698 if (e == parent.get())
699 return true;
700 }
701
702 return false;
703}

Member Data Documentation

◆ children_

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

Definition at line 347 of file diagram_filter.h.


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