SourceXtractorPlusPlus  0.11
Please provide a description of the project.
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 <memory>
27 #include <list>
28 
29 #include "SEUtils/Observable.h"
30 
34 
35 namespace SourceXtractor {
36 
43 public:
47  virtual ~SelectionCriteria() = default;
48 
50  virtual bool mustBeProcessed(const SourceInterface& source) const = 0;
51 };
52 
59 public:
60  virtual bool mustBeProcessed(const SourceInterface& ) const override {
61  return true;
62  }
63 };
64 
65 
72 
73  const SelectionCriteria& m_selection_criteria; // Used to identify the Sources to process
74 
75  ProcessSourcesEvent(const SelectionCriteria& selection_criteria) : m_selection_criteria(selection_criteria) {}
76 };
77 
84 public:
88  virtual ~GroupingCriteria() = default;
89 
91  virtual bool shouldGroup(const SourceInterface& first, const SourceInterface& second) const = 0;
92 };
93 
101 class SourceGrouping : public Observer<std::shared_ptr<SourceInterface>>,
102  public Observer<ProcessSourcesEvent>, public Observable<std::shared_ptr<SourceGroupInterface>> {
103 public:
104 
108  virtual ~SourceGrouping() = default;
109 
112 
114  virtual void handleMessage(const std::shared_ptr<SourceInterface>& source) override;
115 
116  // Handles a ProcessSourcesEvent to trigger the processing of some of the Sources stored in SourceGrouping
117  virtual void handleMessage(const ProcessSourcesEvent& source) override;
118 
119 private:
120 
124 
125 }; /* End of SourceGrouping class */
126 
127 
128 } /* namespace SourceXtractor */
129 
130 
131 #endif
std::shared_ptr< SourceGroupFactory > m_group_factory
virtual bool shouldGroup(const SourceInterface &first, const SourceInterface &second) const =0
Determines if the two sources should be grouped together.
virtual ~SourceGrouping()=default
Destructor.
constexpr double second
virtual void handleMessage(const std::shared_ptr< SourceInterface > &source) override
Handles a new Source.
Used to determine if a Source is selected for processing.
virtual bool mustBeProcessed(const SourceInterface &) const override
Determines if the given Source must be processed or not.
Event received by SourceGrouping to request the processing of some of the Sources stored...
const SelectionCriteria & m_selection_criteria
virtual ~SelectionCriteria()=default
Destructor.
std::list< std::shared_ptr< SourceGroupInterface > > m_source_groups
Implements the Observer pattern. Notifications will be made using a message of type T...
Definition: Observable.h:51
SourceGrouping(std::shared_ptr< GroupingCriteria > grouping_criteria, std::shared_ptr< SourceGroupFactory > group_factory)
std::shared_ptr< GroupingCriteria > m_grouping_criteria
SourceGrouping takes Source, groups them together according to its GroupingCriteria and stores them...
STL class.
Criteria used by SourceGrouping to determine if two sources should be grouped together.
virtual bool mustBeProcessed(const SourceInterface &source) const =0
Determines if the given Source must be processed or not.
Observer interface to be used with Observable to implement the Observer pattern.
Definition: Observable.h:38
ProcessSourcesEvent(const SelectionCriteria &selection_criteria)
virtual ~GroupingCriteria()=default
Destructor.
The SourceInterface is an abstract "source" that has properties attached to it.
An implementation of SelectionCriteria that just marks all Sources as selected.