#ifndef __CPPLUGINS__INTERFACE__INTERFACE__H__ #define __CPPLUGINS__INTERFACE__INTERFACE__H__ #include #include #include #include #include #include namespace cpPlugins { namespace Interface { /** */ class cpPlugins_Interface_EXPORT Interface { public: typedef std::vector< ObjectProvider* > TProviders; typedef std::map< std::string, unsigned int > TClasses; typedef TProviders::const_iterator TProvidersIterator; typedef TClasses::const_iterator TClassesIterator; public: Interface( ); virtual ~Interface( ); /// Plugin access TClasses& GetClasses( ); const TClasses& GetClasses( ) const; Object* CreateObject( const std::string& name ) const; /// Interface to PLUMA bool Load( const std::string& path ); bool Load( const std::string& folder, const std::string& name ); int LoadFromFolder( const std::string& folder, bool r = false ); bool Unload( const std::string& name ); void UnloadAll( ); void GetLoadedPlugins( std::vector< const std::string* >& names ) const; bool IsLoaded( const std::string& name ) const; protected: void _LoadClasses( ); protected: pluma::Pluma m_Pluma; TProviders m_Providers; TClasses m_Classes; }; } // ecapseman } // ecapseman #endif // __CPPLUGINS__INTERFACE__INTERFACE__H__ // eof - $RCSfile$