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 )
47 cpPlugins::Interface::ProcessObject::Pointer po = provider->create( );
57 // -------------------------------------------------------------------------
58 bool cpPlugins::Interface::Interface::
59 Load( const std::string& path )
64 ret = this->m_Pluma.load( path );
66 this->_LoadClasses( );
76 // -------------------------------------------------------------------------
77 bool cpPlugins::Interface::Interface::
78 Load( const std::string& folder, const std::string& name )
83 ret = this->m_Pluma.load( folder, name );
85 this->_LoadClasses( );
95 // -------------------------------------------------------------------------
96 std::list< std::string > cpPlugins::Interface::Interface::
97 LoadFromFolder( const std::string& folder, bool r )
99 std::list< std::string > files;
102 files = this->m_Pluma.loadFromFolder( folder, r );
103 if( files.size( ) > 0 )
104 this->_LoadClasses( );
112 // -------------------------------------------------------------------------
113 bool cpPlugins::Interface::Interface::
114 Unload( const std::string& name )
119 ret = this->m_Pluma.unload( name );
122 this->m_Providers.clear( );
123 this->m_Classes.clear( );
124 this->_LoadClasses( );
136 // -------------------------------------------------------------------------
137 void cpPlugins::Interface::Interface::
142 this->m_Pluma.unloadAll( );
149 this->m_Providers.clear( );
150 this->m_Classes.clear( );
153 // -------------------------------------------------------------------------
154 void cpPlugins::Interface::Interface::
155 GetLoadedPlugins( std::vector< const std::string* >& names ) const
157 this->m_Pluma.getLoadedPlugins( names );
160 // -------------------------------------------------------------------------
161 bool cpPlugins::Interface::Interface::
162 IsLoaded( const std::string& name ) const
164 return( this->m_Pluma.isLoaded( name ) );
167 // -------------------------------------------------------------------------
168 void cpPlugins::Interface::Interface::
171 this->m_Providers.clear( );
172 this->m_Classes.clear( );
173 this->m_Pluma.getProviders( this->m_Providers );
175 // Get reader provider
176 for( unsigned int i = 0; i < this->m_Providers.size( ); ++i )
178 ProcessObject::Pointer dummy = this->m_Providers[ i ]->create( );
179 this->m_Classes[ dummy->GetClassName( ) ] = i;