]> git.tdb.fi Git - builder.git/commitdiff
Collapse the component loading functions in SourcePackage::Loader
authorMikko Rasa <tdb@tdb.fi>
Wed, 28 Dec 2022 11:42:34 +0000 (13:42 +0200)
committerMikko Rasa <tdb@tdb.fi>
Wed, 28 Dec 2022 14:11:05 +0000 (16:11 +0200)
source/lib/sourcepackage.cpp
source/lib/sourcepackage.h

index 3648df727f3f109b01c248a456679a21136fc029..09135921f51a99498974545e8c7c5e8e24d70718 100644 (file)
@@ -179,9 +179,9 @@ SourcePackage::Loader::Loader(SourcePackage &p, const Config::InputOptions *o):
        add("generate",    &Loader::generate);
        add("install",     &Loader::component<InstallComponent>);
        add("interface_version", &Loader::interface_version);
-       add("library",     &Loader::component_arg<BinaryComponent, BinaryComponent::Type>, BinaryComponent::LIBRARY);
-       add("module",      &Loader::component_arg<BinaryComponent, BinaryComponent::Type>, BinaryComponent::MODULE);
-       add("program",     &Loader::component_arg<BinaryComponent, BinaryComponent::Type>, BinaryComponent::PROGRAM);
+       add("library",     &Loader::component<BinaryComponent, BinaryComponent::Type>, BinaryComponent::LIBRARY);
+       add("module",      &Loader::component<BinaryComponent, BinaryComponent::Type>, BinaryComponent::MODULE);
+       add("program",     &Loader::component<BinaryComponent, BinaryComponent::Type>, BinaryComponent::PROGRAM);
        add("source_archive", &Loader::source_archive);
        add("source_tarball", &Loader::source_archive);
        add("tarball",     &Loader::tarball);
@@ -216,18 +216,10 @@ void SourcePackage::Loader::feature(const string &n, const string &d)
        }
 }
 
-template<typename C>
-void SourcePackage::Loader::component(const string &n)
+template<typename C, typename... Args>
+void SourcePackage::Loader::component(Args... args, const string &n)
 {
-       C *comp = new C(obj, n);
-       load_sub(*comp);
-       obj.components.push_back(comp);
-}
-
-template<typename C, typename A>
-void SourcePackage::Loader::component_arg(A a, const string &n)
-{
-       C *comp = new C(obj, n, a);
+       C *comp = new C(obj, n, args...);
        load_sub(*comp);
        obj.components.push_back(comp);
 }
index 8be8ada63d654f68a963feb55cdec9f8c7544d77..d37ecf4a8a7e356d3d1b45f4566df605c8b77093 100644 (file)
@@ -34,10 +34,8 @@ public:
                void finish() override;
 
                void feature(const std::string &, const std::string &);
-               template<typename C>
-               void component(const std::string &);
-               template<typename C, typename A>
-               void component_arg(A, const std::string &);
+               template<typename C, typename... Args>
+               void component(Args..., const std::string &);
                void build_info();
                void generate(const std::string &);
                void interface_version(const std::string &);