1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
// Gmsh - Copyright (C) 1997-2021 C. Geuzaine, J.-F. Remacle
//
// See the LICENSE.txt file for license information. Please report all
// issues on https://gitlab.onelab.info/gmsh/gmsh/issues.
#ifndef PLUGIN_MANAGER_H
#define PLUGIN_MANAGER_H
#include <map>
#include <string>
class GMSH_Plugin;
class GMSH_SolverPlugin;
class PluginManager {
private:
PluginManager() {}
static PluginManager *_instance;
std::map<std::string, GMSH_Plugin *> allPlugins;
public:
virtual ~PluginManager();
// register all the plugins that are in $(GMSHPLUGINSHOME). (Note
// that loading a .so is not what is usually called a 'plugin': we
// should call the plugins 'modules'... A plugin is an executable,
// but that can only be executed from inside another program.)
void registerDefaultPlugins();
static PluginManager *instance();
// Dynamically add a plugin pluginName.so in dirName
void addPlugin(const std::string &fileName);
// Uninstall a given plugin
void uninstallPlugin(const std::string &pluginName) {}
// Set an option to a value in plugin named pluginName
void setPluginOption(const std::string &pluginName, const std::string &option,
double value);
void setPluginOption(const std::string &pluginName, const std::string &option,
const std::string &value);
// Iterator on plugins
std::map<std::string, GMSH_Plugin *>::iterator begin()
{
return allPlugins.begin();
}
std::map<std::string, GMSH_Plugin *>::iterator end()
{
return allPlugins.end();
}
// Find a plugin named pluginName
GMSH_Plugin *find(const std::string &pluginName);
// Get The ONLY Solver Plugin
GMSH_SolverPlugin *findSolverPlugin();
// Perform an action on the plugin. Default action are Run and
// Save. Other plugins may perform other actions.
void action(const std::string &pluginName, const std::string &action,
void *data);
};
#endif
|