60 if (not iLoadable.
symbol(
"SEAL_CAPABILITIES", sym)) {
67 reinterpret_cast<void (*)(
const char**&,
int&)
>(
reinterpret_cast<unsigned long>(sym))(
names, size);
70 for (
int i = 0;
i < size; ++
i) {
89 <<
"The dictionary for class '" << iName <<
"' is supposed to be in file\n '" <<
lib.path().string()
90 <<
"'\n but no dictionaries are in that file.\n" 91 "It appears like the cache is wrong. Please do 'EdmPluginRefresh " 92 <<
lib.path().string() <<
"'.";
97 <<
"The dictionary for class '" << iName <<
"' is supposed to be in file\n '" <<
lib.path().string()
98 <<
"'\n but was not found.\n" 99 "It appears like the cache is wrong. Please do 'EdmPluginRefresh " 100 <<
lib.path().string() <<
"'.";
108 if (
nullptr ==
lib) {
114 <<
"The dictionary for class '" << iName <<
"' is supposed to be in file\n '" <<
lib->path().string()
115 <<
"'\n but no dictionaries are in that file.\n" 116 "It appears like the cache is wrong. Please do 'EdmPluginRefresh " 117 <<
lib->path().string() <<
"'.";
122 <<
"The dictionary for class '" << iName <<
"' is supposed to be in file\n '" <<
lib->path().string()
123 <<
"'\n but was not found.\n" 124 "It appears like the cache is wrong. Please do 'EdmPluginRefresh " 125 <<
lib->path().string() <<
"'.";
135 std::vector<PluginInfo>
infos;
138 for (std::map<std::string, std::filesystem::path>::const_iterator it =
classToLoadable_.begin();
141 info.name_ = it->first;
142 info.loadable_ = it->second;
const SharedLibrary * tryToLoad(const std::string &iCategory, const std::string &iPlugin)
bool tryToFind(const SharedLibrary &iLoadable)
Check to see if any capabilities are in the file, returns 'true' if found.
const std::string names[nVars_]
std::map< std::string, std::filesystem::path > classToLoadable_
edm::signalslot::Signal< void(const std::string &, const PluginInfo &)> newPluginAdded_
signal containing plugin category, and plugin info for newly added plugin
void finishedConstruction()
static PluginCapabilities * get()
const std::string & category() const override
returns the name of the category to which this plugin factory belongs
bool tryToLoad(const std::string &iName)
bool symbol(const std::string &iSymbolName, void *&iSymbol) const
const std::filesystem::path & path() const
std::vector< PluginInfo > available() const override
return info about all plugins which are already available in the program
void load(const std::string &iName)
const SharedLibrary & load(const std::string &iCategory, const std::string &iPlugin)
static PluginManager * get()
~PluginCapabilities() override