1 #include <cpPlugins/Interface/Interface.h>
3 // -------------------------------------------------------------------------
4 cpPlugins::Interface::Interface::
7 this->m_Pluma.acceptProviderType< ProcessObjectProvider >( );
10 // -------------------------------------------------------------------------
11 cpPlugins::Interface::Interface::
17 // -------------------------------------------------------------------------
18 cpPlugins::Interface::Interface::
19 TClasses& cpPlugins::Interface::Interface::
22 return( this->m_Classes );
25 // -------------------------------------------------------------------------
26 const cpPlugins::Interface::Interface::
27 TClasses& cpPlugins::Interface::Interface::
30 return( this->m_Classes );
33 // -------------------------------------------------------------------------
34 cpPlugins::Interface::ProcessObject::Pointer
35 cpPlugins::Interface::Interface::
36 CreateObject( const std::string& name ) const
38 TClassesIterator cIt = this->m_Classes.find( name );
39 if( cIt != this->m_Classes.end( ) )
41 ProcessObjectProvider* provider =
42 dynamic_cast< ProcessObjectProvider* >(
43 this->m_Providers[ cIt->second ]
45 if( provider != NULL )
46 return( provider->create( ) );
52 // -------------------------------------------------------------------------
53 bool cpPlugins::Interface::Interface::
54 Load( const std::string& path )
59 ret = this->m_Pluma.load( path );
61 this->_LoadClasses( );
71 // -------------------------------------------------------------------------
72 bool cpPlugins::Interface::Interface::
73 Load( const std::string& folder, const std::string& name )
78 ret = this->m_Pluma.load( folder, name );
80 this->_LoadClasses( );
90 // -------------------------------------------------------------------------
91 std::list< std::string > cpPlugins::Interface::Interface::
92 LoadFromFolder( const std::string& folder, bool r )
94 std::list< std::string > files;
97 files = this->m_Pluma.loadFromFolder( folder, r );
98 if( files.size( ) > 0 )
99 this->_LoadClasses( );
107 // -------------------------------------------------------------------------
108 bool cpPlugins::Interface::Interface::
109 Unload( const std::string& name )
114 ret = this->m_Pluma.unload( name );
117 this->m_Providers.clear( );
118 this->m_Classes.clear( );
119 this->_LoadClasses( );
131 // -------------------------------------------------------------------------
132 void cpPlugins::Interface::Interface::
137 this->m_Pluma.unloadAll( );
144 this->m_Providers.clear( );
145 this->m_Classes.clear( );
148 // -------------------------------------------------------------------------
149 void cpPlugins::Interface::Interface::
150 GetLoadedPlugins( std::vector< const std::string* >& names ) const
152 this->m_Pluma.getLoadedPlugins( names );
155 // -------------------------------------------------------------------------
156 bool cpPlugins::Interface::Interface::
157 IsLoaded( const std::string& name ) const
159 return( this->m_Pluma.isLoaded( name ) );
162 // -------------------------------------------------------------------------
163 void cpPlugins::Interface::Interface::
166 this->m_Providers.clear( );
167 this->m_Classes.clear( );
168 this->m_Pluma.getProviders( this->m_Providers );
170 // Get reader provider
171 for( unsigned int i = 0; i < this->m_Providers.size( ); ++i )
173 ProcessObject::Pointer dummy = this->m_Providers[ i ]->create( );
174 this->m_Classes[ dummy->GetClassName( ) ] = i;