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::Pointer 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( provider->create( ) );
49 // -------------------------------------------------------------------------
50 cpPlugins::Interface::ProcessObject::Pointer
51 cpPlugins::Interface::Interface::
52 CreateProcessObject( const std::string& name ) const
54 cpPlugins::Interface::Object::Pointer o = this->CreateObject( name );
55 cpPlugins::Interface::ProcessObject::Pointer p =
56 dynamic_cast< cpPlugins::Interface::ProcessObject* >( o.GetPointer( ) );
60 // -------------------------------------------------------------------------
61 bool cpPlugins::Interface::Interface::
62 Load( const std::string& path )
64 if( this->m_Pluma.load( path ) )
66 this->_LoadClasses( );
73 // -------------------------------------------------------------------------
74 bool cpPlugins::Interface::Interface::
75 Load( const std::string& folder, const std::string& name )
77 if( this->m_Pluma.load( folder, name ) )
79 this->_LoadClasses( );
86 // -------------------------------------------------------------------------
87 int cpPlugins::Interface::Interface::
88 LoadFromFolder( const std::string& folder, bool r )
90 if( this->m_Pluma.loadFromFolder( folder, r ) )
92 this->_LoadClasses( );
99 // -------------------------------------------------------------------------
100 bool cpPlugins::Interface::Interface::
101 Unload( const std::string& name )
103 if( this->m_Pluma.unload( name ) )
105 this->m_Providers.clear( );
106 this->m_Classes.clear( );
107 this->_LoadClasses( );
114 // -------------------------------------------------------------------------
115 void cpPlugins::Interface::Interface::
118 this->m_Pluma.unloadAll( );
119 this->m_Providers.clear( );
120 this->m_Classes.clear( );
123 // -------------------------------------------------------------------------
124 void cpPlugins::Interface::Interface::
125 GetLoadedPlugins( std::vector< const std::string* >& names ) const
127 this->m_Pluma.getLoadedPlugins( names );
130 // -------------------------------------------------------------------------
131 bool cpPlugins::Interface::Interface::
132 IsLoaded( const std::string& name ) const
134 return( this->m_Pluma.isLoaded( name ) );
137 // -------------------------------------------------------------------------
138 void cpPlugins::Interface::Interface::
141 this->m_Providers.clear( );
142 this->m_Classes.clear( );
143 this->m_Pluma.getProviders( this->m_Providers );
145 // Get reader provider
146 for( unsigned int i = 0; i < this->m_Providers.size( ); ++i )
148 Object::Pointer dummy = this->m_Providers[ i ]->create( );
149 this->m_Classes[ dummy->GetClassName( ) ] = i;