OMKPluginsLoader.cpp

Go to the documentation of this file.
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 //-----------------------------------------------------------------------------

logo OpenMask

Documentation generated on Mon Jun 9 11:45:57 2008

Generated with doxygen by Dimitri van Heesch ,   1997-2007