]> Creatis software - cpPlugins.git/blob - lib/cpPlugins/Interface.h
MPR objects updated
[cpPlugins.git] / lib / cpPlugins / Interface.h
1 #ifndef __CPPLUGINS__INTERFACE__H__
2 #define __CPPLUGINS__INTERFACE__H__
3
4 #include <cpPlugins/Config.h>
5 #include <cpPlugins/ProcessObject.h>
6 #include <map>
7 #include <set>
8 #include <string>
9
10 namespace cpPlugins
11 {
12   /**
13    */
14   class cpPlugins_EXPORT Interface
15   {
16   public:
17     typedef Interface Self;
18
19     typedef void* ( *TCreator )( );
20     typedef std::pair< std::string, TCreator >               TDynFunc;
21     typedef std::map< std::string, TDynFunc >                TDynFilter;
22     typedef std::map< std::string, TDynFilter >              TDynFilters;
23     typedef std::map< std::string, void* >                   TDynLibraries;
24     typedef std::map< std::string, std::set< std::string > > TFilters;
25
26   public:
27     Interface( );
28     virtual ~Interface( );
29
30     const TFilters& GetFilters( );
31
32     void GuessAccesiblePlugins( );
33
34     bool LoadConfiguration( const std::string& filename );
35     bool SaveConfiguration( const std::string& filename ) const;
36     void LoadPluginFile( const std::string& filename );
37     unsigned int LoadPluginDir( const std::string& dirname );
38     void UnloadAll( );
39
40     cpPlugins::ProcessObject::Pointer Create(
41       const std::string& category, const std::string& name
42       );
43
44   protected:
45     static void* _DLOpen( const std::string& fname );
46     static TFilters _DLGetFilters( void* hnd );
47     static TCreator _DLGetCreator(
48       void* hnd, const std::string& category, const std::string& name
49       );
50     static void _DLClose( void* hnd );
51
52   protected:
53     TDynLibraries m_DynLibraries;
54     TDynFilters   m_DynFilters;
55     TFilters      m_Filters;
56   };
57
58 } // ecapseman
59
60 #endif // __CPPLUGINS__INTERFACE__H__
61
62 // eof - $RCSfile$