#include <cpPlugins/Config.h>
#include <cpPlugins/ProcessObject.h>
#include <map>
+#include <set>
#include <string>
namespace cpPlugins
class cpPlugins_EXPORT Interface
{
public:
- typedef std::map< std::string, std::string > TStringRow;
- typedef std::map< std::string, TStringRow > TFilters;
+ typedef Interface Self;
+
+ typedef cpPlugins::ProcessObject::Pointer ( *TCreator )( );
+ typedef std::pair< std::string, TCreator > TDynFunc;
+ typedef std::map< std::string, TDynFunc > TDynFilter;
+ typedef std::map< std::string, TDynFilter > TDynFilters;
+ typedef std::map< std::string, void* > TDynLibraries;
+ typedef std::map< std::string, std::set< std::string > > TFilters;
public:
Interface( );
);
protected:
- std::map< std::string, void* > m_Plugins;
- TFilters m_Filters;
+ static void* _DLOpen( const std::string& fname );
+ static TFilters _DLGetFilters( void* hnd );
+ static TCreator _DLGetCreator(
+ void* hnd, const std::string& category, const std::string& name
+ );
+ static void _DLClose( void* hnd );
+
+ protected:
+ TDynLibraries m_DynLibraries;
+ TDynFilters m_DynFilters;
+ TFilters m_Filters;
};
} // ecapseman