#ifndef __cpPlugins__Interface__Plugins__h__ #define __cpPlugins__Interface__Plugins__h__ #include #include #include #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 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 ); public: static Pointer New( ); virtual itk::LightObject::Pointer CreateAnother( ) const cpPlugins_OVERRIDE; Pointer Clone( ) const; const TFilters& GetFilters( ) const; 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 ); 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; void _ReadPluginsPathsVariable( ); private: // Purposely not implemented Plugins( const Self& other ); Self& operator=( const Self& other ); protected: static Pointer m_Singleton; std::set< std::string > m_PluginsPaths; TFilters m_Filters; }; } // ecapseman } // ecapseman #endif // __cpPlugins__Interface__Plugins__h__ // eof - $RCSfile$