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::element_filter Struct Reference

Detailed Description

Match element's name to a set of names or regex patterns.

Definition at line 260 of file diagram_filter.h.

#include <diagram_filter.h>

Public Member Functions

 element_filter (filter_t type, std::vector< common::string_or_regex > elements)
 
 ~element_filter () override=default
 
tvl::value_t match (const diagram &d, const element &e) const override
 
tvl::value_t match (const diagram &d, const sequence_diagram::model::participant &p) 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_regexelements_
 

Constructor & Destructor Documentation

◆ element_filter()

clanguml::common::model::element_filter::element_filter ( filter_t  type,
std::vector< common::string_or_regex elements 
)

Definition at line 439 of file diagram_filter.cc.

442 , elements_{std::move(elements)}
443{
444}

◆ ~element_filter()

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

Member Function Documentation

◆ match() [1/2]

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

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

Definition at line 446 of file diagram_filter.cc.

447{
448 // Do not apply element filter to packages in class diagrams
449 if (d.type() == diagram_t::kClass && e.type_name() == "package")
450 return std::nullopt;
451
452 return tvl::any_of(
453 elements_.begin(), elements_.end(), [&e](const auto &el) {
454 return ((el == e.full_name(false)) ||
455 (el == fmt::format("::{}", e.full_name(false))));
456 });
457}

◆ match() [2/2]

tvl::value_t clanguml::common::model::element_filter::match ( const diagram d,
const sequence_diagram::model::participant p 
) const
overridevirtual

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

Definition at line 459 of file diagram_filter.cc.

461{
462 using sequence_diagram::model::method;
463 using sequence_diagram::model::participant;
464
465 if (d.type() != diagram_t::kSequence)
466 return {};
467
468 const auto &sequence_model =
469 dynamic_cast<const sequence_diagram::model::diagram &>(d);
470 return tvl::any_of(elements_.begin(), elements_.end(),
471 [&sequence_model, &p](const auto &el) {
472 if (p.type_name() == "method") {
473
474 const auto &m = dynamic_cast<const method &>(p);
475 const auto class_id = m.class_id();
476 const auto &class_participant =
477 sequence_model.get_participant<participant>(class_id)
478 .value();
479
480 return el == p.full_name(false) ||
481 el == class_participant.full_name(false);
482 }
483
484 return el == p.full_name(false);
485 });
486}

Member Data Documentation

◆ elements_

std::vector<common::string_or_regex> clanguml::common::model::element_filter::elements_
private

Definition at line 272 of file diagram_filter.h.


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