76 PluginFactoryBase::Plugins::const_iterator
80 Plugins::const_iterator itFound =
m_plugins.find(iName);
85 throw cms::Exception(
"PluginCacheError")<<
"The plugin '"<<iName<<
"' should have been in loadable\n '"
86 <<lib<<
"'\n but was not there. This means the plugin cache is incorrect. Please run 'EdmPluginRefresh "<<lib<<
"'";
95 PluginFactoryBase::Plugins::const_iterator
99 Plugins::const_iterator itFound =
m_plugins.find(iName);
103 std::string lib = slib->
path().native_file_string();
106 throw cms::Exception(
"PluginCacheError")<<
"The plugin '"<<iName<<
"' should have been in loadable\n '"
107 <<lib<<
"'\n but was not there. This means the plugin cache is incorrect. Please run 'EdmPluginRefresh "<<lib<<
"'";
119 std::vector<PluginInfo>& iReturn )
const {
120 for(PMakers::const_iterator it = makers.begin();
124 iReturn.push_back(iInfo);
131 for( Plugins::const_iterator it =
m_plugins.begin();
134 info.
name_ = it->first;
148 throw cms::Exception(
"WrongPluginLoaded")<<
"The plugin '"<<iName<<
"' should have been loaded from\n '"
150 <<
"'\n but instead it was already loaded from\n '"
151 <<iLoadedFrom<<
"'\n because some other plugin was loaded from the latter loadables.\n"
152 "To work around the problem the plugin '"<<iName<<
"' should only be defined in one of these loadables.";
164 std::vector<PluginInfo>
166 std::vector<PluginInfo> returnValue;
const boost::filesystem::path & loadableFor(const std::string &iCategory, const std::string &iPlugin)
const SharedLibrary * tryToLoad(const std::string &iCategory, const std::string &iPlugin)
void registerPMaker(void *iPMaker, const std::string &iName)
static const std::string & staticallyLinkedLoadingFileName()
if the value returned from loadingFile matches this string then the file is statically linked ...
static bool isAvailable()
virtual ~PluginFactoryBase()
std::vector< std::pair< void *, std::string > > PMakers
void fillAvailable(std::vector< PluginInfo > &iReturn) const
void checkProperLoadable(const std::string &iName, const std::string &iLoadedFrom) const
static const std::string & loadingFile()
file name of the shared object being loaded
void finishedConstruction()
sigc::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
void addFactory(const PluginFactoryBase *)
virtual const std::string & category() const =0
returns the name of the category to which this plugin factory belongs
Plugins::const_iterator tryToFindPMaker(const std::string &iName) const
virtual std::vector< PluginInfo > available() const
return info about all plugins which are already available in the program
boost::filesystem::path loadable_
Plugins::const_iterator findPMaker(const std::string &iName) const
const SharedLibrary & load(const std::string &iCategory, const std::string &iPlugin)
const boost::filesystem::path & path() const
static PluginManager * get()
static PluginFactoryManager * get()
void newPlugin(const std::string &iName)