SourceXtractorPlusPlus
1.0.3
SourceXtractor++, the next generation SExtractor
Loading...
Searching...
No Matches
SEFramework
SEFramework
Pipeline
SourceGrouping.h
Go to the documentation of this file.
1
22
23
#ifndef _SEFRAMEWORK_PIPELINE_SOURCEGROUPING_H
24
#define _SEFRAMEWORK_PIPELINE_SOURCEGROUPING_H
25
26
#include <list>
27
#include <memory>
28
#include <set>
29
30
#include "
SEFramework/Property/PropertyId.h
"
31
#include "
SEFramework/Pipeline/PipelineStage.h
"
32
#include "
SEFramework/Source/SourceGroupFactory.h
"
33
#include "
SEFramework/Source/SourceGroupInterface.h
"
34
#include "
SEFramework/Source/SourceInterface.h
"
35
36
namespace
SourceXtractor
{
37
43
class
SelectionCriteria
{
44
public
:
48
virtual
~SelectionCriteria
() =
default
;
49
51
virtual
bool
mustBeProcessed
(
const
SourceInterface
& source)
const
= 0;
52
};
53
59
class
SelectAllCriteria
:
public
SelectionCriteria
{
60
public
:
61
bool
mustBeProcessed
(
const
SourceInterface
& )
const override
{
62
return
true
;
63
}
64
};
65
71
class
GroupingCriteria
{
72
public
:
76
virtual
~GroupingCriteria
() =
default
;
77
79
virtual
bool
shouldGroup
(
const
SourceInterface
& first,
const
SourceInterface
& second)
const
= 0;
80
82
virtual
std::set<PropertyId>
requiredProperties
()
const
{
return
{}; }
83
};
84
85
class
SourceGroupingInterface
:
public
PipelineEmitter
<SourceGroupInterface>,
public
PipelineReceiver
<SourceInterface> {
86
public
:
88
virtual
std::set<PropertyId>
requiredProperties
()
const
= 0;
89
};
90
98
class
SourceGrouping
:
public
SourceGroupingInterface
{
99
public
:
100
104
virtual
~SourceGrouping
() =
default
;
105
106
SourceGrouping
(
std::shared_ptr<GroupingCriteria>
grouping_criteria,
107
std::shared_ptr<SourceGroupFactory>
group_factory,
108
unsigned
int
hard_limit);
109
111
std::set<PropertyId>
requiredProperties
()
const override
;
112
114
void
receiveSource
(
std::unique_ptr<SourceInterface>
source)
override
;
115
117
void
receiveProcessSignal
(
const
ProcessSourcesEvent
& event)
override
;
118
119
private
:
120
std::shared_ptr<GroupingCriteria>
m_grouping_criteria
;
121
std::shared_ptr<SourceGroupFactory>
m_group_factory
;
122
std::list<std::unique_ptr<SourceGroupInterface>
>
m_source_groups
;
123
unsigned
int
m_hard_limit
;
124
125
};
/* End of SourceGrouping class */
126
127
128
}
/* namespace SourceXtractor */
129
130
131
#endif
PipelineStage.h
PropertyId.h
SourceGroupFactory.h
SourceGroupInterface.h
SourceInterface.h
SourceXtractor::GroupingCriteria
Criteria used by SourceGrouping to determine if two sources should be grouped together.
Definition
SourceGrouping.h:71
SourceXtractor::GroupingCriteria::~GroupingCriteria
virtual ~GroupingCriteria()=default
Destructor.
SourceXtractor::GroupingCriteria::shouldGroup
virtual bool shouldGroup(const SourceInterface &first, const SourceInterface &second) const =0
Determines if the two sources should be grouped together.
SourceXtractor::GroupingCriteria::requiredProperties
virtual std::set< PropertyId > requiredProperties() const
Return a set of used properties so they can be pre-fetched.
Definition
SourceGrouping.h:82
SourceXtractor::PipelineEmitter
Definition
PipelineStage.h:68
SourceXtractor::PipelineReceiver
Definition
PipelineStage.h:46
SourceXtractor::SelectAllCriteria
An implementation of SelectionCriteria that just marks all Sources as selected.
Definition
SourceGrouping.h:59
SourceXtractor::SelectAllCriteria::mustBeProcessed
bool mustBeProcessed(const SourceInterface &) const override
Determines if the given Source must be processed or not.
Definition
SourceGrouping.h:61
SourceXtractor::SelectionCriteria
Used to determine if a Source is selected for processing.
Definition
SourceGrouping.h:43
SourceXtractor::SelectionCriteria::~SelectionCriteria
virtual ~SelectionCriteria()=default
Destructor.
SourceXtractor::SelectionCriteria::mustBeProcessed
virtual bool mustBeProcessed(const SourceInterface &source) const =0
Determines if the given Source must be processed or not.
SourceXtractor::SourceGroupingInterface
Definition
SourceGrouping.h:85
SourceXtractor::SourceGroupingInterface::requiredProperties
virtual std::set< PropertyId > requiredProperties() const =0
Returns the set of required properties to compute the grouping.
SourceXtractor::SourceGrouping::m_group_factory
std::shared_ptr< SourceGroupFactory > m_group_factory
Definition
SourceGrouping.h:121
SourceXtractor::SourceGrouping::m_source_groups
std::list< std::unique_ptr< SourceGroupInterface > > m_source_groups
Definition
SourceGrouping.h:122
SourceXtractor::SourceGrouping::~SourceGrouping
virtual ~SourceGrouping()=default
Destructor.
SourceXtractor::SourceGrouping::receiveSource
void receiveSource(std::unique_ptr< SourceInterface > source) override
Handles a new Source.
Definition
SourceGrouping.cpp:35
SourceXtractor::SourceGrouping::requiredProperties
std::set< PropertyId > requiredProperties() const override
Returns the set of required properties to compute the grouping.
Definition
SourceGrouping.cpp:109
SourceXtractor::SourceGrouping::SourceGrouping
SourceGrouping(std::shared_ptr< GroupingCriteria > grouping_criteria, std::shared_ptr< SourceGroupFactory > group_factory, unsigned int hard_limit)
Definition
SourceGrouping.cpp:29
SourceXtractor::SourceGrouping::m_grouping_criteria
std::shared_ptr< GroupingCriteria > m_grouping_criteria
Definition
SourceGrouping.h:120
SourceXtractor::SourceGrouping::m_hard_limit
unsigned int m_hard_limit
Definition
SourceGrouping.h:123
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:87
SourceXtractor::SourceInterface
The SourceInterface is an abstract "source" that has properties attached to it.
Definition
SourceInterface.h:46
std::list
SourceXtractor
Definition
Aperture.h:30
std::set
std::shared_ptr
SourceXtractor::ProcessSourcesEvent
Event received by SourceGrouping to request the processing of some of the Sources stored.
Definition
PipelineStage.h:33
std::unique_ptr
Generated by
1.14.0