SourceXtractorPlusPlus
0.10
Please provide a description of the project.
SEFramework
SEFramework
Plugin
PluginManager.h
Go to the documentation of this file.
1
17
/*
18
* PluginManager.h
19
*
20
* Created on: Jul 27, 2016
21
* Author: mschefer
22
*/
23
24
#ifndef _SEFRAMEWORK_PLUGIN_PLUGINMANAGER_H_
25
#define _SEFRAMEWORK_PLUGIN_PLUGINMANAGER_H_
26
27
#include <boost/version.hpp>
28
#define USE_BOOST_DLL BOOST_VERSION >= 105500
29
30
#if USE_BOOST_DLL
31
#include <boost/dll/shared_library.hpp>
32
#endif
33
#include <boost/filesystem/path.hpp>
34
35
#include <memory>
36
#include <vector>
37
38
#include "
SEFramework/Configuration/Configurable.h
"
39
#include "
SEFramework/Task/TaskFactoryRegistry.h
"
40
#include "
SEFramework/Plugin/PluginAPI.h
"
41
42
namespace
SourceXtractor
{
43
44
class
Plugin;
45
53
class
PluginManager
:
public
PluginAPI
{
54
public
:
55
56
virtual
~PluginManager
() =
default
;
57
58
PluginManager
(
std::shared_ptr<TaskFactoryRegistry>
task_factory_registry,
59
std::shared_ptr<OutputRegistry>
output_registry,
60
long
config_manager_id
,
61
std::string
plugin_path,
62
std::vector<std::string>
plugin_list) :
63
m_plugin_path
(plugin_path),
64
m_plugin_list
(plugin_list),
65
m_task_factory_registry
(task_factory_registry),
66
m_output_registry
(output_registry),
67
m_config_manager_id
(
config_manager_id
) {}
68
70
void
loadPlugins
();
71
72
// PluginAPI implementation
73
virtual
TaskFactoryRegistry
&
getTaskFactoryRegistry
()
const override
{
74
return
*
m_task_factory_registry
;
75
}
76
77
virtual
OutputRegistry
&
getOutputRegistry
()
const override
{
78
return
*
m_output_registry
;
79
}
80
81
Euclid::Configuration::ConfigManager
&
getConfigManager
()
const override
{
82
return
Euclid::Configuration::ConfigManager::getInstance
(
m_config_manager_id
);
83
}
84
86
template
<
typename
T>
87
static
void
registerStaticPlugin
() {
88
s_static_plugins
.emplace_back(
new
T);
89
}
90
91
private
:
92
boost::filesystem::path
m_plugin_path
;
93
std::vector<std::string>
m_plugin_list
;
94
95
std::shared_ptr<TaskFactoryRegistry>
m_task_factory_registry
;
96
std::shared_ptr<OutputRegistry>
m_output_registry
;
97
long
m_config_manager_id
;
98
99
#if USE_BOOST_DLL
100
static
std::vector<boost::dll::shared_library>
s_loaded_plugins;
109
#endif
110
static
std::vector<std::unique_ptr<Plugin>
>
s_static_plugins
;
111
};
112
113
}
114
115
#endif
/* _SEFRAMEWORK_PLUGIN_PLUGINMANAGER_H_ */
config_manager_id
static long config_manager_id
Definition:
SourceXtractor.cpp:91
std::shared_ptr< TaskFactoryRegistry >
PluginAPI.h
SourceXtractor::PluginManager::loadPlugins
void loadPlugins()
loads all the available plugins. Both those linked at compile-time and those loaded at run-time
Definition:
PluginManager.cpp:51
SourceXtractor::PluginManager::m_output_registry
std::shared_ptr< OutputRegistry > m_output_registry
Definition:
PluginManager.h:96
SourceXtractor::OutputRegistry
Definition:
OutputRegistry.h:36
SourceXtractor::PluginManager::m_task_factory_registry
std::shared_ptr< TaskFactoryRegistry > m_task_factory_registry
Definition:
PluginManager.h:95
Euclid::Configuration::ConfigManager::getInstance
static ConfigManager & getInstance(long id)
SourceXtractor::PluginManager::getConfigManager
Euclid::Configuration::ConfigManager & getConfigManager() const override
Definition:
PluginManager.h:81
SourceXtractor::PluginManager::m_plugin_list
std::vector< std::string > m_plugin_list
Definition:
PluginManager.h:93
std::string
STL class.
SourceXtractor::PluginManager::m_plugin_path
boost::filesystem::path m_plugin_path
Definition:
PluginManager.h:92
SourceXtractor
Definition:
Aperture.h:30
Euclid::Configuration::ConfigManager
SourceXtractor::PluginManager::m_config_manager_id
long m_config_manager_id
Definition:
PluginManager.h:97
SourceXtractor::PluginAPI
This interface is given to the plugin to let it access object instances from the framework.
Definition:
PluginAPI.h:39
SourceXtractor::PluginManager::~PluginManager
virtual ~PluginManager()=default
SourceXtractor::PluginManager::registerStaticPlugin
static void registerStaticPlugin()
registers a plugin, this is used to register plugins linked at compile-time
Definition:
PluginManager.h:87
SourceXtractor::TaskFactoryRegistry
Definition:
TaskFactoryRegistry.h:39
std::vector< std::string >
SourceXtractor::PluginManager::getTaskFactoryRegistry
virtual TaskFactoryRegistry & getTaskFactoryRegistry() const override
Definition:
PluginManager.h:73
SourceXtractor::PluginManager::getOutputRegistry
virtual OutputRegistry & getOutputRegistry() const override
Definition:
PluginManager.h:77
SourceXtractor::PluginManager::s_static_plugins
static std::vector< std::unique_ptr< Plugin > > s_static_plugins
Definition:
PluginManager.h:110
SourceXtractor::PluginManager::PluginManager
PluginManager(std::shared_ptr< TaskFactoryRegistry > task_factory_registry, std::shared_ptr< OutputRegistry > output_registry, long config_manager_id, std::string plugin_path, std::vector< std::string > plugin_list)
Definition:
PluginManager.h:58
SourceXtractor::PluginManager
PluginManager handles the loading of plugins and calls their registration function,...
Definition:
PluginManager.h:53
Configurable.h
TaskFactoryRegistry.h
Generated by
1.8.15