SourceXtractorPlusPlus
0.10
Please provide a description of the project.
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
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
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, providing them with with a PluginAPI implementation.
Definition:
PluginManager.h:53
Configurable.h
TaskFactoryRegistry.h
Generated by
1.8.5