Go to the documentation of this file. 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"
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 tbb::concurrent_vector<PluginMakerInfo, tbb::zero_allocator<PluginMakerInfo>>
PMakers;
65 typedef tbb::concurrent_unordered_map<std::string, PMakers>
Plugins;
70 virtual std::vector<PluginInfo>
available()
const;
virtual const std::string & category() const =0
returns the name of the category to which this plugin factory belongs
const PluginFactoryBase & operator=(const PluginFactoryBase &)=delete
PluginMakerInfo(const PluginMakerInfo &iOther)
virtual ~PluginFactoryBase()
tbb::concurrent_vector< PluginMakerInfo, tbb::zero_allocator< PluginMakerInfo > > PMakers
virtual std::vector< PluginInfo > available() const
return info about all plugins which are already available in the program
PluginMakerInfo(void *iPtr, const std::string &iName)
void checkProperLoadable(const std::string &iName, const std::string &iLoadedFrom) const
void * findPMaker(const std::string &iName) const
edm::signalslot::Signal< void(const std::string &, const PluginInfo &)> newPluginAdded_
signal containing plugin category, and plugin info for newly added plugin
void fillInfo(const PMakers &makers, PluginInfo &iInfo, std::vector< PluginInfo > &iReturn) const
std::atomic< void * > m_ptr
void fillAvailable(std::vector< PluginInfo > &iReturn) const
PluginMakerInfo & operator=(const PluginMakerInfo &iOther)
tbb::concurrent_unordered_map< std::string, PMakers > Plugins
void finishedConstruction()
TEMPL(T2) struct Divides void
void newPlugin(const std::string &iName)
void registerPMaker(void *iPMaker, const std::string &iName)
void * tryToFindPMaker(const std::string &iName) const