SourceXtractorPlusPlus  0.12
Please provide a description of the project.
TaskProvider.h
Go to the documentation of this file.
1 
23 #ifndef _SEFRAMEWORK_TASK_TASKPROVIDER_H
24 #define _SEFRAMEWORK_TASK_TASKPROVIDER_H
25 
26 #include <memory>
27 #include <unordered_map>
28 
30 
34 
35 namespace SourceXtractor {
36 
42 class TaskProvider {
43 
44 public:
45 
47  virtual ~TaskProvider() = default;
48 
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 {
55  return std::dynamic_pointer_cast<const T>(getTask(property_id));
56  }
57 protected:
59  virtual std::shared_ptr<const Task> getTask(const PropertyId& property_id) const;
60 
61 private:
64 
65 }; /* End of TaskProvider class */
66 
67 
68 } /* namespace SourceXtractor */
69 
70 
71 #endif
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...
Definition: TaskProvider.h:54
std::unordered_map< PropertyId, std::shared_ptr< Task > > m_tasks
Definition: TaskProvider.h:63
TaskProvider(std::shared_ptr< TaskFactoryRegistry > task_factory_registry)
Definition: TaskProvider.h:49
T dynamic_pointer_cast(T... args)
Identifier used to set and retrieve properties.
Definition: PropertyId.h:40
std::shared_ptr< TaskFactoryRegistry > m_task_factory_registry
Definition: TaskProvider.h:62
virtual ~TaskProvider()=default
Destructor.