X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FManager.h;fp=lib%2FcpPlugins%2FManager.h;h=b8d9f9151f0d88a4a1fbfcf89a628b115ccb140e;hb=2e142df11d6f312a2a2b5097b8da73571ed523e8;hp=0000000000000000000000000000000000000000;hpb=61b3659afe961ed248f30e26f9ca8f28fcfafddc;p=cpPlugins.git diff --git a/lib/cpPlugins/Manager.h b/lib/cpPlugins/Manager.h new file mode 100644 index 0000000..b8d9f91 --- /dev/null +++ b/lib/cpPlugins/Manager.h @@ -0,0 +1,50 @@ +// ========================================================================= +// @author Leonardo Florez-Valencia (florez-l@javeriana.edu.co) +// ========================================================================= +#ifndef __cpPlugins__Manager__h__ +#define __cpPlugins__Manager__h__ + +#include +#include + +namespace cpPlugins +{ + /** + */ + class CPPLUGINS_EXPORT Manager + { + friend std::ostream& operator<<( std::ostream& out, const Manager& m ) + { + m.Print( out ); + return( out ); + } + + public: + typedef Manager Self; + + typedef std::map< std::string, Library > TLibraries; + typedef std::map< std::string, std::string > TPlugins; + + public: + Manager( ); + virtual ~Manager( ); + void Print( std::ostream& out ) const; + + const TPlugins& GetPlugins( ) const; + + void Configure( ); + void AddPath( const std::string& p ); + void AddFile( const std::string& f ); + + std::shared_ptr< ProcessObject > Create( const std::string& name ); + + protected: + static bool m_Configured; + static TLibraries m_Libraries; + static TPlugins m_Plugins; + }; // end class +} // end namespace + +#endif // __cpPlugins__Manager__h__ + +// eof - $RCSfile$