1 #ifndef FWCore_PluginManager_PluginFactoryBase_h
2 #define FWCore_PluginManager_PluginFactoryBase_h
27 #include "oneapi/tbb/concurrent_unordered_map.h"
28 #include "oneapi/tbb/concurrent_vector.h"
46 m_ptr.store(iPtr, std::memory_order_release);
50 m_ptr.store(iOther.
m_ptr.load(std::memory_order_acquire), std::memory_order_release);
55 m_ptr.store(iOther.
m_ptr.load(std::memory_order_acquire), std::memory_order_release);
64 typedef oneapi::tbb::concurrent_vector<PluginMakerInfo, edm::zero_allocator<PluginMakerInfo>>
PMakers;
65 typedef oneapi::tbb::concurrent_unordered_map<std::string, PMakers>
Plugins;
70 virtual std::vector<PluginInfo>
available()
const;
oneapi::tbb::concurrent_unordered_map< std::string, PMakers > Plugins
const PluginFactoryBase & operator=(const PluginFactoryBase &)=delete
void registerPMaker(void *iPMaker, const std::string &iName)
virtual ~PluginFactoryBase()
PluginMakerInfo(void *iPtr, const std::string &iName)
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()
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
oneapi::tbb::concurrent_vector< PluginMakerInfo, edm::zero_allocator< PluginMakerInfo > > PMakers
void newPlugin(const std::string &iName)