SourceXtractorPlusPlus
0.19
SourceXtractor++, the next generation SExtractor
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
SEFramework
SEFramework
Pipeline
SourceGrouping.h
Go to the documentation of this file.
1
23
#ifndef _SEFRAMEWORK_PIPELINE_SOURCEGROUPING_H
24
#define _SEFRAMEWORK_PIPELINE_SOURCEGROUPING_H
25
26
#include <list>
27
#include <memory>
28
29
#include "
SEFramework/Pipeline/PipelineStage.h
"
30
#include "
SEFramework/Source/SourceGroupFactory.h
"
31
#include "
SEFramework/Source/SourceGroupInterface.h
"
32
#include "
SEFramework/Source/SourceInterface.h
"
33
34
namespace
SourceXtractor {
35
41
class
SelectionCriteria
{
42
public
:
46
virtual
~SelectionCriteria
() =
default
;
47
49
virtual
bool
mustBeProcessed
(
const
SourceInterface
& source)
const
= 0;
50
};
51
57
class
SelectAllCriteria
:
public
SelectionCriteria
{
58
public
:
59
bool
mustBeProcessed
(
const
SourceInterface
& )
const override
{
60
return
true
;
61
}
62
};
63
69
class
GroupingCriteria
{
70
public
:
74
virtual
~GroupingCriteria
() =
default
;
75
77
virtual
bool
shouldGroup
(
const
SourceInterface
& first,
const
SourceInterface
&
second
)
const
= 0;
78
80
virtual
std::set<PropertyId>
requiredProperties
()
const
{
return
{}; }
81
};
82
90
class
SourceGrouping
:
public
PipelineEmitter
<SourceGroupInterface>,
public
PipelineReceiver
<SourceInterface> {
91
public
:
92
96
virtual
~SourceGrouping
() =
default
;
97
98
SourceGrouping
(
std::shared_ptr<GroupingCriteria>
grouping_criteria,
99
std::shared_ptr<SourceGroupFactory>
group_factory,
100
unsigned
int
hard_limit);
101
103
std::set<PropertyId>
requiredProperties
()
const
;
104
106
void
receiveSource
(
std::unique_ptr<SourceInterface>
source)
override
;
107
109
void
receiveProcessSignal
(
const
ProcessSourcesEvent
& event)
override
;
110
111
private
:
112
std::shared_ptr<GroupingCriteria>
m_grouping_criteria
;
113
std::shared_ptr<SourceGroupFactory>
m_group_factory
;
114
std::list<std::unique_ptr<SourceGroupInterface>
>
m_source_groups
;
115
unsigned
int
m_hard_limit
;
116
117
};
/* End of SourceGrouping class */
118
119
120
}
/* namespace SourceXtractor */
121
122
123
#endif
SourceXtractor::SourceGrouping::SourceGrouping
SourceGrouping(std::shared_ptr< GroupingCriteria > grouping_criteria, std::shared_ptr< SourceGroupFactory > group_factory, unsigned int hard_limit)
Definition:
SourceGrouping.cpp:28
SourceXtractor::SourceGrouping::m_group_factory
std::shared_ptr< SourceGroupFactory > m_group_factory
Definition:
SourceGrouping.h:113
SourceXtractor::GroupingCriteria::shouldGroup
virtual bool shouldGroup(const SourceInterface &first, const SourceInterface &second) const =0
Determines if the two sources should be grouped together.
std::shared_ptr
SourceXtractor::SourceGrouping::~SourceGrouping
virtual ~SourceGrouping()=default
Destructor.
SourceXtractor::SelectionCriteria
Used to determine if a Source is selected for processing.
Definition:
SourceGrouping.h:41
SourceXtractor::ProcessSourcesEvent
Event received by SourceGrouping to request the processing of some of the Sources stored...
Definition:
PipelineStage.h:33
SourceXtractor::SourceGrouping::receiveSource
void receiveSource(std::unique_ptr< SourceInterface > source) override
Handles a new Source.
Definition:
SourceGrouping.cpp:34
SourceXtractor::SourceGrouping::receiveProcessSignal
void receiveProcessSignal(const ProcessSourcesEvent &event) override
Handles a ProcessSourcesEvent to trigger the processing of some of the Sources stored in SourceGroupi...
Definition:
SourceGrouping.cpp:86
PipelineStage.h
SourceXtractor::SelectionCriteria::~SelectionCriteria
virtual ~SelectionCriteria()=default
Destructor.
SourceXtractor::SelectAllCriteria::mustBeProcessed
bool mustBeProcessed(const SourceInterface &) const override
Determines if the given Source must be processed or not.
Definition:
SourceGrouping.h:59
SourceGroupInterface.h
SourceXtractor::PipelineReceiver
Definition:
PipelineStage.h:46
SourceXtractor::SourceGrouping::m_hard_limit
unsigned int m_hard_limit
Definition:
SourceGrouping.h:115
SourceXtractor::SourceGrouping::m_grouping_criteria
std::shared_ptr< GroupingCriteria > m_grouping_criteria
Definition:
SourceGrouping.h:112
SourceXtractor::SourceGrouping
SourceGrouping takes Source, groups them together according to its GroupingCriteria and stores them...
Definition:
SourceGrouping.h:90
std::list
STL class.
SourceXtractor::GroupingCriteria
Criteria used by SourceGrouping to determine if two sources should be grouped together.
Definition:
SourceGrouping.h:69
SourceXtractor::SourceGrouping::requiredProperties
std::set< PropertyId > requiredProperties() const
Returns the set of required properties to compute the grouping.
Definition:
SourceGrouping.cpp:108
SourceInterface.h
std::set
STL class.
std::unique_ptr
STL class.
SourceXtractor::SelectionCriteria::mustBeProcessed
virtual bool mustBeProcessed(const SourceInterface &source) const =0
Determines if the given Source must be processed or not.
SourceGroupFactory.h
SourceXtractor::SourceGrouping::m_source_groups
std::list< std::unique_ptr< SourceGroupInterface > > m_source_groups
Definition:
SourceGrouping.h:114
second
constexpr double second
SourceXtractor::GroupingCriteria::~GroupingCriteria
virtual ~GroupingCriteria()=default
Destructor.
SourceXtractor::SourceInterface
The SourceInterface is an abstract "source" that has properties attached to it.
Definition:
SourceInterface.h:46
SourceXtractor::PipelineEmitter
Definition:
PipelineStage.h:68
SourceXtractor::GroupingCriteria::requiredProperties
virtual std::set< PropertyId > requiredProperties() const
Return a set of used properties so they can be pre-fetched.
Definition:
SourceGrouping.h:80
SourceXtractor::SelectAllCriteria
An implementation of SelectionCriteria that just marks all Sources as selected.
Definition:
SourceGrouping.h:57
Generated by
1.8.5