SourceXtractorPlusPlus 1.0.3
SourceXtractor++, the next generation SExtractor
Loading...
Searching...
No Matches
TaskProvider.h
Go to the documentation of this file.
1
22
23#ifndef _SEFRAMEWORK_TASK_TASKPROVIDER_H
24#define _SEFRAMEWORK_TASK_TASKPROVIDER_H
25
26#include <memory>
27#include <unordered_map>
28
29#include "ElementsKernel/Exception.h"
30
34
35namespace SourceXtractor {
36
43
44public:
45
47 virtual ~TaskProvider() = default;
48
49 explicit TaskProvider(std::shared_ptr<TaskFactoryRegistry> task_factory_registry)
50 : m_task_factory_registry(task_factory_registry) {}
51
53 template<class T>
54 std::shared_ptr<const T> getTask(const PropertyId& property_id) const {
56 }
57protected:
59 virtual std::shared_ptr<const Task> getTask(const PropertyId& property_id) const;
60
61private:
64
65}; /* End of TaskProvider class */
66
67
68} /* namespace SourceXtractor */
69
70
71#endif
Identifier used to set and retrieve properties.
Definition PropertyId.h:40
TaskProvider(std::shared_ptr< TaskFactoryRegistry > task_factory_registry)
std::shared_ptr< const T > getTask(const PropertyId &property_id) const
Template version of getTask() that includes casting the returned pointer to the appropriate type.
std::unordered_map< PropertyId, std::shared_ptr< Task > > m_tasks
virtual ~TaskProvider()=default
Destructor.
std::shared_ptr< TaskFactoryRegistry > m_task_factory_registry
T dynamic_pointer_cast(T... args)