#ifndef __cpPlugins__Interface__Plugins__h__ #define __cpPlugins__Interface__Plugins__h__ #include #include #include namespace cpPlugins { namespace Interface { /** */ class cpPlugins_EXPORT Plugins : public itk::Object { public: typedef Plugins Self; typedef itk::Object Superclass; 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; 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 ); void LoadFile( const std::string& fname ); void LoadPlugin( const std::string& pname ); void LoadDirectory( const std::string& dirname ); void GuessPlugins( ); TProcess::Pointer CreateProcessObject( const std::string& category, const std::string& name ); protected: Plugins( ); virtual ~Plugins( ); virtual void PrintSelf( std::ostream& os, itk::Indent indent ) const cpPlugins_OVERRIDE; private: // Purposely not implemented Plugins( const Self& other ); Self& operator=( const Self& other ); protected: TStrings m_Paths; TLibraries m_Libraries; TLibraries m_Plugins; TFilters m_Filters; }; } // ecapseman } // ecapseman #endif // __cpPlugins__Interface__Plugins__h__ // eof - $RCSfile$