26 #ifndef __TERRALIB_PLUGIN_INTERNAL_PLUGINMANAGER_H 
   27 #define __TERRALIB_PLUGIN_INTERNAL_PLUGINMANAGER_H 
   30 #include "../common/Singleton.h" 
   40 #include <boost/ptr_container/ptr_vector.hpp> 
   74         void getPlugins(std::vector<std::string>& plugins) 
const;
 
   85         const PluginInfo& getPlugin(
const std::string& name) 
const;
 
   88         const boost::ptr_vector<PluginInfo>& getUnloadedPlugins() 
const;
 
   91         const boost::ptr_vector<PluginInfo>& getBrokenPlugins() 
const;
 
   96         bool isBrokenPlugin(
const std::string& pluginName) 
const;
 
  101         bool isUnloadedPlugin(
const std::string& pluginName) 
const;
 
  110         bool isLoaded(
const std::string& pname) 
const;
 
  139         void remove(
const std::string& plugin);
 
  160         void loadAll(
const bool start = 
true);
 
  195         void load(boost::ptr_vector<PluginInfo>& plugins, 
const bool start = 
true);
 
  215         void load(
const PluginInfo& pInfo, 
const bool start = 
true);
 
  217         void load(
const std::string& pluginName);
 
  228         void unload(
const std::string& name);
 
  259         std::size_t getNumPlugins() 
const;
 
  270         bool isLoaded(
const std::vector<std::string>& plugins) 
const;
 
  279         std::vector<std::string> getDependents(
const std::string& pluginName) 
const;
 
  288         bool hasDependents(
const std::string& pluginName) 
const;
 
  306         void getCategories(std::vector<std::string>& categories) 
const;
 
  313         void addCategory(
const std::string& name);
 
  320         void sort(boost::ptr_vector<PluginInfo>& plugins) 
const;
 
  328         void removeFromCategory(
AbstractPlugin* plugin, 
const std::string& category);
 
  330         void moveToBrokenList(
const PluginInfo& pInfo);
 
  332         void removeFromBrokenList(
const PluginInfo& pInfo);
 
  334         void removeFromUnloadedList(
const PluginInfo& pInfo);
 
  336         void moveDependentsToBrokenList(
const std::string& plugin, 
const bool& unloadPlugin=
false);
 
  338         void updateDependents(
const std::string& plugin);
 
  361 #endif  // __TERRALIB_PLUGIN_INTERNAL_PLUGINMANAGER_H 
boost::ptr_vector< PluginInfo > m_brokenPlugins
The list of plugins that could not be loaded. 
 
Template support for singleton pattern. 
 
std::map< std::string, std::vector< AbstractPlugin * > > m_pluginCategoryMap
A map from (plugin category) to (plugins in category) 
 
The basic information about a plugin. 
 
#define TEPLUGINEXPORT
You can use this macro in order to export/import classes and functions from this module. 
 
An abstract class for TerraLib Plugins. 
 
boost::ptr_vector< PluginInfo > m_unloadedPlugins
The list of plugins that are not loaded. 
 
std::map< std::string, AbstractPlugin * > m_pluginsMap
A map from (plugin's name) to (plugin instance). 
 
Configuration flags for the TerraLib Plugin module. 
 
std::vector< AbstractPlugin * > m_plugins
The list of managed plugins: this will be need to unload accordinly the plugins! 
 
A singleton for managing plugins. 
 
An exception class for the Plugin module. 
 
std::vector< AbstractFinder * > m_finders
The list of plugin finders.