/usr/include/BALL/PLUGIN/pluginManager.h is in libball1.4-dev 1.4.1+20111206-3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 | #ifndef BALL_PLUGIN_PLUGINMANAGER_H
#define BALL_PLUGIN_PLUGINMANAGER_H
#ifndef BALL_CONCEPT_PREFERENCESOBJECT_H
# include <BALL/CONCEPT/preferencesObject.h>
#endif
#include <QtCore/QString>
#include <QtCore/QHash>
#include <QtCore/QMutex>
#include <QtCore/QReadWriteLock>
#include <boost/shared_ptr.hpp>
#include <list>
#include <map>
class QPluginLoader;
class QObject;
namespace BALL
{
class BALLPlugin;
class PluginHandler;
/**
* A singleton that takes care of handling all plugins.
* It is responsible for loading, starting and stopping plugins.
* For the task of properly initializing the plugins it utilizes
* the PluginHandler helper classes, that need to be supplemented
* for each new plugin type.
*/
class BALL_EXPORT PluginManager
: public PreferencesObject
{
public:
virtual ~PluginManager();
/**
* Use this method to obtain the PluginManager instance.
*
* This method is thread safe.
*/
static PluginManager& instance();
/**
* Tries to load all plugins (files named like: pluginMyPlugin.$LIBRARY_SUFFIX)
* located in the specified directoy dir.
*
* @param dir the directory to search for plugins.
*/
void addPluginDirectory(const QString& dir, bool autoactivate = false);
/**
* Tries to unload all plugins (files named like: pluginMyPlugin.$LIBRARY_SUFFIX)
* located in the specified directoy dir.
*
* @param dir the directory to search for plugins to remove.
*/
bool removePluginDirectory(const QString& dir);
/** Return a list of directories currently searched for plugins.
*/
vector<QString> getPluginDirectories() const;
/**
* Loads the plugin specified by plugin_name.
*
* @param plugin_name The path to the plugin to load
*
* @return NULL if the plugin could not be loaded. A valid pointer
* to the loaded plugin otherwise.
*/
BALLPlugin* loadPlugin(const QString& plugin_name);
/**
* Unloads the plugin specified by plugin_name.
*
* @param plugin_name The name of the plugin to unload
*/
bool unloadPlugin(const QString& plugin);
/**
* Searches for the plugin and returns a pointer
* to it if it has been loaded.
*
* @param plugin The name of the plugin to search
*
* @return NULL if the plugin could not be found, a pointer to
* it otherwise
*/
QObject* getPluginInstance(const QString& plugin);
/**
* Searches for the plugin and returns a pointer
* to it if it has been loaded.
*
* @param pos The position of the plugin in the plugin list
*
* @return NULL if the plugin could not be found, a pointer to
* it otherwise
*/
QObject* getPluginInstance(int pos);
/**
* See startPlugin(BALLPlugin* plugin)
*/
bool startPlugin(int plugin);
/**
* See startPlugin(BALLPlugin* plugin)
*/
bool startPlugin(const QString& plugin);
/**
* Starts the specified plugin through a applicable
* PluginHandler
*
* @param plugin A pointer to the plugin to be started
*
* @return false if no suitable handler could be found,
* true otherwise.
*/
bool startPlugin(BALLPlugin* plugin);
/**
* See stopPlugin(BALLPlugin* plugin)
*/
bool stopPlugin(int plugin);
/**
* See stopPlugin(BALLPlugin* plugin)
*/
bool stopPlugin(const QString& plugin);
/**
* Stops the specified plugin by letting all PluginHandlers
* stop it.
*
* @param plugin A pointer to the plugin to be stopped
*
* @return false if one handler could not stop the plugin,
* true otherwise.
*/
bool stopPlugin(BALLPlugin* plugin);
/** Unload all registered plugins.
*/
void unloadAllPlugins();
/**
* Returns the number of loaded plugins.
*/
int getPluginCount() const;
/**
* Register a new PluginHandler. This handler will then
* be available for starting new plugins.
*/
void registerHandler(PluginHandler* h);
// needed for storing this classes' preferences
virtual bool getValue(String&) const;
virtual bool setValue(const String&);
protected:
static const char* BETWEEN_PLUGINDIR_SEPERATOR;
PluginManager();
PluginManager(const PluginManager&);
const PluginManager& operator=(const PluginManager&);
std::map<QString, vector<BALLPlugin*> > loaded_plugin_dirs_;
QHash<QString, QPluginLoader*> loaders_;
std::list<PluginHandler*> handlers_;
static boost::shared_ptr<PluginManager> manager_;
//This mutex is used in the creation of the singleton
static QMutex mutex_;
//This mutex guards the handlers_ list
mutable QReadWriteLock handler_mutex_;
//This mutex guards the loaders_ list
mutable QReadWriteLock loader_mutex_;
};
}
#endif //BALL_PLUGIN_PLUGINMANAGER_H
|