]> Creatis software - cpPlugins.git/blob - lib/cpPlugins/Interface/Plugins.h
...
[cpPlugins.git] / lib / cpPlugins / Interface / Plugins.h
1 #ifndef __cpPlugins__Interface__Plugins__h__
2 #define __cpPlugins__Interface__Plugins__h__
3
4 #include <cpPlugins/Config.h>
5 #include <cpPlugins/BaseObjects/ProcessObject.h>
6 #include <itkObject.h>
7 #include <map>
8 #include <set>
9 #include <string>
10
11 namespace cpPlugins
12 {
13   namespace Interface
14   {
15     /**
16      */
17     class cpPlugins_EXPORT Plugins
18       : public itk::Object
19     {
20     public:
21       typedef Plugins                         Self;
22       typedef itk::Object                     Superclass;
23       typedef itk::SmartPointer< Self >       Pointer;
24       typedef itk::SmartPointer< const Self > ConstPointer;
25
26       typedef std::pair< void*, void* >           THandlers;
27       typedef std::pair< std::string, THandlers > TLibData;
28       typedef std::map< std::string, TLibData >   TLibraries;
29       typedef std::map< std::string, TLibraries > TFilters;
30
31     public:
32       itkTypeMacro( Plugins, itk::Object );
33
34     public:
35       static Pointer New( );
36       virtual itk::LightObject::Pointer CreateAnother( ) const cpPlugins_OVERRIDE;
37       Pointer Clone( ) const;
38
39       const TFilters& GetFilters( ) const;
40
41       void LoadPluginsFile( const std::string& libname );
42       void LoadPluginsDirectory( const std::string& dir );
43       void GuessPlugins( );
44       void GuessEnvironment( const std::string& dir );
45       bool SaveEnvironment( const std::string& dir );
46
47       cpPlugins::BaseObjects::ProcessObject::Pointer
48       CreateFilter( const std::string& category, const std::string& name );
49
50     protected:
51       Plugins( );
52       virtual ~Plugins( );
53       virtual void PrintSelf( std::ostream& os, itk::Indent indent ) const cpPlugins_OVERRIDE;
54
55       void _ReadPluginsPathsVariable( );
56
57     private:
58       // Purposely not implemented
59       Plugins( const Self& other );
60       Self& operator=( const Self& other );
61
62     protected:
63       static Pointer          m_Singleton;
64       std::set< std::string > m_PluginsPaths;
65       TFilters                m_Filters;
66     };
67
68   } // ecapseman
69
70 } // ecapseman
71
72 #endif // __cpPlugins__Interface__Plugins__h__
73
74 // eof - $RCSfile$