X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flib%2Fbuilder.h;h=8ab0f941f8c482774d38d1f8aecd4b86b1234d43;hb=ba5078a4334ef419aeb1949190a743a05037750c;hp=d9a942b4f65000d4b4eec7071a95e6658271f792;hpb=a8dd31308dfef6da930c261779d4e9ebfc2af838;p=builder.git diff --git a/source/lib/builder.h b/source/lib/builder.h index d9a942b..8ab0f94 100644 --- a/source/lib/builder.h +++ b/source/lib/builder.h @@ -83,6 +83,14 @@ public: ~Builder(); void load_plugins(); + + template + void load_plugins(); + +private: + void add_plugins(std::vector &); + +public: PackageManager &get_package_manager() { return package_manager; } SourcePackage::ComponentRegistry &get_component_registry() { return component_registry; } @@ -134,6 +142,20 @@ public: int do_create_makefile(); }; +template +void Builder::load_plugins() +{ + Plugin *raw_plugins[] = { new T(*this)... }; + std::vector pending_plugins; + for(Plugin *p: raw_plugins) + { + LoadedPlugin plugin; + plugin.plugin = p; + pending_plugins.emplace_back(std::move(plugin)); + } + add_plugins(pending_plugins); +} + template void Builder::call_plugins(F func) const {