]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/Interface/Plugins.h
Cast image filter added. ROI filter modified.
[cpPlugins.git] / lib / cpPlugins / Interface / Plugins.h
index 6ce634424f25231679ab3885f7e1db244b9de91a..3bffe02cf3592e5a230621b111090390d7c8397a 100644 (file)
@@ -4,6 +4,9 @@
 #include <cpPlugins/Config.h>
 #include <cpPlugins/BaseObjects/ProcessObject.h>
 #include <itkObject.h>
+#include <map>
+#include <set>
+#include <string>
 
 namespace cpPlugins
 {
@@ -20,54 +23,36 @@ namespace cpPlugins
       typedef itk::SmartPointer< Self >       Pointer;
       typedef itk::SmartPointer< const Self > ConstPointer;
 
-      typedef void* ( *TCreator )( );
-      typedef std::map< std::string, void* > TLibraries;
-      struct TCreatorData
-      {
-        std::string PluginName;
-        void*       LibraryHandle;
-        TCreator    Creator;
-      };
-      typedef std::map< std::string, TCreatorData > TFilterData;
-      typedef std::map< std::string, TFilterData >  TFilters;
-      typedef std::set< std::string >               TStrings;
-
-      typedef cpPlugins::BaseObjects::ProcessObject TProcess;
+      typedef std::pair< void*, void* >           THandlers;
+      typedef std::pair< std::string, THandlers > TLibData;
+      typedef std::map< std::string, TLibData >   TLibraries;
+      typedef std::map< std::string, TLibraries > TFilters;
 
     public:
       itkTypeMacro( Plugins, itk::Object );
-      itkGetConstMacro( Paths, TStrings );
 
     public:
       static Pointer New( );
       virtual itk::LightObject::Pointer CreateAnother( ) const cpPlugins_OVERRIDE;
       Pointer Clone( ) const;
 
-      TStrings GetLibraries( ) const;
-      TStrings GetPlugins( ) const;
-      TStrings GetCategories( ) const;
-      TStrings GetFilters( const std::string& category ) const;
-
-      void AddEnvironments( const std::string& env );
-      void LoadEnvironments( );
-      void LoadPaths( const std::string& dir );
-      void SavePaths( const std::string& dir ) const;
+      const TFilters& GetFilters( ) const;
 
-      void LoadFile( const std::string& fname );
-      void LoadPlugin( const std::string& pname );
-      void LoadDirectory( const std::string& dirname );
+      void LoadPluginsFile( const std::string& libname );
+      void LoadPluginsDirectory( const std::string& dir );
       void GuessPlugins( );
+      void GuessEnvironment( const std::string& dir );
+      bool SaveEnvironment( const std::string& dir );
 
-      TProcess::Pointer CreateProcessObject(
-        const std::string& category, const std::string& name
-        );
+      cpPlugins::BaseObjects::ProcessObject::Pointer
+      CreateFilter( const std::string& category, const std::string& name );
 
     protected:
       Plugins( );
       virtual ~Plugins( );
-      virtual void PrintSelf(
-        std::ostream& os, itk::Indent indent
-        ) const cpPlugins_OVERRIDE;
+      virtual void PrintSelf( std::ostream& os, itk::Indent indent ) const cpPlugins_OVERRIDE;
+
+      void _ReadPluginsPathsVariable( );
 
     private:
       // Purposely not implemented
@@ -75,10 +60,9 @@ namespace cpPlugins
       Self& operator=( const Self& other );
 
     protected:
-      TStrings   m_Paths;
-      TLibraries m_Libraries;
-      TLibraries m_Plugins;
-      TFilters   m_Filters;
+      static Pointer          m_Singleton;
+      std::set< std::string > m_PluginsPaths;
+      TFilters                m_Filters;
     };
 
   } // ecapseman