Remove CPluginManager direct use of CPlugin::m_Libraries.
This commit is contained in:
parent
bda9defc0f
commit
46c069dbbe
@ -1052,7 +1052,7 @@ bool CPluginManager::FindOrRequirePluginDeps(CPlugin *pPlugin, char *error, size
|
||||
CPlugin *found;
|
||||
for (auto iter=m_plugins.begin(); iter!=m_plugins.end(); iter++) {
|
||||
CPlugin *pl = (*iter);
|
||||
if (pl->m_Libraries.find(name) != pl->m_Libraries.end()) {
|
||||
if (pl->HasLibrary(name)) {
|
||||
found = pl;
|
||||
break;
|
||||
}
|
||||
@ -1107,6 +1107,12 @@ bool CPlugin::ForEachExtVar(const ExtVarCallback& callback)
|
||||
return true;
|
||||
}
|
||||
|
||||
void CPlugin::ForEachLibrary(ke::Lambda<void(const char *)> callback)
|
||||
{
|
||||
for (auto iter = m_Libraries.begin(); iter != m_Libraries.end(); iter++)
|
||||
callback((*iter).c_str());
|
||||
}
|
||||
|
||||
void CPluginManager::LoadExtensions(CPlugin *pPlugin)
|
||||
{
|
||||
auto callback = [pPlugin] (const sp_pubvar_t *pubvar, const CPlugin::ExtVar& ext) -> bool
|
||||
@ -1281,13 +1287,9 @@ bool CPluginManager::RunSecondPass(CPlugin *pPlugin, char *error, size_t maxleng
|
||||
}
|
||||
|
||||
/* Go through our libraries and tell other plugins they're added */
|
||||
List<String>::iterator s_iter;
|
||||
for (s_iter = pPlugin->m_Libraries.begin();
|
||||
s_iter != pPlugin->m_Libraries.end();
|
||||
s_iter++)
|
||||
{
|
||||
OnLibraryAction((*s_iter).c_str(), LibraryAction_Added);
|
||||
}
|
||||
pPlugin->ForEachLibrary([this] (const char *lib) -> void {
|
||||
OnLibraryAction(lib, LibraryAction_Added);
|
||||
});
|
||||
|
||||
/* :TODO: optimize? does this even matter? */
|
||||
pPlugin->GetPhrases()->AddPhraseFile("core.phrases");
|
||||
@ -1300,10 +1302,9 @@ bool CPluginManager::RunSecondPass(CPlugin *pPlugin, char *error, size_t maxleng
|
||||
if (pl == pPlugin || pl->GetStatus() != Plugin_Running)
|
||||
continue;
|
||||
|
||||
for (s_iter=pl->m_Libraries.begin(); s_iter!=pl->m_Libraries.end(); s_iter++)
|
||||
{
|
||||
pPlugin->Call_OnLibraryAdded((*s_iter).c_str());
|
||||
}
|
||||
pl->ForEachLibrary([pPlugin] (const char *lib) -> void {
|
||||
pPlugin->Call_OnLibraryAdded(lib);
|
||||
});
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -1319,7 +1320,7 @@ void CPluginManager::TryRefreshDependencies(CPlugin *pPlugin)
|
||||
CPlugin *found = nullptr;
|
||||
for (auto pl_iter=m_plugins.begin(); pl_iter!=m_plugins.end(); pl_iter++) {
|
||||
CPlugin *search = (*pl_iter);
|
||||
if (search->m_Libraries.find(*req_iter) != search->m_Libraries.end()) {
|
||||
if (search->HasLibrary((*req_iter).c_str())) {
|
||||
found = search;
|
||||
break;
|
||||
}
|
||||
@ -1399,13 +1400,9 @@ void CPluginManager::UnloadPluginImpl(CPlugin *pPlugin)
|
||||
m_LoadLookup.remove(pPlugin->m_filename);
|
||||
|
||||
/* Go through our libraries and tell other plugins they're gone */
|
||||
List<String>::iterator s_iter;
|
||||
for (s_iter = pPlugin->m_Libraries.begin();
|
||||
s_iter != pPlugin->m_Libraries.end();
|
||||
s_iter++)
|
||||
{
|
||||
OnLibraryAction((*s_iter).c_str(), LibraryAction_Removed);
|
||||
}
|
||||
pPlugin->ForEachLibrary([this] (const char *lib) -> void {
|
||||
OnLibraryAction(lib, LibraryAction_Removed);
|
||||
});
|
||||
|
||||
List<IPluginsListener *>::iterator iter;
|
||||
IPluginsListener *pListener;
|
||||
@ -2374,16 +2371,8 @@ bool CPluginManager::LibraryExists(const char *lib)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
List<String>::iterator s_iter;
|
||||
for (s_iter = pl->m_Libraries.begin();
|
||||
s_iter != pl->m_Libraries.end();
|
||||
s_iter++)
|
||||
{
|
||||
if ((*s_iter).compare(lib) == 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
if (pl->HasLibrary(lib))
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
@ -129,7 +129,6 @@ class CPlugin :
|
||||
public CNativeOwner
|
||||
{
|
||||
friend class CPluginManager;
|
||||
friend class CFunction;
|
||||
public:
|
||||
CPlugin(const char *file);
|
||||
~CPlugin();
|
||||
@ -164,6 +163,8 @@ public:
|
||||
|
||||
typedef ke::Lambda<bool(const sp_pubvar_t *, const ExtVar& ext)> ExtVarCallback;
|
||||
bool ForEachExtVar(const ExtVarCallback& callback);
|
||||
|
||||
void ForEachLibrary(ke::Lambda<void(const char *)> callback);
|
||||
public:
|
||||
/**
|
||||
* Creates a plugin object with default values.
|
||||
@ -248,6 +249,9 @@ public:
|
||||
inline void AddLibrary(const char *name) {
|
||||
m_Libraries.push_back(name);
|
||||
}
|
||||
inline bool HasLibrary(const char *name) {
|
||||
return m_Libraries.find(name) != m_Libraries.end();
|
||||
}
|
||||
void LibraryActions(LibraryAction action);
|
||||
void SyncMaxClients(int max_clients);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user