From: Christian P. <cp...@us...> - 2005-06-16 13:06:43
|
Update of /cvsroot/pclasses/pclasses2/src/System In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25814/src/System Modified Files: Plugin.cpp Log Message: - Use Phoenix<> for PluginManager::instance() - Add "/usr/lib/pclasses" and "/usr/local/lib/pclasses" to PathFinder by default. Index: Plugin.cpp =================================================================== RCS file: /cvsroot/pclasses/pclasses2/src/System/Plugin.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- Plugin.cpp 7 May 2005 11:55:47 -0000 1.2 +++ Plugin.cpp 16 Jun 2005 13:06:33 -0000 1.3 @@ -20,6 +20,7 @@ #include "pclasses/pclasses-config.h" #include "pclasses/Factory.h" +#include "pclasses/Phoenix.h" #include "pclasses/Trace.h" #include "pclasses/System/Plugin.h" #include "pclasses/System/Directory.h" @@ -35,6 +36,15 @@ PluginManager::~PluginManager() { + P_TRACE(PluginManager) << "~PluginManager()"; + + PluginMap::iterator i = _pluginMap.begin(); + while(i != _pluginMap.end()) + { + delete i->second; + PluginMap::iterator del = i++; + _pluginMap.erase(del); + } } PathFinder& PluginManager::pathFinder(const std::string& ifaceType) @@ -46,6 +56,8 @@ PathFinder& pathFinder = _pathFinders[ifaceType]; pathFinder.addExtension(std::string(".")+SharedLib::extension()); + pathFinder.addPath("/usr/lib/pclasses"); + pathFinder.addPath("/usr/local/lib/pclasses"); return pathFinder; } @@ -94,10 +106,12 @@ return shl; } +struct plugin_manager_context_t { }; + PluginManager& PluginManager::instance() { - static PluginManager inst; - return inst; + typedef Phoenix<PluginManager, plugin_manager_context_t> PHX; + return PHX::instance(); } class PluginTypeLoader { |