NRP Core  1.4.1
plugin_manager.h
Go to the documentation of this file.
1 /* * NRP Core - Backend infrastructure to synchronize simulations
2  *
3  * Copyright 2020-2023 NRP Team
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  * http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * This project has received funding from the European Union’s Horizon 2020
18  * Framework Programme for Research and Innovation under the Specific Grant
19  * Agreement No. 945539 (Human Brain Project SGA3).
20  */
21 
22 #ifndef PLUGIN_MANAGER_H
23 #define PLUGIN_MANAGER_H
24 
25 #include <filesystem>
26 #include <map>
27 #include <vector>
28 
30 {
31 public:
37  bool loadPlugin(const std::string &pluginLibFile);
38 
43 
48  void addPluginPath(const std::string &pluginPath);
49 
50 protected:
51 
55  std::map<std::string, void*> _loadedLibs;
56 
57 private:
58 
65  std::vector<std::filesystem::path> _pluginPaths = {std::filesystem::current_path(), std::filesystem::path()};
66 };
67 
68 #endif // PLUGIN_MANAGER_H
PluginManager::loadPlugin
bool loadPlugin(const std::string &pluginLibFile)
Load a Plugin from a given library.
Definition: plugin_manager.cpp:29
PluginManager::~PluginManager
~PluginManager()
Destructor. Unloads all plugin libraries.
Definition: plugin_manager.cpp:72
PluginManager::_loadedLibs
std::map< std::string, void * > _loadedLibs
Loaded Libraries.
Definition: plugin_manager.h:55
PluginManager::addPluginPath
void addPluginPath(const std::string &pluginPath)
Adds search path under which to look for plugins.
Definition: plugin_manager.cpp:88
PluginManager
Definition: plugin_manager.h:29