1 #ifndef __CPPLUGINS__INTERFACE__H__
2 #define __CPPLUGINS__INTERFACE__H__
4 #include <cpPlugins/Config.h>
5 #include <cpPlugins/ProcessObject.h>
15 class cpPlugins_EXPORT Interface
18 typedef Interface Self;
20 typedef void* ( *TCreator )( );
21 typedef std::map< std::string, void* > TLibraries;
24 std::string PluginName;
28 typedef std::map< std::string, std::map< std::string, TCreatorData > > TFilters;
32 virtual ~Interface( );
34 const std::set< std::string >& GetPaths( ) const;
35 std::set< std::string > GetLibraries( ) const;
36 std::set< std::string > GetPlugins( ) const;
37 std::set< std::string > GetCategories( ) const;
38 std::set< std::string > GetFilters( const std::string& category ) const;
40 void UpdateEnvironments( const std::string& new_environment );
41 void LoadEnvironment( );
42 void SaveEnvironments( const std::string& dir ) const;
43 void OpenEnvironments( const std::string& dir );
45 void LoadFile( const std::string& fname );
46 void LoadPlugin( const std::string& pname );
47 void LoadDirectory( const std::string& dirname );
50 cpPlugins::ProcessObject::Pointer CreateProcessObject(
51 const std::string& category, const std::string& name
55 std::set< std::string > m_Paths;
56 TLibraries m_Libraries;
62 const TFilters& GetFilters( );
65 void GuessAccesiblePlugins( );
66 void LoadPlugin( const std::string& name );
67 void LoadPluginDir( const std::string& dirname );
68 void LoadPluginFile( const std::string& filename );
71 ProcessObject::Pointer Create(
72 const std::string& category, const std::string& name
74 std::string GetPluginName(
75 const std::string& category, const std::string& name
77 std::string GetPluginName( const ProcessObject* obj ) const;
78 std::set< std::string > GetPlugins( ) const;
81 static void* _DLOpen( const std::string& fname, std::string& error );
82 static const char* _DLGetName( void* hnd );
83 static TFilters _DLGetFilters( void* hnd );
84 static TCreator _DLGetCreator(
85 void* hnd, const std::string& category, const std::string& name
87 static void _DLClose( void* hnd );
90 std::vector< std::string > m_Paths;
91 TDynLibraries m_DynLibraries;
92 TDynFilters m_DynFilters;
95 static unsigned int InterfacesCount;
101 #endif // __CPPLUGINS__INTERFACE__H__