1 #ifndef FWCore_PluginManager_PluginFactoryBase_h
2 #define FWCore_PluginManager_PluginFactoryBase_h
27 #include "tbb/concurrent_unordered_map.h"
28 #include "tbb/concurrent_vector.h"
47 m_ptr.store(iPtr,std::memory_order_release);}
52 m_ptr.store(iOther.
m_ptr.load(std::memory_order_acquire),
53 std::memory_order_release);
58 m_ptr.store(iOther.
m_ptr.load(std::memory_order_acquire),std::memory_order_release);
67 typedef tbb::concurrent_vector<PluginMakerInfo>
PMakers;
68 typedef tbb::concurrent_unordered_map<std::string, PMakers >
Plugins;
73 virtual std::vector<PluginInfo>
available()
const;
104 std::vector<PluginInfo>& iReturn )
const;
tbb::concurrent_unordered_map< std::string, PMakers > Plugins
void registerPMaker(void *iPMaker, const std::string &iName)
virtual ~PluginFactoryBase()
PluginMakerInfo(void *iPtr, const std::string &iName)
const PluginFactoryBase & operator=(const PluginFactoryBase &)
void fillAvailable(std::vector< PluginInfo > &iReturn) const
PluginMakerInfo & operator=(const PluginMakerInfo &iOther)
PluginMakerInfo(const PluginMakerInfo &iOther)
edm::signalslot::Signal< void(const std::string &, const PluginInfo &)> newPluginAdded_
signal containing plugin category, and plugin info for newly added plugin
void checkProperLoadable(const std::string &iName, const std::string &iLoadedFrom) const
void finishedConstruction()
tbb::concurrent_vector< PluginMakerInfo > PMakers
void fillInfo(const PMakers &makers, PluginInfo &iInfo, std::vector< PluginInfo > &iReturn) const
virtual const std::string & category() const =0
returns the name of the category to which this plugin factory belongs
void * findPMaker(const std::string &iName) const
virtual std::vector< PluginInfo > available() const
return info about all plugins which are already available in the program
std::atomic< void * > m_ptr
void * tryToFindPMaker(const std::string &iName) const
void newPlugin(const std::string &iName)