00001 #include "OMKPluginsLoader.h" 00002 #include "OMKTracer.h" 00003 #include "OMKController.h" 00004 #include "OBTPlugin.h" 00005 #include "OBTPluginInformation.h" 00006 #include "OMKParametersAccessor.inl" 00007 00008 using namespace OMK ; 00009 00010 //----------------------------------------------------------------------------- 00011 PluginsLoaderClass::~PluginsLoaderClass() 00012 { 00013 for( std::vector< OBT::Plugin* >::iterator i = _plugins.begin() ; 00014 i != _plugins.end() ; 00015 ++i ) 00016 { 00017 delete *i ; 00018 } 00019 } 00020 //----------------------------------------------------------------------------- 00021 void PluginsLoaderClass::init( Controller& ctrl ) 00022 { 00023 OMASSERTM( !_isInitiliased, "Cannot be initialised twice !" ) ; 00024 std::vector< std::vector< std::string > > pluginsPrm ; 00025 ParametersAccessor::get( ctrl.getConfigurationParameters(), "Plugins", pluginsPrm, &ctrl ) ; 00026 for( std::vector< std::vector< std::string > >::const_iterator prm = pluginsPrm.begin() ; 00027 prm != pluginsPrm.end() ; 00028 ++prm ) 00029 { 00030 00031 OMASSERTM( 0 < prm->size() && prm->size() <= 3, "Plugins loader\n>>>:-( Unable to read the plugins because there is a syntax error !" ) ; 00032 _plugins.push_back( new OBT::Plugin( (*prm)[0].c_str(), 00033 ( prm->size() < 2 || (*prm)[1].empty() ) ? 0 : (*prm)[1].c_str(), 00034 ( prm->size() < 3 || (*prm)[2].empty() ) ? 0 : (*prm)[2].c_str() ) ) ; 00035 if( _plugins.back()->load() ) 00036 { // Tells which plugin has been loaded 00037 OMMESSAGE( _plugins.back()->getInformation().getPluginName() << " plugin is loaded !" ) ; 00038 } 00039 else 00040 { 00041 // Cannot load => unload for cleaning 00042 delete _plugins.back() ; 00043 _plugins.pop_back() ; 00044 } 00045 } 00046 00047 _isInitiliased = true ; 00048 } 00049 //-----------------------------------------------------------------------------
Documentation generated on Mon Jun 9 11:45:57 2008 |
Generated with doxygen by Dimitri van Heesch , 1997-2007 |