0.6.1
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 874 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
 
filter_mode_t mode () const
 
void set_mode (filter_mode_t mode)
 
void reset ()
 

Private Attributes

std::vector< std::unique_ptr< filter_visitor > > inclusive_
 
std::vector< std::unique_ptr< filter_visitor > > exclusive_
 
const common::model::diagramdiagram_
 
filter_mode_t mode_ {filter_mode_t::basic}
 

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

1350 : diagram_{d}
1351{
1352}

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

1369{
1370 exclusive_.emplace_back(std::move(fv));
1371}

◆ add_filter()

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

Definition at line 1354 of file diagram_filter.cc.

1356{
1357 if (filter_type == filter_t::kInclusive)
1358 add_inclusive_filter(std::move(fv));
1359 else
1360 add_exclusive_filter(std::move(fv));
1361}

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

1364{
1365 inclusive_.emplace_back(std::move(fv));
1366}

◆ mode()

filter_mode_t clanguml::common::model::diagram_filter::mode ( ) const

Definition at line 1387 of file diagram_filter.cc.

1387{ return mode_; }

◆ reset()

void clanguml::common::model::diagram_filter::reset ( )

Definition at line 1391 of file diagram_filter.cc.

1392{
1393 for (auto &f : inclusive_)
1394 f->reset();
1395
1396 for (auto &f : exclusive_)
1397 f->reset();
1398}

◆ set_mode()

void clanguml::common::model::diagram_filter::set_mode ( filter_mode_t  mode)

Definition at line 1389 of file diagram_filter.cc.

1389{ mode_ = mode; }

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

1375{
1376 if (should_include(ns)) {
1377 element e{namespace_{}};
1378 e.set_name(name);
1379 e.set_namespace(ns);
1380
1381 return should_include(e);
1382 }
1383
1384 return false;
1385}

◆ 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 914 of file diagram_filter.h.

915 {
916 auto exc = tvl::any_of(
917 exclusive_.begin(), exclusive_.end(), [this, &e](const auto &ex) {
918 assert(ex.get() != nullptr);
919
920 return ex->match(diagram_, e);
921 });
922
923 if (tvl::is_true(exc))
924 return false;
925
926 auto inc = tvl::all_of(
927 inclusive_.begin(), inclusive_.end(), [this, &e](const auto &in) {
928 assert(in.get() != nullptr);
929
930 return in->match(diagram_, e);
931 });
932
933 return static_cast<bool>(tvl::is_undefined(inc) || tvl::is_true(inc));
934 }

Friends And Related Symbol Documentation

◆ diagram_filter_factory

friend class diagram_filter_factory
friend

Definition at line 942 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 952 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 949 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 946 of file diagram_filter.h.

◆ mode_

filter_mode_t clanguml::common::model::diagram_filter::mode_ {filter_mode_t::basic}
private

Definition at line 954 of file diagram_filter.h.


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