ultimatepp/bazaar/Functions4U/StaticPlugin.cpp
koldo a17751b66a Functions4U: Fixes from warnings
git-svn-id: svn://ultimatepp.org/upp/trunk@15716 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2021-02-01 09:57:57 +00:00

61 lines
1.3 KiB
C++

#include <Core/Core.h>
#include "StaticPlugin.h"
namespace Upp {
Array<StaticPlugin::PluginData>& StaticPlugin::Plugins() {
static Array<PluginData> x;
return x;
}
StaticPlugin::~StaticPlugin() {
End();
}
void StaticPlugin::End() {
if (!data)
return;
for (int i = 0; i < Plugins().GetCount(); ++i) {
if (Plugins()[i].name == name && Plugins()[i].type == type && Plugins()[i].instance == instance) {
Plugins()[i].Delete(data);
data = 0;
return;
}
}
for (int i = 0; i < Plugins().GetCount(); ++i) {
if (Plugins()[i].name == "" && Plugins()[i].type == type && Plugins()[i].instance == instance) {
Plugins()[i].Delete(data);
data = 0;
return;
}
}
}
bool StaticPlugin::_Init(const char *_name, const char *_type) {
type = _type;
End();
for (int i = 0; i < Plugins().GetCount(); ++i) {
if (Plugins()[i].name == _name && Plugins()[i].type == type) {
data = Plugins()[i].New();
name = _name;
instance = this;
Plugins()[i].instance = instance;
return true;
}
}
for (int i = 0; i < Plugins().GetCount(); ++i) {
if (Plugins()[i].name == "" && Plugins()[i].type == type) {
if (data)
Plugins()[i].Delete(data);
data = Plugins()[i].New();
name = "";
instance = this;
Plugins()[i].instance = instance;
return false;
}
}
return false;
}
}