slight rework of RegisterPlugin (leave a pointer to the plugin info instead of a useless bool)
parent
5f1b9d03b4
commit
5385740516
4
notes
4
notes
|
@ -35,8 +35,8 @@ TODO {
|
|||
about-license info
|
||||
}
|
||||
|
||||
rework RegisterPlugin slightly to automatically give a file-scope access to the PluginInfo
|
||||
^ use in graph
|
||||
- rework RegisterPlugin slightly to automatically give a file-scope access to the PluginInfo
|
||||
- ^ use in graph
|
||||
|
||||
- pool I guess
|
||||
|
||||
|
|
|
@ -31,11 +31,11 @@ namespace { // clazy:excludeall=non-pod-global-static
|
|||
};
|
||||
}
|
||||
|
||||
bool PluginRegistry::enqueueRegistration(std::function<void ()> f) {
|
||||
std::shared_ptr<PluginInfo> PluginRegistry::enqueueRegistration(std::function<void ()> f) {
|
||||
auto& queue = regQueue();
|
||||
queue.push_back(f);
|
||||
if (initialized()) f();
|
||||
return true;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void PluginRegistry::init() {
|
||||
|
|
|
@ -29,7 +29,7 @@ namespace Xybrid::Config {
|
|||
};
|
||||
|
||||
namespace PluginRegistry {
|
||||
bool enqueueRegistration(std::function<void()>);
|
||||
std::shared_ptr<PluginInfo> enqueueRegistration(std::function<void()>);
|
||||
void registerPlugin(std::shared_ptr<PluginInfo>);
|
||||
void init();
|
||||
|
||||
|
@ -39,7 +39,7 @@ namespace Xybrid::Config {
|
|||
}
|
||||
|
||||
#define RegisterPlugin(NAME, ...) \
|
||||
namespace { bool _x___reg_##NAME = Xybrid::Config::PluginRegistry::enqueueRegistration([] { \
|
||||
namespace { std::shared_ptr<Xybrid::Config::PluginInfo> _regInfo_##NAME = Xybrid::Config::PluginRegistry::enqueueRegistration([] { \
|
||||
auto i = std::make_shared<Xybrid::Config::PluginInfo>();\
|
||||
i->createInstance = []{ return std::make_shared<NAME>(); };\
|
||||
__VA_ARGS__ \
|
||||
|
|
|
@ -15,20 +15,16 @@ using namespace Xybrid::Config;
|
|||
#include <QMetaType>
|
||||
#include <QMetaEnum>
|
||||
|
||||
namespace { // clazy:excludeall=non-pod-global-static
|
||||
std::shared_ptr<PluginInfo> inf;
|
||||
}
|
||||
|
||||
// clazy:excludeall=non-pod-global-static
|
||||
RegisterPlugin(Graph, {
|
||||
i->id = "graph";
|
||||
i->displayName = "Subgraph";
|
||||
inf = i;
|
||||
})
|
||||
|
||||
//std::string Graph::pluginName() const { return "Subgraph"; }
|
||||
|
||||
Graph::Graph() {
|
||||
plugin = inf; // harder bind
|
||||
plugin = _regInfo_Graph;//inf; // harder bind
|
||||
}
|
||||
|
||||
// propagate
|
||||
|
@ -119,7 +115,7 @@ void Graph::onParent(std::shared_ptr<Graph>) {
|
|||
for (auto c : children) {
|
||||
c->project = project;
|
||||
// let this handle the recursion for us, since this is all this function does
|
||||
if (c->plugin == inf) c->onParent(c->parent.lock());
|
||||
if (c->plugin == _regInfo_Graph) c->onParent(c->parent.lock());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue