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

Detailed Description

Sequence diagram callee type filter.

Definition at line 308 of file diagram_filter.h.

#include <diagram_filter.h>

Public Member Functions

 callee_filter (filter_t type, std::vector< config::callee_type > callee_types)
 
 ~callee_filter () override=default
 
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< config::callee_typecallee_types_
 

Constructor & Destructor Documentation

◆ callee_filter()

clanguml::common::model::callee_filter::callee_filter ( filter_t  type,
std::vector< config::callee_type callee_types 
)

Definition at line 537 of file diagram_filter.cc.

540 , callee_types_{std::move(callee_types)}
541{
542}

◆ ~callee_filter()

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

Member Function Documentation

◆ match()

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

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

Definition at line 544 of file diagram_filter.cc.

546{
547 using sequence_diagram::model::class_;
548 using sequence_diagram::model::function;
549 using sequence_diagram::model::method;
550 using sequence_diagram::model::participant;
551
552 auto is_lambda = [&d](const method &m) {
553 auto class_participant =
554 dynamic_cast<const sequence_diagram::model::diagram &>(d)
555 .get_participant<class_>(m.class_id());
556 if (!class_participant)
557 return false;
558
559 return class_participant.value().is_lambda();
560 };
561
563 callee_types_.begin(), callee_types_.end(), [&p, is_lambda](auto ct) {
564 auto is_function = [](const participant *p) {
565 return dynamic_cast<const function *>(p) != nullptr;
566 };
567
568 auto is_cuda_kernel = [](const participant *p) {
569 const auto *f = dynamic_cast<const function *>(p);
570 return (f != nullptr) && (f->is_cuda_kernel());
571 };
572
573 auto is_cuda_device = [](const participant *p) {
574 const auto *f = dynamic_cast<const function *>(p);
575 return (f != nullptr) && (f->is_cuda_device());
576 };
577
578 switch (ct) {
580 return p.type_name() == "method";
582 return p.type_name() == "method" &&
583 ((method &)p).is_constructor();
585 return p.type_name() == "method" &&
586 ((method &)p).is_assignment();
588 return is_function(&p) && ((function &)p).is_operator();
590 return p.type_name() == "method" &&
591 ((method &)p).is_defaulted();
593 return is_function(&p) && ((function &)p).is_static();
595 return p.type_name() == "function";
597 return p.type_name() == "function_template";
599 return p.type_name() == "method" && is_lambda((method &)p);
601 return is_cuda_kernel(&p);
603 return is_cuda_device(&p);
604 }
605
606 return false;
607 });
608
609 return res;
610}

Member Data Documentation

◆ callee_types_

std::vector<config::callee_type> clanguml::common::model::callee_filter::callee_types_
private

Definition at line 317 of file diagram_filter.h.


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