]> Creatis software - cpPlugins.git/blob - cpPlugins/Interface/Interface.h
Moved to version 1.0
[cpPlugins.git] / cpPlugins / Interface / Interface.h
1 #ifndef __CPPLUGINS__INTERFACE__INTERFACE__H__
2 #define __CPPLUGINS__INTERFACE__INTERFACE__H__
3
4 #include <map>
5 #include <string>
6 #include <vector>
7 #include <Pluma/Pluma.hpp>
8
9 #include <cpPlugins/Interface/cpPlugins_Interface_Export.h>
10 #include <cpPlugins/Interface/Object.h>
11 #include <cpPlugins/Interface/ProcessObject.h>
12
13 namespace cpPlugins
14 {
15   namespace Interface
16   {
17     /**
18      */
19     class cpPlugins_Interface_EXPORT Interface
20     {
21     public:
22       typedef std::vector< ProcessObjectProvider* > TProviders;
23       typedef std::map< std::string, unsigned int > TClasses;
24
25       typedef TProviders::const_iterator TProvidersIterator;
26       typedef TClasses::const_iterator   TClassesIterator;
27
28     public:
29       Interface( );
30       virtual ~Interface( );
31
32       // Plugin access
33       TClasses& GetClasses( );
34       const TClasses& GetClasses( ) const;
35       ProcessObject::Pointer CreateObject( const std::string& name ) const;
36
37       // Interface to PLUMA
38       bool Load( const std::string& path );
39       bool Load( const std::string& folder, const std::string& name );
40       std::list< std::string > LoadFromFolder(
41         const std::string& folder, bool r = false
42         );
43       bool Unload( const std::string& name );
44       void UnloadAll( );
45       void GetLoadedPlugins( std::vector< const std::string* >& names ) const;
46       bool IsLoaded( const std::string& name ) const;
47
48     protected:
49       void _LoadClasses( );
50
51     protected:
52       pluma::Pluma m_Pluma;
53       TProviders   m_Providers;
54       TClasses     m_Classes;
55     };
56
57   } // ecapseman
58
59 } // ecapseman
60
61 #endif // __CPPLUGINS__INTERFACE__INTERFACE__H__
62
63 // eof - $RCSfile$