#include <cpPlugins/Config.h>
#include <cpPlugins/BaseObjects/ProcessObject.h>
#include <itkObject.h>
+#include <map>
+#include <set>
+#include <string>
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& new_environment );
- void LoadEnvironments( );
- void SaveEnvironments( const std::string& dir ) const;
- void OpenEnvironments( const std::string& dir );
+ 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
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