0.5.4
C++ to UML diagram generator based on Clang
Loading...
Searching...
No Matches
Classes | Public Member Functions | Private Attributes | Friends | List of all members
clanguml::common::model::diagram_filter Class Reference

Composite of all diagrams filters. More...

Detailed Description

Composite of all diagrams filters.

Instances of this class contain all filters specified in configuration file for a given diagram.

See also
clanguml::common::model::filter_visitor

Definition at line 760 of file diagram_filter.h.

#include <diagram_filter.h>

Classes

struct  private_constructor_tag_t
 

Public Member Functions

 diagram_filter (const common::model::diagram &d, const config::diagram &c, private_constructor_tag_t unused)
 
void add_filter (filter_t filter_type, std::unique_ptr< filter_visitor > fv)
 
void add_inclusive_filter (std::unique_ptr< filter_visitor > fv)
 
void add_exclusive_filter (std::unique_ptr< filter_visitor > fv)
 
bool should_include (const namespace_ &ns, const std::string &name) const
 
template<typename T >
bool should_include (const T &e) const
 

Private Attributes

std::vector< std::unique_ptr< filter_visitor > > inclusive_
 
std::vector< std::unique_ptr< filter_visitor > > exclusive_
 
const common::model::diagramdiagram_
 

Friends

class diagram_filter_factory
 

Constructor & Destructor Documentation

◆ diagram_filter()

clanguml::common::model::diagram_filter::diagram_filter ( const common::model::diagram d,
const config::diagram c,
private_constructor_tag_t  unused 
)

Definition at line 1085 of file diagram_filter.cc.

1087 : diagram_{d}
1088{
1089}

Member Function Documentation

◆ add_exclusive_filter()

void clanguml::common::model::diagram_filter::add_exclusive_filter ( std::unique_ptr< filter_visitor fv)

Add exclusive filter.

Parameters
fvFilter visitor.

Definition at line 1105 of file diagram_filter.cc.

1106{
1107 exclusive_.emplace_back(std::move(fv));
1108}

◆ add_filter()

void clanguml::common::model::diagram_filter::add_filter ( filter_t  filter_type,
std::unique_ptr< filter_visitor fv 
)

Definition at line 1091 of file diagram_filter.cc.

1093{
1094 if (filter_type == filter_t::kInclusive)
1095 add_inclusive_filter(std::move(fv));
1096 else
1097 add_exclusive_filter(std::move(fv));
1098}

◆ add_inclusive_filter()

void clanguml::common::model::diagram_filter::add_inclusive_filter ( std::unique_ptr< filter_visitor fv)

Add inclusive filter.

Parameters
fvFilter visitor.

Definition at line 1100 of file diagram_filter.cc.

1101{
1102 inclusive_.emplace_back(std::move(fv));
1103}

◆ should_include() [1/2]

bool clanguml::common::model::diagram_filter::should_include ( const namespace_ ns,
const std::string &  name 
) const

should_include overload for namespace and name.

Parameters
nsNamespace
nameName
Returns
Match result.

Definition at line 1110 of file diagram_filter.cc.

1112{
1113 if (should_include(ns)) {
1114 element e{namespace_{}};
1115 e.set_name(name);
1116 e.set_namespace(ns);
1117
1118 return should_include(e);
1119 }
1120
1121 return false;
1122}

◆ should_include() [2/2]

template<typename T >
bool clanguml::common::model::diagram_filter::should_include ( const T &  e) const
inline

Generic should_include overload for various diagram elements.

Template Parameters
TType to to match - must match one of filter_visitor's match(T)
Parameters
eValue of type T to match
Returns
Match result.

Definition at line 799 of file diagram_filter.h.

800 {
801 auto exc = tvl::any_of(
802 exclusive_.begin(), exclusive_.end(), [this, &e](const auto &ex) {
803 assert(ex.get() != nullptr);
804
805 return ex->match(diagram_, e);
806 });
807
808 if (tvl::is_true(exc))
809 return false;
810
811 auto inc = tvl::all_of(
812 inclusive_.begin(), inclusive_.end(), [this, &e](const auto &in) {
813 assert(in.get() != nullptr);
814
815 return in->match(diagram_, e);
816 });
817
818 return static_cast<bool>(tvl::is_undefined(inc) || tvl::is_true(inc));
819 }

Friends And Related Symbol Documentation

◆ diagram_filter_factory

friend class diagram_filter_factory
friend

Definition at line 821 of file diagram_filter.h.

Member Data Documentation

◆ diagram_

const common::model::diagram& clanguml::common::model::diagram_filter::diagram_
private

Reference to the diagram model

Definition at line 831 of file diagram_filter.h.

◆ exclusive_

std::vector<std::unique_ptr<filter_visitor> > clanguml::common::model::diagram_filter::exclusive_
private

List of exclusive filters

Definition at line 828 of file diagram_filter.h.

◆ inclusive_

std::vector<std::unique_ptr<filter_visitor> > clanguml::common::model::diagram_filter::inclusive_
private

List of inclusive filters

Definition at line 825 of file diagram_filter.h.


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