1 #include <cpPlugins/Interface/Interface.h>
3 // -------------------------------------------------------------------------
4 cpPlugins::Interface::Interface::
7 this->m_Pluma.acceptProviderType< ObjectProvider >( );
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::Object* cpPlugins::Interface::Interface::
35 CreateObject( const std::string& name ) const
37 TClassesIterator cIt = this->m_Classes.find( name );
38 if( cIt != this->m_Classes.end( ) )
40 ObjectProvider* provider =
41 dynamic_cast< ObjectProvider* >( this->m_Providers[ cIt->second ] );
42 if( provider != NULL )
43 return( dynamic_cast< Object* >( provider->create( ) ) );
49 // -------------------------------------------------------------------------
50 bool cpPlugins::Interface::Interface::
51 Load( const std::string& path )
53 if( this->m_Pluma.load( path ) )
55 this->_LoadClasses( );
62 // -------------------------------------------------------------------------
63 bool cpPlugins::Interface::Interface::
64 Load( const std::string& folder, const std::string& name )
66 if( this->m_Pluma.load( folder, name ) )
68 this->_LoadClasses( );
75 // -------------------------------------------------------------------------
76 int cpPlugins::Interface::Interface::
77 LoadFromFolder( const std::string& folder, bool r )
79 if( this->m_Pluma.loadFromFolder( folder, r ) )
81 this->_LoadClasses( );
88 // -------------------------------------------------------------------------
89 bool cpPlugins::Interface::Interface::
90 Unload( const std::string& name )
92 if( this->m_Pluma.unload( name ) )
94 this->m_Providers.clear( );
95 this->m_Classes.clear( );
96 this->_LoadClasses( );
103 // -------------------------------------------------------------------------
104 void cpPlugins::Interface::Interface::
107 this->m_Pluma.unloadAll( );
108 this->m_Providers.clear( );
109 this->m_Classes.clear( );
112 // -------------------------------------------------------------------------
113 void cpPlugins::Interface::Interface::
114 GetLoadedPlugins( std::vector< const std::string* >& names ) const
116 this->m_Pluma.getLoadedPlugins( names );
119 // -------------------------------------------------------------------------
120 bool cpPlugins::Interface::Interface::
121 IsLoaded( const std::string& name ) const
123 return( this->m_Pluma.isLoaded( name ) );
126 // -------------------------------------------------------------------------
127 void cpPlugins::Interface::Interface::
130 this->m_Providers.clear( );
131 this->m_Classes.clear( );
132 this->m_Pluma.getProviders( this->m_Providers );
134 // Get reader provider
135 for( unsigned int i = 0; i < this->m_Providers.size( ); ++i )
137 Object* dummy = this->m_Providers[ i ]->create( );
138 this->m_Classes[ dummy->GetClassName( ) ] = i;