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

Detailed Description

Sequence diagram callee type filter.

Definition at line 333 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 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< 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 737 of file diagram_filter.cc.

740 , callee_types_{std::move(callee_types)}
741{
742}

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

746{
747 using sequence_diagram::model::class_;
748 using sequence_diagram::model::function;
749 using sequence_diagram::model::method;
750 using sequence_diagram::model::participant;
751
752 auto is_lambda = [&d](const method &m) {
753 auto class_participant =
754 dynamic_cast<const sequence_diagram::model::diagram &>(d)
755 .get_participant<class_>(m.class_id());
756 if (!class_participant)
757 return false;
758
759 return class_participant.value().is_lambda();
760 };
761
763 callee_types_.begin(), callee_types_.end(), [&p, is_lambda](auto ct) {
764 auto is_function = [](const participant *p) {
765 return dynamic_cast<const function *>(p) != nullptr;
766 };
767
768 auto is_cuda_kernel = [](const participant *p) {
769 const auto *f = dynamic_cast<const function *>(p);
770 return (f != nullptr) && (f->is_cuda_kernel());
771 };
772
773 auto is_cuda_device = [](const participant *p) {
774 const auto *f = dynamic_cast<const function *>(p);
775 return (f != nullptr) && (f->is_cuda_device());
776 };
777
778 switch (ct) {
780 return p.type_name() == "method";
782 return p.type_name() == "method" &&
783 ((method &)p).is_constructor();
785 return p.type_name() == "method" &&
786 ((method &)p).is_assignment();
788 return is_function(&p) && ((function &)p).is_operator();
790 return p.type_name() == "method" &&
791 ((method &)p).is_defaulted();
793 return is_function(&p) && ((function &)p).is_static();
795 return p.type_name() == "function";
797 return p.type_name() == "function_template";
799 return p.type_name() == "method" && is_lambda((method &)p);
801 return is_cuda_kernel(&p);
803 return is_cuda_device(&p);
804 }
805
806 return false;
807 });
808
809 if ((type() == filter_t::kInclusive && tvl::is_false(res)) ||
810 (type() == filter_t::kExclusive && tvl::is_true(res))) {
811 LOG_TRACE(
812 "Participant {} rejected by callee_filter", p.full_name(false));
813 }
814
815 return res;
816}

Member Data Documentation

◆ callee_types_

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

Definition at line 342 of file diagram_filter.h.


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